From 5537d298eabce9219cb33e6c5725c38a61714eff Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 5 Mar 2011 15:10:38 +0100 Subject: Add updated .hgeol file and fix newlines in the 3.1 branch. --- .hgeol | 27 +- Demo/turtle/tdemo_nim.py | 454 +- Demo/turtle/tdemo_round_dance.py | 180 +- Doc/make.bat | 118 +- Lib/test/decimaltestdata/and.decTest | 676 +- Lib/test/decimaltestdata/class.decTest | 262 +- Lib/test/decimaltestdata/comparetotal.decTest | 1596 ++--- Lib/test/decimaltestdata/comparetotmag.decTest | 1580 ++--- Lib/test/decimaltestdata/copy.decTest | 172 +- Lib/test/decimaltestdata/copyabs.decTest | 172 +- Lib/test/decimaltestdata/copynegate.decTest | 172 +- Lib/test/decimaltestdata/copysign.decTest | 354 +- Lib/test/decimaltestdata/ddAbs.decTest | 252 +- Lib/test/decimaltestdata/ddAdd.decTest | 2656 ++++---- Lib/test/decimaltestdata/ddAnd.decTest | 694 +- Lib/test/decimaltestdata/ddBase.decTest | 2208 +++---- Lib/test/decimaltestdata/ddCanonical.decTest | 714 +- Lib/test/decimaltestdata/ddClass.decTest | 152 +- Lib/test/decimaltestdata/ddCompare.decTest | 1488 ++--- Lib/test/decimaltestdata/ddCompareSig.decTest | 1294 ++-- Lib/test/decimaltestdata/ddCompareTotal.decTest | 1412 ++-- Lib/test/decimaltestdata/ddCompareTotalMag.decTest | 1412 ++-- Lib/test/decimaltestdata/ddCopy.decTest | 176 +- Lib/test/decimaltestdata/ddCopyAbs.decTest | 176 +- Lib/test/decimaltestdata/ddCopyNegate.decTest | 176 +- Lib/test/decimaltestdata/ddCopySign.decTest | 350 +- Lib/test/decimaltestdata/ddDivide.decTest | 1726 ++--- Lib/test/decimaltestdata/ddDivideInt.decTest | 898 +-- Lib/test/decimaltestdata/ddEncode.decTest | 990 +-- Lib/test/decimaltestdata/ddFMA.decTest | 3396 +++++----- Lib/test/decimaltestdata/ddInvert.decTest | 404 +- Lib/test/decimaltestdata/ddLogB.decTest | 318 +- Lib/test/decimaltestdata/ddMax.decTest | 644 +- Lib/test/decimaltestdata/ddMaxMag.decTest | 608 +- Lib/test/decimaltestdata/ddMin.decTest | 618 +- Lib/test/decimaltestdata/ddMinMag.decTest | 586 +- Lib/test/decimaltestdata/ddMinus.decTest | 176 +- Lib/test/decimaltestdata/ddMultiply.decTest | 1106 ++-- Lib/test/decimaltestdata/ddNextMinus.decTest | 252 +- Lib/test/decimaltestdata/ddNextPlus.decTest | 248 +- Lib/test/decimaltestdata/ddNextToward.decTest | 748 +-- Lib/test/decimaltestdata/ddOr.decTest | 584 +- Lib/test/decimaltestdata/ddPlus.decTest | 176 +- Lib/test/decimaltestdata/ddQuantize.decTest | 1666 ++--- Lib/test/decimaltestdata/ddReduce.decTest | 364 +- Lib/test/decimaltestdata/ddRemainder.decTest | 1200 ++-- Lib/test/decimaltestdata/ddRemainderNear.decTest | 1258 ++-- Lib/test/decimaltestdata/ddRotate.decTest | 524 +- Lib/test/decimaltestdata/ddSameQuantum.decTest | 778 +-- Lib/test/decimaltestdata/ddScaleB.decTest | 486 +- Lib/test/decimaltestdata/ddShift.decTest | 524 +- Lib/test/decimaltestdata/ddSubtract.decTest | 1258 ++-- Lib/test/decimaltestdata/ddToIntegral.decTest | 514 +- Lib/test/decimaltestdata/ddXor.decTest | 674 +- Lib/test/decimaltestdata/dqAbs.decTest | 252 +- Lib/test/decimaltestdata/dqAdd.decTest | 2430 +++---- Lib/test/decimaltestdata/dqAnd.decTest | 840 +-- Lib/test/decimaltestdata/dqBase.decTest | 2162 +++--- Lib/test/decimaltestdata/dqCanonical.decTest | 744 +-- Lib/test/decimaltestdata/dqClass.decTest | 154 +- Lib/test/decimaltestdata/dqCompare.decTest | 1506 ++--- Lib/test/decimaltestdata/dqCompareSig.decTest | 1294 ++-- Lib/test/decimaltestdata/dqCompareTotal.decTest | 1412 ++-- Lib/test/decimaltestdata/dqCompareTotalMag.decTest | 1412 ++-- Lib/test/decimaltestdata/dqCopy.decTest | 176 +- Lib/test/decimaltestdata/dqCopyAbs.decTest | 176 +- Lib/test/decimaltestdata/dqCopyNegate.decTest | 176 +- Lib/test/decimaltestdata/dqCopySign.decTest | 350 +- Lib/test/decimaltestdata/dqDivide.decTest | 1616 ++--- Lib/test/decimaltestdata/dqDivideInt.decTest | 906 +-- Lib/test/decimaltestdata/dqEncode.decTest | 954 +-- Lib/test/decimaltestdata/dqFMA.decTest | 3572 +++++----- Lib/test/decimaltestdata/dqInvert.decTest | 490 +- Lib/test/decimaltestdata/dqLogB.decTest | 320 +- Lib/test/decimaltestdata/dqMax.decTest | 644 +- Lib/test/decimaltestdata/dqMaxMag.decTest | 608 +- Lib/test/decimaltestdata/dqMin.decTest | 618 +- Lib/test/decimaltestdata/dqMinMag.decTest | 586 +- Lib/test/decimaltestdata/dqMinus.decTest | 176 +- Lib/test/decimaltestdata/dqMultiply.decTest | 1178 ++-- Lib/test/decimaltestdata/dqNextMinus.decTest | 252 +- Lib/test/decimaltestdata/dqNextPlus.decTest | 248 +- Lib/test/decimaltestdata/dqNextToward.decTest | 750 +-- Lib/test/decimaltestdata/dqOr.decTest | 802 +-- Lib/test/decimaltestdata/dqPlus.decTest | 176 +- Lib/test/decimaltestdata/dqQuantize.decTest | 1672 ++--- Lib/test/decimaltestdata/dqReduce.decTest | 366 +- Lib/test/decimaltestdata/dqRemainder.decTest | 1194 ++-- Lib/test/decimaltestdata/dqRemainderNear.decTest | 1262 ++-- Lib/test/decimaltestdata/dqRotate.decTest | 596 +- Lib/test/decimaltestdata/dqSameQuantum.decTest | 778 +-- Lib/test/decimaltestdata/dqScaleB.decTest | 520 +- Lib/test/decimaltestdata/dqShift.decTest | 596 +- Lib/test/decimaltestdata/dqSubtract.decTest | 1270 ++-- Lib/test/decimaltestdata/dqToIntegral.decTest | 514 +- Lib/test/decimaltestdata/dqXor.decTest | 820 +-- Lib/test/decimaltestdata/dsBase.decTest | 2124 +++--- Lib/test/decimaltestdata/dsEncode.decTest | 744 +-- Lib/test/decimaltestdata/exp.decTest | 1348 ++-- Lib/test/decimaltestdata/fma.decTest | 6852 ++++++++++---------- Lib/test/decimaltestdata/invert.decTest | 352 +- Lib/test/decimaltestdata/ln.decTest | 1222 ++-- Lib/test/decimaltestdata/log10.decTest | 1102 ++-- Lib/test/decimaltestdata/logb.decTest | 376 +- Lib/test/decimaltestdata/maxmag.decTest | 808 +-- Lib/test/decimaltestdata/minmag.decTest | 780 +-- Lib/test/decimaltestdata/nextminus.decTest | 296 +- Lib/test/decimaltestdata/nextplus.decTest | 300 +- Lib/test/decimaltestdata/nexttoward.decTest | 852 +-- Lib/test/decimaltestdata/or.decTest | 668 +- Lib/test/decimaltestdata/powersqrt.decTest | 5940 ++++++++--------- Lib/test/decimaltestdata/rotate.decTest | 494 +- Lib/test/decimaltestdata/scaleb.decTest | 418 +- Lib/test/decimaltestdata/shift.decTest | 500 +- Lib/test/decimaltestdata/tointegralx.decTest | 510 +- Lib/test/decimaltestdata/xor.decTest | 670 +- PC/VC6/_ctypes.dsp | 262 +- PC/VC6/_ctypes_test.dsp | 198 +- PC/VC6/_elementtree.dsp | 222 +- PC/VC6/_msi.dsp | 198 +- PC/VC6/_multiprocessing.dsp | 230 +- PC/VC6/_socket.dsp | 198 +- PC/VC6/_sqlite3.dsp | 262 +- PC/VC6/_testcapi.dsp | 198 +- PC/VC6/_tkinter.dsp | 206 +- PC/VC6/bz2.dsp | 198 +- PC/VC6/pyexpat.dsp | 222 +- PC/VC6/pythoncore.dsp | 1522 ++--- PC/VC6/select.dsp | 198 +- PC/VC6/unicodedata.dsp | 198 +- PC/VC6/w9xpopen.dsp | 194 +- PC/VC6/winsound.dsp | 198 +- PC/VS7.1/build_ssl.bat | 24 +- PC/VS8.0/build.bat | 34 +- PC/VS8.0/build_env.bat | 2 +- PC/VS8.0/build_pgo.bat | 82 +- PC/VS8.0/build_ssl.bat | 24 +- PC/VS8.0/env.bat | 10 +- PC/VS8.0/idle.bat | 30 +- PC/VS8.0/pyd.vsprops | 56 +- PC/VS8.0/pyd_d.vsprops | 72 +- PC/VS8.0/pyproject.vsprops | 174 +- PC/VS8.0/rt.bat | 104 +- PC/VS8.0/sqlite3.vsprops | 28 +- Tools/buildbot/build-amd64.bat | 12 +- Tools/buildbot/build.bat | 14 +- Tools/buildbot/buildmsi.bat | 42 +- Tools/buildbot/clean-amd64.bat | 14 +- Tools/buildbot/clean.bat | 14 +- Tools/buildbot/external-amd64.bat | 42 +- Tools/buildbot/external-common.bat | 86 +- Tools/buildbot/external.bat | 42 +- Tools/buildbot/test-amd64.bat | 6 +- Tools/buildbot/test.bat | 8 +- Tools/msi/merge.py | 168 +- 155 files changed, 55183 insertions(+), 55180 deletions(-) diff --git a/.hgeol b/.hgeol index 743fd04..e1c1992 100644 --- a/.hgeol +++ b/.hgeol @@ -1,16 +1,13 @@ [patterns] -** = native -**.bat = CRLF -**.def = CRLF -**.dsp = CRLF -**.dsw = CRLF -**.mak = CRLF -**.mk = CRLF -**.rc = CRLF -**.sln = CRLF -**.vcproj = CRLF -**.vsprops = CRLF +# Non human-editable files are binary + +**.dsp = BIN +**.dsw = BIN +**.mk = BIN +**.sln = BIN +**.vcproj = BIN +**.vsprops = BIN **.aif = BIN **.au = BIN @@ -31,6 +28,12 @@ Lib/email/test/data/msg_26.txt = BIN Lib/test/sndhdrdata/sndhdr.* = BIN +Lib/test/decimaltestdata/*.decTest = BIN + +# All other files (which presumably are human-editable) are "native". +# This must be the last rule! + +** = native [repository] -native = LF \ No newline at end of file +native = LF diff --git a/Demo/turtle/tdemo_nim.py b/Demo/turtle/tdemo_nim.py index b0edf44..8e66d7e 100644 --- a/Demo/turtle/tdemo_nim.py +++ b/Demo/turtle/tdemo_nim.py @@ -1,227 +1,227 @@ -""" turtle-example-suite: - - tdemo_nim.py - -Play nim against the computer. The player -who takes the last stick is the winner. - -Implements the model-view-controller -design pattern. -""" - - -import turtle -import random -import time - -SCREENWIDTH = 640 -SCREENHEIGHT = 480 - -MINSTICKS = 7 -MAXSTICKS = 31 - -HUNIT = SCREENHEIGHT // 12 -WUNIT = SCREENWIDTH // ((MAXSTICKS // 5) * 11 + (MAXSTICKS % 5) * 2) - -SCOLOR = (63, 63, 31) -HCOLOR = (255, 204, 204) -COLOR = (204, 204, 255) - -def randomrow(): - return random.randint(MINSTICKS, MAXSTICKS) - -def computerzug(state): - xored = state[0] ^ state[1] ^ state[2] - if xored == 0: - return randommove(state) - for z in range(3): - s = state[z] ^ xored - if s <= state[z]: - move = (z, s) - return move - -def randommove(state): - m = max(state) - while True: - z = random.randint(0,2) - if state[z] > (m > 1): - break - rand = random.randint(m > 1, state[z]-1) - return z, rand - - -class NimModel(object): - def __init__(self, game): - self.game = game - - def setup(self): - if self.game.state not in [Nim.CREATED, Nim.OVER]: - return - self.sticks = [randomrow(), randomrow(), randomrow()] - self.player = 0 - self.winner = None - self.game.view.setup() - self.game.state = Nim.RUNNING - - def move(self, row, col): - maxspalte = self.sticks[row] - self.sticks[row] = col - self.game.view.notify_move(row, col, maxspalte, self.player) - if self.game_over(): - self.game.state = Nim.OVER - self.winner = self.player - self.game.view.notify_over() - elif self.player == 0: - self.player = 1 - row, col = computerzug(self.sticks) - self.move(row, col) - self.player = 0 - - def game_over(self): - return self.sticks == [0, 0, 0] - - def notify_move(self, row, col): - if self.sticks[row] <= col: - return - self.move(row, col) - - -class Stick(turtle.Turtle): - def __init__(self, row, col, game): - turtle.Turtle.__init__(self, visible=False) - self.row = row - self.col = col - self.game = game - x, y = self.coords(row, col) - self.shape("square") - self.shapesize(HUNIT/10.0, WUNIT/20.0) - self.speed(0) - self.pu() - self.goto(x,y) - self.color("white") - self.showturtle() - - def coords(self, row, col): - packet, remainder = divmod(col, 5) - x = (3 + 11 * packet + 2 * remainder) * WUNIT - y = (2 + 3 * row) * HUNIT - return x - SCREENWIDTH // 2 + WUNIT // 2, SCREENHEIGHT // 2 - y - HUNIT // 2 - - def makemove(self, x, y): - if self.game.state != Nim.RUNNING: - return - self.game.controller.notify_move(self.row, self.col) - - -class NimView(object): - def __init__(self, game): - self.game = game - self.screen = game.screen - self.model = game.model - self.screen.colormode(255) - self.screen.tracer(False) - self.screen.bgcolor((240, 240, 255)) - self.writer = turtle.Turtle(visible=False) - self.writer.pu() - self.writer.speed(0) - self.sticks = {} - for row in range(3): - for col in range(MAXSTICKS): - self.sticks[(row, col)] = Stick(row, col, game) - self.display("... a moment please ...") - self.screen.tracer(True) - - def display(self, msg1, msg2=None): - self.screen.tracer(False) - self.writer.clear() - if msg2 is not None: - self.writer.goto(0, - SCREENHEIGHT // 2 + 48) - self.writer.pencolor("red") - self.writer.write(msg2, align="center", font=("Courier",18,"bold")) - self.writer.goto(0, - SCREENHEIGHT // 2 + 20) - self.writer.pencolor("black") - self.writer.write(msg1, align="center", font=("Courier",14,"bold")) - self.screen.tracer(True) - - - def setup(self): - self.screen.tracer(False) - for row in range(3): - for col in range(self.model.sticks[row]): - self.sticks[(row, col)].color(SCOLOR) - for row in range(3): - for col in range(self.model.sticks[row], MAXSTICKS): - self.sticks[(row, col)].color("white") - self.display("Your turn! Click leftmost stick to remove.") - self.screen.tracer(True) - - def notify_move(self, row, col, maxspalte, player): - if player == 0: - farbe = HCOLOR - for s in range(col, maxspalte): - self.sticks[(row, s)].color(farbe) - else: - self.display(" ... thinking ... ") - time.sleep(0.5) - self.display(" ... thinking ... aaah ...") - farbe = COLOR - for s in range(maxspalte-1, col-1, -1): - time.sleep(0.2) - self.sticks[(row, s)].color(farbe) - self.display("Your turn! Click leftmost stick to remove.") - - def notify_over(self): - if self.game.model.winner == 0: - msg2 = "Congrats. You're the winner!!!" - else: - msg2 = "Sorry, the computer is the winner." - self.display("To play again press space bar. To leave press ESC.", msg2) - - def clear(self): - if self.game.state == Nim.OVER: - self.screen.clear() - -class NimController(object): - - def __init__(self, game): - self.game = game - self.sticks = game.view.sticks - self.BUSY = False - for stick in self.sticks.values(): - stick.onclick(stick.makemove) - self.game.screen.onkey(self.game.model.setup, "space") - self.game.screen.onkey(self.game.view.clear, "Escape") - self.game.view.display("Press space bar to start game") - self.game.screen.listen() - - def notify_move(self, row, col): - if self.BUSY: - return - self.BUSY = True - self.game.model.notify_move(row, col) - self.BUSY = False - -class Nim(object): - CREATED = 0 - RUNNING = 1 - OVER = 2 - def __init__(self, screen): - self.state = Nim.CREATED - self.screen = screen - self.model = NimModel(self) - self.view = NimView(self) - self.controller = NimController(self) - - -mainscreen = turtle.Screen() -mainscreen.mode("standard") -mainscreen.setup(SCREENWIDTH, SCREENHEIGHT) - -def main(): - nim = Nim(mainscreen) - return "EVENTLOOP!" - -if __name__ == "__main__": - main() - turtle.mainloop() - +""" turtle-example-suite: + + tdemo_nim.py + +Play nim against the computer. The player +who takes the last stick is the winner. + +Implements the model-view-controller +design pattern. +""" + + +import turtle +import random +import time + +SCREENWIDTH = 640 +SCREENHEIGHT = 480 + +MINSTICKS = 7 +MAXSTICKS = 31 + +HUNIT = SCREENHEIGHT // 12 +WUNIT = SCREENWIDTH // ((MAXSTICKS // 5) * 11 + (MAXSTICKS % 5) * 2) + +SCOLOR = (63, 63, 31) +HCOLOR = (255, 204, 204) +COLOR = (204, 204, 255) + +def randomrow(): + return random.randint(MINSTICKS, MAXSTICKS) + +def computerzug(state): + xored = state[0] ^ state[1] ^ state[2] + if xored == 0: + return randommove(state) + for z in range(3): + s = state[z] ^ xored + if s <= state[z]: + move = (z, s) + return move + +def randommove(state): + m = max(state) + while True: + z = random.randint(0,2) + if state[z] > (m > 1): + break + rand = random.randint(m > 1, state[z]-1) + return z, rand + + +class NimModel(object): + def __init__(self, game): + self.game = game + + def setup(self): + if self.game.state not in [Nim.CREATED, Nim.OVER]: + return + self.sticks = [randomrow(), randomrow(), randomrow()] + self.player = 0 + self.winner = None + self.game.view.setup() + self.game.state = Nim.RUNNING + + def move(self, row, col): + maxspalte = self.sticks[row] + self.sticks[row] = col + self.game.view.notify_move(row, col, maxspalte, self.player) + if self.game_over(): + self.game.state = Nim.OVER + self.winner = self.player + self.game.view.notify_over() + elif self.player == 0: + self.player = 1 + row, col = computerzug(self.sticks) + self.move(row, col) + self.player = 0 + + def game_over(self): + return self.sticks == [0, 0, 0] + + def notify_move(self, row, col): + if self.sticks[row] <= col: + return + self.move(row, col) + + +class Stick(turtle.Turtle): + def __init__(self, row, col, game): + turtle.Turtle.__init__(self, visible=False) + self.row = row + self.col = col + self.game = game + x, y = self.coords(row, col) + self.shape("square") + self.shapesize(HUNIT/10.0, WUNIT/20.0) + self.speed(0) + self.pu() + self.goto(x,y) + self.color("white") + self.showturtle() + + def coords(self, row, col): + packet, remainder = divmod(col, 5) + x = (3 + 11 * packet + 2 * remainder) * WUNIT + y = (2 + 3 * row) * HUNIT + return x - SCREENWIDTH // 2 + WUNIT // 2, SCREENHEIGHT // 2 - y - HUNIT // 2 + + def makemove(self, x, y): + if self.game.state != Nim.RUNNING: + return + self.game.controller.notify_move(self.row, self.col) + + +class NimView(object): + def __init__(self, game): + self.game = game + self.screen = game.screen + self.model = game.model + self.screen.colormode(255) + self.screen.tracer(False) + self.screen.bgcolor((240, 240, 255)) + self.writer = turtle.Turtle(visible=False) + self.writer.pu() + self.writer.speed(0) + self.sticks = {} + for row in range(3): + for col in range(MAXSTICKS): + self.sticks[(row, col)] = Stick(row, col, game) + self.display("... a moment please ...") + self.screen.tracer(True) + + def display(self, msg1, msg2=None): + self.screen.tracer(False) + self.writer.clear() + if msg2 is not None: + self.writer.goto(0, - SCREENHEIGHT // 2 + 48) + self.writer.pencolor("red") + self.writer.write(msg2, align="center", font=("Courier",18,"bold")) + self.writer.goto(0, - SCREENHEIGHT // 2 + 20) + self.writer.pencolor("black") + self.writer.write(msg1, align="center", font=("Courier",14,"bold")) + self.screen.tracer(True) + + + def setup(self): + self.screen.tracer(False) + for row in range(3): + for col in range(self.model.sticks[row]): + self.sticks[(row, col)].color(SCOLOR) + for row in range(3): + for col in range(self.model.sticks[row], MAXSTICKS): + self.sticks[(row, col)].color("white") + self.display("Your turn! Click leftmost stick to remove.") + self.screen.tracer(True) + + def notify_move(self, row, col, maxspalte, player): + if player == 0: + farbe = HCOLOR + for s in range(col, maxspalte): + self.sticks[(row, s)].color(farbe) + else: + self.display(" ... thinking ... ") + time.sleep(0.5) + self.display(" ... thinking ... aaah ...") + farbe = COLOR + for s in range(maxspalte-1, col-1, -1): + time.sleep(0.2) + self.sticks[(row, s)].color(farbe) + self.display("Your turn! Click leftmost stick to remove.") + + def notify_over(self): + if self.game.model.winner == 0: + msg2 = "Congrats. You're the winner!!!" + else: + msg2 = "Sorry, the computer is the winner." + self.display("To play again press space bar. To leave press ESC.", msg2) + + def clear(self): + if self.game.state == Nim.OVER: + self.screen.clear() + +class NimController(object): + + def __init__(self, game): + self.game = game + self.sticks = game.view.sticks + self.BUSY = False + for stick in self.sticks.values(): + stick.onclick(stick.makemove) + self.game.screen.onkey(self.game.model.setup, "space") + self.game.screen.onkey(self.game.view.clear, "Escape") + self.game.view.display("Press space bar to start game") + self.game.screen.listen() + + def notify_move(self, row, col): + if self.BUSY: + return + self.BUSY = True + self.game.model.notify_move(row, col) + self.BUSY = False + +class Nim(object): + CREATED = 0 + RUNNING = 1 + OVER = 2 + def __init__(self, screen): + self.state = Nim.CREATED + self.screen = screen + self.model = NimModel(self) + self.view = NimView(self) + self.controller = NimController(self) + + +mainscreen = turtle.Screen() +mainscreen.mode("standard") +mainscreen.setup(SCREENWIDTH, SCREENHEIGHT) + +def main(): + nim = Nim(mainscreen) + return "EVENTLOOP!" + +if __name__ == "__main__": + main() + turtle.mainloop() + diff --git a/Demo/turtle/tdemo_round_dance.py b/Demo/turtle/tdemo_round_dance.py index 67676d0..bffc1e6 100644 --- a/Demo/turtle/tdemo_round_dance.py +++ b/Demo/turtle/tdemo_round_dance.py @@ -1,90 +1,90 @@ -""" turtle-example-suite: - - tdemo_round_dance.py - -(Needs version 1.1 of the turtle module that -comes with Python 3.1) - -Dancing turtles have a compound shape -consisting of a series of triangles of -decreasing size. - -Turtles march along a circle while rotating -pairwise in opposite direction, with one -exception. Does that breaking of symmetry -enhance the attractiveness of the example? - -Press any key to stop the animation. - -Technically: demonstrates use of compound -shapes, transformation of shapes as well as -cloning turtles. The animation is -controlled through update(). -""" - -from turtle import * - -def stop(): - global running - running = False - -def main(): - global running - clearscreen() - bgcolor("gray10") - tracer(False) - shape("triangle") - f = 0.793402 - phi = 9.064678 - s = 5 - c = 1 - # create compound shape - sh = Shape("compound") - for i in range(10): - shapesize(s) - p =get_shapepoly() - s *= f - c *= f - tilt(-phi) - sh.addcomponent(p, (c, 0.25, 1-c), "black") - register_shape("multitri", sh) - # create dancers - shapesize(1) - shape("multitri") - pu() - setpos(0, -200) - dancers = [] - for i in range(180): - fd(7) - tilt(-4) - lt(2) - update() - if i % 12 == 0: - dancers.append(clone()) - home() - # dance - running = True - onkeypress(stop) - listen() - cs = 1 - while running: - ta = -4 - for dancer in dancers: - dancer.fd(7) - dancer.lt(2) - dancer.tilt(ta) - ta = -4 if ta > 0 else 2 - if cs < 180: - right(4) - shapesize(cs) - cs *= 1.005 - update() - return "DONE!" - -if __name__=='__main__': - print(main()) - mainloop() - - - - +""" turtle-example-suite: + + tdemo_round_dance.py + +(Needs version 1.1 of the turtle module that +comes with Python 3.1) + +Dancing turtles have a compound shape +consisting of a series of triangles of +decreasing size. + +Turtles march along a circle while rotating +pairwise in opposite direction, with one +exception. Does that breaking of symmetry +enhance the attractiveness of the example? + +Press any key to stop the animation. + +Technically: demonstrates use of compound +shapes, transformation of shapes as well as +cloning turtles. The animation is +controlled through update(). +""" + +from turtle import * + +def stop(): + global running + running = False + +def main(): + global running + clearscreen() + bgcolor("gray10") + tracer(False) + shape("triangle") + f = 0.793402 + phi = 9.064678 + s = 5 + c = 1 + # create compound shape + sh = Shape("compound") + for i in range(10): + shapesize(s) + p =get_shapepoly() + s *= f + c *= f + tilt(-phi) + sh.addcomponent(p, (c, 0.25, 1-c), "black") + register_shape("multitri", sh) + # create dancers + shapesize(1) + shape("multitri") + pu() + setpos(0, -200) + dancers = [] + for i in range(180): + fd(7) + tilt(-4) + lt(2) + update() + if i % 12 == 0: + dancers.append(clone()) + home() + # dance + running = True + onkeypress(stop) + listen() + cs = 1 + while running: + ta = -4 + for dancer in dancers: + dancer.fd(7) + dancer.lt(2) + dancer.tilt(ta) + ta = -4 if ta > 0 else 2 + if cs < 180: + right(4) + shapesize(cs) + cs *= 1.005 + update() + return "DONE!" + +if __name__=='__main__': + print(main()) + mainloop() + + + + diff --git a/Doc/make.bat b/Doc/make.bat index 45d9d68..6552aab 100644 --- a/Doc/make.bat +++ b/Doc/make.bat @@ -1,59 +1,59 @@ -@@echo off -setlocal - -set SVNROOT=http://svn.python.org/projects -if "%PYTHON%" EQU "" set PYTHON=..\pcbuild\python -if "%HTMLHELP%" EQU "" set HTMLHELP=%ProgramFiles%\HTML Help Workshop\hhc.exe -if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/sphinxext/patchlevel.py`) do set DISTVERSION=%%v - -if "%1" EQU "" goto help -if "%1" EQU "html" goto build -if "%1" EQU "htmlhelp" goto build -if "%1" EQU "latex" goto build -if "%1" EQU "text" goto build -if "%1" EQU "suspicious" goto build -if "%1" EQU "linkcheck" goto build -if "%1" EQU "changes" goto build -if "%1" EQU "checkout" goto checkout -if "%1" EQU "update" goto update - -:help -set this=%~n0 -echo HELP -echo. -echo %this% checkout -echo %this% update -echo %this% html -echo %this% htmlhelp -echo %this% latex -echo %this% text -echo %this% suspicious -echo %this% linkcheck -echo %this% changes -echo. -goto end - -:checkout -svn co %SVNROOT%/external/Sphinx-0.6.5/sphinx tools/sphinx -svn co %SVNROOT%/external/docutils-0.6/docutils tools/docutils -svn co %SVNROOT%/external/Jinja-2.3.1/jinja2 tools/jinja2 -svn co %SVNROOT%/external/Pygments-1.3.1/pygments tools/pygments -goto end - -:update -svn update tools/sphinx -svn update tools/docutils -svn update tools/jinja2 -svn update tools/pygments -goto end - -:build -if not exist build mkdir build -if not exist build\%1 mkdir build\%1 -if not exist build\doctrees mkdir build\doctrees -cmd /C %PYTHON% --version -cmd /C %PYTHON% tools\sphinx-build.py -b%1 -dbuild\doctrees . build\%* -if "%1" EQU "htmlhelp" "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp -goto end - -:end +@@echo off +setlocal + +set SVNROOT=http://svn.python.org/projects +if "%PYTHON%" EQU "" set PYTHON=..\pcbuild\python +if "%HTMLHELP%" EQU "" set HTMLHELP=%ProgramFiles%\HTML Help Workshop\hhc.exe +if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/sphinxext/patchlevel.py`) do set DISTVERSION=%%v + +if "%1" EQU "" goto help +if "%1" EQU "html" goto build +if "%1" EQU "htmlhelp" goto build +if "%1" EQU "latex" goto build +if "%1" EQU "text" goto build +if "%1" EQU "suspicious" goto build +if "%1" EQU "linkcheck" goto build +if "%1" EQU "changes" goto build +if "%1" EQU "checkout" goto checkout +if "%1" EQU "update" goto update + +:help +set this=%~n0 +echo HELP +echo. +echo %this% checkout +echo %this% update +echo %this% html +echo %this% htmlhelp +echo %this% latex +echo %this% text +echo %this% suspicious +echo %this% linkcheck +echo %this% changes +echo. +goto end + +:checkout +svn co %SVNROOT%/external/Sphinx-0.6.5/sphinx tools/sphinx +svn co %SVNROOT%/external/docutils-0.6/docutils tools/docutils +svn co %SVNROOT%/external/Jinja-2.3.1/jinja2 tools/jinja2 +svn co %SVNROOT%/external/Pygments-1.3.1/pygments tools/pygments +goto end + +:update +svn update tools/sphinx +svn update tools/docutils +svn update tools/jinja2 +svn update tools/pygments +goto end + +:build +if not exist build mkdir build +if not exist build\%1 mkdir build\%1 +if not exist build\doctrees mkdir build\doctrees +cmd /C %PYTHON% --version +cmd /C %PYTHON% tools\sphinx-build.py -b%1 -dbuild\doctrees . build\%* +if "%1" EQU "htmlhelp" "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp +goto end + +:end diff --git a/Lib/test/decimaltestdata/and.decTest b/Lib/test/decimaltestdata/and.decTest index e912394..a0cc786 100644 --- a/Lib/test/decimaltestdata/and.decTest +++ b/Lib/test/decimaltestdata/and.decTest @@ -1,338 +1,338 @@ ------------------------------------------------------------------------- --- and.decTest -- digitwise logical AND -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check (truth table) -andx001 and 0 0 -> 0 -andx002 and 0 1 -> 0 -andx003 and 1 0 -> 0 -andx004 and 1 1 -> 1 -andx005 and 1100 1010 -> 1000 -andx006 and 1111 10 -> 10 -andx007 and 1111 1010 -> 1010 - --- and at msd and msd-1 -andx010 and 000000000 000000000 -> 0 -andx011 and 000000000 100000000 -> 0 -andx012 and 100000000 000000000 -> 0 -andx013 and 100000000 100000000 -> 100000000 -andx014 and 000000000 000000000 -> 0 -andx015 and 000000000 010000000 -> 0 -andx016 and 010000000 000000000 -> 0 -andx017 and 010000000 010000000 -> 10000000 - --- Various lengths --- 123456789 123456789 123456789 -andx021 and 111111111 111111111 -> 111111111 -andx022 and 111111111111 111111111 -> 111111111 -andx023 and 111111111111 11111111 -> 11111111 -andx024 and 111111111 11111111 -> 11111111 -andx025 and 111111111 1111111 -> 1111111 -andx026 and 111111111111 111111 -> 111111 -andx027 and 111111111111 11111 -> 11111 -andx028 and 111111111111 1111 -> 1111 -andx029 and 111111111111 111 -> 111 -andx031 and 111111111111 11 -> 11 -andx032 and 111111111111 1 -> 1 -andx033 and 111111111111 1111111111 -> 111111111 -andx034 and 11111111111 11111111111 -> 111111111 -andx035 and 1111111111 111111111111 -> 111111111 -andx036 and 111111111 1111111111111 -> 111111111 - -andx040 and 111111111 111111111111 -> 111111111 -andx041 and 11111111 111111111111 -> 11111111 -andx042 and 11111111 111111111 -> 11111111 -andx043 and 1111111 111111111 -> 1111111 -andx044 and 111111 111111111 -> 111111 -andx045 and 11111 111111111 -> 11111 -andx046 and 1111 111111111 -> 1111 -andx047 and 111 111111111 -> 111 -andx048 and 11 111111111 -> 11 -andx049 and 1 111111111 -> 1 - -andx050 and 1111111111 1 -> 1 -andx051 and 111111111 1 -> 1 -andx052 and 11111111 1 -> 1 -andx053 and 1111111 1 -> 1 -andx054 and 111111 1 -> 1 -andx055 and 11111 1 -> 1 -andx056 and 1111 1 -> 1 -andx057 and 111 1 -> 1 -andx058 and 11 1 -> 1 -andx059 and 1 1 -> 1 - -andx060 and 1111111111 0 -> 0 -andx061 and 111111111 0 -> 0 -andx062 and 11111111 0 -> 0 -andx063 and 1111111 0 -> 0 -andx064 and 111111 0 -> 0 -andx065 and 11111 0 -> 0 -andx066 and 1111 0 -> 0 -andx067 and 111 0 -> 0 -andx068 and 11 0 -> 0 -andx069 and 1 0 -> 0 - -andx070 and 1 1111111111 -> 1 -andx071 and 1 111111111 -> 1 -andx072 and 1 11111111 -> 1 -andx073 and 1 1111111 -> 1 -andx074 and 1 111111 -> 1 -andx075 and 1 11111 -> 1 -andx076 and 1 1111 -> 1 -andx077 and 1 111 -> 1 -andx078 and 1 11 -> 1 -andx079 and 1 1 -> 1 - -andx080 and 0 1111111111 -> 0 -andx081 and 0 111111111 -> 0 -andx082 and 0 11111111 -> 0 -andx083 and 0 1111111 -> 0 -andx084 and 0 111111 -> 0 -andx085 and 0 11111 -> 0 -andx086 and 0 1111 -> 0 -andx087 and 0 111 -> 0 -andx088 and 0 11 -> 0 -andx089 and 0 1 -> 0 - -andx090 and 011111111 111111111 -> 11111111 -andx091 and 101111111 111111111 -> 101111111 -andx092 and 110111111 111111111 -> 110111111 -andx093 and 111011111 111111111 -> 111011111 -andx094 and 111101111 111111111 -> 111101111 -andx095 and 111110111 111111111 -> 111110111 -andx096 and 111111011 111111111 -> 111111011 -andx097 and 111111101 111111111 -> 111111101 -andx098 and 111111110 111111111 -> 111111110 - -andx100 and 111111111 011111111 -> 11111111 -andx101 and 111111111 101111111 -> 101111111 -andx102 and 111111111 110111111 -> 110111111 -andx103 and 111111111 111011111 -> 111011111 -andx104 and 111111111 111101111 -> 111101111 -andx105 and 111111111 111110111 -> 111110111 -andx106 and 111111111 111111011 -> 111111011 -andx107 and 111111111 111111101 -> 111111101 -andx108 and 111111111 111111110 -> 111111110 - --- non-0/1 should not be accepted, nor should signs -andx220 and 111111112 111111111 -> NaN Invalid_operation -andx221 and 333333333 333333333 -> NaN Invalid_operation -andx222 and 555555555 555555555 -> NaN Invalid_operation -andx223 and 777777777 777777777 -> NaN Invalid_operation -andx224 and 999999999 999999999 -> NaN Invalid_operation -andx225 and 222222222 999999999 -> NaN Invalid_operation -andx226 and 444444444 999999999 -> NaN Invalid_operation -andx227 and 666666666 999999999 -> NaN Invalid_operation -andx228 and 888888888 999999999 -> NaN Invalid_operation -andx229 and 999999999 222222222 -> NaN Invalid_operation -andx230 and 999999999 444444444 -> NaN Invalid_operation -andx231 and 999999999 666666666 -> NaN Invalid_operation -andx232 and 999999999 888888888 -> NaN Invalid_operation --- a few randoms -andx240 and 567468689 -934981942 -> NaN Invalid_operation -andx241 and 567367689 934981942 -> NaN Invalid_operation -andx242 and -631917772 -706014634 -> NaN Invalid_operation -andx243 and -756253257 138579234 -> NaN Invalid_operation -andx244 and 835590149 567435400 -> NaN Invalid_operation --- test MSD -andx250 and 200000000 100000000 -> NaN Invalid_operation -andx251 and 700000000 100000000 -> NaN Invalid_operation -andx252 and 800000000 100000000 -> NaN Invalid_operation -andx253 and 900000000 100000000 -> NaN Invalid_operation -andx254 and 200000000 000000000 -> NaN Invalid_operation -andx255 and 700000000 000000000 -> NaN Invalid_operation -andx256 and 800000000 000000000 -> NaN Invalid_operation -andx257 and 900000000 000000000 -> NaN Invalid_operation -andx258 and 100000000 200000000 -> NaN Invalid_operation -andx259 and 100000000 700000000 -> NaN Invalid_operation -andx260 and 100000000 800000000 -> NaN Invalid_operation -andx261 and 100000000 900000000 -> NaN Invalid_operation -andx262 and 000000000 200000000 -> NaN Invalid_operation -andx263 and 000000000 700000000 -> NaN Invalid_operation -andx264 and 000000000 800000000 -> NaN Invalid_operation -andx265 and 000000000 900000000 -> NaN Invalid_operation --- test MSD-1 -andx270 and 020000000 100000000 -> NaN Invalid_operation -andx271 and 070100000 100000000 -> NaN Invalid_operation -andx272 and 080010000 100000001 -> NaN Invalid_operation -andx273 and 090001000 100000010 -> NaN Invalid_operation -andx274 and 100000100 020010100 -> NaN Invalid_operation -andx275 and 100000000 070001000 -> NaN Invalid_operation -andx276 and 100000010 080010100 -> NaN Invalid_operation -andx277 and 100000000 090000010 -> NaN Invalid_operation --- test LSD -andx280 and 001000002 100000000 -> NaN Invalid_operation -andx281 and 000000007 100000000 -> NaN Invalid_operation -andx282 and 000000008 100000000 -> NaN Invalid_operation -andx283 and 000000009 100000000 -> NaN Invalid_operation -andx284 and 100000000 000100002 -> NaN Invalid_operation -andx285 and 100100000 001000007 -> NaN Invalid_operation -andx286 and 100010000 010000008 -> NaN Invalid_operation -andx287 and 100001000 100000009 -> NaN Invalid_operation --- test Middie -andx288 and 001020000 100000000 -> NaN Invalid_operation -andx289 and 000070001 100000000 -> NaN Invalid_operation -andx290 and 000080000 100010000 -> NaN Invalid_operation -andx291 and 000090000 100001000 -> NaN Invalid_operation -andx292 and 100000010 000020100 -> NaN Invalid_operation -andx293 and 100100000 000070010 -> NaN Invalid_operation -andx294 and 100010100 000080001 -> NaN Invalid_operation -andx295 and 100001000 000090000 -> NaN Invalid_operation --- signs -andx296 and -100001000 -000000000 -> NaN Invalid_operation -andx297 and -100001000 000010000 -> NaN Invalid_operation -andx298 and 100001000 -000000000 -> NaN Invalid_operation -andx299 and 100001000 000011000 -> 1000 - --- Nmax, Nmin, Ntiny -andx331 and 2 9.99999999E+999 -> NaN Invalid_operation -andx332 and 3 1E-999 -> NaN Invalid_operation -andx333 and 4 1.00000000E-999 -> NaN Invalid_operation -andx334 and 5 1E-1007 -> NaN Invalid_operation -andx335 and 6 -1E-1007 -> NaN Invalid_operation -andx336 and 7 -1.00000000E-999 -> NaN Invalid_operation -andx337 and 8 -1E-999 -> NaN Invalid_operation -andx338 and 9 -9.99999999E+999 -> NaN Invalid_operation -andx341 and 9.99999999E+999 -18 -> NaN Invalid_operation -andx342 and 1E-999 01 -> NaN Invalid_operation -andx343 and 1.00000000E-999 -18 -> NaN Invalid_operation -andx344 and 1E-1007 18 -> NaN Invalid_operation -andx345 and -1E-1007 -10 -> NaN Invalid_operation -andx346 and -1.00000000E-999 18 -> NaN Invalid_operation -andx347 and -1E-999 10 -> NaN Invalid_operation -andx348 and -9.99999999E+999 -18 -> NaN Invalid_operation - --- A few other non-integers -andx361 and 1.0 1 -> NaN Invalid_operation -andx362 and 1E+1 1 -> NaN Invalid_operation -andx363 and 0.0 1 -> NaN Invalid_operation -andx364 and 0E+1 1 -> NaN Invalid_operation -andx365 and 9.9 1 -> NaN Invalid_operation -andx366 and 9E+1 1 -> NaN Invalid_operation -andx371 and 0 1.0 -> NaN Invalid_operation -andx372 and 0 1E+1 -> NaN Invalid_operation -andx373 and 0 0.0 -> NaN Invalid_operation -andx374 and 0 0E+1 -> NaN Invalid_operation -andx375 and 0 9.9 -> NaN Invalid_operation -andx376 and 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -andx780 and -Inf -Inf -> NaN Invalid_operation -andx781 and -Inf -1000 -> NaN Invalid_operation -andx782 and -Inf -1 -> NaN Invalid_operation -andx783 and -Inf -0 -> NaN Invalid_operation -andx784 and -Inf 0 -> NaN Invalid_operation -andx785 and -Inf 1 -> NaN Invalid_operation -andx786 and -Inf 1000 -> NaN Invalid_operation -andx787 and -1000 -Inf -> NaN Invalid_operation -andx788 and -Inf -Inf -> NaN Invalid_operation -andx789 and -1 -Inf -> NaN Invalid_operation -andx790 and -0 -Inf -> NaN Invalid_operation -andx791 and 0 -Inf -> NaN Invalid_operation -andx792 and 1 -Inf -> NaN Invalid_operation -andx793 and 1000 -Inf -> NaN Invalid_operation -andx794 and Inf -Inf -> NaN Invalid_operation - -andx800 and Inf -Inf -> NaN Invalid_operation -andx801 and Inf -1000 -> NaN Invalid_operation -andx802 and Inf -1 -> NaN Invalid_operation -andx803 and Inf -0 -> NaN Invalid_operation -andx804 and Inf 0 -> NaN Invalid_operation -andx805 and Inf 1 -> NaN Invalid_operation -andx806 and Inf 1000 -> NaN Invalid_operation -andx807 and Inf Inf -> NaN Invalid_operation -andx808 and -1000 Inf -> NaN Invalid_operation -andx809 and -Inf Inf -> NaN Invalid_operation -andx810 and -1 Inf -> NaN Invalid_operation -andx811 and -0 Inf -> NaN Invalid_operation -andx812 and 0 Inf -> NaN Invalid_operation -andx813 and 1 Inf -> NaN Invalid_operation -andx814 and 1000 Inf -> NaN Invalid_operation -andx815 and Inf Inf -> NaN Invalid_operation - -andx821 and NaN -Inf -> NaN Invalid_operation -andx822 and NaN -1000 -> NaN Invalid_operation -andx823 and NaN -1 -> NaN Invalid_operation -andx824 and NaN -0 -> NaN Invalid_operation -andx825 and NaN 0 -> NaN Invalid_operation -andx826 and NaN 1 -> NaN Invalid_operation -andx827 and NaN 1000 -> NaN Invalid_operation -andx828 and NaN Inf -> NaN Invalid_operation -andx829 and NaN NaN -> NaN Invalid_operation -andx830 and -Inf NaN -> NaN Invalid_operation -andx831 and -1000 NaN -> NaN Invalid_operation -andx832 and -1 NaN -> NaN Invalid_operation -andx833 and -0 NaN -> NaN Invalid_operation -andx834 and 0 NaN -> NaN Invalid_operation -andx835 and 1 NaN -> NaN Invalid_operation -andx836 and 1000 NaN -> NaN Invalid_operation -andx837 and Inf NaN -> NaN Invalid_operation - -andx841 and sNaN -Inf -> NaN Invalid_operation -andx842 and sNaN -1000 -> NaN Invalid_operation -andx843 and sNaN -1 -> NaN Invalid_operation -andx844 and sNaN -0 -> NaN Invalid_operation -andx845 and sNaN 0 -> NaN Invalid_operation -andx846 and sNaN 1 -> NaN Invalid_operation -andx847 and sNaN 1000 -> NaN Invalid_operation -andx848 and sNaN NaN -> NaN Invalid_operation -andx849 and sNaN sNaN -> NaN Invalid_operation -andx850 and NaN sNaN -> NaN Invalid_operation -andx851 and -Inf sNaN -> NaN Invalid_operation -andx852 and -1000 sNaN -> NaN Invalid_operation -andx853 and -1 sNaN -> NaN Invalid_operation -andx854 and -0 sNaN -> NaN Invalid_operation -andx855 and 0 sNaN -> NaN Invalid_operation -andx856 and 1 sNaN -> NaN Invalid_operation -andx857 and 1000 sNaN -> NaN Invalid_operation -andx858 and Inf sNaN -> NaN Invalid_operation -andx859 and NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -andx861 and NaN1 -Inf -> NaN Invalid_operation -andx862 and +NaN2 -1000 -> NaN Invalid_operation -andx863 and NaN3 1000 -> NaN Invalid_operation -andx864 and NaN4 Inf -> NaN Invalid_operation -andx865 and NaN5 +NaN6 -> NaN Invalid_operation -andx866 and -Inf NaN7 -> NaN Invalid_operation -andx867 and -1000 NaN8 -> NaN Invalid_operation -andx868 and 1000 NaN9 -> NaN Invalid_operation -andx869 and Inf +NaN10 -> NaN Invalid_operation -andx871 and sNaN11 -Inf -> NaN Invalid_operation -andx872 and sNaN12 -1000 -> NaN Invalid_operation -andx873 and sNaN13 1000 -> NaN Invalid_operation -andx874 and sNaN14 NaN17 -> NaN Invalid_operation -andx875 and sNaN15 sNaN18 -> NaN Invalid_operation -andx876 and NaN16 sNaN19 -> NaN Invalid_operation -andx877 and -Inf +sNaN20 -> NaN Invalid_operation -andx878 and -1000 sNaN21 -> NaN Invalid_operation -andx879 and 1000 sNaN22 -> NaN Invalid_operation -andx880 and Inf sNaN23 -> NaN Invalid_operation -andx881 and +NaN25 +sNaN24 -> NaN Invalid_operation -andx882 and -NaN26 NaN28 -> NaN Invalid_operation -andx883 and -sNaN27 sNaN29 -> NaN Invalid_operation -andx884 and 1000 -NaN30 -> NaN Invalid_operation -andx885 and 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- and.decTest -- digitwise logical AND -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check (truth table) +andx001 and 0 0 -> 0 +andx002 and 0 1 -> 0 +andx003 and 1 0 -> 0 +andx004 and 1 1 -> 1 +andx005 and 1100 1010 -> 1000 +andx006 and 1111 10 -> 10 +andx007 and 1111 1010 -> 1010 + +-- and at msd and msd-1 +andx010 and 000000000 000000000 -> 0 +andx011 and 000000000 100000000 -> 0 +andx012 and 100000000 000000000 -> 0 +andx013 and 100000000 100000000 -> 100000000 +andx014 and 000000000 000000000 -> 0 +andx015 and 000000000 010000000 -> 0 +andx016 and 010000000 000000000 -> 0 +andx017 and 010000000 010000000 -> 10000000 + +-- Various lengths +-- 123456789 123456789 123456789 +andx021 and 111111111 111111111 -> 111111111 +andx022 and 111111111111 111111111 -> 111111111 +andx023 and 111111111111 11111111 -> 11111111 +andx024 and 111111111 11111111 -> 11111111 +andx025 and 111111111 1111111 -> 1111111 +andx026 and 111111111111 111111 -> 111111 +andx027 and 111111111111 11111 -> 11111 +andx028 and 111111111111 1111 -> 1111 +andx029 and 111111111111 111 -> 111 +andx031 and 111111111111 11 -> 11 +andx032 and 111111111111 1 -> 1 +andx033 and 111111111111 1111111111 -> 111111111 +andx034 and 11111111111 11111111111 -> 111111111 +andx035 and 1111111111 111111111111 -> 111111111 +andx036 and 111111111 1111111111111 -> 111111111 + +andx040 and 111111111 111111111111 -> 111111111 +andx041 and 11111111 111111111111 -> 11111111 +andx042 and 11111111 111111111 -> 11111111 +andx043 and 1111111 111111111 -> 1111111 +andx044 and 111111 111111111 -> 111111 +andx045 and 11111 111111111 -> 11111 +andx046 and 1111 111111111 -> 1111 +andx047 and 111 111111111 -> 111 +andx048 and 11 111111111 -> 11 +andx049 and 1 111111111 -> 1 + +andx050 and 1111111111 1 -> 1 +andx051 and 111111111 1 -> 1 +andx052 and 11111111 1 -> 1 +andx053 and 1111111 1 -> 1 +andx054 and 111111 1 -> 1 +andx055 and 11111 1 -> 1 +andx056 and 1111 1 -> 1 +andx057 and 111 1 -> 1 +andx058 and 11 1 -> 1 +andx059 and 1 1 -> 1 + +andx060 and 1111111111 0 -> 0 +andx061 and 111111111 0 -> 0 +andx062 and 11111111 0 -> 0 +andx063 and 1111111 0 -> 0 +andx064 and 111111 0 -> 0 +andx065 and 11111 0 -> 0 +andx066 and 1111 0 -> 0 +andx067 and 111 0 -> 0 +andx068 and 11 0 -> 0 +andx069 and 1 0 -> 0 + +andx070 and 1 1111111111 -> 1 +andx071 and 1 111111111 -> 1 +andx072 and 1 11111111 -> 1 +andx073 and 1 1111111 -> 1 +andx074 and 1 111111 -> 1 +andx075 and 1 11111 -> 1 +andx076 and 1 1111 -> 1 +andx077 and 1 111 -> 1 +andx078 and 1 11 -> 1 +andx079 and 1 1 -> 1 + +andx080 and 0 1111111111 -> 0 +andx081 and 0 111111111 -> 0 +andx082 and 0 11111111 -> 0 +andx083 and 0 1111111 -> 0 +andx084 and 0 111111 -> 0 +andx085 and 0 11111 -> 0 +andx086 and 0 1111 -> 0 +andx087 and 0 111 -> 0 +andx088 and 0 11 -> 0 +andx089 and 0 1 -> 0 + +andx090 and 011111111 111111111 -> 11111111 +andx091 and 101111111 111111111 -> 101111111 +andx092 and 110111111 111111111 -> 110111111 +andx093 and 111011111 111111111 -> 111011111 +andx094 and 111101111 111111111 -> 111101111 +andx095 and 111110111 111111111 -> 111110111 +andx096 and 111111011 111111111 -> 111111011 +andx097 and 111111101 111111111 -> 111111101 +andx098 and 111111110 111111111 -> 111111110 + +andx100 and 111111111 011111111 -> 11111111 +andx101 and 111111111 101111111 -> 101111111 +andx102 and 111111111 110111111 -> 110111111 +andx103 and 111111111 111011111 -> 111011111 +andx104 and 111111111 111101111 -> 111101111 +andx105 and 111111111 111110111 -> 111110111 +andx106 and 111111111 111111011 -> 111111011 +andx107 and 111111111 111111101 -> 111111101 +andx108 and 111111111 111111110 -> 111111110 + +-- non-0/1 should not be accepted, nor should signs +andx220 and 111111112 111111111 -> NaN Invalid_operation +andx221 and 333333333 333333333 -> NaN Invalid_operation +andx222 and 555555555 555555555 -> NaN Invalid_operation +andx223 and 777777777 777777777 -> NaN Invalid_operation +andx224 and 999999999 999999999 -> NaN Invalid_operation +andx225 and 222222222 999999999 -> NaN Invalid_operation +andx226 and 444444444 999999999 -> NaN Invalid_operation +andx227 and 666666666 999999999 -> NaN Invalid_operation +andx228 and 888888888 999999999 -> NaN Invalid_operation +andx229 and 999999999 222222222 -> NaN Invalid_operation +andx230 and 999999999 444444444 -> NaN Invalid_operation +andx231 and 999999999 666666666 -> NaN Invalid_operation +andx232 and 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +andx240 and 567468689 -934981942 -> NaN Invalid_operation +andx241 and 567367689 934981942 -> NaN Invalid_operation +andx242 and -631917772 -706014634 -> NaN Invalid_operation +andx243 and -756253257 138579234 -> NaN Invalid_operation +andx244 and 835590149 567435400 -> NaN Invalid_operation +-- test MSD +andx250 and 200000000 100000000 -> NaN Invalid_operation +andx251 and 700000000 100000000 -> NaN Invalid_operation +andx252 and 800000000 100000000 -> NaN Invalid_operation +andx253 and 900000000 100000000 -> NaN Invalid_operation +andx254 and 200000000 000000000 -> NaN Invalid_operation +andx255 and 700000000 000000000 -> NaN Invalid_operation +andx256 and 800000000 000000000 -> NaN Invalid_operation +andx257 and 900000000 000000000 -> NaN Invalid_operation +andx258 and 100000000 200000000 -> NaN Invalid_operation +andx259 and 100000000 700000000 -> NaN Invalid_operation +andx260 and 100000000 800000000 -> NaN Invalid_operation +andx261 and 100000000 900000000 -> NaN Invalid_operation +andx262 and 000000000 200000000 -> NaN Invalid_operation +andx263 and 000000000 700000000 -> NaN Invalid_operation +andx264 and 000000000 800000000 -> NaN Invalid_operation +andx265 and 000000000 900000000 -> NaN Invalid_operation +-- test MSD-1 +andx270 and 020000000 100000000 -> NaN Invalid_operation +andx271 and 070100000 100000000 -> NaN Invalid_operation +andx272 and 080010000 100000001 -> NaN Invalid_operation +andx273 and 090001000 100000010 -> NaN Invalid_operation +andx274 and 100000100 020010100 -> NaN Invalid_operation +andx275 and 100000000 070001000 -> NaN Invalid_operation +andx276 and 100000010 080010100 -> NaN Invalid_operation +andx277 and 100000000 090000010 -> NaN Invalid_operation +-- test LSD +andx280 and 001000002 100000000 -> NaN Invalid_operation +andx281 and 000000007 100000000 -> NaN Invalid_operation +andx282 and 000000008 100000000 -> NaN Invalid_operation +andx283 and 000000009 100000000 -> NaN Invalid_operation +andx284 and 100000000 000100002 -> NaN Invalid_operation +andx285 and 100100000 001000007 -> NaN Invalid_operation +andx286 and 100010000 010000008 -> NaN Invalid_operation +andx287 and 100001000 100000009 -> NaN Invalid_operation +-- test Middie +andx288 and 001020000 100000000 -> NaN Invalid_operation +andx289 and 000070001 100000000 -> NaN Invalid_operation +andx290 and 000080000 100010000 -> NaN Invalid_operation +andx291 and 000090000 100001000 -> NaN Invalid_operation +andx292 and 100000010 000020100 -> NaN Invalid_operation +andx293 and 100100000 000070010 -> NaN Invalid_operation +andx294 and 100010100 000080001 -> NaN Invalid_operation +andx295 and 100001000 000090000 -> NaN Invalid_operation +-- signs +andx296 and -100001000 -000000000 -> NaN Invalid_operation +andx297 and -100001000 000010000 -> NaN Invalid_operation +andx298 and 100001000 -000000000 -> NaN Invalid_operation +andx299 and 100001000 000011000 -> 1000 + +-- Nmax, Nmin, Ntiny +andx331 and 2 9.99999999E+999 -> NaN Invalid_operation +andx332 and 3 1E-999 -> NaN Invalid_operation +andx333 and 4 1.00000000E-999 -> NaN Invalid_operation +andx334 and 5 1E-1007 -> NaN Invalid_operation +andx335 and 6 -1E-1007 -> NaN Invalid_operation +andx336 and 7 -1.00000000E-999 -> NaN Invalid_operation +andx337 and 8 -1E-999 -> NaN Invalid_operation +andx338 and 9 -9.99999999E+999 -> NaN Invalid_operation +andx341 and 9.99999999E+999 -18 -> NaN Invalid_operation +andx342 and 1E-999 01 -> NaN Invalid_operation +andx343 and 1.00000000E-999 -18 -> NaN Invalid_operation +andx344 and 1E-1007 18 -> NaN Invalid_operation +andx345 and -1E-1007 -10 -> NaN Invalid_operation +andx346 and -1.00000000E-999 18 -> NaN Invalid_operation +andx347 and -1E-999 10 -> NaN Invalid_operation +andx348 and -9.99999999E+999 -18 -> NaN Invalid_operation + +-- A few other non-integers +andx361 and 1.0 1 -> NaN Invalid_operation +andx362 and 1E+1 1 -> NaN Invalid_operation +andx363 and 0.0 1 -> NaN Invalid_operation +andx364 and 0E+1 1 -> NaN Invalid_operation +andx365 and 9.9 1 -> NaN Invalid_operation +andx366 and 9E+1 1 -> NaN Invalid_operation +andx371 and 0 1.0 -> NaN Invalid_operation +andx372 and 0 1E+1 -> NaN Invalid_operation +andx373 and 0 0.0 -> NaN Invalid_operation +andx374 and 0 0E+1 -> NaN Invalid_operation +andx375 and 0 9.9 -> NaN Invalid_operation +andx376 and 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +andx780 and -Inf -Inf -> NaN Invalid_operation +andx781 and -Inf -1000 -> NaN Invalid_operation +andx782 and -Inf -1 -> NaN Invalid_operation +andx783 and -Inf -0 -> NaN Invalid_operation +andx784 and -Inf 0 -> NaN Invalid_operation +andx785 and -Inf 1 -> NaN Invalid_operation +andx786 and -Inf 1000 -> NaN Invalid_operation +andx787 and -1000 -Inf -> NaN Invalid_operation +andx788 and -Inf -Inf -> NaN Invalid_operation +andx789 and -1 -Inf -> NaN Invalid_operation +andx790 and -0 -Inf -> NaN Invalid_operation +andx791 and 0 -Inf -> NaN Invalid_operation +andx792 and 1 -Inf -> NaN Invalid_operation +andx793 and 1000 -Inf -> NaN Invalid_operation +andx794 and Inf -Inf -> NaN Invalid_operation + +andx800 and Inf -Inf -> NaN Invalid_operation +andx801 and Inf -1000 -> NaN Invalid_operation +andx802 and Inf -1 -> NaN Invalid_operation +andx803 and Inf -0 -> NaN Invalid_operation +andx804 and Inf 0 -> NaN Invalid_operation +andx805 and Inf 1 -> NaN Invalid_operation +andx806 and Inf 1000 -> NaN Invalid_operation +andx807 and Inf Inf -> NaN Invalid_operation +andx808 and -1000 Inf -> NaN Invalid_operation +andx809 and -Inf Inf -> NaN Invalid_operation +andx810 and -1 Inf -> NaN Invalid_operation +andx811 and -0 Inf -> NaN Invalid_operation +andx812 and 0 Inf -> NaN Invalid_operation +andx813 and 1 Inf -> NaN Invalid_operation +andx814 and 1000 Inf -> NaN Invalid_operation +andx815 and Inf Inf -> NaN Invalid_operation + +andx821 and NaN -Inf -> NaN Invalid_operation +andx822 and NaN -1000 -> NaN Invalid_operation +andx823 and NaN -1 -> NaN Invalid_operation +andx824 and NaN -0 -> NaN Invalid_operation +andx825 and NaN 0 -> NaN Invalid_operation +andx826 and NaN 1 -> NaN Invalid_operation +andx827 and NaN 1000 -> NaN Invalid_operation +andx828 and NaN Inf -> NaN Invalid_operation +andx829 and NaN NaN -> NaN Invalid_operation +andx830 and -Inf NaN -> NaN Invalid_operation +andx831 and -1000 NaN -> NaN Invalid_operation +andx832 and -1 NaN -> NaN Invalid_operation +andx833 and -0 NaN -> NaN Invalid_operation +andx834 and 0 NaN -> NaN Invalid_operation +andx835 and 1 NaN -> NaN Invalid_operation +andx836 and 1000 NaN -> NaN Invalid_operation +andx837 and Inf NaN -> NaN Invalid_operation + +andx841 and sNaN -Inf -> NaN Invalid_operation +andx842 and sNaN -1000 -> NaN Invalid_operation +andx843 and sNaN -1 -> NaN Invalid_operation +andx844 and sNaN -0 -> NaN Invalid_operation +andx845 and sNaN 0 -> NaN Invalid_operation +andx846 and sNaN 1 -> NaN Invalid_operation +andx847 and sNaN 1000 -> NaN Invalid_operation +andx848 and sNaN NaN -> NaN Invalid_operation +andx849 and sNaN sNaN -> NaN Invalid_operation +andx850 and NaN sNaN -> NaN Invalid_operation +andx851 and -Inf sNaN -> NaN Invalid_operation +andx852 and -1000 sNaN -> NaN Invalid_operation +andx853 and -1 sNaN -> NaN Invalid_operation +andx854 and -0 sNaN -> NaN Invalid_operation +andx855 and 0 sNaN -> NaN Invalid_operation +andx856 and 1 sNaN -> NaN Invalid_operation +andx857 and 1000 sNaN -> NaN Invalid_operation +andx858 and Inf sNaN -> NaN Invalid_operation +andx859 and NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +andx861 and NaN1 -Inf -> NaN Invalid_operation +andx862 and +NaN2 -1000 -> NaN Invalid_operation +andx863 and NaN3 1000 -> NaN Invalid_operation +andx864 and NaN4 Inf -> NaN Invalid_operation +andx865 and NaN5 +NaN6 -> NaN Invalid_operation +andx866 and -Inf NaN7 -> NaN Invalid_operation +andx867 and -1000 NaN8 -> NaN Invalid_operation +andx868 and 1000 NaN9 -> NaN Invalid_operation +andx869 and Inf +NaN10 -> NaN Invalid_operation +andx871 and sNaN11 -Inf -> NaN Invalid_operation +andx872 and sNaN12 -1000 -> NaN Invalid_operation +andx873 and sNaN13 1000 -> NaN Invalid_operation +andx874 and sNaN14 NaN17 -> NaN Invalid_operation +andx875 and sNaN15 sNaN18 -> NaN Invalid_operation +andx876 and NaN16 sNaN19 -> NaN Invalid_operation +andx877 and -Inf +sNaN20 -> NaN Invalid_operation +andx878 and -1000 sNaN21 -> NaN Invalid_operation +andx879 and 1000 sNaN22 -> NaN Invalid_operation +andx880 and Inf sNaN23 -> NaN Invalid_operation +andx881 and +NaN25 +sNaN24 -> NaN Invalid_operation +andx882 and -NaN26 NaN28 -> NaN Invalid_operation +andx883 and -sNaN27 sNaN29 -> NaN Invalid_operation +andx884 and 1000 -NaN30 -> NaN Invalid_operation +andx885 and 1000 -sNaN31 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/class.decTest b/Lib/test/decimaltestdata/class.decTest index 62d2fa4..fa5bc3a 100644 --- a/Lib/test/decimaltestdata/class.decTest +++ b/Lib/test/decimaltestdata/class.decTest @@ -1,131 +1,131 @@ ------------------------------------------------------------------------- --- class.decTest -- Class operations -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- [New 2006.11.27] - -precision: 9 -maxExponent: 999 -minExponent: -999 -extended: 1 -clamp: 1 -rounding: half_even - -clasx001 class 0 -> +Zero -clasx002 class 0.00 -> +Zero -clasx003 class 0E+5 -> +Zero -clasx004 class 1E-1007 -> +Subnormal -clasx005 class 0.1E-999 -> +Subnormal -clasx006 class 0.99999999E-999 -> +Subnormal -clasx007 class 1.00000000E-999 -> +Normal -clasx008 class 1E-999 -> +Normal -clasx009 class 1E-100 -> +Normal -clasx010 class 1E-10 -> +Normal -clasx012 class 1E-1 -> +Normal -clasx013 class 1 -> +Normal -clasx014 class 2.50 -> +Normal -clasx015 class 100.100 -> +Normal -clasx016 class 1E+30 -> +Normal -clasx017 class 1E+999 -> +Normal -clasx018 class 9.99999999E+999 -> +Normal -clasx019 class Inf -> +Infinity - -clasx021 class -0 -> -Zero -clasx022 class -0.00 -> -Zero -clasx023 class -0E+5 -> -Zero -clasx024 class -1E-1007 -> -Subnormal -clasx025 class -0.1E-999 -> -Subnormal -clasx026 class -0.99999999E-999 -> -Subnormal -clasx027 class -1.00000000E-999 -> -Normal -clasx028 class -1E-999 -> -Normal -clasx029 class -1E-100 -> -Normal -clasx030 class -1E-10 -> -Normal -clasx032 class -1E-1 -> -Normal -clasx033 class -1 -> -Normal -clasx034 class -2.50 -> -Normal -clasx035 class -100.100 -> -Normal -clasx036 class -1E+30 -> -Normal -clasx037 class -1E+999 -> -Normal -clasx038 class -9.99999999E+999 -> -Normal -clasx039 class -Inf -> -Infinity - -clasx041 class NaN -> NaN -clasx042 class -NaN -> NaN -clasx043 class +NaN12345 -> NaN -clasx044 class sNaN -> sNaN -clasx045 class -sNaN -> sNaN -clasx046 class +sNaN12345 -> sNaN - - --- decimal64 bounds - -precision: 16 -maxExponent: 384 -minExponent: -383 -clamp: 1 -rounding: half_even - -clasx201 class 0 -> +Zero -clasx202 class 0.00 -> +Zero -clasx203 class 0E+5 -> +Zero -clasx204 class 1E-396 -> +Subnormal -clasx205 class 0.1E-383 -> +Subnormal -clasx206 class 0.999999999999999E-383 -> +Subnormal -clasx207 class 1.000000000000000E-383 -> +Normal -clasx208 class 1E-383 -> +Normal -clasx209 class 1E-100 -> +Normal -clasx210 class 1E-10 -> +Normal -clasx212 class 1E-1 -> +Normal -clasx213 class 1 -> +Normal -clasx214 class 2.50 -> +Normal -clasx215 class 100.100 -> +Normal -clasx216 class 1E+30 -> +Normal -clasx217 class 1E+384 -> +Normal -clasx218 class 9.999999999999999E+384 -> +Normal -clasx219 class Inf -> +Infinity - -clasx221 class -0 -> -Zero -clasx222 class -0.00 -> -Zero -clasx223 class -0E+5 -> -Zero -clasx224 class -1E-396 -> -Subnormal -clasx225 class -0.1E-383 -> -Subnormal -clasx226 class -0.999999999999999E-383 -> -Subnormal -clasx227 class -1.000000000000000E-383 -> -Normal -clasx228 class -1E-383 -> -Normal -clasx229 class -1E-100 -> -Normal -clasx230 class -1E-10 -> -Normal -clasx232 class -1E-1 -> -Normal -clasx233 class -1 -> -Normal -clasx234 class -2.50 -> -Normal -clasx235 class -100.100 -> -Normal -clasx236 class -1E+30 -> -Normal -clasx237 class -1E+384 -> -Normal -clasx238 class -9.999999999999999E+384 -> -Normal -clasx239 class -Inf -> -Infinity - -clasx241 class NaN -> NaN -clasx242 class -NaN -> NaN -clasx243 class +NaN12345 -> NaN -clasx244 class sNaN -> sNaN -clasx245 class -sNaN -> sNaN -clasx246 class +sNaN12345 -> sNaN - - - +------------------------------------------------------------------------ +-- class.decTest -- Class operations -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- [New 2006.11.27] + +precision: 9 +maxExponent: 999 +minExponent: -999 +extended: 1 +clamp: 1 +rounding: half_even + +clasx001 class 0 -> +Zero +clasx002 class 0.00 -> +Zero +clasx003 class 0E+5 -> +Zero +clasx004 class 1E-1007 -> +Subnormal +clasx005 class 0.1E-999 -> +Subnormal +clasx006 class 0.99999999E-999 -> +Subnormal +clasx007 class 1.00000000E-999 -> +Normal +clasx008 class 1E-999 -> +Normal +clasx009 class 1E-100 -> +Normal +clasx010 class 1E-10 -> +Normal +clasx012 class 1E-1 -> +Normal +clasx013 class 1 -> +Normal +clasx014 class 2.50 -> +Normal +clasx015 class 100.100 -> +Normal +clasx016 class 1E+30 -> +Normal +clasx017 class 1E+999 -> +Normal +clasx018 class 9.99999999E+999 -> +Normal +clasx019 class Inf -> +Infinity + +clasx021 class -0 -> -Zero +clasx022 class -0.00 -> -Zero +clasx023 class -0E+5 -> -Zero +clasx024 class -1E-1007 -> -Subnormal +clasx025 class -0.1E-999 -> -Subnormal +clasx026 class -0.99999999E-999 -> -Subnormal +clasx027 class -1.00000000E-999 -> -Normal +clasx028 class -1E-999 -> -Normal +clasx029 class -1E-100 -> -Normal +clasx030 class -1E-10 -> -Normal +clasx032 class -1E-1 -> -Normal +clasx033 class -1 -> -Normal +clasx034 class -2.50 -> -Normal +clasx035 class -100.100 -> -Normal +clasx036 class -1E+30 -> -Normal +clasx037 class -1E+999 -> -Normal +clasx038 class -9.99999999E+999 -> -Normal +clasx039 class -Inf -> -Infinity + +clasx041 class NaN -> NaN +clasx042 class -NaN -> NaN +clasx043 class +NaN12345 -> NaN +clasx044 class sNaN -> sNaN +clasx045 class -sNaN -> sNaN +clasx046 class +sNaN12345 -> sNaN + + +-- decimal64 bounds + +precision: 16 +maxExponent: 384 +minExponent: -383 +clamp: 1 +rounding: half_even + +clasx201 class 0 -> +Zero +clasx202 class 0.00 -> +Zero +clasx203 class 0E+5 -> +Zero +clasx204 class 1E-396 -> +Subnormal +clasx205 class 0.1E-383 -> +Subnormal +clasx206 class 0.999999999999999E-383 -> +Subnormal +clasx207 class 1.000000000000000E-383 -> +Normal +clasx208 class 1E-383 -> +Normal +clasx209 class 1E-100 -> +Normal +clasx210 class 1E-10 -> +Normal +clasx212 class 1E-1 -> +Normal +clasx213 class 1 -> +Normal +clasx214 class 2.50 -> +Normal +clasx215 class 100.100 -> +Normal +clasx216 class 1E+30 -> +Normal +clasx217 class 1E+384 -> +Normal +clasx218 class 9.999999999999999E+384 -> +Normal +clasx219 class Inf -> +Infinity + +clasx221 class -0 -> -Zero +clasx222 class -0.00 -> -Zero +clasx223 class -0E+5 -> -Zero +clasx224 class -1E-396 -> -Subnormal +clasx225 class -0.1E-383 -> -Subnormal +clasx226 class -0.999999999999999E-383 -> -Subnormal +clasx227 class -1.000000000000000E-383 -> -Normal +clasx228 class -1E-383 -> -Normal +clasx229 class -1E-100 -> -Normal +clasx230 class -1E-10 -> -Normal +clasx232 class -1E-1 -> -Normal +clasx233 class -1 -> -Normal +clasx234 class -2.50 -> -Normal +clasx235 class -100.100 -> -Normal +clasx236 class -1E+30 -> -Normal +clasx237 class -1E+384 -> -Normal +clasx238 class -9.999999999999999E+384 -> -Normal +clasx239 class -Inf -> -Infinity + +clasx241 class NaN -> NaN +clasx242 class -NaN -> NaN +clasx243 class +NaN12345 -> NaN +clasx244 class sNaN -> sNaN +clasx245 class -sNaN -> sNaN +clasx246 class +sNaN12345 -> sNaN + + + diff --git a/Lib/test/decimaltestdata/comparetotal.decTest b/Lib/test/decimaltestdata/comparetotal.decTest index ad87b4c..252c49f 100644 --- a/Lib/test/decimaltestdata/comparetotal.decTest +++ b/Lib/test/decimaltestdata/comparetotal.decTest @@ -1,798 +1,798 @@ ------------------------------------------------------------------------- --- comparetotal.decTest -- decimal comparison using total ordering -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). --- Similarly, comparetotal will have some radically different paths --- than compare. - -extended: 1 -precision: 16 -rounding: half_up -maxExponent: 384 -minExponent: -383 - --- sanity checks -cotx001 comparetotal -2 -2 -> 0 -cotx002 comparetotal -2 -1 -> -1 -cotx003 comparetotal -2 0 -> -1 -cotx004 comparetotal -2 1 -> -1 -cotx005 comparetotal -2 2 -> -1 -cotx006 comparetotal -1 -2 -> 1 -cotx007 comparetotal -1 -1 -> 0 -cotx008 comparetotal -1 0 -> -1 -cotx009 comparetotal -1 1 -> -1 -cotx010 comparetotal -1 2 -> -1 -cotx011 comparetotal 0 -2 -> 1 -cotx012 comparetotal 0 -1 -> 1 -cotx013 comparetotal 0 0 -> 0 -cotx014 comparetotal 0 1 -> -1 -cotx015 comparetotal 0 2 -> -1 -cotx016 comparetotal 1 -2 -> 1 -cotx017 comparetotal 1 -1 -> 1 -cotx018 comparetotal 1 0 -> 1 -cotx019 comparetotal 1 1 -> 0 -cotx020 comparetotal 1 2 -> -1 -cotx021 comparetotal 2 -2 -> 1 -cotx022 comparetotal 2 -1 -> 1 -cotx023 comparetotal 2 0 -> 1 -cotx025 comparetotal 2 1 -> 1 -cotx026 comparetotal 2 2 -> 0 - -cotx031 comparetotal -20 -20 -> 0 -cotx032 comparetotal -20 -10 -> -1 -cotx033 comparetotal -20 00 -> -1 -cotx034 comparetotal -20 10 -> -1 -cotx035 comparetotal -20 20 -> -1 -cotx036 comparetotal -10 -20 -> 1 -cotx037 comparetotal -10 -10 -> 0 -cotx038 comparetotal -10 00 -> -1 -cotx039 comparetotal -10 10 -> -1 -cotx040 comparetotal -10 20 -> -1 -cotx041 comparetotal 00 -20 -> 1 -cotx042 comparetotal 00 -10 -> 1 -cotx043 comparetotal 00 00 -> 0 -cotx044 comparetotal 00 10 -> -1 -cotx045 comparetotal 00 20 -> -1 -cotx046 comparetotal 10 -20 -> 1 -cotx047 comparetotal 10 -10 -> 1 -cotx048 comparetotal 10 00 -> 1 -cotx049 comparetotal 10 10 -> 0 -cotx050 comparetotal 10 20 -> -1 -cotx051 comparetotal 20 -20 -> 1 -cotx052 comparetotal 20 -10 -> 1 -cotx053 comparetotal 20 00 -> 1 -cotx055 comparetotal 20 10 -> 1 -cotx056 comparetotal 20 20 -> 0 - -cotx061 comparetotal -2.0 -2.0 -> 0 -cotx062 comparetotal -2.0 -1.0 -> -1 -cotx063 comparetotal -2.0 0.0 -> -1 -cotx064 comparetotal -2.0 1.0 -> -1 -cotx065 comparetotal -2.0 2.0 -> -1 -cotx066 comparetotal -1.0 -2.0 -> 1 -cotx067 comparetotal -1.0 -1.0 -> 0 -cotx068 comparetotal -1.0 0.0 -> -1 -cotx069 comparetotal -1.0 1.0 -> -1 -cotx070 comparetotal -1.0 2.0 -> -1 -cotx071 comparetotal 0.0 -2.0 -> 1 -cotx072 comparetotal 0.0 -1.0 -> 1 -cotx073 comparetotal 0.0 0.0 -> 0 -cotx074 comparetotal 0.0 1.0 -> -1 -cotx075 comparetotal 0.0 2.0 -> -1 -cotx076 comparetotal 1.0 -2.0 -> 1 -cotx077 comparetotal 1.0 -1.0 -> 1 -cotx078 comparetotal 1.0 0.0 -> 1 -cotx079 comparetotal 1.0 1.0 -> 0 -cotx080 comparetotal 1.0 2.0 -> -1 -cotx081 comparetotal 2.0 -2.0 -> 1 -cotx082 comparetotal 2.0 -1.0 -> 1 -cotx083 comparetotal 2.0 0.0 -> 1 -cotx085 comparetotal 2.0 1.0 -> 1 -cotx086 comparetotal 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -maxexponent: 999999999 -minexponent: -999999999 -cotx090 comparetotal 9.99999999E+999999999 9.99999999E+999999999 -> 0 -cotx091 comparetotal -9.99999999E+999999999 9.99999999E+999999999 -> -1 -cotx092 comparetotal 9.99999999E+999999999 -9.99999999E+999999999 -> 1 -cotx093 comparetotal -9.99999999E+999999999 -9.99999999E+999999999 -> 0 - --- Examples -cotx094 comparetotal 12.73 127.9 -> -1 -cotx095 comparetotal -127 12 -> -1 -cotx096 comparetotal 12.30 12.3 -> -1 -cotx097 comparetotal 12.30 12.30 -> 0 -cotx098 comparetotal 12.3 12.300 -> 1 -cotx099 comparetotal 12.3 NaN -> -1 - --- some differing length/exponent cases --- in this first group, compare would compare all equal -cotx100 comparetotal 7.0 7.0 -> 0 -cotx101 comparetotal 7.0 7 -> -1 -cotx102 comparetotal 7 7.0 -> 1 -cotx103 comparetotal 7E+0 7.0 -> 1 -cotx104 comparetotal 70E-1 7.0 -> 0 -cotx105 comparetotal 0.7E+1 7 -> 0 -cotx106 comparetotal 70E-1 7 -> -1 -cotx107 comparetotal 7.0 7E+0 -> -1 -cotx108 comparetotal 7.0 70E-1 -> 0 -cotx109 comparetotal 7 0.7E+1 -> 0 -cotx110 comparetotal 7 70E-1 -> 1 - -cotx120 comparetotal 8.0 7.0 -> 1 -cotx121 comparetotal 8.0 7 -> 1 -cotx122 comparetotal 8 7.0 -> 1 -cotx123 comparetotal 8E+0 7.0 -> 1 -cotx124 comparetotal 80E-1 7.0 -> 1 -cotx125 comparetotal 0.8E+1 7 -> 1 -cotx126 comparetotal 80E-1 7 -> 1 -cotx127 comparetotal 8.0 7E+0 -> 1 -cotx128 comparetotal 8.0 70E-1 -> 1 -cotx129 comparetotal 8 0.7E+1 -> 1 -cotx130 comparetotal 8 70E-1 -> 1 - -cotx140 comparetotal 8.0 9.0 -> -1 -cotx141 comparetotal 8.0 9 -> -1 -cotx142 comparetotal 8 9.0 -> -1 -cotx143 comparetotal 8E+0 9.0 -> -1 -cotx144 comparetotal 80E-1 9.0 -> -1 -cotx145 comparetotal 0.8E+1 9 -> -1 -cotx146 comparetotal 80E-1 9 -> -1 -cotx147 comparetotal 8.0 9E+0 -> -1 -cotx148 comparetotal 8.0 90E-1 -> -1 -cotx149 comparetotal 8 0.9E+1 -> -1 -cotx150 comparetotal 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -cotx200 comparetotal -7.0 7.0 -> -1 -cotx201 comparetotal -7.0 7 -> -1 -cotx202 comparetotal -7 7.0 -> -1 -cotx203 comparetotal -7E+0 7.0 -> -1 -cotx204 comparetotal -70E-1 7.0 -> -1 -cotx205 comparetotal -0.7E+1 7 -> -1 -cotx206 comparetotal -70E-1 7 -> -1 -cotx207 comparetotal -7.0 7E+0 -> -1 -cotx208 comparetotal -7.0 70E-1 -> -1 -cotx209 comparetotal -7 0.7E+1 -> -1 -cotx210 comparetotal -7 70E-1 -> -1 - -cotx220 comparetotal -8.0 7.0 -> -1 -cotx221 comparetotal -8.0 7 -> -1 -cotx222 comparetotal -8 7.0 -> -1 -cotx223 comparetotal -8E+0 7.0 -> -1 -cotx224 comparetotal -80E-1 7.0 -> -1 -cotx225 comparetotal -0.8E+1 7 -> -1 -cotx226 comparetotal -80E-1 7 -> -1 -cotx227 comparetotal -8.0 7E+0 -> -1 -cotx228 comparetotal -8.0 70E-1 -> -1 -cotx229 comparetotal -8 0.7E+1 -> -1 -cotx230 comparetotal -8 70E-1 -> -1 - -cotx240 comparetotal -8.0 9.0 -> -1 -cotx241 comparetotal -8.0 9 -> -1 -cotx242 comparetotal -8 9.0 -> -1 -cotx243 comparetotal -8E+0 9.0 -> -1 -cotx244 comparetotal -80E-1 9.0 -> -1 -cotx245 comparetotal -0.8E+1 9 -> -1 -cotx246 comparetotal -80E-1 9 -> -1 -cotx247 comparetotal -8.0 9E+0 -> -1 -cotx248 comparetotal -8.0 90E-1 -> -1 -cotx249 comparetotal -8 0.9E+1 -> -1 -cotx250 comparetotal -8 90E-1 -> -1 - --- and again, with sign changes +- .. -cotx300 comparetotal 7.0 -7.0 -> 1 -cotx301 comparetotal 7.0 -7 -> 1 -cotx302 comparetotal 7 -7.0 -> 1 -cotx303 comparetotal 7E+0 -7.0 -> 1 -cotx304 comparetotal 70E-1 -7.0 -> 1 -cotx305 comparetotal .7E+1 -7 -> 1 -cotx306 comparetotal 70E-1 -7 -> 1 -cotx307 comparetotal 7.0 -7E+0 -> 1 -cotx308 comparetotal 7.0 -70E-1 -> 1 -cotx309 comparetotal 7 -.7E+1 -> 1 -cotx310 comparetotal 7 -70E-1 -> 1 - -cotx320 comparetotal 8.0 -7.0 -> 1 -cotx321 comparetotal 8.0 -7 -> 1 -cotx322 comparetotal 8 -7.0 -> 1 -cotx323 comparetotal 8E+0 -7.0 -> 1 -cotx324 comparetotal 80E-1 -7.0 -> 1 -cotx325 comparetotal .8E+1 -7 -> 1 -cotx326 comparetotal 80E-1 -7 -> 1 -cotx327 comparetotal 8.0 -7E+0 -> 1 -cotx328 comparetotal 8.0 -70E-1 -> 1 -cotx329 comparetotal 8 -.7E+1 -> 1 -cotx330 comparetotal 8 -70E-1 -> 1 - -cotx340 comparetotal 8.0 -9.0 -> 1 -cotx341 comparetotal 8.0 -9 -> 1 -cotx342 comparetotal 8 -9.0 -> 1 -cotx343 comparetotal 8E+0 -9.0 -> 1 -cotx344 comparetotal 80E-1 -9.0 -> 1 -cotx345 comparetotal .8E+1 -9 -> 1 -cotx346 comparetotal 80E-1 -9 -> 1 -cotx347 comparetotal 8.0 -9E+0 -> 1 -cotx348 comparetotal 8.0 -90E-1 -> 1 -cotx349 comparetotal 8 -.9E+1 -> 1 -cotx350 comparetotal 8 -90E-1 -> 1 - --- and again, with sign changes -- .. -cotx400 comparetotal -7.0 -7.0 -> 0 -cotx401 comparetotal -7.0 -7 -> 1 -cotx402 comparetotal -7 -7.0 -> -1 -cotx403 comparetotal -7E+0 -7.0 -> -1 -cotx404 comparetotal -70E-1 -7.0 -> 0 -cotx405 comparetotal -.7E+1 -7 -> 0 -cotx406 comparetotal -70E-1 -7 -> 1 -cotx407 comparetotal -7.0 -7E+0 -> 1 -cotx408 comparetotal -7.0 -70E-1 -> 0 -cotx409 comparetotal -7 -.7E+1 -> 0 -cotx410 comparetotal -7 -70E-1 -> -1 - -cotx420 comparetotal -8.0 -7.0 -> -1 -cotx421 comparetotal -8.0 -7 -> -1 -cotx422 comparetotal -8 -7.0 -> -1 -cotx423 comparetotal -8E+0 -7.0 -> -1 -cotx424 comparetotal -80E-1 -7.0 -> -1 -cotx425 comparetotal -.8E+1 -7 -> -1 -cotx426 comparetotal -80E-1 -7 -> -1 -cotx427 comparetotal -8.0 -7E+0 -> -1 -cotx428 comparetotal -8.0 -70E-1 -> -1 -cotx429 comparetotal -8 -.7E+1 -> -1 -cotx430 comparetotal -8 -70E-1 -> -1 - -cotx440 comparetotal -8.0 -9.0 -> 1 -cotx441 comparetotal -8.0 -9 -> 1 -cotx442 comparetotal -8 -9.0 -> 1 -cotx443 comparetotal -8E+0 -9.0 -> 1 -cotx444 comparetotal -80E-1 -9.0 -> 1 -cotx445 comparetotal -.8E+1 -9 -> 1 -cotx446 comparetotal -80E-1 -9 -> 1 -cotx447 comparetotal -8.0 -9E+0 -> 1 -cotx448 comparetotal -8.0 -90E-1 -> 1 -cotx449 comparetotal -8 -.9E+1 -> 1 -cotx450 comparetotal -8 -90E-1 -> 1 - - --- testcases that subtract to lots of zeros at boundaries [pgr] -precision: 40 -cotx470 comparetotal 123.4560000000000000E789 123.456E789 -> -1 -cotx471 comparetotal 123.456000000000000E-89 123.456E-89 -> -1 -cotx472 comparetotal 123.45600000000000E789 123.456E789 -> -1 -cotx473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1 -cotx474 comparetotal 123.456000000000E789 123.456E789 -> -1 -cotx475 comparetotal 123.45600000000E-89 123.456E-89 -> -1 -cotx476 comparetotal 123.4560000000E789 123.456E789 -> -1 -cotx477 comparetotal 123.456000000E-89 123.456E-89 -> -1 -cotx478 comparetotal 123.45600000E789 123.456E789 -> -1 -cotx479 comparetotal 123.4560000E-89 123.456E-89 -> -1 -cotx480 comparetotal 123.456000E789 123.456E789 -> -1 -cotx481 comparetotal 123.45600E-89 123.456E-89 -> -1 -cotx482 comparetotal 123.4560E789 123.456E789 -> -1 -cotx483 comparetotal 123.456E-89 123.456E-89 -> 0 -cotx484 comparetotal 123.456E-89 123.4560000000000000E-89 -> 1 -cotx485 comparetotal 123.456E789 123.456000000000000E789 -> 1 -cotx486 comparetotal 123.456E-89 123.45600000000000E-89 -> 1 -cotx487 comparetotal 123.456E789 123.4560000000000E789 -> 1 -cotx488 comparetotal 123.456E-89 123.456000000000E-89 -> 1 -cotx489 comparetotal 123.456E789 123.45600000000E789 -> 1 -cotx490 comparetotal 123.456E-89 123.4560000000E-89 -> 1 -cotx491 comparetotal 123.456E789 123.456000000E789 -> 1 -cotx492 comparetotal 123.456E-89 123.45600000E-89 -> 1 -cotx493 comparetotal 123.456E789 123.4560000E789 -> 1 -cotx494 comparetotal 123.456E-89 123.456000E-89 -> 1 -cotx495 comparetotal 123.456E789 123.45600E789 -> 1 -cotx496 comparetotal 123.456E-89 123.4560E-89 -> 1 -cotx497 comparetotal 123.456E789 123.456E789 -> 0 - --- wide-ranging, around precision; signs equal -precision: 9 -cotx500 comparetotal 1 1E-15 -> 1 -cotx501 comparetotal 1 1E-14 -> 1 -cotx502 comparetotal 1 1E-13 -> 1 -cotx503 comparetotal 1 1E-12 -> 1 -cotx504 comparetotal 1 1E-11 -> 1 -cotx505 comparetotal 1 1E-10 -> 1 -cotx506 comparetotal 1 1E-9 -> 1 -cotx507 comparetotal 1 1E-8 -> 1 -cotx508 comparetotal 1 1E-7 -> 1 -cotx509 comparetotal 1 1E-6 -> 1 -cotx510 comparetotal 1 1E-5 -> 1 -cotx511 comparetotal 1 1E-4 -> 1 -cotx512 comparetotal 1 1E-3 -> 1 -cotx513 comparetotal 1 1E-2 -> 1 -cotx514 comparetotal 1 1E-1 -> 1 -cotx515 comparetotal 1 1E-0 -> 0 -cotx516 comparetotal 1 1E+1 -> -1 -cotx517 comparetotal 1 1E+2 -> -1 -cotx518 comparetotal 1 1E+3 -> -1 -cotx519 comparetotal 1 1E+4 -> -1 -cotx521 comparetotal 1 1E+5 -> -1 -cotx522 comparetotal 1 1E+6 -> -1 -cotx523 comparetotal 1 1E+7 -> -1 -cotx524 comparetotal 1 1E+8 -> -1 -cotx525 comparetotal 1 1E+9 -> -1 -cotx526 comparetotal 1 1E+10 -> -1 -cotx527 comparetotal 1 1E+11 -> -1 -cotx528 comparetotal 1 1E+12 -> -1 -cotx529 comparetotal 1 1E+13 -> -1 -cotx530 comparetotal 1 1E+14 -> -1 -cotx531 comparetotal 1 1E+15 -> -1 --- LR swap -cotx540 comparetotal 1E-15 1 -> -1 -cotx541 comparetotal 1E-14 1 -> -1 -cotx542 comparetotal 1E-13 1 -> -1 -cotx543 comparetotal 1E-12 1 -> -1 -cotx544 comparetotal 1E-11 1 -> -1 -cotx545 comparetotal 1E-10 1 -> -1 -cotx546 comparetotal 1E-9 1 -> -1 -cotx547 comparetotal 1E-8 1 -> -1 -cotx548 comparetotal 1E-7 1 -> -1 -cotx549 comparetotal 1E-6 1 -> -1 -cotx550 comparetotal 1E-5 1 -> -1 -cotx551 comparetotal 1E-4 1 -> -1 -cotx552 comparetotal 1E-3 1 -> -1 -cotx553 comparetotal 1E-2 1 -> -1 -cotx554 comparetotal 1E-1 1 -> -1 -cotx555 comparetotal 1E-0 1 -> 0 -cotx556 comparetotal 1E+1 1 -> 1 -cotx557 comparetotal 1E+2 1 -> 1 -cotx558 comparetotal 1E+3 1 -> 1 -cotx559 comparetotal 1E+4 1 -> 1 -cotx561 comparetotal 1E+5 1 -> 1 -cotx562 comparetotal 1E+6 1 -> 1 -cotx563 comparetotal 1E+7 1 -> 1 -cotx564 comparetotal 1E+8 1 -> 1 -cotx565 comparetotal 1E+9 1 -> 1 -cotx566 comparetotal 1E+10 1 -> 1 -cotx567 comparetotal 1E+11 1 -> 1 -cotx568 comparetotal 1E+12 1 -> 1 -cotx569 comparetotal 1E+13 1 -> 1 -cotx570 comparetotal 1E+14 1 -> 1 -cotx571 comparetotal 1E+15 1 -> 1 --- similar with an useful coefficient, one side only -cotx580 comparetotal 0.000000987654321 1E-15 -> 1 -cotx581 comparetotal 0.000000987654321 1E-14 -> 1 -cotx582 comparetotal 0.000000987654321 1E-13 -> 1 -cotx583 comparetotal 0.000000987654321 1E-12 -> 1 -cotx584 comparetotal 0.000000987654321 1E-11 -> 1 -cotx585 comparetotal 0.000000987654321 1E-10 -> 1 -cotx586 comparetotal 0.000000987654321 1E-9 -> 1 -cotx587 comparetotal 0.000000987654321 1E-8 -> 1 -cotx588 comparetotal 0.000000987654321 1E-7 -> 1 -cotx589 comparetotal 0.000000987654321 1E-6 -> -1 -cotx590 comparetotal 0.000000987654321 1E-5 -> -1 -cotx591 comparetotal 0.000000987654321 1E-4 -> -1 -cotx592 comparetotal 0.000000987654321 1E-3 -> -1 -cotx593 comparetotal 0.000000987654321 1E-2 -> -1 -cotx594 comparetotal 0.000000987654321 1E-1 -> -1 -cotx595 comparetotal 0.000000987654321 1E-0 -> -1 -cotx596 comparetotal 0.000000987654321 1E+1 -> -1 -cotx597 comparetotal 0.000000987654321 1E+2 -> -1 -cotx598 comparetotal 0.000000987654321 1E+3 -> -1 -cotx599 comparetotal 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -precision: 20 -cotx600 comparetotal 12 12.2345 -> -1 -cotx601 comparetotal 12.0 12.2345 -> -1 -cotx602 comparetotal 12.00 12.2345 -> -1 -cotx603 comparetotal 12.000 12.2345 -> -1 -cotx604 comparetotal 12.0000 12.2345 -> -1 -cotx605 comparetotal 12.00000 12.2345 -> -1 -cotx606 comparetotal 12.000000 12.2345 -> -1 -cotx607 comparetotal 12.0000000 12.2345 -> -1 -cotx608 comparetotal 12.00000000 12.2345 -> -1 -cotx609 comparetotal 12.000000000 12.2345 -> -1 -cotx610 comparetotal 12.1234 12 -> 1 -cotx611 comparetotal 12.1234 12.0 -> 1 -cotx612 comparetotal 12.1234 12.00 -> 1 -cotx613 comparetotal 12.1234 12.000 -> 1 -cotx614 comparetotal 12.1234 12.0000 -> 1 -cotx615 comparetotal 12.1234 12.00000 -> 1 -cotx616 comparetotal 12.1234 12.000000 -> 1 -cotx617 comparetotal 12.1234 12.0000000 -> 1 -cotx618 comparetotal 12.1234 12.00000000 -> 1 -cotx619 comparetotal 12.1234 12.000000000 -> 1 -cotx620 comparetotal -12 -12.2345 -> 1 -cotx621 comparetotal -12.0 -12.2345 -> 1 -cotx622 comparetotal -12.00 -12.2345 -> 1 -cotx623 comparetotal -12.000 -12.2345 -> 1 -cotx624 comparetotal -12.0000 -12.2345 -> 1 -cotx625 comparetotal -12.00000 -12.2345 -> 1 -cotx626 comparetotal -12.000000 -12.2345 -> 1 -cotx627 comparetotal -12.0000000 -12.2345 -> 1 -cotx628 comparetotal -12.00000000 -12.2345 -> 1 -cotx629 comparetotal -12.000000000 -12.2345 -> 1 -cotx630 comparetotal -12.1234 -12 -> -1 -cotx631 comparetotal -12.1234 -12.0 -> -1 -cotx632 comparetotal -12.1234 -12.00 -> -1 -cotx633 comparetotal -12.1234 -12.000 -> -1 -cotx634 comparetotal -12.1234 -12.0000 -> -1 -cotx635 comparetotal -12.1234 -12.00000 -> -1 -cotx636 comparetotal -12.1234 -12.000000 -> -1 -cotx637 comparetotal -12.1234 -12.0000000 -> -1 -cotx638 comparetotal -12.1234 -12.00000000 -> -1 -cotx639 comparetotal -12.1234 -12.000000000 -> -1 -precision: 9 - --- extended zeros -cotx640 comparetotal 0 0 -> 0 -cotx641 comparetotal 0 -0 -> 1 -cotx642 comparetotal 0 -0.0 -> 1 -cotx643 comparetotal 0 0.0 -> 1 -cotx644 comparetotal -0 0 -> -1 -cotx645 comparetotal -0 -0 -> 0 -cotx646 comparetotal -0 -0.0 -> -1 -cotx647 comparetotal -0 0.0 -> -1 -cotx648 comparetotal 0.0 0 -> -1 -cotx649 comparetotal 0.0 -0 -> 1 -cotx650 comparetotal 0.0 -0.0 -> 1 -cotx651 comparetotal 0.0 0.0 -> 0 -cotx652 comparetotal -0.0 0 -> -1 -cotx653 comparetotal -0.0 -0 -> 1 -cotx654 comparetotal -0.0 -0.0 -> 0 -cotx655 comparetotal -0.0 0.0 -> -1 - -cotx656 comparetotal -0E1 0.0 -> -1 -cotx657 comparetotal -0E2 0.0 -> -1 -cotx658 comparetotal 0E1 0.0 -> 1 -cotx659 comparetotal 0E2 0.0 -> 1 -cotx660 comparetotal -0E1 0 -> -1 -cotx661 comparetotal -0E2 0 -> -1 -cotx662 comparetotal 0E1 0 -> 1 -cotx663 comparetotal 0E2 0 -> 1 -cotx664 comparetotal -0E1 -0E1 -> 0 -cotx665 comparetotal -0E2 -0E1 -> -1 -cotx666 comparetotal 0E1 -0E1 -> 1 -cotx667 comparetotal 0E2 -0E1 -> 1 -cotx668 comparetotal -0E1 -0E2 -> 1 -cotx669 comparetotal -0E2 -0E2 -> 0 -cotx670 comparetotal 0E1 -0E2 -> 1 -cotx671 comparetotal 0E2 -0E2 -> 1 -cotx672 comparetotal -0E1 0E1 -> -1 -cotx673 comparetotal -0E2 0E1 -> -1 -cotx674 comparetotal 0E1 0E1 -> 0 -cotx675 comparetotal 0E2 0E1 -> 1 -cotx676 comparetotal -0E1 0E2 -> -1 -cotx677 comparetotal -0E2 0E2 -> -1 -cotx678 comparetotal 0E1 0E2 -> -1 -cotx679 comparetotal 0E2 0E2 -> 0 - --- trailing zeros; unit-y -precision: 20 -cotx680 comparetotal 12 12 -> 0 -cotx681 comparetotal 12 12.0 -> 1 -cotx682 comparetotal 12 12.00 -> 1 -cotx683 comparetotal 12 12.000 -> 1 -cotx684 comparetotal 12 12.0000 -> 1 -cotx685 comparetotal 12 12.00000 -> 1 -cotx686 comparetotal 12 12.000000 -> 1 -cotx687 comparetotal 12 12.0000000 -> 1 -cotx688 comparetotal 12 12.00000000 -> 1 -cotx689 comparetotal 12 12.000000000 -> 1 -cotx690 comparetotal 12 12 -> 0 -cotx691 comparetotal 12.0 12 -> -1 -cotx692 comparetotal 12.00 12 -> -1 -cotx693 comparetotal 12.000 12 -> -1 -cotx694 comparetotal 12.0000 12 -> -1 -cotx695 comparetotal 12.00000 12 -> -1 -cotx696 comparetotal 12.000000 12 -> -1 -cotx697 comparetotal 12.0000000 12 -> -1 -cotx698 comparetotal 12.00000000 12 -> -1 -cotx699 comparetotal 12.000000000 12 -> -1 - --- long operand checks -maxexponent: 999 -minexponent: -999 -precision: 9 -cotx701 comparetotal 12345678000 1 -> 1 -cotx702 comparetotal 1 12345678000 -> -1 -cotx703 comparetotal 1234567800 1 -> 1 -cotx704 comparetotal 1 1234567800 -> -1 -cotx705 comparetotal 1234567890 1 -> 1 -cotx706 comparetotal 1 1234567890 -> -1 -cotx707 comparetotal 1234567891 1 -> 1 -cotx708 comparetotal 1 1234567891 -> -1 -cotx709 comparetotal 12345678901 1 -> 1 -cotx710 comparetotal 1 12345678901 -> -1 -cotx711 comparetotal 1234567896 1 -> 1 -cotx712 comparetotal 1 1234567896 -> -1 -cotx713 comparetotal -1234567891 1 -> -1 -cotx714 comparetotal 1 -1234567891 -> 1 -cotx715 comparetotal -12345678901 1 -> -1 -cotx716 comparetotal 1 -12345678901 -> 1 -cotx717 comparetotal -1234567896 1 -> -1 -cotx718 comparetotal 1 -1234567896 -> 1 - -precision: 15 --- same with plenty of precision -cotx721 comparetotal 12345678000 1 -> 1 -cotx722 comparetotal 1 12345678000 -> -1 -cotx723 comparetotal 1234567800 1 -> 1 -cotx724 comparetotal 1 1234567800 -> -1 -cotx725 comparetotal 1234567890 1 -> 1 -cotx726 comparetotal 1 1234567890 -> -1 -cotx727 comparetotal 1234567891 1 -> 1 -cotx728 comparetotal 1 1234567891 -> -1 -cotx729 comparetotal 12345678901 1 -> 1 -cotx730 comparetotal 1 12345678901 -> -1 -cotx731 comparetotal 1234567896 1 -> 1 -cotx732 comparetotal 1 1234567896 -> -1 - --- residue cases -precision: 5 -cotx740 comparetotal 1 0.9999999 -> 1 -cotx741 comparetotal 1 0.999999 -> 1 -cotx742 comparetotal 1 0.99999 -> 1 -cotx743 comparetotal 1 1.0000 -> 1 -cotx744 comparetotal 1 1.00001 -> -1 -cotx745 comparetotal 1 1.000001 -> -1 -cotx746 comparetotal 1 1.0000001 -> -1 -cotx750 comparetotal 0.9999999 1 -> -1 -cotx751 comparetotal 0.999999 1 -> -1 -cotx752 comparetotal 0.99999 1 -> -1 -cotx753 comparetotal 1.0000 1 -> -1 -cotx754 comparetotal 1.00001 1 -> 1 -cotx755 comparetotal 1.000001 1 -> 1 -cotx756 comparetotal 1.0000001 1 -> 1 - --- a selection of longies -cotx760 comparetotal -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1 -cotx761 comparetotal -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0 -cotx762 comparetotal -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> -1 -cotx763 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 --- precisions above or below the difference should have no effect -precision: 11 -cotx764 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 10 -cotx765 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 9 -cotx766 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 8 -cotx767 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 7 -cotx768 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 6 -cotx769 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 5 -cotx770 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 4 -cotx771 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 3 -cotx772 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 2 -cotx773 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 -precision: 1 -cotx774 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 - --- Specials -precision: 9 -cotx780 comparetotal Inf -Inf -> 1 -cotx781 comparetotal Inf -1000 -> 1 -cotx782 comparetotal Inf -1 -> 1 -cotx783 comparetotal Inf -0 -> 1 -cotx784 comparetotal Inf 0 -> 1 -cotx785 comparetotal Inf 1 -> 1 -cotx786 comparetotal Inf 1000 -> 1 -cotx787 comparetotal Inf Inf -> 0 -cotx788 comparetotal -1000 Inf -> -1 -cotx789 comparetotal -Inf Inf -> -1 -cotx790 comparetotal -1 Inf -> -1 -cotx791 comparetotal -0 Inf -> -1 -cotx792 comparetotal 0 Inf -> -1 -cotx793 comparetotal 1 Inf -> -1 -cotx794 comparetotal 1000 Inf -> -1 -cotx795 comparetotal Inf Inf -> 0 - -cotx800 comparetotal -Inf -Inf -> 0 -cotx801 comparetotal -Inf -1000 -> -1 -cotx802 comparetotal -Inf -1 -> -1 -cotx803 comparetotal -Inf -0 -> -1 -cotx804 comparetotal -Inf 0 -> -1 -cotx805 comparetotal -Inf 1 -> -1 -cotx806 comparetotal -Inf 1000 -> -1 -cotx807 comparetotal -Inf Inf -> -1 -cotx808 comparetotal -Inf -Inf -> 0 -cotx809 comparetotal -1000 -Inf -> 1 -cotx810 comparetotal -1 -Inf -> 1 -cotx811 comparetotal -0 -Inf -> 1 -cotx812 comparetotal 0 -Inf -> 1 -cotx813 comparetotal 1 -Inf -> 1 -cotx814 comparetotal 1000 -Inf -> 1 -cotx815 comparetotal Inf -Inf -> 1 - -cotx821 comparetotal NaN -Inf -> 1 -cotx822 comparetotal NaN -1000 -> 1 -cotx823 comparetotal NaN -1 -> 1 -cotx824 comparetotal NaN -0 -> 1 -cotx825 comparetotal NaN 0 -> 1 -cotx826 comparetotal NaN 1 -> 1 -cotx827 comparetotal NaN 1000 -> 1 -cotx828 comparetotal NaN Inf -> 1 -cotx829 comparetotal NaN NaN -> 0 -cotx830 comparetotal -Inf NaN -> -1 -cotx831 comparetotal -1000 NaN -> -1 -cotx832 comparetotal -1 NaN -> -1 -cotx833 comparetotal -0 NaN -> -1 -cotx834 comparetotal 0 NaN -> -1 -cotx835 comparetotal 1 NaN -> -1 -cotx836 comparetotal 1000 NaN -> -1 -cotx837 comparetotal Inf NaN -> -1 -cotx838 comparetotal -NaN -NaN -> 0 -cotx839 comparetotal +NaN -NaN -> 1 -cotx840 comparetotal -NaN +NaN -> -1 - -cotx841 comparetotal sNaN -sNaN -> 1 -cotx842 comparetotal sNaN -NaN -> 1 -cotx843 comparetotal sNaN -Inf -> 1 -cotx844 comparetotal sNaN -1000 -> 1 -cotx845 comparetotal sNaN -1 -> 1 -cotx846 comparetotal sNaN -0 -> 1 -cotx847 comparetotal sNaN 0 -> 1 -cotx848 comparetotal sNaN 1 -> 1 -cotx849 comparetotal sNaN 1000 -> 1 -cotx850 comparetotal sNaN NaN -> -1 -cotx851 comparetotal sNaN sNaN -> 0 - -cotx852 comparetotal -sNaN sNaN -> -1 -cotx853 comparetotal -NaN sNaN -> -1 -cotx854 comparetotal -Inf sNaN -> -1 -cotx855 comparetotal -1000 sNaN -> -1 -cotx856 comparetotal -1 sNaN -> -1 -cotx857 comparetotal -0 sNaN -> -1 -cotx858 comparetotal 0 sNaN -> -1 -cotx859 comparetotal 1 sNaN -> -1 -cotx860 comparetotal 1000 sNaN -> -1 -cotx861 comparetotal Inf sNaN -> -1 -cotx862 comparetotal NaN sNaN -> 1 -cotx863 comparetotal sNaN sNaN -> 0 - -cotx871 comparetotal -sNaN -sNaN -> 0 -cotx872 comparetotal -sNaN -NaN -> 1 -cotx873 comparetotal -sNaN -Inf -> -1 -cotx874 comparetotal -sNaN -1000 -> -1 -cotx875 comparetotal -sNaN -1 -> -1 -cotx876 comparetotal -sNaN -0 -> -1 -cotx877 comparetotal -sNaN 0 -> -1 -cotx878 comparetotal -sNaN 1 -> -1 -cotx879 comparetotal -sNaN 1000 -> -1 -cotx880 comparetotal -sNaN NaN -> -1 -cotx881 comparetotal -sNaN sNaN -> -1 - -cotx882 comparetotal -sNaN -sNaN -> 0 -cotx883 comparetotal -NaN -sNaN -> -1 -cotx884 comparetotal -Inf -sNaN -> 1 -cotx885 comparetotal -1000 -sNaN -> 1 -cotx886 comparetotal -1 -sNaN -> 1 -cotx887 comparetotal -0 -sNaN -> 1 -cotx888 comparetotal 0 -sNaN -> 1 -cotx889 comparetotal 1 -sNaN -> 1 -cotx890 comparetotal 1000 -sNaN -> 1 -cotx891 comparetotal Inf -sNaN -> 1 -cotx892 comparetotal NaN -sNaN -> 1 -cotx893 comparetotal sNaN -sNaN -> 1 - --- NaNs with payload -cotx960 comparetotal NaN9 -Inf -> 1 -cotx961 comparetotal NaN8 999 -> 1 -cotx962 comparetotal NaN77 Inf -> 1 -cotx963 comparetotal -NaN67 NaN5 -> -1 -cotx964 comparetotal -Inf -NaN4 -> 1 -cotx965 comparetotal -999 -NaN33 -> 1 -cotx966 comparetotal Inf NaN2 -> -1 - -cotx970 comparetotal -NaN41 -NaN42 -> 1 -cotx971 comparetotal +NaN41 -NaN42 -> 1 -cotx972 comparetotal -NaN41 +NaN42 -> -1 -cotx973 comparetotal +NaN41 +NaN42 -> -1 -cotx974 comparetotal -NaN42 -NaN01 -> -1 -cotx975 comparetotal +NaN42 -NaN01 -> 1 -cotx976 comparetotal -NaN42 +NaN01 -> -1 -cotx977 comparetotal +NaN42 +NaN01 -> 1 - -cotx980 comparetotal -sNaN771 -sNaN772 -> 1 -cotx981 comparetotal +sNaN771 -sNaN772 -> 1 -cotx982 comparetotal -sNaN771 +sNaN772 -> -1 -cotx983 comparetotal +sNaN771 +sNaN772 -> -1 -cotx984 comparetotal -sNaN772 -sNaN771 -> -1 -cotx985 comparetotal +sNaN772 -sNaN771 -> 1 -cotx986 comparetotal -sNaN772 +sNaN771 -> -1 -cotx987 comparetotal +sNaN772 +sNaN771 -> 1 - -cotx991 comparetotal -sNaN99 -Inf -> -1 -cotx992 comparetotal sNaN98 -11 -> 1 -cotx993 comparetotal sNaN97 NaN -> -1 -cotx994 comparetotal sNaN16 sNaN94 -> -1 -cotx995 comparetotal NaN85 sNaN83 -> 1 -cotx996 comparetotal -Inf sNaN92 -> -1 -cotx997 comparetotal 088 sNaN81 -> -1 -cotx998 comparetotal Inf sNaN90 -> -1 -cotx999 comparetotal NaN -sNaN89 -> 1 - --- overflow and underflow tests .. subnormal results now allowed -maxExponent: 999999999 -minexponent: -999999999 -cotx1080 comparetotal +1.23456789012345E-0 9E+999999999 -> -1 -cotx1081 comparetotal 9E+999999999 +1.23456789012345E-0 -> 1 -cotx1082 comparetotal +0.100 9E-999999999 -> 1 -cotx1083 comparetotal 9E-999999999 +0.100 -> -1 -cotx1085 comparetotal -1.23456789012345E-0 9E+999999999 -> -1 -cotx1086 comparetotal 9E+999999999 -1.23456789012345E-0 -> 1 -cotx1087 comparetotal -0.100 9E-999999999 -> -1 -cotx1088 comparetotal 9E-999999999 -0.100 -> 1 - -cotx1089 comparetotal 1e-599999999 1e-400000001 -> -1 -cotx1090 comparetotal 1e-599999999 1e-400000000 -> -1 -cotx1091 comparetotal 1e-600000000 1e-400000000 -> -1 -cotx1092 comparetotal 9e-999999998 0.01 -> -1 -cotx1093 comparetotal 9e-999999998 0.1 -> -1 -cotx1094 comparetotal 0.01 9e-999999998 -> 1 -cotx1095 comparetotal 1e599999999 1e400000001 -> 1 -cotx1096 comparetotal 1e599999999 1e400000000 -> 1 -cotx1097 comparetotal 1e600000000 1e400000000 -> 1 -cotx1098 comparetotal 9e999999998 100 -> 1 -cotx1099 comparetotal 9e999999998 10 -> 1 -cotx1100 comparetotal 100 9e999999998 -> -1 --- signs -cotx1101 comparetotal 1e+777777777 1e+411111111 -> 1 -cotx1102 comparetotal 1e+777777777 -1e+411111111 -> 1 -cotx1103 comparetotal -1e+777777777 1e+411111111 -> -1 -cotx1104 comparetotal -1e+777777777 -1e+411111111 -> -1 -cotx1105 comparetotal 1e-777777777 1e-411111111 -> -1 -cotx1106 comparetotal 1e-777777777 -1e-411111111 -> 1 -cotx1107 comparetotal -1e-777777777 1e-411111111 -> -1 -cotx1108 comparetotal -1e-777777777 -1e-411111111 -> 1 - --- spread zeros -cotx1110 comparetotal 0E-383 0 -> -1 -cotx1111 comparetotal 0E-383 -0 -> 1 -cotx1112 comparetotal -0E-383 0 -> -1 -cotx1113 comparetotal -0E-383 -0 -> 1 -cotx1114 comparetotal 0E-383 0E+384 -> -1 -cotx1115 comparetotal 0E-383 -0E+384 -> 1 -cotx1116 comparetotal -0E-383 0E+384 -> -1 -cotx1117 comparetotal -0E-383 -0E+384 -> 1 -cotx1118 comparetotal 0 0E+384 -> -1 -cotx1119 comparetotal 0 -0E+384 -> 1 -cotx1120 comparetotal -0 0E+384 -> -1 -cotx1121 comparetotal -0 -0E+384 -> 1 - -cotx1130 comparetotal 0E+384 0 -> 1 -cotx1131 comparetotal 0E+384 -0 -> 1 -cotx1132 comparetotal -0E+384 0 -> -1 -cotx1133 comparetotal -0E+384 -0 -> -1 -cotx1134 comparetotal 0E+384 0E-383 -> 1 -cotx1135 comparetotal 0E+384 -0E-383 -> 1 -cotx1136 comparetotal -0E+384 0E-383 -> -1 -cotx1137 comparetotal -0E+384 -0E-383 -> -1 -cotx1138 comparetotal 0 0E-383 -> 1 -cotx1139 comparetotal 0 -0E-383 -> 1 -cotx1140 comparetotal -0 0E-383 -> -1 -cotx1141 comparetotal -0 -0E-383 -> -1 - --- Null tests -cotx9990 comparetotal 10 # -> NaN Invalid_operation -cotx9991 comparetotal # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- comparetotal.decTest -- decimal comparison using total ordering -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). +-- Similarly, comparetotal will have some radically different paths +-- than compare. + +extended: 1 +precision: 16 +rounding: half_up +maxExponent: 384 +minExponent: -383 + +-- sanity checks +cotx001 comparetotal -2 -2 -> 0 +cotx002 comparetotal -2 -1 -> -1 +cotx003 comparetotal -2 0 -> -1 +cotx004 comparetotal -2 1 -> -1 +cotx005 comparetotal -2 2 -> -1 +cotx006 comparetotal -1 -2 -> 1 +cotx007 comparetotal -1 -1 -> 0 +cotx008 comparetotal -1 0 -> -1 +cotx009 comparetotal -1 1 -> -1 +cotx010 comparetotal -1 2 -> -1 +cotx011 comparetotal 0 -2 -> 1 +cotx012 comparetotal 0 -1 -> 1 +cotx013 comparetotal 0 0 -> 0 +cotx014 comparetotal 0 1 -> -1 +cotx015 comparetotal 0 2 -> -1 +cotx016 comparetotal 1 -2 -> 1 +cotx017 comparetotal 1 -1 -> 1 +cotx018 comparetotal 1 0 -> 1 +cotx019 comparetotal 1 1 -> 0 +cotx020 comparetotal 1 2 -> -1 +cotx021 comparetotal 2 -2 -> 1 +cotx022 comparetotal 2 -1 -> 1 +cotx023 comparetotal 2 0 -> 1 +cotx025 comparetotal 2 1 -> 1 +cotx026 comparetotal 2 2 -> 0 + +cotx031 comparetotal -20 -20 -> 0 +cotx032 comparetotal -20 -10 -> -1 +cotx033 comparetotal -20 00 -> -1 +cotx034 comparetotal -20 10 -> -1 +cotx035 comparetotal -20 20 -> -1 +cotx036 comparetotal -10 -20 -> 1 +cotx037 comparetotal -10 -10 -> 0 +cotx038 comparetotal -10 00 -> -1 +cotx039 comparetotal -10 10 -> -1 +cotx040 comparetotal -10 20 -> -1 +cotx041 comparetotal 00 -20 -> 1 +cotx042 comparetotal 00 -10 -> 1 +cotx043 comparetotal 00 00 -> 0 +cotx044 comparetotal 00 10 -> -1 +cotx045 comparetotal 00 20 -> -1 +cotx046 comparetotal 10 -20 -> 1 +cotx047 comparetotal 10 -10 -> 1 +cotx048 comparetotal 10 00 -> 1 +cotx049 comparetotal 10 10 -> 0 +cotx050 comparetotal 10 20 -> -1 +cotx051 comparetotal 20 -20 -> 1 +cotx052 comparetotal 20 -10 -> 1 +cotx053 comparetotal 20 00 -> 1 +cotx055 comparetotal 20 10 -> 1 +cotx056 comparetotal 20 20 -> 0 + +cotx061 comparetotal -2.0 -2.0 -> 0 +cotx062 comparetotal -2.0 -1.0 -> -1 +cotx063 comparetotal -2.0 0.0 -> -1 +cotx064 comparetotal -2.0 1.0 -> -1 +cotx065 comparetotal -2.0 2.0 -> -1 +cotx066 comparetotal -1.0 -2.0 -> 1 +cotx067 comparetotal -1.0 -1.0 -> 0 +cotx068 comparetotal -1.0 0.0 -> -1 +cotx069 comparetotal -1.0 1.0 -> -1 +cotx070 comparetotal -1.0 2.0 -> -1 +cotx071 comparetotal 0.0 -2.0 -> 1 +cotx072 comparetotal 0.0 -1.0 -> 1 +cotx073 comparetotal 0.0 0.0 -> 0 +cotx074 comparetotal 0.0 1.0 -> -1 +cotx075 comparetotal 0.0 2.0 -> -1 +cotx076 comparetotal 1.0 -2.0 -> 1 +cotx077 comparetotal 1.0 -1.0 -> 1 +cotx078 comparetotal 1.0 0.0 -> 1 +cotx079 comparetotal 1.0 1.0 -> 0 +cotx080 comparetotal 1.0 2.0 -> -1 +cotx081 comparetotal 2.0 -2.0 -> 1 +cotx082 comparetotal 2.0 -1.0 -> 1 +cotx083 comparetotal 2.0 0.0 -> 1 +cotx085 comparetotal 2.0 1.0 -> 1 +cotx086 comparetotal 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +maxexponent: 999999999 +minexponent: -999999999 +cotx090 comparetotal 9.99999999E+999999999 9.99999999E+999999999 -> 0 +cotx091 comparetotal -9.99999999E+999999999 9.99999999E+999999999 -> -1 +cotx092 comparetotal 9.99999999E+999999999 -9.99999999E+999999999 -> 1 +cotx093 comparetotal -9.99999999E+999999999 -9.99999999E+999999999 -> 0 + +-- Examples +cotx094 comparetotal 12.73 127.9 -> -1 +cotx095 comparetotal -127 12 -> -1 +cotx096 comparetotal 12.30 12.3 -> -1 +cotx097 comparetotal 12.30 12.30 -> 0 +cotx098 comparetotal 12.3 12.300 -> 1 +cotx099 comparetotal 12.3 NaN -> -1 + +-- some differing length/exponent cases +-- in this first group, compare would compare all equal +cotx100 comparetotal 7.0 7.0 -> 0 +cotx101 comparetotal 7.0 7 -> -1 +cotx102 comparetotal 7 7.0 -> 1 +cotx103 comparetotal 7E+0 7.0 -> 1 +cotx104 comparetotal 70E-1 7.0 -> 0 +cotx105 comparetotal 0.7E+1 7 -> 0 +cotx106 comparetotal 70E-1 7 -> -1 +cotx107 comparetotal 7.0 7E+0 -> -1 +cotx108 comparetotal 7.0 70E-1 -> 0 +cotx109 comparetotal 7 0.7E+1 -> 0 +cotx110 comparetotal 7 70E-1 -> 1 + +cotx120 comparetotal 8.0 7.0 -> 1 +cotx121 comparetotal 8.0 7 -> 1 +cotx122 comparetotal 8 7.0 -> 1 +cotx123 comparetotal 8E+0 7.0 -> 1 +cotx124 comparetotal 80E-1 7.0 -> 1 +cotx125 comparetotal 0.8E+1 7 -> 1 +cotx126 comparetotal 80E-1 7 -> 1 +cotx127 comparetotal 8.0 7E+0 -> 1 +cotx128 comparetotal 8.0 70E-1 -> 1 +cotx129 comparetotal 8 0.7E+1 -> 1 +cotx130 comparetotal 8 70E-1 -> 1 + +cotx140 comparetotal 8.0 9.0 -> -1 +cotx141 comparetotal 8.0 9 -> -1 +cotx142 comparetotal 8 9.0 -> -1 +cotx143 comparetotal 8E+0 9.0 -> -1 +cotx144 comparetotal 80E-1 9.0 -> -1 +cotx145 comparetotal 0.8E+1 9 -> -1 +cotx146 comparetotal 80E-1 9 -> -1 +cotx147 comparetotal 8.0 9E+0 -> -1 +cotx148 comparetotal 8.0 90E-1 -> -1 +cotx149 comparetotal 8 0.9E+1 -> -1 +cotx150 comparetotal 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +cotx200 comparetotal -7.0 7.0 -> -1 +cotx201 comparetotal -7.0 7 -> -1 +cotx202 comparetotal -7 7.0 -> -1 +cotx203 comparetotal -7E+0 7.0 -> -1 +cotx204 comparetotal -70E-1 7.0 -> -1 +cotx205 comparetotal -0.7E+1 7 -> -1 +cotx206 comparetotal -70E-1 7 -> -1 +cotx207 comparetotal -7.0 7E+0 -> -1 +cotx208 comparetotal -7.0 70E-1 -> -1 +cotx209 comparetotal -7 0.7E+1 -> -1 +cotx210 comparetotal -7 70E-1 -> -1 + +cotx220 comparetotal -8.0 7.0 -> -1 +cotx221 comparetotal -8.0 7 -> -1 +cotx222 comparetotal -8 7.0 -> -1 +cotx223 comparetotal -8E+0 7.0 -> -1 +cotx224 comparetotal -80E-1 7.0 -> -1 +cotx225 comparetotal -0.8E+1 7 -> -1 +cotx226 comparetotal -80E-1 7 -> -1 +cotx227 comparetotal -8.0 7E+0 -> -1 +cotx228 comparetotal -8.0 70E-1 -> -1 +cotx229 comparetotal -8 0.7E+1 -> -1 +cotx230 comparetotal -8 70E-1 -> -1 + +cotx240 comparetotal -8.0 9.0 -> -1 +cotx241 comparetotal -8.0 9 -> -1 +cotx242 comparetotal -8 9.0 -> -1 +cotx243 comparetotal -8E+0 9.0 -> -1 +cotx244 comparetotal -80E-1 9.0 -> -1 +cotx245 comparetotal -0.8E+1 9 -> -1 +cotx246 comparetotal -80E-1 9 -> -1 +cotx247 comparetotal -8.0 9E+0 -> -1 +cotx248 comparetotal -8.0 90E-1 -> -1 +cotx249 comparetotal -8 0.9E+1 -> -1 +cotx250 comparetotal -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +cotx300 comparetotal 7.0 -7.0 -> 1 +cotx301 comparetotal 7.0 -7 -> 1 +cotx302 comparetotal 7 -7.0 -> 1 +cotx303 comparetotal 7E+0 -7.0 -> 1 +cotx304 comparetotal 70E-1 -7.0 -> 1 +cotx305 comparetotal .7E+1 -7 -> 1 +cotx306 comparetotal 70E-1 -7 -> 1 +cotx307 comparetotal 7.0 -7E+0 -> 1 +cotx308 comparetotal 7.0 -70E-1 -> 1 +cotx309 comparetotal 7 -.7E+1 -> 1 +cotx310 comparetotal 7 -70E-1 -> 1 + +cotx320 comparetotal 8.0 -7.0 -> 1 +cotx321 comparetotal 8.0 -7 -> 1 +cotx322 comparetotal 8 -7.0 -> 1 +cotx323 comparetotal 8E+0 -7.0 -> 1 +cotx324 comparetotal 80E-1 -7.0 -> 1 +cotx325 comparetotal .8E+1 -7 -> 1 +cotx326 comparetotal 80E-1 -7 -> 1 +cotx327 comparetotal 8.0 -7E+0 -> 1 +cotx328 comparetotal 8.0 -70E-1 -> 1 +cotx329 comparetotal 8 -.7E+1 -> 1 +cotx330 comparetotal 8 -70E-1 -> 1 + +cotx340 comparetotal 8.0 -9.0 -> 1 +cotx341 comparetotal 8.0 -9 -> 1 +cotx342 comparetotal 8 -9.0 -> 1 +cotx343 comparetotal 8E+0 -9.0 -> 1 +cotx344 comparetotal 80E-1 -9.0 -> 1 +cotx345 comparetotal .8E+1 -9 -> 1 +cotx346 comparetotal 80E-1 -9 -> 1 +cotx347 comparetotal 8.0 -9E+0 -> 1 +cotx348 comparetotal 8.0 -90E-1 -> 1 +cotx349 comparetotal 8 -.9E+1 -> 1 +cotx350 comparetotal 8 -90E-1 -> 1 + +-- and again, with sign changes -- .. +cotx400 comparetotal -7.0 -7.0 -> 0 +cotx401 comparetotal -7.0 -7 -> 1 +cotx402 comparetotal -7 -7.0 -> -1 +cotx403 comparetotal -7E+0 -7.0 -> -1 +cotx404 comparetotal -70E-1 -7.0 -> 0 +cotx405 comparetotal -.7E+1 -7 -> 0 +cotx406 comparetotal -70E-1 -7 -> 1 +cotx407 comparetotal -7.0 -7E+0 -> 1 +cotx408 comparetotal -7.0 -70E-1 -> 0 +cotx409 comparetotal -7 -.7E+1 -> 0 +cotx410 comparetotal -7 -70E-1 -> -1 + +cotx420 comparetotal -8.0 -7.0 -> -1 +cotx421 comparetotal -8.0 -7 -> -1 +cotx422 comparetotal -8 -7.0 -> -1 +cotx423 comparetotal -8E+0 -7.0 -> -1 +cotx424 comparetotal -80E-1 -7.0 -> -1 +cotx425 comparetotal -.8E+1 -7 -> -1 +cotx426 comparetotal -80E-1 -7 -> -1 +cotx427 comparetotal -8.0 -7E+0 -> -1 +cotx428 comparetotal -8.0 -70E-1 -> -1 +cotx429 comparetotal -8 -.7E+1 -> -1 +cotx430 comparetotal -8 -70E-1 -> -1 + +cotx440 comparetotal -8.0 -9.0 -> 1 +cotx441 comparetotal -8.0 -9 -> 1 +cotx442 comparetotal -8 -9.0 -> 1 +cotx443 comparetotal -8E+0 -9.0 -> 1 +cotx444 comparetotal -80E-1 -9.0 -> 1 +cotx445 comparetotal -.8E+1 -9 -> 1 +cotx446 comparetotal -80E-1 -9 -> 1 +cotx447 comparetotal -8.0 -9E+0 -> 1 +cotx448 comparetotal -8.0 -90E-1 -> 1 +cotx449 comparetotal -8 -.9E+1 -> 1 +cotx450 comparetotal -8 -90E-1 -> 1 + + +-- testcases that subtract to lots of zeros at boundaries [pgr] +precision: 40 +cotx470 comparetotal 123.4560000000000000E789 123.456E789 -> -1 +cotx471 comparetotal 123.456000000000000E-89 123.456E-89 -> -1 +cotx472 comparetotal 123.45600000000000E789 123.456E789 -> -1 +cotx473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1 +cotx474 comparetotal 123.456000000000E789 123.456E789 -> -1 +cotx475 comparetotal 123.45600000000E-89 123.456E-89 -> -1 +cotx476 comparetotal 123.4560000000E789 123.456E789 -> -1 +cotx477 comparetotal 123.456000000E-89 123.456E-89 -> -1 +cotx478 comparetotal 123.45600000E789 123.456E789 -> -1 +cotx479 comparetotal 123.4560000E-89 123.456E-89 -> -1 +cotx480 comparetotal 123.456000E789 123.456E789 -> -1 +cotx481 comparetotal 123.45600E-89 123.456E-89 -> -1 +cotx482 comparetotal 123.4560E789 123.456E789 -> -1 +cotx483 comparetotal 123.456E-89 123.456E-89 -> 0 +cotx484 comparetotal 123.456E-89 123.4560000000000000E-89 -> 1 +cotx485 comparetotal 123.456E789 123.456000000000000E789 -> 1 +cotx486 comparetotal 123.456E-89 123.45600000000000E-89 -> 1 +cotx487 comparetotal 123.456E789 123.4560000000000E789 -> 1 +cotx488 comparetotal 123.456E-89 123.456000000000E-89 -> 1 +cotx489 comparetotal 123.456E789 123.45600000000E789 -> 1 +cotx490 comparetotal 123.456E-89 123.4560000000E-89 -> 1 +cotx491 comparetotal 123.456E789 123.456000000E789 -> 1 +cotx492 comparetotal 123.456E-89 123.45600000E-89 -> 1 +cotx493 comparetotal 123.456E789 123.4560000E789 -> 1 +cotx494 comparetotal 123.456E-89 123.456000E-89 -> 1 +cotx495 comparetotal 123.456E789 123.45600E789 -> 1 +cotx496 comparetotal 123.456E-89 123.4560E-89 -> 1 +cotx497 comparetotal 123.456E789 123.456E789 -> 0 + +-- wide-ranging, around precision; signs equal +precision: 9 +cotx500 comparetotal 1 1E-15 -> 1 +cotx501 comparetotal 1 1E-14 -> 1 +cotx502 comparetotal 1 1E-13 -> 1 +cotx503 comparetotal 1 1E-12 -> 1 +cotx504 comparetotal 1 1E-11 -> 1 +cotx505 comparetotal 1 1E-10 -> 1 +cotx506 comparetotal 1 1E-9 -> 1 +cotx507 comparetotal 1 1E-8 -> 1 +cotx508 comparetotal 1 1E-7 -> 1 +cotx509 comparetotal 1 1E-6 -> 1 +cotx510 comparetotal 1 1E-5 -> 1 +cotx511 comparetotal 1 1E-4 -> 1 +cotx512 comparetotal 1 1E-3 -> 1 +cotx513 comparetotal 1 1E-2 -> 1 +cotx514 comparetotal 1 1E-1 -> 1 +cotx515 comparetotal 1 1E-0 -> 0 +cotx516 comparetotal 1 1E+1 -> -1 +cotx517 comparetotal 1 1E+2 -> -1 +cotx518 comparetotal 1 1E+3 -> -1 +cotx519 comparetotal 1 1E+4 -> -1 +cotx521 comparetotal 1 1E+5 -> -1 +cotx522 comparetotal 1 1E+6 -> -1 +cotx523 comparetotal 1 1E+7 -> -1 +cotx524 comparetotal 1 1E+8 -> -1 +cotx525 comparetotal 1 1E+9 -> -1 +cotx526 comparetotal 1 1E+10 -> -1 +cotx527 comparetotal 1 1E+11 -> -1 +cotx528 comparetotal 1 1E+12 -> -1 +cotx529 comparetotal 1 1E+13 -> -1 +cotx530 comparetotal 1 1E+14 -> -1 +cotx531 comparetotal 1 1E+15 -> -1 +-- LR swap +cotx540 comparetotal 1E-15 1 -> -1 +cotx541 comparetotal 1E-14 1 -> -1 +cotx542 comparetotal 1E-13 1 -> -1 +cotx543 comparetotal 1E-12 1 -> -1 +cotx544 comparetotal 1E-11 1 -> -1 +cotx545 comparetotal 1E-10 1 -> -1 +cotx546 comparetotal 1E-9 1 -> -1 +cotx547 comparetotal 1E-8 1 -> -1 +cotx548 comparetotal 1E-7 1 -> -1 +cotx549 comparetotal 1E-6 1 -> -1 +cotx550 comparetotal 1E-5 1 -> -1 +cotx551 comparetotal 1E-4 1 -> -1 +cotx552 comparetotal 1E-3 1 -> -1 +cotx553 comparetotal 1E-2 1 -> -1 +cotx554 comparetotal 1E-1 1 -> -1 +cotx555 comparetotal 1E-0 1 -> 0 +cotx556 comparetotal 1E+1 1 -> 1 +cotx557 comparetotal 1E+2 1 -> 1 +cotx558 comparetotal 1E+3 1 -> 1 +cotx559 comparetotal 1E+4 1 -> 1 +cotx561 comparetotal 1E+5 1 -> 1 +cotx562 comparetotal 1E+6 1 -> 1 +cotx563 comparetotal 1E+7 1 -> 1 +cotx564 comparetotal 1E+8 1 -> 1 +cotx565 comparetotal 1E+9 1 -> 1 +cotx566 comparetotal 1E+10 1 -> 1 +cotx567 comparetotal 1E+11 1 -> 1 +cotx568 comparetotal 1E+12 1 -> 1 +cotx569 comparetotal 1E+13 1 -> 1 +cotx570 comparetotal 1E+14 1 -> 1 +cotx571 comparetotal 1E+15 1 -> 1 +-- similar with an useful coefficient, one side only +cotx580 comparetotal 0.000000987654321 1E-15 -> 1 +cotx581 comparetotal 0.000000987654321 1E-14 -> 1 +cotx582 comparetotal 0.000000987654321 1E-13 -> 1 +cotx583 comparetotal 0.000000987654321 1E-12 -> 1 +cotx584 comparetotal 0.000000987654321 1E-11 -> 1 +cotx585 comparetotal 0.000000987654321 1E-10 -> 1 +cotx586 comparetotal 0.000000987654321 1E-9 -> 1 +cotx587 comparetotal 0.000000987654321 1E-8 -> 1 +cotx588 comparetotal 0.000000987654321 1E-7 -> 1 +cotx589 comparetotal 0.000000987654321 1E-6 -> -1 +cotx590 comparetotal 0.000000987654321 1E-5 -> -1 +cotx591 comparetotal 0.000000987654321 1E-4 -> -1 +cotx592 comparetotal 0.000000987654321 1E-3 -> -1 +cotx593 comparetotal 0.000000987654321 1E-2 -> -1 +cotx594 comparetotal 0.000000987654321 1E-1 -> -1 +cotx595 comparetotal 0.000000987654321 1E-0 -> -1 +cotx596 comparetotal 0.000000987654321 1E+1 -> -1 +cotx597 comparetotal 0.000000987654321 1E+2 -> -1 +cotx598 comparetotal 0.000000987654321 1E+3 -> -1 +cotx599 comparetotal 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +precision: 20 +cotx600 comparetotal 12 12.2345 -> -1 +cotx601 comparetotal 12.0 12.2345 -> -1 +cotx602 comparetotal 12.00 12.2345 -> -1 +cotx603 comparetotal 12.000 12.2345 -> -1 +cotx604 comparetotal 12.0000 12.2345 -> -1 +cotx605 comparetotal 12.00000 12.2345 -> -1 +cotx606 comparetotal 12.000000 12.2345 -> -1 +cotx607 comparetotal 12.0000000 12.2345 -> -1 +cotx608 comparetotal 12.00000000 12.2345 -> -1 +cotx609 comparetotal 12.000000000 12.2345 -> -1 +cotx610 comparetotal 12.1234 12 -> 1 +cotx611 comparetotal 12.1234 12.0 -> 1 +cotx612 comparetotal 12.1234 12.00 -> 1 +cotx613 comparetotal 12.1234 12.000 -> 1 +cotx614 comparetotal 12.1234 12.0000 -> 1 +cotx615 comparetotal 12.1234 12.00000 -> 1 +cotx616 comparetotal 12.1234 12.000000 -> 1 +cotx617 comparetotal 12.1234 12.0000000 -> 1 +cotx618 comparetotal 12.1234 12.00000000 -> 1 +cotx619 comparetotal 12.1234 12.000000000 -> 1 +cotx620 comparetotal -12 -12.2345 -> 1 +cotx621 comparetotal -12.0 -12.2345 -> 1 +cotx622 comparetotal -12.00 -12.2345 -> 1 +cotx623 comparetotal -12.000 -12.2345 -> 1 +cotx624 comparetotal -12.0000 -12.2345 -> 1 +cotx625 comparetotal -12.00000 -12.2345 -> 1 +cotx626 comparetotal -12.000000 -12.2345 -> 1 +cotx627 comparetotal -12.0000000 -12.2345 -> 1 +cotx628 comparetotal -12.00000000 -12.2345 -> 1 +cotx629 comparetotal -12.000000000 -12.2345 -> 1 +cotx630 comparetotal -12.1234 -12 -> -1 +cotx631 comparetotal -12.1234 -12.0 -> -1 +cotx632 comparetotal -12.1234 -12.00 -> -1 +cotx633 comparetotal -12.1234 -12.000 -> -1 +cotx634 comparetotal -12.1234 -12.0000 -> -1 +cotx635 comparetotal -12.1234 -12.00000 -> -1 +cotx636 comparetotal -12.1234 -12.000000 -> -1 +cotx637 comparetotal -12.1234 -12.0000000 -> -1 +cotx638 comparetotal -12.1234 -12.00000000 -> -1 +cotx639 comparetotal -12.1234 -12.000000000 -> -1 +precision: 9 + +-- extended zeros +cotx640 comparetotal 0 0 -> 0 +cotx641 comparetotal 0 -0 -> 1 +cotx642 comparetotal 0 -0.0 -> 1 +cotx643 comparetotal 0 0.0 -> 1 +cotx644 comparetotal -0 0 -> -1 +cotx645 comparetotal -0 -0 -> 0 +cotx646 comparetotal -0 -0.0 -> -1 +cotx647 comparetotal -0 0.0 -> -1 +cotx648 comparetotal 0.0 0 -> -1 +cotx649 comparetotal 0.0 -0 -> 1 +cotx650 comparetotal 0.0 -0.0 -> 1 +cotx651 comparetotal 0.0 0.0 -> 0 +cotx652 comparetotal -0.0 0 -> -1 +cotx653 comparetotal -0.0 -0 -> 1 +cotx654 comparetotal -0.0 -0.0 -> 0 +cotx655 comparetotal -0.0 0.0 -> -1 + +cotx656 comparetotal -0E1 0.0 -> -1 +cotx657 comparetotal -0E2 0.0 -> -1 +cotx658 comparetotal 0E1 0.0 -> 1 +cotx659 comparetotal 0E2 0.0 -> 1 +cotx660 comparetotal -0E1 0 -> -1 +cotx661 comparetotal -0E2 0 -> -1 +cotx662 comparetotal 0E1 0 -> 1 +cotx663 comparetotal 0E2 0 -> 1 +cotx664 comparetotal -0E1 -0E1 -> 0 +cotx665 comparetotal -0E2 -0E1 -> -1 +cotx666 comparetotal 0E1 -0E1 -> 1 +cotx667 comparetotal 0E2 -0E1 -> 1 +cotx668 comparetotal -0E1 -0E2 -> 1 +cotx669 comparetotal -0E2 -0E2 -> 0 +cotx670 comparetotal 0E1 -0E2 -> 1 +cotx671 comparetotal 0E2 -0E2 -> 1 +cotx672 comparetotal -0E1 0E1 -> -1 +cotx673 comparetotal -0E2 0E1 -> -1 +cotx674 comparetotal 0E1 0E1 -> 0 +cotx675 comparetotal 0E2 0E1 -> 1 +cotx676 comparetotal -0E1 0E2 -> -1 +cotx677 comparetotal -0E2 0E2 -> -1 +cotx678 comparetotal 0E1 0E2 -> -1 +cotx679 comparetotal 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +precision: 20 +cotx680 comparetotal 12 12 -> 0 +cotx681 comparetotal 12 12.0 -> 1 +cotx682 comparetotal 12 12.00 -> 1 +cotx683 comparetotal 12 12.000 -> 1 +cotx684 comparetotal 12 12.0000 -> 1 +cotx685 comparetotal 12 12.00000 -> 1 +cotx686 comparetotal 12 12.000000 -> 1 +cotx687 comparetotal 12 12.0000000 -> 1 +cotx688 comparetotal 12 12.00000000 -> 1 +cotx689 comparetotal 12 12.000000000 -> 1 +cotx690 comparetotal 12 12 -> 0 +cotx691 comparetotal 12.0 12 -> -1 +cotx692 comparetotal 12.00 12 -> -1 +cotx693 comparetotal 12.000 12 -> -1 +cotx694 comparetotal 12.0000 12 -> -1 +cotx695 comparetotal 12.00000 12 -> -1 +cotx696 comparetotal 12.000000 12 -> -1 +cotx697 comparetotal 12.0000000 12 -> -1 +cotx698 comparetotal 12.00000000 12 -> -1 +cotx699 comparetotal 12.000000000 12 -> -1 + +-- long operand checks +maxexponent: 999 +minexponent: -999 +precision: 9 +cotx701 comparetotal 12345678000 1 -> 1 +cotx702 comparetotal 1 12345678000 -> -1 +cotx703 comparetotal 1234567800 1 -> 1 +cotx704 comparetotal 1 1234567800 -> -1 +cotx705 comparetotal 1234567890 1 -> 1 +cotx706 comparetotal 1 1234567890 -> -1 +cotx707 comparetotal 1234567891 1 -> 1 +cotx708 comparetotal 1 1234567891 -> -1 +cotx709 comparetotal 12345678901 1 -> 1 +cotx710 comparetotal 1 12345678901 -> -1 +cotx711 comparetotal 1234567896 1 -> 1 +cotx712 comparetotal 1 1234567896 -> -1 +cotx713 comparetotal -1234567891 1 -> -1 +cotx714 comparetotal 1 -1234567891 -> 1 +cotx715 comparetotal -12345678901 1 -> -1 +cotx716 comparetotal 1 -12345678901 -> 1 +cotx717 comparetotal -1234567896 1 -> -1 +cotx718 comparetotal 1 -1234567896 -> 1 + +precision: 15 +-- same with plenty of precision +cotx721 comparetotal 12345678000 1 -> 1 +cotx722 comparetotal 1 12345678000 -> -1 +cotx723 comparetotal 1234567800 1 -> 1 +cotx724 comparetotal 1 1234567800 -> -1 +cotx725 comparetotal 1234567890 1 -> 1 +cotx726 comparetotal 1 1234567890 -> -1 +cotx727 comparetotal 1234567891 1 -> 1 +cotx728 comparetotal 1 1234567891 -> -1 +cotx729 comparetotal 12345678901 1 -> 1 +cotx730 comparetotal 1 12345678901 -> -1 +cotx731 comparetotal 1234567896 1 -> 1 +cotx732 comparetotal 1 1234567896 -> -1 + +-- residue cases +precision: 5 +cotx740 comparetotal 1 0.9999999 -> 1 +cotx741 comparetotal 1 0.999999 -> 1 +cotx742 comparetotal 1 0.99999 -> 1 +cotx743 comparetotal 1 1.0000 -> 1 +cotx744 comparetotal 1 1.00001 -> -1 +cotx745 comparetotal 1 1.000001 -> -1 +cotx746 comparetotal 1 1.0000001 -> -1 +cotx750 comparetotal 0.9999999 1 -> -1 +cotx751 comparetotal 0.999999 1 -> -1 +cotx752 comparetotal 0.99999 1 -> -1 +cotx753 comparetotal 1.0000 1 -> -1 +cotx754 comparetotal 1.00001 1 -> 1 +cotx755 comparetotal 1.000001 1 -> 1 +cotx756 comparetotal 1.0000001 1 -> 1 + +-- a selection of longies +cotx760 comparetotal -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1 +cotx761 comparetotal -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0 +cotx762 comparetotal -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> -1 +cotx763 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +-- precisions above or below the difference should have no effect +precision: 11 +cotx764 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 10 +cotx765 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 9 +cotx766 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 8 +cotx767 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 7 +cotx768 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 6 +cotx769 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 5 +cotx770 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 4 +cotx771 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 3 +cotx772 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 2 +cotx773 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 +precision: 1 +cotx774 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 + +-- Specials +precision: 9 +cotx780 comparetotal Inf -Inf -> 1 +cotx781 comparetotal Inf -1000 -> 1 +cotx782 comparetotal Inf -1 -> 1 +cotx783 comparetotal Inf -0 -> 1 +cotx784 comparetotal Inf 0 -> 1 +cotx785 comparetotal Inf 1 -> 1 +cotx786 comparetotal Inf 1000 -> 1 +cotx787 comparetotal Inf Inf -> 0 +cotx788 comparetotal -1000 Inf -> -1 +cotx789 comparetotal -Inf Inf -> -1 +cotx790 comparetotal -1 Inf -> -1 +cotx791 comparetotal -0 Inf -> -1 +cotx792 comparetotal 0 Inf -> -1 +cotx793 comparetotal 1 Inf -> -1 +cotx794 comparetotal 1000 Inf -> -1 +cotx795 comparetotal Inf Inf -> 0 + +cotx800 comparetotal -Inf -Inf -> 0 +cotx801 comparetotal -Inf -1000 -> -1 +cotx802 comparetotal -Inf -1 -> -1 +cotx803 comparetotal -Inf -0 -> -1 +cotx804 comparetotal -Inf 0 -> -1 +cotx805 comparetotal -Inf 1 -> -1 +cotx806 comparetotal -Inf 1000 -> -1 +cotx807 comparetotal -Inf Inf -> -1 +cotx808 comparetotal -Inf -Inf -> 0 +cotx809 comparetotal -1000 -Inf -> 1 +cotx810 comparetotal -1 -Inf -> 1 +cotx811 comparetotal -0 -Inf -> 1 +cotx812 comparetotal 0 -Inf -> 1 +cotx813 comparetotal 1 -Inf -> 1 +cotx814 comparetotal 1000 -Inf -> 1 +cotx815 comparetotal Inf -Inf -> 1 + +cotx821 comparetotal NaN -Inf -> 1 +cotx822 comparetotal NaN -1000 -> 1 +cotx823 comparetotal NaN -1 -> 1 +cotx824 comparetotal NaN -0 -> 1 +cotx825 comparetotal NaN 0 -> 1 +cotx826 comparetotal NaN 1 -> 1 +cotx827 comparetotal NaN 1000 -> 1 +cotx828 comparetotal NaN Inf -> 1 +cotx829 comparetotal NaN NaN -> 0 +cotx830 comparetotal -Inf NaN -> -1 +cotx831 comparetotal -1000 NaN -> -1 +cotx832 comparetotal -1 NaN -> -1 +cotx833 comparetotal -0 NaN -> -1 +cotx834 comparetotal 0 NaN -> -1 +cotx835 comparetotal 1 NaN -> -1 +cotx836 comparetotal 1000 NaN -> -1 +cotx837 comparetotal Inf NaN -> -1 +cotx838 comparetotal -NaN -NaN -> 0 +cotx839 comparetotal +NaN -NaN -> 1 +cotx840 comparetotal -NaN +NaN -> -1 + +cotx841 comparetotal sNaN -sNaN -> 1 +cotx842 comparetotal sNaN -NaN -> 1 +cotx843 comparetotal sNaN -Inf -> 1 +cotx844 comparetotal sNaN -1000 -> 1 +cotx845 comparetotal sNaN -1 -> 1 +cotx846 comparetotal sNaN -0 -> 1 +cotx847 comparetotal sNaN 0 -> 1 +cotx848 comparetotal sNaN 1 -> 1 +cotx849 comparetotal sNaN 1000 -> 1 +cotx850 comparetotal sNaN NaN -> -1 +cotx851 comparetotal sNaN sNaN -> 0 + +cotx852 comparetotal -sNaN sNaN -> -1 +cotx853 comparetotal -NaN sNaN -> -1 +cotx854 comparetotal -Inf sNaN -> -1 +cotx855 comparetotal -1000 sNaN -> -1 +cotx856 comparetotal -1 sNaN -> -1 +cotx857 comparetotal -0 sNaN -> -1 +cotx858 comparetotal 0 sNaN -> -1 +cotx859 comparetotal 1 sNaN -> -1 +cotx860 comparetotal 1000 sNaN -> -1 +cotx861 comparetotal Inf sNaN -> -1 +cotx862 comparetotal NaN sNaN -> 1 +cotx863 comparetotal sNaN sNaN -> 0 + +cotx871 comparetotal -sNaN -sNaN -> 0 +cotx872 comparetotal -sNaN -NaN -> 1 +cotx873 comparetotal -sNaN -Inf -> -1 +cotx874 comparetotal -sNaN -1000 -> -1 +cotx875 comparetotal -sNaN -1 -> -1 +cotx876 comparetotal -sNaN -0 -> -1 +cotx877 comparetotal -sNaN 0 -> -1 +cotx878 comparetotal -sNaN 1 -> -1 +cotx879 comparetotal -sNaN 1000 -> -1 +cotx880 comparetotal -sNaN NaN -> -1 +cotx881 comparetotal -sNaN sNaN -> -1 + +cotx882 comparetotal -sNaN -sNaN -> 0 +cotx883 comparetotal -NaN -sNaN -> -1 +cotx884 comparetotal -Inf -sNaN -> 1 +cotx885 comparetotal -1000 -sNaN -> 1 +cotx886 comparetotal -1 -sNaN -> 1 +cotx887 comparetotal -0 -sNaN -> 1 +cotx888 comparetotal 0 -sNaN -> 1 +cotx889 comparetotal 1 -sNaN -> 1 +cotx890 comparetotal 1000 -sNaN -> 1 +cotx891 comparetotal Inf -sNaN -> 1 +cotx892 comparetotal NaN -sNaN -> 1 +cotx893 comparetotal sNaN -sNaN -> 1 + +-- NaNs with payload +cotx960 comparetotal NaN9 -Inf -> 1 +cotx961 comparetotal NaN8 999 -> 1 +cotx962 comparetotal NaN77 Inf -> 1 +cotx963 comparetotal -NaN67 NaN5 -> -1 +cotx964 comparetotal -Inf -NaN4 -> 1 +cotx965 comparetotal -999 -NaN33 -> 1 +cotx966 comparetotal Inf NaN2 -> -1 + +cotx970 comparetotal -NaN41 -NaN42 -> 1 +cotx971 comparetotal +NaN41 -NaN42 -> 1 +cotx972 comparetotal -NaN41 +NaN42 -> -1 +cotx973 comparetotal +NaN41 +NaN42 -> -1 +cotx974 comparetotal -NaN42 -NaN01 -> -1 +cotx975 comparetotal +NaN42 -NaN01 -> 1 +cotx976 comparetotal -NaN42 +NaN01 -> -1 +cotx977 comparetotal +NaN42 +NaN01 -> 1 + +cotx980 comparetotal -sNaN771 -sNaN772 -> 1 +cotx981 comparetotal +sNaN771 -sNaN772 -> 1 +cotx982 comparetotal -sNaN771 +sNaN772 -> -1 +cotx983 comparetotal +sNaN771 +sNaN772 -> -1 +cotx984 comparetotal -sNaN772 -sNaN771 -> -1 +cotx985 comparetotal +sNaN772 -sNaN771 -> 1 +cotx986 comparetotal -sNaN772 +sNaN771 -> -1 +cotx987 comparetotal +sNaN772 +sNaN771 -> 1 + +cotx991 comparetotal -sNaN99 -Inf -> -1 +cotx992 comparetotal sNaN98 -11 -> 1 +cotx993 comparetotal sNaN97 NaN -> -1 +cotx994 comparetotal sNaN16 sNaN94 -> -1 +cotx995 comparetotal NaN85 sNaN83 -> 1 +cotx996 comparetotal -Inf sNaN92 -> -1 +cotx997 comparetotal 088 sNaN81 -> -1 +cotx998 comparetotal Inf sNaN90 -> -1 +cotx999 comparetotal NaN -sNaN89 -> 1 + +-- overflow and underflow tests .. subnormal results now allowed +maxExponent: 999999999 +minexponent: -999999999 +cotx1080 comparetotal +1.23456789012345E-0 9E+999999999 -> -1 +cotx1081 comparetotal 9E+999999999 +1.23456789012345E-0 -> 1 +cotx1082 comparetotal +0.100 9E-999999999 -> 1 +cotx1083 comparetotal 9E-999999999 +0.100 -> -1 +cotx1085 comparetotal -1.23456789012345E-0 9E+999999999 -> -1 +cotx1086 comparetotal 9E+999999999 -1.23456789012345E-0 -> 1 +cotx1087 comparetotal -0.100 9E-999999999 -> -1 +cotx1088 comparetotal 9E-999999999 -0.100 -> 1 + +cotx1089 comparetotal 1e-599999999 1e-400000001 -> -1 +cotx1090 comparetotal 1e-599999999 1e-400000000 -> -1 +cotx1091 comparetotal 1e-600000000 1e-400000000 -> -1 +cotx1092 comparetotal 9e-999999998 0.01 -> -1 +cotx1093 comparetotal 9e-999999998 0.1 -> -1 +cotx1094 comparetotal 0.01 9e-999999998 -> 1 +cotx1095 comparetotal 1e599999999 1e400000001 -> 1 +cotx1096 comparetotal 1e599999999 1e400000000 -> 1 +cotx1097 comparetotal 1e600000000 1e400000000 -> 1 +cotx1098 comparetotal 9e999999998 100 -> 1 +cotx1099 comparetotal 9e999999998 10 -> 1 +cotx1100 comparetotal 100 9e999999998 -> -1 +-- signs +cotx1101 comparetotal 1e+777777777 1e+411111111 -> 1 +cotx1102 comparetotal 1e+777777777 -1e+411111111 -> 1 +cotx1103 comparetotal -1e+777777777 1e+411111111 -> -1 +cotx1104 comparetotal -1e+777777777 -1e+411111111 -> -1 +cotx1105 comparetotal 1e-777777777 1e-411111111 -> -1 +cotx1106 comparetotal 1e-777777777 -1e-411111111 -> 1 +cotx1107 comparetotal -1e-777777777 1e-411111111 -> -1 +cotx1108 comparetotal -1e-777777777 -1e-411111111 -> 1 + +-- spread zeros +cotx1110 comparetotal 0E-383 0 -> -1 +cotx1111 comparetotal 0E-383 -0 -> 1 +cotx1112 comparetotal -0E-383 0 -> -1 +cotx1113 comparetotal -0E-383 -0 -> 1 +cotx1114 comparetotal 0E-383 0E+384 -> -1 +cotx1115 comparetotal 0E-383 -0E+384 -> 1 +cotx1116 comparetotal -0E-383 0E+384 -> -1 +cotx1117 comparetotal -0E-383 -0E+384 -> 1 +cotx1118 comparetotal 0 0E+384 -> -1 +cotx1119 comparetotal 0 -0E+384 -> 1 +cotx1120 comparetotal -0 0E+384 -> -1 +cotx1121 comparetotal -0 -0E+384 -> 1 + +cotx1130 comparetotal 0E+384 0 -> 1 +cotx1131 comparetotal 0E+384 -0 -> 1 +cotx1132 comparetotal -0E+384 0 -> -1 +cotx1133 comparetotal -0E+384 -0 -> -1 +cotx1134 comparetotal 0E+384 0E-383 -> 1 +cotx1135 comparetotal 0E+384 -0E-383 -> 1 +cotx1136 comparetotal -0E+384 0E-383 -> -1 +cotx1137 comparetotal -0E+384 -0E-383 -> -1 +cotx1138 comparetotal 0 0E-383 -> 1 +cotx1139 comparetotal 0 -0E-383 -> 1 +cotx1140 comparetotal -0 0E-383 -> -1 +cotx1141 comparetotal -0 -0E-383 -> -1 + +-- Null tests +cotx9990 comparetotal 10 # -> NaN Invalid_operation +cotx9991 comparetotal # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/comparetotmag.decTest b/Lib/test/decimaltestdata/comparetotmag.decTest index e87c9f2..cedfdf8 100644 --- a/Lib/test/decimaltestdata/comparetotmag.decTest +++ b/Lib/test/decimaltestdata/comparetotmag.decTest @@ -1,790 +1,790 @@ ------------------------------------------------------------------------- --- comparetotmag.decTest -- decimal comparison, abs. total ordering -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that it cannot be assumed that add/subtract tests cover paths --- for this operation adequately, here, because the code might be --- quite different (comparison cannot overflow or underflow, so --- actual subtractions are not necessary). Similarly, comparetotal --- will have some radically different paths than compare. - -extended: 1 -precision: 16 -rounding: half_up -maxExponent: 384 -minExponent: -383 - --- sanity checks -ctmx001 comparetotmag -2 -2 -> 0 -ctmx002 comparetotmag -2 -1 -> 1 -ctmx003 comparetotmag -2 0 -> 1 -ctmx004 comparetotmag -2 1 -> 1 -ctmx005 comparetotmag -2 2 -> 0 -ctmx006 comparetotmag -1 -2 -> -1 -ctmx007 comparetotmag -1 -1 -> 0 -ctmx008 comparetotmag -1 0 -> 1 -ctmx009 comparetotmag -1 1 -> 0 -ctmx010 comparetotmag -1 2 -> -1 -ctmx011 comparetotmag 0 -2 -> -1 -ctmx012 comparetotmag 0 -1 -> -1 -ctmx013 comparetotmag 0 0 -> 0 -ctmx014 comparetotmag 0 1 -> -1 -ctmx015 comparetotmag 0 2 -> -1 -ctmx016 comparetotmag 1 -2 -> -1 -ctmx017 comparetotmag 1 -1 -> 0 -ctmx018 comparetotmag 1 0 -> 1 -ctmx019 comparetotmag 1 1 -> 0 -ctmx020 comparetotmag 1 2 -> -1 -ctmx021 comparetotmag 2 -2 -> 0 -ctmx022 comparetotmag 2 -1 -> 1 -ctmx023 comparetotmag 2 0 -> 1 -ctmx025 comparetotmag 2 1 -> 1 -ctmx026 comparetotmag 2 2 -> 0 - -ctmx031 comparetotmag -20 -20 -> 0 -ctmx032 comparetotmag -20 -10 -> 1 -ctmx033 comparetotmag -20 00 -> 1 -ctmx034 comparetotmag -20 10 -> 1 -ctmx035 comparetotmag -20 20 -> 0 -ctmx036 comparetotmag -10 -20 -> -1 -ctmx037 comparetotmag -10 -10 -> 0 -ctmx038 comparetotmag -10 00 -> 1 -ctmx039 comparetotmag -10 10 -> 0 -ctmx040 comparetotmag -10 20 -> -1 -ctmx041 comparetotmag 00 -20 -> -1 -ctmx042 comparetotmag 00 -10 -> -1 -ctmx043 comparetotmag 00 00 -> 0 -ctmx044 comparetotmag 00 10 -> -1 -ctmx045 comparetotmag 00 20 -> -1 -ctmx046 comparetotmag 10 -20 -> -1 -ctmx047 comparetotmag 10 -10 -> 0 -ctmx048 comparetotmag 10 00 -> 1 -ctmx049 comparetotmag 10 10 -> 0 -ctmx050 comparetotmag 10 20 -> -1 -ctmx051 comparetotmag 20 -20 -> 0 -ctmx052 comparetotmag 20 -10 -> 1 -ctmx053 comparetotmag 20 00 -> 1 -ctmx055 comparetotmag 20 10 -> 1 -ctmx056 comparetotmag 20 20 -> 0 - -ctmx061 comparetotmag -2.0 -2.0 -> 0 -ctmx062 comparetotmag -2.0 -1.0 -> 1 -ctmx063 comparetotmag -2.0 0.0 -> 1 -ctmx064 comparetotmag -2.0 1.0 -> 1 -ctmx065 comparetotmag -2.0 2.0 -> 0 -ctmx066 comparetotmag -1.0 -2.0 -> -1 -ctmx067 comparetotmag -1.0 -1.0 -> 0 -ctmx068 comparetotmag -1.0 0.0 -> 1 -ctmx069 comparetotmag -1.0 1.0 -> 0 -ctmx070 comparetotmag -1.0 2.0 -> -1 -ctmx071 comparetotmag 0.0 -2.0 -> -1 -ctmx072 comparetotmag 0.0 -1.0 -> -1 -ctmx073 comparetotmag 0.0 0.0 -> 0 -ctmx074 comparetotmag 0.0 1.0 -> -1 -ctmx075 comparetotmag 0.0 2.0 -> -1 -ctmx076 comparetotmag 1.0 -2.0 -> -1 -ctmx077 comparetotmag 1.0 -1.0 -> 0 -ctmx078 comparetotmag 1.0 0.0 -> 1 -ctmx079 comparetotmag 1.0 1.0 -> 0 -ctmx080 comparetotmag 1.0 2.0 -> -1 -ctmx081 comparetotmag 2.0 -2.0 -> 0 -ctmx082 comparetotmag 2.0 -1.0 -> 1 -ctmx083 comparetotmag 2.0 0.0 -> 1 -ctmx085 comparetotmag 2.0 1.0 -> 1 -ctmx086 comparetotmag 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -maxexponent: 999999999 -minexponent: -999999999 -ctmx090 comparetotmag 9.99999999E+999999999 9.99999999E+999999999 -> 0 -ctmx091 comparetotmag -9.99999999E+999999999 9.99999999E+999999999 -> 0 -ctmx092 comparetotmag 9.99999999E+999999999 -9.99999999E+999999999 -> 0 -ctmx093 comparetotmag -9.99999999E+999999999 -9.99999999E+999999999 -> 0 - --- some differing length/exponent cases --- in this first group, compare would compare all equal -ctmx100 comparetotmag 7.0 7.0 -> 0 -ctmx101 comparetotmag 7.0 7 -> -1 -ctmx102 comparetotmag 7 7.0 -> 1 -ctmx103 comparetotmag 7E+0 7.0 -> 1 -ctmx104 comparetotmag 70E-1 7.0 -> 0 -ctmx105 comparetotmag 0.7E+1 7 -> 0 -ctmx106 comparetotmag 70E-1 7 -> -1 -ctmx107 comparetotmag 7.0 7E+0 -> -1 -ctmx108 comparetotmag 7.0 70E-1 -> 0 -ctmx109 comparetotmag 7 0.7E+1 -> 0 -ctmx110 comparetotmag 7 70E-1 -> 1 - -ctmx120 comparetotmag 8.0 7.0 -> 1 -ctmx121 comparetotmag 8.0 7 -> 1 -ctmx122 comparetotmag 8 7.0 -> 1 -ctmx123 comparetotmag 8E+0 7.0 -> 1 -ctmx124 comparetotmag 80E-1 7.0 -> 1 -ctmx125 comparetotmag 0.8E+1 7 -> 1 -ctmx126 comparetotmag 80E-1 7 -> 1 -ctmx127 comparetotmag 8.0 7E+0 -> 1 -ctmx128 comparetotmag 8.0 70E-1 -> 1 -ctmx129 comparetotmag 8 0.7E+1 -> 1 -ctmx130 comparetotmag 8 70E-1 -> 1 - -ctmx140 comparetotmag 8.0 9.0 -> -1 -ctmx141 comparetotmag 8.0 9 -> -1 -ctmx142 comparetotmag 8 9.0 -> -1 -ctmx143 comparetotmag 8E+0 9.0 -> -1 -ctmx144 comparetotmag 80E-1 9.0 -> -1 -ctmx145 comparetotmag 0.8E+1 9 -> -1 -ctmx146 comparetotmag 80E-1 9 -> -1 -ctmx147 comparetotmag 8.0 9E+0 -> -1 -ctmx148 comparetotmag 8.0 90E-1 -> -1 -ctmx149 comparetotmag 8 0.9E+1 -> -1 -ctmx150 comparetotmag 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -ctmx200 comparetotmag -7.0 7.0 -> 0 -ctmx201 comparetotmag -7.0 7 -> -1 -ctmx202 comparetotmag -7 7.0 -> 1 -ctmx203 comparetotmag -7E+0 7.0 -> 1 -ctmx204 comparetotmag -70E-1 7.0 -> 0 -ctmx205 comparetotmag -0.7E+1 7 -> 0 -ctmx206 comparetotmag -70E-1 7 -> -1 -ctmx207 comparetotmag -7.0 7E+0 -> -1 -ctmx208 comparetotmag -7.0 70E-1 -> 0 -ctmx209 comparetotmag -7 0.7E+1 -> 0 -ctmx210 comparetotmag -7 70E-1 -> 1 - -ctmx220 comparetotmag -8.0 7.0 -> 1 -ctmx221 comparetotmag -8.0 7 -> 1 -ctmx222 comparetotmag -8 7.0 -> 1 -ctmx223 comparetotmag -8E+0 7.0 -> 1 -ctmx224 comparetotmag -80E-1 7.0 -> 1 -ctmx225 comparetotmag -0.8E+1 7 -> 1 -ctmx226 comparetotmag -80E-1 7 -> 1 -ctmx227 comparetotmag -8.0 7E+0 -> 1 -ctmx228 comparetotmag -8.0 70E-1 -> 1 -ctmx229 comparetotmag -8 0.7E+1 -> 1 -ctmx230 comparetotmag -8 70E-1 -> 1 - -ctmx240 comparetotmag -8.0 9.0 -> -1 -ctmx241 comparetotmag -8.0 9 -> -1 -ctmx242 comparetotmag -8 9.0 -> -1 -ctmx243 comparetotmag -8E+0 9.0 -> -1 -ctmx244 comparetotmag -80E-1 9.0 -> -1 -ctmx245 comparetotmag -0.8E+1 9 -> -1 -ctmx246 comparetotmag -80E-1 9 -> -1 -ctmx247 comparetotmag -8.0 9E+0 -> -1 -ctmx248 comparetotmag -8.0 90E-1 -> -1 -ctmx249 comparetotmag -8 0.9E+1 -> -1 -ctmx250 comparetotmag -8 90E-1 -> -1 - --- and again, with sign changes +- .. -ctmx300 comparetotmag 7.0 -7.0 -> 0 -ctmx301 comparetotmag 7.0 -7 -> -1 -ctmx302 comparetotmag 7 -7.0 -> 1 -ctmx303 comparetotmag 7E+0 -7.0 -> 1 -ctmx304 comparetotmag 70E-1 -7.0 -> 0 -ctmx305 comparetotmag .7E+1 -7 -> 0 -ctmx306 comparetotmag 70E-1 -7 -> -1 -ctmx307 comparetotmag 7.0 -7E+0 -> -1 -ctmx308 comparetotmag 7.0 -70E-1 -> 0 -ctmx309 comparetotmag 7 -.7E+1 -> 0 -ctmx310 comparetotmag 7 -70E-1 -> 1 - -ctmx320 comparetotmag 8.0 -7.0 -> 1 -ctmx321 comparetotmag 8.0 -7 -> 1 -ctmx322 comparetotmag 8 -7.0 -> 1 -ctmx323 comparetotmag 8E+0 -7.0 -> 1 -ctmx324 comparetotmag 80E-1 -7.0 -> 1 -ctmx325 comparetotmag .8E+1 -7 -> 1 -ctmx326 comparetotmag 80E-1 -7 -> 1 -ctmx327 comparetotmag 8.0 -7E+0 -> 1 -ctmx328 comparetotmag 8.0 -70E-1 -> 1 -ctmx329 comparetotmag 8 -.7E+1 -> 1 -ctmx330 comparetotmag 8 -70E-1 -> 1 - -ctmx340 comparetotmag 8.0 -9.0 -> -1 -ctmx341 comparetotmag 8.0 -9 -> -1 -ctmx342 comparetotmag 8 -9.0 -> -1 -ctmx343 comparetotmag 8E+0 -9.0 -> -1 -ctmx344 comparetotmag 80E-1 -9.0 -> -1 -ctmx345 comparetotmag .8E+1 -9 -> -1 -ctmx346 comparetotmag 80E-1 -9 -> -1 -ctmx347 comparetotmag 8.0 -9E+0 -> -1 -ctmx348 comparetotmag 8.0 -90E-1 -> -1 -ctmx349 comparetotmag 8 -.9E+1 -> -1 -ctmx350 comparetotmag 8 -90E-1 -> -1 - --- and again, with sign changes -- .. -ctmx400 comparetotmag -7.0 -7.0 -> 0 -ctmx401 comparetotmag -7.0 -7 -> -1 -ctmx402 comparetotmag -7 -7.0 -> 1 -ctmx403 comparetotmag -7E+0 -7.0 -> 1 -ctmx404 comparetotmag -70E-1 -7.0 -> 0 -ctmx405 comparetotmag -.7E+1 -7 -> 0 -ctmx406 comparetotmag -70E-1 -7 -> -1 -ctmx407 comparetotmag -7.0 -7E+0 -> -1 -ctmx408 comparetotmag -7.0 -70E-1 -> 0 -ctmx409 comparetotmag -7 -.7E+1 -> 0 -ctmx410 comparetotmag -7 -70E-1 -> 1 - -ctmx420 comparetotmag -8.0 -7.0 -> 1 -ctmx421 comparetotmag -8.0 -7 -> 1 -ctmx422 comparetotmag -8 -7.0 -> 1 -ctmx423 comparetotmag -8E+0 -7.0 -> 1 -ctmx424 comparetotmag -80E-1 -7.0 -> 1 -ctmx425 comparetotmag -.8E+1 -7 -> 1 -ctmx426 comparetotmag -80E-1 -7 -> 1 -ctmx427 comparetotmag -8.0 -7E+0 -> 1 -ctmx428 comparetotmag -8.0 -70E-1 -> 1 -ctmx429 comparetotmag -8 -.7E+1 -> 1 -ctmx430 comparetotmag -8 -70E-1 -> 1 - -ctmx440 comparetotmag -8.0 -9.0 -> -1 -ctmx441 comparetotmag -8.0 -9 -> -1 -ctmx442 comparetotmag -8 -9.0 -> -1 -ctmx443 comparetotmag -8E+0 -9.0 -> -1 -ctmx444 comparetotmag -80E-1 -9.0 -> -1 -ctmx445 comparetotmag -.8E+1 -9 -> -1 -ctmx446 comparetotmag -80E-1 -9 -> -1 -ctmx447 comparetotmag -8.0 -9E+0 -> -1 -ctmx448 comparetotmag -8.0 -90E-1 -> -1 -ctmx449 comparetotmag -8 -.9E+1 -> -1 -ctmx450 comparetotmag -8 -90E-1 -> -1 - - --- testcases that subtract to lots of zeros at boundaries [pgr] -precision: 40 -ctmx470 comparetotmag 123.4560000000000000E789 123.456E789 -> -1 -ctmx471 comparetotmag 123.456000000000000E-89 123.456E-89 -> -1 -ctmx472 comparetotmag 123.45600000000000E789 123.456E789 -> -1 -ctmx473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1 -ctmx474 comparetotmag 123.456000000000E789 123.456E789 -> -1 -ctmx475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1 -ctmx476 comparetotmag 123.4560000000E789 123.456E789 -> -1 -ctmx477 comparetotmag 123.456000000E-89 123.456E-89 -> -1 -ctmx478 comparetotmag 123.45600000E789 123.456E789 -> -1 -ctmx479 comparetotmag 123.4560000E-89 123.456E-89 -> -1 -ctmx480 comparetotmag 123.456000E789 123.456E789 -> -1 -ctmx481 comparetotmag 123.45600E-89 123.456E-89 -> -1 -ctmx482 comparetotmag 123.4560E789 123.456E789 -> -1 -ctmx483 comparetotmag 123.456E-89 123.456E-89 -> 0 -ctmx484 comparetotmag 123.456E-89 123.4560000000000000E-89 -> 1 -ctmx485 comparetotmag 123.456E789 123.456000000000000E789 -> 1 -ctmx486 comparetotmag 123.456E-89 123.45600000000000E-89 -> 1 -ctmx487 comparetotmag 123.456E789 123.4560000000000E789 -> 1 -ctmx488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1 -ctmx489 comparetotmag 123.456E789 123.45600000000E789 -> 1 -ctmx490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1 -ctmx491 comparetotmag 123.456E789 123.456000000E789 -> 1 -ctmx492 comparetotmag 123.456E-89 123.45600000E-89 -> 1 -ctmx493 comparetotmag 123.456E789 123.4560000E789 -> 1 -ctmx494 comparetotmag 123.456E-89 123.456000E-89 -> 1 -ctmx495 comparetotmag 123.456E789 123.45600E789 -> 1 -ctmx496 comparetotmag 123.456E-89 123.4560E-89 -> 1 -ctmx497 comparetotmag 123.456E789 123.456E789 -> 0 - --- wide-ranging, around precision; signs equal -precision: 9 -ctmx500 comparetotmag 1 1E-15 -> 1 -ctmx501 comparetotmag 1 1E-14 -> 1 -ctmx502 comparetotmag 1 1E-13 -> 1 -ctmx503 comparetotmag 1 1E-12 -> 1 -ctmx504 comparetotmag 1 1E-11 -> 1 -ctmx505 comparetotmag 1 1E-10 -> 1 -ctmx506 comparetotmag 1 1E-9 -> 1 -ctmx507 comparetotmag 1 1E-8 -> 1 -ctmx508 comparetotmag 1 1E-7 -> 1 -ctmx509 comparetotmag 1 1E-6 -> 1 -ctmx510 comparetotmag 1 1E-5 -> 1 -ctmx511 comparetotmag 1 1E-4 -> 1 -ctmx512 comparetotmag 1 1E-3 -> 1 -ctmx513 comparetotmag 1 1E-2 -> 1 -ctmx514 comparetotmag 1 1E-1 -> 1 -ctmx515 comparetotmag 1 1E-0 -> 0 -ctmx516 comparetotmag 1 1E+1 -> -1 -ctmx517 comparetotmag 1 1E+2 -> -1 -ctmx518 comparetotmag 1 1E+3 -> -1 -ctmx519 comparetotmag 1 1E+4 -> -1 -ctmx521 comparetotmag 1 1E+5 -> -1 -ctmx522 comparetotmag 1 1E+6 -> -1 -ctmx523 comparetotmag 1 1E+7 -> -1 -ctmx524 comparetotmag 1 1E+8 -> -1 -ctmx525 comparetotmag 1 1E+9 -> -1 -ctmx526 comparetotmag 1 1E+10 -> -1 -ctmx527 comparetotmag 1 1E+11 -> -1 -ctmx528 comparetotmag 1 1E+12 -> -1 -ctmx529 comparetotmag 1 1E+13 -> -1 -ctmx530 comparetotmag 1 1E+14 -> -1 -ctmx531 comparetotmag 1 1E+15 -> -1 --- LR swap -ctmx540 comparetotmag 1E-15 1 -> -1 -ctmx541 comparetotmag 1E-14 1 -> -1 -ctmx542 comparetotmag 1E-13 1 -> -1 -ctmx543 comparetotmag 1E-12 1 -> -1 -ctmx544 comparetotmag 1E-11 1 -> -1 -ctmx545 comparetotmag 1E-10 1 -> -1 -ctmx546 comparetotmag 1E-9 1 -> -1 -ctmx547 comparetotmag 1E-8 1 -> -1 -ctmx548 comparetotmag 1E-7 1 -> -1 -ctmx549 comparetotmag 1E-6 1 -> -1 -ctmx550 comparetotmag 1E-5 1 -> -1 -ctmx551 comparetotmag 1E-4 1 -> -1 -ctmx552 comparetotmag 1E-3 1 -> -1 -ctmx553 comparetotmag 1E-2 1 -> -1 -ctmx554 comparetotmag 1E-1 1 -> -1 -ctmx555 comparetotmag 1E-0 1 -> 0 -ctmx556 comparetotmag 1E+1 1 -> 1 -ctmx557 comparetotmag 1E+2 1 -> 1 -ctmx558 comparetotmag 1E+3 1 -> 1 -ctmx559 comparetotmag 1E+4 1 -> 1 -ctmx561 comparetotmag 1E+5 1 -> 1 -ctmx562 comparetotmag 1E+6 1 -> 1 -ctmx563 comparetotmag 1E+7 1 -> 1 -ctmx564 comparetotmag 1E+8 1 -> 1 -ctmx565 comparetotmag 1E+9 1 -> 1 -ctmx566 comparetotmag 1E+10 1 -> 1 -ctmx567 comparetotmag 1E+11 1 -> 1 -ctmx568 comparetotmag 1E+12 1 -> 1 -ctmx569 comparetotmag 1E+13 1 -> 1 -ctmx570 comparetotmag 1E+14 1 -> 1 -ctmx571 comparetotmag 1E+15 1 -> 1 --- similar with an useful coefficient, one side only -ctmx580 comparetotmag 0.000000987654321 1E-15 -> 1 -ctmx581 comparetotmag 0.000000987654321 1E-14 -> 1 -ctmx582 comparetotmag 0.000000987654321 1E-13 -> 1 -ctmx583 comparetotmag 0.000000987654321 1E-12 -> 1 -ctmx584 comparetotmag 0.000000987654321 1E-11 -> 1 -ctmx585 comparetotmag 0.000000987654321 1E-10 -> 1 -ctmx586 comparetotmag 0.000000987654321 1E-9 -> 1 -ctmx587 comparetotmag 0.000000987654321 1E-8 -> 1 -ctmx588 comparetotmag 0.000000987654321 1E-7 -> 1 -ctmx589 comparetotmag 0.000000987654321 1E-6 -> -1 -ctmx590 comparetotmag 0.000000987654321 1E-5 -> -1 -ctmx591 comparetotmag 0.000000987654321 1E-4 -> -1 -ctmx592 comparetotmag 0.000000987654321 1E-3 -> -1 -ctmx593 comparetotmag 0.000000987654321 1E-2 -> -1 -ctmx594 comparetotmag 0.000000987654321 1E-1 -> -1 -ctmx595 comparetotmag 0.000000987654321 1E-0 -> -1 -ctmx596 comparetotmag 0.000000987654321 1E+1 -> -1 -ctmx597 comparetotmag 0.000000987654321 1E+2 -> -1 -ctmx598 comparetotmag 0.000000987654321 1E+3 -> -1 -ctmx599 comparetotmag 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -precision: 20 -ctmx600 comparetotmag 12 12.2345 -> -1 -ctmx601 comparetotmag 12.0 12.2345 -> -1 -ctmx602 comparetotmag 12.00 12.2345 -> -1 -ctmx603 comparetotmag 12.000 12.2345 -> -1 -ctmx604 comparetotmag 12.0000 12.2345 -> -1 -ctmx605 comparetotmag 12.00000 12.2345 -> -1 -ctmx606 comparetotmag 12.000000 12.2345 -> -1 -ctmx607 comparetotmag 12.0000000 12.2345 -> -1 -ctmx608 comparetotmag 12.00000000 12.2345 -> -1 -ctmx609 comparetotmag 12.000000000 12.2345 -> -1 -ctmx610 comparetotmag 12.1234 12 -> 1 -ctmx611 comparetotmag 12.1234 12.0 -> 1 -ctmx612 comparetotmag 12.1234 12.00 -> 1 -ctmx613 comparetotmag 12.1234 12.000 -> 1 -ctmx614 comparetotmag 12.1234 12.0000 -> 1 -ctmx615 comparetotmag 12.1234 12.00000 -> 1 -ctmx616 comparetotmag 12.1234 12.000000 -> 1 -ctmx617 comparetotmag 12.1234 12.0000000 -> 1 -ctmx618 comparetotmag 12.1234 12.00000000 -> 1 -ctmx619 comparetotmag 12.1234 12.000000000 -> 1 -ctmx620 comparetotmag -12 -12.2345 -> -1 -ctmx621 comparetotmag -12.0 -12.2345 -> -1 -ctmx622 comparetotmag -12.00 -12.2345 -> -1 -ctmx623 comparetotmag -12.000 -12.2345 -> -1 -ctmx624 comparetotmag -12.0000 -12.2345 -> -1 -ctmx625 comparetotmag -12.00000 -12.2345 -> -1 -ctmx626 comparetotmag -12.000000 -12.2345 -> -1 -ctmx627 comparetotmag -12.0000000 -12.2345 -> -1 -ctmx628 comparetotmag -12.00000000 -12.2345 -> -1 -ctmx629 comparetotmag -12.000000000 -12.2345 -> -1 -ctmx630 comparetotmag -12.1234 -12 -> 1 -ctmx631 comparetotmag -12.1234 -12.0 -> 1 -ctmx632 comparetotmag -12.1234 -12.00 -> 1 -ctmx633 comparetotmag -12.1234 -12.000 -> 1 -ctmx634 comparetotmag -12.1234 -12.0000 -> 1 -ctmx635 comparetotmag -12.1234 -12.00000 -> 1 -ctmx636 comparetotmag -12.1234 -12.000000 -> 1 -ctmx637 comparetotmag -12.1234 -12.0000000 -> 1 -ctmx638 comparetotmag -12.1234 -12.00000000 -> 1 -ctmx639 comparetotmag -12.1234 -12.000000000 -> 1 -precision: 9 - --- extended zeros -ctmx640 comparetotmag 0 0 -> 0 -ctmx641 comparetotmag 0 -0 -> 0 -ctmx642 comparetotmag 0 -0.0 -> 1 -ctmx643 comparetotmag 0 0.0 -> 1 -ctmx644 comparetotmag -0 0 -> 0 -ctmx645 comparetotmag -0 -0 -> 0 -ctmx646 comparetotmag -0 -0.0 -> 1 -ctmx647 comparetotmag -0 0.0 -> 1 -ctmx648 comparetotmag 0.0 0 -> -1 -ctmx649 comparetotmag 0.0 -0 -> -1 -ctmx650 comparetotmag 0.0 -0.0 -> 0 -ctmx651 comparetotmag 0.0 0.0 -> 0 -ctmx652 comparetotmag -0.0 0 -> -1 -ctmx653 comparetotmag -0.0 -0 -> -1 -ctmx654 comparetotmag -0.0 -0.0 -> 0 -ctmx655 comparetotmag -0.0 0.0 -> 0 - -ctmx656 comparetotmag -0E1 0.0 -> 1 -ctmx657 comparetotmag -0E2 0.0 -> 1 -ctmx658 comparetotmag 0E1 0.0 -> 1 -ctmx659 comparetotmag 0E2 0.0 -> 1 -ctmx660 comparetotmag -0E1 0 -> 1 -ctmx661 comparetotmag -0E2 0 -> 1 -ctmx662 comparetotmag 0E1 0 -> 1 -ctmx663 comparetotmag 0E2 0 -> 1 -ctmx664 comparetotmag -0E1 -0E1 -> 0 -ctmx665 comparetotmag -0E2 -0E1 -> 1 -ctmx666 comparetotmag 0E1 -0E1 -> 0 -ctmx667 comparetotmag 0E2 -0E1 -> 1 -ctmx668 comparetotmag -0E1 -0E2 -> -1 -ctmx669 comparetotmag -0E2 -0E2 -> 0 -ctmx670 comparetotmag 0E1 -0E2 -> -1 -ctmx671 comparetotmag 0E2 -0E2 -> 0 -ctmx672 comparetotmag -0E1 0E1 -> 0 -ctmx673 comparetotmag -0E2 0E1 -> 1 -ctmx674 comparetotmag 0E1 0E1 -> 0 -ctmx675 comparetotmag 0E2 0E1 -> 1 -ctmx676 comparetotmag -0E1 0E2 -> -1 -ctmx677 comparetotmag -0E2 0E2 -> 0 -ctmx678 comparetotmag 0E1 0E2 -> -1 -ctmx679 comparetotmag 0E2 0E2 -> 0 - --- trailing zeros; unit-y -precision: 20 -ctmx680 comparetotmag 12 12 -> 0 -ctmx681 comparetotmag 12 12.0 -> 1 -ctmx682 comparetotmag 12 12.00 -> 1 -ctmx683 comparetotmag 12 12.000 -> 1 -ctmx684 comparetotmag 12 12.0000 -> 1 -ctmx685 comparetotmag 12 12.00000 -> 1 -ctmx686 comparetotmag 12 12.000000 -> 1 -ctmx687 comparetotmag 12 12.0000000 -> 1 -ctmx688 comparetotmag 12 12.00000000 -> 1 -ctmx689 comparetotmag 12 12.000000000 -> 1 -ctmx690 comparetotmag 12 12 -> 0 -ctmx691 comparetotmag 12.0 12 -> -1 -ctmx692 comparetotmag 12.00 12 -> -1 -ctmx693 comparetotmag 12.000 12 -> -1 -ctmx694 comparetotmag 12.0000 12 -> -1 -ctmx695 comparetotmag 12.00000 12 -> -1 -ctmx696 comparetotmag 12.000000 12 -> -1 -ctmx697 comparetotmag 12.0000000 12 -> -1 -ctmx698 comparetotmag 12.00000000 12 -> -1 -ctmx699 comparetotmag 12.000000000 12 -> -1 - --- long operand checks -maxexponent: 999 -minexponent: -999 -precision: 9 -ctmx701 comparetotmag 12345678000 1 -> 1 -ctmx702 comparetotmag 1 12345678000 -> -1 -ctmx703 comparetotmag 1234567800 1 -> 1 -ctmx704 comparetotmag 1 1234567800 -> -1 -ctmx705 comparetotmag 1234567890 1 -> 1 -ctmx706 comparetotmag 1 1234567890 -> -1 -ctmx707 comparetotmag 1234567891 1 -> 1 -ctmx708 comparetotmag 1 1234567891 -> -1 -ctmx709 comparetotmag 12345678901 1 -> 1 -ctmx710 comparetotmag 1 12345678901 -> -1 -ctmx711 comparetotmag 1234567896 1 -> 1 -ctmx712 comparetotmag 1 1234567896 -> -1 -ctmx713 comparetotmag -1234567891 1 -> 1 -ctmx714 comparetotmag 1 -1234567891 -> -1 -ctmx715 comparetotmag -12345678901 1 -> 1 -ctmx716 comparetotmag 1 -12345678901 -> -1 -ctmx717 comparetotmag -1234567896 1 -> 1 -ctmx718 comparetotmag 1 -1234567896 -> -1 - -precision: 15 --- same with plenty of precision -ctmx721 comparetotmag 12345678000 1 -> 1 -ctmx722 comparetotmag 1 12345678000 -> -1 -ctmx723 comparetotmag 1234567800 1 -> 1 -ctmx724 comparetotmag 1 1234567800 -> -1 -ctmx725 comparetotmag 1234567890 1 -> 1 -ctmx726 comparetotmag 1 1234567890 -> -1 -ctmx727 comparetotmag 1234567891 1 -> 1 -ctmx728 comparetotmag 1 1234567891 -> -1 -ctmx729 comparetotmag 12345678901 1 -> 1 -ctmx730 comparetotmag 1 12345678901 -> -1 -ctmx731 comparetotmag 1234567896 1 -> 1 -ctmx732 comparetotmag 1 1234567896 -> -1 - --- residue cases -precision: 5 -ctmx740 comparetotmag 1 0.9999999 -> 1 -ctmx741 comparetotmag 1 0.999999 -> 1 -ctmx742 comparetotmag 1 0.99999 -> 1 -ctmx743 comparetotmag 1 1.0000 -> 1 -ctmx744 comparetotmag 1 1.00001 -> -1 -ctmx745 comparetotmag 1 1.000001 -> -1 -ctmx746 comparetotmag 1 1.0000001 -> -1 -ctmx750 comparetotmag 0.9999999 1 -> -1 -ctmx751 comparetotmag 0.999999 1 -> -1 -ctmx752 comparetotmag 0.99999 1 -> -1 -ctmx753 comparetotmag 1.0000 1 -> -1 -ctmx754 comparetotmag 1.00001 1 -> 1 -ctmx755 comparetotmag 1.000001 1 -> 1 -ctmx756 comparetotmag 1.0000001 1 -> 1 - --- a selection of longies -ctmx760 comparetotmag -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> 1 -ctmx761 comparetotmag -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0 -ctmx762 comparetotmag -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> 1 -ctmx763 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 --- precisions above or below the difference should have no effect -precision: 11 -ctmx764 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 10 -ctmx765 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 9 -ctmx766 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 8 -ctmx767 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 7 -ctmx768 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 6 -ctmx769 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 5 -ctmx770 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 4 -ctmx771 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 3 -ctmx772 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 2 -ctmx773 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 -precision: 1 -ctmx774 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 - --- Specials -precision: 9 -ctmx780 comparetotmag Inf -Inf -> 0 -ctmx781 comparetotmag Inf -1000 -> 1 -ctmx782 comparetotmag Inf -1 -> 1 -ctmx783 comparetotmag Inf -0 -> 1 -ctmx784 comparetotmag Inf 0 -> 1 -ctmx785 comparetotmag Inf 1 -> 1 -ctmx786 comparetotmag Inf 1000 -> 1 -ctmx787 comparetotmag Inf Inf -> 0 -ctmx788 comparetotmag -1000 Inf -> -1 -ctmx789 comparetotmag -Inf Inf -> 0 -ctmx790 comparetotmag -1 Inf -> -1 -ctmx791 comparetotmag -0 Inf -> -1 -ctmx792 comparetotmag 0 Inf -> -1 -ctmx793 comparetotmag 1 Inf -> -1 -ctmx794 comparetotmag 1000 Inf -> -1 -ctmx795 comparetotmag Inf Inf -> 0 - -ctmx800 comparetotmag -Inf -Inf -> 0 -ctmx801 comparetotmag -Inf -1000 -> 1 -ctmx802 comparetotmag -Inf -1 -> 1 -ctmx803 comparetotmag -Inf -0 -> 1 -ctmx804 comparetotmag -Inf 0 -> 1 -ctmx805 comparetotmag -Inf 1 -> 1 -ctmx806 comparetotmag -Inf 1000 -> 1 -ctmx807 comparetotmag -Inf Inf -> 0 -ctmx808 comparetotmag -Inf -Inf -> 0 -ctmx809 comparetotmag -1000 -Inf -> -1 -ctmx810 comparetotmag -1 -Inf -> -1 -ctmx811 comparetotmag -0 -Inf -> -1 -ctmx812 comparetotmag 0 -Inf -> -1 -ctmx813 comparetotmag 1 -Inf -> -1 -ctmx814 comparetotmag 1000 -Inf -> -1 -ctmx815 comparetotmag Inf -Inf -> 0 - -ctmx821 comparetotmag NaN -Inf -> 1 -ctmx822 comparetotmag NaN -1000 -> 1 -ctmx823 comparetotmag NaN -1 -> 1 -ctmx824 comparetotmag NaN -0 -> 1 -ctmx825 comparetotmag NaN 0 -> 1 -ctmx826 comparetotmag NaN 1 -> 1 -ctmx827 comparetotmag NaN 1000 -> 1 -ctmx828 comparetotmag NaN Inf -> 1 -ctmx829 comparetotmag NaN NaN -> 0 -ctmx830 comparetotmag -Inf NaN -> -1 -ctmx831 comparetotmag -1000 NaN -> -1 -ctmx832 comparetotmag -1 NaN -> -1 -ctmx833 comparetotmag -0 NaN -> -1 -ctmx834 comparetotmag 0 NaN -> -1 -ctmx835 comparetotmag 1 NaN -> -1 -ctmx836 comparetotmag 1000 NaN -> -1 -ctmx837 comparetotmag Inf NaN -> -1 -ctmx838 comparetotmag -NaN -NaN -> 0 -ctmx839 comparetotmag +NaN -NaN -> 0 -ctmx840 comparetotmag -NaN +NaN -> 0 - -ctmx841 comparetotmag sNaN -sNaN -> 0 -ctmx842 comparetotmag sNaN -NaN -> -1 -ctmx843 comparetotmag sNaN -Inf -> 1 -ctmx844 comparetotmag sNaN -1000 -> 1 -ctmx845 comparetotmag sNaN -1 -> 1 -ctmx846 comparetotmag sNaN -0 -> 1 -ctmx847 comparetotmag sNaN 0 -> 1 -ctmx848 comparetotmag sNaN 1 -> 1 -ctmx849 comparetotmag sNaN 1000 -> 1 -ctmx850 comparetotmag sNaN NaN -> -1 -ctmx851 comparetotmag sNaN sNaN -> 0 - -ctmx852 comparetotmag -sNaN sNaN -> 0 -ctmx853 comparetotmag -NaN sNaN -> 1 -ctmx854 comparetotmag -Inf sNaN -> -1 -ctmx855 comparetotmag -1000 sNaN -> -1 -ctmx856 comparetotmag -1 sNaN -> -1 -ctmx857 comparetotmag -0 sNaN -> -1 -ctmx858 comparetotmag 0 sNaN -> -1 -ctmx859 comparetotmag 1 sNaN -> -1 -ctmx860 comparetotmag 1000 sNaN -> -1 -ctmx861 comparetotmag Inf sNaN -> -1 -ctmx862 comparetotmag NaN sNaN -> 1 -ctmx863 comparetotmag sNaN sNaN -> 0 - -ctmx871 comparetotmag -sNaN -sNaN -> 0 -ctmx872 comparetotmag -sNaN -NaN -> -1 -ctmx873 comparetotmag -sNaN -Inf -> 1 -ctmx874 comparetotmag -sNaN -1000 -> 1 -ctmx875 comparetotmag -sNaN -1 -> 1 -ctmx876 comparetotmag -sNaN -0 -> 1 -ctmx877 comparetotmag -sNaN 0 -> 1 -ctmx878 comparetotmag -sNaN 1 -> 1 -ctmx879 comparetotmag -sNaN 1000 -> 1 -ctmx880 comparetotmag -sNaN NaN -> -1 -ctmx881 comparetotmag -sNaN sNaN -> 0 - -ctmx882 comparetotmag -sNaN -sNaN -> 0 -ctmx883 comparetotmag -NaN -sNaN -> 1 -ctmx884 comparetotmag -Inf -sNaN -> -1 -ctmx885 comparetotmag -1000 -sNaN -> -1 -ctmx886 comparetotmag -1 -sNaN -> -1 -ctmx887 comparetotmag -0 -sNaN -> -1 -ctmx888 comparetotmag 0 -sNaN -> -1 -ctmx889 comparetotmag 1 -sNaN -> -1 -ctmx890 comparetotmag 1000 -sNaN -> -1 -ctmx891 comparetotmag Inf -sNaN -> -1 -ctmx892 comparetotmag NaN -sNaN -> 1 -ctmx893 comparetotmag sNaN -sNaN -> 0 - --- NaNs with payload -ctmx960 comparetotmag NaN9 -Inf -> 1 -ctmx961 comparetotmag NaN8 999 -> 1 -ctmx962 comparetotmag NaN77 Inf -> 1 -ctmx963 comparetotmag -NaN67 NaN5 -> 1 -ctmx964 comparetotmag -Inf -NaN4 -> -1 -ctmx965 comparetotmag -999 -NaN33 -> -1 -ctmx966 comparetotmag Inf NaN2 -> -1 - -ctmx970 comparetotmag -NaN41 -NaN42 -> -1 -ctmx971 comparetotmag +NaN41 -NaN42 -> -1 -ctmx972 comparetotmag -NaN41 +NaN42 -> -1 -ctmx973 comparetotmag +NaN41 +NaN42 -> -1 -ctmx974 comparetotmag -NaN42 -NaN01 -> 1 -ctmx975 comparetotmag +NaN42 -NaN01 -> 1 -ctmx976 comparetotmag -NaN42 +NaN01 -> 1 -ctmx977 comparetotmag +NaN42 +NaN01 -> 1 - -ctmx980 comparetotmag -sNaN771 -sNaN772 -> -1 -ctmx981 comparetotmag +sNaN771 -sNaN772 -> -1 -ctmx982 comparetotmag -sNaN771 +sNaN772 -> -1 -ctmx983 comparetotmag +sNaN771 +sNaN772 -> -1 -ctmx984 comparetotmag -sNaN772 -sNaN771 -> 1 -ctmx985 comparetotmag +sNaN772 -sNaN771 -> 1 -ctmx986 comparetotmag -sNaN772 +sNaN771 -> 1 -ctmx987 comparetotmag +sNaN772 +sNaN771 -> 1 - -ctmx991 comparetotmag -sNaN99 -Inf -> 1 -ctmx992 comparetotmag sNaN98 -11 -> 1 -ctmx993 comparetotmag sNaN97 NaN -> -1 -ctmx994 comparetotmag sNaN16 sNaN94 -> -1 -ctmx995 comparetotmag NaN85 sNaN83 -> 1 -ctmx996 comparetotmag -Inf sNaN92 -> -1 -ctmx997 comparetotmag 088 sNaN81 -> -1 -ctmx998 comparetotmag Inf sNaN90 -> -1 -ctmx999 comparetotmag NaN -sNaN89 -> 1 - --- overflow and underflow tests .. subnormal results now allowed -maxExponent: 999999999 -minexponent: -999999999 -ctmx1080 comparetotmag +1.23456789012345E-0 9E+999999999 -> -1 -ctmx1081 comparetotmag 9E+999999999 +1.23456789012345E-0 -> 1 -ctmx1082 comparetotmag +0.100 9E-999999999 -> 1 -ctmx1083 comparetotmag 9E-999999999 +0.100 -> -1 -ctmx1085 comparetotmag -1.23456789012345E-0 9E+999999999 -> -1 -ctmx1086 comparetotmag 9E+999999999 -1.23456789012345E-0 -> 1 -ctmx1087 comparetotmag -0.100 9E-999999999 -> 1 -ctmx1088 comparetotmag 9E-999999999 -0.100 -> -1 - -ctmx1089 comparetotmag 1e-599999999 1e-400000001 -> -1 -ctmx1090 comparetotmag 1e-599999999 1e-400000000 -> -1 -ctmx1091 comparetotmag 1e-600000000 1e-400000000 -> -1 -ctmx1092 comparetotmag 9e-999999998 0.01 -> -1 -ctmx1093 comparetotmag 9e-999999998 0.1 -> -1 -ctmx1094 comparetotmag 0.01 9e-999999998 -> 1 -ctmx1095 comparetotmag 1e599999999 1e400000001 -> 1 -ctmx1096 comparetotmag 1e599999999 1e400000000 -> 1 -ctmx1097 comparetotmag 1e600000000 1e400000000 -> 1 -ctmx1098 comparetotmag 9e999999998 100 -> 1 -ctmx1099 comparetotmag 9e999999998 10 -> 1 -ctmx1100 comparetotmag 100 9e999999998 -> -1 --- signs -ctmx1101 comparetotmag 1e+777777777 1e+411111111 -> 1 -ctmx1102 comparetotmag 1e+777777777 -1e+411111111 -> 1 -ctmx1103 comparetotmag -1e+777777777 1e+411111111 -> 1 -ctmx1104 comparetotmag -1e+777777777 -1e+411111111 -> 1 -ctmx1105 comparetotmag 1e-777777777 1e-411111111 -> -1 -ctmx1106 comparetotmag 1e-777777777 -1e-411111111 -> -1 -ctmx1107 comparetotmag -1e-777777777 1e-411111111 -> -1 -ctmx1108 comparetotmag -1e-777777777 -1e-411111111 -> -1 - --- spread zeros -ctmx1110 comparetotmag 0E-383 0 -> -1 -ctmx1111 comparetotmag 0E-383 -0 -> -1 -ctmx1112 comparetotmag -0E-383 0 -> -1 -ctmx1113 comparetotmag -0E-383 -0 -> -1 -ctmx1114 comparetotmag 0E-383 0E+384 -> -1 -ctmx1115 comparetotmag 0E-383 -0E+384 -> -1 -ctmx1116 comparetotmag -0E-383 0E+384 -> -1 -ctmx1117 comparetotmag -0E-383 -0E+384 -> -1 -ctmx1118 comparetotmag 0 0E+384 -> -1 -ctmx1119 comparetotmag 0 -0E+384 -> -1 -ctmx1120 comparetotmag -0 0E+384 -> -1 -ctmx1121 comparetotmag -0 -0E+384 -> -1 - -ctmx1130 comparetotmag 0E+384 0 -> 1 -ctmx1131 comparetotmag 0E+384 -0 -> 1 -ctmx1132 comparetotmag -0E+384 0 -> 1 -ctmx1133 comparetotmag -0E+384 -0 -> 1 -ctmx1134 comparetotmag 0E+384 0E-383 -> 1 -ctmx1135 comparetotmag 0E+384 -0E-383 -> 1 -ctmx1136 comparetotmag -0E+384 0E-383 -> 1 -ctmx1137 comparetotmag -0E+384 -0E-383 -> 1 -ctmx1138 comparetotmag 0 0E-383 -> 1 -ctmx1139 comparetotmag 0 -0E-383 -> 1 -ctmx1140 comparetotmag -0 0E-383 -> 1 -ctmx1141 comparetotmag -0 -0E-383 -> 1 - --- Null tests -ctmx9990 comparetotmag 10 # -> NaN Invalid_operation -ctmx9991 comparetotmag # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- comparetotmag.decTest -- decimal comparison, abs. total ordering -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that it cannot be assumed that add/subtract tests cover paths +-- for this operation adequately, here, because the code might be +-- quite different (comparison cannot overflow or underflow, so +-- actual subtractions are not necessary). Similarly, comparetotal +-- will have some radically different paths than compare. + +extended: 1 +precision: 16 +rounding: half_up +maxExponent: 384 +minExponent: -383 + +-- sanity checks +ctmx001 comparetotmag -2 -2 -> 0 +ctmx002 comparetotmag -2 -1 -> 1 +ctmx003 comparetotmag -2 0 -> 1 +ctmx004 comparetotmag -2 1 -> 1 +ctmx005 comparetotmag -2 2 -> 0 +ctmx006 comparetotmag -1 -2 -> -1 +ctmx007 comparetotmag -1 -1 -> 0 +ctmx008 comparetotmag -1 0 -> 1 +ctmx009 comparetotmag -1 1 -> 0 +ctmx010 comparetotmag -1 2 -> -1 +ctmx011 comparetotmag 0 -2 -> -1 +ctmx012 comparetotmag 0 -1 -> -1 +ctmx013 comparetotmag 0 0 -> 0 +ctmx014 comparetotmag 0 1 -> -1 +ctmx015 comparetotmag 0 2 -> -1 +ctmx016 comparetotmag 1 -2 -> -1 +ctmx017 comparetotmag 1 -1 -> 0 +ctmx018 comparetotmag 1 0 -> 1 +ctmx019 comparetotmag 1 1 -> 0 +ctmx020 comparetotmag 1 2 -> -1 +ctmx021 comparetotmag 2 -2 -> 0 +ctmx022 comparetotmag 2 -1 -> 1 +ctmx023 comparetotmag 2 0 -> 1 +ctmx025 comparetotmag 2 1 -> 1 +ctmx026 comparetotmag 2 2 -> 0 + +ctmx031 comparetotmag -20 -20 -> 0 +ctmx032 comparetotmag -20 -10 -> 1 +ctmx033 comparetotmag -20 00 -> 1 +ctmx034 comparetotmag -20 10 -> 1 +ctmx035 comparetotmag -20 20 -> 0 +ctmx036 comparetotmag -10 -20 -> -1 +ctmx037 comparetotmag -10 -10 -> 0 +ctmx038 comparetotmag -10 00 -> 1 +ctmx039 comparetotmag -10 10 -> 0 +ctmx040 comparetotmag -10 20 -> -1 +ctmx041 comparetotmag 00 -20 -> -1 +ctmx042 comparetotmag 00 -10 -> -1 +ctmx043 comparetotmag 00 00 -> 0 +ctmx044 comparetotmag 00 10 -> -1 +ctmx045 comparetotmag 00 20 -> -1 +ctmx046 comparetotmag 10 -20 -> -1 +ctmx047 comparetotmag 10 -10 -> 0 +ctmx048 comparetotmag 10 00 -> 1 +ctmx049 comparetotmag 10 10 -> 0 +ctmx050 comparetotmag 10 20 -> -1 +ctmx051 comparetotmag 20 -20 -> 0 +ctmx052 comparetotmag 20 -10 -> 1 +ctmx053 comparetotmag 20 00 -> 1 +ctmx055 comparetotmag 20 10 -> 1 +ctmx056 comparetotmag 20 20 -> 0 + +ctmx061 comparetotmag -2.0 -2.0 -> 0 +ctmx062 comparetotmag -2.0 -1.0 -> 1 +ctmx063 comparetotmag -2.0 0.0 -> 1 +ctmx064 comparetotmag -2.0 1.0 -> 1 +ctmx065 comparetotmag -2.0 2.0 -> 0 +ctmx066 comparetotmag -1.0 -2.0 -> -1 +ctmx067 comparetotmag -1.0 -1.0 -> 0 +ctmx068 comparetotmag -1.0 0.0 -> 1 +ctmx069 comparetotmag -1.0 1.0 -> 0 +ctmx070 comparetotmag -1.0 2.0 -> -1 +ctmx071 comparetotmag 0.0 -2.0 -> -1 +ctmx072 comparetotmag 0.0 -1.0 -> -1 +ctmx073 comparetotmag 0.0 0.0 -> 0 +ctmx074 comparetotmag 0.0 1.0 -> -1 +ctmx075 comparetotmag 0.0 2.0 -> -1 +ctmx076 comparetotmag 1.0 -2.0 -> -1 +ctmx077 comparetotmag 1.0 -1.0 -> 0 +ctmx078 comparetotmag 1.0 0.0 -> 1 +ctmx079 comparetotmag 1.0 1.0 -> 0 +ctmx080 comparetotmag 1.0 2.0 -> -1 +ctmx081 comparetotmag 2.0 -2.0 -> 0 +ctmx082 comparetotmag 2.0 -1.0 -> 1 +ctmx083 comparetotmag 2.0 0.0 -> 1 +ctmx085 comparetotmag 2.0 1.0 -> 1 +ctmx086 comparetotmag 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +maxexponent: 999999999 +minexponent: -999999999 +ctmx090 comparetotmag 9.99999999E+999999999 9.99999999E+999999999 -> 0 +ctmx091 comparetotmag -9.99999999E+999999999 9.99999999E+999999999 -> 0 +ctmx092 comparetotmag 9.99999999E+999999999 -9.99999999E+999999999 -> 0 +ctmx093 comparetotmag -9.99999999E+999999999 -9.99999999E+999999999 -> 0 + +-- some differing length/exponent cases +-- in this first group, compare would compare all equal +ctmx100 comparetotmag 7.0 7.0 -> 0 +ctmx101 comparetotmag 7.0 7 -> -1 +ctmx102 comparetotmag 7 7.0 -> 1 +ctmx103 comparetotmag 7E+0 7.0 -> 1 +ctmx104 comparetotmag 70E-1 7.0 -> 0 +ctmx105 comparetotmag 0.7E+1 7 -> 0 +ctmx106 comparetotmag 70E-1 7 -> -1 +ctmx107 comparetotmag 7.0 7E+0 -> -1 +ctmx108 comparetotmag 7.0 70E-1 -> 0 +ctmx109 comparetotmag 7 0.7E+1 -> 0 +ctmx110 comparetotmag 7 70E-1 -> 1 + +ctmx120 comparetotmag 8.0 7.0 -> 1 +ctmx121 comparetotmag 8.0 7 -> 1 +ctmx122 comparetotmag 8 7.0 -> 1 +ctmx123 comparetotmag 8E+0 7.0 -> 1 +ctmx124 comparetotmag 80E-1 7.0 -> 1 +ctmx125 comparetotmag 0.8E+1 7 -> 1 +ctmx126 comparetotmag 80E-1 7 -> 1 +ctmx127 comparetotmag 8.0 7E+0 -> 1 +ctmx128 comparetotmag 8.0 70E-1 -> 1 +ctmx129 comparetotmag 8 0.7E+1 -> 1 +ctmx130 comparetotmag 8 70E-1 -> 1 + +ctmx140 comparetotmag 8.0 9.0 -> -1 +ctmx141 comparetotmag 8.0 9 -> -1 +ctmx142 comparetotmag 8 9.0 -> -1 +ctmx143 comparetotmag 8E+0 9.0 -> -1 +ctmx144 comparetotmag 80E-1 9.0 -> -1 +ctmx145 comparetotmag 0.8E+1 9 -> -1 +ctmx146 comparetotmag 80E-1 9 -> -1 +ctmx147 comparetotmag 8.0 9E+0 -> -1 +ctmx148 comparetotmag 8.0 90E-1 -> -1 +ctmx149 comparetotmag 8 0.9E+1 -> -1 +ctmx150 comparetotmag 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +ctmx200 comparetotmag -7.0 7.0 -> 0 +ctmx201 comparetotmag -7.0 7 -> -1 +ctmx202 comparetotmag -7 7.0 -> 1 +ctmx203 comparetotmag -7E+0 7.0 -> 1 +ctmx204 comparetotmag -70E-1 7.0 -> 0 +ctmx205 comparetotmag -0.7E+1 7 -> 0 +ctmx206 comparetotmag -70E-1 7 -> -1 +ctmx207 comparetotmag -7.0 7E+0 -> -1 +ctmx208 comparetotmag -7.0 70E-1 -> 0 +ctmx209 comparetotmag -7 0.7E+1 -> 0 +ctmx210 comparetotmag -7 70E-1 -> 1 + +ctmx220 comparetotmag -8.0 7.0 -> 1 +ctmx221 comparetotmag -8.0 7 -> 1 +ctmx222 comparetotmag -8 7.0 -> 1 +ctmx223 comparetotmag -8E+0 7.0 -> 1 +ctmx224 comparetotmag -80E-1 7.0 -> 1 +ctmx225 comparetotmag -0.8E+1 7 -> 1 +ctmx226 comparetotmag -80E-1 7 -> 1 +ctmx227 comparetotmag -8.0 7E+0 -> 1 +ctmx228 comparetotmag -8.0 70E-1 -> 1 +ctmx229 comparetotmag -8 0.7E+1 -> 1 +ctmx230 comparetotmag -8 70E-1 -> 1 + +ctmx240 comparetotmag -8.0 9.0 -> -1 +ctmx241 comparetotmag -8.0 9 -> -1 +ctmx242 comparetotmag -8 9.0 -> -1 +ctmx243 comparetotmag -8E+0 9.0 -> -1 +ctmx244 comparetotmag -80E-1 9.0 -> -1 +ctmx245 comparetotmag -0.8E+1 9 -> -1 +ctmx246 comparetotmag -80E-1 9 -> -1 +ctmx247 comparetotmag -8.0 9E+0 -> -1 +ctmx248 comparetotmag -8.0 90E-1 -> -1 +ctmx249 comparetotmag -8 0.9E+1 -> -1 +ctmx250 comparetotmag -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +ctmx300 comparetotmag 7.0 -7.0 -> 0 +ctmx301 comparetotmag 7.0 -7 -> -1 +ctmx302 comparetotmag 7 -7.0 -> 1 +ctmx303 comparetotmag 7E+0 -7.0 -> 1 +ctmx304 comparetotmag 70E-1 -7.0 -> 0 +ctmx305 comparetotmag .7E+1 -7 -> 0 +ctmx306 comparetotmag 70E-1 -7 -> -1 +ctmx307 comparetotmag 7.0 -7E+0 -> -1 +ctmx308 comparetotmag 7.0 -70E-1 -> 0 +ctmx309 comparetotmag 7 -.7E+1 -> 0 +ctmx310 comparetotmag 7 -70E-1 -> 1 + +ctmx320 comparetotmag 8.0 -7.0 -> 1 +ctmx321 comparetotmag 8.0 -7 -> 1 +ctmx322 comparetotmag 8 -7.0 -> 1 +ctmx323 comparetotmag 8E+0 -7.0 -> 1 +ctmx324 comparetotmag 80E-1 -7.0 -> 1 +ctmx325 comparetotmag .8E+1 -7 -> 1 +ctmx326 comparetotmag 80E-1 -7 -> 1 +ctmx327 comparetotmag 8.0 -7E+0 -> 1 +ctmx328 comparetotmag 8.0 -70E-1 -> 1 +ctmx329 comparetotmag 8 -.7E+1 -> 1 +ctmx330 comparetotmag 8 -70E-1 -> 1 + +ctmx340 comparetotmag 8.0 -9.0 -> -1 +ctmx341 comparetotmag 8.0 -9 -> -1 +ctmx342 comparetotmag 8 -9.0 -> -1 +ctmx343 comparetotmag 8E+0 -9.0 -> -1 +ctmx344 comparetotmag 80E-1 -9.0 -> -1 +ctmx345 comparetotmag .8E+1 -9 -> -1 +ctmx346 comparetotmag 80E-1 -9 -> -1 +ctmx347 comparetotmag 8.0 -9E+0 -> -1 +ctmx348 comparetotmag 8.0 -90E-1 -> -1 +ctmx349 comparetotmag 8 -.9E+1 -> -1 +ctmx350 comparetotmag 8 -90E-1 -> -1 + +-- and again, with sign changes -- .. +ctmx400 comparetotmag -7.0 -7.0 -> 0 +ctmx401 comparetotmag -7.0 -7 -> -1 +ctmx402 comparetotmag -7 -7.0 -> 1 +ctmx403 comparetotmag -7E+0 -7.0 -> 1 +ctmx404 comparetotmag -70E-1 -7.0 -> 0 +ctmx405 comparetotmag -.7E+1 -7 -> 0 +ctmx406 comparetotmag -70E-1 -7 -> -1 +ctmx407 comparetotmag -7.0 -7E+0 -> -1 +ctmx408 comparetotmag -7.0 -70E-1 -> 0 +ctmx409 comparetotmag -7 -.7E+1 -> 0 +ctmx410 comparetotmag -7 -70E-1 -> 1 + +ctmx420 comparetotmag -8.0 -7.0 -> 1 +ctmx421 comparetotmag -8.0 -7 -> 1 +ctmx422 comparetotmag -8 -7.0 -> 1 +ctmx423 comparetotmag -8E+0 -7.0 -> 1 +ctmx424 comparetotmag -80E-1 -7.0 -> 1 +ctmx425 comparetotmag -.8E+1 -7 -> 1 +ctmx426 comparetotmag -80E-1 -7 -> 1 +ctmx427 comparetotmag -8.0 -7E+0 -> 1 +ctmx428 comparetotmag -8.0 -70E-1 -> 1 +ctmx429 comparetotmag -8 -.7E+1 -> 1 +ctmx430 comparetotmag -8 -70E-1 -> 1 + +ctmx440 comparetotmag -8.0 -9.0 -> -1 +ctmx441 comparetotmag -8.0 -9 -> -1 +ctmx442 comparetotmag -8 -9.0 -> -1 +ctmx443 comparetotmag -8E+0 -9.0 -> -1 +ctmx444 comparetotmag -80E-1 -9.0 -> -1 +ctmx445 comparetotmag -.8E+1 -9 -> -1 +ctmx446 comparetotmag -80E-1 -9 -> -1 +ctmx447 comparetotmag -8.0 -9E+0 -> -1 +ctmx448 comparetotmag -8.0 -90E-1 -> -1 +ctmx449 comparetotmag -8 -.9E+1 -> -1 +ctmx450 comparetotmag -8 -90E-1 -> -1 + + +-- testcases that subtract to lots of zeros at boundaries [pgr] +precision: 40 +ctmx470 comparetotmag 123.4560000000000000E789 123.456E789 -> -1 +ctmx471 comparetotmag 123.456000000000000E-89 123.456E-89 -> -1 +ctmx472 comparetotmag 123.45600000000000E789 123.456E789 -> -1 +ctmx473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1 +ctmx474 comparetotmag 123.456000000000E789 123.456E789 -> -1 +ctmx475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1 +ctmx476 comparetotmag 123.4560000000E789 123.456E789 -> -1 +ctmx477 comparetotmag 123.456000000E-89 123.456E-89 -> -1 +ctmx478 comparetotmag 123.45600000E789 123.456E789 -> -1 +ctmx479 comparetotmag 123.4560000E-89 123.456E-89 -> -1 +ctmx480 comparetotmag 123.456000E789 123.456E789 -> -1 +ctmx481 comparetotmag 123.45600E-89 123.456E-89 -> -1 +ctmx482 comparetotmag 123.4560E789 123.456E789 -> -1 +ctmx483 comparetotmag 123.456E-89 123.456E-89 -> 0 +ctmx484 comparetotmag 123.456E-89 123.4560000000000000E-89 -> 1 +ctmx485 comparetotmag 123.456E789 123.456000000000000E789 -> 1 +ctmx486 comparetotmag 123.456E-89 123.45600000000000E-89 -> 1 +ctmx487 comparetotmag 123.456E789 123.4560000000000E789 -> 1 +ctmx488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1 +ctmx489 comparetotmag 123.456E789 123.45600000000E789 -> 1 +ctmx490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1 +ctmx491 comparetotmag 123.456E789 123.456000000E789 -> 1 +ctmx492 comparetotmag 123.456E-89 123.45600000E-89 -> 1 +ctmx493 comparetotmag 123.456E789 123.4560000E789 -> 1 +ctmx494 comparetotmag 123.456E-89 123.456000E-89 -> 1 +ctmx495 comparetotmag 123.456E789 123.45600E789 -> 1 +ctmx496 comparetotmag 123.456E-89 123.4560E-89 -> 1 +ctmx497 comparetotmag 123.456E789 123.456E789 -> 0 + +-- wide-ranging, around precision; signs equal +precision: 9 +ctmx500 comparetotmag 1 1E-15 -> 1 +ctmx501 comparetotmag 1 1E-14 -> 1 +ctmx502 comparetotmag 1 1E-13 -> 1 +ctmx503 comparetotmag 1 1E-12 -> 1 +ctmx504 comparetotmag 1 1E-11 -> 1 +ctmx505 comparetotmag 1 1E-10 -> 1 +ctmx506 comparetotmag 1 1E-9 -> 1 +ctmx507 comparetotmag 1 1E-8 -> 1 +ctmx508 comparetotmag 1 1E-7 -> 1 +ctmx509 comparetotmag 1 1E-6 -> 1 +ctmx510 comparetotmag 1 1E-5 -> 1 +ctmx511 comparetotmag 1 1E-4 -> 1 +ctmx512 comparetotmag 1 1E-3 -> 1 +ctmx513 comparetotmag 1 1E-2 -> 1 +ctmx514 comparetotmag 1 1E-1 -> 1 +ctmx515 comparetotmag 1 1E-0 -> 0 +ctmx516 comparetotmag 1 1E+1 -> -1 +ctmx517 comparetotmag 1 1E+2 -> -1 +ctmx518 comparetotmag 1 1E+3 -> -1 +ctmx519 comparetotmag 1 1E+4 -> -1 +ctmx521 comparetotmag 1 1E+5 -> -1 +ctmx522 comparetotmag 1 1E+6 -> -1 +ctmx523 comparetotmag 1 1E+7 -> -1 +ctmx524 comparetotmag 1 1E+8 -> -1 +ctmx525 comparetotmag 1 1E+9 -> -1 +ctmx526 comparetotmag 1 1E+10 -> -1 +ctmx527 comparetotmag 1 1E+11 -> -1 +ctmx528 comparetotmag 1 1E+12 -> -1 +ctmx529 comparetotmag 1 1E+13 -> -1 +ctmx530 comparetotmag 1 1E+14 -> -1 +ctmx531 comparetotmag 1 1E+15 -> -1 +-- LR swap +ctmx540 comparetotmag 1E-15 1 -> -1 +ctmx541 comparetotmag 1E-14 1 -> -1 +ctmx542 comparetotmag 1E-13 1 -> -1 +ctmx543 comparetotmag 1E-12 1 -> -1 +ctmx544 comparetotmag 1E-11 1 -> -1 +ctmx545 comparetotmag 1E-10 1 -> -1 +ctmx546 comparetotmag 1E-9 1 -> -1 +ctmx547 comparetotmag 1E-8 1 -> -1 +ctmx548 comparetotmag 1E-7 1 -> -1 +ctmx549 comparetotmag 1E-6 1 -> -1 +ctmx550 comparetotmag 1E-5 1 -> -1 +ctmx551 comparetotmag 1E-4 1 -> -1 +ctmx552 comparetotmag 1E-3 1 -> -1 +ctmx553 comparetotmag 1E-2 1 -> -1 +ctmx554 comparetotmag 1E-1 1 -> -1 +ctmx555 comparetotmag 1E-0 1 -> 0 +ctmx556 comparetotmag 1E+1 1 -> 1 +ctmx557 comparetotmag 1E+2 1 -> 1 +ctmx558 comparetotmag 1E+3 1 -> 1 +ctmx559 comparetotmag 1E+4 1 -> 1 +ctmx561 comparetotmag 1E+5 1 -> 1 +ctmx562 comparetotmag 1E+6 1 -> 1 +ctmx563 comparetotmag 1E+7 1 -> 1 +ctmx564 comparetotmag 1E+8 1 -> 1 +ctmx565 comparetotmag 1E+9 1 -> 1 +ctmx566 comparetotmag 1E+10 1 -> 1 +ctmx567 comparetotmag 1E+11 1 -> 1 +ctmx568 comparetotmag 1E+12 1 -> 1 +ctmx569 comparetotmag 1E+13 1 -> 1 +ctmx570 comparetotmag 1E+14 1 -> 1 +ctmx571 comparetotmag 1E+15 1 -> 1 +-- similar with an useful coefficient, one side only +ctmx580 comparetotmag 0.000000987654321 1E-15 -> 1 +ctmx581 comparetotmag 0.000000987654321 1E-14 -> 1 +ctmx582 comparetotmag 0.000000987654321 1E-13 -> 1 +ctmx583 comparetotmag 0.000000987654321 1E-12 -> 1 +ctmx584 comparetotmag 0.000000987654321 1E-11 -> 1 +ctmx585 comparetotmag 0.000000987654321 1E-10 -> 1 +ctmx586 comparetotmag 0.000000987654321 1E-9 -> 1 +ctmx587 comparetotmag 0.000000987654321 1E-8 -> 1 +ctmx588 comparetotmag 0.000000987654321 1E-7 -> 1 +ctmx589 comparetotmag 0.000000987654321 1E-6 -> -1 +ctmx590 comparetotmag 0.000000987654321 1E-5 -> -1 +ctmx591 comparetotmag 0.000000987654321 1E-4 -> -1 +ctmx592 comparetotmag 0.000000987654321 1E-3 -> -1 +ctmx593 comparetotmag 0.000000987654321 1E-2 -> -1 +ctmx594 comparetotmag 0.000000987654321 1E-1 -> -1 +ctmx595 comparetotmag 0.000000987654321 1E-0 -> -1 +ctmx596 comparetotmag 0.000000987654321 1E+1 -> -1 +ctmx597 comparetotmag 0.000000987654321 1E+2 -> -1 +ctmx598 comparetotmag 0.000000987654321 1E+3 -> -1 +ctmx599 comparetotmag 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +precision: 20 +ctmx600 comparetotmag 12 12.2345 -> -1 +ctmx601 comparetotmag 12.0 12.2345 -> -1 +ctmx602 comparetotmag 12.00 12.2345 -> -1 +ctmx603 comparetotmag 12.000 12.2345 -> -1 +ctmx604 comparetotmag 12.0000 12.2345 -> -1 +ctmx605 comparetotmag 12.00000 12.2345 -> -1 +ctmx606 comparetotmag 12.000000 12.2345 -> -1 +ctmx607 comparetotmag 12.0000000 12.2345 -> -1 +ctmx608 comparetotmag 12.00000000 12.2345 -> -1 +ctmx609 comparetotmag 12.000000000 12.2345 -> -1 +ctmx610 comparetotmag 12.1234 12 -> 1 +ctmx611 comparetotmag 12.1234 12.0 -> 1 +ctmx612 comparetotmag 12.1234 12.00 -> 1 +ctmx613 comparetotmag 12.1234 12.000 -> 1 +ctmx614 comparetotmag 12.1234 12.0000 -> 1 +ctmx615 comparetotmag 12.1234 12.00000 -> 1 +ctmx616 comparetotmag 12.1234 12.000000 -> 1 +ctmx617 comparetotmag 12.1234 12.0000000 -> 1 +ctmx618 comparetotmag 12.1234 12.00000000 -> 1 +ctmx619 comparetotmag 12.1234 12.000000000 -> 1 +ctmx620 comparetotmag -12 -12.2345 -> -1 +ctmx621 comparetotmag -12.0 -12.2345 -> -1 +ctmx622 comparetotmag -12.00 -12.2345 -> -1 +ctmx623 comparetotmag -12.000 -12.2345 -> -1 +ctmx624 comparetotmag -12.0000 -12.2345 -> -1 +ctmx625 comparetotmag -12.00000 -12.2345 -> -1 +ctmx626 comparetotmag -12.000000 -12.2345 -> -1 +ctmx627 comparetotmag -12.0000000 -12.2345 -> -1 +ctmx628 comparetotmag -12.00000000 -12.2345 -> -1 +ctmx629 comparetotmag -12.000000000 -12.2345 -> -1 +ctmx630 comparetotmag -12.1234 -12 -> 1 +ctmx631 comparetotmag -12.1234 -12.0 -> 1 +ctmx632 comparetotmag -12.1234 -12.00 -> 1 +ctmx633 comparetotmag -12.1234 -12.000 -> 1 +ctmx634 comparetotmag -12.1234 -12.0000 -> 1 +ctmx635 comparetotmag -12.1234 -12.00000 -> 1 +ctmx636 comparetotmag -12.1234 -12.000000 -> 1 +ctmx637 comparetotmag -12.1234 -12.0000000 -> 1 +ctmx638 comparetotmag -12.1234 -12.00000000 -> 1 +ctmx639 comparetotmag -12.1234 -12.000000000 -> 1 +precision: 9 + +-- extended zeros +ctmx640 comparetotmag 0 0 -> 0 +ctmx641 comparetotmag 0 -0 -> 0 +ctmx642 comparetotmag 0 -0.0 -> 1 +ctmx643 comparetotmag 0 0.0 -> 1 +ctmx644 comparetotmag -0 0 -> 0 +ctmx645 comparetotmag -0 -0 -> 0 +ctmx646 comparetotmag -0 -0.0 -> 1 +ctmx647 comparetotmag -0 0.0 -> 1 +ctmx648 comparetotmag 0.0 0 -> -1 +ctmx649 comparetotmag 0.0 -0 -> -1 +ctmx650 comparetotmag 0.0 -0.0 -> 0 +ctmx651 comparetotmag 0.0 0.0 -> 0 +ctmx652 comparetotmag -0.0 0 -> -1 +ctmx653 comparetotmag -0.0 -0 -> -1 +ctmx654 comparetotmag -0.0 -0.0 -> 0 +ctmx655 comparetotmag -0.0 0.0 -> 0 + +ctmx656 comparetotmag -0E1 0.0 -> 1 +ctmx657 comparetotmag -0E2 0.0 -> 1 +ctmx658 comparetotmag 0E1 0.0 -> 1 +ctmx659 comparetotmag 0E2 0.0 -> 1 +ctmx660 comparetotmag -0E1 0 -> 1 +ctmx661 comparetotmag -0E2 0 -> 1 +ctmx662 comparetotmag 0E1 0 -> 1 +ctmx663 comparetotmag 0E2 0 -> 1 +ctmx664 comparetotmag -0E1 -0E1 -> 0 +ctmx665 comparetotmag -0E2 -0E1 -> 1 +ctmx666 comparetotmag 0E1 -0E1 -> 0 +ctmx667 comparetotmag 0E2 -0E1 -> 1 +ctmx668 comparetotmag -0E1 -0E2 -> -1 +ctmx669 comparetotmag -0E2 -0E2 -> 0 +ctmx670 comparetotmag 0E1 -0E2 -> -1 +ctmx671 comparetotmag 0E2 -0E2 -> 0 +ctmx672 comparetotmag -0E1 0E1 -> 0 +ctmx673 comparetotmag -0E2 0E1 -> 1 +ctmx674 comparetotmag 0E1 0E1 -> 0 +ctmx675 comparetotmag 0E2 0E1 -> 1 +ctmx676 comparetotmag -0E1 0E2 -> -1 +ctmx677 comparetotmag -0E2 0E2 -> 0 +ctmx678 comparetotmag 0E1 0E2 -> -1 +ctmx679 comparetotmag 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +precision: 20 +ctmx680 comparetotmag 12 12 -> 0 +ctmx681 comparetotmag 12 12.0 -> 1 +ctmx682 comparetotmag 12 12.00 -> 1 +ctmx683 comparetotmag 12 12.000 -> 1 +ctmx684 comparetotmag 12 12.0000 -> 1 +ctmx685 comparetotmag 12 12.00000 -> 1 +ctmx686 comparetotmag 12 12.000000 -> 1 +ctmx687 comparetotmag 12 12.0000000 -> 1 +ctmx688 comparetotmag 12 12.00000000 -> 1 +ctmx689 comparetotmag 12 12.000000000 -> 1 +ctmx690 comparetotmag 12 12 -> 0 +ctmx691 comparetotmag 12.0 12 -> -1 +ctmx692 comparetotmag 12.00 12 -> -1 +ctmx693 comparetotmag 12.000 12 -> -1 +ctmx694 comparetotmag 12.0000 12 -> -1 +ctmx695 comparetotmag 12.00000 12 -> -1 +ctmx696 comparetotmag 12.000000 12 -> -1 +ctmx697 comparetotmag 12.0000000 12 -> -1 +ctmx698 comparetotmag 12.00000000 12 -> -1 +ctmx699 comparetotmag 12.000000000 12 -> -1 + +-- long operand checks +maxexponent: 999 +minexponent: -999 +precision: 9 +ctmx701 comparetotmag 12345678000 1 -> 1 +ctmx702 comparetotmag 1 12345678000 -> -1 +ctmx703 comparetotmag 1234567800 1 -> 1 +ctmx704 comparetotmag 1 1234567800 -> -1 +ctmx705 comparetotmag 1234567890 1 -> 1 +ctmx706 comparetotmag 1 1234567890 -> -1 +ctmx707 comparetotmag 1234567891 1 -> 1 +ctmx708 comparetotmag 1 1234567891 -> -1 +ctmx709 comparetotmag 12345678901 1 -> 1 +ctmx710 comparetotmag 1 12345678901 -> -1 +ctmx711 comparetotmag 1234567896 1 -> 1 +ctmx712 comparetotmag 1 1234567896 -> -1 +ctmx713 comparetotmag -1234567891 1 -> 1 +ctmx714 comparetotmag 1 -1234567891 -> -1 +ctmx715 comparetotmag -12345678901 1 -> 1 +ctmx716 comparetotmag 1 -12345678901 -> -1 +ctmx717 comparetotmag -1234567896 1 -> 1 +ctmx718 comparetotmag 1 -1234567896 -> -1 + +precision: 15 +-- same with plenty of precision +ctmx721 comparetotmag 12345678000 1 -> 1 +ctmx722 comparetotmag 1 12345678000 -> -1 +ctmx723 comparetotmag 1234567800 1 -> 1 +ctmx724 comparetotmag 1 1234567800 -> -1 +ctmx725 comparetotmag 1234567890 1 -> 1 +ctmx726 comparetotmag 1 1234567890 -> -1 +ctmx727 comparetotmag 1234567891 1 -> 1 +ctmx728 comparetotmag 1 1234567891 -> -1 +ctmx729 comparetotmag 12345678901 1 -> 1 +ctmx730 comparetotmag 1 12345678901 -> -1 +ctmx731 comparetotmag 1234567896 1 -> 1 +ctmx732 comparetotmag 1 1234567896 -> -1 + +-- residue cases +precision: 5 +ctmx740 comparetotmag 1 0.9999999 -> 1 +ctmx741 comparetotmag 1 0.999999 -> 1 +ctmx742 comparetotmag 1 0.99999 -> 1 +ctmx743 comparetotmag 1 1.0000 -> 1 +ctmx744 comparetotmag 1 1.00001 -> -1 +ctmx745 comparetotmag 1 1.000001 -> -1 +ctmx746 comparetotmag 1 1.0000001 -> -1 +ctmx750 comparetotmag 0.9999999 1 -> -1 +ctmx751 comparetotmag 0.999999 1 -> -1 +ctmx752 comparetotmag 0.99999 1 -> -1 +ctmx753 comparetotmag 1.0000 1 -> -1 +ctmx754 comparetotmag 1.00001 1 -> 1 +ctmx755 comparetotmag 1.000001 1 -> 1 +ctmx756 comparetotmag 1.0000001 1 -> 1 + +-- a selection of longies +ctmx760 comparetotmag -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> 1 +ctmx761 comparetotmag -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0 +ctmx762 comparetotmag -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> 1 +ctmx763 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +-- precisions above or below the difference should have no effect +precision: 11 +ctmx764 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 10 +ctmx765 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 9 +ctmx766 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 8 +ctmx767 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 7 +ctmx768 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 6 +ctmx769 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 5 +ctmx770 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 4 +ctmx771 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 3 +ctmx772 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 2 +ctmx773 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 +precision: 1 +ctmx774 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1 + +-- Specials +precision: 9 +ctmx780 comparetotmag Inf -Inf -> 0 +ctmx781 comparetotmag Inf -1000 -> 1 +ctmx782 comparetotmag Inf -1 -> 1 +ctmx783 comparetotmag Inf -0 -> 1 +ctmx784 comparetotmag Inf 0 -> 1 +ctmx785 comparetotmag Inf 1 -> 1 +ctmx786 comparetotmag Inf 1000 -> 1 +ctmx787 comparetotmag Inf Inf -> 0 +ctmx788 comparetotmag -1000 Inf -> -1 +ctmx789 comparetotmag -Inf Inf -> 0 +ctmx790 comparetotmag -1 Inf -> -1 +ctmx791 comparetotmag -0 Inf -> -1 +ctmx792 comparetotmag 0 Inf -> -1 +ctmx793 comparetotmag 1 Inf -> -1 +ctmx794 comparetotmag 1000 Inf -> -1 +ctmx795 comparetotmag Inf Inf -> 0 + +ctmx800 comparetotmag -Inf -Inf -> 0 +ctmx801 comparetotmag -Inf -1000 -> 1 +ctmx802 comparetotmag -Inf -1 -> 1 +ctmx803 comparetotmag -Inf -0 -> 1 +ctmx804 comparetotmag -Inf 0 -> 1 +ctmx805 comparetotmag -Inf 1 -> 1 +ctmx806 comparetotmag -Inf 1000 -> 1 +ctmx807 comparetotmag -Inf Inf -> 0 +ctmx808 comparetotmag -Inf -Inf -> 0 +ctmx809 comparetotmag -1000 -Inf -> -1 +ctmx810 comparetotmag -1 -Inf -> -1 +ctmx811 comparetotmag -0 -Inf -> -1 +ctmx812 comparetotmag 0 -Inf -> -1 +ctmx813 comparetotmag 1 -Inf -> -1 +ctmx814 comparetotmag 1000 -Inf -> -1 +ctmx815 comparetotmag Inf -Inf -> 0 + +ctmx821 comparetotmag NaN -Inf -> 1 +ctmx822 comparetotmag NaN -1000 -> 1 +ctmx823 comparetotmag NaN -1 -> 1 +ctmx824 comparetotmag NaN -0 -> 1 +ctmx825 comparetotmag NaN 0 -> 1 +ctmx826 comparetotmag NaN 1 -> 1 +ctmx827 comparetotmag NaN 1000 -> 1 +ctmx828 comparetotmag NaN Inf -> 1 +ctmx829 comparetotmag NaN NaN -> 0 +ctmx830 comparetotmag -Inf NaN -> -1 +ctmx831 comparetotmag -1000 NaN -> -1 +ctmx832 comparetotmag -1 NaN -> -1 +ctmx833 comparetotmag -0 NaN -> -1 +ctmx834 comparetotmag 0 NaN -> -1 +ctmx835 comparetotmag 1 NaN -> -1 +ctmx836 comparetotmag 1000 NaN -> -1 +ctmx837 comparetotmag Inf NaN -> -1 +ctmx838 comparetotmag -NaN -NaN -> 0 +ctmx839 comparetotmag +NaN -NaN -> 0 +ctmx840 comparetotmag -NaN +NaN -> 0 + +ctmx841 comparetotmag sNaN -sNaN -> 0 +ctmx842 comparetotmag sNaN -NaN -> -1 +ctmx843 comparetotmag sNaN -Inf -> 1 +ctmx844 comparetotmag sNaN -1000 -> 1 +ctmx845 comparetotmag sNaN -1 -> 1 +ctmx846 comparetotmag sNaN -0 -> 1 +ctmx847 comparetotmag sNaN 0 -> 1 +ctmx848 comparetotmag sNaN 1 -> 1 +ctmx849 comparetotmag sNaN 1000 -> 1 +ctmx850 comparetotmag sNaN NaN -> -1 +ctmx851 comparetotmag sNaN sNaN -> 0 + +ctmx852 comparetotmag -sNaN sNaN -> 0 +ctmx853 comparetotmag -NaN sNaN -> 1 +ctmx854 comparetotmag -Inf sNaN -> -1 +ctmx855 comparetotmag -1000 sNaN -> -1 +ctmx856 comparetotmag -1 sNaN -> -1 +ctmx857 comparetotmag -0 sNaN -> -1 +ctmx858 comparetotmag 0 sNaN -> -1 +ctmx859 comparetotmag 1 sNaN -> -1 +ctmx860 comparetotmag 1000 sNaN -> -1 +ctmx861 comparetotmag Inf sNaN -> -1 +ctmx862 comparetotmag NaN sNaN -> 1 +ctmx863 comparetotmag sNaN sNaN -> 0 + +ctmx871 comparetotmag -sNaN -sNaN -> 0 +ctmx872 comparetotmag -sNaN -NaN -> -1 +ctmx873 comparetotmag -sNaN -Inf -> 1 +ctmx874 comparetotmag -sNaN -1000 -> 1 +ctmx875 comparetotmag -sNaN -1 -> 1 +ctmx876 comparetotmag -sNaN -0 -> 1 +ctmx877 comparetotmag -sNaN 0 -> 1 +ctmx878 comparetotmag -sNaN 1 -> 1 +ctmx879 comparetotmag -sNaN 1000 -> 1 +ctmx880 comparetotmag -sNaN NaN -> -1 +ctmx881 comparetotmag -sNaN sNaN -> 0 + +ctmx882 comparetotmag -sNaN -sNaN -> 0 +ctmx883 comparetotmag -NaN -sNaN -> 1 +ctmx884 comparetotmag -Inf -sNaN -> -1 +ctmx885 comparetotmag -1000 -sNaN -> -1 +ctmx886 comparetotmag -1 -sNaN -> -1 +ctmx887 comparetotmag -0 -sNaN -> -1 +ctmx888 comparetotmag 0 -sNaN -> -1 +ctmx889 comparetotmag 1 -sNaN -> -1 +ctmx890 comparetotmag 1000 -sNaN -> -1 +ctmx891 comparetotmag Inf -sNaN -> -1 +ctmx892 comparetotmag NaN -sNaN -> 1 +ctmx893 comparetotmag sNaN -sNaN -> 0 + +-- NaNs with payload +ctmx960 comparetotmag NaN9 -Inf -> 1 +ctmx961 comparetotmag NaN8 999 -> 1 +ctmx962 comparetotmag NaN77 Inf -> 1 +ctmx963 comparetotmag -NaN67 NaN5 -> 1 +ctmx964 comparetotmag -Inf -NaN4 -> -1 +ctmx965 comparetotmag -999 -NaN33 -> -1 +ctmx966 comparetotmag Inf NaN2 -> -1 + +ctmx970 comparetotmag -NaN41 -NaN42 -> -1 +ctmx971 comparetotmag +NaN41 -NaN42 -> -1 +ctmx972 comparetotmag -NaN41 +NaN42 -> -1 +ctmx973 comparetotmag +NaN41 +NaN42 -> -1 +ctmx974 comparetotmag -NaN42 -NaN01 -> 1 +ctmx975 comparetotmag +NaN42 -NaN01 -> 1 +ctmx976 comparetotmag -NaN42 +NaN01 -> 1 +ctmx977 comparetotmag +NaN42 +NaN01 -> 1 + +ctmx980 comparetotmag -sNaN771 -sNaN772 -> -1 +ctmx981 comparetotmag +sNaN771 -sNaN772 -> -1 +ctmx982 comparetotmag -sNaN771 +sNaN772 -> -1 +ctmx983 comparetotmag +sNaN771 +sNaN772 -> -1 +ctmx984 comparetotmag -sNaN772 -sNaN771 -> 1 +ctmx985 comparetotmag +sNaN772 -sNaN771 -> 1 +ctmx986 comparetotmag -sNaN772 +sNaN771 -> 1 +ctmx987 comparetotmag +sNaN772 +sNaN771 -> 1 + +ctmx991 comparetotmag -sNaN99 -Inf -> 1 +ctmx992 comparetotmag sNaN98 -11 -> 1 +ctmx993 comparetotmag sNaN97 NaN -> -1 +ctmx994 comparetotmag sNaN16 sNaN94 -> -1 +ctmx995 comparetotmag NaN85 sNaN83 -> 1 +ctmx996 comparetotmag -Inf sNaN92 -> -1 +ctmx997 comparetotmag 088 sNaN81 -> -1 +ctmx998 comparetotmag Inf sNaN90 -> -1 +ctmx999 comparetotmag NaN -sNaN89 -> 1 + +-- overflow and underflow tests .. subnormal results now allowed +maxExponent: 999999999 +minexponent: -999999999 +ctmx1080 comparetotmag +1.23456789012345E-0 9E+999999999 -> -1 +ctmx1081 comparetotmag 9E+999999999 +1.23456789012345E-0 -> 1 +ctmx1082 comparetotmag +0.100 9E-999999999 -> 1 +ctmx1083 comparetotmag 9E-999999999 +0.100 -> -1 +ctmx1085 comparetotmag -1.23456789012345E-0 9E+999999999 -> -1 +ctmx1086 comparetotmag 9E+999999999 -1.23456789012345E-0 -> 1 +ctmx1087 comparetotmag -0.100 9E-999999999 -> 1 +ctmx1088 comparetotmag 9E-999999999 -0.100 -> -1 + +ctmx1089 comparetotmag 1e-599999999 1e-400000001 -> -1 +ctmx1090 comparetotmag 1e-599999999 1e-400000000 -> -1 +ctmx1091 comparetotmag 1e-600000000 1e-400000000 -> -1 +ctmx1092 comparetotmag 9e-999999998 0.01 -> -1 +ctmx1093 comparetotmag 9e-999999998 0.1 -> -1 +ctmx1094 comparetotmag 0.01 9e-999999998 -> 1 +ctmx1095 comparetotmag 1e599999999 1e400000001 -> 1 +ctmx1096 comparetotmag 1e599999999 1e400000000 -> 1 +ctmx1097 comparetotmag 1e600000000 1e400000000 -> 1 +ctmx1098 comparetotmag 9e999999998 100 -> 1 +ctmx1099 comparetotmag 9e999999998 10 -> 1 +ctmx1100 comparetotmag 100 9e999999998 -> -1 +-- signs +ctmx1101 comparetotmag 1e+777777777 1e+411111111 -> 1 +ctmx1102 comparetotmag 1e+777777777 -1e+411111111 -> 1 +ctmx1103 comparetotmag -1e+777777777 1e+411111111 -> 1 +ctmx1104 comparetotmag -1e+777777777 -1e+411111111 -> 1 +ctmx1105 comparetotmag 1e-777777777 1e-411111111 -> -1 +ctmx1106 comparetotmag 1e-777777777 -1e-411111111 -> -1 +ctmx1107 comparetotmag -1e-777777777 1e-411111111 -> -1 +ctmx1108 comparetotmag -1e-777777777 -1e-411111111 -> -1 + +-- spread zeros +ctmx1110 comparetotmag 0E-383 0 -> -1 +ctmx1111 comparetotmag 0E-383 -0 -> -1 +ctmx1112 comparetotmag -0E-383 0 -> -1 +ctmx1113 comparetotmag -0E-383 -0 -> -1 +ctmx1114 comparetotmag 0E-383 0E+384 -> -1 +ctmx1115 comparetotmag 0E-383 -0E+384 -> -1 +ctmx1116 comparetotmag -0E-383 0E+384 -> -1 +ctmx1117 comparetotmag -0E-383 -0E+384 -> -1 +ctmx1118 comparetotmag 0 0E+384 -> -1 +ctmx1119 comparetotmag 0 -0E+384 -> -1 +ctmx1120 comparetotmag -0 0E+384 -> -1 +ctmx1121 comparetotmag -0 -0E+384 -> -1 + +ctmx1130 comparetotmag 0E+384 0 -> 1 +ctmx1131 comparetotmag 0E+384 -0 -> 1 +ctmx1132 comparetotmag -0E+384 0 -> 1 +ctmx1133 comparetotmag -0E+384 -0 -> 1 +ctmx1134 comparetotmag 0E+384 0E-383 -> 1 +ctmx1135 comparetotmag 0E+384 -0E-383 -> 1 +ctmx1136 comparetotmag -0E+384 0E-383 -> 1 +ctmx1137 comparetotmag -0E+384 -0E-383 -> 1 +ctmx1138 comparetotmag 0 0E-383 -> 1 +ctmx1139 comparetotmag 0 -0E-383 -> 1 +ctmx1140 comparetotmag -0 0E-383 -> 1 +ctmx1141 comparetotmag -0 -0E-383 -> 1 + +-- Null tests +ctmx9990 comparetotmag 10 # -> NaN Invalid_operation +ctmx9991 comparetotmag # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/copy.decTest b/Lib/test/decimaltestdata/copy.decTest index b47e499..d9f299e 100644 --- a/Lib/test/decimaltestdata/copy.decTest +++ b/Lib/test/decimaltestdata/copy.decTest @@ -1,86 +1,86 @@ ------------------------------------------------------------------------- --- copy.decTest -- quiet copy -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check -cpyx001 copy +7.50 -> 7.50 - --- Infinities -cpyx011 copy Infinity -> Infinity -cpyx012 copy -Infinity -> -Infinity - --- NaNs, 0 payload -cpyx021 copy NaN -> NaN -cpyx022 copy -NaN -> -NaN -cpyx023 copy sNaN -> sNaN -cpyx024 copy -sNaN -> -sNaN - --- NaNs, non-0 payload -cpyx031 copy NaN10 -> NaN10 -cpyx032 copy -NaN10 -> -NaN10 -cpyx033 copy sNaN10 -> sNaN10 -cpyx034 copy -sNaN10 -> -sNaN10 -cpyx035 copy NaN7 -> NaN7 -cpyx036 copy -NaN7 -> -NaN7 -cpyx037 copy sNaN101 -> sNaN101 -cpyx038 copy -sNaN101 -> -sNaN101 - --- finites -cpyx101 copy 7 -> 7 -cpyx102 copy -7 -> -7 -cpyx103 copy 75 -> 75 -cpyx104 copy -75 -> -75 -cpyx105 copy 7.50 -> 7.50 -cpyx106 copy -7.50 -> -7.50 -cpyx107 copy 7.500 -> 7.500 -cpyx108 copy -7.500 -> -7.500 - --- zeros -cpyx111 copy 0 -> 0 -cpyx112 copy -0 -> -0 -cpyx113 copy 0E+4 -> 0E+4 -cpyx114 copy -0E+4 -> -0E+4 -cpyx115 copy 0.0000 -> 0.0000 -cpyx116 copy -0.0000 -> -0.0000 -cpyx117 copy 0E-141 -> 0E-141 -cpyx118 copy -0E-141 -> -0E-141 - --- full coefficients, alternating bits -cpyx121 copy 268268268 -> 268268268 -cpyx122 copy -268268268 -> -268268268 -cpyx123 copy 134134134 -> 134134134 -cpyx124 copy -134134134 -> -134134134 - --- Nmax, Nmin, Ntiny -cpyx131 copy 9.99999999E+999 -> 9.99999999E+999 -cpyx132 copy 1E-999 -> 1E-999 -cpyx133 copy 1.00000000E-999 -> 1.00000000E-999 -cpyx134 copy 1E-1007 -> 1E-1007 - -cpyx135 copy -1E-1007 -> -1E-1007 -cpyx136 copy -1.00000000E-999 -> -1.00000000E-999 -cpyx137 copy -1E-999 -> -1E-999 -cpyx138 copy -9.99999999E+999 -> -9.99999999E+999 +------------------------------------------------------------------------ +-- copy.decTest -- quiet copy -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check +cpyx001 copy +7.50 -> 7.50 + +-- Infinities +cpyx011 copy Infinity -> Infinity +cpyx012 copy -Infinity -> -Infinity + +-- NaNs, 0 payload +cpyx021 copy NaN -> NaN +cpyx022 copy -NaN -> -NaN +cpyx023 copy sNaN -> sNaN +cpyx024 copy -sNaN -> -sNaN + +-- NaNs, non-0 payload +cpyx031 copy NaN10 -> NaN10 +cpyx032 copy -NaN10 -> -NaN10 +cpyx033 copy sNaN10 -> sNaN10 +cpyx034 copy -sNaN10 -> -sNaN10 +cpyx035 copy NaN7 -> NaN7 +cpyx036 copy -NaN7 -> -NaN7 +cpyx037 copy sNaN101 -> sNaN101 +cpyx038 copy -sNaN101 -> -sNaN101 + +-- finites +cpyx101 copy 7 -> 7 +cpyx102 copy -7 -> -7 +cpyx103 copy 75 -> 75 +cpyx104 copy -75 -> -75 +cpyx105 copy 7.50 -> 7.50 +cpyx106 copy -7.50 -> -7.50 +cpyx107 copy 7.500 -> 7.500 +cpyx108 copy -7.500 -> -7.500 + +-- zeros +cpyx111 copy 0 -> 0 +cpyx112 copy -0 -> -0 +cpyx113 copy 0E+4 -> 0E+4 +cpyx114 copy -0E+4 -> -0E+4 +cpyx115 copy 0.0000 -> 0.0000 +cpyx116 copy -0.0000 -> -0.0000 +cpyx117 copy 0E-141 -> 0E-141 +cpyx118 copy -0E-141 -> -0E-141 + +-- full coefficients, alternating bits +cpyx121 copy 268268268 -> 268268268 +cpyx122 copy -268268268 -> -268268268 +cpyx123 copy 134134134 -> 134134134 +cpyx124 copy -134134134 -> -134134134 + +-- Nmax, Nmin, Ntiny +cpyx131 copy 9.99999999E+999 -> 9.99999999E+999 +cpyx132 copy 1E-999 -> 1E-999 +cpyx133 copy 1.00000000E-999 -> 1.00000000E-999 +cpyx134 copy 1E-1007 -> 1E-1007 + +cpyx135 copy -1E-1007 -> -1E-1007 +cpyx136 copy -1.00000000E-999 -> -1.00000000E-999 +cpyx137 copy -1E-999 -> -1E-999 +cpyx138 copy -9.99999999E+999 -> -9.99999999E+999 diff --git a/Lib/test/decimaltestdata/copyabs.decTest b/Lib/test/decimaltestdata/copyabs.decTest index f7d0f86..52002dc 100644 --- a/Lib/test/decimaltestdata/copyabs.decTest +++ b/Lib/test/decimaltestdata/copyabs.decTest @@ -1,86 +1,86 @@ ------------------------------------------------------------------------- --- copyAbs.decTest -- quiet copy and set sign to zero -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check -cpax001 copyabs +7.50 -> 7.50 - --- Infinities -cpax011 copyabs Infinity -> Infinity -cpax012 copyabs -Infinity -> Infinity - --- NaNs, 0 payload -cpax021 copyabs NaN -> NaN -cpax022 copyabs -NaN -> NaN -cpax023 copyabs sNaN -> sNaN -cpax024 copyabs -sNaN -> sNaN - --- NaNs, non-0 payload -cpax031 copyabs NaN10 -> NaN10 -cpax032 copyabs -NaN15 -> NaN15 -cpax033 copyabs sNaN15 -> sNaN15 -cpax034 copyabs -sNaN10 -> sNaN10 -cpax035 copyabs NaN7 -> NaN7 -cpax036 copyabs -NaN7 -> NaN7 -cpax037 copyabs sNaN101 -> sNaN101 -cpax038 copyabs -sNaN101 -> sNaN101 - --- finites -cpax101 copyabs 7 -> 7 -cpax102 copyabs -7 -> 7 -cpax103 copyabs 75 -> 75 -cpax104 copyabs -75 -> 75 -cpax105 copyabs 7.10 -> 7.10 -cpax106 copyabs -7.10 -> 7.10 -cpax107 copyabs 7.500 -> 7.500 -cpax108 copyabs -7.500 -> 7.500 - --- zeros -cpax111 copyabs 0 -> 0 -cpax112 copyabs -0 -> 0 -cpax113 copyabs 0E+6 -> 0E+6 -cpax114 copyabs -0E+6 -> 0E+6 -cpax115 copyabs 0.0000 -> 0.0000 -cpax116 copyabs -0.0000 -> 0.0000 -cpax117 copyabs 0E-141 -> 0E-141 -cpax118 copyabs -0E-141 -> 0E-141 - --- full coefficients, alternating bits -cpax121 copyabs 268268268 -> 268268268 -cpax122 copyabs -268268268 -> 268268268 -cpax123 copyabs 134134134 -> 134134134 -cpax124 copyabs -134134134 -> 134134134 - --- Nmax, Nmin, Ntiny -cpax131 copyabs 9.99999999E+999 -> 9.99999999E+999 -cpax132 copyabs 1E-999 -> 1E-999 -cpax133 copyabs 1.00000000E-999 -> 1.00000000E-999 -cpax134 copyabs 1E-1007 -> 1E-1007 - -cpax135 copyabs -1E-1007 -> 1E-1007 -cpax136 copyabs -1.00000000E-999 -> 1.00000000E-999 -cpax137 copyabs -1E-999 -> 1E-999 -cpax199 copyabs -9.99999999E+999 -> 9.99999999E+999 +------------------------------------------------------------------------ +-- copyAbs.decTest -- quiet copy and set sign to zero -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check +cpax001 copyabs +7.50 -> 7.50 + +-- Infinities +cpax011 copyabs Infinity -> Infinity +cpax012 copyabs -Infinity -> Infinity + +-- NaNs, 0 payload +cpax021 copyabs NaN -> NaN +cpax022 copyabs -NaN -> NaN +cpax023 copyabs sNaN -> sNaN +cpax024 copyabs -sNaN -> sNaN + +-- NaNs, non-0 payload +cpax031 copyabs NaN10 -> NaN10 +cpax032 copyabs -NaN15 -> NaN15 +cpax033 copyabs sNaN15 -> sNaN15 +cpax034 copyabs -sNaN10 -> sNaN10 +cpax035 copyabs NaN7 -> NaN7 +cpax036 copyabs -NaN7 -> NaN7 +cpax037 copyabs sNaN101 -> sNaN101 +cpax038 copyabs -sNaN101 -> sNaN101 + +-- finites +cpax101 copyabs 7 -> 7 +cpax102 copyabs -7 -> 7 +cpax103 copyabs 75 -> 75 +cpax104 copyabs -75 -> 75 +cpax105 copyabs 7.10 -> 7.10 +cpax106 copyabs -7.10 -> 7.10 +cpax107 copyabs 7.500 -> 7.500 +cpax108 copyabs -7.500 -> 7.500 + +-- zeros +cpax111 copyabs 0 -> 0 +cpax112 copyabs -0 -> 0 +cpax113 copyabs 0E+6 -> 0E+6 +cpax114 copyabs -0E+6 -> 0E+6 +cpax115 copyabs 0.0000 -> 0.0000 +cpax116 copyabs -0.0000 -> 0.0000 +cpax117 copyabs 0E-141 -> 0E-141 +cpax118 copyabs -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +cpax121 copyabs 268268268 -> 268268268 +cpax122 copyabs -268268268 -> 268268268 +cpax123 copyabs 134134134 -> 134134134 +cpax124 copyabs -134134134 -> 134134134 + +-- Nmax, Nmin, Ntiny +cpax131 copyabs 9.99999999E+999 -> 9.99999999E+999 +cpax132 copyabs 1E-999 -> 1E-999 +cpax133 copyabs 1.00000000E-999 -> 1.00000000E-999 +cpax134 copyabs 1E-1007 -> 1E-1007 + +cpax135 copyabs -1E-1007 -> 1E-1007 +cpax136 copyabs -1.00000000E-999 -> 1.00000000E-999 +cpax137 copyabs -1E-999 -> 1E-999 +cpax199 copyabs -9.99999999E+999 -> 9.99999999E+999 diff --git a/Lib/test/decimaltestdata/copynegate.decTest b/Lib/test/decimaltestdata/copynegate.decTest index 38235b6..7f8de9d 100644 --- a/Lib/test/decimaltestdata/copynegate.decTest +++ b/Lib/test/decimaltestdata/copynegate.decTest @@ -1,86 +1,86 @@ ------------------------------------------------------------------------- --- copyNegate.decTest -- quiet copy and negate -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check -cpnx001 copynegate +7.50 -> -7.50 - --- Infinities -cpnx011 copynegate Infinity -> -Infinity -cpnx012 copynegate -Infinity -> Infinity - --- NaNs, 0 payload -cpnx021 copynegate NaN -> -NaN -cpnx022 copynegate -NaN -> NaN -cpnx023 copynegate sNaN -> -sNaN -cpnx024 copynegate -sNaN -> sNaN - --- NaNs, non-0 payload -cpnx031 copynegate NaN13 -> -NaN13 -cpnx032 copynegate -NaN13 -> NaN13 -cpnx033 copynegate sNaN13 -> -sNaN13 -cpnx034 copynegate -sNaN13 -> sNaN13 -cpnx035 copynegate NaN70 -> -NaN70 -cpnx036 copynegate -NaN70 -> NaN70 -cpnx037 copynegate sNaN101 -> -sNaN101 -cpnx038 copynegate -sNaN101 -> sNaN101 - --- finites -cpnx101 copynegate 7 -> -7 -cpnx102 copynegate -7 -> 7 -cpnx103 copynegate 75 -> -75 -cpnx104 copynegate -75 -> 75 -cpnx105 copynegate 7.50 -> -7.50 -cpnx106 copynegate -7.50 -> 7.50 -cpnx107 copynegate 7.500 -> -7.500 -cpnx108 copynegate -7.500 -> 7.500 - --- zeros -cpnx111 copynegate 0 -> -0 -cpnx112 copynegate -0 -> 0 -cpnx113 copynegate 0E+4 -> -0E+4 -cpnx114 copynegate -0E+4 -> 0E+4 -cpnx115 copynegate 0.0000 -> -0.0000 -cpnx116 copynegate -0.0000 -> 0.0000 -cpnx117 copynegate 0E-141 -> -0E-141 -cpnx118 copynegate -0E-141 -> 0E-141 - --- full coefficients, alternating bits -cpnx121 copynegate 268268268 -> -268268268 -cpnx122 copynegate -268268268 -> 268268268 -cpnx123 copynegate 134134134 -> -134134134 -cpnx124 copynegate -134134134 -> 134134134 - --- Nmax, Nmin, Ntiny -cpnx131 copynegate 9.99999999E+999 -> -9.99999999E+999 -cpnx132 copynegate 1E-999 -> -1E-999 -cpnx133 copynegate 1.00000000E-999 -> -1.00000000E-999 -cpnx134 copynegate 1E-1007 -> -1E-1007 - -cpnx135 copynegate -1E-1007 -> 1E-1007 -cpnx136 copynegate -1.00000000E-999 -> 1.00000000E-999 -cpnx137 copynegate -1E-999 -> 1E-999 -cpnx138 copynegate -9.99999999E+999 -> 9.99999999E+999 +------------------------------------------------------------------------ +-- copyNegate.decTest -- quiet copy and negate -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check +cpnx001 copynegate +7.50 -> -7.50 + +-- Infinities +cpnx011 copynegate Infinity -> -Infinity +cpnx012 copynegate -Infinity -> Infinity + +-- NaNs, 0 payload +cpnx021 copynegate NaN -> -NaN +cpnx022 copynegate -NaN -> NaN +cpnx023 copynegate sNaN -> -sNaN +cpnx024 copynegate -sNaN -> sNaN + +-- NaNs, non-0 payload +cpnx031 copynegate NaN13 -> -NaN13 +cpnx032 copynegate -NaN13 -> NaN13 +cpnx033 copynegate sNaN13 -> -sNaN13 +cpnx034 copynegate -sNaN13 -> sNaN13 +cpnx035 copynegate NaN70 -> -NaN70 +cpnx036 copynegate -NaN70 -> NaN70 +cpnx037 copynegate sNaN101 -> -sNaN101 +cpnx038 copynegate -sNaN101 -> sNaN101 + +-- finites +cpnx101 copynegate 7 -> -7 +cpnx102 copynegate -7 -> 7 +cpnx103 copynegate 75 -> -75 +cpnx104 copynegate -75 -> 75 +cpnx105 copynegate 7.50 -> -7.50 +cpnx106 copynegate -7.50 -> 7.50 +cpnx107 copynegate 7.500 -> -7.500 +cpnx108 copynegate -7.500 -> 7.500 + +-- zeros +cpnx111 copynegate 0 -> -0 +cpnx112 copynegate -0 -> 0 +cpnx113 copynegate 0E+4 -> -0E+4 +cpnx114 copynegate -0E+4 -> 0E+4 +cpnx115 copynegate 0.0000 -> -0.0000 +cpnx116 copynegate -0.0000 -> 0.0000 +cpnx117 copynegate 0E-141 -> -0E-141 +cpnx118 copynegate -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +cpnx121 copynegate 268268268 -> -268268268 +cpnx122 copynegate -268268268 -> 268268268 +cpnx123 copynegate 134134134 -> -134134134 +cpnx124 copynegate -134134134 -> 134134134 + +-- Nmax, Nmin, Ntiny +cpnx131 copynegate 9.99999999E+999 -> -9.99999999E+999 +cpnx132 copynegate 1E-999 -> -1E-999 +cpnx133 copynegate 1.00000000E-999 -> -1.00000000E-999 +cpnx134 copynegate 1E-1007 -> -1E-1007 + +cpnx135 copynegate -1E-1007 -> 1E-1007 +cpnx136 copynegate -1.00000000E-999 -> 1.00000000E-999 +cpnx137 copynegate -1E-999 -> 1E-999 +cpnx138 copynegate -9.99999999E+999 -> 9.99999999E+999 diff --git a/Lib/test/decimaltestdata/copysign.decTest b/Lib/test/decimaltestdata/copysign.decTest index 8061a42..afdd670 100644 --- a/Lib/test/decimaltestdata/copysign.decTest +++ b/Lib/test/decimaltestdata/copysign.decTest @@ -1,177 +1,177 @@ ------------------------------------------------------------------------- --- copysign.decTest -- quiet copy with sign from rhs -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check, and examples from decArith -cpsx001 copysign +7.50 11 -> 7.50 -cpsx002 copysign '1.50' '7.33' -> 1.50 -cpsx003 copysign '-1.50' '7.33' -> 1.50 -cpsx004 copysign '1.50' '-7.33' -> -1.50 -cpsx005 copysign '-1.50' '-7.33' -> -1.50 - --- Infinities -cpsx011 copysign Infinity 11 -> Infinity -cpsx012 copysign -Infinity 11 -> Infinity - --- NaNs, 0 payload -cpsx021 copysign NaN 11 -> NaN -cpsx022 copysign -NaN 11 -> NaN -cpsx023 copysign sNaN 11 -> sNaN -cpsx024 copysign -sNaN 11 -> sNaN - --- NaNs, non-0 payload -cpsx031 copysign NaN10 11 -> NaN10 -cpsx032 copysign -NaN10 11 -> NaN10 -cpsx033 copysign sNaN10 11 -> sNaN10 -cpsx034 copysign -sNaN10 11 -> sNaN10 -cpsx035 copysign NaN7 11 -> NaN7 -cpsx036 copysign -NaN7 11 -> NaN7 -cpsx037 copysign sNaN101 11 -> sNaN101 -cpsx038 copysign -sNaN101 11 -> sNaN101 - --- finites -cpsx101 copysign 7 11 -> 7 -cpsx102 copysign -7 11 -> 7 -cpsx103 copysign 75 11 -> 75 -cpsx104 copysign -75 11 -> 75 -cpsx105 copysign 7.50 11 -> 7.50 -cpsx106 copysign -7.50 11 -> 7.50 -cpsx107 copysign 7.500 11 -> 7.500 -cpsx108 copysign -7.500 11 -> 7.500 - --- zeros -cpsx111 copysign 0 11 -> 0 -cpsx112 copysign -0 11 -> 0 -cpsx113 copysign 0E+4 11 -> 0E+4 -cpsx114 copysign -0E+4 11 -> 0E+4 -cpsx115 copysign 0.0000 11 -> 0.0000 -cpsx116 copysign -0.0000 11 -> 0.0000 -cpsx117 copysign 0E-141 11 -> 0E-141 -cpsx118 copysign -0E-141 11 -> 0E-141 - --- full coefficients, alternating bits -cpsx121 copysign 268268268 11 -> 268268268 -cpsx122 copysign -268268268 11 -> 268268268 -cpsx123 copysign 134134134 11 -> 134134134 -cpsx124 copysign -134134134 11 -> 134134134 - --- Nmax, Nmin, Ntiny -cpsx131 copysign 9.99999999E+999 11 -> 9.99999999E+999 -cpsx132 copysign 1E-999 11 -> 1E-999 -cpsx133 copysign 1.00000000E-999 11 -> 1.00000000E-999 -cpsx134 copysign 1E-1007 11 -> 1E-1007 - -cpsx135 copysign -1E-1007 11 -> 1E-1007 -cpsx136 copysign -1.00000000E-999 11 -> 1.00000000E-999 -cpsx137 copysign -1E-999 11 -> 1E-999 -cpsx138 copysign -9.99999999E+999 11 -> 9.99999999E+999 - --- repeat with negative RHS - --- Infinities -cpsx211 copysign Infinity -34 -> -Infinity -cpsx212 copysign -Infinity -34 -> -Infinity - --- NaNs, 0 payload -cpsx221 copysign NaN -34 -> -NaN -cpsx222 copysign -NaN -34 -> -NaN -cpsx223 copysign sNaN -34 -> -sNaN -cpsx224 copysign -sNaN -34 -> -sNaN - --- NaNs, non-0 payload -cpsx231 copysign NaN10 -34 -> -NaN10 -cpsx232 copysign -NaN10 -34 -> -NaN10 -cpsx233 copysign sNaN10 -34 -> -sNaN10 -cpsx234 copysign -sNaN10 -34 -> -sNaN10 -cpsx235 copysign NaN7 -34 -> -NaN7 -cpsx236 copysign -NaN7 -34 -> -NaN7 -cpsx237 copysign sNaN101 -34 -> -sNaN101 -cpsx238 copysign -sNaN101 -34 -> -sNaN101 - --- finites -cpsx301 copysign 7 -34 -> -7 -cpsx302 copysign -7 -34 -> -7 -cpsx303 copysign 75 -34 -> -75 -cpsx304 copysign -75 -34 -> -75 -cpsx305 copysign 7.50 -34 -> -7.50 -cpsx306 copysign -7.50 -34 -> -7.50 -cpsx307 copysign 7.500 -34 -> -7.500 -cpsx308 copysign -7.500 -34 -> -7.500 - --- zeros -cpsx311 copysign 0 -34 -> -0 -cpsx312 copysign -0 -34 -> -0 -cpsx313 copysign 0E+4 -34 -> -0E+4 -cpsx314 copysign -0E+4 -34 -> -0E+4 -cpsx315 copysign 0.0000 -34 -> -0.0000 -cpsx316 copysign -0.0000 -34 -> -0.0000 -cpsx317 copysign 0E-141 -34 -> -0E-141 -cpsx318 copysign -0E-141 -34 -> -0E-141 - --- full coefficients, alternating bits -cpsx321 copysign 268268268 -18 -> -268268268 -cpsx322 copysign -268268268 -18 -> -268268268 -cpsx323 copysign 134134134 -18 -> -134134134 -cpsx324 copysign -134134134 -18 -> -134134134 - --- Nmax, Nmin, Ntiny -cpsx331 copysign 9.99999999E+999 -18 -> -9.99999999E+999 -cpsx332 copysign 1E-999 -18 -> -1E-999 -cpsx333 copysign 1.00000000E-999 -18 -> -1.00000000E-999 -cpsx334 copysign 1E-1007 -18 -> -1E-1007 - -cpsx335 copysign -1E-1007 -18 -> -1E-1007 -cpsx336 copysign -1.00000000E-999 -18 -> -1.00000000E-999 -cpsx337 copysign -1E-999 -18 -> -1E-999 -cpsx338 copysign -9.99999999E+999 -18 -> -9.99999999E+999 - --- Other kinds of RHS -cpsx401 copysign 701 -34 -> -701 -cpsx402 copysign -720 -34 -> -720 -cpsx403 copysign 701 -0 -> -701 -cpsx404 copysign -720 -0 -> -720 -cpsx405 copysign 701 +0 -> 701 -cpsx406 copysign -720 +0 -> 720 -cpsx407 copysign 701 +34 -> 701 -cpsx408 copysign -720 +34 -> 720 - -cpsx413 copysign 701 -Inf -> -701 -cpsx414 copysign -720 -Inf -> -720 -cpsx415 copysign 701 +Inf -> 701 -cpsx416 copysign -720 +Inf -> 720 - -cpsx420 copysign 701 -NaN -> -701 -cpsx421 copysign -720 -NaN -> -720 -cpsx422 copysign 701 +NaN -> 701 -cpsx423 copysign -720 +NaN -> 720 -cpsx425 copysign -720 +NaN8 -> 720 - -cpsx426 copysign 701 -sNaN -> -701 -cpsx427 copysign -720 -sNaN -> -720 -cpsx428 copysign 701 +sNaN -> 701 -cpsx429 copysign -720 +sNaN -> 720 -cpsx430 copysign -720 +sNaN3 -> 720 - +------------------------------------------------------------------------ +-- copysign.decTest -- quiet copy with sign from rhs -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check, and examples from decArith +cpsx001 copysign +7.50 11 -> 7.50 +cpsx002 copysign '1.50' '7.33' -> 1.50 +cpsx003 copysign '-1.50' '7.33' -> 1.50 +cpsx004 copysign '1.50' '-7.33' -> -1.50 +cpsx005 copysign '-1.50' '-7.33' -> -1.50 + +-- Infinities +cpsx011 copysign Infinity 11 -> Infinity +cpsx012 copysign -Infinity 11 -> Infinity + +-- NaNs, 0 payload +cpsx021 copysign NaN 11 -> NaN +cpsx022 copysign -NaN 11 -> NaN +cpsx023 copysign sNaN 11 -> sNaN +cpsx024 copysign -sNaN 11 -> sNaN + +-- NaNs, non-0 payload +cpsx031 copysign NaN10 11 -> NaN10 +cpsx032 copysign -NaN10 11 -> NaN10 +cpsx033 copysign sNaN10 11 -> sNaN10 +cpsx034 copysign -sNaN10 11 -> sNaN10 +cpsx035 copysign NaN7 11 -> NaN7 +cpsx036 copysign -NaN7 11 -> NaN7 +cpsx037 copysign sNaN101 11 -> sNaN101 +cpsx038 copysign -sNaN101 11 -> sNaN101 + +-- finites +cpsx101 copysign 7 11 -> 7 +cpsx102 copysign -7 11 -> 7 +cpsx103 copysign 75 11 -> 75 +cpsx104 copysign -75 11 -> 75 +cpsx105 copysign 7.50 11 -> 7.50 +cpsx106 copysign -7.50 11 -> 7.50 +cpsx107 copysign 7.500 11 -> 7.500 +cpsx108 copysign -7.500 11 -> 7.500 + +-- zeros +cpsx111 copysign 0 11 -> 0 +cpsx112 copysign -0 11 -> 0 +cpsx113 copysign 0E+4 11 -> 0E+4 +cpsx114 copysign -0E+4 11 -> 0E+4 +cpsx115 copysign 0.0000 11 -> 0.0000 +cpsx116 copysign -0.0000 11 -> 0.0000 +cpsx117 copysign 0E-141 11 -> 0E-141 +cpsx118 copysign -0E-141 11 -> 0E-141 + +-- full coefficients, alternating bits +cpsx121 copysign 268268268 11 -> 268268268 +cpsx122 copysign -268268268 11 -> 268268268 +cpsx123 copysign 134134134 11 -> 134134134 +cpsx124 copysign -134134134 11 -> 134134134 + +-- Nmax, Nmin, Ntiny +cpsx131 copysign 9.99999999E+999 11 -> 9.99999999E+999 +cpsx132 copysign 1E-999 11 -> 1E-999 +cpsx133 copysign 1.00000000E-999 11 -> 1.00000000E-999 +cpsx134 copysign 1E-1007 11 -> 1E-1007 + +cpsx135 copysign -1E-1007 11 -> 1E-1007 +cpsx136 copysign -1.00000000E-999 11 -> 1.00000000E-999 +cpsx137 copysign -1E-999 11 -> 1E-999 +cpsx138 copysign -9.99999999E+999 11 -> 9.99999999E+999 + +-- repeat with negative RHS + +-- Infinities +cpsx211 copysign Infinity -34 -> -Infinity +cpsx212 copysign -Infinity -34 -> -Infinity + +-- NaNs, 0 payload +cpsx221 copysign NaN -34 -> -NaN +cpsx222 copysign -NaN -34 -> -NaN +cpsx223 copysign sNaN -34 -> -sNaN +cpsx224 copysign -sNaN -34 -> -sNaN + +-- NaNs, non-0 payload +cpsx231 copysign NaN10 -34 -> -NaN10 +cpsx232 copysign -NaN10 -34 -> -NaN10 +cpsx233 copysign sNaN10 -34 -> -sNaN10 +cpsx234 copysign -sNaN10 -34 -> -sNaN10 +cpsx235 copysign NaN7 -34 -> -NaN7 +cpsx236 copysign -NaN7 -34 -> -NaN7 +cpsx237 copysign sNaN101 -34 -> -sNaN101 +cpsx238 copysign -sNaN101 -34 -> -sNaN101 + +-- finites +cpsx301 copysign 7 -34 -> -7 +cpsx302 copysign -7 -34 -> -7 +cpsx303 copysign 75 -34 -> -75 +cpsx304 copysign -75 -34 -> -75 +cpsx305 copysign 7.50 -34 -> -7.50 +cpsx306 copysign -7.50 -34 -> -7.50 +cpsx307 copysign 7.500 -34 -> -7.500 +cpsx308 copysign -7.500 -34 -> -7.500 + +-- zeros +cpsx311 copysign 0 -34 -> -0 +cpsx312 copysign -0 -34 -> -0 +cpsx313 copysign 0E+4 -34 -> -0E+4 +cpsx314 copysign -0E+4 -34 -> -0E+4 +cpsx315 copysign 0.0000 -34 -> -0.0000 +cpsx316 copysign -0.0000 -34 -> -0.0000 +cpsx317 copysign 0E-141 -34 -> -0E-141 +cpsx318 copysign -0E-141 -34 -> -0E-141 + +-- full coefficients, alternating bits +cpsx321 copysign 268268268 -18 -> -268268268 +cpsx322 copysign -268268268 -18 -> -268268268 +cpsx323 copysign 134134134 -18 -> -134134134 +cpsx324 copysign -134134134 -18 -> -134134134 + +-- Nmax, Nmin, Ntiny +cpsx331 copysign 9.99999999E+999 -18 -> -9.99999999E+999 +cpsx332 copysign 1E-999 -18 -> -1E-999 +cpsx333 copysign 1.00000000E-999 -18 -> -1.00000000E-999 +cpsx334 copysign 1E-1007 -18 -> -1E-1007 + +cpsx335 copysign -1E-1007 -18 -> -1E-1007 +cpsx336 copysign -1.00000000E-999 -18 -> -1.00000000E-999 +cpsx337 copysign -1E-999 -18 -> -1E-999 +cpsx338 copysign -9.99999999E+999 -18 -> -9.99999999E+999 + +-- Other kinds of RHS +cpsx401 copysign 701 -34 -> -701 +cpsx402 copysign -720 -34 -> -720 +cpsx403 copysign 701 -0 -> -701 +cpsx404 copysign -720 -0 -> -720 +cpsx405 copysign 701 +0 -> 701 +cpsx406 copysign -720 +0 -> 720 +cpsx407 copysign 701 +34 -> 701 +cpsx408 copysign -720 +34 -> 720 + +cpsx413 copysign 701 -Inf -> -701 +cpsx414 copysign -720 -Inf -> -720 +cpsx415 copysign 701 +Inf -> 701 +cpsx416 copysign -720 +Inf -> 720 + +cpsx420 copysign 701 -NaN -> -701 +cpsx421 copysign -720 -NaN -> -720 +cpsx422 copysign 701 +NaN -> 701 +cpsx423 copysign -720 +NaN -> 720 +cpsx425 copysign -720 +NaN8 -> 720 + +cpsx426 copysign 701 -sNaN -> -701 +cpsx427 copysign -720 -sNaN -> -720 +cpsx428 copysign 701 +sNaN -> 701 +cpsx429 copysign -720 +sNaN -> 720 +cpsx430 copysign -720 +sNaN3 -> 720 + diff --git a/Lib/test/decimaltestdata/ddAbs.decTest b/Lib/test/decimaltestdata/ddAbs.decTest index c6f5a7c..b98d64a 100644 --- a/Lib/test/decimaltestdata/ddAbs.decTest +++ b/Lib/test/decimaltestdata/ddAbs.decTest @@ -1,126 +1,126 @@ ------------------------------------------------------------------------- --- ddAbs.decTest -- decDouble absolute value, heeding sNaN -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -ddabs001 abs '1' -> '1' -ddabs002 abs '-1' -> '1' -ddabs003 abs '1.00' -> '1.00' -ddabs004 abs '-1.00' -> '1.00' -ddabs005 abs '0' -> '0' -ddabs006 abs '0.00' -> '0.00' -ddabs007 abs '00.0' -> '0.0' -ddabs008 abs '00.00' -> '0.00' -ddabs009 abs '00' -> '0' - -ddabs010 abs '-2' -> '2' -ddabs011 abs '2' -> '2' -ddabs012 abs '-2.00' -> '2.00' -ddabs013 abs '2.00' -> '2.00' -ddabs014 abs '-0' -> '0' -ddabs015 abs '-0.00' -> '0.00' -ddabs016 abs '-00.0' -> '0.0' -ddabs017 abs '-00.00' -> '0.00' -ddabs018 abs '-00' -> '0' - -ddabs020 abs '-2000000' -> '2000000' -ddabs021 abs '2000000' -> '2000000' - -ddabs030 abs '+0.1' -> '0.1' -ddabs031 abs '-0.1' -> '0.1' -ddabs032 abs '+0.01' -> '0.01' -ddabs033 abs '-0.01' -> '0.01' -ddabs034 abs '+0.001' -> '0.001' -ddabs035 abs '-0.001' -> '0.001' -ddabs036 abs '+0.000001' -> '0.000001' -ddabs037 abs '-0.000001' -> '0.000001' -ddabs038 abs '+0.000000000001' -> '1E-12' -ddabs039 abs '-0.000000000001' -> '1E-12' - --- examples from decArith -ddabs040 abs '2.1' -> '2.1' -ddabs041 abs '-100' -> '100' -ddabs042 abs '101.5' -> '101.5' -ddabs043 abs '-101.5' -> '101.5' - --- more fixed, potential LHS swaps/overlays if done by subtract 0 -ddabs060 abs '-56267E-10' -> '0.0000056267' -ddabs061 abs '-56267E-5' -> '0.56267' -ddabs062 abs '-56267E-2' -> '562.67' -ddabs063 abs '-56267E-1' -> '5626.7' -ddabs065 abs '-56267E-0' -> '56267' - --- subnormals and underflow - --- long operand tests -ddabs321 abs 1234567890123456 -> 1234567890123456 -ddabs322 abs 12345678000 -> 12345678000 -ddabs323 abs 1234567800 -> 1234567800 -ddabs324 abs 1234567890 -> 1234567890 -ddabs325 abs 1234567891 -> 1234567891 -ddabs326 abs 12345678901 -> 12345678901 -ddabs327 abs 1234567896 -> 1234567896 - --- zeros -ddabs111 abs 0 -> 0 -ddabs112 abs -0 -> 0 -ddabs113 abs 0E+6 -> 0E+6 -ddabs114 abs -0E+6 -> 0E+6 -ddabs115 abs 0.0000 -> 0.0000 -ddabs116 abs -0.0000 -> 0.0000 -ddabs117 abs 0E-141 -> 0E-141 -ddabs118 abs -0E-141 -> 0E-141 - --- full coefficients, alternating bits -ddabs121 abs 2682682682682682 -> 2682682682682682 -ddabs122 abs -2682682682682682 -> 2682682682682682 -ddabs123 abs 1341341341341341 -> 1341341341341341 -ddabs124 abs -1341341341341341 -> 1341341341341341 - --- Nmax, Nmin, Ntiny -ddabs131 abs 9.999999999999999E+384 -> 9.999999999999999E+384 -ddabs132 abs 1E-383 -> 1E-383 -ddabs133 abs 1.000000000000000E-383 -> 1.000000000000000E-383 -ddabs134 abs 1E-398 -> 1E-398 Subnormal - -ddabs135 abs -1E-398 -> 1E-398 Subnormal -ddabs136 abs -1.000000000000000E-383 -> 1.000000000000000E-383 -ddabs137 abs -1E-383 -> 1E-383 -ddabs138 abs -9.999999999999999E+384 -> 9.999999999999999E+384 - --- specials -ddabs520 abs 'Inf' -> 'Infinity' -ddabs521 abs '-Inf' -> 'Infinity' -ddabs522 abs NaN -> NaN -ddabs523 abs sNaN -> NaN Invalid_operation -ddabs524 abs NaN22 -> NaN22 -ddabs525 abs sNaN33 -> NaN33 Invalid_operation -ddabs526 abs -NaN22 -> -NaN22 -ddabs527 abs -sNaN33 -> -NaN33 Invalid_operation - --- Null tests -ddabs900 abs # -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddAbs.decTest -- decDouble absolute value, heeding sNaN -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +ddabs001 abs '1' -> '1' +ddabs002 abs '-1' -> '1' +ddabs003 abs '1.00' -> '1.00' +ddabs004 abs '-1.00' -> '1.00' +ddabs005 abs '0' -> '0' +ddabs006 abs '0.00' -> '0.00' +ddabs007 abs '00.0' -> '0.0' +ddabs008 abs '00.00' -> '0.00' +ddabs009 abs '00' -> '0' + +ddabs010 abs '-2' -> '2' +ddabs011 abs '2' -> '2' +ddabs012 abs '-2.00' -> '2.00' +ddabs013 abs '2.00' -> '2.00' +ddabs014 abs '-0' -> '0' +ddabs015 abs '-0.00' -> '0.00' +ddabs016 abs '-00.0' -> '0.0' +ddabs017 abs '-00.00' -> '0.00' +ddabs018 abs '-00' -> '0' + +ddabs020 abs '-2000000' -> '2000000' +ddabs021 abs '2000000' -> '2000000' + +ddabs030 abs '+0.1' -> '0.1' +ddabs031 abs '-0.1' -> '0.1' +ddabs032 abs '+0.01' -> '0.01' +ddabs033 abs '-0.01' -> '0.01' +ddabs034 abs '+0.001' -> '0.001' +ddabs035 abs '-0.001' -> '0.001' +ddabs036 abs '+0.000001' -> '0.000001' +ddabs037 abs '-0.000001' -> '0.000001' +ddabs038 abs '+0.000000000001' -> '1E-12' +ddabs039 abs '-0.000000000001' -> '1E-12' + +-- examples from decArith +ddabs040 abs '2.1' -> '2.1' +ddabs041 abs '-100' -> '100' +ddabs042 abs '101.5' -> '101.5' +ddabs043 abs '-101.5' -> '101.5' + +-- more fixed, potential LHS swaps/overlays if done by subtract 0 +ddabs060 abs '-56267E-10' -> '0.0000056267' +ddabs061 abs '-56267E-5' -> '0.56267' +ddabs062 abs '-56267E-2' -> '562.67' +ddabs063 abs '-56267E-1' -> '5626.7' +ddabs065 abs '-56267E-0' -> '56267' + +-- subnormals and underflow + +-- long operand tests +ddabs321 abs 1234567890123456 -> 1234567890123456 +ddabs322 abs 12345678000 -> 12345678000 +ddabs323 abs 1234567800 -> 1234567800 +ddabs324 abs 1234567890 -> 1234567890 +ddabs325 abs 1234567891 -> 1234567891 +ddabs326 abs 12345678901 -> 12345678901 +ddabs327 abs 1234567896 -> 1234567896 + +-- zeros +ddabs111 abs 0 -> 0 +ddabs112 abs -0 -> 0 +ddabs113 abs 0E+6 -> 0E+6 +ddabs114 abs -0E+6 -> 0E+6 +ddabs115 abs 0.0000 -> 0.0000 +ddabs116 abs -0.0000 -> 0.0000 +ddabs117 abs 0E-141 -> 0E-141 +ddabs118 abs -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +ddabs121 abs 2682682682682682 -> 2682682682682682 +ddabs122 abs -2682682682682682 -> 2682682682682682 +ddabs123 abs 1341341341341341 -> 1341341341341341 +ddabs124 abs -1341341341341341 -> 1341341341341341 + +-- Nmax, Nmin, Ntiny +ddabs131 abs 9.999999999999999E+384 -> 9.999999999999999E+384 +ddabs132 abs 1E-383 -> 1E-383 +ddabs133 abs 1.000000000000000E-383 -> 1.000000000000000E-383 +ddabs134 abs 1E-398 -> 1E-398 Subnormal + +ddabs135 abs -1E-398 -> 1E-398 Subnormal +ddabs136 abs -1.000000000000000E-383 -> 1.000000000000000E-383 +ddabs137 abs -1E-383 -> 1E-383 +ddabs138 abs -9.999999999999999E+384 -> 9.999999999999999E+384 + +-- specials +ddabs520 abs 'Inf' -> 'Infinity' +ddabs521 abs '-Inf' -> 'Infinity' +ddabs522 abs NaN -> NaN +ddabs523 abs sNaN -> NaN Invalid_operation +ddabs524 abs NaN22 -> NaN22 +ddabs525 abs sNaN33 -> NaN33 Invalid_operation +ddabs526 abs -NaN22 -> -NaN22 +ddabs527 abs -sNaN33 -> -NaN33 Invalid_operation + +-- Null tests +ddabs900 abs # -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddAdd.decTest b/Lib/test/decimaltestdata/ddAdd.decTest index c0a25b3..0f12ce4 100644 --- a/Lib/test/decimaltestdata/ddAdd.decTest +++ b/Lib/test/decimaltestdata/ddAdd.decTest @@ -1,1328 +1,1328 @@ ------------------------------------------------------------------------- --- ddAdd.decTest -- decDouble addition -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests are for decDoubles only; all arguments are --- representable in a decDouble -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- [first group are 'quick confidence check'] -ddadd001 add 1 1 -> 2 -ddadd002 add 2 3 -> 5 -ddadd003 add '5.75' '3.3' -> 9.05 -ddadd004 add '5' '-3' -> 2 -ddadd005 add '-5' '-3' -> -8 -ddadd006 add '-7' '2.5' -> -4.5 -ddadd007 add '0.7' '0.3' -> 1.0 -ddadd008 add '1.25' '1.25' -> 2.50 -ddadd009 add '1.23456789' '1.00000000' -> '2.23456789' -ddadd010 add '1.23456789' '1.00000011' -> '2.23456800' - --- 1234567890123456 1234567890123456 -ddadd011 add '0.4444444444444446' '0.5555555555555555' -> '1.000000000000000' Inexact Rounded -ddadd012 add '0.4444444444444445' '0.5555555555555555' -> '1.000000000000000' Rounded -ddadd013 add '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999' -ddadd014 add '4444444444444444' '0.49' -> '4444444444444444' Inexact Rounded -ddadd015 add '4444444444444444' '0.499' -> '4444444444444444' Inexact Rounded -ddadd016 add '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded -ddadd017 add '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded -ddadd018 add '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded -ddadd019 add '4444444444444444' '0.501' -> '4444444444444445' Inexact Rounded -ddadd020 add '4444444444444444' '0.51' -> '4444444444444445' Inexact Rounded - -ddadd021 add 0 1 -> 1 -ddadd022 add 1 1 -> 2 -ddadd023 add 2 1 -> 3 -ddadd024 add 3 1 -> 4 -ddadd025 add 4 1 -> 5 -ddadd026 add 5 1 -> 6 -ddadd027 add 6 1 -> 7 -ddadd028 add 7 1 -> 8 -ddadd029 add 8 1 -> 9 -ddadd030 add 9 1 -> 10 - --- some carrying effects -ddadd031 add '0.9998' '0.0000' -> '0.9998' -ddadd032 add '0.9998' '0.0001' -> '0.9999' -ddadd033 add '0.9998' '0.0002' -> '1.0000' -ddadd034 add '0.9998' '0.0003' -> '1.0001' - -ddadd035 add '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -ddadd036 add '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -ddadd037 add '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -ddadd038 add '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded -ddadd039 add '700000' '10000e+16' -> '1.000000000000007E+20' Rounded - --- symmetry: -ddadd040 add '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded -ddadd041 add '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded -ddadd042 add '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded -ddadd044 add '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded -ddadd045 add '10000e+16' '700000' -> '1.000000000000007E+20' Rounded - --- same, without rounding -ddadd046 add '10000e+9' '7' -> '10000000000007' -ddadd047 add '10000e+9' '70' -> '10000000000070' -ddadd048 add '10000e+9' '700' -> '10000000000700' -ddadd049 add '10000e+9' '7000' -> '10000000007000' -ddadd050 add '10000e+9' '70000' -> '10000000070000' -ddadd051 add '10000e+9' '700000' -> '10000000700000' -ddadd052 add '10000e+9' '7000000' -> '10000007000000' - --- examples from decarith -ddadd053 add '12' '7.00' -> '19.00' -ddadd054 add '1.3' '-1.07' -> '0.23' -ddadd055 add '1.3' '-1.30' -> '0.00' -ddadd056 add '1.3' '-2.07' -> '-0.77' -ddadd057 add '1E+2' '1E+4' -> '1.01E+4' - --- leading zero preservation -ddadd061 add 1 '0.0001' -> '1.0001' -ddadd062 add 1 '0.00001' -> '1.00001' -ddadd063 add 1 '0.000001' -> '1.000001' -ddadd064 add 1 '0.0000001' -> '1.0000001' -ddadd065 add 1 '0.00000001' -> '1.00000001' - --- some funny zeros [in case of bad signum] -ddadd070 add 1 0 -> 1 -ddadd071 add 1 0. -> 1 -ddadd072 add 1 .0 -> 1.0 -ddadd073 add 1 0.0 -> 1.0 -ddadd074 add 1 0.00 -> 1.00 -ddadd075 add 0 1 -> 1 -ddadd076 add 0. 1 -> 1 -ddadd077 add .0 1 -> 1.0 -ddadd078 add 0.0 1 -> 1.0 -ddadd079 add 0.00 1 -> 1.00 - --- some carries -ddadd080 add 999999998 1 -> 999999999 -ddadd081 add 999999999 1 -> 1000000000 -ddadd082 add 99999999 1 -> 100000000 -ddadd083 add 9999999 1 -> 10000000 -ddadd084 add 999999 1 -> 1000000 -ddadd085 add 99999 1 -> 100000 -ddadd086 add 9999 1 -> 10000 -ddadd087 add 999 1 -> 1000 -ddadd088 add 99 1 -> 100 -ddadd089 add 9 1 -> 10 - - --- more LHS swaps -ddadd090 add '-56267E-10' 0 -> '-0.0000056267' -ddadd091 add '-56267E-6' 0 -> '-0.056267' -ddadd092 add '-56267E-5' 0 -> '-0.56267' -ddadd093 add '-56267E-4' 0 -> '-5.6267' -ddadd094 add '-56267E-3' 0 -> '-56.267' -ddadd095 add '-56267E-2' 0 -> '-562.67' -ddadd096 add '-56267E-1' 0 -> '-5626.7' -ddadd097 add '-56267E-0' 0 -> '-56267' -ddadd098 add '-5E-10' 0 -> '-5E-10' -ddadd099 add '-5E-7' 0 -> '-5E-7' -ddadd100 add '-5E-6' 0 -> '-0.000005' -ddadd101 add '-5E-5' 0 -> '-0.00005' -ddadd102 add '-5E-4' 0 -> '-0.0005' -ddadd103 add '-5E-1' 0 -> '-0.5' -ddadd104 add '-5E0' 0 -> '-5' -ddadd105 add '-5E1' 0 -> '-50' -ddadd106 add '-5E5' 0 -> '-500000' -ddadd107 add '-5E15' 0 -> '-5000000000000000' -ddadd108 add '-5E16' 0 -> '-5.000000000000000E+16' Rounded -ddadd109 add '-5E17' 0 -> '-5.000000000000000E+17' Rounded -ddadd110 add '-5E18' 0 -> '-5.000000000000000E+18' Rounded -ddadd111 add '-5E100' 0 -> '-5.000000000000000E+100' Rounded - --- more RHS swaps -ddadd113 add 0 '-56267E-10' -> '-0.0000056267' -ddadd114 add 0 '-56267E-6' -> '-0.056267' -ddadd116 add 0 '-56267E-5' -> '-0.56267' -ddadd117 add 0 '-56267E-4' -> '-5.6267' -ddadd119 add 0 '-56267E-3' -> '-56.267' -ddadd120 add 0 '-56267E-2' -> '-562.67' -ddadd121 add 0 '-56267E-1' -> '-5626.7' -ddadd122 add 0 '-56267E-0' -> '-56267' -ddadd123 add 0 '-5E-10' -> '-5E-10' -ddadd124 add 0 '-5E-7' -> '-5E-7' -ddadd125 add 0 '-5E-6' -> '-0.000005' -ddadd126 add 0 '-5E-5' -> '-0.00005' -ddadd127 add 0 '-5E-4' -> '-0.0005' -ddadd128 add 0 '-5E-1' -> '-0.5' -ddadd129 add 0 '-5E0' -> '-5' -ddadd130 add 0 '-5E1' -> '-50' -ddadd131 add 0 '-5E5' -> '-500000' -ddadd132 add 0 '-5E15' -> '-5000000000000000' -ddadd133 add 0 '-5E16' -> '-5.000000000000000E+16' Rounded -ddadd134 add 0 '-5E17' -> '-5.000000000000000E+17' Rounded -ddadd135 add 0 '-5E18' -> '-5.000000000000000E+18' Rounded -ddadd136 add 0 '-5E100' -> '-5.000000000000000E+100' Rounded - --- related -ddadd137 add 1 '0E-19' -> '1.000000000000000' Rounded -ddadd138 add -1 '0E-19' -> '-1.000000000000000' Rounded -ddadd139 add '0E-19' 1 -> '1.000000000000000' Rounded -ddadd140 add '0E-19' -1 -> '-1.000000000000000' Rounded -ddadd141 add 1E+11 0.0000 -> '100000000000.0000' -ddadd142 add 1E+11 0.00000 -> '100000000000.0000' Rounded -ddadd143 add 0.000 1E+12 -> '1000000000000.000' -ddadd144 add 0.0000 1E+12 -> '1000000000000.000' Rounded - --- [some of the next group are really constructor tests] -ddadd146 add '00.0' 0 -> '0.0' -ddadd147 add '0.00' 0 -> '0.00' -ddadd148 add 0 '0.00' -> '0.00' -ddadd149 add 0 '00.0' -> '0.0' -ddadd150 add '00.0' '0.00' -> '0.00' -ddadd151 add '0.00' '00.0' -> '0.00' -ddadd152 add '3' '.3' -> '3.3' -ddadd153 add '3.' '.3' -> '3.3' -ddadd154 add '3.0' '.3' -> '3.3' -ddadd155 add '3.00' '.3' -> '3.30' -ddadd156 add '3' '3' -> '6' -ddadd157 add '3' '+3' -> '6' -ddadd158 add '3' '-3' -> '0' -ddadd159 add '0.3' '-0.3' -> '0.0' -ddadd160 add '0.03' '-0.03' -> '0.00' - --- try borderline precision, with carries, etc. -ddadd161 add '1E+12' '-1' -> '999999999999' -ddadd162 add '1E+12' '1.11' -> '1000000000001.11' -ddadd163 add '1.11' '1E+12' -> '1000000000001.11' -ddadd164 add '-1' '1E+12' -> '999999999999' -ddadd165 add '7E+12' '-1' -> '6999999999999' -ddadd166 add '7E+12' '1.11' -> '7000000000001.11' -ddadd167 add '1.11' '7E+12' -> '7000000000001.11' -ddadd168 add '-1' '7E+12' -> '6999999999999' - -rounding: half_up --- 1.234567890123456 1234567890123456 1 234567890123456 -ddadd170 add '4.444444444444444' '0.5555555555555567' -> '5.000000000000001' Inexact Rounded -ddadd171 add '4.444444444444444' '0.5555555555555566' -> '5.000000000000001' Inexact Rounded -ddadd172 add '4.444444444444444' '0.5555555555555565' -> '5.000000000000001' Inexact Rounded -ddadd173 add '4.444444444444444' '0.5555555555555564' -> '5.000000000000000' Inexact Rounded -ddadd174 add '4.444444444444444' '0.5555555555555553' -> '4.999999999999999' Inexact Rounded -ddadd175 add '4.444444444444444' '0.5555555555555552' -> '4.999999999999999' Inexact Rounded -ddadd176 add '4.444444444444444' '0.5555555555555551' -> '4.999999999999999' Inexact Rounded -ddadd177 add '4.444444444444444' '0.5555555555555550' -> '4.999999999999999' Rounded -ddadd178 add '4.444444444444444' '0.5555555555555545' -> '4.999999999999999' Inexact Rounded -ddadd179 add '4.444444444444444' '0.5555555555555544' -> '4.999999999999998' Inexact Rounded -ddadd180 add '4.444444444444444' '0.5555555555555543' -> '4.999999999999998' Inexact Rounded -ddadd181 add '4.444444444444444' '0.5555555555555542' -> '4.999999999999998' Inexact Rounded -ddadd182 add '4.444444444444444' '0.5555555555555541' -> '4.999999999999998' Inexact Rounded -ddadd183 add '4.444444444444444' '0.5555555555555540' -> '4.999999999999998' Rounded - --- and some more, including residue effects and different roundings -rounding: half_up -ddadd200 add '1234560123456789' 0 -> '1234560123456789' -ddadd201 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded -ddadd202 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded -ddadd203 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded -ddadd204 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded -ddadd205 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded -ddadd206 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded -ddadd207 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded -ddadd208 add '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded -ddadd209 add '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded -ddadd210 add '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded -ddadd211 add '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded -ddadd212 add '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded -ddadd213 add '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded -ddadd214 add '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded -ddadd215 add '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded -ddadd216 add '1234560123456789' 1 -> '1234560123456790' -ddadd217 add '1234560123456789' 1.000000001 -> '1234560123456790' Inexact Rounded -ddadd218 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded -ddadd219 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded - -rounding: half_even -ddadd220 add '1234560123456789' 0 -> '1234560123456789' -ddadd221 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded -ddadd222 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded -ddadd223 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded -ddadd224 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded -ddadd225 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded -ddadd226 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded -ddadd227 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded -ddadd228 add '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded -ddadd229 add '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded -ddadd230 add '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded -ddadd231 add '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded -ddadd232 add '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded -ddadd233 add '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded -ddadd234 add '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded -ddadd235 add '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded -ddadd236 add '1234560123456789' 1 -> '1234560123456790' -ddadd237 add '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded -ddadd238 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded -ddadd239 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded --- critical few with even bottom digit... -ddadd240 add '1234560123456788' 0.499999999 -> '1234560123456788' Inexact Rounded -ddadd241 add '1234560123456788' 0.5 -> '1234560123456788' Inexact Rounded -ddadd242 add '1234560123456788' 0.500000001 -> '1234560123456789' Inexact Rounded - -rounding: down -ddadd250 add '1234560123456789' 0 -> '1234560123456789' -ddadd251 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded -ddadd252 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded -ddadd253 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded -ddadd254 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded -ddadd255 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded -ddadd256 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded -ddadd257 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded -ddadd258 add '1234560123456789' 0.5 -> '1234560123456789' Inexact Rounded -ddadd259 add '1234560123456789' 0.500000001 -> '1234560123456789' Inexact Rounded -ddadd260 add '1234560123456789' 0.500001 -> '1234560123456789' Inexact Rounded -ddadd261 add '1234560123456789' 0.51 -> '1234560123456789' Inexact Rounded -ddadd262 add '1234560123456789' 0.6 -> '1234560123456789' Inexact Rounded -ddadd263 add '1234560123456789' 0.9 -> '1234560123456789' Inexact Rounded -ddadd264 add '1234560123456789' 0.99999 -> '1234560123456789' Inexact Rounded -ddadd265 add '1234560123456789' 0.999999999 -> '1234560123456789' Inexact Rounded -ddadd266 add '1234560123456789' 1 -> '1234560123456790' -ddadd267 add '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded -ddadd268 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded -ddadd269 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded - --- 1 in last place tests -rounding: half_up -ddadd301 add -1 1 -> 0 -ddadd302 add 0 1 -> 1 -ddadd303 add 1 1 -> 2 -ddadd304 add 12 1 -> 13 -ddadd305 add 98 1 -> 99 -ddadd306 add 99 1 -> 100 -ddadd307 add 100 1 -> 101 -ddadd308 add 101 1 -> 102 -ddadd309 add -1 -1 -> -2 -ddadd310 add 0 -1 -> -1 -ddadd311 add 1 -1 -> 0 -ddadd312 add 12 -1 -> 11 -ddadd313 add 98 -1 -> 97 -ddadd314 add 99 -1 -> 98 -ddadd315 add 100 -1 -> 99 -ddadd316 add 101 -1 -> 100 - -ddadd321 add -0.01 0.01 -> 0.00 -ddadd322 add 0.00 0.01 -> 0.01 -ddadd323 add 0.01 0.01 -> 0.02 -ddadd324 add 0.12 0.01 -> 0.13 -ddadd325 add 0.98 0.01 -> 0.99 -ddadd326 add 0.99 0.01 -> 1.00 -ddadd327 add 1.00 0.01 -> 1.01 -ddadd328 add 1.01 0.01 -> 1.02 -ddadd329 add -0.01 -0.01 -> -0.02 -ddadd330 add 0.00 -0.01 -> -0.01 -ddadd331 add 0.01 -0.01 -> 0.00 -ddadd332 add 0.12 -0.01 -> 0.11 -ddadd333 add 0.98 -0.01 -> 0.97 -ddadd334 add 0.99 -0.01 -> 0.98 -ddadd335 add 1.00 -0.01 -> 0.99 -ddadd336 add 1.01 -0.01 -> 1.00 - --- some more cases where adding 0 affects the coefficient -ddadd340 add 1E+3 0 -> 1000 -ddadd341 add 1E+15 0 -> 1000000000000000 -ddadd342 add 1E+16 0 -> 1.000000000000000E+16 Rounded -ddadd343 add 1E+20 0 -> 1.000000000000000E+20 Rounded --- which simply follow from these cases ... -ddadd344 add 1E+3 1 -> 1001 -ddadd345 add 1E+15 1 -> 1000000000000001 -ddadd346 add 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded -ddadd347 add 1E+20 1 -> 1.000000000000000E+20 Inexact Rounded -ddadd348 add 1E+3 7 -> 1007 -ddadd349 add 1E+15 7 -> 1000000000000007 -ddadd350 add 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded -ddadd351 add 1E+20 7 -> 1.000000000000000E+20 Inexact Rounded - --- tryzeros cases -rounding: half_up -ddadd360 add 0E+50 10000E+1 -> 1.0000E+5 -ddadd361 add 0E-50 10000E+1 -> 100000.0000000000 Rounded -ddadd362 add 10000E+1 0E-50 -> 100000.0000000000 Rounded -ddadd363 add 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact -ddadd364 add 9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369 - --- a curiosity from JSR 13 testing -rounding: half_down -ddadd370 add 999999999999999 815 -> 1000000000000814 -ddadd371 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact -rounding: half_up -ddadd372 add 999999999999999 815 -> 1000000000000814 -ddadd373 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact -rounding: half_even -ddadd374 add 999999999999999 815 -> 1000000000000814 -ddadd375 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact - --- operands folded -ddadd380 add 1E+384 1E+384 -> 2.000000000000000E+384 Clamped -ddadd381 add 1E+380 1E+380 -> 2.00000000000E+380 Clamped -ddadd382 add 1E+376 1E+376 -> 2.0000000E+376 Clamped -ddadd383 add 1E+372 1E+372 -> 2.000E+372 Clamped -ddadd384 add 1E+370 1E+370 -> 2.0E+370 Clamped -ddadd385 add 1E+369 1E+369 -> 2E+369 -ddadd386 add 1E+368 1E+368 -> 2E+368 - --- ulp replacement tests -ddadd400 add 1 77e-14 -> 1.00000000000077 -ddadd401 add 1 77e-15 -> 1.000000000000077 -ddadd402 add 1 77e-16 -> 1.000000000000008 Inexact Rounded -ddadd403 add 1 77e-17 -> 1.000000000000001 Inexact Rounded -ddadd404 add 1 77e-18 -> 1.000000000000000 Inexact Rounded -ddadd405 add 1 77e-19 -> 1.000000000000000 Inexact Rounded -ddadd406 add 1 77e-299 -> 1.000000000000000 Inexact Rounded - -ddadd410 add 10 77e-14 -> 10.00000000000077 -ddadd411 add 10 77e-15 -> 10.00000000000008 Inexact Rounded -ddadd412 add 10 77e-16 -> 10.00000000000001 Inexact Rounded -ddadd413 add 10 77e-17 -> 10.00000000000000 Inexact Rounded -ddadd414 add 10 77e-18 -> 10.00000000000000 Inexact Rounded -ddadd415 add 10 77e-19 -> 10.00000000000000 Inexact Rounded -ddadd416 add 10 77e-299 -> 10.00000000000000 Inexact Rounded - -ddadd420 add 77e-14 1 -> 1.00000000000077 -ddadd421 add 77e-15 1 -> 1.000000000000077 -ddadd422 add 77e-16 1 -> 1.000000000000008 Inexact Rounded -ddadd423 add 77e-17 1 -> 1.000000000000001 Inexact Rounded -ddadd424 add 77e-18 1 -> 1.000000000000000 Inexact Rounded -ddadd425 add 77e-19 1 -> 1.000000000000000 Inexact Rounded -ddadd426 add 77e-299 1 -> 1.000000000000000 Inexact Rounded - -ddadd430 add 77e-14 10 -> 10.00000000000077 -ddadd431 add 77e-15 10 -> 10.00000000000008 Inexact Rounded -ddadd432 add 77e-16 10 -> 10.00000000000001 Inexact Rounded -ddadd433 add 77e-17 10 -> 10.00000000000000 Inexact Rounded -ddadd434 add 77e-18 10 -> 10.00000000000000 Inexact Rounded -ddadd435 add 77e-19 10 -> 10.00000000000000 Inexact Rounded -ddadd436 add 77e-299 10 -> 10.00000000000000 Inexact Rounded - --- fastpath boundary (more in dqadd) --- 1234567890123456 -ddadd539 add '4444444444444444' '3333333333333333' -> '7777777777777777' -ddadd540 add '4444444444444444' '4444444444444444' -> '8888888888888888' -ddadd541 add '4444444444444444' '5555555555555555' -> '9999999999999999' -ddadd542 add '3333333333333333' '4444444444444444' -> '7777777777777777' -ddadd543 add '4444444444444444' '4444444444444444' -> '8888888888888888' -ddadd544 add '5555555555555555' '4444444444444444' -> '9999999999999999' -ddadd545 add '3000004000000000' '3000000000000040' -> '6000004000000040' -ddadd546 add '3000000400000000' '4000000000000400' -> '7000000400000400' -ddadd547 add '3000000040000000' '5000000000004000' -> '8000000040004000' -ddadd548 add '4000000004000000' '3000000000040000' -> '7000000004040000' -ddadd549 add '4000000000400000' '4000000000400000' -> '8000000000800000' -ddadd550 add '4000000000040000' '5000000004000000' -> '9000000004040000' -ddadd551 add '5000000000004000' '3000000040000000' -> '8000000040004000' -ddadd552 add '5000000000000400' '4000000400000000' -> '9000000400000400' -ddadd553 add '5000000000000040' '5000004000000000' -> 1.000000400000004E+16 Rounded --- check propagation -ddadd554 add '8999999999999999' '0000000000000001' -> 9000000000000000 -ddadd555 add '0000000000000001' '8999999999999999' -> 9000000000000000 -ddadd556 add '0999999999999999' '0000000000000001' -> 1000000000000000 -ddadd557 add '0000000000000001' '0999999999999999' -> 1000000000000000 -ddadd558 add '4444444444444444' '4555555555555556' -> 9000000000000000 -ddadd559 add '4555555555555556' '4444444444444444' -> 9000000000000000 - --- negative ulps -ddadd6440 add 1 -77e-14 -> 0.99999999999923 -ddadd6441 add 1 -77e-15 -> 0.999999999999923 -ddadd6442 add 1 -77e-16 -> 0.9999999999999923 -ddadd6443 add 1 -77e-17 -> 0.9999999999999992 Inexact Rounded -ddadd6444 add 1 -77e-18 -> 0.9999999999999999 Inexact Rounded -ddadd6445 add 1 -77e-19 -> 1.000000000000000 Inexact Rounded -ddadd6446 add 1 -77e-99 -> 1.000000000000000 Inexact Rounded - -ddadd6450 add 10 -77e-14 -> 9.99999999999923 -ddadd6451 add 10 -77e-15 -> 9.999999999999923 -ddadd6452 add 10 -77e-16 -> 9.999999999999992 Inexact Rounded -ddadd6453 add 10 -77e-17 -> 9.999999999999999 Inexact Rounded -ddadd6454 add 10 -77e-18 -> 10.00000000000000 Inexact Rounded -ddadd6455 add 10 -77e-19 -> 10.00000000000000 Inexact Rounded -ddadd6456 add 10 -77e-99 -> 10.00000000000000 Inexact Rounded - -ddadd6460 add -77e-14 1 -> 0.99999999999923 -ddadd6461 add -77e-15 1 -> 0.999999999999923 -ddadd6462 add -77e-16 1 -> 0.9999999999999923 -ddadd6463 add -77e-17 1 -> 0.9999999999999992 Inexact Rounded -ddadd6464 add -77e-18 1 -> 0.9999999999999999 Inexact Rounded -ddadd6465 add -77e-19 1 -> 1.000000000000000 Inexact Rounded -ddadd6466 add -77e-99 1 -> 1.000000000000000 Inexact Rounded - -ddadd6470 add -77e-14 10 -> 9.99999999999923 -ddadd6471 add -77e-15 10 -> 9.999999999999923 -ddadd6472 add -77e-16 10 -> 9.999999999999992 Inexact Rounded -ddadd6473 add -77e-17 10 -> 9.999999999999999 Inexact Rounded -ddadd6474 add -77e-18 10 -> 10.00000000000000 Inexact Rounded -ddadd6475 add -77e-19 10 -> 10.00000000000000 Inexact Rounded -ddadd6476 add -77e-99 10 -> 10.00000000000000 Inexact Rounded - --- negative ulps -ddadd6480 add -1 77e-14 -> -0.99999999999923 -ddadd6481 add -1 77e-15 -> -0.999999999999923 -ddadd6482 add -1 77e-16 -> -0.9999999999999923 -ddadd6483 add -1 77e-17 -> -0.9999999999999992 Inexact Rounded -ddadd6484 add -1 77e-18 -> -0.9999999999999999 Inexact Rounded -ddadd6485 add -1 77e-19 -> -1.000000000000000 Inexact Rounded -ddadd6486 add -1 77e-99 -> -1.000000000000000 Inexact Rounded - -ddadd6490 add -10 77e-14 -> -9.99999999999923 -ddadd6491 add -10 77e-15 -> -9.999999999999923 -ddadd6492 add -10 77e-16 -> -9.999999999999992 Inexact Rounded -ddadd6493 add -10 77e-17 -> -9.999999999999999 Inexact Rounded -ddadd6494 add -10 77e-18 -> -10.00000000000000 Inexact Rounded -ddadd6495 add -10 77e-19 -> -10.00000000000000 Inexact Rounded -ddadd6496 add -10 77e-99 -> -10.00000000000000 Inexact Rounded - -ddadd6500 add 77e-14 -1 -> -0.99999999999923 -ddadd6501 add 77e-15 -1 -> -0.999999999999923 -ddadd6502 add 77e-16 -1 -> -0.9999999999999923 -ddadd6503 add 77e-17 -1 -> -0.9999999999999992 Inexact Rounded -ddadd6504 add 77e-18 -1 -> -0.9999999999999999 Inexact Rounded -ddadd6505 add 77e-19 -1 -> -1.000000000000000 Inexact Rounded -ddadd6506 add 77e-99 -1 -> -1.000000000000000 Inexact Rounded - -ddadd6510 add 77e-14 -10 -> -9.99999999999923 -ddadd6511 add 77e-15 -10 -> -9.999999999999923 -ddadd6512 add 77e-16 -10 -> -9.999999999999992 Inexact Rounded -ddadd6513 add 77e-17 -10 -> -9.999999999999999 Inexact Rounded -ddadd6514 add 77e-18 -10 -> -10.00000000000000 Inexact Rounded -ddadd6515 add 77e-19 -10 -> -10.00000000000000 Inexact Rounded -ddadd6516 add 77e-99 -10 -> -10.00000000000000 Inexact Rounded - --- and some more residue effects and different roundings -rounding: half_up -ddadd6540 add '6543210123456789' 0 -> '6543210123456789' -ddadd6541 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -ddadd6542 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -ddadd6543 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -ddadd6544 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -ddadd6545 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -ddadd6546 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -ddadd6547 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded -ddadd6548 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded -ddadd6549 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded -ddadd6550 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded -ddadd6551 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded -ddadd6552 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded -ddadd6553 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded -ddadd6554 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded -ddadd6555 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded -ddadd6556 add '6543210123456789' 1 -> '6543210123456790' -ddadd6557 add '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded -ddadd6558 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -ddadd6559 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded - -rounding: half_even -ddadd6560 add '6543210123456789' 0 -> '6543210123456789' -ddadd6561 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -ddadd6562 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -ddadd6563 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -ddadd6564 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -ddadd6565 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -ddadd6566 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -ddadd6567 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded -ddadd6568 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded -ddadd6569 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded -ddadd6570 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded -ddadd6571 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded -ddadd6572 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded -ddadd6573 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded -ddadd6574 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded -ddadd6575 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded -ddadd6576 add '6543210123456789' 1 -> '6543210123456790' -ddadd6577 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded -ddadd6578 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -ddadd6579 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded - --- critical few with even bottom digit... -ddadd7540 add '6543210123456788' 0.499999999 -> '6543210123456788' Inexact Rounded -ddadd7541 add '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded -ddadd7542 add '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded - -rounding: down -ddadd7550 add '6543210123456789' 0 -> '6543210123456789' -ddadd7551 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -ddadd7552 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -ddadd7553 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -ddadd7554 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -ddadd7555 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -ddadd7556 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -ddadd7557 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded -ddadd7558 add '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded -ddadd7559 add '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded -ddadd7560 add '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded -ddadd7561 add '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded -ddadd7562 add '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded -ddadd7563 add '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded -ddadd7564 add '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded -ddadd7565 add '6543210123456789' 0.999999999 -> '6543210123456789' Inexact Rounded -ddadd7566 add '6543210123456789' 1 -> '6543210123456790' -ddadd7567 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded -ddadd7568 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -ddadd7569 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded - --- verify a query -rounding: down -ddadd7661 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded -ddadd7662 add 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded -ddadd7663 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded -ddadd7664 add 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded - --- more zeros, etc. -rounding: half_even - -ddadd7701 add 5.00 1.00E-3 -> 5.00100 -ddadd7702 add 00.00 0.000 -> 0.000 -ddadd7703 add 00.00 0E-3 -> 0.000 -ddadd7704 add 0E-3 00.00 -> 0.000 - -ddadd7710 add 0E+3 00.00 -> 0.00 -ddadd7711 add 0E+3 00.0 -> 0.0 -ddadd7712 add 0E+3 00. -> 0 -ddadd7713 add 0E+3 00.E+1 -> 0E+1 -ddadd7714 add 0E+3 00.E+2 -> 0E+2 -ddadd7715 add 0E+3 00.E+3 -> 0E+3 -ddadd7716 add 0E+3 00.E+4 -> 0E+3 -ddadd7717 add 0E+3 00.E+5 -> 0E+3 -ddadd7718 add 0E+3 -00.0 -> 0.0 -ddadd7719 add 0E+3 -00. -> 0 -ddadd7731 add 0E+3 -00.E+1 -> 0E+1 - -ddadd7720 add 00.00 0E+3 -> 0.00 -ddadd7721 add 00.0 0E+3 -> 0.0 -ddadd7722 add 00. 0E+3 -> 0 -ddadd7723 add 00.E+1 0E+3 -> 0E+1 -ddadd7724 add 00.E+2 0E+3 -> 0E+2 -ddadd7725 add 00.E+3 0E+3 -> 0E+3 -ddadd7726 add 00.E+4 0E+3 -> 0E+3 -ddadd7727 add 00.E+5 0E+3 -> 0E+3 -ddadd7728 add -00.00 0E+3 -> 0.00 -ddadd7729 add -00.0 0E+3 -> 0.0 -ddadd7730 add -00. 0E+3 -> 0 - -ddadd7732 add 0 0 -> 0 -ddadd7733 add 0 -0 -> 0 -ddadd7734 add -0 0 -> 0 -ddadd7735 add -0 -0 -> -0 -- IEEE 854 special case - -ddadd7736 add 1 -1 -> 0 -ddadd7737 add -1 -1 -> -2 -ddadd7738 add 1 1 -> 2 -ddadd7739 add -1 1 -> 0 - -ddadd7741 add 0 -1 -> -1 -ddadd7742 add -0 -1 -> -1 -ddadd7743 add 0 1 -> 1 -ddadd7744 add -0 1 -> 1 -ddadd7745 add -1 0 -> -1 -ddadd7746 add -1 -0 -> -1 -ddadd7747 add 1 0 -> 1 -ddadd7748 add 1 -0 -> 1 - -ddadd7751 add 0.0 -1 -> -1.0 -ddadd7752 add -0.0 -1 -> -1.0 -ddadd7753 add 0.0 1 -> 1.0 -ddadd7754 add -0.0 1 -> 1.0 -ddadd7755 add -1.0 0 -> -1.0 -ddadd7756 add -1.0 -0 -> -1.0 -ddadd7757 add 1.0 0 -> 1.0 -ddadd7758 add 1.0 -0 -> 1.0 - -ddadd7761 add 0 -1.0 -> -1.0 -ddadd7762 add -0 -1.0 -> -1.0 -ddadd7763 add 0 1.0 -> 1.0 -ddadd7764 add -0 1.0 -> 1.0 -ddadd7765 add -1 0.0 -> -1.0 -ddadd7766 add -1 -0.0 -> -1.0 -ddadd7767 add 1 0.0 -> 1.0 -ddadd7768 add 1 -0.0 -> 1.0 - -ddadd7771 add 0.0 -1.0 -> -1.0 -ddadd7772 add -0.0 -1.0 -> -1.0 -ddadd7773 add 0.0 1.0 -> 1.0 -ddadd7774 add -0.0 1.0 -> 1.0 -ddadd7775 add -1.0 0.0 -> -1.0 -ddadd7776 add -1.0 -0.0 -> -1.0 -ddadd7777 add 1.0 0.0 -> 1.0 -ddadd7778 add 1.0 -0.0 -> 1.0 - --- Specials -ddadd7780 add -Inf -Inf -> -Infinity -ddadd7781 add -Inf -1000 -> -Infinity -ddadd7782 add -Inf -1 -> -Infinity -ddadd7783 add -Inf -0 -> -Infinity -ddadd7784 add -Inf 0 -> -Infinity -ddadd7785 add -Inf 1 -> -Infinity -ddadd7786 add -Inf 1000 -> -Infinity -ddadd7787 add -1000 -Inf -> -Infinity -ddadd7788 add -Inf -Inf -> -Infinity -ddadd7789 add -1 -Inf -> -Infinity -ddadd7790 add -0 -Inf -> -Infinity -ddadd7791 add 0 -Inf -> -Infinity -ddadd7792 add 1 -Inf -> -Infinity -ddadd7793 add 1000 -Inf -> -Infinity -ddadd7794 add Inf -Inf -> NaN Invalid_operation - -ddadd7800 add Inf -Inf -> NaN Invalid_operation -ddadd7801 add Inf -1000 -> Infinity -ddadd7802 add Inf -1 -> Infinity -ddadd7803 add Inf -0 -> Infinity -ddadd7804 add Inf 0 -> Infinity -ddadd7805 add Inf 1 -> Infinity -ddadd7806 add Inf 1000 -> Infinity -ddadd7807 add Inf Inf -> Infinity -ddadd7808 add -1000 Inf -> Infinity -ddadd7809 add -Inf Inf -> NaN Invalid_operation -ddadd7810 add -1 Inf -> Infinity -ddadd7811 add -0 Inf -> Infinity -ddadd7812 add 0 Inf -> Infinity -ddadd7813 add 1 Inf -> Infinity -ddadd7814 add 1000 Inf -> Infinity -ddadd7815 add Inf Inf -> Infinity - -ddadd7821 add NaN -Inf -> NaN -ddadd7822 add NaN -1000 -> NaN -ddadd7823 add NaN -1 -> NaN -ddadd7824 add NaN -0 -> NaN -ddadd7825 add NaN 0 -> NaN -ddadd7826 add NaN 1 -> NaN -ddadd7827 add NaN 1000 -> NaN -ddadd7828 add NaN Inf -> NaN -ddadd7829 add NaN NaN -> NaN -ddadd7830 add -Inf NaN -> NaN -ddadd7831 add -1000 NaN -> NaN -ddadd7832 add -1 NaN -> NaN -ddadd7833 add -0 NaN -> NaN -ddadd7834 add 0 NaN -> NaN -ddadd7835 add 1 NaN -> NaN -ddadd7836 add 1000 NaN -> NaN -ddadd7837 add Inf NaN -> NaN - -ddadd7841 add sNaN -Inf -> NaN Invalid_operation -ddadd7842 add sNaN -1000 -> NaN Invalid_operation -ddadd7843 add sNaN -1 -> NaN Invalid_operation -ddadd7844 add sNaN -0 -> NaN Invalid_operation -ddadd7845 add sNaN 0 -> NaN Invalid_operation -ddadd7846 add sNaN 1 -> NaN Invalid_operation -ddadd7847 add sNaN 1000 -> NaN Invalid_operation -ddadd7848 add sNaN NaN -> NaN Invalid_operation -ddadd7849 add sNaN sNaN -> NaN Invalid_operation -ddadd7850 add NaN sNaN -> NaN Invalid_operation -ddadd7851 add -Inf sNaN -> NaN Invalid_operation -ddadd7852 add -1000 sNaN -> NaN Invalid_operation -ddadd7853 add -1 sNaN -> NaN Invalid_operation -ddadd7854 add -0 sNaN -> NaN Invalid_operation -ddadd7855 add 0 sNaN -> NaN Invalid_operation -ddadd7856 add 1 sNaN -> NaN Invalid_operation -ddadd7857 add 1000 sNaN -> NaN Invalid_operation -ddadd7858 add Inf sNaN -> NaN Invalid_operation -ddadd7859 add NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddadd7861 add NaN1 -Inf -> NaN1 -ddadd7862 add +NaN2 -1000 -> NaN2 -ddadd7863 add NaN3 1000 -> NaN3 -ddadd7864 add NaN4 Inf -> NaN4 -ddadd7865 add NaN5 +NaN6 -> NaN5 -ddadd7866 add -Inf NaN7 -> NaN7 -ddadd7867 add -1000 NaN8 -> NaN8 -ddadd7868 add 1000 NaN9 -> NaN9 -ddadd7869 add Inf +NaN10 -> NaN10 -ddadd7871 add sNaN11 -Inf -> NaN11 Invalid_operation -ddadd7872 add sNaN12 -1000 -> NaN12 Invalid_operation -ddadd7873 add sNaN13 1000 -> NaN13 Invalid_operation -ddadd7874 add sNaN14 NaN17 -> NaN14 Invalid_operation -ddadd7875 add sNaN15 sNaN18 -> NaN15 Invalid_operation -ddadd7876 add NaN16 sNaN19 -> NaN19 Invalid_operation -ddadd7877 add -Inf +sNaN20 -> NaN20 Invalid_operation -ddadd7878 add -1000 sNaN21 -> NaN21 Invalid_operation -ddadd7879 add 1000 sNaN22 -> NaN22 Invalid_operation -ddadd7880 add Inf sNaN23 -> NaN23 Invalid_operation -ddadd7881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation -ddadd7882 add -NaN26 NaN28 -> -NaN26 -ddadd7883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation -ddadd7884 add 1000 -NaN30 -> -NaN30 -ddadd7885 add 1000 -sNaN31 -> -NaN31 Invalid_operation - --- Here we explore near the boundary of rounding a subnormal to Nmin -ddadd7575 add 1E-383 -1E-398 -> 9.99999999999999E-384 Subnormal -ddadd7576 add -1E-383 +1E-398 -> -9.99999999999999E-384 Subnormal - --- and another curious case -ddadd7577 add 7.000000000000E-385 -1.00000E-391 -> 6.999999000000E-385 Subnormal - --- check overflow edge case --- 1234567890123456 -ddadd7972 apply 9.999999999999999E+384 -> 9.999999999999999E+384 -ddadd7973 add 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded -ddadd7974 add 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded -ddadd7975 add 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded -ddadd7976 add 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded -ddadd7977 add 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded -ddadd7978 add 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded -ddadd7979 add 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded -ddadd7980 add 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded -ddadd7981 add 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded -ddadd7982 add 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded -ddadd7983 add 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded -ddadd7984 add 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded - -ddadd7985 apply -9.999999999999999E+384 -> -9.999999999999999E+384 -ddadd7986 add -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded -ddadd7987 add -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded -ddadd7988 add -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded -ddadd7989 add -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded -ddadd7990 add -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded -ddadd7991 add -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded -ddadd7992 add -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded -ddadd7993 add -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded -ddadd7994 add -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded -ddadd7995 add -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded -ddadd7996 add -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded -ddadd7997 add -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded - --- And for round down full and subnormal results -rounding: down -ddadd71100 add 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact -ddadd71101 add 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact -ddadd71103 add +1 -1e-383 -> 0.9999999999999999 Rounded Inexact -ddadd71104 add 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact -ddadd71105 add 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact -ddadd71106 add 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact -ddadd71107 add 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact -ddadd71108 add 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact -ddadd71109 add 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact - -rounding: ceiling -ddadd71110 add -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact -ddadd71111 add -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact -ddadd71113 add -1 +1e-383 -> -0.9999999999999999 Rounded Inexact -ddadd71114 add -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact -ddadd71115 add -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact -ddadd71116 add -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact -ddadd71117 add -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact -ddadd71118 add -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact -ddadd71119 add -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact - --- tests based on Gunnar Degnbol's edge case -rounding: half_even - -ddadd71300 add 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded -ddadd71310 add 1E16 -0.51 -> 9999999999999999 Inexact Rounded -ddadd71311 add 1E16 -0.501 -> 9999999999999999 Inexact Rounded -ddadd71312 add 1E16 -0.5001 -> 9999999999999999 Inexact Rounded -ddadd71313 add 1E16 -0.50001 -> 9999999999999999 Inexact Rounded -ddadd71314 add 1E16 -0.500001 -> 9999999999999999 Inexact Rounded -ddadd71315 add 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded -ddadd71316 add 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded -ddadd71317 add 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded -ddadd71318 add 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded -ddadd71319 add 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded -ddadd71320 add 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded -ddadd71321 add 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded -ddadd71322 add 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded -ddadd71323 add 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded -ddadd71324 add 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded -ddadd71325 add 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71326 add 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71327 add 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71328 add 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71329 add 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71330 add 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71331 add 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71332 add 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71333 add 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71334 add 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71335 add 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71336 add 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71337 add 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71338 add 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded -ddadd71339 add 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded - -ddadd71340 add 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded -ddadd71341 add 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded - -ddadd71349 add 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded -ddadd71350 add 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded -ddadd71351 add 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded -ddadd71352 add 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded -ddadd71353 add 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded -ddadd71354 add 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded -ddadd71355 add 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded -ddadd71356 add 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded -ddadd71357 add 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded -ddadd71358 add 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded -ddadd71359 add 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded -ddadd71360 add 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded -ddadd71361 add 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded -ddadd71362 add 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded -ddadd71363 add 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded -ddadd71364 add 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded -ddadd71365 add 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71367 add 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71368 add 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71369 add 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71370 add 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71371 add 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71372 add 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71373 add 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71374 add 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71375 add 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71376 add 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71377 add 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71378 add 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded -ddadd71379 add 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded -ddadd71380 add 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded -ddadd71381 add 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded -ddadd71382 add 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71383 add 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71384 add 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71385 add 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71386 add 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71387 add 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71388 add 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71389 add 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71390 add 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71391 add 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71392 add 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71393 add 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71394 add 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded -ddadd71395 add 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded -ddadd71396 add 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded - --- More GD edge cases, where difference between the unadjusted --- exponents is larger than the maximum precision and one side is 0 -ddadd71420 add 0 1.123456789012345 -> 1.123456789012345 -ddadd71421 add 0 1.123456789012345E-1 -> 0.1123456789012345 -ddadd71422 add 0 1.123456789012345E-2 -> 0.01123456789012345 -ddadd71423 add 0 1.123456789012345E-3 -> 0.001123456789012345 -ddadd71424 add 0 1.123456789012345E-4 -> 0.0001123456789012345 -ddadd71425 add 0 1.123456789012345E-5 -> 0.00001123456789012345 -ddadd71426 add 0 1.123456789012345E-6 -> 0.000001123456789012345 -ddadd71427 add 0 1.123456789012345E-7 -> 1.123456789012345E-7 -ddadd71428 add 0 1.123456789012345E-8 -> 1.123456789012345E-8 -ddadd71429 add 0 1.123456789012345E-9 -> 1.123456789012345E-9 -ddadd71430 add 0 1.123456789012345E-10 -> 1.123456789012345E-10 -ddadd71431 add 0 1.123456789012345E-11 -> 1.123456789012345E-11 -ddadd71432 add 0 1.123456789012345E-12 -> 1.123456789012345E-12 -ddadd71433 add 0 1.123456789012345E-13 -> 1.123456789012345E-13 -ddadd71434 add 0 1.123456789012345E-14 -> 1.123456789012345E-14 -ddadd71435 add 0 1.123456789012345E-15 -> 1.123456789012345E-15 -ddadd71436 add 0 1.123456789012345E-16 -> 1.123456789012345E-16 -ddadd71437 add 0 1.123456789012345E-17 -> 1.123456789012345E-17 -ddadd71438 add 0 1.123456789012345E-18 -> 1.123456789012345E-18 -ddadd71439 add 0 1.123456789012345E-19 -> 1.123456789012345E-19 - --- same, reversed 0 -ddadd71440 add 1.123456789012345 0 -> 1.123456789012345 -ddadd71441 add 1.123456789012345E-1 0 -> 0.1123456789012345 -ddadd71442 add 1.123456789012345E-2 0 -> 0.01123456789012345 -ddadd71443 add 1.123456789012345E-3 0 -> 0.001123456789012345 -ddadd71444 add 1.123456789012345E-4 0 -> 0.0001123456789012345 -ddadd71445 add 1.123456789012345E-5 0 -> 0.00001123456789012345 -ddadd71446 add 1.123456789012345E-6 0 -> 0.000001123456789012345 -ddadd71447 add 1.123456789012345E-7 0 -> 1.123456789012345E-7 -ddadd71448 add 1.123456789012345E-8 0 -> 1.123456789012345E-8 -ddadd71449 add 1.123456789012345E-9 0 -> 1.123456789012345E-9 -ddadd71450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10 -ddadd71451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11 -ddadd71452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12 -ddadd71453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13 -ddadd71454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14 -ddadd71455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15 -ddadd71456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16 -ddadd71457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17 -ddadd71458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18 -ddadd71459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19 - --- same, Es on the 0 -ddadd71460 add 1.123456789012345 0E-0 -> 1.123456789012345 -ddadd71461 add 1.123456789012345 0E-1 -> 1.123456789012345 -ddadd71462 add 1.123456789012345 0E-2 -> 1.123456789012345 -ddadd71463 add 1.123456789012345 0E-3 -> 1.123456789012345 -ddadd71464 add 1.123456789012345 0E-4 -> 1.123456789012345 -ddadd71465 add 1.123456789012345 0E-5 -> 1.123456789012345 -ddadd71466 add 1.123456789012345 0E-6 -> 1.123456789012345 -ddadd71467 add 1.123456789012345 0E-7 -> 1.123456789012345 -ddadd71468 add 1.123456789012345 0E-8 -> 1.123456789012345 -ddadd71469 add 1.123456789012345 0E-9 -> 1.123456789012345 -ddadd71470 add 1.123456789012345 0E-10 -> 1.123456789012345 -ddadd71471 add 1.123456789012345 0E-11 -> 1.123456789012345 -ddadd71472 add 1.123456789012345 0E-12 -> 1.123456789012345 -ddadd71473 add 1.123456789012345 0E-13 -> 1.123456789012345 -ddadd71474 add 1.123456789012345 0E-14 -> 1.123456789012345 -ddadd71475 add 1.123456789012345 0E-15 -> 1.123456789012345 --- next four flag Rounded because the 0 extends the result -ddadd71476 add 1.123456789012345 0E-16 -> 1.123456789012345 Rounded -ddadd71477 add 1.123456789012345 0E-17 -> 1.123456789012345 Rounded -ddadd71478 add 1.123456789012345 0E-18 -> 1.123456789012345 Rounded -ddadd71479 add 1.123456789012345 0E-19 -> 1.123456789012345 Rounded - --- sum of two opposite-sign operands is exactly 0 and floor => -0 -rounding: half_up --- exact zeros from zeros -ddadd71500 add 0 0E-19 -> 0E-19 -ddadd71501 add -0 0E-19 -> 0E-19 -ddadd71502 add 0 -0E-19 -> 0E-19 -ddadd71503 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddadd71511 add -11 11 -> 0 -ddadd71512 add 11 -11 -> 0 - -rounding: half_down --- exact zeros from zeros -ddadd71520 add 0 0E-19 -> 0E-19 -ddadd71521 add -0 0E-19 -> 0E-19 -ddadd71522 add 0 -0E-19 -> 0E-19 -ddadd71523 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddadd71531 add -11 11 -> 0 -ddadd71532 add 11 -11 -> 0 - -rounding: half_even --- exact zeros from zeros -ddadd71540 add 0 0E-19 -> 0E-19 -ddadd71541 add -0 0E-19 -> 0E-19 -ddadd71542 add 0 -0E-19 -> 0E-19 -ddadd71543 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddadd71551 add -11 11 -> 0 -ddadd71552 add 11 -11 -> 0 - -rounding: up --- exact zeros from zeros -ddadd71560 add 0 0E-19 -> 0E-19 -ddadd71561 add -0 0E-19 -> 0E-19 -ddadd71562 add 0 -0E-19 -> 0E-19 -ddadd71563 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddadd71571 add -11 11 -> 0 -ddadd71572 add 11 -11 -> 0 - -rounding: down --- exact zeros from zeros -ddadd71580 add 0 0E-19 -> 0E-19 -ddadd71581 add -0 0E-19 -> 0E-19 -ddadd71582 add 0 -0E-19 -> 0E-19 -ddadd71583 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddadd71591 add -11 11 -> 0 -ddadd71592 add 11 -11 -> 0 - -rounding: ceiling --- exact zeros from zeros -ddadd71600 add 0 0E-19 -> 0E-19 -ddadd71601 add -0 0E-19 -> 0E-19 -ddadd71602 add 0 -0E-19 -> 0E-19 -ddadd71603 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddadd71611 add -11 11 -> 0 -ddadd71612 add 11 -11 -> 0 - --- and the extra-special ugly case; unusual minuses marked by -- * -rounding: floor --- exact zeros from zeros -ddadd71620 add 0 0E-19 -> 0E-19 -ddadd71621 add -0 0E-19 -> -0E-19 -- * -ddadd71622 add 0 -0E-19 -> -0E-19 -- * -ddadd71623 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddadd71631 add -11 11 -> -0 -- * -ddadd71632 add 11 -11 -> -0 -- * - --- Examples from SQL proposal (Krishna Kulkarni) -ddadd71701 add 130E-2 120E-2 -> 2.50 -ddadd71702 add 130E-2 12E-1 -> 2.50 -ddadd71703 add 130E-2 1E0 -> 2.30 -ddadd71704 add 1E2 1E4 -> 1.01E+4 -ddadd71705 add 130E-2 -120E-2 -> 0.10 -ddadd71706 add 130E-2 -12E-1 -> 0.10 -ddadd71707 add 130E-2 -1E0 -> 0.30 -ddadd71708 add 1E2 -1E4 -> -9.9E+3 - --- query from Vincent Kulandaisamy -rounding: ceiling -ddadd71801 add 7.8822773805862E+277 -5.1757503820663E-21 -> 7.882277380586200E+277 Inexact Rounded -ddadd71802 add 7.882277380586200E+277 12.341 -> 7.882277380586201E+277 Inexact Rounded -ddadd71803 add 7.882277380586201E+277 2.7270545046613E-31 -> 7.882277380586202E+277 Inexact Rounded - -ddadd71811 add 12.341 -5.1757503820663E-21 -> 12.34100000000000 Inexact Rounded -ddadd71812 add 12.34100000000000 2.7270545046613E-31 -> 12.34100000000001 Inexact Rounded -ddadd71813 add 12.34100000000001 7.8822773805862E+277 -> 7.882277380586201E+277 Inexact Rounded - --- Gappy coefficients; check residue handling even with full coefficient gap -rounding: half_even - -ddadd75001 add 1234567890123456 1 -> 1234567890123457 -ddadd75002 add 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded -ddadd75003 add 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded -ddadd75004 add 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded -ddadd75005 add 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded -ddadd75006 add 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded -ddadd75007 add 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded -ddadd75008 add 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded -ddadd75009 add 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded -ddadd75010 add 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded -ddadd75011 add 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded -ddadd75012 add 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded -ddadd75013 add 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded -ddadd75014 add 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded -ddadd75015 add 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded -ddadd75016 add 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded -ddadd75017 add 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded -ddadd75018 add 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded -ddadd75019 add 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded -ddadd75020 add 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded -ddadd75021 add 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded - --- widening second argument at gap -ddadd75030 add 12345678 1 -> 12345679 -ddadd75031 add 12345678 0.1 -> 12345678.1 -ddadd75032 add 12345678 0.12 -> 12345678.12 -ddadd75033 add 12345678 0.123 -> 12345678.123 -ddadd75034 add 12345678 0.1234 -> 12345678.1234 -ddadd75035 add 12345678 0.12345 -> 12345678.12345 -ddadd75036 add 12345678 0.123456 -> 12345678.123456 -ddadd75037 add 12345678 0.1234567 -> 12345678.1234567 -ddadd75038 add 12345678 0.12345678 -> 12345678.12345678 -ddadd75039 add 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded -ddadd75040 add 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded -ddadd75041 add 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded -ddadd75042 add 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded -ddadd75043 add 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded -ddadd75044 add 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded -ddadd75045 add 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded -ddadd75046 add 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded -ddadd75047 add 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded -ddadd75048 add 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded -ddadd75049 add 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded --- 90123456 -rounding: half_even -ddadd75050 add 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded -ddadd75051 add 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded -ddadd75052 add 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded -ddadd75053 add 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded -ddadd75054 add 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded -ddadd75055 add 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded -ddadd75056 add 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded -ddadd75057 add 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded -ddadd75060 add 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded -ddadd75061 add 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded -ddadd75062 add 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded -ddadd75063 add 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded -ddadd75064 add 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded -ddadd75065 add 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded -ddadd75066 add 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded -ddadd75067 add 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded --- far-out residues (full coefficient gap is 16+15 digits) -rounding: up -ddadd75070 add 12345678 1E-8 -> 12345678.00000001 -ddadd75071 add 12345678 1E-9 -> 12345678.00000001 Inexact Rounded -ddadd75072 add 12345678 1E-10 -> 12345678.00000001 Inexact Rounded -ddadd75073 add 12345678 1E-11 -> 12345678.00000001 Inexact Rounded -ddadd75074 add 12345678 1E-12 -> 12345678.00000001 Inexact Rounded -ddadd75075 add 12345678 1E-13 -> 12345678.00000001 Inexact Rounded -ddadd75076 add 12345678 1E-14 -> 12345678.00000001 Inexact Rounded -ddadd75077 add 12345678 1E-15 -> 12345678.00000001 Inexact Rounded -ddadd75078 add 12345678 1E-16 -> 12345678.00000001 Inexact Rounded -ddadd75079 add 12345678 1E-17 -> 12345678.00000001 Inexact Rounded -ddadd75080 add 12345678 1E-18 -> 12345678.00000001 Inexact Rounded -ddadd75081 add 12345678 1E-19 -> 12345678.00000001 Inexact Rounded -ddadd75082 add 12345678 1E-20 -> 12345678.00000001 Inexact Rounded -ddadd75083 add 12345678 1E-25 -> 12345678.00000001 Inexact Rounded -ddadd75084 add 12345678 1E-30 -> 12345678.00000001 Inexact Rounded -ddadd75085 add 12345678 1E-31 -> 12345678.00000001 Inexact Rounded -ddadd75086 add 12345678 1E-32 -> 12345678.00000001 Inexact Rounded -ddadd75087 add 12345678 1E-33 -> 12345678.00000001 Inexact Rounded -ddadd75088 add 12345678 1E-34 -> 12345678.00000001 Inexact Rounded -ddadd75089 add 12345678 1E-35 -> 12345678.00000001 Inexact Rounded - --- Punit's -ddadd75100 add 1.000 -200.000 -> -199.000 - --- Rounding swathe -rounding: half_even -ddadd81100 add .2300 12345678901234.00 -> 12345678901234.23 Rounded -ddadd81101 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81102 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81103 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81104 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81105 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81106 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded -ddadd81107 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81108 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81109 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81120 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded -ddadd81121 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded - -rounding: half_up -ddadd81200 add .2300 12345678901234.00 -> 12345678901234.23 Rounded -ddadd81201 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81202 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81203 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81204 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81205 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded -ddadd81206 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded -ddadd81207 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81208 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81209 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81220 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded -ddadd81221 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded - -rounding: half_down -ddadd81300 add .2300 12345678901234.00 -> 12345678901234.23 Rounded -ddadd81301 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81302 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81303 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81304 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81305 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81306 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded -ddadd81307 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81308 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81309 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81320 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded -ddadd81321 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded - -rounding: up -ddadd81400 add .2300 12345678901234.00 -> 12345678901234.23 Rounded -ddadd81401 add .2301 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81402 add .2310 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81403 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81404 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81405 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded -ddadd81406 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded -ddadd81407 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81408 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81409 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81411 add -.2399 -12345678901234.00 -> -12345678901234.24 Inexact Rounded -ddadd81420 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded -ddadd81421 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded - -rounding: down -ddadd81500 add .2300 12345678901234.00 -> 12345678901234.23 Rounded -ddadd81501 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81502 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81503 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81504 add .2351 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81505 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81506 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81507 add .2360 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81508 add .2370 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81509 add .2399 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81511 add -.2399 -12345678901234.00 -> -12345678901234.23 Inexact Rounded -ddadd81520 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded -ddadd81521 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded - -rounding: ceiling -ddadd81600 add .2300 12345678901234.00 -> 12345678901234.23 Rounded -ddadd81601 add .2301 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81602 add .2310 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81603 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81604 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81605 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded -ddadd81606 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded -ddadd81607 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81608 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81609 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81611 add -.2399 -12345678901234.00 -> -12345678901234.23 Inexact Rounded -ddadd81620 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded -ddadd81621 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded - -rounding: floor -ddadd81700 add .2300 12345678901234.00 -> 12345678901234.23 Rounded -ddadd81701 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81702 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81703 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81704 add .2351 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81705 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81706 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd81707 add .2360 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81708 add .2370 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81709 add .2399 12345678901234.00 -> 12345678901234.23 Inexact Rounded -ddadd81711 add -.2399 -12345678901234.00 -> -12345678901234.24 Inexact Rounded -ddadd81720 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded -ddadd81721 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded - -rounding: 05up -ddadd81800 add .2000 12345678901234.00 -> 12345678901234.20 Rounded -ddadd81801 add .2001 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81802 add .2010 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81803 add .2050 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81804 add .2051 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81807 add .2060 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81808 add .2070 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81809 add .2099 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81811 add -.2099 -12345678901234.00 -> -12345678901234.21 Inexact Rounded -ddadd81820 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded -ddadd81821 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded - -ddadd81900 add .2100 12345678901234.00 -> 12345678901234.21 Rounded -ddadd81901 add .2101 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81902 add .2110 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81903 add .2150 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81904 add .2151 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81907 add .2160 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81908 add .2170 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81909 add .2199 12345678901234.00 -> 12345678901234.21 Inexact Rounded -ddadd81911 add -.2199 -12345678901234.00 -> -12345678901234.21 Inexact Rounded - -ddadd82000 add .2400 12345678901234.00 -> 12345678901234.24 Rounded -ddadd82001 add .2401 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd82002 add .2410 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd82003 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd82004 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd82007 add .2460 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd82008 add .2470 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd82009 add .2499 12345678901234.00 -> 12345678901234.24 Inexact Rounded -ddadd82011 add -.2499 -12345678901234.00 -> -12345678901234.24 Inexact Rounded - -ddadd82100 add .2500 12345678901234.00 -> 12345678901234.25 Rounded -ddadd82101 add .2501 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82102 add .2510 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82103 add .2550 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82104 add .2551 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82107 add .2560 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82108 add .2570 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82109 add .2599 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82111 add -.2599 -12345678901234.00 -> -12345678901234.26 Inexact Rounded - -ddadd82200 add .2600 12345678901234.00 -> 12345678901234.26 Rounded -ddadd82201 add .2601 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82202 add .2610 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82203 add .2650 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82204 add .2651 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82207 add .2660 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82208 add .2670 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82209 add .2699 12345678901234.00 -> 12345678901234.26 Inexact Rounded -ddadd82211 add -.2699 -12345678901234.00 -> -12345678901234.26 Inexact Rounded - -ddadd82300 add .2900 12345678901234.00 -> 12345678901234.29 Rounded -ddadd82301 add .2901 12345678901234.00 -> 12345678901234.29 Inexact Rounded -ddadd82302 add .2910 12345678901234.00 -> 12345678901234.29 Inexact Rounded -ddadd82303 add .2950 12345678901234.00 -> 12345678901234.29 Inexact Rounded -ddadd82304 add .2951 12345678901234.00 -> 12345678901234.29 Inexact Rounded -ddadd82307 add .2960 12345678901234.00 -> 12345678901234.29 Inexact Rounded -ddadd82308 add .2970 12345678901234.00 -> 12345678901234.29 Inexact Rounded -ddadd82309 add .2999 12345678901234.00 -> 12345678901234.29 Inexact Rounded -ddadd82311 add -.2999 -12345678901234.00 -> -12345678901234.29 Inexact Rounded - --- Null tests -ddadd9990 add 10 # -> NaN Invalid_operation -ddadd9991 add # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddAdd.decTest -- decDouble addition -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests are for decDoubles only; all arguments are +-- representable in a decDouble +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- [first group are 'quick confidence check'] +ddadd001 add 1 1 -> 2 +ddadd002 add 2 3 -> 5 +ddadd003 add '5.75' '3.3' -> 9.05 +ddadd004 add '5' '-3' -> 2 +ddadd005 add '-5' '-3' -> -8 +ddadd006 add '-7' '2.5' -> -4.5 +ddadd007 add '0.7' '0.3' -> 1.0 +ddadd008 add '1.25' '1.25' -> 2.50 +ddadd009 add '1.23456789' '1.00000000' -> '2.23456789' +ddadd010 add '1.23456789' '1.00000011' -> '2.23456800' + +-- 1234567890123456 1234567890123456 +ddadd011 add '0.4444444444444446' '0.5555555555555555' -> '1.000000000000000' Inexact Rounded +ddadd012 add '0.4444444444444445' '0.5555555555555555' -> '1.000000000000000' Rounded +ddadd013 add '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999' +ddadd014 add '4444444444444444' '0.49' -> '4444444444444444' Inexact Rounded +ddadd015 add '4444444444444444' '0.499' -> '4444444444444444' Inexact Rounded +ddadd016 add '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded +ddadd017 add '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded +ddadd018 add '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded +ddadd019 add '4444444444444444' '0.501' -> '4444444444444445' Inexact Rounded +ddadd020 add '4444444444444444' '0.51' -> '4444444444444445' Inexact Rounded + +ddadd021 add 0 1 -> 1 +ddadd022 add 1 1 -> 2 +ddadd023 add 2 1 -> 3 +ddadd024 add 3 1 -> 4 +ddadd025 add 4 1 -> 5 +ddadd026 add 5 1 -> 6 +ddadd027 add 6 1 -> 7 +ddadd028 add 7 1 -> 8 +ddadd029 add 8 1 -> 9 +ddadd030 add 9 1 -> 10 + +-- some carrying effects +ddadd031 add '0.9998' '0.0000' -> '0.9998' +ddadd032 add '0.9998' '0.0001' -> '0.9999' +ddadd033 add '0.9998' '0.0002' -> '1.0000' +ddadd034 add '0.9998' '0.0003' -> '1.0001' + +ddadd035 add '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +ddadd036 add '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +ddadd037 add '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +ddadd038 add '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded +ddadd039 add '700000' '10000e+16' -> '1.000000000000007E+20' Rounded + +-- symmetry: +ddadd040 add '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded +ddadd041 add '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded +ddadd042 add '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded +ddadd044 add '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded +ddadd045 add '10000e+16' '700000' -> '1.000000000000007E+20' Rounded + +-- same, without rounding +ddadd046 add '10000e+9' '7' -> '10000000000007' +ddadd047 add '10000e+9' '70' -> '10000000000070' +ddadd048 add '10000e+9' '700' -> '10000000000700' +ddadd049 add '10000e+9' '7000' -> '10000000007000' +ddadd050 add '10000e+9' '70000' -> '10000000070000' +ddadd051 add '10000e+9' '700000' -> '10000000700000' +ddadd052 add '10000e+9' '7000000' -> '10000007000000' + +-- examples from decarith +ddadd053 add '12' '7.00' -> '19.00' +ddadd054 add '1.3' '-1.07' -> '0.23' +ddadd055 add '1.3' '-1.30' -> '0.00' +ddadd056 add '1.3' '-2.07' -> '-0.77' +ddadd057 add '1E+2' '1E+4' -> '1.01E+4' + +-- leading zero preservation +ddadd061 add 1 '0.0001' -> '1.0001' +ddadd062 add 1 '0.00001' -> '1.00001' +ddadd063 add 1 '0.000001' -> '1.000001' +ddadd064 add 1 '0.0000001' -> '1.0000001' +ddadd065 add 1 '0.00000001' -> '1.00000001' + +-- some funny zeros [in case of bad signum] +ddadd070 add 1 0 -> 1 +ddadd071 add 1 0. -> 1 +ddadd072 add 1 .0 -> 1.0 +ddadd073 add 1 0.0 -> 1.0 +ddadd074 add 1 0.00 -> 1.00 +ddadd075 add 0 1 -> 1 +ddadd076 add 0. 1 -> 1 +ddadd077 add .0 1 -> 1.0 +ddadd078 add 0.0 1 -> 1.0 +ddadd079 add 0.00 1 -> 1.00 + +-- some carries +ddadd080 add 999999998 1 -> 999999999 +ddadd081 add 999999999 1 -> 1000000000 +ddadd082 add 99999999 1 -> 100000000 +ddadd083 add 9999999 1 -> 10000000 +ddadd084 add 999999 1 -> 1000000 +ddadd085 add 99999 1 -> 100000 +ddadd086 add 9999 1 -> 10000 +ddadd087 add 999 1 -> 1000 +ddadd088 add 99 1 -> 100 +ddadd089 add 9 1 -> 10 + + +-- more LHS swaps +ddadd090 add '-56267E-10' 0 -> '-0.0000056267' +ddadd091 add '-56267E-6' 0 -> '-0.056267' +ddadd092 add '-56267E-5' 0 -> '-0.56267' +ddadd093 add '-56267E-4' 0 -> '-5.6267' +ddadd094 add '-56267E-3' 0 -> '-56.267' +ddadd095 add '-56267E-2' 0 -> '-562.67' +ddadd096 add '-56267E-1' 0 -> '-5626.7' +ddadd097 add '-56267E-0' 0 -> '-56267' +ddadd098 add '-5E-10' 0 -> '-5E-10' +ddadd099 add '-5E-7' 0 -> '-5E-7' +ddadd100 add '-5E-6' 0 -> '-0.000005' +ddadd101 add '-5E-5' 0 -> '-0.00005' +ddadd102 add '-5E-4' 0 -> '-0.0005' +ddadd103 add '-5E-1' 0 -> '-0.5' +ddadd104 add '-5E0' 0 -> '-5' +ddadd105 add '-5E1' 0 -> '-50' +ddadd106 add '-5E5' 0 -> '-500000' +ddadd107 add '-5E15' 0 -> '-5000000000000000' +ddadd108 add '-5E16' 0 -> '-5.000000000000000E+16' Rounded +ddadd109 add '-5E17' 0 -> '-5.000000000000000E+17' Rounded +ddadd110 add '-5E18' 0 -> '-5.000000000000000E+18' Rounded +ddadd111 add '-5E100' 0 -> '-5.000000000000000E+100' Rounded + +-- more RHS swaps +ddadd113 add 0 '-56267E-10' -> '-0.0000056267' +ddadd114 add 0 '-56267E-6' -> '-0.056267' +ddadd116 add 0 '-56267E-5' -> '-0.56267' +ddadd117 add 0 '-56267E-4' -> '-5.6267' +ddadd119 add 0 '-56267E-3' -> '-56.267' +ddadd120 add 0 '-56267E-2' -> '-562.67' +ddadd121 add 0 '-56267E-1' -> '-5626.7' +ddadd122 add 0 '-56267E-0' -> '-56267' +ddadd123 add 0 '-5E-10' -> '-5E-10' +ddadd124 add 0 '-5E-7' -> '-5E-7' +ddadd125 add 0 '-5E-6' -> '-0.000005' +ddadd126 add 0 '-5E-5' -> '-0.00005' +ddadd127 add 0 '-5E-4' -> '-0.0005' +ddadd128 add 0 '-5E-1' -> '-0.5' +ddadd129 add 0 '-5E0' -> '-5' +ddadd130 add 0 '-5E1' -> '-50' +ddadd131 add 0 '-5E5' -> '-500000' +ddadd132 add 0 '-5E15' -> '-5000000000000000' +ddadd133 add 0 '-5E16' -> '-5.000000000000000E+16' Rounded +ddadd134 add 0 '-5E17' -> '-5.000000000000000E+17' Rounded +ddadd135 add 0 '-5E18' -> '-5.000000000000000E+18' Rounded +ddadd136 add 0 '-5E100' -> '-5.000000000000000E+100' Rounded + +-- related +ddadd137 add 1 '0E-19' -> '1.000000000000000' Rounded +ddadd138 add -1 '0E-19' -> '-1.000000000000000' Rounded +ddadd139 add '0E-19' 1 -> '1.000000000000000' Rounded +ddadd140 add '0E-19' -1 -> '-1.000000000000000' Rounded +ddadd141 add 1E+11 0.0000 -> '100000000000.0000' +ddadd142 add 1E+11 0.00000 -> '100000000000.0000' Rounded +ddadd143 add 0.000 1E+12 -> '1000000000000.000' +ddadd144 add 0.0000 1E+12 -> '1000000000000.000' Rounded + +-- [some of the next group are really constructor tests] +ddadd146 add '00.0' 0 -> '0.0' +ddadd147 add '0.00' 0 -> '0.00' +ddadd148 add 0 '0.00' -> '0.00' +ddadd149 add 0 '00.0' -> '0.0' +ddadd150 add '00.0' '0.00' -> '0.00' +ddadd151 add '0.00' '00.0' -> '0.00' +ddadd152 add '3' '.3' -> '3.3' +ddadd153 add '3.' '.3' -> '3.3' +ddadd154 add '3.0' '.3' -> '3.3' +ddadd155 add '3.00' '.3' -> '3.30' +ddadd156 add '3' '3' -> '6' +ddadd157 add '3' '+3' -> '6' +ddadd158 add '3' '-3' -> '0' +ddadd159 add '0.3' '-0.3' -> '0.0' +ddadd160 add '0.03' '-0.03' -> '0.00' + +-- try borderline precision, with carries, etc. +ddadd161 add '1E+12' '-1' -> '999999999999' +ddadd162 add '1E+12' '1.11' -> '1000000000001.11' +ddadd163 add '1.11' '1E+12' -> '1000000000001.11' +ddadd164 add '-1' '1E+12' -> '999999999999' +ddadd165 add '7E+12' '-1' -> '6999999999999' +ddadd166 add '7E+12' '1.11' -> '7000000000001.11' +ddadd167 add '1.11' '7E+12' -> '7000000000001.11' +ddadd168 add '-1' '7E+12' -> '6999999999999' + +rounding: half_up +-- 1.234567890123456 1234567890123456 1 234567890123456 +ddadd170 add '4.444444444444444' '0.5555555555555567' -> '5.000000000000001' Inexact Rounded +ddadd171 add '4.444444444444444' '0.5555555555555566' -> '5.000000000000001' Inexact Rounded +ddadd172 add '4.444444444444444' '0.5555555555555565' -> '5.000000000000001' Inexact Rounded +ddadd173 add '4.444444444444444' '0.5555555555555564' -> '5.000000000000000' Inexact Rounded +ddadd174 add '4.444444444444444' '0.5555555555555553' -> '4.999999999999999' Inexact Rounded +ddadd175 add '4.444444444444444' '0.5555555555555552' -> '4.999999999999999' Inexact Rounded +ddadd176 add '4.444444444444444' '0.5555555555555551' -> '4.999999999999999' Inexact Rounded +ddadd177 add '4.444444444444444' '0.5555555555555550' -> '4.999999999999999' Rounded +ddadd178 add '4.444444444444444' '0.5555555555555545' -> '4.999999999999999' Inexact Rounded +ddadd179 add '4.444444444444444' '0.5555555555555544' -> '4.999999999999998' Inexact Rounded +ddadd180 add '4.444444444444444' '0.5555555555555543' -> '4.999999999999998' Inexact Rounded +ddadd181 add '4.444444444444444' '0.5555555555555542' -> '4.999999999999998' Inexact Rounded +ddadd182 add '4.444444444444444' '0.5555555555555541' -> '4.999999999999998' Inexact Rounded +ddadd183 add '4.444444444444444' '0.5555555555555540' -> '4.999999999999998' Rounded + +-- and some more, including residue effects and different roundings +rounding: half_up +ddadd200 add '1234560123456789' 0 -> '1234560123456789' +ddadd201 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded +ddadd202 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded +ddadd203 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded +ddadd204 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded +ddadd205 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded +ddadd206 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded +ddadd207 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded +ddadd208 add '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded +ddadd209 add '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded +ddadd210 add '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded +ddadd211 add '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded +ddadd212 add '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded +ddadd213 add '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded +ddadd214 add '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded +ddadd215 add '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded +ddadd216 add '1234560123456789' 1 -> '1234560123456790' +ddadd217 add '1234560123456789' 1.000000001 -> '1234560123456790' Inexact Rounded +ddadd218 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded +ddadd219 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded + +rounding: half_even +ddadd220 add '1234560123456789' 0 -> '1234560123456789' +ddadd221 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded +ddadd222 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded +ddadd223 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded +ddadd224 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded +ddadd225 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded +ddadd226 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded +ddadd227 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded +ddadd228 add '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded +ddadd229 add '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded +ddadd230 add '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded +ddadd231 add '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded +ddadd232 add '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded +ddadd233 add '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded +ddadd234 add '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded +ddadd235 add '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded +ddadd236 add '1234560123456789' 1 -> '1234560123456790' +ddadd237 add '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded +ddadd238 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded +ddadd239 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded +-- critical few with even bottom digit... +ddadd240 add '1234560123456788' 0.499999999 -> '1234560123456788' Inexact Rounded +ddadd241 add '1234560123456788' 0.5 -> '1234560123456788' Inexact Rounded +ddadd242 add '1234560123456788' 0.500000001 -> '1234560123456789' Inexact Rounded + +rounding: down +ddadd250 add '1234560123456789' 0 -> '1234560123456789' +ddadd251 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded +ddadd252 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded +ddadd253 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded +ddadd254 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded +ddadd255 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded +ddadd256 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded +ddadd257 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded +ddadd258 add '1234560123456789' 0.5 -> '1234560123456789' Inexact Rounded +ddadd259 add '1234560123456789' 0.500000001 -> '1234560123456789' Inexact Rounded +ddadd260 add '1234560123456789' 0.500001 -> '1234560123456789' Inexact Rounded +ddadd261 add '1234560123456789' 0.51 -> '1234560123456789' Inexact Rounded +ddadd262 add '1234560123456789' 0.6 -> '1234560123456789' Inexact Rounded +ddadd263 add '1234560123456789' 0.9 -> '1234560123456789' Inexact Rounded +ddadd264 add '1234560123456789' 0.99999 -> '1234560123456789' Inexact Rounded +ddadd265 add '1234560123456789' 0.999999999 -> '1234560123456789' Inexact Rounded +ddadd266 add '1234560123456789' 1 -> '1234560123456790' +ddadd267 add '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded +ddadd268 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded +ddadd269 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded + +-- 1 in last place tests +rounding: half_up +ddadd301 add -1 1 -> 0 +ddadd302 add 0 1 -> 1 +ddadd303 add 1 1 -> 2 +ddadd304 add 12 1 -> 13 +ddadd305 add 98 1 -> 99 +ddadd306 add 99 1 -> 100 +ddadd307 add 100 1 -> 101 +ddadd308 add 101 1 -> 102 +ddadd309 add -1 -1 -> -2 +ddadd310 add 0 -1 -> -1 +ddadd311 add 1 -1 -> 0 +ddadd312 add 12 -1 -> 11 +ddadd313 add 98 -1 -> 97 +ddadd314 add 99 -1 -> 98 +ddadd315 add 100 -1 -> 99 +ddadd316 add 101 -1 -> 100 + +ddadd321 add -0.01 0.01 -> 0.00 +ddadd322 add 0.00 0.01 -> 0.01 +ddadd323 add 0.01 0.01 -> 0.02 +ddadd324 add 0.12 0.01 -> 0.13 +ddadd325 add 0.98 0.01 -> 0.99 +ddadd326 add 0.99 0.01 -> 1.00 +ddadd327 add 1.00 0.01 -> 1.01 +ddadd328 add 1.01 0.01 -> 1.02 +ddadd329 add -0.01 -0.01 -> -0.02 +ddadd330 add 0.00 -0.01 -> -0.01 +ddadd331 add 0.01 -0.01 -> 0.00 +ddadd332 add 0.12 -0.01 -> 0.11 +ddadd333 add 0.98 -0.01 -> 0.97 +ddadd334 add 0.99 -0.01 -> 0.98 +ddadd335 add 1.00 -0.01 -> 0.99 +ddadd336 add 1.01 -0.01 -> 1.00 + +-- some more cases where adding 0 affects the coefficient +ddadd340 add 1E+3 0 -> 1000 +ddadd341 add 1E+15 0 -> 1000000000000000 +ddadd342 add 1E+16 0 -> 1.000000000000000E+16 Rounded +ddadd343 add 1E+20 0 -> 1.000000000000000E+20 Rounded +-- which simply follow from these cases ... +ddadd344 add 1E+3 1 -> 1001 +ddadd345 add 1E+15 1 -> 1000000000000001 +ddadd346 add 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded +ddadd347 add 1E+20 1 -> 1.000000000000000E+20 Inexact Rounded +ddadd348 add 1E+3 7 -> 1007 +ddadd349 add 1E+15 7 -> 1000000000000007 +ddadd350 add 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded +ddadd351 add 1E+20 7 -> 1.000000000000000E+20 Inexact Rounded + +-- tryzeros cases +rounding: half_up +ddadd360 add 0E+50 10000E+1 -> 1.0000E+5 +ddadd361 add 0E-50 10000E+1 -> 100000.0000000000 Rounded +ddadd362 add 10000E+1 0E-50 -> 100000.0000000000 Rounded +ddadd363 add 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact +ddadd364 add 9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369 + +-- a curiosity from JSR 13 testing +rounding: half_down +ddadd370 add 999999999999999 815 -> 1000000000000814 +ddadd371 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact +rounding: half_up +ddadd372 add 999999999999999 815 -> 1000000000000814 +ddadd373 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact +rounding: half_even +ddadd374 add 999999999999999 815 -> 1000000000000814 +ddadd375 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact + +-- operands folded +ddadd380 add 1E+384 1E+384 -> 2.000000000000000E+384 Clamped +ddadd381 add 1E+380 1E+380 -> 2.00000000000E+380 Clamped +ddadd382 add 1E+376 1E+376 -> 2.0000000E+376 Clamped +ddadd383 add 1E+372 1E+372 -> 2.000E+372 Clamped +ddadd384 add 1E+370 1E+370 -> 2.0E+370 Clamped +ddadd385 add 1E+369 1E+369 -> 2E+369 +ddadd386 add 1E+368 1E+368 -> 2E+368 + +-- ulp replacement tests +ddadd400 add 1 77e-14 -> 1.00000000000077 +ddadd401 add 1 77e-15 -> 1.000000000000077 +ddadd402 add 1 77e-16 -> 1.000000000000008 Inexact Rounded +ddadd403 add 1 77e-17 -> 1.000000000000001 Inexact Rounded +ddadd404 add 1 77e-18 -> 1.000000000000000 Inexact Rounded +ddadd405 add 1 77e-19 -> 1.000000000000000 Inexact Rounded +ddadd406 add 1 77e-299 -> 1.000000000000000 Inexact Rounded + +ddadd410 add 10 77e-14 -> 10.00000000000077 +ddadd411 add 10 77e-15 -> 10.00000000000008 Inexact Rounded +ddadd412 add 10 77e-16 -> 10.00000000000001 Inexact Rounded +ddadd413 add 10 77e-17 -> 10.00000000000000 Inexact Rounded +ddadd414 add 10 77e-18 -> 10.00000000000000 Inexact Rounded +ddadd415 add 10 77e-19 -> 10.00000000000000 Inexact Rounded +ddadd416 add 10 77e-299 -> 10.00000000000000 Inexact Rounded + +ddadd420 add 77e-14 1 -> 1.00000000000077 +ddadd421 add 77e-15 1 -> 1.000000000000077 +ddadd422 add 77e-16 1 -> 1.000000000000008 Inexact Rounded +ddadd423 add 77e-17 1 -> 1.000000000000001 Inexact Rounded +ddadd424 add 77e-18 1 -> 1.000000000000000 Inexact Rounded +ddadd425 add 77e-19 1 -> 1.000000000000000 Inexact Rounded +ddadd426 add 77e-299 1 -> 1.000000000000000 Inexact Rounded + +ddadd430 add 77e-14 10 -> 10.00000000000077 +ddadd431 add 77e-15 10 -> 10.00000000000008 Inexact Rounded +ddadd432 add 77e-16 10 -> 10.00000000000001 Inexact Rounded +ddadd433 add 77e-17 10 -> 10.00000000000000 Inexact Rounded +ddadd434 add 77e-18 10 -> 10.00000000000000 Inexact Rounded +ddadd435 add 77e-19 10 -> 10.00000000000000 Inexact Rounded +ddadd436 add 77e-299 10 -> 10.00000000000000 Inexact Rounded + +-- fastpath boundary (more in dqadd) +-- 1234567890123456 +ddadd539 add '4444444444444444' '3333333333333333' -> '7777777777777777' +ddadd540 add '4444444444444444' '4444444444444444' -> '8888888888888888' +ddadd541 add '4444444444444444' '5555555555555555' -> '9999999999999999' +ddadd542 add '3333333333333333' '4444444444444444' -> '7777777777777777' +ddadd543 add '4444444444444444' '4444444444444444' -> '8888888888888888' +ddadd544 add '5555555555555555' '4444444444444444' -> '9999999999999999' +ddadd545 add '3000004000000000' '3000000000000040' -> '6000004000000040' +ddadd546 add '3000000400000000' '4000000000000400' -> '7000000400000400' +ddadd547 add '3000000040000000' '5000000000004000' -> '8000000040004000' +ddadd548 add '4000000004000000' '3000000000040000' -> '7000000004040000' +ddadd549 add '4000000000400000' '4000000000400000' -> '8000000000800000' +ddadd550 add '4000000000040000' '5000000004000000' -> '9000000004040000' +ddadd551 add '5000000000004000' '3000000040000000' -> '8000000040004000' +ddadd552 add '5000000000000400' '4000000400000000' -> '9000000400000400' +ddadd553 add '5000000000000040' '5000004000000000' -> 1.000000400000004E+16 Rounded +-- check propagation +ddadd554 add '8999999999999999' '0000000000000001' -> 9000000000000000 +ddadd555 add '0000000000000001' '8999999999999999' -> 9000000000000000 +ddadd556 add '0999999999999999' '0000000000000001' -> 1000000000000000 +ddadd557 add '0000000000000001' '0999999999999999' -> 1000000000000000 +ddadd558 add '4444444444444444' '4555555555555556' -> 9000000000000000 +ddadd559 add '4555555555555556' '4444444444444444' -> 9000000000000000 + +-- negative ulps +ddadd6440 add 1 -77e-14 -> 0.99999999999923 +ddadd6441 add 1 -77e-15 -> 0.999999999999923 +ddadd6442 add 1 -77e-16 -> 0.9999999999999923 +ddadd6443 add 1 -77e-17 -> 0.9999999999999992 Inexact Rounded +ddadd6444 add 1 -77e-18 -> 0.9999999999999999 Inexact Rounded +ddadd6445 add 1 -77e-19 -> 1.000000000000000 Inexact Rounded +ddadd6446 add 1 -77e-99 -> 1.000000000000000 Inexact Rounded + +ddadd6450 add 10 -77e-14 -> 9.99999999999923 +ddadd6451 add 10 -77e-15 -> 9.999999999999923 +ddadd6452 add 10 -77e-16 -> 9.999999999999992 Inexact Rounded +ddadd6453 add 10 -77e-17 -> 9.999999999999999 Inexact Rounded +ddadd6454 add 10 -77e-18 -> 10.00000000000000 Inexact Rounded +ddadd6455 add 10 -77e-19 -> 10.00000000000000 Inexact Rounded +ddadd6456 add 10 -77e-99 -> 10.00000000000000 Inexact Rounded + +ddadd6460 add -77e-14 1 -> 0.99999999999923 +ddadd6461 add -77e-15 1 -> 0.999999999999923 +ddadd6462 add -77e-16 1 -> 0.9999999999999923 +ddadd6463 add -77e-17 1 -> 0.9999999999999992 Inexact Rounded +ddadd6464 add -77e-18 1 -> 0.9999999999999999 Inexact Rounded +ddadd6465 add -77e-19 1 -> 1.000000000000000 Inexact Rounded +ddadd6466 add -77e-99 1 -> 1.000000000000000 Inexact Rounded + +ddadd6470 add -77e-14 10 -> 9.99999999999923 +ddadd6471 add -77e-15 10 -> 9.999999999999923 +ddadd6472 add -77e-16 10 -> 9.999999999999992 Inexact Rounded +ddadd6473 add -77e-17 10 -> 9.999999999999999 Inexact Rounded +ddadd6474 add -77e-18 10 -> 10.00000000000000 Inexact Rounded +ddadd6475 add -77e-19 10 -> 10.00000000000000 Inexact Rounded +ddadd6476 add -77e-99 10 -> 10.00000000000000 Inexact Rounded + +-- negative ulps +ddadd6480 add -1 77e-14 -> -0.99999999999923 +ddadd6481 add -1 77e-15 -> -0.999999999999923 +ddadd6482 add -1 77e-16 -> -0.9999999999999923 +ddadd6483 add -1 77e-17 -> -0.9999999999999992 Inexact Rounded +ddadd6484 add -1 77e-18 -> -0.9999999999999999 Inexact Rounded +ddadd6485 add -1 77e-19 -> -1.000000000000000 Inexact Rounded +ddadd6486 add -1 77e-99 -> -1.000000000000000 Inexact Rounded + +ddadd6490 add -10 77e-14 -> -9.99999999999923 +ddadd6491 add -10 77e-15 -> -9.999999999999923 +ddadd6492 add -10 77e-16 -> -9.999999999999992 Inexact Rounded +ddadd6493 add -10 77e-17 -> -9.999999999999999 Inexact Rounded +ddadd6494 add -10 77e-18 -> -10.00000000000000 Inexact Rounded +ddadd6495 add -10 77e-19 -> -10.00000000000000 Inexact Rounded +ddadd6496 add -10 77e-99 -> -10.00000000000000 Inexact Rounded + +ddadd6500 add 77e-14 -1 -> -0.99999999999923 +ddadd6501 add 77e-15 -1 -> -0.999999999999923 +ddadd6502 add 77e-16 -1 -> -0.9999999999999923 +ddadd6503 add 77e-17 -1 -> -0.9999999999999992 Inexact Rounded +ddadd6504 add 77e-18 -1 -> -0.9999999999999999 Inexact Rounded +ddadd6505 add 77e-19 -1 -> -1.000000000000000 Inexact Rounded +ddadd6506 add 77e-99 -1 -> -1.000000000000000 Inexact Rounded + +ddadd6510 add 77e-14 -10 -> -9.99999999999923 +ddadd6511 add 77e-15 -10 -> -9.999999999999923 +ddadd6512 add 77e-16 -10 -> -9.999999999999992 Inexact Rounded +ddadd6513 add 77e-17 -10 -> -9.999999999999999 Inexact Rounded +ddadd6514 add 77e-18 -10 -> -10.00000000000000 Inexact Rounded +ddadd6515 add 77e-19 -10 -> -10.00000000000000 Inexact Rounded +ddadd6516 add 77e-99 -10 -> -10.00000000000000 Inexact Rounded + +-- and some more residue effects and different roundings +rounding: half_up +ddadd6540 add '6543210123456789' 0 -> '6543210123456789' +ddadd6541 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +ddadd6542 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +ddadd6543 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +ddadd6544 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +ddadd6545 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +ddadd6546 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +ddadd6547 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +ddadd6548 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded +ddadd6549 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded +ddadd6550 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded +ddadd6551 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded +ddadd6552 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded +ddadd6553 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded +ddadd6554 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded +ddadd6555 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded +ddadd6556 add '6543210123456789' 1 -> '6543210123456790' +ddadd6557 add '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded +ddadd6558 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +ddadd6559 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +rounding: half_even +ddadd6560 add '6543210123456789' 0 -> '6543210123456789' +ddadd6561 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +ddadd6562 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +ddadd6563 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +ddadd6564 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +ddadd6565 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +ddadd6566 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +ddadd6567 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +ddadd6568 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded +ddadd6569 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded +ddadd6570 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded +ddadd6571 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded +ddadd6572 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded +ddadd6573 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded +ddadd6574 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded +ddadd6575 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded +ddadd6576 add '6543210123456789' 1 -> '6543210123456790' +ddadd6577 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded +ddadd6578 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +ddadd6579 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +-- critical few with even bottom digit... +ddadd7540 add '6543210123456788' 0.499999999 -> '6543210123456788' Inexact Rounded +ddadd7541 add '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded +ddadd7542 add '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded + +rounding: down +ddadd7550 add '6543210123456789' 0 -> '6543210123456789' +ddadd7551 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +ddadd7552 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +ddadd7553 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +ddadd7554 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +ddadd7555 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +ddadd7556 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +ddadd7557 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +ddadd7558 add '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded +ddadd7559 add '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded +ddadd7560 add '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded +ddadd7561 add '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded +ddadd7562 add '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded +ddadd7563 add '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded +ddadd7564 add '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded +ddadd7565 add '6543210123456789' 0.999999999 -> '6543210123456789' Inexact Rounded +ddadd7566 add '6543210123456789' 1 -> '6543210123456790' +ddadd7567 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded +ddadd7568 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +ddadd7569 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +-- verify a query +rounding: down +ddadd7661 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded +ddadd7662 add 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded +ddadd7663 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded +ddadd7664 add 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded + +-- more zeros, etc. +rounding: half_even + +ddadd7701 add 5.00 1.00E-3 -> 5.00100 +ddadd7702 add 00.00 0.000 -> 0.000 +ddadd7703 add 00.00 0E-3 -> 0.000 +ddadd7704 add 0E-3 00.00 -> 0.000 + +ddadd7710 add 0E+3 00.00 -> 0.00 +ddadd7711 add 0E+3 00.0 -> 0.0 +ddadd7712 add 0E+3 00. -> 0 +ddadd7713 add 0E+3 00.E+1 -> 0E+1 +ddadd7714 add 0E+3 00.E+2 -> 0E+2 +ddadd7715 add 0E+3 00.E+3 -> 0E+3 +ddadd7716 add 0E+3 00.E+4 -> 0E+3 +ddadd7717 add 0E+3 00.E+5 -> 0E+3 +ddadd7718 add 0E+3 -00.0 -> 0.0 +ddadd7719 add 0E+3 -00. -> 0 +ddadd7731 add 0E+3 -00.E+1 -> 0E+1 + +ddadd7720 add 00.00 0E+3 -> 0.00 +ddadd7721 add 00.0 0E+3 -> 0.0 +ddadd7722 add 00. 0E+3 -> 0 +ddadd7723 add 00.E+1 0E+3 -> 0E+1 +ddadd7724 add 00.E+2 0E+3 -> 0E+2 +ddadd7725 add 00.E+3 0E+3 -> 0E+3 +ddadd7726 add 00.E+4 0E+3 -> 0E+3 +ddadd7727 add 00.E+5 0E+3 -> 0E+3 +ddadd7728 add -00.00 0E+3 -> 0.00 +ddadd7729 add -00.0 0E+3 -> 0.0 +ddadd7730 add -00. 0E+3 -> 0 + +ddadd7732 add 0 0 -> 0 +ddadd7733 add 0 -0 -> 0 +ddadd7734 add -0 0 -> 0 +ddadd7735 add -0 -0 -> -0 -- IEEE 854 special case + +ddadd7736 add 1 -1 -> 0 +ddadd7737 add -1 -1 -> -2 +ddadd7738 add 1 1 -> 2 +ddadd7739 add -1 1 -> 0 + +ddadd7741 add 0 -1 -> -1 +ddadd7742 add -0 -1 -> -1 +ddadd7743 add 0 1 -> 1 +ddadd7744 add -0 1 -> 1 +ddadd7745 add -1 0 -> -1 +ddadd7746 add -1 -0 -> -1 +ddadd7747 add 1 0 -> 1 +ddadd7748 add 1 -0 -> 1 + +ddadd7751 add 0.0 -1 -> -1.0 +ddadd7752 add -0.0 -1 -> -1.0 +ddadd7753 add 0.0 1 -> 1.0 +ddadd7754 add -0.0 1 -> 1.0 +ddadd7755 add -1.0 0 -> -1.0 +ddadd7756 add -1.0 -0 -> -1.0 +ddadd7757 add 1.0 0 -> 1.0 +ddadd7758 add 1.0 -0 -> 1.0 + +ddadd7761 add 0 -1.0 -> -1.0 +ddadd7762 add -0 -1.0 -> -1.0 +ddadd7763 add 0 1.0 -> 1.0 +ddadd7764 add -0 1.0 -> 1.0 +ddadd7765 add -1 0.0 -> -1.0 +ddadd7766 add -1 -0.0 -> -1.0 +ddadd7767 add 1 0.0 -> 1.0 +ddadd7768 add 1 -0.0 -> 1.0 + +ddadd7771 add 0.0 -1.0 -> -1.0 +ddadd7772 add -0.0 -1.0 -> -1.0 +ddadd7773 add 0.0 1.0 -> 1.0 +ddadd7774 add -0.0 1.0 -> 1.0 +ddadd7775 add -1.0 0.0 -> -1.0 +ddadd7776 add -1.0 -0.0 -> -1.0 +ddadd7777 add 1.0 0.0 -> 1.0 +ddadd7778 add 1.0 -0.0 -> 1.0 + +-- Specials +ddadd7780 add -Inf -Inf -> -Infinity +ddadd7781 add -Inf -1000 -> -Infinity +ddadd7782 add -Inf -1 -> -Infinity +ddadd7783 add -Inf -0 -> -Infinity +ddadd7784 add -Inf 0 -> -Infinity +ddadd7785 add -Inf 1 -> -Infinity +ddadd7786 add -Inf 1000 -> -Infinity +ddadd7787 add -1000 -Inf -> -Infinity +ddadd7788 add -Inf -Inf -> -Infinity +ddadd7789 add -1 -Inf -> -Infinity +ddadd7790 add -0 -Inf -> -Infinity +ddadd7791 add 0 -Inf -> -Infinity +ddadd7792 add 1 -Inf -> -Infinity +ddadd7793 add 1000 -Inf -> -Infinity +ddadd7794 add Inf -Inf -> NaN Invalid_operation + +ddadd7800 add Inf -Inf -> NaN Invalid_operation +ddadd7801 add Inf -1000 -> Infinity +ddadd7802 add Inf -1 -> Infinity +ddadd7803 add Inf -0 -> Infinity +ddadd7804 add Inf 0 -> Infinity +ddadd7805 add Inf 1 -> Infinity +ddadd7806 add Inf 1000 -> Infinity +ddadd7807 add Inf Inf -> Infinity +ddadd7808 add -1000 Inf -> Infinity +ddadd7809 add -Inf Inf -> NaN Invalid_operation +ddadd7810 add -1 Inf -> Infinity +ddadd7811 add -0 Inf -> Infinity +ddadd7812 add 0 Inf -> Infinity +ddadd7813 add 1 Inf -> Infinity +ddadd7814 add 1000 Inf -> Infinity +ddadd7815 add Inf Inf -> Infinity + +ddadd7821 add NaN -Inf -> NaN +ddadd7822 add NaN -1000 -> NaN +ddadd7823 add NaN -1 -> NaN +ddadd7824 add NaN -0 -> NaN +ddadd7825 add NaN 0 -> NaN +ddadd7826 add NaN 1 -> NaN +ddadd7827 add NaN 1000 -> NaN +ddadd7828 add NaN Inf -> NaN +ddadd7829 add NaN NaN -> NaN +ddadd7830 add -Inf NaN -> NaN +ddadd7831 add -1000 NaN -> NaN +ddadd7832 add -1 NaN -> NaN +ddadd7833 add -0 NaN -> NaN +ddadd7834 add 0 NaN -> NaN +ddadd7835 add 1 NaN -> NaN +ddadd7836 add 1000 NaN -> NaN +ddadd7837 add Inf NaN -> NaN + +ddadd7841 add sNaN -Inf -> NaN Invalid_operation +ddadd7842 add sNaN -1000 -> NaN Invalid_operation +ddadd7843 add sNaN -1 -> NaN Invalid_operation +ddadd7844 add sNaN -0 -> NaN Invalid_operation +ddadd7845 add sNaN 0 -> NaN Invalid_operation +ddadd7846 add sNaN 1 -> NaN Invalid_operation +ddadd7847 add sNaN 1000 -> NaN Invalid_operation +ddadd7848 add sNaN NaN -> NaN Invalid_operation +ddadd7849 add sNaN sNaN -> NaN Invalid_operation +ddadd7850 add NaN sNaN -> NaN Invalid_operation +ddadd7851 add -Inf sNaN -> NaN Invalid_operation +ddadd7852 add -1000 sNaN -> NaN Invalid_operation +ddadd7853 add -1 sNaN -> NaN Invalid_operation +ddadd7854 add -0 sNaN -> NaN Invalid_operation +ddadd7855 add 0 sNaN -> NaN Invalid_operation +ddadd7856 add 1 sNaN -> NaN Invalid_operation +ddadd7857 add 1000 sNaN -> NaN Invalid_operation +ddadd7858 add Inf sNaN -> NaN Invalid_operation +ddadd7859 add NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddadd7861 add NaN1 -Inf -> NaN1 +ddadd7862 add +NaN2 -1000 -> NaN2 +ddadd7863 add NaN3 1000 -> NaN3 +ddadd7864 add NaN4 Inf -> NaN4 +ddadd7865 add NaN5 +NaN6 -> NaN5 +ddadd7866 add -Inf NaN7 -> NaN7 +ddadd7867 add -1000 NaN8 -> NaN8 +ddadd7868 add 1000 NaN9 -> NaN9 +ddadd7869 add Inf +NaN10 -> NaN10 +ddadd7871 add sNaN11 -Inf -> NaN11 Invalid_operation +ddadd7872 add sNaN12 -1000 -> NaN12 Invalid_operation +ddadd7873 add sNaN13 1000 -> NaN13 Invalid_operation +ddadd7874 add sNaN14 NaN17 -> NaN14 Invalid_operation +ddadd7875 add sNaN15 sNaN18 -> NaN15 Invalid_operation +ddadd7876 add NaN16 sNaN19 -> NaN19 Invalid_operation +ddadd7877 add -Inf +sNaN20 -> NaN20 Invalid_operation +ddadd7878 add -1000 sNaN21 -> NaN21 Invalid_operation +ddadd7879 add 1000 sNaN22 -> NaN22 Invalid_operation +ddadd7880 add Inf sNaN23 -> NaN23 Invalid_operation +ddadd7881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation +ddadd7882 add -NaN26 NaN28 -> -NaN26 +ddadd7883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation +ddadd7884 add 1000 -NaN30 -> -NaN30 +ddadd7885 add 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- Here we explore near the boundary of rounding a subnormal to Nmin +ddadd7575 add 1E-383 -1E-398 -> 9.99999999999999E-384 Subnormal +ddadd7576 add -1E-383 +1E-398 -> -9.99999999999999E-384 Subnormal + +-- and another curious case +ddadd7577 add 7.000000000000E-385 -1.00000E-391 -> 6.999999000000E-385 Subnormal + +-- check overflow edge case +-- 1234567890123456 +ddadd7972 apply 9.999999999999999E+384 -> 9.999999999999999E+384 +ddadd7973 add 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded +ddadd7974 add 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded +ddadd7975 add 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded +ddadd7976 add 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded +ddadd7977 add 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded +ddadd7978 add 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded +ddadd7979 add 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded +ddadd7980 add 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded +ddadd7981 add 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded +ddadd7982 add 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded +ddadd7983 add 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded +ddadd7984 add 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded + +ddadd7985 apply -9.999999999999999E+384 -> -9.999999999999999E+384 +ddadd7986 add -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded +ddadd7987 add -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded +ddadd7988 add -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded +ddadd7989 add -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded +ddadd7990 add -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded +ddadd7991 add -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded +ddadd7992 add -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded +ddadd7993 add -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded +ddadd7994 add -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded +ddadd7995 add -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded +ddadd7996 add -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded +ddadd7997 add -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded + +-- And for round down full and subnormal results +rounding: down +ddadd71100 add 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact +ddadd71101 add 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact +ddadd71103 add +1 -1e-383 -> 0.9999999999999999 Rounded Inexact +ddadd71104 add 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact +ddadd71105 add 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact +ddadd71106 add 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact +ddadd71107 add 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact +ddadd71108 add 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact +ddadd71109 add 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact + +rounding: ceiling +ddadd71110 add -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact +ddadd71111 add -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact +ddadd71113 add -1 +1e-383 -> -0.9999999999999999 Rounded Inexact +ddadd71114 add -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact +ddadd71115 add -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact +ddadd71116 add -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact +ddadd71117 add -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact +ddadd71118 add -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact +ddadd71119 add -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact + +-- tests based on Gunnar Degnbol's edge case +rounding: half_even + +ddadd71300 add 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded +ddadd71310 add 1E16 -0.51 -> 9999999999999999 Inexact Rounded +ddadd71311 add 1E16 -0.501 -> 9999999999999999 Inexact Rounded +ddadd71312 add 1E16 -0.5001 -> 9999999999999999 Inexact Rounded +ddadd71313 add 1E16 -0.50001 -> 9999999999999999 Inexact Rounded +ddadd71314 add 1E16 -0.500001 -> 9999999999999999 Inexact Rounded +ddadd71315 add 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded +ddadd71316 add 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded +ddadd71317 add 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded +ddadd71318 add 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded +ddadd71319 add 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded +ddadd71320 add 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded +ddadd71321 add 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded +ddadd71322 add 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded +ddadd71323 add 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded +ddadd71324 add 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded +ddadd71325 add 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71326 add 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71327 add 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71328 add 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71329 add 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71330 add 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71331 add 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71332 add 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71333 add 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71334 add 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71335 add 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71336 add 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71337 add 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71338 add 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded +ddadd71339 add 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded + +ddadd71340 add 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded +ddadd71341 add 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded + +ddadd71349 add 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded +ddadd71350 add 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded +ddadd71351 add 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded +ddadd71352 add 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded +ddadd71353 add 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded +ddadd71354 add 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded +ddadd71355 add 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded +ddadd71356 add 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded +ddadd71357 add 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded +ddadd71358 add 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded +ddadd71359 add 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded +ddadd71360 add 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded +ddadd71361 add 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded +ddadd71362 add 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded +ddadd71363 add 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded +ddadd71364 add 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded +ddadd71365 add 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71367 add 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71368 add 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71369 add 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71370 add 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71371 add 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71372 add 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71373 add 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71374 add 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71375 add 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71376 add 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71377 add 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71378 add 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded +ddadd71379 add 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded +ddadd71380 add 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded +ddadd71381 add 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded +ddadd71382 add 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71383 add 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71384 add 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71385 add 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71386 add 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71387 add 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71388 add 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71389 add 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71390 add 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71391 add 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71392 add 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71393 add 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71394 add 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded +ddadd71395 add 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded +ddadd71396 add 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded + +-- More GD edge cases, where difference between the unadjusted +-- exponents is larger than the maximum precision and one side is 0 +ddadd71420 add 0 1.123456789012345 -> 1.123456789012345 +ddadd71421 add 0 1.123456789012345E-1 -> 0.1123456789012345 +ddadd71422 add 0 1.123456789012345E-2 -> 0.01123456789012345 +ddadd71423 add 0 1.123456789012345E-3 -> 0.001123456789012345 +ddadd71424 add 0 1.123456789012345E-4 -> 0.0001123456789012345 +ddadd71425 add 0 1.123456789012345E-5 -> 0.00001123456789012345 +ddadd71426 add 0 1.123456789012345E-6 -> 0.000001123456789012345 +ddadd71427 add 0 1.123456789012345E-7 -> 1.123456789012345E-7 +ddadd71428 add 0 1.123456789012345E-8 -> 1.123456789012345E-8 +ddadd71429 add 0 1.123456789012345E-9 -> 1.123456789012345E-9 +ddadd71430 add 0 1.123456789012345E-10 -> 1.123456789012345E-10 +ddadd71431 add 0 1.123456789012345E-11 -> 1.123456789012345E-11 +ddadd71432 add 0 1.123456789012345E-12 -> 1.123456789012345E-12 +ddadd71433 add 0 1.123456789012345E-13 -> 1.123456789012345E-13 +ddadd71434 add 0 1.123456789012345E-14 -> 1.123456789012345E-14 +ddadd71435 add 0 1.123456789012345E-15 -> 1.123456789012345E-15 +ddadd71436 add 0 1.123456789012345E-16 -> 1.123456789012345E-16 +ddadd71437 add 0 1.123456789012345E-17 -> 1.123456789012345E-17 +ddadd71438 add 0 1.123456789012345E-18 -> 1.123456789012345E-18 +ddadd71439 add 0 1.123456789012345E-19 -> 1.123456789012345E-19 + +-- same, reversed 0 +ddadd71440 add 1.123456789012345 0 -> 1.123456789012345 +ddadd71441 add 1.123456789012345E-1 0 -> 0.1123456789012345 +ddadd71442 add 1.123456789012345E-2 0 -> 0.01123456789012345 +ddadd71443 add 1.123456789012345E-3 0 -> 0.001123456789012345 +ddadd71444 add 1.123456789012345E-4 0 -> 0.0001123456789012345 +ddadd71445 add 1.123456789012345E-5 0 -> 0.00001123456789012345 +ddadd71446 add 1.123456789012345E-6 0 -> 0.000001123456789012345 +ddadd71447 add 1.123456789012345E-7 0 -> 1.123456789012345E-7 +ddadd71448 add 1.123456789012345E-8 0 -> 1.123456789012345E-8 +ddadd71449 add 1.123456789012345E-9 0 -> 1.123456789012345E-9 +ddadd71450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10 +ddadd71451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11 +ddadd71452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12 +ddadd71453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13 +ddadd71454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14 +ddadd71455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15 +ddadd71456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16 +ddadd71457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17 +ddadd71458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18 +ddadd71459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19 + +-- same, Es on the 0 +ddadd71460 add 1.123456789012345 0E-0 -> 1.123456789012345 +ddadd71461 add 1.123456789012345 0E-1 -> 1.123456789012345 +ddadd71462 add 1.123456789012345 0E-2 -> 1.123456789012345 +ddadd71463 add 1.123456789012345 0E-3 -> 1.123456789012345 +ddadd71464 add 1.123456789012345 0E-4 -> 1.123456789012345 +ddadd71465 add 1.123456789012345 0E-5 -> 1.123456789012345 +ddadd71466 add 1.123456789012345 0E-6 -> 1.123456789012345 +ddadd71467 add 1.123456789012345 0E-7 -> 1.123456789012345 +ddadd71468 add 1.123456789012345 0E-8 -> 1.123456789012345 +ddadd71469 add 1.123456789012345 0E-9 -> 1.123456789012345 +ddadd71470 add 1.123456789012345 0E-10 -> 1.123456789012345 +ddadd71471 add 1.123456789012345 0E-11 -> 1.123456789012345 +ddadd71472 add 1.123456789012345 0E-12 -> 1.123456789012345 +ddadd71473 add 1.123456789012345 0E-13 -> 1.123456789012345 +ddadd71474 add 1.123456789012345 0E-14 -> 1.123456789012345 +ddadd71475 add 1.123456789012345 0E-15 -> 1.123456789012345 +-- next four flag Rounded because the 0 extends the result +ddadd71476 add 1.123456789012345 0E-16 -> 1.123456789012345 Rounded +ddadd71477 add 1.123456789012345 0E-17 -> 1.123456789012345 Rounded +ddadd71478 add 1.123456789012345 0E-18 -> 1.123456789012345 Rounded +ddadd71479 add 1.123456789012345 0E-19 -> 1.123456789012345 Rounded + +-- sum of two opposite-sign operands is exactly 0 and floor => -0 +rounding: half_up +-- exact zeros from zeros +ddadd71500 add 0 0E-19 -> 0E-19 +ddadd71501 add -0 0E-19 -> 0E-19 +ddadd71502 add 0 -0E-19 -> 0E-19 +ddadd71503 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddadd71511 add -11 11 -> 0 +ddadd71512 add 11 -11 -> 0 + +rounding: half_down +-- exact zeros from zeros +ddadd71520 add 0 0E-19 -> 0E-19 +ddadd71521 add -0 0E-19 -> 0E-19 +ddadd71522 add 0 -0E-19 -> 0E-19 +ddadd71523 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddadd71531 add -11 11 -> 0 +ddadd71532 add 11 -11 -> 0 + +rounding: half_even +-- exact zeros from zeros +ddadd71540 add 0 0E-19 -> 0E-19 +ddadd71541 add -0 0E-19 -> 0E-19 +ddadd71542 add 0 -0E-19 -> 0E-19 +ddadd71543 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddadd71551 add -11 11 -> 0 +ddadd71552 add 11 -11 -> 0 + +rounding: up +-- exact zeros from zeros +ddadd71560 add 0 0E-19 -> 0E-19 +ddadd71561 add -0 0E-19 -> 0E-19 +ddadd71562 add 0 -0E-19 -> 0E-19 +ddadd71563 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddadd71571 add -11 11 -> 0 +ddadd71572 add 11 -11 -> 0 + +rounding: down +-- exact zeros from zeros +ddadd71580 add 0 0E-19 -> 0E-19 +ddadd71581 add -0 0E-19 -> 0E-19 +ddadd71582 add 0 -0E-19 -> 0E-19 +ddadd71583 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddadd71591 add -11 11 -> 0 +ddadd71592 add 11 -11 -> 0 + +rounding: ceiling +-- exact zeros from zeros +ddadd71600 add 0 0E-19 -> 0E-19 +ddadd71601 add -0 0E-19 -> 0E-19 +ddadd71602 add 0 -0E-19 -> 0E-19 +ddadd71603 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddadd71611 add -11 11 -> 0 +ddadd71612 add 11 -11 -> 0 + +-- and the extra-special ugly case; unusual minuses marked by -- * +rounding: floor +-- exact zeros from zeros +ddadd71620 add 0 0E-19 -> 0E-19 +ddadd71621 add -0 0E-19 -> -0E-19 -- * +ddadd71622 add 0 -0E-19 -> -0E-19 -- * +ddadd71623 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddadd71631 add -11 11 -> -0 -- * +ddadd71632 add 11 -11 -> -0 -- * + +-- Examples from SQL proposal (Krishna Kulkarni) +ddadd71701 add 130E-2 120E-2 -> 2.50 +ddadd71702 add 130E-2 12E-1 -> 2.50 +ddadd71703 add 130E-2 1E0 -> 2.30 +ddadd71704 add 1E2 1E4 -> 1.01E+4 +ddadd71705 add 130E-2 -120E-2 -> 0.10 +ddadd71706 add 130E-2 -12E-1 -> 0.10 +ddadd71707 add 130E-2 -1E0 -> 0.30 +ddadd71708 add 1E2 -1E4 -> -9.9E+3 + +-- query from Vincent Kulandaisamy +rounding: ceiling +ddadd71801 add 7.8822773805862E+277 -5.1757503820663E-21 -> 7.882277380586200E+277 Inexact Rounded +ddadd71802 add 7.882277380586200E+277 12.341 -> 7.882277380586201E+277 Inexact Rounded +ddadd71803 add 7.882277380586201E+277 2.7270545046613E-31 -> 7.882277380586202E+277 Inexact Rounded + +ddadd71811 add 12.341 -5.1757503820663E-21 -> 12.34100000000000 Inexact Rounded +ddadd71812 add 12.34100000000000 2.7270545046613E-31 -> 12.34100000000001 Inexact Rounded +ddadd71813 add 12.34100000000001 7.8822773805862E+277 -> 7.882277380586201E+277 Inexact Rounded + +-- Gappy coefficients; check residue handling even with full coefficient gap +rounding: half_even + +ddadd75001 add 1234567890123456 1 -> 1234567890123457 +ddadd75002 add 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded +ddadd75003 add 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded +ddadd75004 add 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded +ddadd75005 add 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded +ddadd75006 add 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded +ddadd75007 add 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded +ddadd75008 add 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded +ddadd75009 add 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded +ddadd75010 add 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded +ddadd75011 add 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded +ddadd75012 add 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded +ddadd75013 add 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded +ddadd75014 add 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded +ddadd75015 add 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded +ddadd75016 add 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded +ddadd75017 add 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded +ddadd75018 add 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded +ddadd75019 add 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded +ddadd75020 add 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded +ddadd75021 add 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded + +-- widening second argument at gap +ddadd75030 add 12345678 1 -> 12345679 +ddadd75031 add 12345678 0.1 -> 12345678.1 +ddadd75032 add 12345678 0.12 -> 12345678.12 +ddadd75033 add 12345678 0.123 -> 12345678.123 +ddadd75034 add 12345678 0.1234 -> 12345678.1234 +ddadd75035 add 12345678 0.12345 -> 12345678.12345 +ddadd75036 add 12345678 0.123456 -> 12345678.123456 +ddadd75037 add 12345678 0.1234567 -> 12345678.1234567 +ddadd75038 add 12345678 0.12345678 -> 12345678.12345678 +ddadd75039 add 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded +ddadd75040 add 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded +ddadd75041 add 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded +ddadd75042 add 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded +ddadd75043 add 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded +ddadd75044 add 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded +ddadd75045 add 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded +ddadd75046 add 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded +ddadd75047 add 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded +ddadd75048 add 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded +ddadd75049 add 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded +-- 90123456 +rounding: half_even +ddadd75050 add 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded +ddadd75051 add 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded +ddadd75052 add 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded +ddadd75053 add 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded +ddadd75054 add 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded +ddadd75055 add 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded +ddadd75056 add 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded +ddadd75057 add 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded +ddadd75060 add 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded +ddadd75061 add 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded +ddadd75062 add 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded +ddadd75063 add 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded +ddadd75064 add 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded +ddadd75065 add 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded +ddadd75066 add 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded +ddadd75067 add 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded +-- far-out residues (full coefficient gap is 16+15 digits) +rounding: up +ddadd75070 add 12345678 1E-8 -> 12345678.00000001 +ddadd75071 add 12345678 1E-9 -> 12345678.00000001 Inexact Rounded +ddadd75072 add 12345678 1E-10 -> 12345678.00000001 Inexact Rounded +ddadd75073 add 12345678 1E-11 -> 12345678.00000001 Inexact Rounded +ddadd75074 add 12345678 1E-12 -> 12345678.00000001 Inexact Rounded +ddadd75075 add 12345678 1E-13 -> 12345678.00000001 Inexact Rounded +ddadd75076 add 12345678 1E-14 -> 12345678.00000001 Inexact Rounded +ddadd75077 add 12345678 1E-15 -> 12345678.00000001 Inexact Rounded +ddadd75078 add 12345678 1E-16 -> 12345678.00000001 Inexact Rounded +ddadd75079 add 12345678 1E-17 -> 12345678.00000001 Inexact Rounded +ddadd75080 add 12345678 1E-18 -> 12345678.00000001 Inexact Rounded +ddadd75081 add 12345678 1E-19 -> 12345678.00000001 Inexact Rounded +ddadd75082 add 12345678 1E-20 -> 12345678.00000001 Inexact Rounded +ddadd75083 add 12345678 1E-25 -> 12345678.00000001 Inexact Rounded +ddadd75084 add 12345678 1E-30 -> 12345678.00000001 Inexact Rounded +ddadd75085 add 12345678 1E-31 -> 12345678.00000001 Inexact Rounded +ddadd75086 add 12345678 1E-32 -> 12345678.00000001 Inexact Rounded +ddadd75087 add 12345678 1E-33 -> 12345678.00000001 Inexact Rounded +ddadd75088 add 12345678 1E-34 -> 12345678.00000001 Inexact Rounded +ddadd75089 add 12345678 1E-35 -> 12345678.00000001 Inexact Rounded + +-- Punit's +ddadd75100 add 1.000 -200.000 -> -199.000 + +-- Rounding swathe +rounding: half_even +ddadd81100 add .2300 12345678901234.00 -> 12345678901234.23 Rounded +ddadd81101 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81102 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81103 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81104 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81105 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81106 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded +ddadd81107 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81108 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81109 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81120 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81121 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded + +rounding: half_up +ddadd81200 add .2300 12345678901234.00 -> 12345678901234.23 Rounded +ddadd81201 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81202 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81203 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81204 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81205 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded +ddadd81206 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded +ddadd81207 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81208 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81209 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81220 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81221 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded + +rounding: half_down +ddadd81300 add .2300 12345678901234.00 -> 12345678901234.23 Rounded +ddadd81301 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81302 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81303 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81304 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81305 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81306 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded +ddadd81307 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81308 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81309 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81320 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81321 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded + +rounding: up +ddadd81400 add .2300 12345678901234.00 -> 12345678901234.23 Rounded +ddadd81401 add .2301 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81402 add .2310 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81403 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81404 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81405 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded +ddadd81406 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded +ddadd81407 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81408 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81409 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81411 add -.2399 -12345678901234.00 -> -12345678901234.24 Inexact Rounded +ddadd81420 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81421 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded + +rounding: down +ddadd81500 add .2300 12345678901234.00 -> 12345678901234.23 Rounded +ddadd81501 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81502 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81503 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81504 add .2351 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81505 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81506 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81507 add .2360 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81508 add .2370 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81509 add .2399 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81511 add -.2399 -12345678901234.00 -> -12345678901234.23 Inexact Rounded +ddadd81520 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded +ddadd81521 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded + +rounding: ceiling +ddadd81600 add .2300 12345678901234.00 -> 12345678901234.23 Rounded +ddadd81601 add .2301 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81602 add .2310 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81603 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81604 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81605 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded +ddadd81606 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded +ddadd81607 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81608 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81609 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81611 add -.2399 -12345678901234.00 -> -12345678901234.23 Inexact Rounded +ddadd81620 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81621 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded + +rounding: floor +ddadd81700 add .2300 12345678901234.00 -> 12345678901234.23 Rounded +ddadd81701 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81702 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81703 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81704 add .2351 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81705 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81706 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81707 add .2360 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81708 add .2370 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81709 add .2399 12345678901234.00 -> 12345678901234.23 Inexact Rounded +ddadd81711 add -.2399 -12345678901234.00 -> -12345678901234.24 Inexact Rounded +ddadd81720 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded +ddadd81721 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded + +rounding: 05up +ddadd81800 add .2000 12345678901234.00 -> 12345678901234.20 Rounded +ddadd81801 add .2001 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81802 add .2010 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81803 add .2050 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81804 add .2051 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81807 add .2060 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81808 add .2070 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81809 add .2099 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81811 add -.2099 -12345678901234.00 -> -12345678901234.21 Inexact Rounded +ddadd81820 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded +ddadd81821 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded + +ddadd81900 add .2100 12345678901234.00 -> 12345678901234.21 Rounded +ddadd81901 add .2101 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81902 add .2110 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81903 add .2150 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81904 add .2151 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81907 add .2160 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81908 add .2170 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81909 add .2199 12345678901234.00 -> 12345678901234.21 Inexact Rounded +ddadd81911 add -.2199 -12345678901234.00 -> -12345678901234.21 Inexact Rounded + +ddadd82000 add .2400 12345678901234.00 -> 12345678901234.24 Rounded +ddadd82001 add .2401 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd82002 add .2410 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd82003 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd82004 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd82007 add .2460 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd82008 add .2470 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd82009 add .2499 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd82011 add -.2499 -12345678901234.00 -> -12345678901234.24 Inexact Rounded + +ddadd82100 add .2500 12345678901234.00 -> 12345678901234.25 Rounded +ddadd82101 add .2501 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82102 add .2510 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82103 add .2550 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82104 add .2551 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82107 add .2560 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82108 add .2570 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82109 add .2599 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82111 add -.2599 -12345678901234.00 -> -12345678901234.26 Inexact Rounded + +ddadd82200 add .2600 12345678901234.00 -> 12345678901234.26 Rounded +ddadd82201 add .2601 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82202 add .2610 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82203 add .2650 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82204 add .2651 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82207 add .2660 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82208 add .2670 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82209 add .2699 12345678901234.00 -> 12345678901234.26 Inexact Rounded +ddadd82211 add -.2699 -12345678901234.00 -> -12345678901234.26 Inexact Rounded + +ddadd82300 add .2900 12345678901234.00 -> 12345678901234.29 Rounded +ddadd82301 add .2901 12345678901234.00 -> 12345678901234.29 Inexact Rounded +ddadd82302 add .2910 12345678901234.00 -> 12345678901234.29 Inexact Rounded +ddadd82303 add .2950 12345678901234.00 -> 12345678901234.29 Inexact Rounded +ddadd82304 add .2951 12345678901234.00 -> 12345678901234.29 Inexact Rounded +ddadd82307 add .2960 12345678901234.00 -> 12345678901234.29 Inexact Rounded +ddadd82308 add .2970 12345678901234.00 -> 12345678901234.29 Inexact Rounded +ddadd82309 add .2999 12345678901234.00 -> 12345678901234.29 Inexact Rounded +ddadd82311 add -.2999 -12345678901234.00 -> -12345678901234.29 Inexact Rounded + +-- Null tests +ddadd9990 add 10 # -> NaN Invalid_operation +ddadd9991 add # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddAnd.decTest b/Lib/test/decimaltestdata/ddAnd.decTest index 6765175..64a9f92 100644 --- a/Lib/test/decimaltestdata/ddAnd.decTest +++ b/Lib/test/decimaltestdata/ddAnd.decTest @@ -1,347 +1,347 @@ ------------------------------------------------------------------------- --- ddAnd.decTest -- digitwise logical AND for decDoubles -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check (truth table) -ddand001 and 0 0 -> 0 -ddand002 and 0 1 -> 0 -ddand003 and 1 0 -> 0 -ddand004 and 1 1 -> 1 -ddand005 and 1100 1010 -> 1000 --- and at msd and msd-1 --- 1234567890123456 1234567890123456 1234567890123456 -ddand006 and 0000000000000000 0000000000000000 -> 0 -ddand007 and 0000000000000000 1000000000000000 -> 0 -ddand008 and 1000000000000000 0000000000000000 -> 0 -ddand009 and 1000000000000000 1000000000000000 -> 1000000000000000 -ddand010 and 0000000000000000 0000000000000000 -> 0 -ddand011 and 0000000000000000 0100000000000000 -> 0 -ddand012 and 0100000000000000 0000000000000000 -> 0 -ddand013 and 0100000000000000 0100000000000000 -> 100000000000000 - --- Various lengths --- 1234567890123456 1234567890123456 1234567890123456 -ddand021 and 1111111111111111 1111111111111111 -> 1111111111111111 -ddand024 and 1111111111111111 111111111111111 -> 111111111111111 -ddand025 and 1111111111111111 11111111111111 -> 11111111111111 -ddand026 and 1111111111111111 1111111111111 -> 1111111111111 -ddand027 and 1111111111111111 111111111111 -> 111111111111 -ddand028 and 1111111111111111 11111111111 -> 11111111111 -ddand029 and 1111111111111111 1111111111 -> 1111111111 -ddand030 and 1111111111111111 111111111 -> 111111111 -ddand031 and 1111111111111111 11111111 -> 11111111 -ddand032 and 1111111111111111 1111111 -> 1111111 -ddand033 and 1111111111111111 111111 -> 111111 -ddand034 and 1111111111111111 11111 -> 11111 -ddand035 and 1111111111111111 1111 -> 1111 -ddand036 and 1111111111111111 111 -> 111 -ddand037 and 1111111111111111 11 -> 11 -ddand038 and 1111111111111111 1 -> 1 -ddand039 and 1111111111111111 0 -> 0 - -ddand040 and 1111111111111111 1111111111111111 -> 1111111111111111 -ddand041 and 111111111111111 1111111111111111 -> 111111111111111 -ddand042 and 111111111111111 1111111111111111 -> 111111111111111 -ddand043 and 11111111111111 1111111111111111 -> 11111111111111 -ddand044 and 1111111111111 1111111111111111 -> 1111111111111 -ddand045 and 111111111111 1111111111111111 -> 111111111111 -ddand046 and 11111111111 1111111111111111 -> 11111111111 -ddand047 and 1111111111 1111111111111111 -> 1111111111 -ddand048 and 111111111 1111111111111111 -> 111111111 -ddand049 and 11111111 1111111111111111 -> 11111111 -ddand050 and 1111111 1111111111111111 -> 1111111 -ddand051 and 111111 1111111111111111 -> 111111 -ddand052 and 11111 1111111111111111 -> 11111 -ddand053 and 1111 1111111111111111 -> 1111 -ddand054 and 111 1111111111111111 -> 111 -ddand055 and 11 1111111111111111 -> 11 -ddand056 and 1 1111111111111111 -> 1 -ddand057 and 0 1111111111111111 -> 0 - -ddand150 and 1111111111 1 -> 1 -ddand151 and 111111111 1 -> 1 -ddand152 and 11111111 1 -> 1 -ddand153 and 1111111 1 -> 1 -ddand154 and 111111 1 -> 1 -ddand155 and 11111 1 -> 1 -ddand156 and 1111 1 -> 1 -ddand157 and 111 1 -> 1 -ddand158 and 11 1 -> 1 -ddand159 and 1 1 -> 1 - -ddand160 and 1111111111 0 -> 0 -ddand161 and 111111111 0 -> 0 -ddand162 and 11111111 0 -> 0 -ddand163 and 1111111 0 -> 0 -ddand164 and 111111 0 -> 0 -ddand165 and 11111 0 -> 0 -ddand166 and 1111 0 -> 0 -ddand167 and 111 0 -> 0 -ddand168 and 11 0 -> 0 -ddand169 and 1 0 -> 0 - -ddand170 and 1 1111111111 -> 1 -ddand171 and 1 111111111 -> 1 -ddand172 and 1 11111111 -> 1 -ddand173 and 1 1111111 -> 1 -ddand174 and 1 111111 -> 1 -ddand175 and 1 11111 -> 1 -ddand176 and 1 1111 -> 1 -ddand177 and 1 111 -> 1 -ddand178 and 1 11 -> 1 -ddand179 and 1 1 -> 1 - -ddand180 and 0 1111111111 -> 0 -ddand181 and 0 111111111 -> 0 -ddand182 and 0 11111111 -> 0 -ddand183 and 0 1111111 -> 0 -ddand184 and 0 111111 -> 0 -ddand185 and 0 11111 -> 0 -ddand186 and 0 1111 -> 0 -ddand187 and 0 111 -> 0 -ddand188 and 0 11 -> 0 -ddand189 and 0 1 -> 0 - -ddand090 and 011111111 111111111 -> 11111111 -ddand091 and 101111111 111111111 -> 101111111 -ddand092 and 110111111 111111111 -> 110111111 -ddand093 and 111011111 111111111 -> 111011111 -ddand094 and 111101111 111111111 -> 111101111 -ddand095 and 111110111 111111111 -> 111110111 -ddand096 and 111111011 111111111 -> 111111011 -ddand097 and 111111101 111111111 -> 111111101 -ddand098 and 111111110 111111111 -> 111111110 - -ddand100 and 111111111 011111111 -> 11111111 -ddand101 and 111111111 101111111 -> 101111111 -ddand102 and 111111111 110111111 -> 110111111 -ddand103 and 111111111 111011111 -> 111011111 -ddand104 and 111111111 111101111 -> 111101111 -ddand105 and 111111111 111110111 -> 111110111 -ddand106 and 111111111 111111011 -> 111111011 -ddand107 and 111111111 111111101 -> 111111101 -ddand108 and 111111111 111111110 -> 111111110 - --- non-0/1 should not be accepted, nor should signs -ddand220 and 111111112 111111111 -> NaN Invalid_operation -ddand221 and 333333333 333333333 -> NaN Invalid_operation -ddand222 and 555555555 555555555 -> NaN Invalid_operation -ddand223 and 777777777 777777777 -> NaN Invalid_operation -ddand224 and 999999999 999999999 -> NaN Invalid_operation -ddand225 and 222222222 999999999 -> NaN Invalid_operation -ddand226 and 444444444 999999999 -> NaN Invalid_operation -ddand227 and 666666666 999999999 -> NaN Invalid_operation -ddand228 and 888888888 999999999 -> NaN Invalid_operation -ddand229 and 999999999 222222222 -> NaN Invalid_operation -ddand230 and 999999999 444444444 -> NaN Invalid_operation -ddand231 and 999999999 666666666 -> NaN Invalid_operation -ddand232 and 999999999 888888888 -> NaN Invalid_operation --- a few randoms -ddand240 and 567468689 -934981942 -> NaN Invalid_operation -ddand241 and 567367689 934981942 -> NaN Invalid_operation -ddand242 and -631917772 -706014634 -> NaN Invalid_operation -ddand243 and -756253257 138579234 -> NaN Invalid_operation -ddand244 and 835590149 567435400 -> NaN Invalid_operation --- test MSD -ddand250 and 2000000000000000 1000000000000000 -> NaN Invalid_operation -ddand251 and 7000000000000000 1000000000000000 -> NaN Invalid_operation -ddand252 and 8000000000000000 1000000000000000 -> NaN Invalid_operation -ddand253 and 9000000000000000 1000000000000000 -> NaN Invalid_operation -ddand254 and 2000000000000000 0000000000000000 -> NaN Invalid_operation -ddand255 and 7000000000000000 0000000000000000 -> NaN Invalid_operation -ddand256 and 8000000000000000 0000000000000000 -> NaN Invalid_operation -ddand257 and 9000000000000000 0000000000000000 -> NaN Invalid_operation -ddand258 and 1000000000000000 2000000000000000 -> NaN Invalid_operation -ddand259 and 1000000000000000 7000000000000000 -> NaN Invalid_operation -ddand260 and 1000000000000000 8000000000000000 -> NaN Invalid_operation -ddand261 and 1000000000000000 9000000000000000 -> NaN Invalid_operation -ddand262 and 0000000000000000 2000000000000000 -> NaN Invalid_operation -ddand263 and 0000000000000000 7000000000000000 -> NaN Invalid_operation -ddand264 and 0000000000000000 8000000000000000 -> NaN Invalid_operation -ddand265 and 0000000000000000 9000000000000000 -> NaN Invalid_operation --- test MSD-1 -ddand270 and 0200001000000000 1000100000000010 -> NaN Invalid_operation -ddand271 and 0700000100000000 1000010000000100 -> NaN Invalid_operation -ddand272 and 0800000010000000 1000001000001000 -> NaN Invalid_operation -ddand273 and 0900000001000000 1000000100010000 -> NaN Invalid_operation -ddand274 and 1000000000100000 0200000010100000 -> NaN Invalid_operation -ddand275 and 1000000000010000 0700000001000000 -> NaN Invalid_operation -ddand276 and 1000000000001000 0800000010100000 -> NaN Invalid_operation -ddand277 and 1000000000000100 0900000000010000 -> NaN Invalid_operation --- test LSD -ddand280 and 0010000000000002 1000000100000001 -> NaN Invalid_operation -ddand281 and 0001000000000007 1000001000000011 -> NaN Invalid_operation -ddand282 and 0000100000000008 1000010000000001 -> NaN Invalid_operation -ddand283 and 0000010000000009 1000100000000001 -> NaN Invalid_operation -ddand284 and 1000001000000000 0001000000000002 -> NaN Invalid_operation -ddand285 and 1000000100000000 0010000000000007 -> NaN Invalid_operation -ddand286 and 1000000010000000 0100000000000008 -> NaN Invalid_operation -ddand287 and 1000000001000000 1000000000000009 -> NaN Invalid_operation --- test Middie -ddand288 and 0010000020000000 1000001000000000 -> NaN Invalid_operation -ddand289 and 0001000070000001 1000000100000000 -> NaN Invalid_operation -ddand290 and 0000100080000010 1000000010000000 -> NaN Invalid_operation -ddand291 and 0000010090000100 1000000001000000 -> NaN Invalid_operation -ddand292 and 1000001000001000 0000000020100000 -> NaN Invalid_operation -ddand293 and 1000000100010000 0000000070010000 -> NaN Invalid_operation -ddand294 and 1000000010100000 0000000080001000 -> NaN Invalid_operation -ddand295 and 1000000001000000 0000000090000100 -> NaN Invalid_operation --- signs -ddand296 and -1000000001000000 -0000010000000100 -> NaN Invalid_operation -ddand297 and -1000000001000000 0000000010000100 -> NaN Invalid_operation -ddand298 and 1000000001000000 -0000001000000100 -> NaN Invalid_operation -ddand299 and 1000000001000000 0000000011000100 -> 1000000 - --- Nmax, Nmin, Ntiny-like -ddand331 and 2 9.99999999E+199 -> NaN Invalid_operation -ddand332 and 3 1E-199 -> NaN Invalid_operation -ddand333 and 4 1.00000000E-199 -> NaN Invalid_operation -ddand334 and 5 1E-100 -> NaN Invalid_operation -ddand335 and 6 -1E-100 -> NaN Invalid_operation -ddand336 and 7 -1.00000000E-199 -> NaN Invalid_operation -ddand337 and 8 -1E-199 -> NaN Invalid_operation -ddand338 and 9 -9.99999999E+199 -> NaN Invalid_operation -ddand341 and 9.99999999E+199 -18 -> NaN Invalid_operation -ddand342 and 1E-199 01 -> NaN Invalid_operation -ddand343 and 1.00000000E-199 -18 -> NaN Invalid_operation -ddand344 and 1E-100 18 -> NaN Invalid_operation -ddand345 and -1E-100 -10 -> NaN Invalid_operation -ddand346 and -1.00000000E-199 18 -> NaN Invalid_operation -ddand347 and -1E-199 10 -> NaN Invalid_operation -ddand348 and -9.99999999E+199 -18 -> NaN Invalid_operation - --- A few other non-integers -ddand361 and 1.0 1 -> NaN Invalid_operation -ddand362 and 1E+1 1 -> NaN Invalid_operation -ddand363 and 0.0 1 -> NaN Invalid_operation -ddand364 and 0E+1 1 -> NaN Invalid_operation -ddand365 and 9.9 1 -> NaN Invalid_operation -ddand366 and 9E+1 1 -> NaN Invalid_operation -ddand371 and 0 1.0 -> NaN Invalid_operation -ddand372 and 0 1E+1 -> NaN Invalid_operation -ddand373 and 0 0.0 -> NaN Invalid_operation -ddand374 and 0 0E+1 -> NaN Invalid_operation -ddand375 and 0 9.9 -> NaN Invalid_operation -ddand376 and 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -ddand780 and -Inf -Inf -> NaN Invalid_operation -ddand781 and -Inf -1000 -> NaN Invalid_operation -ddand782 and -Inf -1 -> NaN Invalid_operation -ddand783 and -Inf -0 -> NaN Invalid_operation -ddand784 and -Inf 0 -> NaN Invalid_operation -ddand785 and -Inf 1 -> NaN Invalid_operation -ddand786 and -Inf 1000 -> NaN Invalid_operation -ddand787 and -1000 -Inf -> NaN Invalid_operation -ddand788 and -Inf -Inf -> NaN Invalid_operation -ddand789 and -1 -Inf -> NaN Invalid_operation -ddand790 and -0 -Inf -> NaN Invalid_operation -ddand791 and 0 -Inf -> NaN Invalid_operation -ddand792 and 1 -Inf -> NaN Invalid_operation -ddand793 and 1000 -Inf -> NaN Invalid_operation -ddand794 and Inf -Inf -> NaN Invalid_operation - -ddand800 and Inf -Inf -> NaN Invalid_operation -ddand801 and Inf -1000 -> NaN Invalid_operation -ddand802 and Inf -1 -> NaN Invalid_operation -ddand803 and Inf -0 -> NaN Invalid_operation -ddand804 and Inf 0 -> NaN Invalid_operation -ddand805 and Inf 1 -> NaN Invalid_operation -ddand806 and Inf 1000 -> NaN Invalid_operation -ddand807 and Inf Inf -> NaN Invalid_operation -ddand808 and -1000 Inf -> NaN Invalid_operation -ddand809 and -Inf Inf -> NaN Invalid_operation -ddand810 and -1 Inf -> NaN Invalid_operation -ddand811 and -0 Inf -> NaN Invalid_operation -ddand812 and 0 Inf -> NaN Invalid_operation -ddand813 and 1 Inf -> NaN Invalid_operation -ddand814 and 1000 Inf -> NaN Invalid_operation -ddand815 and Inf Inf -> NaN Invalid_operation - -ddand821 and NaN -Inf -> NaN Invalid_operation -ddand822 and NaN -1000 -> NaN Invalid_operation -ddand823 and NaN -1 -> NaN Invalid_operation -ddand824 and NaN -0 -> NaN Invalid_operation -ddand825 and NaN 0 -> NaN Invalid_operation -ddand826 and NaN 1 -> NaN Invalid_operation -ddand827 and NaN 1000 -> NaN Invalid_operation -ddand828 and NaN Inf -> NaN Invalid_operation -ddand829 and NaN NaN -> NaN Invalid_operation -ddand830 and -Inf NaN -> NaN Invalid_operation -ddand831 and -1000 NaN -> NaN Invalid_operation -ddand832 and -1 NaN -> NaN Invalid_operation -ddand833 and -0 NaN -> NaN Invalid_operation -ddand834 and 0 NaN -> NaN Invalid_operation -ddand835 and 1 NaN -> NaN Invalid_operation -ddand836 and 1000 NaN -> NaN Invalid_operation -ddand837 and Inf NaN -> NaN Invalid_operation - -ddand841 and sNaN -Inf -> NaN Invalid_operation -ddand842 and sNaN -1000 -> NaN Invalid_operation -ddand843 and sNaN -1 -> NaN Invalid_operation -ddand844 and sNaN -0 -> NaN Invalid_operation -ddand845 and sNaN 0 -> NaN Invalid_operation -ddand846 and sNaN 1 -> NaN Invalid_operation -ddand847 and sNaN 1000 -> NaN Invalid_operation -ddand848 and sNaN NaN -> NaN Invalid_operation -ddand849 and sNaN sNaN -> NaN Invalid_operation -ddand850 and NaN sNaN -> NaN Invalid_operation -ddand851 and -Inf sNaN -> NaN Invalid_operation -ddand852 and -1000 sNaN -> NaN Invalid_operation -ddand853 and -1 sNaN -> NaN Invalid_operation -ddand854 and -0 sNaN -> NaN Invalid_operation -ddand855 and 0 sNaN -> NaN Invalid_operation -ddand856 and 1 sNaN -> NaN Invalid_operation -ddand857 and 1000 sNaN -> NaN Invalid_operation -ddand858 and Inf sNaN -> NaN Invalid_operation -ddand859 and NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddand861 and NaN1 -Inf -> NaN Invalid_operation -ddand862 and +NaN2 -1000 -> NaN Invalid_operation -ddand863 and NaN3 1000 -> NaN Invalid_operation -ddand864 and NaN4 Inf -> NaN Invalid_operation -ddand865 and NaN5 +NaN6 -> NaN Invalid_operation -ddand866 and -Inf NaN7 -> NaN Invalid_operation -ddand867 and -1000 NaN8 -> NaN Invalid_operation -ddand868 and 1000 NaN9 -> NaN Invalid_operation -ddand869 and Inf +NaN10 -> NaN Invalid_operation -ddand871 and sNaN11 -Inf -> NaN Invalid_operation -ddand872 and sNaN12 -1000 -> NaN Invalid_operation -ddand873 and sNaN13 1000 -> NaN Invalid_operation -ddand874 and sNaN14 NaN17 -> NaN Invalid_operation -ddand875 and sNaN15 sNaN18 -> NaN Invalid_operation -ddand876 and NaN16 sNaN19 -> NaN Invalid_operation -ddand877 and -Inf +sNaN20 -> NaN Invalid_operation -ddand878 and -1000 sNaN21 -> NaN Invalid_operation -ddand879 and 1000 sNaN22 -> NaN Invalid_operation -ddand880 and Inf sNaN23 -> NaN Invalid_operation -ddand881 and +NaN25 +sNaN24 -> NaN Invalid_operation -ddand882 and -NaN26 NaN28 -> NaN Invalid_operation -ddand883 and -sNaN27 sNaN29 -> NaN Invalid_operation -ddand884 and 1000 -NaN30 -> NaN Invalid_operation -ddand885 and 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddAnd.decTest -- digitwise logical AND for decDoubles -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check (truth table) +ddand001 and 0 0 -> 0 +ddand002 and 0 1 -> 0 +ddand003 and 1 0 -> 0 +ddand004 and 1 1 -> 1 +ddand005 and 1100 1010 -> 1000 +-- and at msd and msd-1 +-- 1234567890123456 1234567890123456 1234567890123456 +ddand006 and 0000000000000000 0000000000000000 -> 0 +ddand007 and 0000000000000000 1000000000000000 -> 0 +ddand008 and 1000000000000000 0000000000000000 -> 0 +ddand009 and 1000000000000000 1000000000000000 -> 1000000000000000 +ddand010 and 0000000000000000 0000000000000000 -> 0 +ddand011 and 0000000000000000 0100000000000000 -> 0 +ddand012 and 0100000000000000 0000000000000000 -> 0 +ddand013 and 0100000000000000 0100000000000000 -> 100000000000000 + +-- Various lengths +-- 1234567890123456 1234567890123456 1234567890123456 +ddand021 and 1111111111111111 1111111111111111 -> 1111111111111111 +ddand024 and 1111111111111111 111111111111111 -> 111111111111111 +ddand025 and 1111111111111111 11111111111111 -> 11111111111111 +ddand026 and 1111111111111111 1111111111111 -> 1111111111111 +ddand027 and 1111111111111111 111111111111 -> 111111111111 +ddand028 and 1111111111111111 11111111111 -> 11111111111 +ddand029 and 1111111111111111 1111111111 -> 1111111111 +ddand030 and 1111111111111111 111111111 -> 111111111 +ddand031 and 1111111111111111 11111111 -> 11111111 +ddand032 and 1111111111111111 1111111 -> 1111111 +ddand033 and 1111111111111111 111111 -> 111111 +ddand034 and 1111111111111111 11111 -> 11111 +ddand035 and 1111111111111111 1111 -> 1111 +ddand036 and 1111111111111111 111 -> 111 +ddand037 and 1111111111111111 11 -> 11 +ddand038 and 1111111111111111 1 -> 1 +ddand039 and 1111111111111111 0 -> 0 + +ddand040 and 1111111111111111 1111111111111111 -> 1111111111111111 +ddand041 and 111111111111111 1111111111111111 -> 111111111111111 +ddand042 and 111111111111111 1111111111111111 -> 111111111111111 +ddand043 and 11111111111111 1111111111111111 -> 11111111111111 +ddand044 and 1111111111111 1111111111111111 -> 1111111111111 +ddand045 and 111111111111 1111111111111111 -> 111111111111 +ddand046 and 11111111111 1111111111111111 -> 11111111111 +ddand047 and 1111111111 1111111111111111 -> 1111111111 +ddand048 and 111111111 1111111111111111 -> 111111111 +ddand049 and 11111111 1111111111111111 -> 11111111 +ddand050 and 1111111 1111111111111111 -> 1111111 +ddand051 and 111111 1111111111111111 -> 111111 +ddand052 and 11111 1111111111111111 -> 11111 +ddand053 and 1111 1111111111111111 -> 1111 +ddand054 and 111 1111111111111111 -> 111 +ddand055 and 11 1111111111111111 -> 11 +ddand056 and 1 1111111111111111 -> 1 +ddand057 and 0 1111111111111111 -> 0 + +ddand150 and 1111111111 1 -> 1 +ddand151 and 111111111 1 -> 1 +ddand152 and 11111111 1 -> 1 +ddand153 and 1111111 1 -> 1 +ddand154 and 111111 1 -> 1 +ddand155 and 11111 1 -> 1 +ddand156 and 1111 1 -> 1 +ddand157 and 111 1 -> 1 +ddand158 and 11 1 -> 1 +ddand159 and 1 1 -> 1 + +ddand160 and 1111111111 0 -> 0 +ddand161 and 111111111 0 -> 0 +ddand162 and 11111111 0 -> 0 +ddand163 and 1111111 0 -> 0 +ddand164 and 111111 0 -> 0 +ddand165 and 11111 0 -> 0 +ddand166 and 1111 0 -> 0 +ddand167 and 111 0 -> 0 +ddand168 and 11 0 -> 0 +ddand169 and 1 0 -> 0 + +ddand170 and 1 1111111111 -> 1 +ddand171 and 1 111111111 -> 1 +ddand172 and 1 11111111 -> 1 +ddand173 and 1 1111111 -> 1 +ddand174 and 1 111111 -> 1 +ddand175 and 1 11111 -> 1 +ddand176 and 1 1111 -> 1 +ddand177 and 1 111 -> 1 +ddand178 and 1 11 -> 1 +ddand179 and 1 1 -> 1 + +ddand180 and 0 1111111111 -> 0 +ddand181 and 0 111111111 -> 0 +ddand182 and 0 11111111 -> 0 +ddand183 and 0 1111111 -> 0 +ddand184 and 0 111111 -> 0 +ddand185 and 0 11111 -> 0 +ddand186 and 0 1111 -> 0 +ddand187 and 0 111 -> 0 +ddand188 and 0 11 -> 0 +ddand189 and 0 1 -> 0 + +ddand090 and 011111111 111111111 -> 11111111 +ddand091 and 101111111 111111111 -> 101111111 +ddand092 and 110111111 111111111 -> 110111111 +ddand093 and 111011111 111111111 -> 111011111 +ddand094 and 111101111 111111111 -> 111101111 +ddand095 and 111110111 111111111 -> 111110111 +ddand096 and 111111011 111111111 -> 111111011 +ddand097 and 111111101 111111111 -> 111111101 +ddand098 and 111111110 111111111 -> 111111110 + +ddand100 and 111111111 011111111 -> 11111111 +ddand101 and 111111111 101111111 -> 101111111 +ddand102 and 111111111 110111111 -> 110111111 +ddand103 and 111111111 111011111 -> 111011111 +ddand104 and 111111111 111101111 -> 111101111 +ddand105 and 111111111 111110111 -> 111110111 +ddand106 and 111111111 111111011 -> 111111011 +ddand107 and 111111111 111111101 -> 111111101 +ddand108 and 111111111 111111110 -> 111111110 + +-- non-0/1 should not be accepted, nor should signs +ddand220 and 111111112 111111111 -> NaN Invalid_operation +ddand221 and 333333333 333333333 -> NaN Invalid_operation +ddand222 and 555555555 555555555 -> NaN Invalid_operation +ddand223 and 777777777 777777777 -> NaN Invalid_operation +ddand224 and 999999999 999999999 -> NaN Invalid_operation +ddand225 and 222222222 999999999 -> NaN Invalid_operation +ddand226 and 444444444 999999999 -> NaN Invalid_operation +ddand227 and 666666666 999999999 -> NaN Invalid_operation +ddand228 and 888888888 999999999 -> NaN Invalid_operation +ddand229 and 999999999 222222222 -> NaN Invalid_operation +ddand230 and 999999999 444444444 -> NaN Invalid_operation +ddand231 and 999999999 666666666 -> NaN Invalid_operation +ddand232 and 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +ddand240 and 567468689 -934981942 -> NaN Invalid_operation +ddand241 and 567367689 934981942 -> NaN Invalid_operation +ddand242 and -631917772 -706014634 -> NaN Invalid_operation +ddand243 and -756253257 138579234 -> NaN Invalid_operation +ddand244 and 835590149 567435400 -> NaN Invalid_operation +-- test MSD +ddand250 and 2000000000000000 1000000000000000 -> NaN Invalid_operation +ddand251 and 7000000000000000 1000000000000000 -> NaN Invalid_operation +ddand252 and 8000000000000000 1000000000000000 -> NaN Invalid_operation +ddand253 and 9000000000000000 1000000000000000 -> NaN Invalid_operation +ddand254 and 2000000000000000 0000000000000000 -> NaN Invalid_operation +ddand255 and 7000000000000000 0000000000000000 -> NaN Invalid_operation +ddand256 and 8000000000000000 0000000000000000 -> NaN Invalid_operation +ddand257 and 9000000000000000 0000000000000000 -> NaN Invalid_operation +ddand258 and 1000000000000000 2000000000000000 -> NaN Invalid_operation +ddand259 and 1000000000000000 7000000000000000 -> NaN Invalid_operation +ddand260 and 1000000000000000 8000000000000000 -> NaN Invalid_operation +ddand261 and 1000000000000000 9000000000000000 -> NaN Invalid_operation +ddand262 and 0000000000000000 2000000000000000 -> NaN Invalid_operation +ddand263 and 0000000000000000 7000000000000000 -> NaN Invalid_operation +ddand264 and 0000000000000000 8000000000000000 -> NaN Invalid_operation +ddand265 and 0000000000000000 9000000000000000 -> NaN Invalid_operation +-- test MSD-1 +ddand270 and 0200001000000000 1000100000000010 -> NaN Invalid_operation +ddand271 and 0700000100000000 1000010000000100 -> NaN Invalid_operation +ddand272 and 0800000010000000 1000001000001000 -> NaN Invalid_operation +ddand273 and 0900000001000000 1000000100010000 -> NaN Invalid_operation +ddand274 and 1000000000100000 0200000010100000 -> NaN Invalid_operation +ddand275 and 1000000000010000 0700000001000000 -> NaN Invalid_operation +ddand276 and 1000000000001000 0800000010100000 -> NaN Invalid_operation +ddand277 and 1000000000000100 0900000000010000 -> NaN Invalid_operation +-- test LSD +ddand280 and 0010000000000002 1000000100000001 -> NaN Invalid_operation +ddand281 and 0001000000000007 1000001000000011 -> NaN Invalid_operation +ddand282 and 0000100000000008 1000010000000001 -> NaN Invalid_operation +ddand283 and 0000010000000009 1000100000000001 -> NaN Invalid_operation +ddand284 and 1000001000000000 0001000000000002 -> NaN Invalid_operation +ddand285 and 1000000100000000 0010000000000007 -> NaN Invalid_operation +ddand286 and 1000000010000000 0100000000000008 -> NaN Invalid_operation +ddand287 and 1000000001000000 1000000000000009 -> NaN Invalid_operation +-- test Middie +ddand288 and 0010000020000000 1000001000000000 -> NaN Invalid_operation +ddand289 and 0001000070000001 1000000100000000 -> NaN Invalid_operation +ddand290 and 0000100080000010 1000000010000000 -> NaN Invalid_operation +ddand291 and 0000010090000100 1000000001000000 -> NaN Invalid_operation +ddand292 and 1000001000001000 0000000020100000 -> NaN Invalid_operation +ddand293 and 1000000100010000 0000000070010000 -> NaN Invalid_operation +ddand294 and 1000000010100000 0000000080001000 -> NaN Invalid_operation +ddand295 and 1000000001000000 0000000090000100 -> NaN Invalid_operation +-- signs +ddand296 and -1000000001000000 -0000010000000100 -> NaN Invalid_operation +ddand297 and -1000000001000000 0000000010000100 -> NaN Invalid_operation +ddand298 and 1000000001000000 -0000001000000100 -> NaN Invalid_operation +ddand299 and 1000000001000000 0000000011000100 -> 1000000 + +-- Nmax, Nmin, Ntiny-like +ddand331 and 2 9.99999999E+199 -> NaN Invalid_operation +ddand332 and 3 1E-199 -> NaN Invalid_operation +ddand333 and 4 1.00000000E-199 -> NaN Invalid_operation +ddand334 and 5 1E-100 -> NaN Invalid_operation +ddand335 and 6 -1E-100 -> NaN Invalid_operation +ddand336 and 7 -1.00000000E-199 -> NaN Invalid_operation +ddand337 and 8 -1E-199 -> NaN Invalid_operation +ddand338 and 9 -9.99999999E+199 -> NaN Invalid_operation +ddand341 and 9.99999999E+199 -18 -> NaN Invalid_operation +ddand342 and 1E-199 01 -> NaN Invalid_operation +ddand343 and 1.00000000E-199 -18 -> NaN Invalid_operation +ddand344 and 1E-100 18 -> NaN Invalid_operation +ddand345 and -1E-100 -10 -> NaN Invalid_operation +ddand346 and -1.00000000E-199 18 -> NaN Invalid_operation +ddand347 and -1E-199 10 -> NaN Invalid_operation +ddand348 and -9.99999999E+199 -18 -> NaN Invalid_operation + +-- A few other non-integers +ddand361 and 1.0 1 -> NaN Invalid_operation +ddand362 and 1E+1 1 -> NaN Invalid_operation +ddand363 and 0.0 1 -> NaN Invalid_operation +ddand364 and 0E+1 1 -> NaN Invalid_operation +ddand365 and 9.9 1 -> NaN Invalid_operation +ddand366 and 9E+1 1 -> NaN Invalid_operation +ddand371 and 0 1.0 -> NaN Invalid_operation +ddand372 and 0 1E+1 -> NaN Invalid_operation +ddand373 and 0 0.0 -> NaN Invalid_operation +ddand374 and 0 0E+1 -> NaN Invalid_operation +ddand375 and 0 9.9 -> NaN Invalid_operation +ddand376 and 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +ddand780 and -Inf -Inf -> NaN Invalid_operation +ddand781 and -Inf -1000 -> NaN Invalid_operation +ddand782 and -Inf -1 -> NaN Invalid_operation +ddand783 and -Inf -0 -> NaN Invalid_operation +ddand784 and -Inf 0 -> NaN Invalid_operation +ddand785 and -Inf 1 -> NaN Invalid_operation +ddand786 and -Inf 1000 -> NaN Invalid_operation +ddand787 and -1000 -Inf -> NaN Invalid_operation +ddand788 and -Inf -Inf -> NaN Invalid_operation +ddand789 and -1 -Inf -> NaN Invalid_operation +ddand790 and -0 -Inf -> NaN Invalid_operation +ddand791 and 0 -Inf -> NaN Invalid_operation +ddand792 and 1 -Inf -> NaN Invalid_operation +ddand793 and 1000 -Inf -> NaN Invalid_operation +ddand794 and Inf -Inf -> NaN Invalid_operation + +ddand800 and Inf -Inf -> NaN Invalid_operation +ddand801 and Inf -1000 -> NaN Invalid_operation +ddand802 and Inf -1 -> NaN Invalid_operation +ddand803 and Inf -0 -> NaN Invalid_operation +ddand804 and Inf 0 -> NaN Invalid_operation +ddand805 and Inf 1 -> NaN Invalid_operation +ddand806 and Inf 1000 -> NaN Invalid_operation +ddand807 and Inf Inf -> NaN Invalid_operation +ddand808 and -1000 Inf -> NaN Invalid_operation +ddand809 and -Inf Inf -> NaN Invalid_operation +ddand810 and -1 Inf -> NaN Invalid_operation +ddand811 and -0 Inf -> NaN Invalid_operation +ddand812 and 0 Inf -> NaN Invalid_operation +ddand813 and 1 Inf -> NaN Invalid_operation +ddand814 and 1000 Inf -> NaN Invalid_operation +ddand815 and Inf Inf -> NaN Invalid_operation + +ddand821 and NaN -Inf -> NaN Invalid_operation +ddand822 and NaN -1000 -> NaN Invalid_operation +ddand823 and NaN -1 -> NaN Invalid_operation +ddand824 and NaN -0 -> NaN Invalid_operation +ddand825 and NaN 0 -> NaN Invalid_operation +ddand826 and NaN 1 -> NaN Invalid_operation +ddand827 and NaN 1000 -> NaN Invalid_operation +ddand828 and NaN Inf -> NaN Invalid_operation +ddand829 and NaN NaN -> NaN Invalid_operation +ddand830 and -Inf NaN -> NaN Invalid_operation +ddand831 and -1000 NaN -> NaN Invalid_operation +ddand832 and -1 NaN -> NaN Invalid_operation +ddand833 and -0 NaN -> NaN Invalid_operation +ddand834 and 0 NaN -> NaN Invalid_operation +ddand835 and 1 NaN -> NaN Invalid_operation +ddand836 and 1000 NaN -> NaN Invalid_operation +ddand837 and Inf NaN -> NaN Invalid_operation + +ddand841 and sNaN -Inf -> NaN Invalid_operation +ddand842 and sNaN -1000 -> NaN Invalid_operation +ddand843 and sNaN -1 -> NaN Invalid_operation +ddand844 and sNaN -0 -> NaN Invalid_operation +ddand845 and sNaN 0 -> NaN Invalid_operation +ddand846 and sNaN 1 -> NaN Invalid_operation +ddand847 and sNaN 1000 -> NaN Invalid_operation +ddand848 and sNaN NaN -> NaN Invalid_operation +ddand849 and sNaN sNaN -> NaN Invalid_operation +ddand850 and NaN sNaN -> NaN Invalid_operation +ddand851 and -Inf sNaN -> NaN Invalid_operation +ddand852 and -1000 sNaN -> NaN Invalid_operation +ddand853 and -1 sNaN -> NaN Invalid_operation +ddand854 and -0 sNaN -> NaN Invalid_operation +ddand855 and 0 sNaN -> NaN Invalid_operation +ddand856 and 1 sNaN -> NaN Invalid_operation +ddand857 and 1000 sNaN -> NaN Invalid_operation +ddand858 and Inf sNaN -> NaN Invalid_operation +ddand859 and NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddand861 and NaN1 -Inf -> NaN Invalid_operation +ddand862 and +NaN2 -1000 -> NaN Invalid_operation +ddand863 and NaN3 1000 -> NaN Invalid_operation +ddand864 and NaN4 Inf -> NaN Invalid_operation +ddand865 and NaN5 +NaN6 -> NaN Invalid_operation +ddand866 and -Inf NaN7 -> NaN Invalid_operation +ddand867 and -1000 NaN8 -> NaN Invalid_operation +ddand868 and 1000 NaN9 -> NaN Invalid_operation +ddand869 and Inf +NaN10 -> NaN Invalid_operation +ddand871 and sNaN11 -Inf -> NaN Invalid_operation +ddand872 and sNaN12 -1000 -> NaN Invalid_operation +ddand873 and sNaN13 1000 -> NaN Invalid_operation +ddand874 and sNaN14 NaN17 -> NaN Invalid_operation +ddand875 and sNaN15 sNaN18 -> NaN Invalid_operation +ddand876 and NaN16 sNaN19 -> NaN Invalid_operation +ddand877 and -Inf +sNaN20 -> NaN Invalid_operation +ddand878 and -1000 sNaN21 -> NaN Invalid_operation +ddand879 and 1000 sNaN22 -> NaN Invalid_operation +ddand880 and Inf sNaN23 -> NaN Invalid_operation +ddand881 and +NaN25 +sNaN24 -> NaN Invalid_operation +ddand882 and -NaN26 NaN28 -> NaN Invalid_operation +ddand883 and -sNaN27 sNaN29 -> NaN Invalid_operation +ddand884 and 1000 -NaN30 -> NaN Invalid_operation +ddand885 and 1000 -sNaN31 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddBase.decTest b/Lib/test/decimaltestdata/ddBase.decTest index fbd6ccd..40febf8 100644 --- a/Lib/test/decimaltestdata/ddBase.decTest +++ b/Lib/test/decimaltestdata/ddBase.decTest @@ -1,1104 +1,1104 @@ ------------------------------------------------------------------------- --- ddBase.decTest -- base decDouble <--> string conversions -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This file tests base conversions from string to a decimal number --- and back to a string (in Scientific form) - --- Note that unlike other operations the operand is subject to rounding --- to conform to emax and precision settings (that is, numbers will --- conform to rules and exponent will be in permitted range). The --- 'left hand side', therefore, may have numbers that cannot be --- represented in a decDouble. Some testcases go to the limit of the --- next-wider format, and hence these testcases may also be used to --- test narrowing and widening operations. - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -ddbas001 toSci 0 -> 0 -ddbas002 toSci 1 -> 1 -ddbas003 toSci 1.0 -> 1.0 -ddbas004 toSci 1.00 -> 1.00 -ddbas005 toSci 10 -> 10 -ddbas006 toSci 1000 -> 1000 -ddbas007 toSci 10.0 -> 10.0 -ddbas008 toSci 10.1 -> 10.1 -ddbas009 toSci 10.4 -> 10.4 -ddbas010 toSci 10.5 -> 10.5 -ddbas011 toSci 10.6 -> 10.6 -ddbas012 toSci 10.9 -> 10.9 -ddbas013 toSci 11.0 -> 11.0 -ddbas014 toSci 1.234 -> 1.234 -ddbas015 toSci 0.123 -> 0.123 -ddbas016 toSci 0.012 -> 0.012 -ddbas017 toSci -0 -> -0 -ddbas018 toSci -0.0 -> -0.0 -ddbas019 toSci -00.00 -> -0.00 - -ddbas021 toSci -1 -> -1 -ddbas022 toSci -1.0 -> -1.0 -ddbas023 toSci -0.1 -> -0.1 -ddbas024 toSci -9.1 -> -9.1 -ddbas025 toSci -9.11 -> -9.11 -ddbas026 toSci -9.119 -> -9.119 -ddbas027 toSci -9.999 -> -9.999 - -ddbas030 toSci '123456789.123456' -> '123456789.123456' -ddbas031 toSci '123456789.000000' -> '123456789.000000' -ddbas032 toSci '123456789123456' -> '123456789123456' -ddbas033 toSci '0.0000123456789' -> '0.0000123456789' -ddbas034 toSci '0.00000123456789' -> '0.00000123456789' -ddbas035 toSci '0.000000123456789' -> '1.23456789E-7' -ddbas036 toSci '0.0000000123456789' -> '1.23456789E-8' - -ddbas037 toSci '0.123456789012344' -> '0.123456789012344' -ddbas038 toSci '0.123456789012345' -> '0.123456789012345' - --- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax) -ddbsn001 toSci -9.999999999999999E+384 -> -9.999999999999999E+384 -ddbsn002 toSci -1E-383 -> -1E-383 -ddbsn003 toSci -1E-398 -> -1E-398 Subnormal -ddbsn004 toSci -0 -> -0 -ddbsn005 toSci +0 -> 0 -ddbsn006 toSci +1E-398 -> 1E-398 Subnormal -ddbsn007 toSci +1E-383 -> 1E-383 -ddbsn008 toSci +9.999999999999999E+384 -> 9.999999999999999E+384 - --- String [many more examples are implicitly tested elsewhere] --- strings without E cannot generate E in result -ddbas040 toSci "12" -> '12' -ddbas041 toSci "-76" -> '-76' -ddbas042 toSci "12.76" -> '12.76' -ddbas043 toSci "+12.76" -> '12.76' -ddbas044 toSci "012.76" -> '12.76' -ddbas045 toSci "+0.003" -> '0.003' -ddbas046 toSci "17." -> '17' -ddbas047 toSci ".5" -> '0.5' -ddbas048 toSci "044" -> '44' -ddbas049 toSci "0044" -> '44' -ddbas050 toSci "0.0005" -> '0.0005' -ddbas051 toSci "00.00005" -> '0.00005' -ddbas052 toSci "0.000005" -> '0.000005' -ddbas053 toSci "0.0000050" -> '0.0000050' -ddbas054 toSci "0.0000005" -> '5E-7' -ddbas055 toSci "0.00000005" -> '5E-8' -ddbas056 toSci "12345678.543210" -> '12345678.543210' -ddbas057 toSci "2345678.543210" -> '2345678.543210' -ddbas058 toSci "345678.543210" -> '345678.543210' -ddbas059 toSci "0345678.54321" -> '345678.54321' -ddbas060 toSci "345678.5432" -> '345678.5432' -ddbas061 toSci "+345678.5432" -> '345678.5432' -ddbas062 toSci "+0345678.5432" -> '345678.5432' -ddbas063 toSci "+00345678.5432" -> '345678.5432' -ddbas064 toSci "-345678.5432" -> '-345678.5432' -ddbas065 toSci "-0345678.5432" -> '-345678.5432' -ddbas066 toSci "-00345678.5432" -> '-345678.5432' --- examples -ddbas067 toSci "5E-6" -> '0.000005' -ddbas068 toSci "50E-7" -> '0.0000050' -ddbas069 toSci "5E-7" -> '5E-7' - --- [No exotics as no Unicode] - --- rounded with dots in all (including edge) places -ddbas071 toSci .1234567890123456123 -> 0.1234567890123456 Inexact Rounded -ddbas072 toSci 1.234567890123456123 -> 1.234567890123456 Inexact Rounded -ddbas073 toSci 12.34567890123456123 -> 12.34567890123456 Inexact Rounded -ddbas074 toSci 123.4567890123456123 -> 123.4567890123456 Inexact Rounded -ddbas075 toSci 1234.567890123456123 -> 1234.567890123456 Inexact Rounded -ddbas076 toSci 12345.67890123456123 -> 12345.67890123456 Inexact Rounded -ddbas077 toSci 123456.7890123456123 -> 123456.7890123456 Inexact Rounded -ddbas078 toSci 1234567.890123456123 -> 1234567.890123456 Inexact Rounded -ddbas079 toSci 12345678.90123456123 -> 12345678.90123456 Inexact Rounded -ddbas080 toSci 123456789.0123456123 -> 123456789.0123456 Inexact Rounded -ddbas081 toSci 1234567890.123456123 -> 1234567890.123456 Inexact Rounded -ddbas082 toSci 12345678901.23456123 -> 12345678901.23456 Inexact Rounded -ddbas083 toSci 123456789012.3456123 -> 123456789012.3456 Inexact Rounded -ddbas084 toSci 1234567890123.456123 -> 1234567890123.456 Inexact Rounded -ddbas085 toSci 12345678901234.56123 -> 12345678901234.56 Inexact Rounded -ddbas086 toSci 123456789012345.6123 -> 123456789012345.6 Inexact Rounded -ddbas087 toSci 1234567890123456.123 -> 1234567890123456 Inexact Rounded -ddbas088 toSci 12345678901234561.23 -> 1.234567890123456E+16 Inexact Rounded -ddbas089 toSci 123456789012345612.3 -> 1.234567890123456E+17 Inexact Rounded -ddbas090 toSci 1234567890123456123. -> 1.234567890123456E+18 Inexact Rounded - - --- Numbers with E -ddbas130 toSci "0.000E-1" -> '0.0000' -ddbas131 toSci "0.000E-2" -> '0.00000' -ddbas132 toSci "0.000E-3" -> '0.000000' -ddbas133 toSci "0.000E-4" -> '0E-7' -ddbas134 toSci "0.00E-2" -> '0.0000' -ddbas135 toSci "0.00E-3" -> '0.00000' -ddbas136 toSci "0.00E-4" -> '0.000000' -ddbas137 toSci "0.00E-5" -> '0E-7' -ddbas138 toSci "+0E+9" -> '0E+9' -ddbas139 toSci "-0E+9" -> '-0E+9' -ddbas140 toSci "1E+9" -> '1E+9' -ddbas141 toSci "1e+09" -> '1E+9' -ddbas142 toSci "1E+90" -> '1E+90' -ddbas143 toSci "+1E+009" -> '1E+9' -ddbas144 toSci "0E+9" -> '0E+9' -ddbas145 toSci "1E+9" -> '1E+9' -ddbas146 toSci "1E+09" -> '1E+9' -ddbas147 toSci "1e+90" -> '1E+90' -ddbas148 toSci "1E+009" -> '1E+9' -ddbas149 toSci "000E+9" -> '0E+9' -ddbas150 toSci "1E9" -> '1E+9' -ddbas151 toSci "1e09" -> '1E+9' -ddbas152 toSci "1E90" -> '1E+90' -ddbas153 toSci "1E009" -> '1E+9' -ddbas154 toSci "0E9" -> '0E+9' -ddbas155 toSci "0.000e+0" -> '0.000' -ddbas156 toSci "0.000E-1" -> '0.0000' -ddbas157 toSci "4E+9" -> '4E+9' -ddbas158 toSci "44E+9" -> '4.4E+10' -ddbas159 toSci "0.73e-7" -> '7.3E-8' -ddbas160 toSci "00E+9" -> '0E+9' -ddbas161 toSci "00E-9" -> '0E-9' -ddbas162 toSci "10E+9" -> '1.0E+10' -ddbas163 toSci "10E+09" -> '1.0E+10' -ddbas164 toSci "10e+90" -> '1.0E+91' -ddbas165 toSci "10E+009" -> '1.0E+10' -ddbas166 toSci "100e+9" -> '1.00E+11' -ddbas167 toSci "100e+09" -> '1.00E+11' -ddbas168 toSci "100E+90" -> '1.00E+92' -ddbas169 toSci "100e+009" -> '1.00E+11' - -ddbas170 toSci "1.265" -> '1.265' -ddbas171 toSci "1.265E-20" -> '1.265E-20' -ddbas172 toSci "1.265E-8" -> '1.265E-8' -ddbas173 toSci "1.265E-4" -> '0.0001265' -ddbas174 toSci "1.265E-3" -> '0.001265' -ddbas175 toSci "1.265E-2" -> '0.01265' -ddbas176 toSci "1.265E-1" -> '0.1265' -ddbas177 toSci "1.265E-0" -> '1.265' -ddbas178 toSci "1.265E+1" -> '12.65' -ddbas179 toSci "1.265E+2" -> '126.5' -ddbas180 toSci "1.265E+3" -> '1265' -ddbas181 toSci "1.265E+4" -> '1.265E+4' -ddbas182 toSci "1.265E+8" -> '1.265E+8' -ddbas183 toSci "1.265E+20" -> '1.265E+20' - -ddbas190 toSci "12.65" -> '12.65' -ddbas191 toSci "12.65E-20" -> '1.265E-19' -ddbas192 toSci "12.65E-8" -> '1.265E-7' -ddbas193 toSci "12.65E-4" -> '0.001265' -ddbas194 toSci "12.65E-3" -> '0.01265' -ddbas195 toSci "12.65E-2" -> '0.1265' -ddbas196 toSci "12.65E-1" -> '1.265' -ddbas197 toSci "12.65E-0" -> '12.65' -ddbas198 toSci "12.65E+1" -> '126.5' -ddbas199 toSci "12.65E+2" -> '1265' -ddbas200 toSci "12.65E+3" -> '1.265E+4' -ddbas201 toSci "12.65E+4" -> '1.265E+5' -ddbas202 toSci "12.65E+8" -> '1.265E+9' -ddbas203 toSci "12.65E+20" -> '1.265E+21' - -ddbas210 toSci "126.5" -> '126.5' -ddbas211 toSci "126.5E-20" -> '1.265E-18' -ddbas212 toSci "126.5E-8" -> '0.000001265' -ddbas213 toSci "126.5E-4" -> '0.01265' -ddbas214 toSci "126.5E-3" -> '0.1265' -ddbas215 toSci "126.5E-2" -> '1.265' -ddbas216 toSci "126.5E-1" -> '12.65' -ddbas217 toSci "126.5E-0" -> '126.5' -ddbas218 toSci "126.5E+1" -> '1265' -ddbas219 toSci "126.5E+2" -> '1.265E+4' -ddbas220 toSci "126.5E+3" -> '1.265E+5' -ddbas221 toSci "126.5E+4" -> '1.265E+6' -ddbas222 toSci "126.5E+8" -> '1.265E+10' -ddbas223 toSci "126.5E+20" -> '1.265E+22' - -ddbas230 toSci "1265" -> '1265' -ddbas231 toSci "1265E-20" -> '1.265E-17' -ddbas232 toSci "1265E-8" -> '0.00001265' -ddbas233 toSci "1265E-4" -> '0.1265' -ddbas234 toSci "1265E-3" -> '1.265' -ddbas235 toSci "1265E-2" -> '12.65' -ddbas236 toSci "1265E-1" -> '126.5' -ddbas237 toSci "1265E-0" -> '1265' -ddbas238 toSci "1265E+1" -> '1.265E+4' -ddbas239 toSci "1265E+2" -> '1.265E+5' -ddbas240 toSci "1265E+3" -> '1.265E+6' -ddbas241 toSci "1265E+4" -> '1.265E+7' -ddbas242 toSci "1265E+8" -> '1.265E+11' -ddbas243 toSci "1265E+20" -> '1.265E+23' -ddbas244 toSci "1265E-9" -> '0.000001265' -ddbas245 toSci "1265E-10" -> '1.265E-7' -ddbas246 toSci "1265E-11" -> '1.265E-8' -ddbas247 toSci "1265E-12" -> '1.265E-9' - -ddbas250 toSci "0.1265" -> '0.1265' -ddbas251 toSci "0.1265E-20" -> '1.265E-21' -ddbas252 toSci "0.1265E-8" -> '1.265E-9' -ddbas253 toSci "0.1265E-4" -> '0.00001265' -ddbas254 toSci "0.1265E-3" -> '0.0001265' -ddbas255 toSci "0.1265E-2" -> '0.001265' -ddbas256 toSci "0.1265E-1" -> '0.01265' -ddbas257 toSci "0.1265E-0" -> '0.1265' -ddbas258 toSci "0.1265E+1" -> '1.265' -ddbas259 toSci "0.1265E+2" -> '12.65' -ddbas260 toSci "0.1265E+3" -> '126.5' -ddbas261 toSci "0.1265E+4" -> '1265' -ddbas262 toSci "0.1265E+8" -> '1.265E+7' -ddbas263 toSci "0.1265E+20" -> '1.265E+19' - --- some more negative zeros [systematic tests below] -ddbas290 toSci "-0.000E-1" -> '-0.0000' -ddbas291 toSci "-0.000E-2" -> '-0.00000' -ddbas292 toSci "-0.000E-3" -> '-0.000000' -ddbas293 toSci "-0.000E-4" -> '-0E-7' -ddbas294 toSci "-0.00E-2" -> '-0.0000' -ddbas295 toSci "-0.00E-3" -> '-0.00000' -ddbas296 toSci "-0.0E-2" -> '-0.000' -ddbas297 toSci "-0.0E-3" -> '-0.0000' -ddbas298 toSci "-0E-2" -> '-0.00' -ddbas299 toSci "-0E-3" -> '-0.000' - --- Engineering notation tests -ddbas301 toSci 10e12 -> 1.0E+13 -ddbas302 toEng 10e12 -> 10E+12 -ddbas303 toSci 10e11 -> 1.0E+12 -ddbas304 toEng 10e11 -> 1.0E+12 -ddbas305 toSci 10e10 -> 1.0E+11 -ddbas306 toEng 10e10 -> 100E+9 -ddbas307 toSci 10e9 -> 1.0E+10 -ddbas308 toEng 10e9 -> 10E+9 -ddbas309 toSci 10e8 -> 1.0E+9 -ddbas310 toEng 10e8 -> 1.0E+9 -ddbas311 toSci 10e7 -> 1.0E+8 -ddbas312 toEng 10e7 -> 100E+6 -ddbas313 toSci 10e6 -> 1.0E+7 -ddbas314 toEng 10e6 -> 10E+6 -ddbas315 toSci 10e5 -> 1.0E+6 -ddbas316 toEng 10e5 -> 1.0E+6 -ddbas317 toSci 10e4 -> 1.0E+5 -ddbas318 toEng 10e4 -> 100E+3 -ddbas319 toSci 10e3 -> 1.0E+4 -ddbas320 toEng 10e3 -> 10E+3 -ddbas321 toSci 10e2 -> 1.0E+3 -ddbas322 toEng 10e2 -> 1.0E+3 -ddbas323 toSci 10e1 -> 1.0E+2 -ddbas324 toEng 10e1 -> 100 -ddbas325 toSci 10e0 -> 10 -ddbas326 toEng 10e0 -> 10 -ddbas327 toSci 10e-1 -> 1.0 -ddbas328 toEng 10e-1 -> 1.0 -ddbas329 toSci 10e-2 -> 0.10 -ddbas330 toEng 10e-2 -> 0.10 -ddbas331 toSci 10e-3 -> 0.010 -ddbas332 toEng 10e-3 -> 0.010 -ddbas333 toSci 10e-4 -> 0.0010 -ddbas334 toEng 10e-4 -> 0.0010 -ddbas335 toSci 10e-5 -> 0.00010 -ddbas336 toEng 10e-5 -> 0.00010 -ddbas337 toSci 10e-6 -> 0.000010 -ddbas338 toEng 10e-6 -> 0.000010 -ddbas339 toSci 10e-7 -> 0.0000010 -ddbas340 toEng 10e-7 -> 0.0000010 -ddbas341 toSci 10e-8 -> 1.0E-7 -ddbas342 toEng 10e-8 -> 100E-9 -ddbas343 toSci 10e-9 -> 1.0E-8 -ddbas344 toEng 10e-9 -> 10E-9 -ddbas345 toSci 10e-10 -> 1.0E-9 -ddbas346 toEng 10e-10 -> 1.0E-9 -ddbas347 toSci 10e-11 -> 1.0E-10 -ddbas348 toEng 10e-11 -> 100E-12 -ddbas349 toSci 10e-12 -> 1.0E-11 -ddbas350 toEng 10e-12 -> 10E-12 -ddbas351 toSci 10e-13 -> 1.0E-12 -ddbas352 toEng 10e-13 -> 1.0E-12 - -ddbas361 toSci 7E12 -> 7E+12 -ddbas362 toEng 7E12 -> 7E+12 -ddbas363 toSci 7E11 -> 7E+11 -ddbas364 toEng 7E11 -> 700E+9 -ddbas365 toSci 7E10 -> 7E+10 -ddbas366 toEng 7E10 -> 70E+9 -ddbas367 toSci 7E9 -> 7E+9 -ddbas368 toEng 7E9 -> 7E+9 -ddbas369 toSci 7E8 -> 7E+8 -ddbas370 toEng 7E8 -> 700E+6 -ddbas371 toSci 7E7 -> 7E+7 -ddbas372 toEng 7E7 -> 70E+6 -ddbas373 toSci 7E6 -> 7E+6 -ddbas374 toEng 7E6 -> 7E+6 -ddbas375 toSci 7E5 -> 7E+5 -ddbas376 toEng 7E5 -> 700E+3 -ddbas377 toSci 7E4 -> 7E+4 -ddbas378 toEng 7E4 -> 70E+3 -ddbas379 toSci 7E3 -> 7E+3 -ddbas380 toEng 7E3 -> 7E+3 -ddbas381 toSci 7E2 -> 7E+2 -ddbas382 toEng 7E2 -> 700 -ddbas383 toSci 7E1 -> 7E+1 -ddbas384 toEng 7E1 -> 70 -ddbas385 toSci 7E0 -> 7 -ddbas386 toEng 7E0 -> 7 -ddbas387 toSci 7E-1 -> 0.7 -ddbas388 toEng 7E-1 -> 0.7 -ddbas389 toSci 7E-2 -> 0.07 -ddbas390 toEng 7E-2 -> 0.07 -ddbas391 toSci 7E-3 -> 0.007 -ddbas392 toEng 7E-3 -> 0.007 -ddbas393 toSci 7E-4 -> 0.0007 -ddbas394 toEng 7E-4 -> 0.0007 -ddbas395 toSci 7E-5 -> 0.00007 -ddbas396 toEng 7E-5 -> 0.00007 -ddbas397 toSci 7E-6 -> 0.000007 -ddbas398 toEng 7E-6 -> 0.000007 -ddbas399 toSci 7E-7 -> 7E-7 -ddbas400 toEng 7E-7 -> 700E-9 -ddbas401 toSci 7E-8 -> 7E-8 -ddbas402 toEng 7E-8 -> 70E-9 -ddbas403 toSci 7E-9 -> 7E-9 -ddbas404 toEng 7E-9 -> 7E-9 -ddbas405 toSci 7E-10 -> 7E-10 -ddbas406 toEng 7E-10 -> 700E-12 -ddbas407 toSci 7E-11 -> 7E-11 -ddbas408 toEng 7E-11 -> 70E-12 -ddbas409 toSci 7E-12 -> 7E-12 -ddbas410 toEng 7E-12 -> 7E-12 -ddbas411 toSci 7E-13 -> 7E-13 -ddbas412 toEng 7E-13 -> 700E-15 - --- Exacts remain exact up to precision .. -rounding: half_up -ddbas420 toSci 100 -> 100 -ddbas421 toEng 100 -> 100 -ddbas422 toSci 1000 -> 1000 -ddbas423 toEng 1000 -> 1000 -ddbas424 toSci 999.9 -> 999.9 -ddbas425 toEng 999.9 -> 999.9 -ddbas426 toSci 1000.0 -> 1000.0 -ddbas427 toEng 1000.0 -> 1000.0 -ddbas428 toSci 1000.1 -> 1000.1 -ddbas429 toEng 1000.1 -> 1000.1 -ddbas430 toSci 10000 -> 10000 -ddbas431 toEng 10000 -> 10000 -ddbas432 toSci 100000 -> 100000 -ddbas433 toEng 100000 -> 100000 -ddbas434 toSci 1000000 -> 1000000 -ddbas435 toEng 1000000 -> 1000000 -ddbas436 toSci 10000000 -> 10000000 -ddbas437 toEng 10000000 -> 10000000 -ddbas438 toSci 100000000 -> 100000000 -ddbas439 toEng 1000000000000000 -> 1000000000000000 -ddbas440 toSci 10000000000000000 -> 1.000000000000000E+16 Rounded -ddbas441 toEng 10000000000000000 -> 10.00000000000000E+15 Rounded -ddbas442 toSci 10000000000000001 -> 1.000000000000000E+16 Rounded Inexact -ddbas443 toEng 10000000000000001 -> 10.00000000000000E+15 Rounded Inexact -ddbas444 toSci 10000000000000003 -> 1.000000000000000E+16 Rounded Inexact -ddbas445 toEng 10000000000000003 -> 10.00000000000000E+15 Rounded Inexact -ddbas446 toSci 10000000000000005 -> 1.000000000000001E+16 Rounded Inexact -ddbas447 toEng 10000000000000005 -> 10.00000000000001E+15 Rounded Inexact -ddbas448 toSci 100000000000000050 -> 1.000000000000001E+17 Rounded Inexact -ddbas449 toEng 100000000000000050 -> 100.0000000000001E+15 Rounded Inexact -ddbas450 toSci 10000000000000009 -> 1.000000000000001E+16 Rounded Inexact -ddbas451 toEng 10000000000000009 -> 10.00000000000001E+15 Rounded Inexact -ddbas452 toSci 100000000000000000 -> 1.000000000000000E+17 Rounded -ddbas453 toEng 100000000000000000 -> 100.0000000000000E+15 Rounded -ddbas454 toSci 100000000000000003 -> 1.000000000000000E+17 Rounded Inexact -ddbas455 toEng 100000000000000003 -> 100.0000000000000E+15 Rounded Inexact -ddbas456 toSci 100000000000000005 -> 1.000000000000000E+17 Rounded Inexact -ddbas457 toEng 100000000000000005 -> 100.0000000000000E+15 Rounded Inexact -ddbas458 toSci 100000000000000009 -> 1.000000000000000E+17 Rounded Inexact -ddbas459 toEng 100000000000000009 -> 100.0000000000000E+15 Rounded Inexact -ddbas460 toSci 1000000000000000000 -> 1.000000000000000E+18 Rounded -ddbas461 toEng 1000000000000000000 -> 1.000000000000000E+18 Rounded -ddbas462 toSci 1000000000000000300 -> 1.000000000000000E+18 Rounded Inexact -ddbas463 toEng 1000000000000000300 -> 1.000000000000000E+18 Rounded Inexact -ddbas464 toSci 1000000000000000500 -> 1.000000000000001E+18 Rounded Inexact -ddbas465 toEng 1000000000000000500 -> 1.000000000000001E+18 Rounded Inexact -ddbas466 toSci 1000000000000000900 -> 1.000000000000001E+18 Rounded Inexact -ddbas467 toEng 1000000000000000900 -> 1.000000000000001E+18 Rounded Inexact -ddbas468 toSci 10000000000000000000 -> 1.000000000000000E+19 Rounded -ddbas469 toEng 10000000000000000000 -> 10.00000000000000E+18 Rounded -ddbas470 toSci 10000000000000003000 -> 1.000000000000000E+19 Rounded Inexact -ddbas471 toEng 10000000000000003000 -> 10.00000000000000E+18 Rounded Inexact -ddbas472 toSci 10000000000000005000 -> 1.000000000000001E+19 Rounded Inexact -ddbas473 toEng 10000000000000005000 -> 10.00000000000001E+18 Rounded Inexact -ddbas474 toSci 10000000000000009000 -> 1.000000000000001E+19 Rounded Inexact -ddbas475 toEng 10000000000000009000 -> 10.00000000000001E+18 Rounded Inexact - --- check rounding modes heeded -rounding: ceiling -ddbsr401 toSci 1.1111111111123450 -> 1.111111111112345 Rounded -ddbsr402 toSci 1.11111111111234549 -> 1.111111111112346 Rounded Inexact -ddbsr403 toSci 1.11111111111234550 -> 1.111111111112346 Rounded Inexact -ddbsr404 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact -rounding: up -ddbsr405 toSci 1.1111111111123450 -> 1.111111111112345 Rounded -ddbsr406 toSci 1.11111111111234549 -> 1.111111111112346 Rounded Inexact -ddbsr407 toSci 1.11111111111234550 -> 1.111111111112346 Rounded Inexact -ddbsr408 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact -rounding: floor -ddbsr410 toSci 1.1111111111123450 -> 1.111111111112345 Rounded -ddbsr411 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact -ddbsr412 toSci 1.11111111111234550 -> 1.111111111112345 Rounded Inexact -ddbsr413 toSci 1.11111111111234551 -> 1.111111111112345 Rounded Inexact -rounding: half_down -ddbsr415 toSci 1.1111111111123450 -> 1.111111111112345 Rounded -ddbsr416 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact -ddbsr417 toSci 1.11111111111234550 -> 1.111111111112345 Rounded Inexact -ddbsr418 toSci 1.11111111111234650 -> 1.111111111112346 Rounded Inexact -ddbsr419 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact -rounding: half_even -ddbsr421 toSci 1.1111111111123450 -> 1.111111111112345 Rounded -ddbsr422 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact -ddbsr423 toSci 1.11111111111234550 -> 1.111111111112346 Rounded Inexact -ddbsr424 toSci 1.11111111111234650 -> 1.111111111112346 Rounded Inexact -ddbsr425 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact -rounding: down -ddbsr426 toSci 1.1111111111123450 -> 1.111111111112345 Rounded -ddbsr427 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact -ddbsr428 toSci 1.11111111111234550 -> 1.111111111112345 Rounded Inexact -ddbsr429 toSci 1.11111111111234551 -> 1.111111111112345 Rounded Inexact -rounding: half_up -ddbsr431 toSci 1.1111111111123450 -> 1.111111111112345 Rounded -ddbsr432 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact -ddbsr433 toSci 1.11111111111234550 -> 1.111111111112346 Rounded Inexact -ddbsr434 toSci 1.11111111111234650 -> 1.111111111112347 Rounded Inexact -ddbsr435 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact --- negatives -rounding: ceiling -ddbsr501 toSci -1.1111111111123450 -> -1.111111111112345 Rounded -ddbsr502 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact -ddbsr503 toSci -1.11111111111234550 -> -1.111111111112345 Rounded Inexact -ddbsr504 toSci -1.11111111111234551 -> -1.111111111112345 Rounded Inexact -rounding: up -ddbsr505 toSci -1.1111111111123450 -> -1.111111111112345 Rounded -ddbsr506 toSci -1.11111111111234549 -> -1.111111111112346 Rounded Inexact -ddbsr507 toSci -1.11111111111234550 -> -1.111111111112346 Rounded Inexact -ddbsr508 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact -rounding: floor -ddbsr510 toSci -1.1111111111123450 -> -1.111111111112345 Rounded -ddbsr511 toSci -1.11111111111234549 -> -1.111111111112346 Rounded Inexact -ddbsr512 toSci -1.11111111111234550 -> -1.111111111112346 Rounded Inexact -ddbsr513 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact -rounding: half_down -ddbsr515 toSci -1.1111111111123450 -> -1.111111111112345 Rounded -ddbsr516 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact -ddbsr517 toSci -1.11111111111234550 -> -1.111111111112345 Rounded Inexact -ddbsr518 toSci -1.11111111111234650 -> -1.111111111112346 Rounded Inexact -ddbsr519 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact -rounding: half_even -ddbsr521 toSci -1.1111111111123450 -> -1.111111111112345 Rounded -ddbsr522 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact -ddbsr523 toSci -1.11111111111234550 -> -1.111111111112346 Rounded Inexact -ddbsr524 toSci -1.11111111111234650 -> -1.111111111112346 Rounded Inexact -ddbsr525 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact -rounding: down -ddbsr526 toSci -1.1111111111123450 -> -1.111111111112345 Rounded -ddbsr527 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact -ddbsr528 toSci -1.11111111111234550 -> -1.111111111112345 Rounded Inexact -ddbsr529 toSci -1.11111111111234551 -> -1.111111111112345 Rounded Inexact -rounding: half_up -ddbsr531 toSci -1.1111111111123450 -> -1.111111111112345 Rounded -ddbsr532 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact -ddbsr533 toSci -1.11111111111234550 -> -1.111111111112346 Rounded Inexact -ddbsr534 toSci -1.11111111111234650 -> -1.111111111112347 Rounded Inexact -ddbsr535 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact - -rounding: half_even - --- The 'baddies' tests from DiagBigDecimal, plus some new ones -ddbas500 toSci '1..2' -> NaN Conversion_syntax -ddbas501 toSci '.' -> NaN Conversion_syntax -ddbas502 toSci '..' -> NaN Conversion_syntax -ddbas503 toSci '++1' -> NaN Conversion_syntax -ddbas504 toSci '--1' -> NaN Conversion_syntax -ddbas505 toSci '-+1' -> NaN Conversion_syntax -ddbas506 toSci '+-1' -> NaN Conversion_syntax -ddbas507 toSci '12e' -> NaN Conversion_syntax -ddbas508 toSci '12e++' -> NaN Conversion_syntax -ddbas509 toSci '12f4' -> NaN Conversion_syntax -ddbas510 toSci ' +1' -> NaN Conversion_syntax -ddbas511 toSci '+ 1' -> NaN Conversion_syntax -ddbas512 toSci '12 ' -> NaN Conversion_syntax -ddbas513 toSci ' + 1' -> NaN Conversion_syntax -ddbas514 toSci ' - 1 ' -> NaN Conversion_syntax -ddbas515 toSci 'x' -> NaN Conversion_syntax -ddbas516 toSci '-1-' -> NaN Conversion_syntax -ddbas517 toSci '12-' -> NaN Conversion_syntax -ddbas518 toSci '3+' -> NaN Conversion_syntax -ddbas519 toSci '' -> NaN Conversion_syntax -ddbas520 toSci '1e-' -> NaN Conversion_syntax -ddbas521 toSci '7e99999a' -> NaN Conversion_syntax -ddbas522 toSci '7e123567890x' -> NaN Conversion_syntax -ddbas523 toSci '7e12356789012x' -> NaN Conversion_syntax -ddbas524 toSci '' -> NaN Conversion_syntax -ddbas525 toSci 'e100' -> NaN Conversion_syntax -ddbas526 toSci '\u0e5a' -> NaN Conversion_syntax -ddbas527 toSci '\u0b65' -> NaN Conversion_syntax -ddbas528 toSci '123,65' -> NaN Conversion_syntax -ddbas529 toSci '1.34.5' -> NaN Conversion_syntax -ddbas530 toSci '.123.5' -> NaN Conversion_syntax -ddbas531 toSci '01.35.' -> NaN Conversion_syntax -ddbas532 toSci '01.35-' -> NaN Conversion_syntax -ddbas533 toSci '0000..' -> NaN Conversion_syntax -ddbas534 toSci '.0000.' -> NaN Conversion_syntax -ddbas535 toSci '00..00' -> NaN Conversion_syntax -ddbas536 toSci '111e*123' -> NaN Conversion_syntax -ddbas537 toSci '111e123-' -> NaN Conversion_syntax -ddbas538 toSci '111e+12+' -> NaN Conversion_syntax -ddbas539 toSci '111e1-3-' -> NaN Conversion_syntax -ddbas540 toSci '111e1*23' -> NaN Conversion_syntax -ddbas541 toSci '111e1e+3' -> NaN Conversion_syntax -ddbas542 toSci '1e1.0' -> NaN Conversion_syntax -ddbas543 toSci '1e123e' -> NaN Conversion_syntax -ddbas544 toSci 'ten' -> NaN Conversion_syntax -ddbas545 toSci 'ONE' -> NaN Conversion_syntax -ddbas546 toSci '1e.1' -> NaN Conversion_syntax -ddbas547 toSci '1e1.' -> NaN Conversion_syntax -ddbas548 toSci '1ee' -> NaN Conversion_syntax -ddbas549 toSci 'e+1' -> NaN Conversion_syntax -ddbas550 toSci '1.23.4' -> NaN Conversion_syntax -ddbas551 toSci '1.2.1' -> NaN Conversion_syntax -ddbas552 toSci '1E+1.2' -> NaN Conversion_syntax -ddbas553 toSci '1E+1.2.3' -> NaN Conversion_syntax -ddbas554 toSci '1E++1' -> NaN Conversion_syntax -ddbas555 toSci '1E--1' -> NaN Conversion_syntax -ddbas556 toSci '1E+-1' -> NaN Conversion_syntax -ddbas557 toSci '1E-+1' -> NaN Conversion_syntax -ddbas558 toSci '1E''1' -> NaN Conversion_syntax -ddbas559 toSci "1E""1" -> NaN Conversion_syntax -ddbas560 toSci "1E""""" -> NaN Conversion_syntax --- Near-specials -ddbas561 toSci "qNaN" -> NaN Conversion_syntax -ddbas562 toSci "NaNq" -> NaN Conversion_syntax -ddbas563 toSci "NaNs" -> NaN Conversion_syntax -ddbas564 toSci "Infi" -> NaN Conversion_syntax -ddbas565 toSci "Infin" -> NaN Conversion_syntax -ddbas566 toSci "Infini" -> NaN Conversion_syntax -ddbas567 toSci "Infinit" -> NaN Conversion_syntax -ddbas568 toSci "-Infinit" -> NaN Conversion_syntax -ddbas569 toSci "0Inf" -> NaN Conversion_syntax -ddbas570 toSci "9Inf" -> NaN Conversion_syntax -ddbas571 toSci "-0Inf" -> NaN Conversion_syntax -ddbas572 toSci "-9Inf" -> NaN Conversion_syntax -ddbas573 toSci "-sNa" -> NaN Conversion_syntax -ddbas574 toSci "xNaN" -> NaN Conversion_syntax -ddbas575 toSci "0sNaN" -> NaN Conversion_syntax - --- some baddies with dots and Es and dots and specials -ddbas576 toSci 'e+1' -> NaN Conversion_syntax -ddbas577 toSci '.e+1' -> NaN Conversion_syntax -ddbas578 toSci '+.e+1' -> NaN Conversion_syntax -ddbas579 toSci '-.e+' -> NaN Conversion_syntax -ddbas580 toSci '-.e' -> NaN Conversion_syntax -ddbas581 toSci 'E+1' -> NaN Conversion_syntax -ddbas582 toSci '.E+1' -> NaN Conversion_syntax -ddbas583 toSci '+.E+1' -> NaN Conversion_syntax -ddbas584 toSci '-.E+' -> NaN Conversion_syntax -ddbas585 toSci '-.E' -> NaN Conversion_syntax - -ddbas586 toSci '.NaN' -> NaN Conversion_syntax -ddbas587 toSci '-.NaN' -> NaN Conversion_syntax -ddbas588 toSci '+.sNaN' -> NaN Conversion_syntax -ddbas589 toSci '+.Inf' -> NaN Conversion_syntax -ddbas590 toSci '.Infinity' -> NaN Conversion_syntax - --- Zeros -ddbas601 toSci 0.000000000 -> 0E-9 -ddbas602 toSci 0.00000000 -> 0E-8 -ddbas603 toSci 0.0000000 -> 0E-7 -ddbas604 toSci 0.000000 -> 0.000000 -ddbas605 toSci 0.00000 -> 0.00000 -ddbas606 toSci 0.0000 -> 0.0000 -ddbas607 toSci 0.000 -> 0.000 -ddbas608 toSci 0.00 -> 0.00 -ddbas609 toSci 0.0 -> 0.0 -ddbas610 toSci .0 -> 0.0 -ddbas611 toSci 0. -> 0 -ddbas612 toSci -.0 -> -0.0 -ddbas613 toSci -0. -> -0 -ddbas614 toSci -0.0 -> -0.0 -ddbas615 toSci -0.00 -> -0.00 -ddbas616 toSci -0.000 -> -0.000 -ddbas617 toSci -0.0000 -> -0.0000 -ddbas618 toSci -0.00000 -> -0.00000 -ddbas619 toSci -0.000000 -> -0.000000 -ddbas620 toSci -0.0000000 -> -0E-7 -ddbas621 toSci -0.00000000 -> -0E-8 -ddbas622 toSci -0.000000000 -> -0E-9 - -ddbas630 toSci 0.00E+0 -> 0.00 -ddbas631 toSci 0.00E+1 -> 0.0 -ddbas632 toSci 0.00E+2 -> 0 -ddbas633 toSci 0.00E+3 -> 0E+1 -ddbas634 toSci 0.00E+4 -> 0E+2 -ddbas635 toSci 0.00E+5 -> 0E+3 -ddbas636 toSci 0.00E+6 -> 0E+4 -ddbas637 toSci 0.00E+7 -> 0E+5 -ddbas638 toSci 0.00E+8 -> 0E+6 -ddbas639 toSci 0.00E+9 -> 0E+7 - -ddbas640 toSci 0.0E+0 -> 0.0 -ddbas641 toSci 0.0E+1 -> 0 -ddbas642 toSci 0.0E+2 -> 0E+1 -ddbas643 toSci 0.0E+3 -> 0E+2 -ddbas644 toSci 0.0E+4 -> 0E+3 -ddbas645 toSci 0.0E+5 -> 0E+4 -ddbas646 toSci 0.0E+6 -> 0E+5 -ddbas647 toSci 0.0E+7 -> 0E+6 -ddbas648 toSci 0.0E+8 -> 0E+7 -ddbas649 toSci 0.0E+9 -> 0E+8 - -ddbas650 toSci 0E+0 -> 0 -ddbas651 toSci 0E+1 -> 0E+1 -ddbas652 toSci 0E+2 -> 0E+2 -ddbas653 toSci 0E+3 -> 0E+3 -ddbas654 toSci 0E+4 -> 0E+4 -ddbas655 toSci 0E+5 -> 0E+5 -ddbas656 toSci 0E+6 -> 0E+6 -ddbas657 toSci 0E+7 -> 0E+7 -ddbas658 toSci 0E+8 -> 0E+8 -ddbas659 toSci 0E+9 -> 0E+9 - -ddbas660 toSci 0.0E-0 -> 0.0 -ddbas661 toSci 0.0E-1 -> 0.00 -ddbas662 toSci 0.0E-2 -> 0.000 -ddbas663 toSci 0.0E-3 -> 0.0000 -ddbas664 toSci 0.0E-4 -> 0.00000 -ddbas665 toSci 0.0E-5 -> 0.000000 -ddbas666 toSci 0.0E-6 -> 0E-7 -ddbas667 toSci 0.0E-7 -> 0E-8 -ddbas668 toSci 0.0E-8 -> 0E-9 -ddbas669 toSci 0.0E-9 -> 0E-10 - -ddbas670 toSci 0.00E-0 -> 0.00 -ddbas671 toSci 0.00E-1 -> 0.000 -ddbas672 toSci 0.00E-2 -> 0.0000 -ddbas673 toSci 0.00E-3 -> 0.00000 -ddbas674 toSci 0.00E-4 -> 0.000000 -ddbas675 toSci 0.00E-5 -> 0E-7 -ddbas676 toSci 0.00E-6 -> 0E-8 -ddbas677 toSci 0.00E-7 -> 0E-9 -ddbas678 toSci 0.00E-8 -> 0E-10 -ddbas679 toSci 0.00E-9 -> 0E-11 - -ddbas680 toSci 000000. -> 0 -ddbas681 toSci 00000. -> 0 -ddbas682 toSci 0000. -> 0 -ddbas683 toSci 000. -> 0 -ddbas684 toSci 00. -> 0 -ddbas685 toSci 0. -> 0 -ddbas686 toSci +00000. -> 0 -ddbas687 toSci -00000. -> -0 -ddbas688 toSci +0. -> 0 -ddbas689 toSci -0. -> -0 - --- Specials -ddbas700 toSci "NaN" -> NaN -ddbas701 toSci "nan" -> NaN -ddbas702 toSci "nAn" -> NaN -ddbas703 toSci "NAN" -> NaN -ddbas704 toSci "+NaN" -> NaN -ddbas705 toSci "+nan" -> NaN -ddbas706 toSci "+nAn" -> NaN -ddbas707 toSci "+NAN" -> NaN -ddbas708 toSci "-NaN" -> -NaN -ddbas709 toSci "-nan" -> -NaN -ddbas710 toSci "-nAn" -> -NaN -ddbas711 toSci "-NAN" -> -NaN -ddbas712 toSci 'NaN0' -> NaN -ddbas713 toSci 'NaN1' -> NaN1 -ddbas714 toSci 'NaN12' -> NaN12 -ddbas715 toSci 'NaN123' -> NaN123 -ddbas716 toSci 'NaN1234' -> NaN1234 -ddbas717 toSci 'NaN01' -> NaN1 -ddbas718 toSci 'NaN012' -> NaN12 -ddbas719 toSci 'NaN0123' -> NaN123 -ddbas720 toSci 'NaN01234' -> NaN1234 -ddbas721 toSci 'NaN001' -> NaN1 -ddbas722 toSci 'NaN0012' -> NaN12 -ddbas723 toSci 'NaN00123' -> NaN123 -ddbas724 toSci 'NaN001234' -> NaN1234 -ddbas725 toSci 'NaN1234567890123456' -> NaN Conversion_syntax -ddbas726 toSci 'NaN123e+1' -> NaN Conversion_syntax -ddbas727 toSci 'NaN12.45' -> NaN Conversion_syntax -ddbas728 toSci 'NaN-12' -> NaN Conversion_syntax -ddbas729 toSci 'NaN+12' -> NaN Conversion_syntax - -ddbas730 toSci "sNaN" -> sNaN -ddbas731 toSci "snan" -> sNaN -ddbas732 toSci "SnAn" -> sNaN -ddbas733 toSci "SNAN" -> sNaN -ddbas734 toSci "+sNaN" -> sNaN -ddbas735 toSci "+snan" -> sNaN -ddbas736 toSci "+SnAn" -> sNaN -ddbas737 toSci "+SNAN" -> sNaN -ddbas738 toSci "-sNaN" -> -sNaN -ddbas739 toSci "-snan" -> -sNaN -ddbas740 toSci "-SnAn" -> -sNaN -ddbas741 toSci "-SNAN" -> -sNaN -ddbas742 toSci 'sNaN0000' -> sNaN -ddbas743 toSci 'sNaN7' -> sNaN7 -ddbas744 toSci 'sNaN007234' -> sNaN7234 -ddbas745 toSci 'sNaN7234561234567890' -> NaN Conversion_syntax -ddbas746 toSci 'sNaN72.45' -> NaN Conversion_syntax -ddbas747 toSci 'sNaN-72' -> NaN Conversion_syntax - -ddbas748 toSci "Inf" -> Infinity -ddbas749 toSci "inf" -> Infinity -ddbas750 toSci "iNf" -> Infinity -ddbas751 toSci "INF" -> Infinity -ddbas752 toSci "+Inf" -> Infinity -ddbas753 toSci "+inf" -> Infinity -ddbas754 toSci "+iNf" -> Infinity -ddbas755 toSci "+INF" -> Infinity -ddbas756 toSci "-Inf" -> -Infinity -ddbas757 toSci "-inf" -> -Infinity -ddbas758 toSci "-iNf" -> -Infinity -ddbas759 toSci "-INF" -> -Infinity - -ddbas760 toSci "Infinity" -> Infinity -ddbas761 toSci "infinity" -> Infinity -ddbas762 toSci "iNfInItY" -> Infinity -ddbas763 toSci "INFINITY" -> Infinity -ddbas764 toSci "+Infinity" -> Infinity -ddbas765 toSci "+infinity" -> Infinity -ddbas766 toSci "+iNfInItY" -> Infinity -ddbas767 toSci "+INFINITY" -> Infinity -ddbas768 toSci "-Infinity" -> -Infinity -ddbas769 toSci "-infinity" -> -Infinity -ddbas770 toSci "-iNfInItY" -> -Infinity -ddbas771 toSci "-INFINITY" -> -Infinity - --- Specials and zeros for toEng -ddbast772 toEng "NaN" -> NaN -ddbast773 toEng "-Infinity" -> -Infinity -ddbast774 toEng "-sNaN" -> -sNaN -ddbast775 toEng "-NaN" -> -NaN -ddbast776 toEng "+Infinity" -> Infinity -ddbast778 toEng "+sNaN" -> sNaN -ddbast779 toEng "+NaN" -> NaN -ddbast780 toEng "INFINITY" -> Infinity -ddbast781 toEng "SNAN" -> sNaN -ddbast782 toEng "NAN" -> NaN -ddbast783 toEng "infinity" -> Infinity -ddbast784 toEng "snan" -> sNaN -ddbast785 toEng "nan" -> NaN -ddbast786 toEng "InFINITY" -> Infinity -ddbast787 toEng "SnAN" -> sNaN -ddbast788 toEng "nAN" -> NaN -ddbast789 toEng "iNfinity" -> Infinity -ddbast790 toEng "sNan" -> sNaN -ddbast791 toEng "Nan" -> NaN -ddbast792 toEng "Infinity" -> Infinity -ddbast793 toEng "sNaN" -> sNaN - --- Zero toEng, etc. -ddbast800 toEng 0e+1 -> "0.00E+3" -- doc example - -ddbast801 toEng 0.000000000 -> 0E-9 -ddbast802 toEng 0.00000000 -> 0.00E-6 -ddbast803 toEng 0.0000000 -> 0.0E-6 -ddbast804 toEng 0.000000 -> 0.000000 -ddbast805 toEng 0.00000 -> 0.00000 -ddbast806 toEng 0.0000 -> 0.0000 -ddbast807 toEng 0.000 -> 0.000 -ddbast808 toEng 0.00 -> 0.00 -ddbast809 toEng 0.0 -> 0.0 -ddbast810 toEng .0 -> 0.0 -ddbast811 toEng 0. -> 0 -ddbast812 toEng -.0 -> -0.0 -ddbast813 toEng -0. -> -0 -ddbast814 toEng -0.0 -> -0.0 -ddbast815 toEng -0.00 -> -0.00 -ddbast816 toEng -0.000 -> -0.000 -ddbast817 toEng -0.0000 -> -0.0000 -ddbast818 toEng -0.00000 -> -0.00000 -ddbast819 toEng -0.000000 -> -0.000000 -ddbast820 toEng -0.0000000 -> -0.0E-6 -ddbast821 toEng -0.00000000 -> -0.00E-6 -ddbast822 toEng -0.000000000 -> -0E-9 - -ddbast830 toEng 0.00E+0 -> 0.00 -ddbast831 toEng 0.00E+1 -> 0.0 -ddbast832 toEng 0.00E+2 -> 0 -ddbast833 toEng 0.00E+3 -> 0.00E+3 -ddbast834 toEng 0.00E+4 -> 0.0E+3 -ddbast835 toEng 0.00E+5 -> 0E+3 -ddbast836 toEng 0.00E+6 -> 0.00E+6 -ddbast837 toEng 0.00E+7 -> 0.0E+6 -ddbast838 toEng 0.00E+8 -> 0E+6 -ddbast839 toEng 0.00E+9 -> 0.00E+9 - -ddbast840 toEng 0.0E+0 -> 0.0 -ddbast841 toEng 0.0E+1 -> 0 -ddbast842 toEng 0.0E+2 -> 0.00E+3 -ddbast843 toEng 0.0E+3 -> 0.0E+3 -ddbast844 toEng 0.0E+4 -> 0E+3 -ddbast845 toEng 0.0E+5 -> 0.00E+6 -ddbast846 toEng 0.0E+6 -> 0.0E+6 -ddbast847 toEng 0.0E+7 -> 0E+6 -ddbast848 toEng 0.0E+8 -> 0.00E+9 -ddbast849 toEng 0.0E+9 -> 0.0E+9 - -ddbast850 toEng 0E+0 -> 0 -ddbast851 toEng 0E+1 -> 0.00E+3 -ddbast852 toEng 0E+2 -> 0.0E+3 -ddbast853 toEng 0E+3 -> 0E+3 -ddbast854 toEng 0E+4 -> 0.00E+6 -ddbast855 toEng 0E+5 -> 0.0E+6 -ddbast856 toEng 0E+6 -> 0E+6 -ddbast857 toEng 0E+7 -> 0.00E+9 -ddbast858 toEng 0E+8 -> 0.0E+9 -ddbast859 toEng 0E+9 -> 0E+9 - -ddbast860 toEng 0.0E-0 -> 0.0 -ddbast861 toEng 0.0E-1 -> 0.00 -ddbast862 toEng 0.0E-2 -> 0.000 -ddbast863 toEng 0.0E-3 -> 0.0000 -ddbast864 toEng 0.0E-4 -> 0.00000 -ddbast865 toEng 0.0E-5 -> 0.000000 -ddbast866 toEng 0.0E-6 -> 0.0E-6 -ddbast867 toEng 0.0E-7 -> 0.00E-6 -ddbast868 toEng 0.0E-8 -> 0E-9 -ddbast869 toEng 0.0E-9 -> 0.0E-9 - -ddbast870 toEng 0.00E-0 -> 0.00 -ddbast871 toEng 0.00E-1 -> 0.000 -ddbast872 toEng 0.00E-2 -> 0.0000 -ddbast873 toEng 0.00E-3 -> 0.00000 -ddbast874 toEng 0.00E-4 -> 0.000000 -ddbast875 toEng 0.00E-5 -> 0.0E-6 -ddbast876 toEng 0.00E-6 -> 0.00E-6 -ddbast877 toEng 0.00E-7 -> 0E-9 -ddbast878 toEng 0.00E-8 -> 0.0E-9 -ddbast879 toEng 0.00E-9 -> 0.00E-9 - --- long input strings -ddbas801 tosci '01234567890123456' -> 1234567890123456 -ddbas802 tosci '001234567890123456' -> 1234567890123456 -ddbas803 tosci '0001234567890123456' -> 1234567890123456 -ddbas804 tosci '00001234567890123456' -> 1234567890123456 -ddbas805 tosci '000001234567890123456' -> 1234567890123456 -ddbas806 tosci '0000001234567890123456' -> 1234567890123456 -ddbas807 tosci '00000001234567890123456' -> 1234567890123456 -ddbas808 tosci '000000001234567890123456' -> 1234567890123456 -ddbas809 tosci '0000000001234567890123456' -> 1234567890123456 -ddbas810 tosci '00000000001234567890123456' -> 1234567890123456 - -ddbas811 tosci '0.1234567890123456' -> 0.1234567890123456 -ddbas812 tosci '0.01234567890123456' -> 0.01234567890123456 -ddbas813 tosci '0.001234567890123456' -> 0.001234567890123456 -ddbas814 tosci '0.0001234567890123456' -> 0.0001234567890123456 -ddbas815 tosci '0.00001234567890123456' -> 0.00001234567890123456 -ddbas816 tosci '0.000001234567890123456' -> 0.000001234567890123456 -ddbas817 tosci '0.0000001234567890123456' -> 1.234567890123456E-7 -ddbas818 tosci '0.00000001234567890123456' -> 1.234567890123456E-8 -ddbas819 tosci '0.000000001234567890123456' -> 1.234567890123456E-9 -ddbas820 tosci '0.0000000001234567890123456' -> 1.234567890123456E-10 - -ddbas821 tosci '12345678901234567890' -> 1.234567890123457E+19 Inexact Rounded -ddbas822 tosci '123456789012345678901' -> 1.234567890123457E+20 Inexact Rounded -ddbas823 tosci '1234567890123456789012' -> 1.234567890123457E+21 Inexact Rounded -ddbas824 tosci '12345678901234567890123' -> 1.234567890123457E+22 Inexact Rounded -ddbas825 tosci '123456789012345678901234' -> 1.234567890123457E+23 Inexact Rounded -ddbas826 tosci '1234567890123456789012345' -> 1.234567890123457E+24 Inexact Rounded -ddbas827 tosci '12345678901234567890123456' -> 1.234567890123457E+25 Inexact Rounded -ddbas828 tosci '123456789012345678901234567' -> 1.234567890123457E+26 Inexact Rounded -ddbas829 tosci '1234567890123456789012345678' -> 1.234567890123457E+27 Inexact Rounded - --- subnormals and overflows -ddbas906 toSci '99e999999999' -> Infinity Overflow Inexact Rounded -ddbas907 toSci '999e999999999' -> Infinity Overflow Inexact Rounded -ddbas908 toSci '0.9e-999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas909 toSci '0.09e-999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas910 toSci '0.1e1000000000' -> Infinity Overflow Inexact Rounded -ddbas911 toSci '10e-1000000000' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas912 toSci '0.9e9999999999' -> Infinity Overflow Inexact Rounded -ddbas913 toSci '99e-9999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas914 toSci '111e9999999999' -> Infinity Overflow Inexact Rounded -ddbas915 toSci '1111e-9999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas916 toSci '1111e-99999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas917 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded --- negatives the same -ddbas918 toSci '-99e999999999' -> -Infinity Overflow Inexact Rounded -ddbas919 toSci '-999e999999999' -> -Infinity Overflow Inexact Rounded -ddbas920 toSci '-0.9e-999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas921 toSci '-0.09e-999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas922 toSci '-0.1e1000000000' -> -Infinity Overflow Inexact Rounded -ddbas923 toSci '-10e-1000000000' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas924 toSci '-0.9e9999999999' -> -Infinity Overflow Inexact Rounded -ddbas925 toSci '-99e-9999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas926 toSci '-111e9999999999' -> -Infinity Overflow Inexact Rounded -ddbas927 toSci '-1111e-9999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas928 toSci '-1111e-99999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas929 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded - --- overflow results at different rounding modes -rounding: ceiling -ddbas930 toSci '7e10000' -> Infinity Overflow Inexact Rounded -ddbas931 toSci '-7e10000' -> -9.999999999999999E+384 Overflow Inexact Rounded -rounding: up -ddbas932 toSci '7e10000' -> Infinity Overflow Inexact Rounded -ddbas933 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: down -ddbas934 toSci '7e10000' -> 9.999999999999999E+384 Overflow Inexact Rounded -ddbas935 toSci '-7e10000' -> -9.999999999999999E+384 Overflow Inexact Rounded -rounding: floor -ddbas936 toSci '7e10000' -> 9.999999999999999E+384 Overflow Inexact Rounded -ddbas937 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded - -rounding: half_up -ddbas938 toSci '7e10000' -> Infinity Overflow Inexact Rounded -ddbas939 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: half_even -ddbas940 toSci '7e10000' -> Infinity Overflow Inexact Rounded -ddbas941 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: half_down -ddbas942 toSci '7e10000' -> Infinity Overflow Inexact Rounded -ddbas943 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded - -rounding: half_even - --- Now check 854/754r some subnormals and underflow to 0 -ddbem400 toSci 1.0000E-383 -> 1.0000E-383 -ddbem401 toSci 0.1E-394 -> 1E-395 Subnormal -ddbem402 toSci 0.1000E-394 -> 1.000E-395 Subnormal -ddbem403 toSci 0.0100E-394 -> 1.00E-396 Subnormal -ddbem404 toSci 0.0010E-394 -> 1.0E-397 Subnormal -ddbem405 toSci 0.0001E-394 -> 1E-398 Subnormal -ddbem406 toSci 0.00010E-394 -> 1E-398 Subnormal Rounded -ddbem407 toSci 0.00013E-394 -> 1E-398 Underflow Subnormal Inexact Rounded -ddbem408 toSci 0.00015E-394 -> 2E-398 Underflow Subnormal Inexact Rounded -ddbem409 toSci 0.00017E-394 -> 2E-398 Underflow Subnormal Inexact Rounded -ddbem410 toSci 0.00023E-394 -> 2E-398 Underflow Subnormal Inexact Rounded -ddbem411 toSci 0.00025E-394 -> 2E-398 Underflow Subnormal Inexact Rounded -ddbem412 toSci 0.00027E-394 -> 3E-398 Underflow Subnormal Inexact Rounded -ddbem413 toSci 0.000149E-394 -> 1E-398 Underflow Subnormal Inexact Rounded -ddbem414 toSci 0.000150E-394 -> 2E-398 Underflow Subnormal Inexact Rounded -ddbem415 toSci 0.000151E-394 -> 2E-398 Underflow Subnormal Inexact Rounded -ddbem416 toSci 0.000249E-394 -> 2E-398 Underflow Subnormal Inexact Rounded -ddbem417 toSci 0.000250E-394 -> 2E-398 Underflow Subnormal Inexact Rounded -ddbem418 toSci 0.000251E-394 -> 3E-398 Underflow Subnormal Inexact Rounded -ddbem419 toSci 0.00009E-394 -> 1E-398 Underflow Subnormal Inexact Rounded -ddbem420 toSci 0.00005E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbem421 toSci 0.00003E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbem422 toSci 0.000009E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbem423 toSci 0.000005E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbem424 toSci 0.000003E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped - -ddbem425 toSci 0.001049E-394 -> 1.0E-397 Underflow Subnormal Inexact Rounded -ddbem426 toSci 0.001050E-394 -> 1.0E-397 Underflow Subnormal Inexact Rounded -ddbem427 toSci 0.001051E-394 -> 1.1E-397 Underflow Subnormal Inexact Rounded -ddbem428 toSci 0.001149E-394 -> 1.1E-397 Underflow Subnormal Inexact Rounded -ddbem429 toSci 0.001150E-394 -> 1.2E-397 Underflow Subnormal Inexact Rounded -ddbem430 toSci 0.001151E-394 -> 1.2E-397 Underflow Subnormal Inexact Rounded - -ddbem432 toSci 0.010049E-394 -> 1.00E-396 Underflow Subnormal Inexact Rounded -ddbem433 toSci 0.010050E-394 -> 1.00E-396 Underflow Subnormal Inexact Rounded -ddbem434 toSci 0.010051E-394 -> 1.01E-396 Underflow Subnormal Inexact Rounded -ddbem435 toSci 0.010149E-394 -> 1.01E-396 Underflow Subnormal Inexact Rounded -ddbem436 toSci 0.010150E-394 -> 1.02E-396 Underflow Subnormal Inexact Rounded -ddbem437 toSci 0.010151E-394 -> 1.02E-396 Underflow Subnormal Inexact Rounded - -ddbem440 toSci 0.10103E-394 -> 1.010E-395 Underflow Subnormal Inexact Rounded -ddbem441 toSci 0.10105E-394 -> 1.010E-395 Underflow Subnormal Inexact Rounded -ddbem442 toSci 0.10107E-394 -> 1.011E-395 Underflow Subnormal Inexact Rounded -ddbem443 toSci 0.10113E-394 -> 1.011E-395 Underflow Subnormal Inexact Rounded -ddbem444 toSci 0.10115E-394 -> 1.012E-395 Underflow Subnormal Inexact Rounded -ddbem445 toSci 0.10117E-394 -> 1.012E-395 Underflow Subnormal Inexact Rounded - -ddbem450 toSci 1.10730E-395 -> 1.107E-395 Underflow Subnormal Inexact Rounded -ddbem451 toSci 1.10750E-395 -> 1.108E-395 Underflow Subnormal Inexact Rounded -ddbem452 toSci 1.10770E-395 -> 1.108E-395 Underflow Subnormal Inexact Rounded -ddbem453 toSci 1.10830E-395 -> 1.108E-395 Underflow Subnormal Inexact Rounded -ddbem454 toSci 1.10850E-395 -> 1.108E-395 Underflow Subnormal Inexact Rounded -ddbem455 toSci 1.10870E-395 -> 1.109E-395 Underflow Subnormal Inexact Rounded - --- make sure sign OK -ddbem456 toSci -0.10103E-394 -> -1.010E-395 Underflow Subnormal Inexact Rounded -ddbem457 toSci -0.10105E-394 -> -1.010E-395 Underflow Subnormal Inexact Rounded -ddbem458 toSci -0.10107E-394 -> -1.011E-395 Underflow Subnormal Inexact Rounded -ddbem459 toSci -0.10113E-394 -> -1.011E-395 Underflow Subnormal Inexact Rounded -ddbem460 toSci -0.10115E-394 -> -1.012E-395 Underflow Subnormal Inexact Rounded -ddbem461 toSci -0.10117E-394 -> -1.012E-395 Underflow Subnormal Inexact Rounded - --- '999s' cases -ddbem464 toSci 999999E-395 -> 9.99999E-390 Subnormal -ddbem465 toSci 99999.0E-394 -> 9.99990E-390 Subnormal -ddbem466 toSci 99999.E-394 -> 9.9999E-390 Subnormal -ddbem467 toSci 9999.9E-394 -> 9.9999E-391 Subnormal -ddbem468 toSci 999.99E-394 -> 9.9999E-392 Subnormal -ddbem469 toSci 99.999E-394 -> 9.9999E-393 Subnormal -ddbem470 toSci 9.9999E-394 -> 9.9999E-394 Subnormal -ddbem471 toSci 0.99999E-394 -> 1.0000E-394 Underflow Subnormal Inexact Rounded -ddbem472 toSci 0.099999E-394 -> 1.000E-395 Underflow Subnormal Inexact Rounded -ddbem473 toSci 0.0099999E-394 -> 1.00E-396 Underflow Subnormal Inexact Rounded -ddbem474 toSci 0.00099999E-394 -> 1.0E-397 Underflow Subnormal Inexact Rounded -ddbem475 toSci 0.000099999E-394 -> 1E-398 Underflow Subnormal Inexact Rounded -ddbem476 toSci 0.0000099999E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbem477 toSci 0.00000099999E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbem478 toSci 0.000000099999E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped - --- Exponents with insignificant leading zeros -ddbas1001 toSci 1e999999999 -> Infinity Overflow Inexact Rounded -ddbas1002 toSci 1e0999999999 -> Infinity Overflow Inexact Rounded -ddbas1003 toSci 1e00999999999 -> Infinity Overflow Inexact Rounded -ddbas1004 toSci 1e000999999999 -> Infinity Overflow Inexact Rounded -ddbas1005 toSci 1e000000000000999999999 -> Infinity Overflow Inexact Rounded -ddbas1006 toSci 1e000000000001000000007 -> Infinity Overflow Inexact Rounded -ddbas1007 toSci 1e-999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas1008 toSci 1e-0999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas1009 toSci 1e-00999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas1010 toSci 1e-000999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas1011 toSci 1e-000000000000999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddbas1012 toSci 1e-000000000001000000007 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped - --- check for double-rounded subnormals -ddbas1041 toSci 1.1111111111152444E-384 -> 1.11111111111524E-384 Inexact Rounded Subnormal Underflow -ddbas1042 toSci 1.1111111111152445E-384 -> 1.11111111111524E-384 Inexact Rounded Subnormal Underflow -ddbas1043 toSci 1.1111111111152446E-384 -> 1.11111111111524E-384 Inexact Rounded Subnormal Underflow - --- clamped large normals -ddbas1070 toSci 1E+369 -> 1E+369 -ddbas1071 toSci 1E+370 -> 1.0E+370 Clamped -ddbas1072 toSci 1E+378 -> 1.000000000E+378 Clamped -ddbas1073 toSci 1E+384 -> 1.000000000000000E+384 Clamped -ddbas1074 toSci 1E+385 -> Infinity Overflow Inexact Rounded - - --- clamped zeros [see also clamp.decTest] -ddbas1075 toSci 0e+10000 -> 0E+369 Clamped -ddbas1076 toSci 0e-10000 -> 0E-398 Clamped -ddbas1077 toSci -0e+10000 -> -0E+369 Clamped -ddbas1078 toSci -0e-10000 -> -0E-398 Clamped - --- extreme values from next-wider -ddbas1101 toSci -9.99999999999999999999999999999999E+6144 -> -Infinity Overflow Inexact Rounded -ddbas1102 toSci -1E-6143 -> -0E-398 Inexact Rounded Subnormal Underflow Clamped -ddbas1103 toSci -1E-6176 -> -0E-398 Inexact Rounded Subnormal Underflow Clamped -ddbas1104 toSci -0 -> -0 -ddbas1105 toSci +0 -> 0 -ddbas1106 toSci +1E-6176 -> 0E-398 Inexact Rounded Subnormal Underflow Clamped -ddbas1107 toSci +1E-6173 -> 0E-398 Inexact Rounded Subnormal Underflow Clamped -ddbas1108 toSci +9.99999999999999999999999999999999E+6144 -> Infinity Overflow Inexact Rounded - +------------------------------------------------------------------------ +-- ddBase.decTest -- base decDouble <--> string conversions -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This file tests base conversions from string to a decimal number +-- and back to a string (in Scientific form) + +-- Note that unlike other operations the operand is subject to rounding +-- to conform to emax and precision settings (that is, numbers will +-- conform to rules and exponent will be in permitted range). The +-- 'left hand side', therefore, may have numbers that cannot be +-- represented in a decDouble. Some testcases go to the limit of the +-- next-wider format, and hence these testcases may also be used to +-- test narrowing and widening operations. + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +ddbas001 toSci 0 -> 0 +ddbas002 toSci 1 -> 1 +ddbas003 toSci 1.0 -> 1.0 +ddbas004 toSci 1.00 -> 1.00 +ddbas005 toSci 10 -> 10 +ddbas006 toSci 1000 -> 1000 +ddbas007 toSci 10.0 -> 10.0 +ddbas008 toSci 10.1 -> 10.1 +ddbas009 toSci 10.4 -> 10.4 +ddbas010 toSci 10.5 -> 10.5 +ddbas011 toSci 10.6 -> 10.6 +ddbas012 toSci 10.9 -> 10.9 +ddbas013 toSci 11.0 -> 11.0 +ddbas014 toSci 1.234 -> 1.234 +ddbas015 toSci 0.123 -> 0.123 +ddbas016 toSci 0.012 -> 0.012 +ddbas017 toSci -0 -> -0 +ddbas018 toSci -0.0 -> -0.0 +ddbas019 toSci -00.00 -> -0.00 + +ddbas021 toSci -1 -> -1 +ddbas022 toSci -1.0 -> -1.0 +ddbas023 toSci -0.1 -> -0.1 +ddbas024 toSci -9.1 -> -9.1 +ddbas025 toSci -9.11 -> -9.11 +ddbas026 toSci -9.119 -> -9.119 +ddbas027 toSci -9.999 -> -9.999 + +ddbas030 toSci '123456789.123456' -> '123456789.123456' +ddbas031 toSci '123456789.000000' -> '123456789.000000' +ddbas032 toSci '123456789123456' -> '123456789123456' +ddbas033 toSci '0.0000123456789' -> '0.0000123456789' +ddbas034 toSci '0.00000123456789' -> '0.00000123456789' +ddbas035 toSci '0.000000123456789' -> '1.23456789E-7' +ddbas036 toSci '0.0000000123456789' -> '1.23456789E-8' + +ddbas037 toSci '0.123456789012344' -> '0.123456789012344' +ddbas038 toSci '0.123456789012345' -> '0.123456789012345' + +-- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax) +ddbsn001 toSci -9.999999999999999E+384 -> -9.999999999999999E+384 +ddbsn002 toSci -1E-383 -> -1E-383 +ddbsn003 toSci -1E-398 -> -1E-398 Subnormal +ddbsn004 toSci -0 -> -0 +ddbsn005 toSci +0 -> 0 +ddbsn006 toSci +1E-398 -> 1E-398 Subnormal +ddbsn007 toSci +1E-383 -> 1E-383 +ddbsn008 toSci +9.999999999999999E+384 -> 9.999999999999999E+384 + +-- String [many more examples are implicitly tested elsewhere] +-- strings without E cannot generate E in result +ddbas040 toSci "12" -> '12' +ddbas041 toSci "-76" -> '-76' +ddbas042 toSci "12.76" -> '12.76' +ddbas043 toSci "+12.76" -> '12.76' +ddbas044 toSci "012.76" -> '12.76' +ddbas045 toSci "+0.003" -> '0.003' +ddbas046 toSci "17." -> '17' +ddbas047 toSci ".5" -> '0.5' +ddbas048 toSci "044" -> '44' +ddbas049 toSci "0044" -> '44' +ddbas050 toSci "0.0005" -> '0.0005' +ddbas051 toSci "00.00005" -> '0.00005' +ddbas052 toSci "0.000005" -> '0.000005' +ddbas053 toSci "0.0000050" -> '0.0000050' +ddbas054 toSci "0.0000005" -> '5E-7' +ddbas055 toSci "0.00000005" -> '5E-8' +ddbas056 toSci "12345678.543210" -> '12345678.543210' +ddbas057 toSci "2345678.543210" -> '2345678.543210' +ddbas058 toSci "345678.543210" -> '345678.543210' +ddbas059 toSci "0345678.54321" -> '345678.54321' +ddbas060 toSci "345678.5432" -> '345678.5432' +ddbas061 toSci "+345678.5432" -> '345678.5432' +ddbas062 toSci "+0345678.5432" -> '345678.5432' +ddbas063 toSci "+00345678.5432" -> '345678.5432' +ddbas064 toSci "-345678.5432" -> '-345678.5432' +ddbas065 toSci "-0345678.5432" -> '-345678.5432' +ddbas066 toSci "-00345678.5432" -> '-345678.5432' +-- examples +ddbas067 toSci "5E-6" -> '0.000005' +ddbas068 toSci "50E-7" -> '0.0000050' +ddbas069 toSci "5E-7" -> '5E-7' + +-- [No exotics as no Unicode] + +-- rounded with dots in all (including edge) places +ddbas071 toSci .1234567890123456123 -> 0.1234567890123456 Inexact Rounded +ddbas072 toSci 1.234567890123456123 -> 1.234567890123456 Inexact Rounded +ddbas073 toSci 12.34567890123456123 -> 12.34567890123456 Inexact Rounded +ddbas074 toSci 123.4567890123456123 -> 123.4567890123456 Inexact Rounded +ddbas075 toSci 1234.567890123456123 -> 1234.567890123456 Inexact Rounded +ddbas076 toSci 12345.67890123456123 -> 12345.67890123456 Inexact Rounded +ddbas077 toSci 123456.7890123456123 -> 123456.7890123456 Inexact Rounded +ddbas078 toSci 1234567.890123456123 -> 1234567.890123456 Inexact Rounded +ddbas079 toSci 12345678.90123456123 -> 12345678.90123456 Inexact Rounded +ddbas080 toSci 123456789.0123456123 -> 123456789.0123456 Inexact Rounded +ddbas081 toSci 1234567890.123456123 -> 1234567890.123456 Inexact Rounded +ddbas082 toSci 12345678901.23456123 -> 12345678901.23456 Inexact Rounded +ddbas083 toSci 123456789012.3456123 -> 123456789012.3456 Inexact Rounded +ddbas084 toSci 1234567890123.456123 -> 1234567890123.456 Inexact Rounded +ddbas085 toSci 12345678901234.56123 -> 12345678901234.56 Inexact Rounded +ddbas086 toSci 123456789012345.6123 -> 123456789012345.6 Inexact Rounded +ddbas087 toSci 1234567890123456.123 -> 1234567890123456 Inexact Rounded +ddbas088 toSci 12345678901234561.23 -> 1.234567890123456E+16 Inexact Rounded +ddbas089 toSci 123456789012345612.3 -> 1.234567890123456E+17 Inexact Rounded +ddbas090 toSci 1234567890123456123. -> 1.234567890123456E+18 Inexact Rounded + + +-- Numbers with E +ddbas130 toSci "0.000E-1" -> '0.0000' +ddbas131 toSci "0.000E-2" -> '0.00000' +ddbas132 toSci "0.000E-3" -> '0.000000' +ddbas133 toSci "0.000E-4" -> '0E-7' +ddbas134 toSci "0.00E-2" -> '0.0000' +ddbas135 toSci "0.00E-3" -> '0.00000' +ddbas136 toSci "0.00E-4" -> '0.000000' +ddbas137 toSci "0.00E-5" -> '0E-7' +ddbas138 toSci "+0E+9" -> '0E+9' +ddbas139 toSci "-0E+9" -> '-0E+9' +ddbas140 toSci "1E+9" -> '1E+9' +ddbas141 toSci "1e+09" -> '1E+9' +ddbas142 toSci "1E+90" -> '1E+90' +ddbas143 toSci "+1E+009" -> '1E+9' +ddbas144 toSci "0E+9" -> '0E+9' +ddbas145 toSci "1E+9" -> '1E+9' +ddbas146 toSci "1E+09" -> '1E+9' +ddbas147 toSci "1e+90" -> '1E+90' +ddbas148 toSci "1E+009" -> '1E+9' +ddbas149 toSci "000E+9" -> '0E+9' +ddbas150 toSci "1E9" -> '1E+9' +ddbas151 toSci "1e09" -> '1E+9' +ddbas152 toSci "1E90" -> '1E+90' +ddbas153 toSci "1E009" -> '1E+9' +ddbas154 toSci "0E9" -> '0E+9' +ddbas155 toSci "0.000e+0" -> '0.000' +ddbas156 toSci "0.000E-1" -> '0.0000' +ddbas157 toSci "4E+9" -> '4E+9' +ddbas158 toSci "44E+9" -> '4.4E+10' +ddbas159 toSci "0.73e-7" -> '7.3E-8' +ddbas160 toSci "00E+9" -> '0E+9' +ddbas161 toSci "00E-9" -> '0E-9' +ddbas162 toSci "10E+9" -> '1.0E+10' +ddbas163 toSci "10E+09" -> '1.0E+10' +ddbas164 toSci "10e+90" -> '1.0E+91' +ddbas165 toSci "10E+009" -> '1.0E+10' +ddbas166 toSci "100e+9" -> '1.00E+11' +ddbas167 toSci "100e+09" -> '1.00E+11' +ddbas168 toSci "100E+90" -> '1.00E+92' +ddbas169 toSci "100e+009" -> '1.00E+11' + +ddbas170 toSci "1.265" -> '1.265' +ddbas171 toSci "1.265E-20" -> '1.265E-20' +ddbas172 toSci "1.265E-8" -> '1.265E-8' +ddbas173 toSci "1.265E-4" -> '0.0001265' +ddbas174 toSci "1.265E-3" -> '0.001265' +ddbas175 toSci "1.265E-2" -> '0.01265' +ddbas176 toSci "1.265E-1" -> '0.1265' +ddbas177 toSci "1.265E-0" -> '1.265' +ddbas178 toSci "1.265E+1" -> '12.65' +ddbas179 toSci "1.265E+2" -> '126.5' +ddbas180 toSci "1.265E+3" -> '1265' +ddbas181 toSci "1.265E+4" -> '1.265E+4' +ddbas182 toSci "1.265E+8" -> '1.265E+8' +ddbas183 toSci "1.265E+20" -> '1.265E+20' + +ddbas190 toSci "12.65" -> '12.65' +ddbas191 toSci "12.65E-20" -> '1.265E-19' +ddbas192 toSci "12.65E-8" -> '1.265E-7' +ddbas193 toSci "12.65E-4" -> '0.001265' +ddbas194 toSci "12.65E-3" -> '0.01265' +ddbas195 toSci "12.65E-2" -> '0.1265' +ddbas196 toSci "12.65E-1" -> '1.265' +ddbas197 toSci "12.65E-0" -> '12.65' +ddbas198 toSci "12.65E+1" -> '126.5' +ddbas199 toSci "12.65E+2" -> '1265' +ddbas200 toSci "12.65E+3" -> '1.265E+4' +ddbas201 toSci "12.65E+4" -> '1.265E+5' +ddbas202 toSci "12.65E+8" -> '1.265E+9' +ddbas203 toSci "12.65E+20" -> '1.265E+21' + +ddbas210 toSci "126.5" -> '126.5' +ddbas211 toSci "126.5E-20" -> '1.265E-18' +ddbas212 toSci "126.5E-8" -> '0.000001265' +ddbas213 toSci "126.5E-4" -> '0.01265' +ddbas214 toSci "126.5E-3" -> '0.1265' +ddbas215 toSci "126.5E-2" -> '1.265' +ddbas216 toSci "126.5E-1" -> '12.65' +ddbas217 toSci "126.5E-0" -> '126.5' +ddbas218 toSci "126.5E+1" -> '1265' +ddbas219 toSci "126.5E+2" -> '1.265E+4' +ddbas220 toSci "126.5E+3" -> '1.265E+5' +ddbas221 toSci "126.5E+4" -> '1.265E+6' +ddbas222 toSci "126.5E+8" -> '1.265E+10' +ddbas223 toSci "126.5E+20" -> '1.265E+22' + +ddbas230 toSci "1265" -> '1265' +ddbas231 toSci "1265E-20" -> '1.265E-17' +ddbas232 toSci "1265E-8" -> '0.00001265' +ddbas233 toSci "1265E-4" -> '0.1265' +ddbas234 toSci "1265E-3" -> '1.265' +ddbas235 toSci "1265E-2" -> '12.65' +ddbas236 toSci "1265E-1" -> '126.5' +ddbas237 toSci "1265E-0" -> '1265' +ddbas238 toSci "1265E+1" -> '1.265E+4' +ddbas239 toSci "1265E+2" -> '1.265E+5' +ddbas240 toSci "1265E+3" -> '1.265E+6' +ddbas241 toSci "1265E+4" -> '1.265E+7' +ddbas242 toSci "1265E+8" -> '1.265E+11' +ddbas243 toSci "1265E+20" -> '1.265E+23' +ddbas244 toSci "1265E-9" -> '0.000001265' +ddbas245 toSci "1265E-10" -> '1.265E-7' +ddbas246 toSci "1265E-11" -> '1.265E-8' +ddbas247 toSci "1265E-12" -> '1.265E-9' + +ddbas250 toSci "0.1265" -> '0.1265' +ddbas251 toSci "0.1265E-20" -> '1.265E-21' +ddbas252 toSci "0.1265E-8" -> '1.265E-9' +ddbas253 toSci "0.1265E-4" -> '0.00001265' +ddbas254 toSci "0.1265E-3" -> '0.0001265' +ddbas255 toSci "0.1265E-2" -> '0.001265' +ddbas256 toSci "0.1265E-1" -> '0.01265' +ddbas257 toSci "0.1265E-0" -> '0.1265' +ddbas258 toSci "0.1265E+1" -> '1.265' +ddbas259 toSci "0.1265E+2" -> '12.65' +ddbas260 toSci "0.1265E+3" -> '126.5' +ddbas261 toSci "0.1265E+4" -> '1265' +ddbas262 toSci "0.1265E+8" -> '1.265E+7' +ddbas263 toSci "0.1265E+20" -> '1.265E+19' + +-- some more negative zeros [systematic tests below] +ddbas290 toSci "-0.000E-1" -> '-0.0000' +ddbas291 toSci "-0.000E-2" -> '-0.00000' +ddbas292 toSci "-0.000E-3" -> '-0.000000' +ddbas293 toSci "-0.000E-4" -> '-0E-7' +ddbas294 toSci "-0.00E-2" -> '-0.0000' +ddbas295 toSci "-0.00E-3" -> '-0.00000' +ddbas296 toSci "-0.0E-2" -> '-0.000' +ddbas297 toSci "-0.0E-3" -> '-0.0000' +ddbas298 toSci "-0E-2" -> '-0.00' +ddbas299 toSci "-0E-3" -> '-0.000' + +-- Engineering notation tests +ddbas301 toSci 10e12 -> 1.0E+13 +ddbas302 toEng 10e12 -> 10E+12 +ddbas303 toSci 10e11 -> 1.0E+12 +ddbas304 toEng 10e11 -> 1.0E+12 +ddbas305 toSci 10e10 -> 1.0E+11 +ddbas306 toEng 10e10 -> 100E+9 +ddbas307 toSci 10e9 -> 1.0E+10 +ddbas308 toEng 10e9 -> 10E+9 +ddbas309 toSci 10e8 -> 1.0E+9 +ddbas310 toEng 10e8 -> 1.0E+9 +ddbas311 toSci 10e7 -> 1.0E+8 +ddbas312 toEng 10e7 -> 100E+6 +ddbas313 toSci 10e6 -> 1.0E+7 +ddbas314 toEng 10e6 -> 10E+6 +ddbas315 toSci 10e5 -> 1.0E+6 +ddbas316 toEng 10e5 -> 1.0E+6 +ddbas317 toSci 10e4 -> 1.0E+5 +ddbas318 toEng 10e4 -> 100E+3 +ddbas319 toSci 10e3 -> 1.0E+4 +ddbas320 toEng 10e3 -> 10E+3 +ddbas321 toSci 10e2 -> 1.0E+3 +ddbas322 toEng 10e2 -> 1.0E+3 +ddbas323 toSci 10e1 -> 1.0E+2 +ddbas324 toEng 10e1 -> 100 +ddbas325 toSci 10e0 -> 10 +ddbas326 toEng 10e0 -> 10 +ddbas327 toSci 10e-1 -> 1.0 +ddbas328 toEng 10e-1 -> 1.0 +ddbas329 toSci 10e-2 -> 0.10 +ddbas330 toEng 10e-2 -> 0.10 +ddbas331 toSci 10e-3 -> 0.010 +ddbas332 toEng 10e-3 -> 0.010 +ddbas333 toSci 10e-4 -> 0.0010 +ddbas334 toEng 10e-4 -> 0.0010 +ddbas335 toSci 10e-5 -> 0.00010 +ddbas336 toEng 10e-5 -> 0.00010 +ddbas337 toSci 10e-6 -> 0.000010 +ddbas338 toEng 10e-6 -> 0.000010 +ddbas339 toSci 10e-7 -> 0.0000010 +ddbas340 toEng 10e-7 -> 0.0000010 +ddbas341 toSci 10e-8 -> 1.0E-7 +ddbas342 toEng 10e-8 -> 100E-9 +ddbas343 toSci 10e-9 -> 1.0E-8 +ddbas344 toEng 10e-9 -> 10E-9 +ddbas345 toSci 10e-10 -> 1.0E-9 +ddbas346 toEng 10e-10 -> 1.0E-9 +ddbas347 toSci 10e-11 -> 1.0E-10 +ddbas348 toEng 10e-11 -> 100E-12 +ddbas349 toSci 10e-12 -> 1.0E-11 +ddbas350 toEng 10e-12 -> 10E-12 +ddbas351 toSci 10e-13 -> 1.0E-12 +ddbas352 toEng 10e-13 -> 1.0E-12 + +ddbas361 toSci 7E12 -> 7E+12 +ddbas362 toEng 7E12 -> 7E+12 +ddbas363 toSci 7E11 -> 7E+11 +ddbas364 toEng 7E11 -> 700E+9 +ddbas365 toSci 7E10 -> 7E+10 +ddbas366 toEng 7E10 -> 70E+9 +ddbas367 toSci 7E9 -> 7E+9 +ddbas368 toEng 7E9 -> 7E+9 +ddbas369 toSci 7E8 -> 7E+8 +ddbas370 toEng 7E8 -> 700E+6 +ddbas371 toSci 7E7 -> 7E+7 +ddbas372 toEng 7E7 -> 70E+6 +ddbas373 toSci 7E6 -> 7E+6 +ddbas374 toEng 7E6 -> 7E+6 +ddbas375 toSci 7E5 -> 7E+5 +ddbas376 toEng 7E5 -> 700E+3 +ddbas377 toSci 7E4 -> 7E+4 +ddbas378 toEng 7E4 -> 70E+3 +ddbas379 toSci 7E3 -> 7E+3 +ddbas380 toEng 7E3 -> 7E+3 +ddbas381 toSci 7E2 -> 7E+2 +ddbas382 toEng 7E2 -> 700 +ddbas383 toSci 7E1 -> 7E+1 +ddbas384 toEng 7E1 -> 70 +ddbas385 toSci 7E0 -> 7 +ddbas386 toEng 7E0 -> 7 +ddbas387 toSci 7E-1 -> 0.7 +ddbas388 toEng 7E-1 -> 0.7 +ddbas389 toSci 7E-2 -> 0.07 +ddbas390 toEng 7E-2 -> 0.07 +ddbas391 toSci 7E-3 -> 0.007 +ddbas392 toEng 7E-3 -> 0.007 +ddbas393 toSci 7E-4 -> 0.0007 +ddbas394 toEng 7E-4 -> 0.0007 +ddbas395 toSci 7E-5 -> 0.00007 +ddbas396 toEng 7E-5 -> 0.00007 +ddbas397 toSci 7E-6 -> 0.000007 +ddbas398 toEng 7E-6 -> 0.000007 +ddbas399 toSci 7E-7 -> 7E-7 +ddbas400 toEng 7E-7 -> 700E-9 +ddbas401 toSci 7E-8 -> 7E-8 +ddbas402 toEng 7E-8 -> 70E-9 +ddbas403 toSci 7E-9 -> 7E-9 +ddbas404 toEng 7E-9 -> 7E-9 +ddbas405 toSci 7E-10 -> 7E-10 +ddbas406 toEng 7E-10 -> 700E-12 +ddbas407 toSci 7E-11 -> 7E-11 +ddbas408 toEng 7E-11 -> 70E-12 +ddbas409 toSci 7E-12 -> 7E-12 +ddbas410 toEng 7E-12 -> 7E-12 +ddbas411 toSci 7E-13 -> 7E-13 +ddbas412 toEng 7E-13 -> 700E-15 + +-- Exacts remain exact up to precision .. +rounding: half_up +ddbas420 toSci 100 -> 100 +ddbas421 toEng 100 -> 100 +ddbas422 toSci 1000 -> 1000 +ddbas423 toEng 1000 -> 1000 +ddbas424 toSci 999.9 -> 999.9 +ddbas425 toEng 999.9 -> 999.9 +ddbas426 toSci 1000.0 -> 1000.0 +ddbas427 toEng 1000.0 -> 1000.0 +ddbas428 toSci 1000.1 -> 1000.1 +ddbas429 toEng 1000.1 -> 1000.1 +ddbas430 toSci 10000 -> 10000 +ddbas431 toEng 10000 -> 10000 +ddbas432 toSci 100000 -> 100000 +ddbas433 toEng 100000 -> 100000 +ddbas434 toSci 1000000 -> 1000000 +ddbas435 toEng 1000000 -> 1000000 +ddbas436 toSci 10000000 -> 10000000 +ddbas437 toEng 10000000 -> 10000000 +ddbas438 toSci 100000000 -> 100000000 +ddbas439 toEng 1000000000000000 -> 1000000000000000 +ddbas440 toSci 10000000000000000 -> 1.000000000000000E+16 Rounded +ddbas441 toEng 10000000000000000 -> 10.00000000000000E+15 Rounded +ddbas442 toSci 10000000000000001 -> 1.000000000000000E+16 Rounded Inexact +ddbas443 toEng 10000000000000001 -> 10.00000000000000E+15 Rounded Inexact +ddbas444 toSci 10000000000000003 -> 1.000000000000000E+16 Rounded Inexact +ddbas445 toEng 10000000000000003 -> 10.00000000000000E+15 Rounded Inexact +ddbas446 toSci 10000000000000005 -> 1.000000000000001E+16 Rounded Inexact +ddbas447 toEng 10000000000000005 -> 10.00000000000001E+15 Rounded Inexact +ddbas448 toSci 100000000000000050 -> 1.000000000000001E+17 Rounded Inexact +ddbas449 toEng 100000000000000050 -> 100.0000000000001E+15 Rounded Inexact +ddbas450 toSci 10000000000000009 -> 1.000000000000001E+16 Rounded Inexact +ddbas451 toEng 10000000000000009 -> 10.00000000000001E+15 Rounded Inexact +ddbas452 toSci 100000000000000000 -> 1.000000000000000E+17 Rounded +ddbas453 toEng 100000000000000000 -> 100.0000000000000E+15 Rounded +ddbas454 toSci 100000000000000003 -> 1.000000000000000E+17 Rounded Inexact +ddbas455 toEng 100000000000000003 -> 100.0000000000000E+15 Rounded Inexact +ddbas456 toSci 100000000000000005 -> 1.000000000000000E+17 Rounded Inexact +ddbas457 toEng 100000000000000005 -> 100.0000000000000E+15 Rounded Inexact +ddbas458 toSci 100000000000000009 -> 1.000000000000000E+17 Rounded Inexact +ddbas459 toEng 100000000000000009 -> 100.0000000000000E+15 Rounded Inexact +ddbas460 toSci 1000000000000000000 -> 1.000000000000000E+18 Rounded +ddbas461 toEng 1000000000000000000 -> 1.000000000000000E+18 Rounded +ddbas462 toSci 1000000000000000300 -> 1.000000000000000E+18 Rounded Inexact +ddbas463 toEng 1000000000000000300 -> 1.000000000000000E+18 Rounded Inexact +ddbas464 toSci 1000000000000000500 -> 1.000000000000001E+18 Rounded Inexact +ddbas465 toEng 1000000000000000500 -> 1.000000000000001E+18 Rounded Inexact +ddbas466 toSci 1000000000000000900 -> 1.000000000000001E+18 Rounded Inexact +ddbas467 toEng 1000000000000000900 -> 1.000000000000001E+18 Rounded Inexact +ddbas468 toSci 10000000000000000000 -> 1.000000000000000E+19 Rounded +ddbas469 toEng 10000000000000000000 -> 10.00000000000000E+18 Rounded +ddbas470 toSci 10000000000000003000 -> 1.000000000000000E+19 Rounded Inexact +ddbas471 toEng 10000000000000003000 -> 10.00000000000000E+18 Rounded Inexact +ddbas472 toSci 10000000000000005000 -> 1.000000000000001E+19 Rounded Inexact +ddbas473 toEng 10000000000000005000 -> 10.00000000000001E+18 Rounded Inexact +ddbas474 toSci 10000000000000009000 -> 1.000000000000001E+19 Rounded Inexact +ddbas475 toEng 10000000000000009000 -> 10.00000000000001E+18 Rounded Inexact + +-- check rounding modes heeded +rounding: ceiling +ddbsr401 toSci 1.1111111111123450 -> 1.111111111112345 Rounded +ddbsr402 toSci 1.11111111111234549 -> 1.111111111112346 Rounded Inexact +ddbsr403 toSci 1.11111111111234550 -> 1.111111111112346 Rounded Inexact +ddbsr404 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact +rounding: up +ddbsr405 toSci 1.1111111111123450 -> 1.111111111112345 Rounded +ddbsr406 toSci 1.11111111111234549 -> 1.111111111112346 Rounded Inexact +ddbsr407 toSci 1.11111111111234550 -> 1.111111111112346 Rounded Inexact +ddbsr408 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact +rounding: floor +ddbsr410 toSci 1.1111111111123450 -> 1.111111111112345 Rounded +ddbsr411 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact +ddbsr412 toSci 1.11111111111234550 -> 1.111111111112345 Rounded Inexact +ddbsr413 toSci 1.11111111111234551 -> 1.111111111112345 Rounded Inexact +rounding: half_down +ddbsr415 toSci 1.1111111111123450 -> 1.111111111112345 Rounded +ddbsr416 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact +ddbsr417 toSci 1.11111111111234550 -> 1.111111111112345 Rounded Inexact +ddbsr418 toSci 1.11111111111234650 -> 1.111111111112346 Rounded Inexact +ddbsr419 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact +rounding: half_even +ddbsr421 toSci 1.1111111111123450 -> 1.111111111112345 Rounded +ddbsr422 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact +ddbsr423 toSci 1.11111111111234550 -> 1.111111111112346 Rounded Inexact +ddbsr424 toSci 1.11111111111234650 -> 1.111111111112346 Rounded Inexact +ddbsr425 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact +rounding: down +ddbsr426 toSci 1.1111111111123450 -> 1.111111111112345 Rounded +ddbsr427 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact +ddbsr428 toSci 1.11111111111234550 -> 1.111111111112345 Rounded Inexact +ddbsr429 toSci 1.11111111111234551 -> 1.111111111112345 Rounded Inexact +rounding: half_up +ddbsr431 toSci 1.1111111111123450 -> 1.111111111112345 Rounded +ddbsr432 toSci 1.11111111111234549 -> 1.111111111112345 Rounded Inexact +ddbsr433 toSci 1.11111111111234550 -> 1.111111111112346 Rounded Inexact +ddbsr434 toSci 1.11111111111234650 -> 1.111111111112347 Rounded Inexact +ddbsr435 toSci 1.11111111111234551 -> 1.111111111112346 Rounded Inexact +-- negatives +rounding: ceiling +ddbsr501 toSci -1.1111111111123450 -> -1.111111111112345 Rounded +ddbsr502 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact +ddbsr503 toSci -1.11111111111234550 -> -1.111111111112345 Rounded Inexact +ddbsr504 toSci -1.11111111111234551 -> -1.111111111112345 Rounded Inexact +rounding: up +ddbsr505 toSci -1.1111111111123450 -> -1.111111111112345 Rounded +ddbsr506 toSci -1.11111111111234549 -> -1.111111111112346 Rounded Inexact +ddbsr507 toSci -1.11111111111234550 -> -1.111111111112346 Rounded Inexact +ddbsr508 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact +rounding: floor +ddbsr510 toSci -1.1111111111123450 -> -1.111111111112345 Rounded +ddbsr511 toSci -1.11111111111234549 -> -1.111111111112346 Rounded Inexact +ddbsr512 toSci -1.11111111111234550 -> -1.111111111112346 Rounded Inexact +ddbsr513 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact +rounding: half_down +ddbsr515 toSci -1.1111111111123450 -> -1.111111111112345 Rounded +ddbsr516 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact +ddbsr517 toSci -1.11111111111234550 -> -1.111111111112345 Rounded Inexact +ddbsr518 toSci -1.11111111111234650 -> -1.111111111112346 Rounded Inexact +ddbsr519 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact +rounding: half_even +ddbsr521 toSci -1.1111111111123450 -> -1.111111111112345 Rounded +ddbsr522 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact +ddbsr523 toSci -1.11111111111234550 -> -1.111111111112346 Rounded Inexact +ddbsr524 toSci -1.11111111111234650 -> -1.111111111112346 Rounded Inexact +ddbsr525 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact +rounding: down +ddbsr526 toSci -1.1111111111123450 -> -1.111111111112345 Rounded +ddbsr527 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact +ddbsr528 toSci -1.11111111111234550 -> -1.111111111112345 Rounded Inexact +ddbsr529 toSci -1.11111111111234551 -> -1.111111111112345 Rounded Inexact +rounding: half_up +ddbsr531 toSci -1.1111111111123450 -> -1.111111111112345 Rounded +ddbsr532 toSci -1.11111111111234549 -> -1.111111111112345 Rounded Inexact +ddbsr533 toSci -1.11111111111234550 -> -1.111111111112346 Rounded Inexact +ddbsr534 toSci -1.11111111111234650 -> -1.111111111112347 Rounded Inexact +ddbsr535 toSci -1.11111111111234551 -> -1.111111111112346 Rounded Inexact + +rounding: half_even + +-- The 'baddies' tests from DiagBigDecimal, plus some new ones +ddbas500 toSci '1..2' -> NaN Conversion_syntax +ddbas501 toSci '.' -> NaN Conversion_syntax +ddbas502 toSci '..' -> NaN Conversion_syntax +ddbas503 toSci '++1' -> NaN Conversion_syntax +ddbas504 toSci '--1' -> NaN Conversion_syntax +ddbas505 toSci '-+1' -> NaN Conversion_syntax +ddbas506 toSci '+-1' -> NaN Conversion_syntax +ddbas507 toSci '12e' -> NaN Conversion_syntax +ddbas508 toSci '12e++' -> NaN Conversion_syntax +ddbas509 toSci '12f4' -> NaN Conversion_syntax +ddbas510 toSci ' +1' -> NaN Conversion_syntax +ddbas511 toSci '+ 1' -> NaN Conversion_syntax +ddbas512 toSci '12 ' -> NaN Conversion_syntax +ddbas513 toSci ' + 1' -> NaN Conversion_syntax +ddbas514 toSci ' - 1 ' -> NaN Conversion_syntax +ddbas515 toSci 'x' -> NaN Conversion_syntax +ddbas516 toSci '-1-' -> NaN Conversion_syntax +ddbas517 toSci '12-' -> NaN Conversion_syntax +ddbas518 toSci '3+' -> NaN Conversion_syntax +ddbas519 toSci '' -> NaN Conversion_syntax +ddbas520 toSci '1e-' -> NaN Conversion_syntax +ddbas521 toSci '7e99999a' -> NaN Conversion_syntax +ddbas522 toSci '7e123567890x' -> NaN Conversion_syntax +ddbas523 toSci '7e12356789012x' -> NaN Conversion_syntax +ddbas524 toSci '' -> NaN Conversion_syntax +ddbas525 toSci 'e100' -> NaN Conversion_syntax +ddbas526 toSci '\u0e5a' -> NaN Conversion_syntax +ddbas527 toSci '\u0b65' -> NaN Conversion_syntax +ddbas528 toSci '123,65' -> NaN Conversion_syntax +ddbas529 toSci '1.34.5' -> NaN Conversion_syntax +ddbas530 toSci '.123.5' -> NaN Conversion_syntax +ddbas531 toSci '01.35.' -> NaN Conversion_syntax +ddbas532 toSci '01.35-' -> NaN Conversion_syntax +ddbas533 toSci '0000..' -> NaN Conversion_syntax +ddbas534 toSci '.0000.' -> NaN Conversion_syntax +ddbas535 toSci '00..00' -> NaN Conversion_syntax +ddbas536 toSci '111e*123' -> NaN Conversion_syntax +ddbas537 toSci '111e123-' -> NaN Conversion_syntax +ddbas538 toSci '111e+12+' -> NaN Conversion_syntax +ddbas539 toSci '111e1-3-' -> NaN Conversion_syntax +ddbas540 toSci '111e1*23' -> NaN Conversion_syntax +ddbas541 toSci '111e1e+3' -> NaN Conversion_syntax +ddbas542 toSci '1e1.0' -> NaN Conversion_syntax +ddbas543 toSci '1e123e' -> NaN Conversion_syntax +ddbas544 toSci 'ten' -> NaN Conversion_syntax +ddbas545 toSci 'ONE' -> NaN Conversion_syntax +ddbas546 toSci '1e.1' -> NaN Conversion_syntax +ddbas547 toSci '1e1.' -> NaN Conversion_syntax +ddbas548 toSci '1ee' -> NaN Conversion_syntax +ddbas549 toSci 'e+1' -> NaN Conversion_syntax +ddbas550 toSci '1.23.4' -> NaN Conversion_syntax +ddbas551 toSci '1.2.1' -> NaN Conversion_syntax +ddbas552 toSci '1E+1.2' -> NaN Conversion_syntax +ddbas553 toSci '1E+1.2.3' -> NaN Conversion_syntax +ddbas554 toSci '1E++1' -> NaN Conversion_syntax +ddbas555 toSci '1E--1' -> NaN Conversion_syntax +ddbas556 toSci '1E+-1' -> NaN Conversion_syntax +ddbas557 toSci '1E-+1' -> NaN Conversion_syntax +ddbas558 toSci '1E''1' -> NaN Conversion_syntax +ddbas559 toSci "1E""1" -> NaN Conversion_syntax +ddbas560 toSci "1E""""" -> NaN Conversion_syntax +-- Near-specials +ddbas561 toSci "qNaN" -> NaN Conversion_syntax +ddbas562 toSci "NaNq" -> NaN Conversion_syntax +ddbas563 toSci "NaNs" -> NaN Conversion_syntax +ddbas564 toSci "Infi" -> NaN Conversion_syntax +ddbas565 toSci "Infin" -> NaN Conversion_syntax +ddbas566 toSci "Infini" -> NaN Conversion_syntax +ddbas567 toSci "Infinit" -> NaN Conversion_syntax +ddbas568 toSci "-Infinit" -> NaN Conversion_syntax +ddbas569 toSci "0Inf" -> NaN Conversion_syntax +ddbas570 toSci "9Inf" -> NaN Conversion_syntax +ddbas571 toSci "-0Inf" -> NaN Conversion_syntax +ddbas572 toSci "-9Inf" -> NaN Conversion_syntax +ddbas573 toSci "-sNa" -> NaN Conversion_syntax +ddbas574 toSci "xNaN" -> NaN Conversion_syntax +ddbas575 toSci "0sNaN" -> NaN Conversion_syntax + +-- some baddies with dots and Es and dots and specials +ddbas576 toSci 'e+1' -> NaN Conversion_syntax +ddbas577 toSci '.e+1' -> NaN Conversion_syntax +ddbas578 toSci '+.e+1' -> NaN Conversion_syntax +ddbas579 toSci '-.e+' -> NaN Conversion_syntax +ddbas580 toSci '-.e' -> NaN Conversion_syntax +ddbas581 toSci 'E+1' -> NaN Conversion_syntax +ddbas582 toSci '.E+1' -> NaN Conversion_syntax +ddbas583 toSci '+.E+1' -> NaN Conversion_syntax +ddbas584 toSci '-.E+' -> NaN Conversion_syntax +ddbas585 toSci '-.E' -> NaN Conversion_syntax + +ddbas586 toSci '.NaN' -> NaN Conversion_syntax +ddbas587 toSci '-.NaN' -> NaN Conversion_syntax +ddbas588 toSci '+.sNaN' -> NaN Conversion_syntax +ddbas589 toSci '+.Inf' -> NaN Conversion_syntax +ddbas590 toSci '.Infinity' -> NaN Conversion_syntax + +-- Zeros +ddbas601 toSci 0.000000000 -> 0E-9 +ddbas602 toSci 0.00000000 -> 0E-8 +ddbas603 toSci 0.0000000 -> 0E-7 +ddbas604 toSci 0.000000 -> 0.000000 +ddbas605 toSci 0.00000 -> 0.00000 +ddbas606 toSci 0.0000 -> 0.0000 +ddbas607 toSci 0.000 -> 0.000 +ddbas608 toSci 0.00 -> 0.00 +ddbas609 toSci 0.0 -> 0.0 +ddbas610 toSci .0 -> 0.0 +ddbas611 toSci 0. -> 0 +ddbas612 toSci -.0 -> -0.0 +ddbas613 toSci -0. -> -0 +ddbas614 toSci -0.0 -> -0.0 +ddbas615 toSci -0.00 -> -0.00 +ddbas616 toSci -0.000 -> -0.000 +ddbas617 toSci -0.0000 -> -0.0000 +ddbas618 toSci -0.00000 -> -0.00000 +ddbas619 toSci -0.000000 -> -0.000000 +ddbas620 toSci -0.0000000 -> -0E-7 +ddbas621 toSci -0.00000000 -> -0E-8 +ddbas622 toSci -0.000000000 -> -0E-9 + +ddbas630 toSci 0.00E+0 -> 0.00 +ddbas631 toSci 0.00E+1 -> 0.0 +ddbas632 toSci 0.00E+2 -> 0 +ddbas633 toSci 0.00E+3 -> 0E+1 +ddbas634 toSci 0.00E+4 -> 0E+2 +ddbas635 toSci 0.00E+5 -> 0E+3 +ddbas636 toSci 0.00E+6 -> 0E+4 +ddbas637 toSci 0.00E+7 -> 0E+5 +ddbas638 toSci 0.00E+8 -> 0E+6 +ddbas639 toSci 0.00E+9 -> 0E+7 + +ddbas640 toSci 0.0E+0 -> 0.0 +ddbas641 toSci 0.0E+1 -> 0 +ddbas642 toSci 0.0E+2 -> 0E+1 +ddbas643 toSci 0.0E+3 -> 0E+2 +ddbas644 toSci 0.0E+4 -> 0E+3 +ddbas645 toSci 0.0E+5 -> 0E+4 +ddbas646 toSci 0.0E+6 -> 0E+5 +ddbas647 toSci 0.0E+7 -> 0E+6 +ddbas648 toSci 0.0E+8 -> 0E+7 +ddbas649 toSci 0.0E+9 -> 0E+8 + +ddbas650 toSci 0E+0 -> 0 +ddbas651 toSci 0E+1 -> 0E+1 +ddbas652 toSci 0E+2 -> 0E+2 +ddbas653 toSci 0E+3 -> 0E+3 +ddbas654 toSci 0E+4 -> 0E+4 +ddbas655 toSci 0E+5 -> 0E+5 +ddbas656 toSci 0E+6 -> 0E+6 +ddbas657 toSci 0E+7 -> 0E+7 +ddbas658 toSci 0E+8 -> 0E+8 +ddbas659 toSci 0E+9 -> 0E+9 + +ddbas660 toSci 0.0E-0 -> 0.0 +ddbas661 toSci 0.0E-1 -> 0.00 +ddbas662 toSci 0.0E-2 -> 0.000 +ddbas663 toSci 0.0E-3 -> 0.0000 +ddbas664 toSci 0.0E-4 -> 0.00000 +ddbas665 toSci 0.0E-5 -> 0.000000 +ddbas666 toSci 0.0E-6 -> 0E-7 +ddbas667 toSci 0.0E-7 -> 0E-8 +ddbas668 toSci 0.0E-8 -> 0E-9 +ddbas669 toSci 0.0E-9 -> 0E-10 + +ddbas670 toSci 0.00E-0 -> 0.00 +ddbas671 toSci 0.00E-1 -> 0.000 +ddbas672 toSci 0.00E-2 -> 0.0000 +ddbas673 toSci 0.00E-3 -> 0.00000 +ddbas674 toSci 0.00E-4 -> 0.000000 +ddbas675 toSci 0.00E-5 -> 0E-7 +ddbas676 toSci 0.00E-6 -> 0E-8 +ddbas677 toSci 0.00E-7 -> 0E-9 +ddbas678 toSci 0.00E-8 -> 0E-10 +ddbas679 toSci 0.00E-9 -> 0E-11 + +ddbas680 toSci 000000. -> 0 +ddbas681 toSci 00000. -> 0 +ddbas682 toSci 0000. -> 0 +ddbas683 toSci 000. -> 0 +ddbas684 toSci 00. -> 0 +ddbas685 toSci 0. -> 0 +ddbas686 toSci +00000. -> 0 +ddbas687 toSci -00000. -> -0 +ddbas688 toSci +0. -> 0 +ddbas689 toSci -0. -> -0 + +-- Specials +ddbas700 toSci "NaN" -> NaN +ddbas701 toSci "nan" -> NaN +ddbas702 toSci "nAn" -> NaN +ddbas703 toSci "NAN" -> NaN +ddbas704 toSci "+NaN" -> NaN +ddbas705 toSci "+nan" -> NaN +ddbas706 toSci "+nAn" -> NaN +ddbas707 toSci "+NAN" -> NaN +ddbas708 toSci "-NaN" -> -NaN +ddbas709 toSci "-nan" -> -NaN +ddbas710 toSci "-nAn" -> -NaN +ddbas711 toSci "-NAN" -> -NaN +ddbas712 toSci 'NaN0' -> NaN +ddbas713 toSci 'NaN1' -> NaN1 +ddbas714 toSci 'NaN12' -> NaN12 +ddbas715 toSci 'NaN123' -> NaN123 +ddbas716 toSci 'NaN1234' -> NaN1234 +ddbas717 toSci 'NaN01' -> NaN1 +ddbas718 toSci 'NaN012' -> NaN12 +ddbas719 toSci 'NaN0123' -> NaN123 +ddbas720 toSci 'NaN01234' -> NaN1234 +ddbas721 toSci 'NaN001' -> NaN1 +ddbas722 toSci 'NaN0012' -> NaN12 +ddbas723 toSci 'NaN00123' -> NaN123 +ddbas724 toSci 'NaN001234' -> NaN1234 +ddbas725 toSci 'NaN1234567890123456' -> NaN Conversion_syntax +ddbas726 toSci 'NaN123e+1' -> NaN Conversion_syntax +ddbas727 toSci 'NaN12.45' -> NaN Conversion_syntax +ddbas728 toSci 'NaN-12' -> NaN Conversion_syntax +ddbas729 toSci 'NaN+12' -> NaN Conversion_syntax + +ddbas730 toSci "sNaN" -> sNaN +ddbas731 toSci "snan" -> sNaN +ddbas732 toSci "SnAn" -> sNaN +ddbas733 toSci "SNAN" -> sNaN +ddbas734 toSci "+sNaN" -> sNaN +ddbas735 toSci "+snan" -> sNaN +ddbas736 toSci "+SnAn" -> sNaN +ddbas737 toSci "+SNAN" -> sNaN +ddbas738 toSci "-sNaN" -> -sNaN +ddbas739 toSci "-snan" -> -sNaN +ddbas740 toSci "-SnAn" -> -sNaN +ddbas741 toSci "-SNAN" -> -sNaN +ddbas742 toSci 'sNaN0000' -> sNaN +ddbas743 toSci 'sNaN7' -> sNaN7 +ddbas744 toSci 'sNaN007234' -> sNaN7234 +ddbas745 toSci 'sNaN7234561234567890' -> NaN Conversion_syntax +ddbas746 toSci 'sNaN72.45' -> NaN Conversion_syntax +ddbas747 toSci 'sNaN-72' -> NaN Conversion_syntax + +ddbas748 toSci "Inf" -> Infinity +ddbas749 toSci "inf" -> Infinity +ddbas750 toSci "iNf" -> Infinity +ddbas751 toSci "INF" -> Infinity +ddbas752 toSci "+Inf" -> Infinity +ddbas753 toSci "+inf" -> Infinity +ddbas754 toSci "+iNf" -> Infinity +ddbas755 toSci "+INF" -> Infinity +ddbas756 toSci "-Inf" -> -Infinity +ddbas757 toSci "-inf" -> -Infinity +ddbas758 toSci "-iNf" -> -Infinity +ddbas759 toSci "-INF" -> -Infinity + +ddbas760 toSci "Infinity" -> Infinity +ddbas761 toSci "infinity" -> Infinity +ddbas762 toSci "iNfInItY" -> Infinity +ddbas763 toSci "INFINITY" -> Infinity +ddbas764 toSci "+Infinity" -> Infinity +ddbas765 toSci "+infinity" -> Infinity +ddbas766 toSci "+iNfInItY" -> Infinity +ddbas767 toSci "+INFINITY" -> Infinity +ddbas768 toSci "-Infinity" -> -Infinity +ddbas769 toSci "-infinity" -> -Infinity +ddbas770 toSci "-iNfInItY" -> -Infinity +ddbas771 toSci "-INFINITY" -> -Infinity + +-- Specials and zeros for toEng +ddbast772 toEng "NaN" -> NaN +ddbast773 toEng "-Infinity" -> -Infinity +ddbast774 toEng "-sNaN" -> -sNaN +ddbast775 toEng "-NaN" -> -NaN +ddbast776 toEng "+Infinity" -> Infinity +ddbast778 toEng "+sNaN" -> sNaN +ddbast779 toEng "+NaN" -> NaN +ddbast780 toEng "INFINITY" -> Infinity +ddbast781 toEng "SNAN" -> sNaN +ddbast782 toEng "NAN" -> NaN +ddbast783 toEng "infinity" -> Infinity +ddbast784 toEng "snan" -> sNaN +ddbast785 toEng "nan" -> NaN +ddbast786 toEng "InFINITY" -> Infinity +ddbast787 toEng "SnAN" -> sNaN +ddbast788 toEng "nAN" -> NaN +ddbast789 toEng "iNfinity" -> Infinity +ddbast790 toEng "sNan" -> sNaN +ddbast791 toEng "Nan" -> NaN +ddbast792 toEng "Infinity" -> Infinity +ddbast793 toEng "sNaN" -> sNaN + +-- Zero toEng, etc. +ddbast800 toEng 0e+1 -> "0.00E+3" -- doc example + +ddbast801 toEng 0.000000000 -> 0E-9 +ddbast802 toEng 0.00000000 -> 0.00E-6 +ddbast803 toEng 0.0000000 -> 0.0E-6 +ddbast804 toEng 0.000000 -> 0.000000 +ddbast805 toEng 0.00000 -> 0.00000 +ddbast806 toEng 0.0000 -> 0.0000 +ddbast807 toEng 0.000 -> 0.000 +ddbast808 toEng 0.00 -> 0.00 +ddbast809 toEng 0.0 -> 0.0 +ddbast810 toEng .0 -> 0.0 +ddbast811 toEng 0. -> 0 +ddbast812 toEng -.0 -> -0.0 +ddbast813 toEng -0. -> -0 +ddbast814 toEng -0.0 -> -0.0 +ddbast815 toEng -0.00 -> -0.00 +ddbast816 toEng -0.000 -> -0.000 +ddbast817 toEng -0.0000 -> -0.0000 +ddbast818 toEng -0.00000 -> -0.00000 +ddbast819 toEng -0.000000 -> -0.000000 +ddbast820 toEng -0.0000000 -> -0.0E-6 +ddbast821 toEng -0.00000000 -> -0.00E-6 +ddbast822 toEng -0.000000000 -> -0E-9 + +ddbast830 toEng 0.00E+0 -> 0.00 +ddbast831 toEng 0.00E+1 -> 0.0 +ddbast832 toEng 0.00E+2 -> 0 +ddbast833 toEng 0.00E+3 -> 0.00E+3 +ddbast834 toEng 0.00E+4 -> 0.0E+3 +ddbast835 toEng 0.00E+5 -> 0E+3 +ddbast836 toEng 0.00E+6 -> 0.00E+6 +ddbast837 toEng 0.00E+7 -> 0.0E+6 +ddbast838 toEng 0.00E+8 -> 0E+6 +ddbast839 toEng 0.00E+9 -> 0.00E+9 + +ddbast840 toEng 0.0E+0 -> 0.0 +ddbast841 toEng 0.0E+1 -> 0 +ddbast842 toEng 0.0E+2 -> 0.00E+3 +ddbast843 toEng 0.0E+3 -> 0.0E+3 +ddbast844 toEng 0.0E+4 -> 0E+3 +ddbast845 toEng 0.0E+5 -> 0.00E+6 +ddbast846 toEng 0.0E+6 -> 0.0E+6 +ddbast847 toEng 0.0E+7 -> 0E+6 +ddbast848 toEng 0.0E+8 -> 0.00E+9 +ddbast849 toEng 0.0E+9 -> 0.0E+9 + +ddbast850 toEng 0E+0 -> 0 +ddbast851 toEng 0E+1 -> 0.00E+3 +ddbast852 toEng 0E+2 -> 0.0E+3 +ddbast853 toEng 0E+3 -> 0E+3 +ddbast854 toEng 0E+4 -> 0.00E+6 +ddbast855 toEng 0E+5 -> 0.0E+6 +ddbast856 toEng 0E+6 -> 0E+6 +ddbast857 toEng 0E+7 -> 0.00E+9 +ddbast858 toEng 0E+8 -> 0.0E+9 +ddbast859 toEng 0E+9 -> 0E+9 + +ddbast860 toEng 0.0E-0 -> 0.0 +ddbast861 toEng 0.0E-1 -> 0.00 +ddbast862 toEng 0.0E-2 -> 0.000 +ddbast863 toEng 0.0E-3 -> 0.0000 +ddbast864 toEng 0.0E-4 -> 0.00000 +ddbast865 toEng 0.0E-5 -> 0.000000 +ddbast866 toEng 0.0E-6 -> 0.0E-6 +ddbast867 toEng 0.0E-7 -> 0.00E-6 +ddbast868 toEng 0.0E-8 -> 0E-9 +ddbast869 toEng 0.0E-9 -> 0.0E-9 + +ddbast870 toEng 0.00E-0 -> 0.00 +ddbast871 toEng 0.00E-1 -> 0.000 +ddbast872 toEng 0.00E-2 -> 0.0000 +ddbast873 toEng 0.00E-3 -> 0.00000 +ddbast874 toEng 0.00E-4 -> 0.000000 +ddbast875 toEng 0.00E-5 -> 0.0E-6 +ddbast876 toEng 0.00E-6 -> 0.00E-6 +ddbast877 toEng 0.00E-7 -> 0E-9 +ddbast878 toEng 0.00E-8 -> 0.0E-9 +ddbast879 toEng 0.00E-9 -> 0.00E-9 + +-- long input strings +ddbas801 tosci '01234567890123456' -> 1234567890123456 +ddbas802 tosci '001234567890123456' -> 1234567890123456 +ddbas803 tosci '0001234567890123456' -> 1234567890123456 +ddbas804 tosci '00001234567890123456' -> 1234567890123456 +ddbas805 tosci '000001234567890123456' -> 1234567890123456 +ddbas806 tosci '0000001234567890123456' -> 1234567890123456 +ddbas807 tosci '00000001234567890123456' -> 1234567890123456 +ddbas808 tosci '000000001234567890123456' -> 1234567890123456 +ddbas809 tosci '0000000001234567890123456' -> 1234567890123456 +ddbas810 tosci '00000000001234567890123456' -> 1234567890123456 + +ddbas811 tosci '0.1234567890123456' -> 0.1234567890123456 +ddbas812 tosci '0.01234567890123456' -> 0.01234567890123456 +ddbas813 tosci '0.001234567890123456' -> 0.001234567890123456 +ddbas814 tosci '0.0001234567890123456' -> 0.0001234567890123456 +ddbas815 tosci '0.00001234567890123456' -> 0.00001234567890123456 +ddbas816 tosci '0.000001234567890123456' -> 0.000001234567890123456 +ddbas817 tosci '0.0000001234567890123456' -> 1.234567890123456E-7 +ddbas818 tosci '0.00000001234567890123456' -> 1.234567890123456E-8 +ddbas819 tosci '0.000000001234567890123456' -> 1.234567890123456E-9 +ddbas820 tosci '0.0000000001234567890123456' -> 1.234567890123456E-10 + +ddbas821 tosci '12345678901234567890' -> 1.234567890123457E+19 Inexact Rounded +ddbas822 tosci '123456789012345678901' -> 1.234567890123457E+20 Inexact Rounded +ddbas823 tosci '1234567890123456789012' -> 1.234567890123457E+21 Inexact Rounded +ddbas824 tosci '12345678901234567890123' -> 1.234567890123457E+22 Inexact Rounded +ddbas825 tosci '123456789012345678901234' -> 1.234567890123457E+23 Inexact Rounded +ddbas826 tosci '1234567890123456789012345' -> 1.234567890123457E+24 Inexact Rounded +ddbas827 tosci '12345678901234567890123456' -> 1.234567890123457E+25 Inexact Rounded +ddbas828 tosci '123456789012345678901234567' -> 1.234567890123457E+26 Inexact Rounded +ddbas829 tosci '1234567890123456789012345678' -> 1.234567890123457E+27 Inexact Rounded + +-- subnormals and overflows +ddbas906 toSci '99e999999999' -> Infinity Overflow Inexact Rounded +ddbas907 toSci '999e999999999' -> Infinity Overflow Inexact Rounded +ddbas908 toSci '0.9e-999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas909 toSci '0.09e-999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas910 toSci '0.1e1000000000' -> Infinity Overflow Inexact Rounded +ddbas911 toSci '10e-1000000000' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas912 toSci '0.9e9999999999' -> Infinity Overflow Inexact Rounded +ddbas913 toSci '99e-9999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas914 toSci '111e9999999999' -> Infinity Overflow Inexact Rounded +ddbas915 toSci '1111e-9999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas916 toSci '1111e-99999999999' -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas917 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +-- negatives the same +ddbas918 toSci '-99e999999999' -> -Infinity Overflow Inexact Rounded +ddbas919 toSci '-999e999999999' -> -Infinity Overflow Inexact Rounded +ddbas920 toSci '-0.9e-999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas921 toSci '-0.09e-999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas922 toSci '-0.1e1000000000' -> -Infinity Overflow Inexact Rounded +ddbas923 toSci '-10e-1000000000' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas924 toSci '-0.9e9999999999' -> -Infinity Overflow Inexact Rounded +ddbas925 toSci '-99e-9999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas926 toSci '-111e9999999999' -> -Infinity Overflow Inexact Rounded +ddbas927 toSci '-1111e-9999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas928 toSci '-1111e-99999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas929 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded + +-- overflow results at different rounding modes +rounding: ceiling +ddbas930 toSci '7e10000' -> Infinity Overflow Inexact Rounded +ddbas931 toSci '-7e10000' -> -9.999999999999999E+384 Overflow Inexact Rounded +rounding: up +ddbas932 toSci '7e10000' -> Infinity Overflow Inexact Rounded +ddbas933 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: down +ddbas934 toSci '7e10000' -> 9.999999999999999E+384 Overflow Inexact Rounded +ddbas935 toSci '-7e10000' -> -9.999999999999999E+384 Overflow Inexact Rounded +rounding: floor +ddbas936 toSci '7e10000' -> 9.999999999999999E+384 Overflow Inexact Rounded +ddbas937 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded + +rounding: half_up +ddbas938 toSci '7e10000' -> Infinity Overflow Inexact Rounded +ddbas939 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: half_even +ddbas940 toSci '7e10000' -> Infinity Overflow Inexact Rounded +ddbas941 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: half_down +ddbas942 toSci '7e10000' -> Infinity Overflow Inexact Rounded +ddbas943 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded + +rounding: half_even + +-- Now check 854/754r some subnormals and underflow to 0 +ddbem400 toSci 1.0000E-383 -> 1.0000E-383 +ddbem401 toSci 0.1E-394 -> 1E-395 Subnormal +ddbem402 toSci 0.1000E-394 -> 1.000E-395 Subnormal +ddbem403 toSci 0.0100E-394 -> 1.00E-396 Subnormal +ddbem404 toSci 0.0010E-394 -> 1.0E-397 Subnormal +ddbem405 toSci 0.0001E-394 -> 1E-398 Subnormal +ddbem406 toSci 0.00010E-394 -> 1E-398 Subnormal Rounded +ddbem407 toSci 0.00013E-394 -> 1E-398 Underflow Subnormal Inexact Rounded +ddbem408 toSci 0.00015E-394 -> 2E-398 Underflow Subnormal Inexact Rounded +ddbem409 toSci 0.00017E-394 -> 2E-398 Underflow Subnormal Inexact Rounded +ddbem410 toSci 0.00023E-394 -> 2E-398 Underflow Subnormal Inexact Rounded +ddbem411 toSci 0.00025E-394 -> 2E-398 Underflow Subnormal Inexact Rounded +ddbem412 toSci 0.00027E-394 -> 3E-398 Underflow Subnormal Inexact Rounded +ddbem413 toSci 0.000149E-394 -> 1E-398 Underflow Subnormal Inexact Rounded +ddbem414 toSci 0.000150E-394 -> 2E-398 Underflow Subnormal Inexact Rounded +ddbem415 toSci 0.000151E-394 -> 2E-398 Underflow Subnormal Inexact Rounded +ddbem416 toSci 0.000249E-394 -> 2E-398 Underflow Subnormal Inexact Rounded +ddbem417 toSci 0.000250E-394 -> 2E-398 Underflow Subnormal Inexact Rounded +ddbem418 toSci 0.000251E-394 -> 3E-398 Underflow Subnormal Inexact Rounded +ddbem419 toSci 0.00009E-394 -> 1E-398 Underflow Subnormal Inexact Rounded +ddbem420 toSci 0.00005E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbem421 toSci 0.00003E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbem422 toSci 0.000009E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbem423 toSci 0.000005E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbem424 toSci 0.000003E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped + +ddbem425 toSci 0.001049E-394 -> 1.0E-397 Underflow Subnormal Inexact Rounded +ddbem426 toSci 0.001050E-394 -> 1.0E-397 Underflow Subnormal Inexact Rounded +ddbem427 toSci 0.001051E-394 -> 1.1E-397 Underflow Subnormal Inexact Rounded +ddbem428 toSci 0.001149E-394 -> 1.1E-397 Underflow Subnormal Inexact Rounded +ddbem429 toSci 0.001150E-394 -> 1.2E-397 Underflow Subnormal Inexact Rounded +ddbem430 toSci 0.001151E-394 -> 1.2E-397 Underflow Subnormal Inexact Rounded + +ddbem432 toSci 0.010049E-394 -> 1.00E-396 Underflow Subnormal Inexact Rounded +ddbem433 toSci 0.010050E-394 -> 1.00E-396 Underflow Subnormal Inexact Rounded +ddbem434 toSci 0.010051E-394 -> 1.01E-396 Underflow Subnormal Inexact Rounded +ddbem435 toSci 0.010149E-394 -> 1.01E-396 Underflow Subnormal Inexact Rounded +ddbem436 toSci 0.010150E-394 -> 1.02E-396 Underflow Subnormal Inexact Rounded +ddbem437 toSci 0.010151E-394 -> 1.02E-396 Underflow Subnormal Inexact Rounded + +ddbem440 toSci 0.10103E-394 -> 1.010E-395 Underflow Subnormal Inexact Rounded +ddbem441 toSci 0.10105E-394 -> 1.010E-395 Underflow Subnormal Inexact Rounded +ddbem442 toSci 0.10107E-394 -> 1.011E-395 Underflow Subnormal Inexact Rounded +ddbem443 toSci 0.10113E-394 -> 1.011E-395 Underflow Subnormal Inexact Rounded +ddbem444 toSci 0.10115E-394 -> 1.012E-395 Underflow Subnormal Inexact Rounded +ddbem445 toSci 0.10117E-394 -> 1.012E-395 Underflow Subnormal Inexact Rounded + +ddbem450 toSci 1.10730E-395 -> 1.107E-395 Underflow Subnormal Inexact Rounded +ddbem451 toSci 1.10750E-395 -> 1.108E-395 Underflow Subnormal Inexact Rounded +ddbem452 toSci 1.10770E-395 -> 1.108E-395 Underflow Subnormal Inexact Rounded +ddbem453 toSci 1.10830E-395 -> 1.108E-395 Underflow Subnormal Inexact Rounded +ddbem454 toSci 1.10850E-395 -> 1.108E-395 Underflow Subnormal Inexact Rounded +ddbem455 toSci 1.10870E-395 -> 1.109E-395 Underflow Subnormal Inexact Rounded + +-- make sure sign OK +ddbem456 toSci -0.10103E-394 -> -1.010E-395 Underflow Subnormal Inexact Rounded +ddbem457 toSci -0.10105E-394 -> -1.010E-395 Underflow Subnormal Inexact Rounded +ddbem458 toSci -0.10107E-394 -> -1.011E-395 Underflow Subnormal Inexact Rounded +ddbem459 toSci -0.10113E-394 -> -1.011E-395 Underflow Subnormal Inexact Rounded +ddbem460 toSci -0.10115E-394 -> -1.012E-395 Underflow Subnormal Inexact Rounded +ddbem461 toSci -0.10117E-394 -> -1.012E-395 Underflow Subnormal Inexact Rounded + +-- '999s' cases +ddbem464 toSci 999999E-395 -> 9.99999E-390 Subnormal +ddbem465 toSci 99999.0E-394 -> 9.99990E-390 Subnormal +ddbem466 toSci 99999.E-394 -> 9.9999E-390 Subnormal +ddbem467 toSci 9999.9E-394 -> 9.9999E-391 Subnormal +ddbem468 toSci 999.99E-394 -> 9.9999E-392 Subnormal +ddbem469 toSci 99.999E-394 -> 9.9999E-393 Subnormal +ddbem470 toSci 9.9999E-394 -> 9.9999E-394 Subnormal +ddbem471 toSci 0.99999E-394 -> 1.0000E-394 Underflow Subnormal Inexact Rounded +ddbem472 toSci 0.099999E-394 -> 1.000E-395 Underflow Subnormal Inexact Rounded +ddbem473 toSci 0.0099999E-394 -> 1.00E-396 Underflow Subnormal Inexact Rounded +ddbem474 toSci 0.00099999E-394 -> 1.0E-397 Underflow Subnormal Inexact Rounded +ddbem475 toSci 0.000099999E-394 -> 1E-398 Underflow Subnormal Inexact Rounded +ddbem476 toSci 0.0000099999E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbem477 toSci 0.00000099999E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbem478 toSci 0.000000099999E-394 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped + +-- Exponents with insignificant leading zeros +ddbas1001 toSci 1e999999999 -> Infinity Overflow Inexact Rounded +ddbas1002 toSci 1e0999999999 -> Infinity Overflow Inexact Rounded +ddbas1003 toSci 1e00999999999 -> Infinity Overflow Inexact Rounded +ddbas1004 toSci 1e000999999999 -> Infinity Overflow Inexact Rounded +ddbas1005 toSci 1e000000000000999999999 -> Infinity Overflow Inexact Rounded +ddbas1006 toSci 1e000000000001000000007 -> Infinity Overflow Inexact Rounded +ddbas1007 toSci 1e-999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas1008 toSci 1e-0999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas1009 toSci 1e-00999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas1010 toSci 1e-000999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas1011 toSci 1e-000000000000999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddbas1012 toSci 1e-000000000001000000007 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped + +-- check for double-rounded subnormals +ddbas1041 toSci 1.1111111111152444E-384 -> 1.11111111111524E-384 Inexact Rounded Subnormal Underflow +ddbas1042 toSci 1.1111111111152445E-384 -> 1.11111111111524E-384 Inexact Rounded Subnormal Underflow +ddbas1043 toSci 1.1111111111152446E-384 -> 1.11111111111524E-384 Inexact Rounded Subnormal Underflow + +-- clamped large normals +ddbas1070 toSci 1E+369 -> 1E+369 +ddbas1071 toSci 1E+370 -> 1.0E+370 Clamped +ddbas1072 toSci 1E+378 -> 1.000000000E+378 Clamped +ddbas1073 toSci 1E+384 -> 1.000000000000000E+384 Clamped +ddbas1074 toSci 1E+385 -> Infinity Overflow Inexact Rounded + + +-- clamped zeros [see also clamp.decTest] +ddbas1075 toSci 0e+10000 -> 0E+369 Clamped +ddbas1076 toSci 0e-10000 -> 0E-398 Clamped +ddbas1077 toSci -0e+10000 -> -0E+369 Clamped +ddbas1078 toSci -0e-10000 -> -0E-398 Clamped + +-- extreme values from next-wider +ddbas1101 toSci -9.99999999999999999999999999999999E+6144 -> -Infinity Overflow Inexact Rounded +ddbas1102 toSci -1E-6143 -> -0E-398 Inexact Rounded Subnormal Underflow Clamped +ddbas1103 toSci -1E-6176 -> -0E-398 Inexact Rounded Subnormal Underflow Clamped +ddbas1104 toSci -0 -> -0 +ddbas1105 toSci +0 -> 0 +ddbas1106 toSci +1E-6176 -> 0E-398 Inexact Rounded Subnormal Underflow Clamped +ddbas1107 toSci +1E-6173 -> 0E-398 Inexact Rounded Subnormal Underflow Clamped +ddbas1108 toSci +9.99999999999999999999999999999999E+6144 -> Infinity Overflow Inexact Rounded + diff --git a/Lib/test/decimaltestdata/ddCanonical.decTest b/Lib/test/decimaltestdata/ddCanonical.decTest index 824de83..b4f9e32 100644 --- a/Lib/test/decimaltestdata/ddCanonical.decTest +++ b/Lib/test/decimaltestdata/ddCanonical.decTest @@ -1,357 +1,357 @@ ------------------------------------------------------------------------- --- ddCanonical.decTest -- test decDouble canonical results -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This file tests that copy operations leave uncanonical operands --- unchanged, and vice versa --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Uncanonical declets are: abc, where: --- a=1,2,3 --- b=6,7,e,f --- c=e,f - --- assert some standard (canonical) values; this tests that FromString --- produces canonical results (many more in decimalNN) -ddcan001 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff -ddcan002 apply 0 -> #2238000000000000 -ddcan003 apply 1 -> #2238000000000001 -ddcan004 apply -1 -> #a238000000000001 -ddcan005 apply Infinity -> #7800000000000000 -ddcan006 apply -Infinity -> #f800000000000000 -ddcan007 apply -NaN -> #fc00000000000000 -ddcan008 apply -sNaN -> #fe00000000000000 -ddcan009 apply NaN999999999999999 -> #7c00ff3fcff3fcff -ddcan010 apply sNaN999999999999999 -> #7e00ff3fcff3fcff -decan011 apply 9999999999999999 -> #6e38ff3fcff3fcff -ddcan012 apply 7.50 -> #22300000000003d0 -ddcan013 apply 9.99 -> #22300000000000ff - --- Base tests for canonical encodings (individual operator --- propagation is tested later) - --- Finites: declets in coefficient -ddcan021 canonical #77fcff3fcff3fcff -> #77fcff3fcff3fcff -ddcan022 canonical #77fcff3fcff3fcff -> #77fcff3fcff3fcff -ddcan023 canonical #77ffff3fcff3fcff -> #77fcff3fcff3fcff -ddcan024 canonical #77ffff3fcff3fcff -> #77fcff3fcff3fcff -ddcan025 canonical #77fcffffcff3fcff -> #77fcff3fcff3fcff -ddcan026 canonical #77fcffffcff3fcff -> #77fcff3fcff3fcff -ddcan027 canonical #77fcff3ffff3fcff -> #77fcff3fcff3fcff -ddcan028 canonical #77fcff3ffff3fcff -> #77fcff3fcff3fcff -ddcan030 canonical #77fcff3fcffffcff -> #77fcff3fcff3fcff -ddcan031 canonical #77fcff3fcffffcff -> #77fcff3fcff3fcff -ddcan032 canonical #77fcff3fcff3ffff -> #77fcff3fcff3fcff -ddcan033 canonical #77fcff3fcff3ffff -> #77fcff3fcff3fcff -ddcan035 canonical #77fcff3fdff3fcff -> #77fcff3fcff3fcff -ddcan036 canonical #77fcff3feff3fcff -> #77fcff3fcff3fcff - --- NaN: declets in payload -ddcan100 canonical NaN999999999999999 -> #7c00ff3fcff3fcff -ddcan101 canonical #7c00ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan102 canonical #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan103 canonical #7c00ffffcff3fcff -> #7c00ff3fcff3fcff -ddcan104 canonical #7c00ff3ffff3fcff -> #7c00ff3fcff3fcff -ddcan105 canonical #7c00ff3fcffffcff -> #7c00ff3fcff3fcff -ddcan106 canonical #7c00ff3fcff3ffff -> #7c00ff3fcff3fcff -ddcan107 canonical #7c00ff3fcff3ffff -> #7c00ff3fcff3fcff --- NaN: exponent continuation bits [excluding sNaN selector] -ddcan110 canonical #7c00ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan112 canonical #7d00ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan113 canonical #7c80ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan114 canonical #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan115 canonical #7c20ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan116 canonical #7c10ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan117 canonical #7c08ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan118 canonical #7c04ff3fcff3fcff -> #7c00ff3fcff3fcff - --- sNaN: declets in payload -ddcan120 canonical sNaN999999999999999 -> #7e00ff3fcff3fcff -ddcan121 canonical #7e00ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan122 canonical #7e03ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan123 canonical #7e00ffffcff3fcff -> #7e00ff3fcff3fcff -ddcan124 canonical #7e00ff3ffff3fcff -> #7e00ff3fcff3fcff -ddcan125 canonical #7e00ff3fcffffcff -> #7e00ff3fcff3fcff -ddcan126 canonical #7e00ff3fcff3ffff -> #7e00ff3fcff3fcff -ddcan127 canonical #7e00ff3fcff3ffff -> #7e00ff3fcff3fcff --- sNaN: exponent continuation bits [excluding sNaN selector] -ddcan130 canonical #7e00ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan132 canonical #7f00ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan133 canonical #7e80ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan134 canonical #7e40ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan135 canonical #7e20ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan136 canonical #7e10ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan137 canonical #7e08ff3fcff3fcff -> #7e00ff3fcff3fcff -ddcan138 canonical #7e04ff3fcff3fcff -> #7e00ff3fcff3fcff - --- Inf: exponent continuation bits -ddcan140 canonical #7800000000000000 -> #7800000000000000 -ddcan141 canonical #7900000000000000 -> #7800000000000000 -ddcan142 canonical #7a00000000000000 -> #7800000000000000 -ddcan143 canonical #7880000000000000 -> #7800000000000000 -ddcan144 canonical #7840000000000000 -> #7800000000000000 -ddcan145 canonical #7820000000000000 -> #7800000000000000 -ddcan146 canonical #7810000000000000 -> #7800000000000000 -ddcan147 canonical #7808000000000000 -> #7800000000000000 -ddcan148 canonical #7804000000000000 -> #7800000000000000 - --- Inf: coefficient continuation bits (first, last, and a few others) -ddcan150 canonical #7800000000000000 -> #7800000000000000 -ddcan151 canonical #7802000000000000 -> #7800000000000000 -ddcan152 canonical #7800000000000001 -> #7800000000000000 -ddcan153 canonical #7801000000000000 -> #7800000000000000 -ddcan154 canonical #7800200000000000 -> #7800000000000000 -ddcan155 canonical #7800080000000000 -> #7800000000000000 -ddcan156 canonical #7800002000000000 -> #7800000000000000 -ddcan157 canonical #7800000400000000 -> #7800000000000000 -ddcan158 canonical #7800000040000000 -> #7800000000000000 -ddcan159 canonical #7800000008000000 -> #7800000000000000 -ddcan160 canonical #7800000000400000 -> #7800000000000000 -ddcan161 canonical #7800000000020000 -> #7800000000000000 -ddcan162 canonical #7800000000008000 -> #7800000000000000 -ddcan163 canonical #7800000000000200 -> #7800000000000000 -ddcan164 canonical #7800000000000040 -> #7800000000000000 -ddcan165 canonical #7800000000000008 -> #7800000000000000 - - --- Now the operators -- trying to check paths that might fail to --- canonicalize propagated operands - ------ Add: --- Finites: neutral 0 -ddcan202 add 0E+384 #77ffff3fcff3fcff -> #77fcff3fcff3fcff -ddcan203 add #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff --- tiny zero -ddcan204 add 0E-398 #77ffff3fcff3fcff -> #77fcff3fcff3fcff Rounded -ddcan205 add #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded --- tiny non zero -ddcan206 add -1E-398 #77ffff3fcff3fcff -> #77fcff3fcff3fcff Inexact Rounded -ddcan207 add #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded --- NaN: declets in payload -ddcan211 add 0 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan212 add #7c03ff3fcff3fcff 0 -> #7c00ff3fcff3fcff --- NaN: exponent continuation bits [excluding sNaN selector] -ddcan213 add 0 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan214 add #7c40ff3fcff3fcff 0 -> #7c00ff3fcff3fcff --- sNaN: declets in payload -ddcan215 add 0 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan216 add #7e00ffffcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation --- sNaN: exponent continuation bits [excluding sNaN selector] -ddcan217 add 0 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan218 add #7e80ff3fcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation --- Inf: exponent continuation bits -ddcan220 add 0 #7880000000000000 -> #7800000000000000 -ddcan221 add #7880000000000000 0 -> #7800000000000000 --- Inf: coefficient continuation bits -ddcan222 add 0 #7802000000000000 -> #7800000000000000 -ddcan223 add #7802000000000000 0 -> #7800000000000000 -ddcan224 add 0 #7800000000000001 -> #7800000000000000 -ddcan225 add #7800000000000001 0 -> #7800000000000000 -ddcan226 add 0 #7800002000000000 -> #7800000000000000 -ddcan227 add #7800002000000000 0 -> #7800000000000000 - ------ Class: [does not return encoded] - ------ Compare: -ddcan231 compare -Inf 1 -> #a238000000000001 -ddcan232 compare -Inf -Inf -> #2238000000000000 -ddcan233 compare 1 -Inf -> #2238000000000001 -ddcan234 compare #7c00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff -ddcan235 compare #7e00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation - ------ CompareSig: -ddcan241 comparesig -Inf 1 -> #a238000000000001 -ddcan242 comparesig -Inf -Inf -> #2238000000000000 -ddcan243 comparesig 1 -Inf -> #2238000000000001 -ddcan244 comparesig #7c00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation -ddcan245 comparesig #7e00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation - ------ Copy: [does not usually canonicalize] --- finites -ddcan250 copy #77ffff3fcff3fcff -> #77ffff3fcff3fcff -ddcan251 copy #77fcff3fdff3fcff -> #77fcff3fdff3fcff --- NaNs -ddcan252 copy #7c03ff3fcff3fcff -> #7c03ff3fcff3fcff -ddcan253 copy #7c00ff3fcff3ffff -> #7c00ff3fcff3ffff -ddcan254 copy #7d00ff3fcff3fcff -> #7d00ff3fcff3fcff -ddcan255 copy #7c04ff3fcff3fcff -> #7c04ff3fcff3fcff --- sNaN -ddcan256 copy #7e00ff3fcffffcff -> #7e00ff3fcffffcff -ddcan257 copy #7e40ff3fcff3fcff -> #7e40ff3fcff3fcff --- Inf -ddcan258 copy #7a00000000000000 -> #7a00000000000000 -ddcan259 copy #7800200000000000 -> #7800200000000000 - ------ CopyAbs: [does not usually canonicalize] --- finites -ddcan260 copyabs #f7ffff3fcff3fcff -> #77ffff3fcff3fcff -ddcan261 copyabs #f7fcff3fdff3fcff -> #77fcff3fdff3fcff --- NaNs -ddcan262 copyabs #fc03ff3fcff3fcff -> #7c03ff3fcff3fcff -ddcan263 copyabs #fc00ff3fcff3ffff -> #7c00ff3fcff3ffff -ddcan264 copyabs #fd00ff3fcff3fcff -> #7d00ff3fcff3fcff -ddcan265 copyabs #fc04ff3fcff3fcff -> #7c04ff3fcff3fcff --- sNaN -ddcan266 copyabs #fe00ff3fcffffcff -> #7e00ff3fcffffcff -ddcan267 copyabs #fe40ff3fcff3fcff -> #7e40ff3fcff3fcff --- Inf -ddcan268 copyabs #fa00000000000000 -> #7a00000000000000 -ddcan269 copyabs #f800200000000000 -> #7800200000000000 - ------ CopyNegate: [does not usually canonicalize] --- finites -ddcan270 copynegate #77ffff3fcff3fcff -> #f7ffff3fcff3fcff -ddcan271 copynegate #77fcff3fdff3fcff -> #f7fcff3fdff3fcff --- NaNs -ddcan272 copynegate #7c03ff3fcff3fcff -> #fc03ff3fcff3fcff -ddcan273 copynegate #7c00ff3fcff3ffff -> #fc00ff3fcff3ffff -ddcan274 copynegate #7d00ff3fcff3fcff -> #fd00ff3fcff3fcff -ddcan275 copynegate #7c04ff3fcff3fcff -> #fc04ff3fcff3fcff --- sNaN -ddcan276 copynegate #7e00ff3fcffffcff -> #fe00ff3fcffffcff -ddcan277 copynegate #7e40ff3fcff3fcff -> #fe40ff3fcff3fcff --- Inf -ddcan278 copynegate #7a00000000000000 -> #fa00000000000000 -ddcan279 copynegate #7800200000000000 -> #f800200000000000 - ------ CopySign: [does not usually canonicalize] --- finites -ddcan280 copysign #77ffff3fcff3fcff -1 -> #f7ffff3fcff3fcff -ddcan281 copysign #77fcff3fdff3fcff 1 -> #77fcff3fdff3fcff --- NaNs -ddcan282 copysign #7c03ff3fcff3fcff -1 -> #fc03ff3fcff3fcff -ddcan283 copysign #7c00ff3fcff3ffff 1 -> #7c00ff3fcff3ffff -ddcan284 copysign #7d00ff3fcff3fcff -1 -> #fd00ff3fcff3fcff -ddcan285 copysign #7c04ff3fcff3fcff 1 -> #7c04ff3fcff3fcff --- sNaN -ddcan286 copysign #7e00ff3fcffffcff -1 -> #fe00ff3fcffffcff -ddcan287 copysign #7e40ff3fcff3fcff 1 -> #7e40ff3fcff3fcff --- Inf -ddcan288 copysign #7a00000000000000 -1 -> #fa00000000000000 -ddcan289 copysign #7800200000000000 1 -> #7800200000000000 - ------ Multiply: --- Finites: neutral 0 -ddcan302 multiply 1 #77ffff3fcff3fcff -> #77fcff3fcff3fcff -ddcan303 multiply #77fcffffcff3fcff 1 -> #77fcff3fcff3fcff --- negative -ddcan306 multiply -1 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff -ddcan307 multiply #77fcffffcff3fcff -1 -> #f7fcff3fcff3fcff --- NaN: declets in payload -ddcan311 multiply 1 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan312 multiply #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff --- NaN: exponent continuation bits [excluding sNaN selector] -ddcan313 multiply 1 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan314 multiply #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff --- sNaN: declets in payload -ddcan315 multiply 1 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan316 multiply #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation --- sNaN: exponent continuation bits [excluding sNaN selector] -ddcan317 multiply 1 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan318 multiply #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation --- Inf: exponent continuation bits -ddcan320 multiply 1 #7880000000000000 -> #7800000000000000 -ddcan321 multiply #7880000000000000 1 -> #7800000000000000 --- Inf: coefficient continuation bits -ddcan322 multiply 1 #7802000000000000 -> #7800000000000000 -ddcan323 multiply #7802000000000000 1 -> #7800000000000000 -ddcan324 multiply 1 #7800000000000001 -> #7800000000000000 -ddcan325 multiply #7800000000000001 1 -> #7800000000000000 -ddcan326 multiply 1 #7800002000000000 -> #7800000000000000 -ddcan327 multiply #7800002000000000 1 -> #7800000000000000 - ------ Quantize: -ddcan401 quantize #6e38ff3ffff3fcff 1 -> #6e38ff3fcff3fcff -ddcan402 quantize #6e38ff3fcff3fdff 0 -> #6e38ff3fcff3fcff -ddcan403 quantize #7880000000000000 Inf -> #7800000000000000 -ddcan404 quantize #7802000000000000 -Inf -> #7800000000000000 -ddcan410 quantize #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff -ddcan411 quantize #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff -ddcan412 quantize #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff -ddcan413 quantize #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff -ddcan414 quantize #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation -ddcan415 quantize #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation -ddcan416 quantize #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation -ddcan417 quantize #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation - ------ Subtract: --- Finites: neutral 0 -ddcan502 subtract 0E+384 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff -ddcan503 subtract #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff --- tiny zero -ddcan504 subtract 0E-398 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff Rounded -ddcan505 subtract #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded --- tiny non zero -ddcan506 subtract -1E-398 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff Inexact Rounded -ddcan507 subtract #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded --- NaN: declets in payload -ddcan511 subtract 0 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan512 subtract #7c03ff3fcff3fcff 0 -> #7c00ff3fcff3fcff --- NaN: exponent continuation bits [excluding sNaN selector] -ddcan513 subtract 0 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan514 subtract #7c40ff3fcff3fcff 0 -> #7c00ff3fcff3fcff --- sNaN: declets in payload -ddcan515 subtract 0 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan516 subtract #7e00ffffcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation --- sNaN: exponent continuation bits [excluding sNaN selector] -ddcan517 subtract 0 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan518 subtract #7e80ff3fcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation --- Inf: exponent continuation bits -ddcan520 subtract 0 #7880000000000000 -> #f800000000000000 -ddcan521 subtract #7880000000000000 0 -> #7800000000000000 --- Inf: coefficient continuation bits -ddcan522 subtract 0 #7802000000000000 -> #f800000000000000 -ddcan523 subtract #7802000000000000 0 -> #7800000000000000 -ddcan524 subtract 0 #7800000000000001 -> #f800000000000000 -ddcan525 subtract #7800000000000001 0 -> #7800000000000000 -ddcan526 subtract 0 #7800002000000000 -> #f800000000000000 -ddcan527 subtract #7800002000000000 0 -> #7800000000000000 - ------ ToIntegral: -ddcan601 tointegralx #6e38ff3ffff3fcff -> #6e38ff3fcff3fcff -ddcan602 tointegralx #6e38ff3fcff3fdff -> #6e38ff3fcff3fcff -ddcan603 tointegralx #7880000000000000 -> #7800000000000000 -ddcan604 tointegralx #7802000000000000 -> #7800000000000000 -ddcan610 tointegralx #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan611 tointegralx #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan612 tointegralx #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan613 tointegralx #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff -ddcan614 tointegralx #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan615 tointegralx #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan616 tointegralx #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation -ddcan617 tointegralx #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation --- uncanonical 3999, 39.99, 3.99, 0.399, and negatives -ddcan618 tointegralx #2238000000000fff -> #2238000000000cff -ddcan619 tointegralx #2230000000000fff -> #2238000000000040 Inexact Rounded -ddcan620 tointegralx #222c000000000fff -> #2238000000000004 Inexact Rounded -ddcan621 tointegralx #2228000000000fff -> #2238000000000000 Inexact Rounded -ddcan622 tointegralx #a238000000000fff -> #a238000000000cff -ddcan623 tointegralx #a230000000000fff -> #a238000000000040 Inexact Rounded -ddcan624 tointegralx #a22c000000000fff -> #a238000000000004 Inexact Rounded -ddcan625 tointegralx #a228000000000fff -> #a238000000000000 Inexact Rounded - - - +------------------------------------------------------------------------ +-- ddCanonical.decTest -- test decDouble canonical results -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This file tests that copy operations leave uncanonical operands +-- unchanged, and vice versa +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Uncanonical declets are: abc, where: +-- a=1,2,3 +-- b=6,7,e,f +-- c=e,f + +-- assert some standard (canonical) values; this tests that FromString +-- produces canonical results (many more in decimalNN) +ddcan001 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff +ddcan002 apply 0 -> #2238000000000000 +ddcan003 apply 1 -> #2238000000000001 +ddcan004 apply -1 -> #a238000000000001 +ddcan005 apply Infinity -> #7800000000000000 +ddcan006 apply -Infinity -> #f800000000000000 +ddcan007 apply -NaN -> #fc00000000000000 +ddcan008 apply -sNaN -> #fe00000000000000 +ddcan009 apply NaN999999999999999 -> #7c00ff3fcff3fcff +ddcan010 apply sNaN999999999999999 -> #7e00ff3fcff3fcff +decan011 apply 9999999999999999 -> #6e38ff3fcff3fcff +ddcan012 apply 7.50 -> #22300000000003d0 +ddcan013 apply 9.99 -> #22300000000000ff + +-- Base tests for canonical encodings (individual operator +-- propagation is tested later) + +-- Finites: declets in coefficient +ddcan021 canonical #77fcff3fcff3fcff -> #77fcff3fcff3fcff +ddcan022 canonical #77fcff3fcff3fcff -> #77fcff3fcff3fcff +ddcan023 canonical #77ffff3fcff3fcff -> #77fcff3fcff3fcff +ddcan024 canonical #77ffff3fcff3fcff -> #77fcff3fcff3fcff +ddcan025 canonical #77fcffffcff3fcff -> #77fcff3fcff3fcff +ddcan026 canonical #77fcffffcff3fcff -> #77fcff3fcff3fcff +ddcan027 canonical #77fcff3ffff3fcff -> #77fcff3fcff3fcff +ddcan028 canonical #77fcff3ffff3fcff -> #77fcff3fcff3fcff +ddcan030 canonical #77fcff3fcffffcff -> #77fcff3fcff3fcff +ddcan031 canonical #77fcff3fcffffcff -> #77fcff3fcff3fcff +ddcan032 canonical #77fcff3fcff3ffff -> #77fcff3fcff3fcff +ddcan033 canonical #77fcff3fcff3ffff -> #77fcff3fcff3fcff +ddcan035 canonical #77fcff3fdff3fcff -> #77fcff3fcff3fcff +ddcan036 canonical #77fcff3feff3fcff -> #77fcff3fcff3fcff + +-- NaN: declets in payload +ddcan100 canonical NaN999999999999999 -> #7c00ff3fcff3fcff +ddcan101 canonical #7c00ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan102 canonical #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan103 canonical #7c00ffffcff3fcff -> #7c00ff3fcff3fcff +ddcan104 canonical #7c00ff3ffff3fcff -> #7c00ff3fcff3fcff +ddcan105 canonical #7c00ff3fcffffcff -> #7c00ff3fcff3fcff +ddcan106 canonical #7c00ff3fcff3ffff -> #7c00ff3fcff3fcff +ddcan107 canonical #7c00ff3fcff3ffff -> #7c00ff3fcff3fcff +-- NaN: exponent continuation bits [excluding sNaN selector] +ddcan110 canonical #7c00ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan112 canonical #7d00ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan113 canonical #7c80ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan114 canonical #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan115 canonical #7c20ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan116 canonical #7c10ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan117 canonical #7c08ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan118 canonical #7c04ff3fcff3fcff -> #7c00ff3fcff3fcff + +-- sNaN: declets in payload +ddcan120 canonical sNaN999999999999999 -> #7e00ff3fcff3fcff +ddcan121 canonical #7e00ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan122 canonical #7e03ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan123 canonical #7e00ffffcff3fcff -> #7e00ff3fcff3fcff +ddcan124 canonical #7e00ff3ffff3fcff -> #7e00ff3fcff3fcff +ddcan125 canonical #7e00ff3fcffffcff -> #7e00ff3fcff3fcff +ddcan126 canonical #7e00ff3fcff3ffff -> #7e00ff3fcff3fcff +ddcan127 canonical #7e00ff3fcff3ffff -> #7e00ff3fcff3fcff +-- sNaN: exponent continuation bits [excluding sNaN selector] +ddcan130 canonical #7e00ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan132 canonical #7f00ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan133 canonical #7e80ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan134 canonical #7e40ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan135 canonical #7e20ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan136 canonical #7e10ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan137 canonical #7e08ff3fcff3fcff -> #7e00ff3fcff3fcff +ddcan138 canonical #7e04ff3fcff3fcff -> #7e00ff3fcff3fcff + +-- Inf: exponent continuation bits +ddcan140 canonical #7800000000000000 -> #7800000000000000 +ddcan141 canonical #7900000000000000 -> #7800000000000000 +ddcan142 canonical #7a00000000000000 -> #7800000000000000 +ddcan143 canonical #7880000000000000 -> #7800000000000000 +ddcan144 canonical #7840000000000000 -> #7800000000000000 +ddcan145 canonical #7820000000000000 -> #7800000000000000 +ddcan146 canonical #7810000000000000 -> #7800000000000000 +ddcan147 canonical #7808000000000000 -> #7800000000000000 +ddcan148 canonical #7804000000000000 -> #7800000000000000 + +-- Inf: coefficient continuation bits (first, last, and a few others) +ddcan150 canonical #7800000000000000 -> #7800000000000000 +ddcan151 canonical #7802000000000000 -> #7800000000000000 +ddcan152 canonical #7800000000000001 -> #7800000000000000 +ddcan153 canonical #7801000000000000 -> #7800000000000000 +ddcan154 canonical #7800200000000000 -> #7800000000000000 +ddcan155 canonical #7800080000000000 -> #7800000000000000 +ddcan156 canonical #7800002000000000 -> #7800000000000000 +ddcan157 canonical #7800000400000000 -> #7800000000000000 +ddcan158 canonical #7800000040000000 -> #7800000000000000 +ddcan159 canonical #7800000008000000 -> #7800000000000000 +ddcan160 canonical #7800000000400000 -> #7800000000000000 +ddcan161 canonical #7800000000020000 -> #7800000000000000 +ddcan162 canonical #7800000000008000 -> #7800000000000000 +ddcan163 canonical #7800000000000200 -> #7800000000000000 +ddcan164 canonical #7800000000000040 -> #7800000000000000 +ddcan165 canonical #7800000000000008 -> #7800000000000000 + + +-- Now the operators -- trying to check paths that might fail to +-- canonicalize propagated operands + +----- Add: +-- Finites: neutral 0 +ddcan202 add 0E+384 #77ffff3fcff3fcff -> #77fcff3fcff3fcff +ddcan203 add #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff +-- tiny zero +ddcan204 add 0E-398 #77ffff3fcff3fcff -> #77fcff3fcff3fcff Rounded +ddcan205 add #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded +-- tiny non zero +ddcan206 add -1E-398 #77ffff3fcff3fcff -> #77fcff3fcff3fcff Inexact Rounded +ddcan207 add #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded +-- NaN: declets in payload +ddcan211 add 0 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan212 add #7c03ff3fcff3fcff 0 -> #7c00ff3fcff3fcff +-- NaN: exponent continuation bits [excluding sNaN selector] +ddcan213 add 0 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan214 add #7c40ff3fcff3fcff 0 -> #7c00ff3fcff3fcff +-- sNaN: declets in payload +ddcan215 add 0 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan216 add #7e00ffffcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation +-- sNaN: exponent continuation bits [excluding sNaN selector] +ddcan217 add 0 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan218 add #7e80ff3fcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation +-- Inf: exponent continuation bits +ddcan220 add 0 #7880000000000000 -> #7800000000000000 +ddcan221 add #7880000000000000 0 -> #7800000000000000 +-- Inf: coefficient continuation bits +ddcan222 add 0 #7802000000000000 -> #7800000000000000 +ddcan223 add #7802000000000000 0 -> #7800000000000000 +ddcan224 add 0 #7800000000000001 -> #7800000000000000 +ddcan225 add #7800000000000001 0 -> #7800000000000000 +ddcan226 add 0 #7800002000000000 -> #7800000000000000 +ddcan227 add #7800002000000000 0 -> #7800000000000000 + +----- Class: [does not return encoded] + +----- Compare: +ddcan231 compare -Inf 1 -> #a238000000000001 +ddcan232 compare -Inf -Inf -> #2238000000000000 +ddcan233 compare 1 -Inf -> #2238000000000001 +ddcan234 compare #7c00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff +ddcan235 compare #7e00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation + +----- CompareSig: +ddcan241 comparesig -Inf 1 -> #a238000000000001 +ddcan242 comparesig -Inf -Inf -> #2238000000000000 +ddcan243 comparesig 1 -Inf -> #2238000000000001 +ddcan244 comparesig #7c00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation +ddcan245 comparesig #7e00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation + +----- Copy: [does not usually canonicalize] +-- finites +ddcan250 copy #77ffff3fcff3fcff -> #77ffff3fcff3fcff +ddcan251 copy #77fcff3fdff3fcff -> #77fcff3fdff3fcff +-- NaNs +ddcan252 copy #7c03ff3fcff3fcff -> #7c03ff3fcff3fcff +ddcan253 copy #7c00ff3fcff3ffff -> #7c00ff3fcff3ffff +ddcan254 copy #7d00ff3fcff3fcff -> #7d00ff3fcff3fcff +ddcan255 copy #7c04ff3fcff3fcff -> #7c04ff3fcff3fcff +-- sNaN +ddcan256 copy #7e00ff3fcffffcff -> #7e00ff3fcffffcff +ddcan257 copy #7e40ff3fcff3fcff -> #7e40ff3fcff3fcff +-- Inf +ddcan258 copy #7a00000000000000 -> #7a00000000000000 +ddcan259 copy #7800200000000000 -> #7800200000000000 + +----- CopyAbs: [does not usually canonicalize] +-- finites +ddcan260 copyabs #f7ffff3fcff3fcff -> #77ffff3fcff3fcff +ddcan261 copyabs #f7fcff3fdff3fcff -> #77fcff3fdff3fcff +-- NaNs +ddcan262 copyabs #fc03ff3fcff3fcff -> #7c03ff3fcff3fcff +ddcan263 copyabs #fc00ff3fcff3ffff -> #7c00ff3fcff3ffff +ddcan264 copyabs #fd00ff3fcff3fcff -> #7d00ff3fcff3fcff +ddcan265 copyabs #fc04ff3fcff3fcff -> #7c04ff3fcff3fcff +-- sNaN +ddcan266 copyabs #fe00ff3fcffffcff -> #7e00ff3fcffffcff +ddcan267 copyabs #fe40ff3fcff3fcff -> #7e40ff3fcff3fcff +-- Inf +ddcan268 copyabs #fa00000000000000 -> #7a00000000000000 +ddcan269 copyabs #f800200000000000 -> #7800200000000000 + +----- CopyNegate: [does not usually canonicalize] +-- finites +ddcan270 copynegate #77ffff3fcff3fcff -> #f7ffff3fcff3fcff +ddcan271 copynegate #77fcff3fdff3fcff -> #f7fcff3fdff3fcff +-- NaNs +ddcan272 copynegate #7c03ff3fcff3fcff -> #fc03ff3fcff3fcff +ddcan273 copynegate #7c00ff3fcff3ffff -> #fc00ff3fcff3ffff +ddcan274 copynegate #7d00ff3fcff3fcff -> #fd00ff3fcff3fcff +ddcan275 copynegate #7c04ff3fcff3fcff -> #fc04ff3fcff3fcff +-- sNaN +ddcan276 copynegate #7e00ff3fcffffcff -> #fe00ff3fcffffcff +ddcan277 copynegate #7e40ff3fcff3fcff -> #fe40ff3fcff3fcff +-- Inf +ddcan278 copynegate #7a00000000000000 -> #fa00000000000000 +ddcan279 copynegate #7800200000000000 -> #f800200000000000 + +----- CopySign: [does not usually canonicalize] +-- finites +ddcan280 copysign #77ffff3fcff3fcff -1 -> #f7ffff3fcff3fcff +ddcan281 copysign #77fcff3fdff3fcff 1 -> #77fcff3fdff3fcff +-- NaNs +ddcan282 copysign #7c03ff3fcff3fcff -1 -> #fc03ff3fcff3fcff +ddcan283 copysign #7c00ff3fcff3ffff 1 -> #7c00ff3fcff3ffff +ddcan284 copysign #7d00ff3fcff3fcff -1 -> #fd00ff3fcff3fcff +ddcan285 copysign #7c04ff3fcff3fcff 1 -> #7c04ff3fcff3fcff +-- sNaN +ddcan286 copysign #7e00ff3fcffffcff -1 -> #fe00ff3fcffffcff +ddcan287 copysign #7e40ff3fcff3fcff 1 -> #7e40ff3fcff3fcff +-- Inf +ddcan288 copysign #7a00000000000000 -1 -> #fa00000000000000 +ddcan289 copysign #7800200000000000 1 -> #7800200000000000 + +----- Multiply: +-- Finites: neutral 0 +ddcan302 multiply 1 #77ffff3fcff3fcff -> #77fcff3fcff3fcff +ddcan303 multiply #77fcffffcff3fcff 1 -> #77fcff3fcff3fcff +-- negative +ddcan306 multiply -1 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff +ddcan307 multiply #77fcffffcff3fcff -1 -> #f7fcff3fcff3fcff +-- NaN: declets in payload +ddcan311 multiply 1 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan312 multiply #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff +-- NaN: exponent continuation bits [excluding sNaN selector] +ddcan313 multiply 1 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan314 multiply #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff +-- sNaN: declets in payload +ddcan315 multiply 1 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan316 multiply #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation +-- sNaN: exponent continuation bits [excluding sNaN selector] +ddcan317 multiply 1 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan318 multiply #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation +-- Inf: exponent continuation bits +ddcan320 multiply 1 #7880000000000000 -> #7800000000000000 +ddcan321 multiply #7880000000000000 1 -> #7800000000000000 +-- Inf: coefficient continuation bits +ddcan322 multiply 1 #7802000000000000 -> #7800000000000000 +ddcan323 multiply #7802000000000000 1 -> #7800000000000000 +ddcan324 multiply 1 #7800000000000001 -> #7800000000000000 +ddcan325 multiply #7800000000000001 1 -> #7800000000000000 +ddcan326 multiply 1 #7800002000000000 -> #7800000000000000 +ddcan327 multiply #7800002000000000 1 -> #7800000000000000 + +----- Quantize: +ddcan401 quantize #6e38ff3ffff3fcff 1 -> #6e38ff3fcff3fcff +ddcan402 quantize #6e38ff3fcff3fdff 0 -> #6e38ff3fcff3fcff +ddcan403 quantize #7880000000000000 Inf -> #7800000000000000 +ddcan404 quantize #7802000000000000 -Inf -> #7800000000000000 +ddcan410 quantize #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff +ddcan411 quantize #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff +ddcan412 quantize #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff +ddcan413 quantize #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff +ddcan414 quantize #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation +ddcan415 quantize #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation +ddcan416 quantize #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation +ddcan417 quantize #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation + +----- Subtract: +-- Finites: neutral 0 +ddcan502 subtract 0E+384 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff +ddcan503 subtract #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff +-- tiny zero +ddcan504 subtract 0E-398 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff Rounded +ddcan505 subtract #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded +-- tiny non zero +ddcan506 subtract -1E-398 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff Inexact Rounded +ddcan507 subtract #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded +-- NaN: declets in payload +ddcan511 subtract 0 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan512 subtract #7c03ff3fcff3fcff 0 -> #7c00ff3fcff3fcff +-- NaN: exponent continuation bits [excluding sNaN selector] +ddcan513 subtract 0 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan514 subtract #7c40ff3fcff3fcff 0 -> #7c00ff3fcff3fcff +-- sNaN: declets in payload +ddcan515 subtract 0 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan516 subtract #7e00ffffcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation +-- sNaN: exponent continuation bits [excluding sNaN selector] +ddcan517 subtract 0 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan518 subtract #7e80ff3fcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation +-- Inf: exponent continuation bits +ddcan520 subtract 0 #7880000000000000 -> #f800000000000000 +ddcan521 subtract #7880000000000000 0 -> #7800000000000000 +-- Inf: coefficient continuation bits +ddcan522 subtract 0 #7802000000000000 -> #f800000000000000 +ddcan523 subtract #7802000000000000 0 -> #7800000000000000 +ddcan524 subtract 0 #7800000000000001 -> #f800000000000000 +ddcan525 subtract #7800000000000001 0 -> #7800000000000000 +ddcan526 subtract 0 #7800002000000000 -> #f800000000000000 +ddcan527 subtract #7800002000000000 0 -> #7800000000000000 + +----- ToIntegral: +ddcan601 tointegralx #6e38ff3ffff3fcff -> #6e38ff3fcff3fcff +ddcan602 tointegralx #6e38ff3fcff3fdff -> #6e38ff3fcff3fcff +ddcan603 tointegralx #7880000000000000 -> #7800000000000000 +ddcan604 tointegralx #7802000000000000 -> #7800000000000000 +ddcan610 tointegralx #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan611 tointegralx #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan612 tointegralx #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan613 tointegralx #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff +ddcan614 tointegralx #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan615 tointegralx #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan616 tointegralx #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +ddcan617 tointegralx #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation +-- uncanonical 3999, 39.99, 3.99, 0.399, and negatives +ddcan618 tointegralx #2238000000000fff -> #2238000000000cff +ddcan619 tointegralx #2230000000000fff -> #2238000000000040 Inexact Rounded +ddcan620 tointegralx #222c000000000fff -> #2238000000000004 Inexact Rounded +ddcan621 tointegralx #2228000000000fff -> #2238000000000000 Inexact Rounded +ddcan622 tointegralx #a238000000000fff -> #a238000000000cff +ddcan623 tointegralx #a230000000000fff -> #a238000000000040 Inexact Rounded +ddcan624 tointegralx #a22c000000000fff -> #a238000000000004 Inexact Rounded +ddcan625 tointegralx #a228000000000fff -> #a238000000000000 Inexact Rounded + + + diff --git a/Lib/test/decimaltestdata/ddClass.decTest b/Lib/test/decimaltestdata/ddClass.decTest index a1d233b..bb34c42 100644 --- a/Lib/test/decimaltestdata/ddClass.decTest +++ b/Lib/test/decimaltestdata/ddClass.decTest @@ -1,76 +1,76 @@ ------------------------------------------------------------------------- --- ddClass.decTest -- decDouble Class operations -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- [New 2006.11.27] -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -ddcla001 class 0 -> +Zero -ddcla002 class 0.00 -> +Zero -ddcla003 class 0E+5 -> +Zero -ddcla004 class 1E-396 -> +Subnormal -ddcla005 class 0.1E-383 -> +Subnormal -ddcla006 class 0.999999999999999E-383 -> +Subnormal -ddcla007 class 1.000000000000000E-383 -> +Normal -ddcla008 class 1E-383 -> +Normal -ddcla009 class 1E-100 -> +Normal -ddcla010 class 1E-10 -> +Normal -ddcla012 class 1E-1 -> +Normal -ddcla013 class 1 -> +Normal -ddcla014 class 2.50 -> +Normal -ddcla015 class 100.100 -> +Normal -ddcla016 class 1E+30 -> +Normal -ddcla017 class 1E+384 -> +Normal -ddcla018 class 9.999999999999999E+384 -> +Normal -ddcla019 class Inf -> +Infinity - -ddcla021 class -0 -> -Zero -ddcla022 class -0.00 -> -Zero -ddcla023 class -0E+5 -> -Zero -ddcla024 class -1E-396 -> -Subnormal -ddcla025 class -0.1E-383 -> -Subnormal -ddcla026 class -0.999999999999999E-383 -> -Subnormal -ddcla027 class -1.000000000000000E-383 -> -Normal -ddcla028 class -1E-383 -> -Normal -ddcla029 class -1E-100 -> -Normal -ddcla030 class -1E-10 -> -Normal -ddcla032 class -1E-1 -> -Normal -ddcla033 class -1 -> -Normal -ddcla034 class -2.50 -> -Normal -ddcla035 class -100.100 -> -Normal -ddcla036 class -1E+30 -> -Normal -ddcla037 class -1E+384 -> -Normal -ddcla038 class -9.999999999999999E+384 -> -Normal -ddcla039 class -Inf -> -Infinity - -ddcla041 class NaN -> NaN -ddcla042 class -NaN -> NaN -ddcla043 class +NaN12345 -> NaN -ddcla044 class sNaN -> sNaN -ddcla045 class -sNaN -> sNaN -ddcla046 class +sNaN12345 -> sNaN - - - +------------------------------------------------------------------------ +-- ddClass.decTest -- decDouble Class operations -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- [New 2006.11.27] +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +ddcla001 class 0 -> +Zero +ddcla002 class 0.00 -> +Zero +ddcla003 class 0E+5 -> +Zero +ddcla004 class 1E-396 -> +Subnormal +ddcla005 class 0.1E-383 -> +Subnormal +ddcla006 class 0.999999999999999E-383 -> +Subnormal +ddcla007 class 1.000000000000000E-383 -> +Normal +ddcla008 class 1E-383 -> +Normal +ddcla009 class 1E-100 -> +Normal +ddcla010 class 1E-10 -> +Normal +ddcla012 class 1E-1 -> +Normal +ddcla013 class 1 -> +Normal +ddcla014 class 2.50 -> +Normal +ddcla015 class 100.100 -> +Normal +ddcla016 class 1E+30 -> +Normal +ddcla017 class 1E+384 -> +Normal +ddcla018 class 9.999999999999999E+384 -> +Normal +ddcla019 class Inf -> +Infinity + +ddcla021 class -0 -> -Zero +ddcla022 class -0.00 -> -Zero +ddcla023 class -0E+5 -> -Zero +ddcla024 class -1E-396 -> -Subnormal +ddcla025 class -0.1E-383 -> -Subnormal +ddcla026 class -0.999999999999999E-383 -> -Subnormal +ddcla027 class -1.000000000000000E-383 -> -Normal +ddcla028 class -1E-383 -> -Normal +ddcla029 class -1E-100 -> -Normal +ddcla030 class -1E-10 -> -Normal +ddcla032 class -1E-1 -> -Normal +ddcla033 class -1 -> -Normal +ddcla034 class -2.50 -> -Normal +ddcla035 class -100.100 -> -Normal +ddcla036 class -1E+30 -> -Normal +ddcla037 class -1E+384 -> -Normal +ddcla038 class -9.999999999999999E+384 -> -Normal +ddcla039 class -Inf -> -Infinity + +ddcla041 class NaN -> NaN +ddcla042 class -NaN -> NaN +ddcla043 class +NaN12345 -> NaN +ddcla044 class sNaN -> sNaN +ddcla045 class -sNaN -> sNaN +ddcla046 class +sNaN12345 -> sNaN + + + diff --git a/Lib/test/decimaltestdata/ddCompare.decTest b/Lib/test/decimaltestdata/ddCompare.decTest index a20ae21..6debfc7 100644 --- a/Lib/test/decimaltestdata/ddCompare.decTest +++ b/Lib/test/decimaltestdata/ddCompare.decTest @@ -1,744 +1,744 @@ ------------------------------------------------------------------------- --- ddCompare.decTest -- decDouble comparison that allows quiet NaNs -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddcom001 compare -2 -2 -> 0 -ddcom002 compare -2 -1 -> -1 -ddcom003 compare -2 0 -> -1 -ddcom004 compare -2 1 -> -1 -ddcom005 compare -2 2 -> -1 -ddcom006 compare -1 -2 -> 1 -ddcom007 compare -1 -1 -> 0 -ddcom008 compare -1 0 -> -1 -ddcom009 compare -1 1 -> -1 -ddcom010 compare -1 2 -> -1 -ddcom011 compare 0 -2 -> 1 -ddcom012 compare 0 -1 -> 1 -ddcom013 compare 0 0 -> 0 -ddcom014 compare 0 1 -> -1 -ddcom015 compare 0 2 -> -1 -ddcom016 compare 1 -2 -> 1 -ddcom017 compare 1 -1 -> 1 -ddcom018 compare 1 0 -> 1 -ddcom019 compare 1 1 -> 0 -ddcom020 compare 1 2 -> -1 -ddcom021 compare 2 -2 -> 1 -ddcom022 compare 2 -1 -> 1 -ddcom023 compare 2 0 -> 1 -ddcom025 compare 2 1 -> 1 -ddcom026 compare 2 2 -> 0 - -ddcom031 compare -20 -20 -> 0 -ddcom032 compare -20 -10 -> -1 -ddcom033 compare -20 00 -> -1 -ddcom034 compare -20 10 -> -1 -ddcom035 compare -20 20 -> -1 -ddcom036 compare -10 -20 -> 1 -ddcom037 compare -10 -10 -> 0 -ddcom038 compare -10 00 -> -1 -ddcom039 compare -10 10 -> -1 -ddcom040 compare -10 20 -> -1 -ddcom041 compare 00 -20 -> 1 -ddcom042 compare 00 -10 -> 1 -ddcom043 compare 00 00 -> 0 -ddcom044 compare 00 10 -> -1 -ddcom045 compare 00 20 -> -1 -ddcom046 compare 10 -20 -> 1 -ddcom047 compare 10 -10 -> 1 -ddcom048 compare 10 00 -> 1 -ddcom049 compare 10 10 -> 0 -ddcom050 compare 10 20 -> -1 -ddcom051 compare 20 -20 -> 1 -ddcom052 compare 20 -10 -> 1 -ddcom053 compare 20 00 -> 1 -ddcom055 compare 20 10 -> 1 -ddcom056 compare 20 20 -> 0 - -ddcom061 compare -2.0 -2.0 -> 0 -ddcom062 compare -2.0 -1.0 -> -1 -ddcom063 compare -2.0 0.0 -> -1 -ddcom064 compare -2.0 1.0 -> -1 -ddcom065 compare -2.0 2.0 -> -1 -ddcom066 compare -1.0 -2.0 -> 1 -ddcom067 compare -1.0 -1.0 -> 0 -ddcom068 compare -1.0 0.0 -> -1 -ddcom069 compare -1.0 1.0 -> -1 -ddcom070 compare -1.0 2.0 -> -1 -ddcom071 compare 0.0 -2.0 -> 1 -ddcom072 compare 0.0 -1.0 -> 1 -ddcom073 compare 0.0 0.0 -> 0 -ddcom074 compare 0.0 1.0 -> -1 -ddcom075 compare 0.0 2.0 -> -1 -ddcom076 compare 1.0 -2.0 -> 1 -ddcom077 compare 1.0 -1.0 -> 1 -ddcom078 compare 1.0 0.0 -> 1 -ddcom079 compare 1.0 1.0 -> 0 -ddcom080 compare 1.0 2.0 -> -1 -ddcom081 compare 2.0 -2.0 -> 1 -ddcom082 compare 2.0 -1.0 -> 1 -ddcom083 compare 2.0 0.0 -> 1 -ddcom085 compare 2.0 1.0 -> 1 -ddcom086 compare 2.0 2.0 -> 0 -ddcom087 compare 1.0 0.1 -> 1 -ddcom088 compare 0.1 1.0 -> -1 - --- now some cases which might overflow if subtract were used -ddcom095 compare 9.999999999999999E+384 9.999999999999999E+384 -> 0 -ddcom096 compare -9.999999999999999E+384 9.999999999999999E+384 -> -1 -ddcom097 compare 9.999999999999999E+384 -9.999999999999999E+384 -> 1 -ddcom098 compare -9.999999999999999E+384 -9.999999999999999E+384 -> 0 - --- some differing length/exponent cases -ddcom100 compare 7.0 7.0 -> 0 -ddcom101 compare 7.0 7 -> 0 -ddcom102 compare 7 7.0 -> 0 -ddcom103 compare 7E+0 7.0 -> 0 -ddcom104 compare 70E-1 7.0 -> 0 -ddcom105 compare 0.7E+1 7 -> 0 -ddcom106 compare 70E-1 7 -> 0 -ddcom107 compare 7.0 7E+0 -> 0 -ddcom108 compare 7.0 70E-1 -> 0 -ddcom109 compare 7 0.7E+1 -> 0 -ddcom110 compare 7 70E-1 -> 0 - -ddcom120 compare 8.0 7.0 -> 1 -ddcom121 compare 8.0 7 -> 1 -ddcom122 compare 8 7.0 -> 1 -ddcom123 compare 8E+0 7.0 -> 1 -ddcom124 compare 80E-1 7.0 -> 1 -ddcom125 compare 0.8E+1 7 -> 1 -ddcom126 compare 80E-1 7 -> 1 -ddcom127 compare 8.0 7E+0 -> 1 -ddcom128 compare 8.0 70E-1 -> 1 -ddcom129 compare 8 0.7E+1 -> 1 -ddcom130 compare 8 70E-1 -> 1 - -ddcom140 compare 8.0 9.0 -> -1 -ddcom141 compare 8.0 9 -> -1 -ddcom142 compare 8 9.0 -> -1 -ddcom143 compare 8E+0 9.0 -> -1 -ddcom144 compare 80E-1 9.0 -> -1 -ddcom145 compare 0.8E+1 9 -> -1 -ddcom146 compare 80E-1 9 -> -1 -ddcom147 compare 8.0 9E+0 -> -1 -ddcom148 compare 8.0 90E-1 -> -1 -ddcom149 compare 8 0.9E+1 -> -1 -ddcom150 compare 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -ddcom200 compare -7.0 7.0 -> -1 -ddcom201 compare -7.0 7 -> -1 -ddcom202 compare -7 7.0 -> -1 -ddcom203 compare -7E+0 7.0 -> -1 -ddcom204 compare -70E-1 7.0 -> -1 -ddcom205 compare -0.7E+1 7 -> -1 -ddcom206 compare -70E-1 7 -> -1 -ddcom207 compare -7.0 7E+0 -> -1 -ddcom208 compare -7.0 70E-1 -> -1 -ddcom209 compare -7 0.7E+1 -> -1 -ddcom210 compare -7 70E-1 -> -1 - -ddcom220 compare -8.0 7.0 -> -1 -ddcom221 compare -8.0 7 -> -1 -ddcom222 compare -8 7.0 -> -1 -ddcom223 compare -8E+0 7.0 -> -1 -ddcom224 compare -80E-1 7.0 -> -1 -ddcom225 compare -0.8E+1 7 -> -1 -ddcom226 compare -80E-1 7 -> -1 -ddcom227 compare -8.0 7E+0 -> -1 -ddcom228 compare -8.0 70E-1 -> -1 -ddcom229 compare -8 0.7E+1 -> -1 -ddcom230 compare -8 70E-1 -> -1 - -ddcom240 compare -8.0 9.0 -> -1 -ddcom241 compare -8.0 9 -> -1 -ddcom242 compare -8 9.0 -> -1 -ddcom243 compare -8E+0 9.0 -> -1 -ddcom244 compare -80E-1 9.0 -> -1 -ddcom245 compare -0.8E+1 9 -> -1 -ddcom246 compare -80E-1 9 -> -1 -ddcom247 compare -8.0 9E+0 -> -1 -ddcom248 compare -8.0 90E-1 -> -1 -ddcom249 compare -8 0.9E+1 -> -1 -ddcom250 compare -8 90E-1 -> -1 - --- and again, with sign changes +- .. -ddcom300 compare 7.0 -7.0 -> 1 -ddcom301 compare 7.0 -7 -> 1 -ddcom302 compare 7 -7.0 -> 1 -ddcom303 compare 7E+0 -7.0 -> 1 -ddcom304 compare 70E-1 -7.0 -> 1 -ddcom305 compare .7E+1 -7 -> 1 -ddcom306 compare 70E-1 -7 -> 1 -ddcom307 compare 7.0 -7E+0 -> 1 -ddcom308 compare 7.0 -70E-1 -> 1 -ddcom309 compare 7 -.7E+1 -> 1 -ddcom310 compare 7 -70E-1 -> 1 - -ddcom320 compare 8.0 -7.0 -> 1 -ddcom321 compare 8.0 -7 -> 1 -ddcom322 compare 8 -7.0 -> 1 -ddcom323 compare 8E+0 -7.0 -> 1 -ddcom324 compare 80E-1 -7.0 -> 1 -ddcom325 compare .8E+1 -7 -> 1 -ddcom326 compare 80E-1 -7 -> 1 -ddcom327 compare 8.0 -7E+0 -> 1 -ddcom328 compare 8.0 -70E-1 -> 1 -ddcom329 compare 8 -.7E+1 -> 1 -ddcom330 compare 8 -70E-1 -> 1 - -ddcom340 compare 8.0 -9.0 -> 1 -ddcom341 compare 8.0 -9 -> 1 -ddcom342 compare 8 -9.0 -> 1 -ddcom343 compare 8E+0 -9.0 -> 1 -ddcom344 compare 80E-1 -9.0 -> 1 -ddcom345 compare .8E+1 -9 -> 1 -ddcom346 compare 80E-1 -9 -> 1 -ddcom347 compare 8.0 -9E+0 -> 1 -ddcom348 compare 8.0 -90E-1 -> 1 -ddcom349 compare 8 -.9E+1 -> 1 -ddcom350 compare 8 -90E-1 -> 1 - --- and again, with sign changes -- .. -ddcom400 compare -7.0 -7.0 -> 0 -ddcom401 compare -7.0 -7 -> 0 -ddcom402 compare -7 -7.0 -> 0 -ddcom403 compare -7E+0 -7.0 -> 0 -ddcom404 compare -70E-1 -7.0 -> 0 -ddcom405 compare -.7E+1 -7 -> 0 -ddcom406 compare -70E-1 -7 -> 0 -ddcom407 compare -7.0 -7E+0 -> 0 -ddcom408 compare -7.0 -70E-1 -> 0 -ddcom409 compare -7 -.7E+1 -> 0 -ddcom410 compare -7 -70E-1 -> 0 - -ddcom420 compare -8.0 -7.0 -> -1 -ddcom421 compare -8.0 -7 -> -1 -ddcom422 compare -8 -7.0 -> -1 -ddcom423 compare -8E+0 -7.0 -> -1 -ddcom424 compare -80E-1 -7.0 -> -1 -ddcom425 compare -.8E+1 -7 -> -1 -ddcom426 compare -80E-1 -7 -> -1 -ddcom427 compare -8.0 -7E+0 -> -1 -ddcom428 compare -8.0 -70E-1 -> -1 -ddcom429 compare -8 -.7E+1 -> -1 -ddcom430 compare -8 -70E-1 -> -1 - -ddcom440 compare -8.0 -9.0 -> 1 -ddcom441 compare -8.0 -9 -> 1 -ddcom442 compare -8 -9.0 -> 1 -ddcom443 compare -8E+0 -9.0 -> 1 -ddcom444 compare -80E-1 -9.0 -> 1 -ddcom445 compare -.8E+1 -9 -> 1 -ddcom446 compare -80E-1 -9 -> 1 -ddcom447 compare -8.0 -9E+0 -> 1 -ddcom448 compare -8.0 -90E-1 -> 1 -ddcom449 compare -8 -.9E+1 -> 1 -ddcom450 compare -8 -90E-1 -> 1 - --- misalignment traps for little-endian -ddcom451 compare 1.0 0.1 -> 1 -ddcom452 compare 0.1 1.0 -> -1 -ddcom453 compare 10.0 0.1 -> 1 -ddcom454 compare 0.1 10.0 -> -1 -ddcom455 compare 100 1.0 -> 1 -ddcom456 compare 1.0 100 -> -1 -ddcom457 compare 1000 10.0 -> 1 -ddcom458 compare 10.0 1000 -> -1 -ddcom459 compare 10000 100.0 -> 1 -ddcom460 compare 100.0 10000 -> -1 -ddcom461 compare 100000 1000.0 -> 1 -ddcom462 compare 1000.0 100000 -> -1 -ddcom463 compare 1000000 10000.0 -> 1 -ddcom464 compare 10000.0 1000000 -> -1 - --- testcases that subtract to lots of zeros at boundaries [pgr] -ddcom473 compare 123.4560000000000E-89 123.456E-89 -> 0 -ddcom474 compare 123.456000000000E+89 123.456E+89 -> 0 -ddcom475 compare 123.45600000000E-89 123.456E-89 -> 0 -ddcom476 compare 123.4560000000E+89 123.456E+89 -> 0 -ddcom477 compare 123.456000000E-89 123.456E-89 -> 0 -ddcom478 compare 123.45600000E+89 123.456E+89 -> 0 -ddcom479 compare 123.4560000E-89 123.456E-89 -> 0 -ddcom480 compare 123.456000E+89 123.456E+89 -> 0 -ddcom481 compare 123.45600E-89 123.456E-89 -> 0 -ddcom482 compare 123.4560E+89 123.456E+89 -> 0 -ddcom483 compare 123.456E-89 123.456E-89 -> 0 -ddcom487 compare 123.456E+89 123.4560000000000E+89 -> 0 -ddcom488 compare 123.456E-89 123.456000000000E-89 -> 0 -ddcom489 compare 123.456E+89 123.45600000000E+89 -> 0 -ddcom490 compare 123.456E-89 123.4560000000E-89 -> 0 -ddcom491 compare 123.456E+89 123.456000000E+89 -> 0 -ddcom492 compare 123.456E-89 123.45600000E-89 -> 0 -ddcom493 compare 123.456E+89 123.4560000E+89 -> 0 -ddcom494 compare 123.456E-89 123.456000E-89 -> 0 -ddcom495 compare 123.456E+89 123.45600E+89 -> 0 -ddcom496 compare 123.456E-89 123.4560E-89 -> 0 -ddcom497 compare 123.456E+89 123.456E+89 -> 0 - --- wide-ranging, around precision; signs equal -ddcom500 compare 1 1E-15 -> 1 -ddcom501 compare 1 1E-14 -> 1 -ddcom502 compare 1 1E-13 -> 1 -ddcom503 compare 1 1E-12 -> 1 -ddcom504 compare 1 1E-11 -> 1 -ddcom505 compare 1 1E-10 -> 1 -ddcom506 compare 1 1E-9 -> 1 -ddcom507 compare 1 1E-8 -> 1 -ddcom508 compare 1 1E-7 -> 1 -ddcom509 compare 1 1E-6 -> 1 -ddcom510 compare 1 1E-5 -> 1 -ddcom511 compare 1 1E-4 -> 1 -ddcom512 compare 1 1E-3 -> 1 -ddcom513 compare 1 1E-2 -> 1 -ddcom514 compare 1 1E-1 -> 1 -ddcom515 compare 1 1E-0 -> 0 -ddcom516 compare 1 1E+1 -> -1 -ddcom517 compare 1 1E+2 -> -1 -ddcom518 compare 1 1E+3 -> -1 -ddcom519 compare 1 1E+4 -> -1 -ddcom521 compare 1 1E+5 -> -1 -ddcom522 compare 1 1E+6 -> -1 -ddcom523 compare 1 1E+7 -> -1 -ddcom524 compare 1 1E+8 -> -1 -ddcom525 compare 1 1E+9 -> -1 -ddcom526 compare 1 1E+10 -> -1 -ddcom527 compare 1 1E+11 -> -1 -ddcom528 compare 1 1E+12 -> -1 -ddcom529 compare 1 1E+13 -> -1 -ddcom530 compare 1 1E+14 -> -1 -ddcom531 compare 1 1E+15 -> -1 --- LR swap -ddcom540 compare 1E-15 1 -> -1 -ddcom541 compare 1E-14 1 -> -1 -ddcom542 compare 1E-13 1 -> -1 -ddcom543 compare 1E-12 1 -> -1 -ddcom544 compare 1E-11 1 -> -1 -ddcom545 compare 1E-10 1 -> -1 -ddcom546 compare 1E-9 1 -> -1 -ddcom547 compare 1E-8 1 -> -1 -ddcom548 compare 1E-7 1 -> -1 -ddcom549 compare 1E-6 1 -> -1 -ddcom550 compare 1E-5 1 -> -1 -ddcom551 compare 1E-4 1 -> -1 -ddcom552 compare 1E-3 1 -> -1 -ddcom553 compare 1E-2 1 -> -1 -ddcom554 compare 1E-1 1 -> -1 -ddcom555 compare 1E-0 1 -> 0 -ddcom556 compare 1E+1 1 -> 1 -ddcom557 compare 1E+2 1 -> 1 -ddcom558 compare 1E+3 1 -> 1 -ddcom559 compare 1E+4 1 -> 1 -ddcom561 compare 1E+5 1 -> 1 -ddcom562 compare 1E+6 1 -> 1 -ddcom563 compare 1E+7 1 -> 1 -ddcom564 compare 1E+8 1 -> 1 -ddcom565 compare 1E+9 1 -> 1 -ddcom566 compare 1E+10 1 -> 1 -ddcom567 compare 1E+11 1 -> 1 -ddcom568 compare 1E+12 1 -> 1 -ddcom569 compare 1E+13 1 -> 1 -ddcom570 compare 1E+14 1 -> 1 -ddcom571 compare 1E+15 1 -> 1 --- similar with a useful coefficient, one side only -ddcom580 compare 0.000000987654321 1E-15 -> 1 -ddcom581 compare 0.000000987654321 1E-14 -> 1 -ddcom582 compare 0.000000987654321 1E-13 -> 1 -ddcom583 compare 0.000000987654321 1E-12 -> 1 -ddcom584 compare 0.000000987654321 1E-11 -> 1 -ddcom585 compare 0.000000987654321 1E-10 -> 1 -ddcom586 compare 0.000000987654321 1E-9 -> 1 -ddcom587 compare 0.000000987654321 1E-8 -> 1 -ddcom588 compare 0.000000987654321 1E-7 -> 1 -ddcom589 compare 0.000000987654321 1E-6 -> -1 -ddcom590 compare 0.000000987654321 1E-5 -> -1 -ddcom591 compare 0.000000987654321 1E-4 -> -1 -ddcom592 compare 0.000000987654321 1E-3 -> -1 -ddcom593 compare 0.000000987654321 1E-2 -> -1 -ddcom594 compare 0.000000987654321 1E-1 -> -1 -ddcom595 compare 0.000000987654321 1E-0 -> -1 -ddcom596 compare 0.000000987654321 1E+1 -> -1 -ddcom597 compare 0.000000987654321 1E+2 -> -1 -ddcom598 compare 0.000000987654321 1E+3 -> -1 -ddcom599 compare 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -ddcom600 compare 12 12.2345 -> -1 -ddcom601 compare 12.0 12.2345 -> -1 -ddcom602 compare 12.00 12.2345 -> -1 -ddcom603 compare 12.000 12.2345 -> -1 -ddcom604 compare 12.0000 12.2345 -> -1 -ddcom605 compare 12.00000 12.2345 -> -1 -ddcom606 compare 12.000000 12.2345 -> -1 -ddcom607 compare 12.0000000 12.2345 -> -1 -ddcom608 compare 12.00000000 12.2345 -> -1 -ddcom609 compare 12.000000000 12.2345 -> -1 -ddcom610 compare 12.1234 12 -> 1 -ddcom611 compare 12.1234 12.0 -> 1 -ddcom612 compare 12.1234 12.00 -> 1 -ddcom613 compare 12.1234 12.000 -> 1 -ddcom614 compare 12.1234 12.0000 -> 1 -ddcom615 compare 12.1234 12.00000 -> 1 -ddcom616 compare 12.1234 12.000000 -> 1 -ddcom617 compare 12.1234 12.0000000 -> 1 -ddcom618 compare 12.1234 12.00000000 -> 1 -ddcom619 compare 12.1234 12.000000000 -> 1 -ddcom620 compare -12 -12.2345 -> 1 -ddcom621 compare -12.0 -12.2345 -> 1 -ddcom622 compare -12.00 -12.2345 -> 1 -ddcom623 compare -12.000 -12.2345 -> 1 -ddcom624 compare -12.0000 -12.2345 -> 1 -ddcom625 compare -12.00000 -12.2345 -> 1 -ddcom626 compare -12.000000 -12.2345 -> 1 -ddcom627 compare -12.0000000 -12.2345 -> 1 -ddcom628 compare -12.00000000 -12.2345 -> 1 -ddcom629 compare -12.000000000 -12.2345 -> 1 -ddcom630 compare -12.1234 -12 -> -1 -ddcom631 compare -12.1234 -12.0 -> -1 -ddcom632 compare -12.1234 -12.00 -> -1 -ddcom633 compare -12.1234 -12.000 -> -1 -ddcom634 compare -12.1234 -12.0000 -> -1 -ddcom635 compare -12.1234 -12.00000 -> -1 -ddcom636 compare -12.1234 -12.000000 -> -1 -ddcom637 compare -12.1234 -12.0000000 -> -1 -ddcom638 compare -12.1234 -12.00000000 -> -1 -ddcom639 compare -12.1234 -12.000000000 -> -1 - --- extended zeros -ddcom640 compare 0 0 -> 0 -ddcom641 compare 0 -0 -> 0 -ddcom642 compare 0 -0.0 -> 0 -ddcom643 compare 0 0.0 -> 0 -ddcom644 compare -0 0 -> 0 -ddcom645 compare -0 -0 -> 0 -ddcom646 compare -0 -0.0 -> 0 -ddcom647 compare -0 0.0 -> 0 -ddcom648 compare 0.0 0 -> 0 -ddcom649 compare 0.0 -0 -> 0 -ddcom650 compare 0.0 -0.0 -> 0 -ddcom651 compare 0.0 0.0 -> 0 -ddcom652 compare -0.0 0 -> 0 -ddcom653 compare -0.0 -0 -> 0 -ddcom654 compare -0.0 -0.0 -> 0 -ddcom655 compare -0.0 0.0 -> 0 - -ddcom656 compare -0E1 0.0 -> 0 -ddcom657 compare -0E2 0.0 -> 0 -ddcom658 compare 0E1 0.0 -> 0 -ddcom659 compare 0E2 0.0 -> 0 -ddcom660 compare -0E1 0 -> 0 -ddcom661 compare -0E2 0 -> 0 -ddcom662 compare 0E1 0 -> 0 -ddcom663 compare 0E2 0 -> 0 -ddcom664 compare -0E1 -0E1 -> 0 -ddcom665 compare -0E2 -0E1 -> 0 -ddcom666 compare 0E1 -0E1 -> 0 -ddcom667 compare 0E2 -0E1 -> 0 -ddcom668 compare -0E1 -0E2 -> 0 -ddcom669 compare -0E2 -0E2 -> 0 -ddcom670 compare 0E1 -0E2 -> 0 -ddcom671 compare 0E2 -0E2 -> 0 -ddcom672 compare -0E1 0E1 -> 0 -ddcom673 compare -0E2 0E1 -> 0 -ddcom674 compare 0E1 0E1 -> 0 -ddcom675 compare 0E2 0E1 -> 0 -ddcom676 compare -0E1 0E2 -> 0 -ddcom677 compare -0E2 0E2 -> 0 -ddcom678 compare 0E1 0E2 -> 0 -ddcom679 compare 0E2 0E2 -> 0 - --- trailing zeros; unit-y -ddcom680 compare 12 12 -> 0 -ddcom681 compare 12 12.0 -> 0 -ddcom682 compare 12 12.00 -> 0 -ddcom683 compare 12 12.000 -> 0 -ddcom684 compare 12 12.0000 -> 0 -ddcom685 compare 12 12.00000 -> 0 -ddcom686 compare 12 12.000000 -> 0 -ddcom687 compare 12 12.0000000 -> 0 -ddcom688 compare 12 12.00000000 -> 0 -ddcom689 compare 12 12.000000000 -> 0 -ddcom690 compare 12 12 -> 0 -ddcom691 compare 12.0 12 -> 0 -ddcom692 compare 12.00 12 -> 0 -ddcom693 compare 12.000 12 -> 0 -ddcom694 compare 12.0000 12 -> 0 -ddcom695 compare 12.00000 12 -> 0 -ddcom696 compare 12.000000 12 -> 0 -ddcom697 compare 12.0000000 12 -> 0 -ddcom698 compare 12.00000000 12 -> 0 -ddcom699 compare 12.000000000 12 -> 0 - --- first, second, & last digit -ddcom700 compare 1234567890123456 1234567890123455 -> 1 -ddcom701 compare 1234567890123456 1234567890123456 -> 0 -ddcom702 compare 1234567890123456 1234567890123457 -> -1 -ddcom703 compare 1234567890123456 0234567890123456 -> 1 -ddcom704 compare 1234567890123456 1234567890123456 -> 0 -ddcom705 compare 1234567890123456 2234567890123456 -> -1 -ddcom706 compare 1134567890123456 1034567890123456 -> 1 -ddcom707 compare 1134567890123456 1134567890123456 -> 0 -ddcom708 compare 1134567890123456 1234567890123456 -> -1 - --- miscellaneous -ddcom721 compare 12345678000 1 -> 1 -ddcom722 compare 1 12345678000 -> -1 -ddcom723 compare 1234567800 1 -> 1 -ddcom724 compare 1 1234567800 -> -1 -ddcom725 compare 1234567890 1 -> 1 -ddcom726 compare 1 1234567890 -> -1 -ddcom727 compare 1234567891 1 -> 1 -ddcom728 compare 1 1234567891 -> -1 -ddcom729 compare 12345678901 1 -> 1 -ddcom730 compare 1 12345678901 -> -1 -ddcom731 compare 1234567896 1 -> 1 -ddcom732 compare 1 1234567896 -> -1 - --- residue cases at lower precision -ddcom740 compare 1 0.9999999 -> 1 -ddcom741 compare 1 0.999999 -> 1 -ddcom742 compare 1 0.99999 -> 1 -ddcom743 compare 1 1.0000 -> 0 -ddcom744 compare 1 1.00001 -> -1 -ddcom745 compare 1 1.000001 -> -1 -ddcom746 compare 1 1.0000001 -> -1 -ddcom750 compare 0.9999999 1 -> -1 -ddcom751 compare 0.999999 1 -> -1 -ddcom752 compare 0.99999 1 -> -1 -ddcom753 compare 1.0000 1 -> 0 -ddcom754 compare 1.00001 1 -> 1 -ddcom755 compare 1.000001 1 -> 1 -ddcom756 compare 1.0000001 1 -> 1 - --- Specials -ddcom780 compare Inf -Inf -> 1 -ddcom781 compare Inf -1000 -> 1 -ddcom782 compare Inf -1 -> 1 -ddcom783 compare Inf -0 -> 1 -ddcom784 compare Inf 0 -> 1 -ddcom785 compare Inf 1 -> 1 -ddcom786 compare Inf 1000 -> 1 -ddcom787 compare Inf Inf -> 0 -ddcom788 compare -1000 Inf -> -1 -ddcom789 compare -Inf Inf -> -1 -ddcom790 compare -1 Inf -> -1 -ddcom791 compare -0 Inf -> -1 -ddcom792 compare 0 Inf -> -1 -ddcom793 compare 1 Inf -> -1 -ddcom794 compare 1000 Inf -> -1 -ddcom795 compare Inf Inf -> 0 - -ddcom800 compare -Inf -Inf -> 0 -ddcom801 compare -Inf -1000 -> -1 -ddcom802 compare -Inf -1 -> -1 -ddcom803 compare -Inf -0 -> -1 -ddcom804 compare -Inf 0 -> -1 -ddcom805 compare -Inf 1 -> -1 -ddcom806 compare -Inf 1000 -> -1 -ddcom807 compare -Inf Inf -> -1 -ddcom808 compare -Inf -Inf -> 0 -ddcom809 compare -1000 -Inf -> 1 -ddcom810 compare -1 -Inf -> 1 -ddcom811 compare -0 -Inf -> 1 -ddcom812 compare 0 -Inf -> 1 -ddcom813 compare 1 -Inf -> 1 -ddcom814 compare 1000 -Inf -> 1 -ddcom815 compare Inf -Inf -> 1 - -ddcom821 compare NaN -Inf -> NaN -ddcom822 compare NaN -1000 -> NaN -ddcom823 compare NaN -1 -> NaN -ddcom824 compare NaN -0 -> NaN -ddcom825 compare NaN 0 -> NaN -ddcom826 compare NaN 1 -> NaN -ddcom827 compare NaN 1000 -> NaN -ddcom828 compare NaN Inf -> NaN -ddcom829 compare NaN NaN -> NaN -ddcom830 compare -Inf NaN -> NaN -ddcom831 compare -1000 NaN -> NaN -ddcom832 compare -1 NaN -> NaN -ddcom833 compare -0 NaN -> NaN -ddcom834 compare 0 NaN -> NaN -ddcom835 compare 1 NaN -> NaN -ddcom836 compare 1000 NaN -> NaN -ddcom837 compare Inf NaN -> NaN -ddcom838 compare -NaN -NaN -> -NaN -ddcom839 compare +NaN -NaN -> NaN -ddcom840 compare -NaN +NaN -> -NaN - -ddcom841 compare sNaN -Inf -> NaN Invalid_operation -ddcom842 compare sNaN -1000 -> NaN Invalid_operation -ddcom843 compare sNaN -1 -> NaN Invalid_operation -ddcom844 compare sNaN -0 -> NaN Invalid_operation -ddcom845 compare sNaN 0 -> NaN Invalid_operation -ddcom846 compare sNaN 1 -> NaN Invalid_operation -ddcom847 compare sNaN 1000 -> NaN Invalid_operation -ddcom848 compare sNaN NaN -> NaN Invalid_operation -ddcom849 compare sNaN sNaN -> NaN Invalid_operation -ddcom850 compare NaN sNaN -> NaN Invalid_operation -ddcom851 compare -Inf sNaN -> NaN Invalid_operation -ddcom852 compare -1000 sNaN -> NaN Invalid_operation -ddcom853 compare -1 sNaN -> NaN Invalid_operation -ddcom854 compare -0 sNaN -> NaN Invalid_operation -ddcom855 compare 0 sNaN -> NaN Invalid_operation -ddcom856 compare 1 sNaN -> NaN Invalid_operation -ddcom857 compare 1000 sNaN -> NaN Invalid_operation -ddcom858 compare Inf sNaN -> NaN Invalid_operation -ddcom859 compare NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddcom860 compare NaN9 -Inf -> NaN9 -ddcom861 compare NaN8 999 -> NaN8 -ddcom862 compare NaN77 Inf -> NaN77 -ddcom863 compare -NaN67 NaN5 -> -NaN67 -ddcom864 compare -Inf -NaN4 -> -NaN4 -ddcom865 compare -999 -NaN33 -> -NaN33 -ddcom866 compare Inf NaN2 -> NaN2 -ddcom867 compare -NaN41 -NaN42 -> -NaN41 -ddcom868 compare +NaN41 -NaN42 -> NaN41 -ddcom869 compare -NaN41 +NaN42 -> -NaN41 -ddcom870 compare +NaN41 +NaN42 -> NaN41 - -ddcom871 compare -sNaN99 -Inf -> -NaN99 Invalid_operation -ddcom872 compare sNaN98 -11 -> NaN98 Invalid_operation -ddcom873 compare sNaN97 NaN -> NaN97 Invalid_operation -ddcom874 compare sNaN16 sNaN94 -> NaN16 Invalid_operation -ddcom875 compare NaN85 sNaN83 -> NaN83 Invalid_operation -ddcom876 compare -Inf sNaN92 -> NaN92 Invalid_operation -ddcom877 compare 088 sNaN81 -> NaN81 Invalid_operation -ddcom878 compare Inf sNaN90 -> NaN90 Invalid_operation -ddcom879 compare NaN -sNaN89 -> -NaN89 Invalid_operation - --- wide range -ddcom880 compare +1.23456789012345E-0 9E+384 -> -1 -ddcom881 compare 9E+384 +1.23456789012345E-0 -> 1 -ddcom882 compare +0.100 9E-383 -> 1 -ddcom883 compare 9E-383 +0.100 -> -1 -ddcom885 compare -1.23456789012345E-0 9E+384 -> -1 -ddcom886 compare 9E+384 -1.23456789012345E-0 -> 1 -ddcom887 compare -0.100 9E-383 -> -1 -ddcom888 compare 9E-383 -0.100 -> 1 - --- spread zeros -ddcom900 compare 0E-383 0 -> 0 -ddcom901 compare 0E-383 -0 -> 0 -ddcom902 compare -0E-383 0 -> 0 -ddcom903 compare -0E-383 -0 -> 0 -ddcom904 compare 0E-383 0E+384 -> 0 -ddcom905 compare 0E-383 -0E+384 -> 0 -ddcom906 compare -0E-383 0E+384 -> 0 -ddcom907 compare -0E-383 -0E+384 -> 0 -ddcom908 compare 0 0E+384 -> 0 -ddcom909 compare 0 -0E+384 -> 0 -ddcom910 compare -0 0E+384 -> 0 -ddcom911 compare -0 -0E+384 -> 0 -ddcom930 compare 0E+384 0 -> 0 -ddcom931 compare 0E+384 -0 -> 0 -ddcom932 compare -0E+384 0 -> 0 -ddcom933 compare -0E+384 -0 -> 0 -ddcom934 compare 0E+384 0E-383 -> 0 -ddcom935 compare 0E+384 -0E-383 -> 0 -ddcom936 compare -0E+384 0E-383 -> 0 -ddcom937 compare -0E+384 -0E-383 -> 0 -ddcom938 compare 0 0E-383 -> 0 -ddcom939 compare 0 -0E-383 -> 0 -ddcom940 compare -0 0E-383 -> 0 -ddcom941 compare -0 -0E-383 -> 0 - --- signs -ddcom961 compare 1e+77 1e+11 -> 1 -ddcom962 compare 1e+77 -1e+11 -> 1 -ddcom963 compare -1e+77 1e+11 -> -1 -ddcom964 compare -1e+77 -1e+11 -> -1 -ddcom965 compare 1e-77 1e-11 -> -1 -ddcom966 compare 1e-77 -1e-11 -> 1 -ddcom967 compare -1e-77 1e-11 -> -1 -ddcom968 compare -1e-77 -1e-11 -> 1 - --- full alignment range, both ways -ddcomp1001 compare 1 1.000000000000000 -> 0 -ddcomp1002 compare 1 1.00000000000000 -> 0 -ddcomp1003 compare 1 1.0000000000000 -> 0 -ddcomp1004 compare 1 1.000000000000 -> 0 -ddcomp1005 compare 1 1.00000000000 -> 0 -ddcomp1006 compare 1 1.0000000000 -> 0 -ddcomp1007 compare 1 1.000000000 -> 0 -ddcomp1008 compare 1 1.00000000 -> 0 -ddcomp1009 compare 1 1.0000000 -> 0 -ddcomp1010 compare 1 1.000000 -> 0 -ddcomp1011 compare 1 1.00000 -> 0 -ddcomp1012 compare 1 1.0000 -> 0 -ddcomp1013 compare 1 1.000 -> 0 -ddcomp1014 compare 1 1.00 -> 0 -ddcomp1015 compare 1 1.0 -> 0 -ddcomp1021 compare 1.000000000000000 1 -> 0 -ddcomp1022 compare 1.00000000000000 1 -> 0 -ddcomp1023 compare 1.0000000000000 1 -> 0 -ddcomp1024 compare 1.000000000000 1 -> 0 -ddcomp1025 compare 1.00000000000 1 -> 0 -ddcomp1026 compare 1.0000000000 1 -> 0 -ddcomp1027 compare 1.000000000 1 -> 0 -ddcomp1028 compare 1.00000000 1 -> 0 -ddcomp1029 compare 1.0000000 1 -> 0 -ddcomp1030 compare 1.000000 1 -> 0 -ddcomp1031 compare 1.00000 1 -> 0 -ddcomp1032 compare 1.0000 1 -> 0 -ddcomp1033 compare 1.000 1 -> 0 -ddcomp1034 compare 1.00 1 -> 0 -ddcomp1035 compare 1.0 1 -> 0 - --- check MSD always detected non-zero -ddcomp1040 compare 0 0.000000000000000 -> 0 -ddcomp1041 compare 0 1.000000000000000 -> -1 -ddcomp1042 compare 0 2.000000000000000 -> -1 -ddcomp1043 compare 0 3.000000000000000 -> -1 -ddcomp1044 compare 0 4.000000000000000 -> -1 -ddcomp1045 compare 0 5.000000000000000 -> -1 -ddcomp1046 compare 0 6.000000000000000 -> -1 -ddcomp1047 compare 0 7.000000000000000 -> -1 -ddcomp1048 compare 0 8.000000000000000 -> -1 -ddcomp1049 compare 0 9.000000000000000 -> -1 -ddcomp1050 compare 0.000000000000000 0 -> 0 -ddcomp1051 compare 1.000000000000000 0 -> 1 -ddcomp1052 compare 2.000000000000000 0 -> 1 -ddcomp1053 compare 3.000000000000000 0 -> 1 -ddcomp1054 compare 4.000000000000000 0 -> 1 -ddcomp1055 compare 5.000000000000000 0 -> 1 -ddcomp1056 compare 6.000000000000000 0 -> 1 -ddcomp1057 compare 7.000000000000000 0 -> 1 -ddcomp1058 compare 8.000000000000000 0 -> 1 -ddcomp1059 compare 9.000000000000000 0 -> 1 - --- Null tests -ddcom9990 compare 10 # -> NaN Invalid_operation -ddcom9991 compare # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddCompare.decTest -- decDouble comparison that allows quiet NaNs -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddcom001 compare -2 -2 -> 0 +ddcom002 compare -2 -1 -> -1 +ddcom003 compare -2 0 -> -1 +ddcom004 compare -2 1 -> -1 +ddcom005 compare -2 2 -> -1 +ddcom006 compare -1 -2 -> 1 +ddcom007 compare -1 -1 -> 0 +ddcom008 compare -1 0 -> -1 +ddcom009 compare -1 1 -> -1 +ddcom010 compare -1 2 -> -1 +ddcom011 compare 0 -2 -> 1 +ddcom012 compare 0 -1 -> 1 +ddcom013 compare 0 0 -> 0 +ddcom014 compare 0 1 -> -1 +ddcom015 compare 0 2 -> -1 +ddcom016 compare 1 -2 -> 1 +ddcom017 compare 1 -1 -> 1 +ddcom018 compare 1 0 -> 1 +ddcom019 compare 1 1 -> 0 +ddcom020 compare 1 2 -> -1 +ddcom021 compare 2 -2 -> 1 +ddcom022 compare 2 -1 -> 1 +ddcom023 compare 2 0 -> 1 +ddcom025 compare 2 1 -> 1 +ddcom026 compare 2 2 -> 0 + +ddcom031 compare -20 -20 -> 0 +ddcom032 compare -20 -10 -> -1 +ddcom033 compare -20 00 -> -1 +ddcom034 compare -20 10 -> -1 +ddcom035 compare -20 20 -> -1 +ddcom036 compare -10 -20 -> 1 +ddcom037 compare -10 -10 -> 0 +ddcom038 compare -10 00 -> -1 +ddcom039 compare -10 10 -> -1 +ddcom040 compare -10 20 -> -1 +ddcom041 compare 00 -20 -> 1 +ddcom042 compare 00 -10 -> 1 +ddcom043 compare 00 00 -> 0 +ddcom044 compare 00 10 -> -1 +ddcom045 compare 00 20 -> -1 +ddcom046 compare 10 -20 -> 1 +ddcom047 compare 10 -10 -> 1 +ddcom048 compare 10 00 -> 1 +ddcom049 compare 10 10 -> 0 +ddcom050 compare 10 20 -> -1 +ddcom051 compare 20 -20 -> 1 +ddcom052 compare 20 -10 -> 1 +ddcom053 compare 20 00 -> 1 +ddcom055 compare 20 10 -> 1 +ddcom056 compare 20 20 -> 0 + +ddcom061 compare -2.0 -2.0 -> 0 +ddcom062 compare -2.0 -1.0 -> -1 +ddcom063 compare -2.0 0.0 -> -1 +ddcom064 compare -2.0 1.0 -> -1 +ddcom065 compare -2.0 2.0 -> -1 +ddcom066 compare -1.0 -2.0 -> 1 +ddcom067 compare -1.0 -1.0 -> 0 +ddcom068 compare -1.0 0.0 -> -1 +ddcom069 compare -1.0 1.0 -> -1 +ddcom070 compare -1.0 2.0 -> -1 +ddcom071 compare 0.0 -2.0 -> 1 +ddcom072 compare 0.0 -1.0 -> 1 +ddcom073 compare 0.0 0.0 -> 0 +ddcom074 compare 0.0 1.0 -> -1 +ddcom075 compare 0.0 2.0 -> -1 +ddcom076 compare 1.0 -2.0 -> 1 +ddcom077 compare 1.0 -1.0 -> 1 +ddcom078 compare 1.0 0.0 -> 1 +ddcom079 compare 1.0 1.0 -> 0 +ddcom080 compare 1.0 2.0 -> -1 +ddcom081 compare 2.0 -2.0 -> 1 +ddcom082 compare 2.0 -1.0 -> 1 +ddcom083 compare 2.0 0.0 -> 1 +ddcom085 compare 2.0 1.0 -> 1 +ddcom086 compare 2.0 2.0 -> 0 +ddcom087 compare 1.0 0.1 -> 1 +ddcom088 compare 0.1 1.0 -> -1 + +-- now some cases which might overflow if subtract were used +ddcom095 compare 9.999999999999999E+384 9.999999999999999E+384 -> 0 +ddcom096 compare -9.999999999999999E+384 9.999999999999999E+384 -> -1 +ddcom097 compare 9.999999999999999E+384 -9.999999999999999E+384 -> 1 +ddcom098 compare -9.999999999999999E+384 -9.999999999999999E+384 -> 0 + +-- some differing length/exponent cases +ddcom100 compare 7.0 7.0 -> 0 +ddcom101 compare 7.0 7 -> 0 +ddcom102 compare 7 7.0 -> 0 +ddcom103 compare 7E+0 7.0 -> 0 +ddcom104 compare 70E-1 7.0 -> 0 +ddcom105 compare 0.7E+1 7 -> 0 +ddcom106 compare 70E-1 7 -> 0 +ddcom107 compare 7.0 7E+0 -> 0 +ddcom108 compare 7.0 70E-1 -> 0 +ddcom109 compare 7 0.7E+1 -> 0 +ddcom110 compare 7 70E-1 -> 0 + +ddcom120 compare 8.0 7.0 -> 1 +ddcom121 compare 8.0 7 -> 1 +ddcom122 compare 8 7.0 -> 1 +ddcom123 compare 8E+0 7.0 -> 1 +ddcom124 compare 80E-1 7.0 -> 1 +ddcom125 compare 0.8E+1 7 -> 1 +ddcom126 compare 80E-1 7 -> 1 +ddcom127 compare 8.0 7E+0 -> 1 +ddcom128 compare 8.0 70E-1 -> 1 +ddcom129 compare 8 0.7E+1 -> 1 +ddcom130 compare 8 70E-1 -> 1 + +ddcom140 compare 8.0 9.0 -> -1 +ddcom141 compare 8.0 9 -> -1 +ddcom142 compare 8 9.0 -> -1 +ddcom143 compare 8E+0 9.0 -> -1 +ddcom144 compare 80E-1 9.0 -> -1 +ddcom145 compare 0.8E+1 9 -> -1 +ddcom146 compare 80E-1 9 -> -1 +ddcom147 compare 8.0 9E+0 -> -1 +ddcom148 compare 8.0 90E-1 -> -1 +ddcom149 compare 8 0.9E+1 -> -1 +ddcom150 compare 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +ddcom200 compare -7.0 7.0 -> -1 +ddcom201 compare -7.0 7 -> -1 +ddcom202 compare -7 7.0 -> -1 +ddcom203 compare -7E+0 7.0 -> -1 +ddcom204 compare -70E-1 7.0 -> -1 +ddcom205 compare -0.7E+1 7 -> -1 +ddcom206 compare -70E-1 7 -> -1 +ddcom207 compare -7.0 7E+0 -> -1 +ddcom208 compare -7.0 70E-1 -> -1 +ddcom209 compare -7 0.7E+1 -> -1 +ddcom210 compare -7 70E-1 -> -1 + +ddcom220 compare -8.0 7.0 -> -1 +ddcom221 compare -8.0 7 -> -1 +ddcom222 compare -8 7.0 -> -1 +ddcom223 compare -8E+0 7.0 -> -1 +ddcom224 compare -80E-1 7.0 -> -1 +ddcom225 compare -0.8E+1 7 -> -1 +ddcom226 compare -80E-1 7 -> -1 +ddcom227 compare -8.0 7E+0 -> -1 +ddcom228 compare -8.0 70E-1 -> -1 +ddcom229 compare -8 0.7E+1 -> -1 +ddcom230 compare -8 70E-1 -> -1 + +ddcom240 compare -8.0 9.0 -> -1 +ddcom241 compare -8.0 9 -> -1 +ddcom242 compare -8 9.0 -> -1 +ddcom243 compare -8E+0 9.0 -> -1 +ddcom244 compare -80E-1 9.0 -> -1 +ddcom245 compare -0.8E+1 9 -> -1 +ddcom246 compare -80E-1 9 -> -1 +ddcom247 compare -8.0 9E+0 -> -1 +ddcom248 compare -8.0 90E-1 -> -1 +ddcom249 compare -8 0.9E+1 -> -1 +ddcom250 compare -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +ddcom300 compare 7.0 -7.0 -> 1 +ddcom301 compare 7.0 -7 -> 1 +ddcom302 compare 7 -7.0 -> 1 +ddcom303 compare 7E+0 -7.0 -> 1 +ddcom304 compare 70E-1 -7.0 -> 1 +ddcom305 compare .7E+1 -7 -> 1 +ddcom306 compare 70E-1 -7 -> 1 +ddcom307 compare 7.0 -7E+0 -> 1 +ddcom308 compare 7.0 -70E-1 -> 1 +ddcom309 compare 7 -.7E+1 -> 1 +ddcom310 compare 7 -70E-1 -> 1 + +ddcom320 compare 8.0 -7.0 -> 1 +ddcom321 compare 8.0 -7 -> 1 +ddcom322 compare 8 -7.0 -> 1 +ddcom323 compare 8E+0 -7.0 -> 1 +ddcom324 compare 80E-1 -7.0 -> 1 +ddcom325 compare .8E+1 -7 -> 1 +ddcom326 compare 80E-1 -7 -> 1 +ddcom327 compare 8.0 -7E+0 -> 1 +ddcom328 compare 8.0 -70E-1 -> 1 +ddcom329 compare 8 -.7E+1 -> 1 +ddcom330 compare 8 -70E-1 -> 1 + +ddcom340 compare 8.0 -9.0 -> 1 +ddcom341 compare 8.0 -9 -> 1 +ddcom342 compare 8 -9.0 -> 1 +ddcom343 compare 8E+0 -9.0 -> 1 +ddcom344 compare 80E-1 -9.0 -> 1 +ddcom345 compare .8E+1 -9 -> 1 +ddcom346 compare 80E-1 -9 -> 1 +ddcom347 compare 8.0 -9E+0 -> 1 +ddcom348 compare 8.0 -90E-1 -> 1 +ddcom349 compare 8 -.9E+1 -> 1 +ddcom350 compare 8 -90E-1 -> 1 + +-- and again, with sign changes -- .. +ddcom400 compare -7.0 -7.0 -> 0 +ddcom401 compare -7.0 -7 -> 0 +ddcom402 compare -7 -7.0 -> 0 +ddcom403 compare -7E+0 -7.0 -> 0 +ddcom404 compare -70E-1 -7.0 -> 0 +ddcom405 compare -.7E+1 -7 -> 0 +ddcom406 compare -70E-1 -7 -> 0 +ddcom407 compare -7.0 -7E+0 -> 0 +ddcom408 compare -7.0 -70E-1 -> 0 +ddcom409 compare -7 -.7E+1 -> 0 +ddcom410 compare -7 -70E-1 -> 0 + +ddcom420 compare -8.0 -7.0 -> -1 +ddcom421 compare -8.0 -7 -> -1 +ddcom422 compare -8 -7.0 -> -1 +ddcom423 compare -8E+0 -7.0 -> -1 +ddcom424 compare -80E-1 -7.0 -> -1 +ddcom425 compare -.8E+1 -7 -> -1 +ddcom426 compare -80E-1 -7 -> -1 +ddcom427 compare -8.0 -7E+0 -> -1 +ddcom428 compare -8.0 -70E-1 -> -1 +ddcom429 compare -8 -.7E+1 -> -1 +ddcom430 compare -8 -70E-1 -> -1 + +ddcom440 compare -8.0 -9.0 -> 1 +ddcom441 compare -8.0 -9 -> 1 +ddcom442 compare -8 -9.0 -> 1 +ddcom443 compare -8E+0 -9.0 -> 1 +ddcom444 compare -80E-1 -9.0 -> 1 +ddcom445 compare -.8E+1 -9 -> 1 +ddcom446 compare -80E-1 -9 -> 1 +ddcom447 compare -8.0 -9E+0 -> 1 +ddcom448 compare -8.0 -90E-1 -> 1 +ddcom449 compare -8 -.9E+1 -> 1 +ddcom450 compare -8 -90E-1 -> 1 + +-- misalignment traps for little-endian +ddcom451 compare 1.0 0.1 -> 1 +ddcom452 compare 0.1 1.0 -> -1 +ddcom453 compare 10.0 0.1 -> 1 +ddcom454 compare 0.1 10.0 -> -1 +ddcom455 compare 100 1.0 -> 1 +ddcom456 compare 1.0 100 -> -1 +ddcom457 compare 1000 10.0 -> 1 +ddcom458 compare 10.0 1000 -> -1 +ddcom459 compare 10000 100.0 -> 1 +ddcom460 compare 100.0 10000 -> -1 +ddcom461 compare 100000 1000.0 -> 1 +ddcom462 compare 1000.0 100000 -> -1 +ddcom463 compare 1000000 10000.0 -> 1 +ddcom464 compare 10000.0 1000000 -> -1 + +-- testcases that subtract to lots of zeros at boundaries [pgr] +ddcom473 compare 123.4560000000000E-89 123.456E-89 -> 0 +ddcom474 compare 123.456000000000E+89 123.456E+89 -> 0 +ddcom475 compare 123.45600000000E-89 123.456E-89 -> 0 +ddcom476 compare 123.4560000000E+89 123.456E+89 -> 0 +ddcom477 compare 123.456000000E-89 123.456E-89 -> 0 +ddcom478 compare 123.45600000E+89 123.456E+89 -> 0 +ddcom479 compare 123.4560000E-89 123.456E-89 -> 0 +ddcom480 compare 123.456000E+89 123.456E+89 -> 0 +ddcom481 compare 123.45600E-89 123.456E-89 -> 0 +ddcom482 compare 123.4560E+89 123.456E+89 -> 0 +ddcom483 compare 123.456E-89 123.456E-89 -> 0 +ddcom487 compare 123.456E+89 123.4560000000000E+89 -> 0 +ddcom488 compare 123.456E-89 123.456000000000E-89 -> 0 +ddcom489 compare 123.456E+89 123.45600000000E+89 -> 0 +ddcom490 compare 123.456E-89 123.4560000000E-89 -> 0 +ddcom491 compare 123.456E+89 123.456000000E+89 -> 0 +ddcom492 compare 123.456E-89 123.45600000E-89 -> 0 +ddcom493 compare 123.456E+89 123.4560000E+89 -> 0 +ddcom494 compare 123.456E-89 123.456000E-89 -> 0 +ddcom495 compare 123.456E+89 123.45600E+89 -> 0 +ddcom496 compare 123.456E-89 123.4560E-89 -> 0 +ddcom497 compare 123.456E+89 123.456E+89 -> 0 + +-- wide-ranging, around precision; signs equal +ddcom500 compare 1 1E-15 -> 1 +ddcom501 compare 1 1E-14 -> 1 +ddcom502 compare 1 1E-13 -> 1 +ddcom503 compare 1 1E-12 -> 1 +ddcom504 compare 1 1E-11 -> 1 +ddcom505 compare 1 1E-10 -> 1 +ddcom506 compare 1 1E-9 -> 1 +ddcom507 compare 1 1E-8 -> 1 +ddcom508 compare 1 1E-7 -> 1 +ddcom509 compare 1 1E-6 -> 1 +ddcom510 compare 1 1E-5 -> 1 +ddcom511 compare 1 1E-4 -> 1 +ddcom512 compare 1 1E-3 -> 1 +ddcom513 compare 1 1E-2 -> 1 +ddcom514 compare 1 1E-1 -> 1 +ddcom515 compare 1 1E-0 -> 0 +ddcom516 compare 1 1E+1 -> -1 +ddcom517 compare 1 1E+2 -> -1 +ddcom518 compare 1 1E+3 -> -1 +ddcom519 compare 1 1E+4 -> -1 +ddcom521 compare 1 1E+5 -> -1 +ddcom522 compare 1 1E+6 -> -1 +ddcom523 compare 1 1E+7 -> -1 +ddcom524 compare 1 1E+8 -> -1 +ddcom525 compare 1 1E+9 -> -1 +ddcom526 compare 1 1E+10 -> -1 +ddcom527 compare 1 1E+11 -> -1 +ddcom528 compare 1 1E+12 -> -1 +ddcom529 compare 1 1E+13 -> -1 +ddcom530 compare 1 1E+14 -> -1 +ddcom531 compare 1 1E+15 -> -1 +-- LR swap +ddcom540 compare 1E-15 1 -> -1 +ddcom541 compare 1E-14 1 -> -1 +ddcom542 compare 1E-13 1 -> -1 +ddcom543 compare 1E-12 1 -> -1 +ddcom544 compare 1E-11 1 -> -1 +ddcom545 compare 1E-10 1 -> -1 +ddcom546 compare 1E-9 1 -> -1 +ddcom547 compare 1E-8 1 -> -1 +ddcom548 compare 1E-7 1 -> -1 +ddcom549 compare 1E-6 1 -> -1 +ddcom550 compare 1E-5 1 -> -1 +ddcom551 compare 1E-4 1 -> -1 +ddcom552 compare 1E-3 1 -> -1 +ddcom553 compare 1E-2 1 -> -1 +ddcom554 compare 1E-1 1 -> -1 +ddcom555 compare 1E-0 1 -> 0 +ddcom556 compare 1E+1 1 -> 1 +ddcom557 compare 1E+2 1 -> 1 +ddcom558 compare 1E+3 1 -> 1 +ddcom559 compare 1E+4 1 -> 1 +ddcom561 compare 1E+5 1 -> 1 +ddcom562 compare 1E+6 1 -> 1 +ddcom563 compare 1E+7 1 -> 1 +ddcom564 compare 1E+8 1 -> 1 +ddcom565 compare 1E+9 1 -> 1 +ddcom566 compare 1E+10 1 -> 1 +ddcom567 compare 1E+11 1 -> 1 +ddcom568 compare 1E+12 1 -> 1 +ddcom569 compare 1E+13 1 -> 1 +ddcom570 compare 1E+14 1 -> 1 +ddcom571 compare 1E+15 1 -> 1 +-- similar with a useful coefficient, one side only +ddcom580 compare 0.000000987654321 1E-15 -> 1 +ddcom581 compare 0.000000987654321 1E-14 -> 1 +ddcom582 compare 0.000000987654321 1E-13 -> 1 +ddcom583 compare 0.000000987654321 1E-12 -> 1 +ddcom584 compare 0.000000987654321 1E-11 -> 1 +ddcom585 compare 0.000000987654321 1E-10 -> 1 +ddcom586 compare 0.000000987654321 1E-9 -> 1 +ddcom587 compare 0.000000987654321 1E-8 -> 1 +ddcom588 compare 0.000000987654321 1E-7 -> 1 +ddcom589 compare 0.000000987654321 1E-6 -> -1 +ddcom590 compare 0.000000987654321 1E-5 -> -1 +ddcom591 compare 0.000000987654321 1E-4 -> -1 +ddcom592 compare 0.000000987654321 1E-3 -> -1 +ddcom593 compare 0.000000987654321 1E-2 -> -1 +ddcom594 compare 0.000000987654321 1E-1 -> -1 +ddcom595 compare 0.000000987654321 1E-0 -> -1 +ddcom596 compare 0.000000987654321 1E+1 -> -1 +ddcom597 compare 0.000000987654321 1E+2 -> -1 +ddcom598 compare 0.000000987654321 1E+3 -> -1 +ddcom599 compare 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +ddcom600 compare 12 12.2345 -> -1 +ddcom601 compare 12.0 12.2345 -> -1 +ddcom602 compare 12.00 12.2345 -> -1 +ddcom603 compare 12.000 12.2345 -> -1 +ddcom604 compare 12.0000 12.2345 -> -1 +ddcom605 compare 12.00000 12.2345 -> -1 +ddcom606 compare 12.000000 12.2345 -> -1 +ddcom607 compare 12.0000000 12.2345 -> -1 +ddcom608 compare 12.00000000 12.2345 -> -1 +ddcom609 compare 12.000000000 12.2345 -> -1 +ddcom610 compare 12.1234 12 -> 1 +ddcom611 compare 12.1234 12.0 -> 1 +ddcom612 compare 12.1234 12.00 -> 1 +ddcom613 compare 12.1234 12.000 -> 1 +ddcom614 compare 12.1234 12.0000 -> 1 +ddcom615 compare 12.1234 12.00000 -> 1 +ddcom616 compare 12.1234 12.000000 -> 1 +ddcom617 compare 12.1234 12.0000000 -> 1 +ddcom618 compare 12.1234 12.00000000 -> 1 +ddcom619 compare 12.1234 12.000000000 -> 1 +ddcom620 compare -12 -12.2345 -> 1 +ddcom621 compare -12.0 -12.2345 -> 1 +ddcom622 compare -12.00 -12.2345 -> 1 +ddcom623 compare -12.000 -12.2345 -> 1 +ddcom624 compare -12.0000 -12.2345 -> 1 +ddcom625 compare -12.00000 -12.2345 -> 1 +ddcom626 compare -12.000000 -12.2345 -> 1 +ddcom627 compare -12.0000000 -12.2345 -> 1 +ddcom628 compare -12.00000000 -12.2345 -> 1 +ddcom629 compare -12.000000000 -12.2345 -> 1 +ddcom630 compare -12.1234 -12 -> -1 +ddcom631 compare -12.1234 -12.0 -> -1 +ddcom632 compare -12.1234 -12.00 -> -1 +ddcom633 compare -12.1234 -12.000 -> -1 +ddcom634 compare -12.1234 -12.0000 -> -1 +ddcom635 compare -12.1234 -12.00000 -> -1 +ddcom636 compare -12.1234 -12.000000 -> -1 +ddcom637 compare -12.1234 -12.0000000 -> -1 +ddcom638 compare -12.1234 -12.00000000 -> -1 +ddcom639 compare -12.1234 -12.000000000 -> -1 + +-- extended zeros +ddcom640 compare 0 0 -> 0 +ddcom641 compare 0 -0 -> 0 +ddcom642 compare 0 -0.0 -> 0 +ddcom643 compare 0 0.0 -> 0 +ddcom644 compare -0 0 -> 0 +ddcom645 compare -0 -0 -> 0 +ddcom646 compare -0 -0.0 -> 0 +ddcom647 compare -0 0.0 -> 0 +ddcom648 compare 0.0 0 -> 0 +ddcom649 compare 0.0 -0 -> 0 +ddcom650 compare 0.0 -0.0 -> 0 +ddcom651 compare 0.0 0.0 -> 0 +ddcom652 compare -0.0 0 -> 0 +ddcom653 compare -0.0 -0 -> 0 +ddcom654 compare -0.0 -0.0 -> 0 +ddcom655 compare -0.0 0.0 -> 0 + +ddcom656 compare -0E1 0.0 -> 0 +ddcom657 compare -0E2 0.0 -> 0 +ddcom658 compare 0E1 0.0 -> 0 +ddcom659 compare 0E2 0.0 -> 0 +ddcom660 compare -0E1 0 -> 0 +ddcom661 compare -0E2 0 -> 0 +ddcom662 compare 0E1 0 -> 0 +ddcom663 compare 0E2 0 -> 0 +ddcom664 compare -0E1 -0E1 -> 0 +ddcom665 compare -0E2 -0E1 -> 0 +ddcom666 compare 0E1 -0E1 -> 0 +ddcom667 compare 0E2 -0E1 -> 0 +ddcom668 compare -0E1 -0E2 -> 0 +ddcom669 compare -0E2 -0E2 -> 0 +ddcom670 compare 0E1 -0E2 -> 0 +ddcom671 compare 0E2 -0E2 -> 0 +ddcom672 compare -0E1 0E1 -> 0 +ddcom673 compare -0E2 0E1 -> 0 +ddcom674 compare 0E1 0E1 -> 0 +ddcom675 compare 0E2 0E1 -> 0 +ddcom676 compare -0E1 0E2 -> 0 +ddcom677 compare -0E2 0E2 -> 0 +ddcom678 compare 0E1 0E2 -> 0 +ddcom679 compare 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +ddcom680 compare 12 12 -> 0 +ddcom681 compare 12 12.0 -> 0 +ddcom682 compare 12 12.00 -> 0 +ddcom683 compare 12 12.000 -> 0 +ddcom684 compare 12 12.0000 -> 0 +ddcom685 compare 12 12.00000 -> 0 +ddcom686 compare 12 12.000000 -> 0 +ddcom687 compare 12 12.0000000 -> 0 +ddcom688 compare 12 12.00000000 -> 0 +ddcom689 compare 12 12.000000000 -> 0 +ddcom690 compare 12 12 -> 0 +ddcom691 compare 12.0 12 -> 0 +ddcom692 compare 12.00 12 -> 0 +ddcom693 compare 12.000 12 -> 0 +ddcom694 compare 12.0000 12 -> 0 +ddcom695 compare 12.00000 12 -> 0 +ddcom696 compare 12.000000 12 -> 0 +ddcom697 compare 12.0000000 12 -> 0 +ddcom698 compare 12.00000000 12 -> 0 +ddcom699 compare 12.000000000 12 -> 0 + +-- first, second, & last digit +ddcom700 compare 1234567890123456 1234567890123455 -> 1 +ddcom701 compare 1234567890123456 1234567890123456 -> 0 +ddcom702 compare 1234567890123456 1234567890123457 -> -1 +ddcom703 compare 1234567890123456 0234567890123456 -> 1 +ddcom704 compare 1234567890123456 1234567890123456 -> 0 +ddcom705 compare 1234567890123456 2234567890123456 -> -1 +ddcom706 compare 1134567890123456 1034567890123456 -> 1 +ddcom707 compare 1134567890123456 1134567890123456 -> 0 +ddcom708 compare 1134567890123456 1234567890123456 -> -1 + +-- miscellaneous +ddcom721 compare 12345678000 1 -> 1 +ddcom722 compare 1 12345678000 -> -1 +ddcom723 compare 1234567800 1 -> 1 +ddcom724 compare 1 1234567800 -> -1 +ddcom725 compare 1234567890 1 -> 1 +ddcom726 compare 1 1234567890 -> -1 +ddcom727 compare 1234567891 1 -> 1 +ddcom728 compare 1 1234567891 -> -1 +ddcom729 compare 12345678901 1 -> 1 +ddcom730 compare 1 12345678901 -> -1 +ddcom731 compare 1234567896 1 -> 1 +ddcom732 compare 1 1234567896 -> -1 + +-- residue cases at lower precision +ddcom740 compare 1 0.9999999 -> 1 +ddcom741 compare 1 0.999999 -> 1 +ddcom742 compare 1 0.99999 -> 1 +ddcom743 compare 1 1.0000 -> 0 +ddcom744 compare 1 1.00001 -> -1 +ddcom745 compare 1 1.000001 -> -1 +ddcom746 compare 1 1.0000001 -> -1 +ddcom750 compare 0.9999999 1 -> -1 +ddcom751 compare 0.999999 1 -> -1 +ddcom752 compare 0.99999 1 -> -1 +ddcom753 compare 1.0000 1 -> 0 +ddcom754 compare 1.00001 1 -> 1 +ddcom755 compare 1.000001 1 -> 1 +ddcom756 compare 1.0000001 1 -> 1 + +-- Specials +ddcom780 compare Inf -Inf -> 1 +ddcom781 compare Inf -1000 -> 1 +ddcom782 compare Inf -1 -> 1 +ddcom783 compare Inf -0 -> 1 +ddcom784 compare Inf 0 -> 1 +ddcom785 compare Inf 1 -> 1 +ddcom786 compare Inf 1000 -> 1 +ddcom787 compare Inf Inf -> 0 +ddcom788 compare -1000 Inf -> -1 +ddcom789 compare -Inf Inf -> -1 +ddcom790 compare -1 Inf -> -1 +ddcom791 compare -0 Inf -> -1 +ddcom792 compare 0 Inf -> -1 +ddcom793 compare 1 Inf -> -1 +ddcom794 compare 1000 Inf -> -1 +ddcom795 compare Inf Inf -> 0 + +ddcom800 compare -Inf -Inf -> 0 +ddcom801 compare -Inf -1000 -> -1 +ddcom802 compare -Inf -1 -> -1 +ddcom803 compare -Inf -0 -> -1 +ddcom804 compare -Inf 0 -> -1 +ddcom805 compare -Inf 1 -> -1 +ddcom806 compare -Inf 1000 -> -1 +ddcom807 compare -Inf Inf -> -1 +ddcom808 compare -Inf -Inf -> 0 +ddcom809 compare -1000 -Inf -> 1 +ddcom810 compare -1 -Inf -> 1 +ddcom811 compare -0 -Inf -> 1 +ddcom812 compare 0 -Inf -> 1 +ddcom813 compare 1 -Inf -> 1 +ddcom814 compare 1000 -Inf -> 1 +ddcom815 compare Inf -Inf -> 1 + +ddcom821 compare NaN -Inf -> NaN +ddcom822 compare NaN -1000 -> NaN +ddcom823 compare NaN -1 -> NaN +ddcom824 compare NaN -0 -> NaN +ddcom825 compare NaN 0 -> NaN +ddcom826 compare NaN 1 -> NaN +ddcom827 compare NaN 1000 -> NaN +ddcom828 compare NaN Inf -> NaN +ddcom829 compare NaN NaN -> NaN +ddcom830 compare -Inf NaN -> NaN +ddcom831 compare -1000 NaN -> NaN +ddcom832 compare -1 NaN -> NaN +ddcom833 compare -0 NaN -> NaN +ddcom834 compare 0 NaN -> NaN +ddcom835 compare 1 NaN -> NaN +ddcom836 compare 1000 NaN -> NaN +ddcom837 compare Inf NaN -> NaN +ddcom838 compare -NaN -NaN -> -NaN +ddcom839 compare +NaN -NaN -> NaN +ddcom840 compare -NaN +NaN -> -NaN + +ddcom841 compare sNaN -Inf -> NaN Invalid_operation +ddcom842 compare sNaN -1000 -> NaN Invalid_operation +ddcom843 compare sNaN -1 -> NaN Invalid_operation +ddcom844 compare sNaN -0 -> NaN Invalid_operation +ddcom845 compare sNaN 0 -> NaN Invalid_operation +ddcom846 compare sNaN 1 -> NaN Invalid_operation +ddcom847 compare sNaN 1000 -> NaN Invalid_operation +ddcom848 compare sNaN NaN -> NaN Invalid_operation +ddcom849 compare sNaN sNaN -> NaN Invalid_operation +ddcom850 compare NaN sNaN -> NaN Invalid_operation +ddcom851 compare -Inf sNaN -> NaN Invalid_operation +ddcom852 compare -1000 sNaN -> NaN Invalid_operation +ddcom853 compare -1 sNaN -> NaN Invalid_operation +ddcom854 compare -0 sNaN -> NaN Invalid_operation +ddcom855 compare 0 sNaN -> NaN Invalid_operation +ddcom856 compare 1 sNaN -> NaN Invalid_operation +ddcom857 compare 1000 sNaN -> NaN Invalid_operation +ddcom858 compare Inf sNaN -> NaN Invalid_operation +ddcom859 compare NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddcom860 compare NaN9 -Inf -> NaN9 +ddcom861 compare NaN8 999 -> NaN8 +ddcom862 compare NaN77 Inf -> NaN77 +ddcom863 compare -NaN67 NaN5 -> -NaN67 +ddcom864 compare -Inf -NaN4 -> -NaN4 +ddcom865 compare -999 -NaN33 -> -NaN33 +ddcom866 compare Inf NaN2 -> NaN2 +ddcom867 compare -NaN41 -NaN42 -> -NaN41 +ddcom868 compare +NaN41 -NaN42 -> NaN41 +ddcom869 compare -NaN41 +NaN42 -> -NaN41 +ddcom870 compare +NaN41 +NaN42 -> NaN41 + +ddcom871 compare -sNaN99 -Inf -> -NaN99 Invalid_operation +ddcom872 compare sNaN98 -11 -> NaN98 Invalid_operation +ddcom873 compare sNaN97 NaN -> NaN97 Invalid_operation +ddcom874 compare sNaN16 sNaN94 -> NaN16 Invalid_operation +ddcom875 compare NaN85 sNaN83 -> NaN83 Invalid_operation +ddcom876 compare -Inf sNaN92 -> NaN92 Invalid_operation +ddcom877 compare 088 sNaN81 -> NaN81 Invalid_operation +ddcom878 compare Inf sNaN90 -> NaN90 Invalid_operation +ddcom879 compare NaN -sNaN89 -> -NaN89 Invalid_operation + +-- wide range +ddcom880 compare +1.23456789012345E-0 9E+384 -> -1 +ddcom881 compare 9E+384 +1.23456789012345E-0 -> 1 +ddcom882 compare +0.100 9E-383 -> 1 +ddcom883 compare 9E-383 +0.100 -> -1 +ddcom885 compare -1.23456789012345E-0 9E+384 -> -1 +ddcom886 compare 9E+384 -1.23456789012345E-0 -> 1 +ddcom887 compare -0.100 9E-383 -> -1 +ddcom888 compare 9E-383 -0.100 -> 1 + +-- spread zeros +ddcom900 compare 0E-383 0 -> 0 +ddcom901 compare 0E-383 -0 -> 0 +ddcom902 compare -0E-383 0 -> 0 +ddcom903 compare -0E-383 -0 -> 0 +ddcom904 compare 0E-383 0E+384 -> 0 +ddcom905 compare 0E-383 -0E+384 -> 0 +ddcom906 compare -0E-383 0E+384 -> 0 +ddcom907 compare -0E-383 -0E+384 -> 0 +ddcom908 compare 0 0E+384 -> 0 +ddcom909 compare 0 -0E+384 -> 0 +ddcom910 compare -0 0E+384 -> 0 +ddcom911 compare -0 -0E+384 -> 0 +ddcom930 compare 0E+384 0 -> 0 +ddcom931 compare 0E+384 -0 -> 0 +ddcom932 compare -0E+384 0 -> 0 +ddcom933 compare -0E+384 -0 -> 0 +ddcom934 compare 0E+384 0E-383 -> 0 +ddcom935 compare 0E+384 -0E-383 -> 0 +ddcom936 compare -0E+384 0E-383 -> 0 +ddcom937 compare -0E+384 -0E-383 -> 0 +ddcom938 compare 0 0E-383 -> 0 +ddcom939 compare 0 -0E-383 -> 0 +ddcom940 compare -0 0E-383 -> 0 +ddcom941 compare -0 -0E-383 -> 0 + +-- signs +ddcom961 compare 1e+77 1e+11 -> 1 +ddcom962 compare 1e+77 -1e+11 -> 1 +ddcom963 compare -1e+77 1e+11 -> -1 +ddcom964 compare -1e+77 -1e+11 -> -1 +ddcom965 compare 1e-77 1e-11 -> -1 +ddcom966 compare 1e-77 -1e-11 -> 1 +ddcom967 compare -1e-77 1e-11 -> -1 +ddcom968 compare -1e-77 -1e-11 -> 1 + +-- full alignment range, both ways +ddcomp1001 compare 1 1.000000000000000 -> 0 +ddcomp1002 compare 1 1.00000000000000 -> 0 +ddcomp1003 compare 1 1.0000000000000 -> 0 +ddcomp1004 compare 1 1.000000000000 -> 0 +ddcomp1005 compare 1 1.00000000000 -> 0 +ddcomp1006 compare 1 1.0000000000 -> 0 +ddcomp1007 compare 1 1.000000000 -> 0 +ddcomp1008 compare 1 1.00000000 -> 0 +ddcomp1009 compare 1 1.0000000 -> 0 +ddcomp1010 compare 1 1.000000 -> 0 +ddcomp1011 compare 1 1.00000 -> 0 +ddcomp1012 compare 1 1.0000 -> 0 +ddcomp1013 compare 1 1.000 -> 0 +ddcomp1014 compare 1 1.00 -> 0 +ddcomp1015 compare 1 1.0 -> 0 +ddcomp1021 compare 1.000000000000000 1 -> 0 +ddcomp1022 compare 1.00000000000000 1 -> 0 +ddcomp1023 compare 1.0000000000000 1 -> 0 +ddcomp1024 compare 1.000000000000 1 -> 0 +ddcomp1025 compare 1.00000000000 1 -> 0 +ddcomp1026 compare 1.0000000000 1 -> 0 +ddcomp1027 compare 1.000000000 1 -> 0 +ddcomp1028 compare 1.00000000 1 -> 0 +ddcomp1029 compare 1.0000000 1 -> 0 +ddcomp1030 compare 1.000000 1 -> 0 +ddcomp1031 compare 1.00000 1 -> 0 +ddcomp1032 compare 1.0000 1 -> 0 +ddcomp1033 compare 1.000 1 -> 0 +ddcomp1034 compare 1.00 1 -> 0 +ddcomp1035 compare 1.0 1 -> 0 + +-- check MSD always detected non-zero +ddcomp1040 compare 0 0.000000000000000 -> 0 +ddcomp1041 compare 0 1.000000000000000 -> -1 +ddcomp1042 compare 0 2.000000000000000 -> -1 +ddcomp1043 compare 0 3.000000000000000 -> -1 +ddcomp1044 compare 0 4.000000000000000 -> -1 +ddcomp1045 compare 0 5.000000000000000 -> -1 +ddcomp1046 compare 0 6.000000000000000 -> -1 +ddcomp1047 compare 0 7.000000000000000 -> -1 +ddcomp1048 compare 0 8.000000000000000 -> -1 +ddcomp1049 compare 0 9.000000000000000 -> -1 +ddcomp1050 compare 0.000000000000000 0 -> 0 +ddcomp1051 compare 1.000000000000000 0 -> 1 +ddcomp1052 compare 2.000000000000000 0 -> 1 +ddcomp1053 compare 3.000000000000000 0 -> 1 +ddcomp1054 compare 4.000000000000000 0 -> 1 +ddcomp1055 compare 5.000000000000000 0 -> 1 +ddcomp1056 compare 6.000000000000000 0 -> 1 +ddcomp1057 compare 7.000000000000000 0 -> 1 +ddcomp1058 compare 8.000000000000000 0 -> 1 +ddcomp1059 compare 9.000000000000000 0 -> 1 + +-- Null tests +ddcom9990 compare 10 # -> NaN Invalid_operation +ddcom9991 compare # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddCompareSig.decTest b/Lib/test/decimaltestdata/ddCompareSig.decTest index 8d3fce0..c82ec45 100644 --- a/Lib/test/decimaltestdata/ddCompareSig.decTest +++ b/Lib/test/decimaltestdata/ddCompareSig.decTest @@ -1,647 +1,647 @@ ------------------------------------------------------------------------- --- ddCompareSig.decTest -- decDouble comparison; all NaNs signal -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddcms001 comparesig -2 -2 -> 0 -ddcms002 comparesig -2 -1 -> -1 -ddcms003 comparesig -2 0 -> -1 -ddcms004 comparesig -2 1 -> -1 -ddcms005 comparesig -2 2 -> -1 -ddcms006 comparesig -1 -2 -> 1 -ddcms007 comparesig -1 -1 -> 0 -ddcms008 comparesig -1 0 -> -1 -ddcms009 comparesig -1 1 -> -1 -ddcms010 comparesig -1 2 -> -1 -ddcms011 comparesig 0 -2 -> 1 -ddcms012 comparesig 0 -1 -> 1 -ddcms013 comparesig 0 0 -> 0 -ddcms014 comparesig 0 1 -> -1 -ddcms015 comparesig 0 2 -> -1 -ddcms016 comparesig 1 -2 -> 1 -ddcms017 comparesig 1 -1 -> 1 -ddcms018 comparesig 1 0 -> 1 -ddcms019 comparesig 1 1 -> 0 -ddcms020 comparesig 1 2 -> -1 -ddcms021 comparesig 2 -2 -> 1 -ddcms022 comparesig 2 -1 -> 1 -ddcms023 comparesig 2 0 -> 1 -ddcms025 comparesig 2 1 -> 1 -ddcms026 comparesig 2 2 -> 0 - -ddcms031 comparesig -20 -20 -> 0 -ddcms032 comparesig -20 -10 -> -1 -ddcms033 comparesig -20 00 -> -1 -ddcms034 comparesig -20 10 -> -1 -ddcms035 comparesig -20 20 -> -1 -ddcms036 comparesig -10 -20 -> 1 -ddcms037 comparesig -10 -10 -> 0 -ddcms038 comparesig -10 00 -> -1 -ddcms039 comparesig -10 10 -> -1 -ddcms040 comparesig -10 20 -> -1 -ddcms041 comparesig 00 -20 -> 1 -ddcms042 comparesig 00 -10 -> 1 -ddcms043 comparesig 00 00 -> 0 -ddcms044 comparesig 00 10 -> -1 -ddcms045 comparesig 00 20 -> -1 -ddcms046 comparesig 10 -20 -> 1 -ddcms047 comparesig 10 -10 -> 1 -ddcms048 comparesig 10 00 -> 1 -ddcms049 comparesig 10 10 -> 0 -ddcms050 comparesig 10 20 -> -1 -ddcms051 comparesig 20 -20 -> 1 -ddcms052 comparesig 20 -10 -> 1 -ddcms053 comparesig 20 00 -> 1 -ddcms055 comparesig 20 10 -> 1 -ddcms056 comparesig 20 20 -> 0 - -ddcms061 comparesig -2.0 -2.0 -> 0 -ddcms062 comparesig -2.0 -1.0 -> -1 -ddcms063 comparesig -2.0 0.0 -> -1 -ddcms064 comparesig -2.0 1.0 -> -1 -ddcms065 comparesig -2.0 2.0 -> -1 -ddcms066 comparesig -1.0 -2.0 -> 1 -ddcms067 comparesig -1.0 -1.0 -> 0 -ddcms068 comparesig -1.0 0.0 -> -1 -ddcms069 comparesig -1.0 1.0 -> -1 -ddcms070 comparesig -1.0 2.0 -> -1 -ddcms071 comparesig 0.0 -2.0 -> 1 -ddcms072 comparesig 0.0 -1.0 -> 1 -ddcms073 comparesig 0.0 0.0 -> 0 -ddcms074 comparesig 0.0 1.0 -> -1 -ddcms075 comparesig 0.0 2.0 -> -1 -ddcms076 comparesig 1.0 -2.0 -> 1 -ddcms077 comparesig 1.0 -1.0 -> 1 -ddcms078 comparesig 1.0 0.0 -> 1 -ddcms079 comparesig 1.0 1.0 -> 0 -ddcms080 comparesig 1.0 2.0 -> -1 -ddcms081 comparesig 2.0 -2.0 -> 1 -ddcms082 comparesig 2.0 -1.0 -> 1 -ddcms083 comparesig 2.0 0.0 -> 1 -ddcms085 comparesig 2.0 1.0 -> 1 -ddcms086 comparesig 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -ddcms090 comparesig 9.999999999999999E+384 9.999999999999999E+384 -> 0 -ddcms091 comparesig -9.999999999999999E+384 9.999999999999999E+384 -> -1 -ddcms092 comparesig 9.999999999999999E+384 -9.999999999999999E+384 -> 1 -ddcms093 comparesig -9.999999999999999E+384 -9.999999999999999E+384 -> 0 - --- some differing length/exponent cases -ddcms100 comparesig 7.0 7.0 -> 0 -ddcms101 comparesig 7.0 7 -> 0 -ddcms102 comparesig 7 7.0 -> 0 -ddcms103 comparesig 7E+0 7.0 -> 0 -ddcms104 comparesig 70E-1 7.0 -> 0 -ddcms105 comparesig 0.7E+1 7 -> 0 -ddcms106 comparesig 70E-1 7 -> 0 -ddcms107 comparesig 7.0 7E+0 -> 0 -ddcms108 comparesig 7.0 70E-1 -> 0 -ddcms109 comparesig 7 0.7E+1 -> 0 -ddcms110 comparesig 7 70E-1 -> 0 - -ddcms120 comparesig 8.0 7.0 -> 1 -ddcms121 comparesig 8.0 7 -> 1 -ddcms122 comparesig 8 7.0 -> 1 -ddcms123 comparesig 8E+0 7.0 -> 1 -ddcms124 comparesig 80E-1 7.0 -> 1 -ddcms125 comparesig 0.8E+1 7 -> 1 -ddcms126 comparesig 80E-1 7 -> 1 -ddcms127 comparesig 8.0 7E+0 -> 1 -ddcms128 comparesig 8.0 70E-1 -> 1 -ddcms129 comparesig 8 0.7E+1 -> 1 -ddcms130 comparesig 8 70E-1 -> 1 - -ddcms140 comparesig 8.0 9.0 -> -1 -ddcms141 comparesig 8.0 9 -> -1 -ddcms142 comparesig 8 9.0 -> -1 -ddcms143 comparesig 8E+0 9.0 -> -1 -ddcms144 comparesig 80E-1 9.0 -> -1 -ddcms145 comparesig 0.8E+1 9 -> -1 -ddcms146 comparesig 80E-1 9 -> -1 -ddcms147 comparesig 8.0 9E+0 -> -1 -ddcms148 comparesig 8.0 90E-1 -> -1 -ddcms149 comparesig 8 0.9E+1 -> -1 -ddcms150 comparesig 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -ddcms200 comparesig -7.0 7.0 -> -1 -ddcms201 comparesig -7.0 7 -> -1 -ddcms202 comparesig -7 7.0 -> -1 -ddcms203 comparesig -7E+0 7.0 -> -1 -ddcms204 comparesig -70E-1 7.0 -> -1 -ddcms205 comparesig -0.7E+1 7 -> -1 -ddcms206 comparesig -70E-1 7 -> -1 -ddcms207 comparesig -7.0 7E+0 -> -1 -ddcms208 comparesig -7.0 70E-1 -> -1 -ddcms209 comparesig -7 0.7E+1 -> -1 -ddcms210 comparesig -7 70E-1 -> -1 - -ddcms220 comparesig -8.0 7.0 -> -1 -ddcms221 comparesig -8.0 7 -> -1 -ddcms222 comparesig -8 7.0 -> -1 -ddcms223 comparesig -8E+0 7.0 -> -1 -ddcms224 comparesig -80E-1 7.0 -> -1 -ddcms225 comparesig -0.8E+1 7 -> -1 -ddcms226 comparesig -80E-1 7 -> -1 -ddcms227 comparesig -8.0 7E+0 -> -1 -ddcms228 comparesig -8.0 70E-1 -> -1 -ddcms229 comparesig -8 0.7E+1 -> -1 -ddcms230 comparesig -8 70E-1 -> -1 - -ddcms240 comparesig -8.0 9.0 -> -1 -ddcms241 comparesig -8.0 9 -> -1 -ddcms242 comparesig -8 9.0 -> -1 -ddcms243 comparesig -8E+0 9.0 -> -1 -ddcms244 comparesig -80E-1 9.0 -> -1 -ddcms245 comparesig -0.8E+1 9 -> -1 -ddcms246 comparesig -80E-1 9 -> -1 -ddcms247 comparesig -8.0 9E+0 -> -1 -ddcms248 comparesig -8.0 90E-1 -> -1 -ddcms249 comparesig -8 0.9E+1 -> -1 -ddcms250 comparesig -8 90E-1 -> -1 - --- and again, with sign changes +- .. -ddcms300 comparesig 7.0 -7.0 -> 1 -ddcms301 comparesig 7.0 -7 -> 1 -ddcms302 comparesig 7 -7.0 -> 1 -ddcms303 comparesig 7E+0 -7.0 -> 1 -ddcms304 comparesig 70E-1 -7.0 -> 1 -ddcms305 comparesig .7E+1 -7 -> 1 -ddcms306 comparesig 70E-1 -7 -> 1 -ddcms307 comparesig 7.0 -7E+0 -> 1 -ddcms308 comparesig 7.0 -70E-1 -> 1 -ddcms309 comparesig 7 -.7E+1 -> 1 -ddcms310 comparesig 7 -70E-1 -> 1 - -ddcms320 comparesig 8.0 -7.0 -> 1 -ddcms321 comparesig 8.0 -7 -> 1 -ddcms322 comparesig 8 -7.0 -> 1 -ddcms323 comparesig 8E+0 -7.0 -> 1 -ddcms324 comparesig 80E-1 -7.0 -> 1 -ddcms325 comparesig .8E+1 -7 -> 1 -ddcms326 comparesig 80E-1 -7 -> 1 -ddcms327 comparesig 8.0 -7E+0 -> 1 -ddcms328 comparesig 8.0 -70E-1 -> 1 -ddcms329 comparesig 8 -.7E+1 -> 1 -ddcms330 comparesig 8 -70E-1 -> 1 - -ddcms340 comparesig 8.0 -9.0 -> 1 -ddcms341 comparesig 8.0 -9 -> 1 -ddcms342 comparesig 8 -9.0 -> 1 -ddcms343 comparesig 8E+0 -9.0 -> 1 -ddcms344 comparesig 80E-1 -9.0 -> 1 -ddcms345 comparesig .8E+1 -9 -> 1 -ddcms346 comparesig 80E-1 -9 -> 1 -ddcms347 comparesig 8.0 -9E+0 -> 1 -ddcms348 comparesig 8.0 -90E-1 -> 1 -ddcms349 comparesig 8 -.9E+1 -> 1 -ddcms350 comparesig 8 -90E-1 -> 1 - --- and again, with sign changes -- .. -ddcms400 comparesig -7.0 -7.0 -> 0 -ddcms401 comparesig -7.0 -7 -> 0 -ddcms402 comparesig -7 -7.0 -> 0 -ddcms403 comparesig -7E+0 -7.0 -> 0 -ddcms404 comparesig -70E-1 -7.0 -> 0 -ddcms405 comparesig -.7E+1 -7 -> 0 -ddcms406 comparesig -70E-1 -7 -> 0 -ddcms407 comparesig -7.0 -7E+0 -> 0 -ddcms408 comparesig -7.0 -70E-1 -> 0 -ddcms409 comparesig -7 -.7E+1 -> 0 -ddcms410 comparesig -7 -70E-1 -> 0 - -ddcms420 comparesig -8.0 -7.0 -> -1 -ddcms421 comparesig -8.0 -7 -> -1 -ddcms422 comparesig -8 -7.0 -> -1 -ddcms423 comparesig -8E+0 -7.0 -> -1 -ddcms424 comparesig -80E-1 -7.0 -> -1 -ddcms425 comparesig -.8E+1 -7 -> -1 -ddcms426 comparesig -80E-1 -7 -> -1 -ddcms427 comparesig -8.0 -7E+0 -> -1 -ddcms428 comparesig -8.0 -70E-1 -> -1 -ddcms429 comparesig -8 -.7E+1 -> -1 -ddcms430 comparesig -8 -70E-1 -> -1 - -ddcms440 comparesig -8.0 -9.0 -> 1 -ddcms441 comparesig -8.0 -9 -> 1 -ddcms442 comparesig -8 -9.0 -> 1 -ddcms443 comparesig -8E+0 -9.0 -> 1 -ddcms444 comparesig -80E-1 -9.0 -> 1 -ddcms445 comparesig -.8E+1 -9 -> 1 -ddcms446 comparesig -80E-1 -9 -> 1 -ddcms447 comparesig -8.0 -9E+0 -> 1 -ddcms448 comparesig -8.0 -90E-1 -> 1 -ddcms449 comparesig -8 -.9E+1 -> 1 -ddcms450 comparesig -8 -90E-1 -> 1 - - --- testcases that subtract to lots of zeros at boundaries [pgr] -ddcms473 comparesig 123.4560000000000E-89 123.456E-89 -> 0 -ddcms474 comparesig 123.456000000000E+89 123.456E+89 -> 0 -ddcms475 comparesig 123.45600000000E-89 123.456E-89 -> 0 -ddcms476 comparesig 123.4560000000E+89 123.456E+89 -> 0 -ddcms477 comparesig 123.456000000E-89 123.456E-89 -> 0 -ddcms478 comparesig 123.45600000E+89 123.456E+89 -> 0 -ddcms479 comparesig 123.4560000E-89 123.456E-89 -> 0 -ddcms480 comparesig 123.456000E+89 123.456E+89 -> 0 -ddcms481 comparesig 123.45600E-89 123.456E-89 -> 0 -ddcms482 comparesig 123.4560E+89 123.456E+89 -> 0 -ddcms483 comparesig 123.456E-89 123.456E-89 -> 0 -ddcms487 comparesig 123.456E+89 123.4560000000000E+89 -> 0 -ddcms488 comparesig 123.456E-89 123.456000000000E-89 -> 0 -ddcms489 comparesig 123.456E+89 123.45600000000E+89 -> 0 -ddcms490 comparesig 123.456E-89 123.4560000000E-89 -> 0 -ddcms491 comparesig 123.456E+89 123.456000000E+89 -> 0 -ddcms492 comparesig 123.456E-89 123.45600000E-89 -> 0 -ddcms493 comparesig 123.456E+89 123.4560000E+89 -> 0 -ddcms494 comparesig 123.456E-89 123.456000E-89 -> 0 -ddcms495 comparesig 123.456E+89 123.45600E+89 -> 0 -ddcms496 comparesig 123.456E-89 123.4560E-89 -> 0 -ddcms497 comparesig 123.456E+89 123.456E+89 -> 0 - --- wide-ranging, around precision; signs equal -ddcms500 comparesig 1 1E-15 -> 1 -ddcms501 comparesig 1 1E-14 -> 1 -ddcms502 comparesig 1 1E-13 -> 1 -ddcms503 comparesig 1 1E-12 -> 1 -ddcms504 comparesig 1 1E-11 -> 1 -ddcms505 comparesig 1 1E-10 -> 1 -ddcms506 comparesig 1 1E-9 -> 1 -ddcms507 comparesig 1 1E-8 -> 1 -ddcms508 comparesig 1 1E-7 -> 1 -ddcms509 comparesig 1 1E-6 -> 1 -ddcms510 comparesig 1 1E-5 -> 1 -ddcms511 comparesig 1 1E-4 -> 1 -ddcms512 comparesig 1 1E-3 -> 1 -ddcms513 comparesig 1 1E-2 -> 1 -ddcms514 comparesig 1 1E-1 -> 1 -ddcms515 comparesig 1 1E-0 -> 0 -ddcms516 comparesig 1 1E+1 -> -1 -ddcms517 comparesig 1 1E+2 -> -1 -ddcms518 comparesig 1 1E+3 -> -1 -ddcms519 comparesig 1 1E+4 -> -1 -ddcms521 comparesig 1 1E+5 -> -1 -ddcms522 comparesig 1 1E+6 -> -1 -ddcms523 comparesig 1 1E+7 -> -1 -ddcms524 comparesig 1 1E+8 -> -1 -ddcms525 comparesig 1 1E+9 -> -1 -ddcms526 comparesig 1 1E+10 -> -1 -ddcms527 comparesig 1 1E+11 -> -1 -ddcms528 comparesig 1 1E+12 -> -1 -ddcms529 comparesig 1 1E+13 -> -1 -ddcms530 comparesig 1 1E+14 -> -1 -ddcms531 comparesig 1 1E+15 -> -1 --- LR swap -ddcms540 comparesig 1E-15 1 -> -1 -ddcms541 comparesig 1E-14 1 -> -1 -ddcms542 comparesig 1E-13 1 -> -1 -ddcms543 comparesig 1E-12 1 -> -1 -ddcms544 comparesig 1E-11 1 -> -1 -ddcms545 comparesig 1E-10 1 -> -1 -ddcms546 comparesig 1E-9 1 -> -1 -ddcms547 comparesig 1E-8 1 -> -1 -ddcms548 comparesig 1E-7 1 -> -1 -ddcms549 comparesig 1E-6 1 -> -1 -ddcms550 comparesig 1E-5 1 -> -1 -ddcms551 comparesig 1E-4 1 -> -1 -ddcms552 comparesig 1E-3 1 -> -1 -ddcms553 comparesig 1E-2 1 -> -1 -ddcms554 comparesig 1E-1 1 -> -1 -ddcms555 comparesig 1E-0 1 -> 0 -ddcms556 comparesig 1E+1 1 -> 1 -ddcms557 comparesig 1E+2 1 -> 1 -ddcms558 comparesig 1E+3 1 -> 1 -ddcms559 comparesig 1E+4 1 -> 1 -ddcms561 comparesig 1E+5 1 -> 1 -ddcms562 comparesig 1E+6 1 -> 1 -ddcms563 comparesig 1E+7 1 -> 1 -ddcms564 comparesig 1E+8 1 -> 1 -ddcms565 comparesig 1E+9 1 -> 1 -ddcms566 comparesig 1E+10 1 -> 1 -ddcms567 comparesig 1E+11 1 -> 1 -ddcms568 comparesig 1E+12 1 -> 1 -ddcms569 comparesig 1E+13 1 -> 1 -ddcms570 comparesig 1E+14 1 -> 1 -ddcms571 comparesig 1E+15 1 -> 1 --- similar with a useful coefficient, one side only -ddcms580 comparesig 0.000000987654321 1E-15 -> 1 -ddcms581 comparesig 0.000000987654321 1E-14 -> 1 -ddcms582 comparesig 0.000000987654321 1E-13 -> 1 -ddcms583 comparesig 0.000000987654321 1E-12 -> 1 -ddcms584 comparesig 0.000000987654321 1E-11 -> 1 -ddcms585 comparesig 0.000000987654321 1E-10 -> 1 -ddcms586 comparesig 0.000000987654321 1E-9 -> 1 -ddcms587 comparesig 0.000000987654321 1E-8 -> 1 -ddcms588 comparesig 0.000000987654321 1E-7 -> 1 -ddcms589 comparesig 0.000000987654321 1E-6 -> -1 -ddcms590 comparesig 0.000000987654321 1E-5 -> -1 -ddcms591 comparesig 0.000000987654321 1E-4 -> -1 -ddcms592 comparesig 0.000000987654321 1E-3 -> -1 -ddcms593 comparesig 0.000000987654321 1E-2 -> -1 -ddcms594 comparesig 0.000000987654321 1E-1 -> -1 -ddcms595 comparesig 0.000000987654321 1E-0 -> -1 -ddcms596 comparesig 0.000000987654321 1E+1 -> -1 -ddcms597 comparesig 0.000000987654321 1E+2 -> -1 -ddcms598 comparesig 0.000000987654321 1E+3 -> -1 -ddcms599 comparesig 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -ddcms600 comparesig 12 12.2345 -> -1 -ddcms601 comparesig 12.0 12.2345 -> -1 -ddcms602 comparesig 12.00 12.2345 -> -1 -ddcms603 comparesig 12.000 12.2345 -> -1 -ddcms604 comparesig 12.0000 12.2345 -> -1 -ddcms605 comparesig 12.00000 12.2345 -> -1 -ddcms606 comparesig 12.000000 12.2345 -> -1 -ddcms607 comparesig 12.0000000 12.2345 -> -1 -ddcms608 comparesig 12.00000000 12.2345 -> -1 -ddcms609 comparesig 12.000000000 12.2345 -> -1 -ddcms610 comparesig 12.1234 12 -> 1 -ddcms611 comparesig 12.1234 12.0 -> 1 -ddcms612 comparesig 12.1234 12.00 -> 1 -ddcms613 comparesig 12.1234 12.000 -> 1 -ddcms614 comparesig 12.1234 12.0000 -> 1 -ddcms615 comparesig 12.1234 12.00000 -> 1 -ddcms616 comparesig 12.1234 12.000000 -> 1 -ddcms617 comparesig 12.1234 12.0000000 -> 1 -ddcms618 comparesig 12.1234 12.00000000 -> 1 -ddcms619 comparesig 12.1234 12.000000000 -> 1 -ddcms620 comparesig -12 -12.2345 -> 1 -ddcms621 comparesig -12.0 -12.2345 -> 1 -ddcms622 comparesig -12.00 -12.2345 -> 1 -ddcms623 comparesig -12.000 -12.2345 -> 1 -ddcms624 comparesig -12.0000 -12.2345 -> 1 -ddcms625 comparesig -12.00000 -12.2345 -> 1 -ddcms626 comparesig -12.000000 -12.2345 -> 1 -ddcms627 comparesig -12.0000000 -12.2345 -> 1 -ddcms628 comparesig -12.00000000 -12.2345 -> 1 -ddcms629 comparesig -12.000000000 -12.2345 -> 1 -ddcms630 comparesig -12.1234 -12 -> -1 -ddcms631 comparesig -12.1234 -12.0 -> -1 -ddcms632 comparesig -12.1234 -12.00 -> -1 -ddcms633 comparesig -12.1234 -12.000 -> -1 -ddcms634 comparesig -12.1234 -12.0000 -> -1 -ddcms635 comparesig -12.1234 -12.00000 -> -1 -ddcms636 comparesig -12.1234 -12.000000 -> -1 -ddcms637 comparesig -12.1234 -12.0000000 -> -1 -ddcms638 comparesig -12.1234 -12.00000000 -> -1 -ddcms639 comparesig -12.1234 -12.000000000 -> -1 - --- extended zeros -ddcms640 comparesig 0 0 -> 0 -ddcms641 comparesig 0 -0 -> 0 -ddcms642 comparesig 0 -0.0 -> 0 -ddcms643 comparesig 0 0.0 -> 0 -ddcms644 comparesig -0 0 -> 0 -ddcms645 comparesig -0 -0 -> 0 -ddcms646 comparesig -0 -0.0 -> 0 -ddcms647 comparesig -0 0.0 -> 0 -ddcms648 comparesig 0.0 0 -> 0 -ddcms649 comparesig 0.0 -0 -> 0 -ddcms650 comparesig 0.0 -0.0 -> 0 -ddcms651 comparesig 0.0 0.0 -> 0 -ddcms652 comparesig -0.0 0 -> 0 -ddcms653 comparesig -0.0 -0 -> 0 -ddcms654 comparesig -0.0 -0.0 -> 0 -ddcms655 comparesig -0.0 0.0 -> 0 - -ddcms656 comparesig -0E1 0.0 -> 0 -ddcms657 comparesig -0E2 0.0 -> 0 -ddcms658 comparesig 0E1 0.0 -> 0 -ddcms659 comparesig 0E2 0.0 -> 0 -ddcms660 comparesig -0E1 0 -> 0 -ddcms661 comparesig -0E2 0 -> 0 -ddcms662 comparesig 0E1 0 -> 0 -ddcms663 comparesig 0E2 0 -> 0 -ddcms664 comparesig -0E1 -0E1 -> 0 -ddcms665 comparesig -0E2 -0E1 -> 0 -ddcms666 comparesig 0E1 -0E1 -> 0 -ddcms667 comparesig 0E2 -0E1 -> 0 -ddcms668 comparesig -0E1 -0E2 -> 0 -ddcms669 comparesig -0E2 -0E2 -> 0 -ddcms670 comparesig 0E1 -0E2 -> 0 -ddcms671 comparesig 0E2 -0E2 -> 0 -ddcms672 comparesig -0E1 0E1 -> 0 -ddcms673 comparesig -0E2 0E1 -> 0 -ddcms674 comparesig 0E1 0E1 -> 0 -ddcms675 comparesig 0E2 0E1 -> 0 -ddcms676 comparesig -0E1 0E2 -> 0 -ddcms677 comparesig -0E2 0E2 -> 0 -ddcms678 comparesig 0E1 0E2 -> 0 -ddcms679 comparesig 0E2 0E2 -> 0 - --- trailing zeros; unit-y -ddcms680 comparesig 12 12 -> 0 -ddcms681 comparesig 12 12.0 -> 0 -ddcms682 comparesig 12 12.00 -> 0 -ddcms683 comparesig 12 12.000 -> 0 -ddcms684 comparesig 12 12.0000 -> 0 -ddcms685 comparesig 12 12.00000 -> 0 -ddcms686 comparesig 12 12.000000 -> 0 -ddcms687 comparesig 12 12.0000000 -> 0 -ddcms688 comparesig 12 12.00000000 -> 0 -ddcms689 comparesig 12 12.000000000 -> 0 -ddcms690 comparesig 12 12 -> 0 -ddcms691 comparesig 12.0 12 -> 0 -ddcms692 comparesig 12.00 12 -> 0 -ddcms693 comparesig 12.000 12 -> 0 -ddcms694 comparesig 12.0000 12 -> 0 -ddcms695 comparesig 12.00000 12 -> 0 -ddcms696 comparesig 12.000000 12 -> 0 -ddcms697 comparesig 12.0000000 12 -> 0 -ddcms698 comparesig 12.00000000 12 -> 0 -ddcms699 comparesig 12.000000000 12 -> 0 - --- first, second, & last digit -ddcms700 comparesig 1234567890123456 1234567890123455 -> 1 -ddcms701 comparesig 1234567890123456 1234567890123456 -> 0 -ddcms702 comparesig 1234567890123456 1234567890123457 -> -1 -ddcms703 comparesig 1234567890123456 0234567890123456 -> 1 -ddcms704 comparesig 1234567890123456 1234567890123456 -> 0 -ddcms705 comparesig 1234567890123456 2234567890123456 -> -1 -ddcms706 comparesig 1134567890123456 1034567890123456 -> 1 -ddcms707 comparesig 1134567890123456 1134567890123456 -> 0 -ddcms708 comparesig 1134567890123456 1234567890123456 -> -1 - --- miscellaneous -ddcms721 comparesig 12345678000 1 -> 1 -ddcms722 comparesig 1 12345678000 -> -1 -ddcms723 comparesig 1234567800 1 -> 1 -ddcms724 comparesig 1 1234567800 -> -1 -ddcms725 comparesig 1234567890 1 -> 1 -ddcms726 comparesig 1 1234567890 -> -1 -ddcms727 comparesig 1234567891 1 -> 1 -ddcms728 comparesig 1 1234567891 -> -1 -ddcms729 comparesig 12345678901 1 -> 1 -ddcms730 comparesig 1 12345678901 -> -1 -ddcms731 comparesig 1234567896 1 -> 1 -ddcms732 comparesig 1 1234567896 -> -1 - --- residue cases at lower precision -ddcms740 comparesig 1 0.9999999 -> 1 -ddcms741 comparesig 1 0.999999 -> 1 -ddcms742 comparesig 1 0.99999 -> 1 -ddcms743 comparesig 1 1.0000 -> 0 -ddcms744 comparesig 1 1.00001 -> -1 -ddcms745 comparesig 1 1.000001 -> -1 -ddcms746 comparesig 1 1.0000001 -> -1 -ddcms750 comparesig 0.9999999 1 -> -1 -ddcms751 comparesig 0.999999 1 -> -1 -ddcms752 comparesig 0.99999 1 -> -1 -ddcms753 comparesig 1.0000 1 -> 0 -ddcms754 comparesig 1.00001 1 -> 1 -ddcms755 comparesig 1.000001 1 -> 1 -ddcms756 comparesig 1.0000001 1 -> 1 - --- Specials -ddcms780 comparesig Inf -Inf -> 1 -ddcms781 comparesig Inf -1000 -> 1 -ddcms782 comparesig Inf -1 -> 1 -ddcms783 comparesig Inf -0 -> 1 -ddcms784 comparesig Inf 0 -> 1 -ddcms785 comparesig Inf 1 -> 1 -ddcms786 comparesig Inf 1000 -> 1 -ddcms787 comparesig Inf Inf -> 0 -ddcms788 comparesig -1000 Inf -> -1 -ddcms789 comparesig -Inf Inf -> -1 -ddcms790 comparesig -1 Inf -> -1 -ddcms791 comparesig -0 Inf -> -1 -ddcms792 comparesig 0 Inf -> -1 -ddcms793 comparesig 1 Inf -> -1 -ddcms794 comparesig 1000 Inf -> -1 -ddcms795 comparesig Inf Inf -> 0 - -ddcms800 comparesig -Inf -Inf -> 0 -ddcms801 comparesig -Inf -1000 -> -1 -ddcms802 comparesig -Inf -1 -> -1 -ddcms803 comparesig -Inf -0 -> -1 -ddcms804 comparesig -Inf 0 -> -1 -ddcms805 comparesig -Inf 1 -> -1 -ddcms806 comparesig -Inf 1000 -> -1 -ddcms807 comparesig -Inf Inf -> -1 -ddcms808 comparesig -Inf -Inf -> 0 -ddcms809 comparesig -1000 -Inf -> 1 -ddcms810 comparesig -1 -Inf -> 1 -ddcms811 comparesig -0 -Inf -> 1 -ddcms812 comparesig 0 -Inf -> 1 -ddcms813 comparesig 1 -Inf -> 1 -ddcms814 comparesig 1000 -Inf -> 1 -ddcms815 comparesig Inf -Inf -> 1 - -ddcms821 comparesig NaN -Inf -> NaN Invalid_operation -ddcms822 comparesig NaN -1000 -> NaN Invalid_operation -ddcms823 comparesig NaN -1 -> NaN Invalid_operation -ddcms824 comparesig NaN -0 -> NaN Invalid_operation -ddcms825 comparesig NaN 0 -> NaN Invalid_operation -ddcms826 comparesig NaN 1 -> NaN Invalid_operation -ddcms827 comparesig NaN 1000 -> NaN Invalid_operation -ddcms828 comparesig NaN Inf -> NaN Invalid_operation -ddcms829 comparesig NaN NaN -> NaN Invalid_operation -ddcms830 comparesig -Inf NaN -> NaN Invalid_operation -ddcms831 comparesig -1000 NaN -> NaN Invalid_operation -ddcms832 comparesig -1 NaN -> NaN Invalid_operation -ddcms833 comparesig -0 NaN -> NaN Invalid_operation -ddcms834 comparesig 0 NaN -> NaN Invalid_operation -ddcms835 comparesig 1 NaN -> NaN Invalid_operation -ddcms836 comparesig 1000 NaN -> NaN Invalid_operation -ddcms837 comparesig Inf NaN -> NaN Invalid_operation -ddcms838 comparesig -NaN -NaN -> -NaN Invalid_operation -ddcms839 comparesig +NaN -NaN -> NaN Invalid_operation -ddcms840 comparesig -NaN +NaN -> -NaN Invalid_operation - -ddcms841 comparesig sNaN -Inf -> NaN Invalid_operation -ddcms842 comparesig sNaN -1000 -> NaN Invalid_operation -ddcms843 comparesig sNaN -1 -> NaN Invalid_operation -ddcms844 comparesig sNaN -0 -> NaN Invalid_operation -ddcms845 comparesig sNaN 0 -> NaN Invalid_operation -ddcms846 comparesig sNaN 1 -> NaN Invalid_operation -ddcms847 comparesig sNaN 1000 -> NaN Invalid_operation -ddcms848 comparesig sNaN NaN -> NaN Invalid_operation -ddcms849 comparesig sNaN sNaN -> NaN Invalid_operation -ddcms850 comparesig NaN sNaN -> NaN Invalid_operation -ddcms851 comparesig -Inf sNaN -> NaN Invalid_operation -ddcms852 comparesig -1000 sNaN -> NaN Invalid_operation -ddcms853 comparesig -1 sNaN -> NaN Invalid_operation -ddcms854 comparesig -0 sNaN -> NaN Invalid_operation -ddcms855 comparesig 0 sNaN -> NaN Invalid_operation -ddcms856 comparesig 1 sNaN -> NaN Invalid_operation -ddcms857 comparesig 1000 sNaN -> NaN Invalid_operation -ddcms858 comparesig Inf sNaN -> NaN Invalid_operation -ddcms859 comparesig NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddcms860 comparesig NaN9 -Inf -> NaN9 Invalid_operation -ddcms861 comparesig NaN8 999 -> NaN8 Invalid_operation -ddcms862 comparesig NaN77 Inf -> NaN77 Invalid_operation -ddcms863 comparesig -NaN67 NaN5 -> -NaN67 Invalid_operation -ddcms864 comparesig -Inf -NaN4 -> -NaN4 Invalid_operation -ddcms865 comparesig -999 -NaN33 -> -NaN33 Invalid_operation -ddcms866 comparesig Inf NaN2 -> NaN2 Invalid_operation -ddcms867 comparesig -NaN41 -NaN42 -> -NaN41 Invalid_operation -ddcms868 comparesig +NaN41 -NaN42 -> NaN41 Invalid_operation -ddcms869 comparesig -NaN41 +NaN42 -> -NaN41 Invalid_operation -ddcms870 comparesig +NaN41 +NaN42 -> NaN41 Invalid_operation - -ddcms871 comparesig -sNaN99 -Inf -> -NaN99 Invalid_operation -ddcms872 comparesig sNaN98 -11 -> NaN98 Invalid_operation -ddcms873 comparesig sNaN97 NaN -> NaN97 Invalid_operation -ddcms874 comparesig sNaN16 sNaN94 -> NaN16 Invalid_operation -ddcms875 comparesig NaN85 sNaN83 -> NaN83 Invalid_operation -ddcms876 comparesig -Inf sNaN92 -> NaN92 Invalid_operation -ddcms877 comparesig 088 sNaN81 -> NaN81 Invalid_operation -ddcms878 comparesig Inf sNaN90 -> NaN90 Invalid_operation -ddcms879 comparesig NaN -sNaN89 -> -NaN89 Invalid_operation - --- wide range -ddcms880 comparesig +1.23456789012345E-0 9E+384 -> -1 -ddcms881 comparesig 9E+384 +1.23456789012345E-0 -> 1 -ddcms882 comparesig +0.100 9E-383 -> 1 -ddcms883 comparesig 9E-383 +0.100 -> -1 -ddcms885 comparesig -1.23456789012345E-0 9E+384 -> -1 -ddcms886 comparesig 9E+384 -1.23456789012345E-0 -> 1 -ddcms887 comparesig -0.100 9E-383 -> -1 -ddcms888 comparesig 9E-383 -0.100 -> 1 - --- signs -ddcms901 comparesig 1e+77 1e+11 -> 1 -ddcms902 comparesig 1e+77 -1e+11 -> 1 -ddcms903 comparesig -1e+77 1e+11 -> -1 -ddcms904 comparesig -1e+77 -1e+11 -> -1 -ddcms905 comparesig 1e-77 1e-11 -> -1 -ddcms906 comparesig 1e-77 -1e-11 -> 1 -ddcms907 comparesig -1e-77 1e-11 -> -1 -ddcms908 comparesig -1e-77 -1e-11 -> 1 - --- Null tests -ddcms990 comparesig 10 # -> NaN Invalid_operation -ddcms991 comparesig # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddCompareSig.decTest -- decDouble comparison; all NaNs signal -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddcms001 comparesig -2 -2 -> 0 +ddcms002 comparesig -2 -1 -> -1 +ddcms003 comparesig -2 0 -> -1 +ddcms004 comparesig -2 1 -> -1 +ddcms005 comparesig -2 2 -> -1 +ddcms006 comparesig -1 -2 -> 1 +ddcms007 comparesig -1 -1 -> 0 +ddcms008 comparesig -1 0 -> -1 +ddcms009 comparesig -1 1 -> -1 +ddcms010 comparesig -1 2 -> -1 +ddcms011 comparesig 0 -2 -> 1 +ddcms012 comparesig 0 -1 -> 1 +ddcms013 comparesig 0 0 -> 0 +ddcms014 comparesig 0 1 -> -1 +ddcms015 comparesig 0 2 -> -1 +ddcms016 comparesig 1 -2 -> 1 +ddcms017 comparesig 1 -1 -> 1 +ddcms018 comparesig 1 0 -> 1 +ddcms019 comparesig 1 1 -> 0 +ddcms020 comparesig 1 2 -> -1 +ddcms021 comparesig 2 -2 -> 1 +ddcms022 comparesig 2 -1 -> 1 +ddcms023 comparesig 2 0 -> 1 +ddcms025 comparesig 2 1 -> 1 +ddcms026 comparesig 2 2 -> 0 + +ddcms031 comparesig -20 -20 -> 0 +ddcms032 comparesig -20 -10 -> -1 +ddcms033 comparesig -20 00 -> -1 +ddcms034 comparesig -20 10 -> -1 +ddcms035 comparesig -20 20 -> -1 +ddcms036 comparesig -10 -20 -> 1 +ddcms037 comparesig -10 -10 -> 0 +ddcms038 comparesig -10 00 -> -1 +ddcms039 comparesig -10 10 -> -1 +ddcms040 comparesig -10 20 -> -1 +ddcms041 comparesig 00 -20 -> 1 +ddcms042 comparesig 00 -10 -> 1 +ddcms043 comparesig 00 00 -> 0 +ddcms044 comparesig 00 10 -> -1 +ddcms045 comparesig 00 20 -> -1 +ddcms046 comparesig 10 -20 -> 1 +ddcms047 comparesig 10 -10 -> 1 +ddcms048 comparesig 10 00 -> 1 +ddcms049 comparesig 10 10 -> 0 +ddcms050 comparesig 10 20 -> -1 +ddcms051 comparesig 20 -20 -> 1 +ddcms052 comparesig 20 -10 -> 1 +ddcms053 comparesig 20 00 -> 1 +ddcms055 comparesig 20 10 -> 1 +ddcms056 comparesig 20 20 -> 0 + +ddcms061 comparesig -2.0 -2.0 -> 0 +ddcms062 comparesig -2.0 -1.0 -> -1 +ddcms063 comparesig -2.0 0.0 -> -1 +ddcms064 comparesig -2.0 1.0 -> -1 +ddcms065 comparesig -2.0 2.0 -> -1 +ddcms066 comparesig -1.0 -2.0 -> 1 +ddcms067 comparesig -1.0 -1.0 -> 0 +ddcms068 comparesig -1.0 0.0 -> -1 +ddcms069 comparesig -1.0 1.0 -> -1 +ddcms070 comparesig -1.0 2.0 -> -1 +ddcms071 comparesig 0.0 -2.0 -> 1 +ddcms072 comparesig 0.0 -1.0 -> 1 +ddcms073 comparesig 0.0 0.0 -> 0 +ddcms074 comparesig 0.0 1.0 -> -1 +ddcms075 comparesig 0.0 2.0 -> -1 +ddcms076 comparesig 1.0 -2.0 -> 1 +ddcms077 comparesig 1.0 -1.0 -> 1 +ddcms078 comparesig 1.0 0.0 -> 1 +ddcms079 comparesig 1.0 1.0 -> 0 +ddcms080 comparesig 1.0 2.0 -> -1 +ddcms081 comparesig 2.0 -2.0 -> 1 +ddcms082 comparesig 2.0 -1.0 -> 1 +ddcms083 comparesig 2.0 0.0 -> 1 +ddcms085 comparesig 2.0 1.0 -> 1 +ddcms086 comparesig 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +ddcms090 comparesig 9.999999999999999E+384 9.999999999999999E+384 -> 0 +ddcms091 comparesig -9.999999999999999E+384 9.999999999999999E+384 -> -1 +ddcms092 comparesig 9.999999999999999E+384 -9.999999999999999E+384 -> 1 +ddcms093 comparesig -9.999999999999999E+384 -9.999999999999999E+384 -> 0 + +-- some differing length/exponent cases +ddcms100 comparesig 7.0 7.0 -> 0 +ddcms101 comparesig 7.0 7 -> 0 +ddcms102 comparesig 7 7.0 -> 0 +ddcms103 comparesig 7E+0 7.0 -> 0 +ddcms104 comparesig 70E-1 7.0 -> 0 +ddcms105 comparesig 0.7E+1 7 -> 0 +ddcms106 comparesig 70E-1 7 -> 0 +ddcms107 comparesig 7.0 7E+0 -> 0 +ddcms108 comparesig 7.0 70E-1 -> 0 +ddcms109 comparesig 7 0.7E+1 -> 0 +ddcms110 comparesig 7 70E-1 -> 0 + +ddcms120 comparesig 8.0 7.0 -> 1 +ddcms121 comparesig 8.0 7 -> 1 +ddcms122 comparesig 8 7.0 -> 1 +ddcms123 comparesig 8E+0 7.0 -> 1 +ddcms124 comparesig 80E-1 7.0 -> 1 +ddcms125 comparesig 0.8E+1 7 -> 1 +ddcms126 comparesig 80E-1 7 -> 1 +ddcms127 comparesig 8.0 7E+0 -> 1 +ddcms128 comparesig 8.0 70E-1 -> 1 +ddcms129 comparesig 8 0.7E+1 -> 1 +ddcms130 comparesig 8 70E-1 -> 1 + +ddcms140 comparesig 8.0 9.0 -> -1 +ddcms141 comparesig 8.0 9 -> -1 +ddcms142 comparesig 8 9.0 -> -1 +ddcms143 comparesig 8E+0 9.0 -> -1 +ddcms144 comparesig 80E-1 9.0 -> -1 +ddcms145 comparesig 0.8E+1 9 -> -1 +ddcms146 comparesig 80E-1 9 -> -1 +ddcms147 comparesig 8.0 9E+0 -> -1 +ddcms148 comparesig 8.0 90E-1 -> -1 +ddcms149 comparesig 8 0.9E+1 -> -1 +ddcms150 comparesig 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +ddcms200 comparesig -7.0 7.0 -> -1 +ddcms201 comparesig -7.0 7 -> -1 +ddcms202 comparesig -7 7.0 -> -1 +ddcms203 comparesig -7E+0 7.0 -> -1 +ddcms204 comparesig -70E-1 7.0 -> -1 +ddcms205 comparesig -0.7E+1 7 -> -1 +ddcms206 comparesig -70E-1 7 -> -1 +ddcms207 comparesig -7.0 7E+0 -> -1 +ddcms208 comparesig -7.0 70E-1 -> -1 +ddcms209 comparesig -7 0.7E+1 -> -1 +ddcms210 comparesig -7 70E-1 -> -1 + +ddcms220 comparesig -8.0 7.0 -> -1 +ddcms221 comparesig -8.0 7 -> -1 +ddcms222 comparesig -8 7.0 -> -1 +ddcms223 comparesig -8E+0 7.0 -> -1 +ddcms224 comparesig -80E-1 7.0 -> -1 +ddcms225 comparesig -0.8E+1 7 -> -1 +ddcms226 comparesig -80E-1 7 -> -1 +ddcms227 comparesig -8.0 7E+0 -> -1 +ddcms228 comparesig -8.0 70E-1 -> -1 +ddcms229 comparesig -8 0.7E+1 -> -1 +ddcms230 comparesig -8 70E-1 -> -1 + +ddcms240 comparesig -8.0 9.0 -> -1 +ddcms241 comparesig -8.0 9 -> -1 +ddcms242 comparesig -8 9.0 -> -1 +ddcms243 comparesig -8E+0 9.0 -> -1 +ddcms244 comparesig -80E-1 9.0 -> -1 +ddcms245 comparesig -0.8E+1 9 -> -1 +ddcms246 comparesig -80E-1 9 -> -1 +ddcms247 comparesig -8.0 9E+0 -> -1 +ddcms248 comparesig -8.0 90E-1 -> -1 +ddcms249 comparesig -8 0.9E+1 -> -1 +ddcms250 comparesig -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +ddcms300 comparesig 7.0 -7.0 -> 1 +ddcms301 comparesig 7.0 -7 -> 1 +ddcms302 comparesig 7 -7.0 -> 1 +ddcms303 comparesig 7E+0 -7.0 -> 1 +ddcms304 comparesig 70E-1 -7.0 -> 1 +ddcms305 comparesig .7E+1 -7 -> 1 +ddcms306 comparesig 70E-1 -7 -> 1 +ddcms307 comparesig 7.0 -7E+0 -> 1 +ddcms308 comparesig 7.0 -70E-1 -> 1 +ddcms309 comparesig 7 -.7E+1 -> 1 +ddcms310 comparesig 7 -70E-1 -> 1 + +ddcms320 comparesig 8.0 -7.0 -> 1 +ddcms321 comparesig 8.0 -7 -> 1 +ddcms322 comparesig 8 -7.0 -> 1 +ddcms323 comparesig 8E+0 -7.0 -> 1 +ddcms324 comparesig 80E-1 -7.0 -> 1 +ddcms325 comparesig .8E+1 -7 -> 1 +ddcms326 comparesig 80E-1 -7 -> 1 +ddcms327 comparesig 8.0 -7E+0 -> 1 +ddcms328 comparesig 8.0 -70E-1 -> 1 +ddcms329 comparesig 8 -.7E+1 -> 1 +ddcms330 comparesig 8 -70E-1 -> 1 + +ddcms340 comparesig 8.0 -9.0 -> 1 +ddcms341 comparesig 8.0 -9 -> 1 +ddcms342 comparesig 8 -9.0 -> 1 +ddcms343 comparesig 8E+0 -9.0 -> 1 +ddcms344 comparesig 80E-1 -9.0 -> 1 +ddcms345 comparesig .8E+1 -9 -> 1 +ddcms346 comparesig 80E-1 -9 -> 1 +ddcms347 comparesig 8.0 -9E+0 -> 1 +ddcms348 comparesig 8.0 -90E-1 -> 1 +ddcms349 comparesig 8 -.9E+1 -> 1 +ddcms350 comparesig 8 -90E-1 -> 1 + +-- and again, with sign changes -- .. +ddcms400 comparesig -7.0 -7.0 -> 0 +ddcms401 comparesig -7.0 -7 -> 0 +ddcms402 comparesig -7 -7.0 -> 0 +ddcms403 comparesig -7E+0 -7.0 -> 0 +ddcms404 comparesig -70E-1 -7.0 -> 0 +ddcms405 comparesig -.7E+1 -7 -> 0 +ddcms406 comparesig -70E-1 -7 -> 0 +ddcms407 comparesig -7.0 -7E+0 -> 0 +ddcms408 comparesig -7.0 -70E-1 -> 0 +ddcms409 comparesig -7 -.7E+1 -> 0 +ddcms410 comparesig -7 -70E-1 -> 0 + +ddcms420 comparesig -8.0 -7.0 -> -1 +ddcms421 comparesig -8.0 -7 -> -1 +ddcms422 comparesig -8 -7.0 -> -1 +ddcms423 comparesig -8E+0 -7.0 -> -1 +ddcms424 comparesig -80E-1 -7.0 -> -1 +ddcms425 comparesig -.8E+1 -7 -> -1 +ddcms426 comparesig -80E-1 -7 -> -1 +ddcms427 comparesig -8.0 -7E+0 -> -1 +ddcms428 comparesig -8.0 -70E-1 -> -1 +ddcms429 comparesig -8 -.7E+1 -> -1 +ddcms430 comparesig -8 -70E-1 -> -1 + +ddcms440 comparesig -8.0 -9.0 -> 1 +ddcms441 comparesig -8.0 -9 -> 1 +ddcms442 comparesig -8 -9.0 -> 1 +ddcms443 comparesig -8E+0 -9.0 -> 1 +ddcms444 comparesig -80E-1 -9.0 -> 1 +ddcms445 comparesig -.8E+1 -9 -> 1 +ddcms446 comparesig -80E-1 -9 -> 1 +ddcms447 comparesig -8.0 -9E+0 -> 1 +ddcms448 comparesig -8.0 -90E-1 -> 1 +ddcms449 comparesig -8 -.9E+1 -> 1 +ddcms450 comparesig -8 -90E-1 -> 1 + + +-- testcases that subtract to lots of zeros at boundaries [pgr] +ddcms473 comparesig 123.4560000000000E-89 123.456E-89 -> 0 +ddcms474 comparesig 123.456000000000E+89 123.456E+89 -> 0 +ddcms475 comparesig 123.45600000000E-89 123.456E-89 -> 0 +ddcms476 comparesig 123.4560000000E+89 123.456E+89 -> 0 +ddcms477 comparesig 123.456000000E-89 123.456E-89 -> 0 +ddcms478 comparesig 123.45600000E+89 123.456E+89 -> 0 +ddcms479 comparesig 123.4560000E-89 123.456E-89 -> 0 +ddcms480 comparesig 123.456000E+89 123.456E+89 -> 0 +ddcms481 comparesig 123.45600E-89 123.456E-89 -> 0 +ddcms482 comparesig 123.4560E+89 123.456E+89 -> 0 +ddcms483 comparesig 123.456E-89 123.456E-89 -> 0 +ddcms487 comparesig 123.456E+89 123.4560000000000E+89 -> 0 +ddcms488 comparesig 123.456E-89 123.456000000000E-89 -> 0 +ddcms489 comparesig 123.456E+89 123.45600000000E+89 -> 0 +ddcms490 comparesig 123.456E-89 123.4560000000E-89 -> 0 +ddcms491 comparesig 123.456E+89 123.456000000E+89 -> 0 +ddcms492 comparesig 123.456E-89 123.45600000E-89 -> 0 +ddcms493 comparesig 123.456E+89 123.4560000E+89 -> 0 +ddcms494 comparesig 123.456E-89 123.456000E-89 -> 0 +ddcms495 comparesig 123.456E+89 123.45600E+89 -> 0 +ddcms496 comparesig 123.456E-89 123.4560E-89 -> 0 +ddcms497 comparesig 123.456E+89 123.456E+89 -> 0 + +-- wide-ranging, around precision; signs equal +ddcms500 comparesig 1 1E-15 -> 1 +ddcms501 comparesig 1 1E-14 -> 1 +ddcms502 comparesig 1 1E-13 -> 1 +ddcms503 comparesig 1 1E-12 -> 1 +ddcms504 comparesig 1 1E-11 -> 1 +ddcms505 comparesig 1 1E-10 -> 1 +ddcms506 comparesig 1 1E-9 -> 1 +ddcms507 comparesig 1 1E-8 -> 1 +ddcms508 comparesig 1 1E-7 -> 1 +ddcms509 comparesig 1 1E-6 -> 1 +ddcms510 comparesig 1 1E-5 -> 1 +ddcms511 comparesig 1 1E-4 -> 1 +ddcms512 comparesig 1 1E-3 -> 1 +ddcms513 comparesig 1 1E-2 -> 1 +ddcms514 comparesig 1 1E-1 -> 1 +ddcms515 comparesig 1 1E-0 -> 0 +ddcms516 comparesig 1 1E+1 -> -1 +ddcms517 comparesig 1 1E+2 -> -1 +ddcms518 comparesig 1 1E+3 -> -1 +ddcms519 comparesig 1 1E+4 -> -1 +ddcms521 comparesig 1 1E+5 -> -1 +ddcms522 comparesig 1 1E+6 -> -1 +ddcms523 comparesig 1 1E+7 -> -1 +ddcms524 comparesig 1 1E+8 -> -1 +ddcms525 comparesig 1 1E+9 -> -1 +ddcms526 comparesig 1 1E+10 -> -1 +ddcms527 comparesig 1 1E+11 -> -1 +ddcms528 comparesig 1 1E+12 -> -1 +ddcms529 comparesig 1 1E+13 -> -1 +ddcms530 comparesig 1 1E+14 -> -1 +ddcms531 comparesig 1 1E+15 -> -1 +-- LR swap +ddcms540 comparesig 1E-15 1 -> -1 +ddcms541 comparesig 1E-14 1 -> -1 +ddcms542 comparesig 1E-13 1 -> -1 +ddcms543 comparesig 1E-12 1 -> -1 +ddcms544 comparesig 1E-11 1 -> -1 +ddcms545 comparesig 1E-10 1 -> -1 +ddcms546 comparesig 1E-9 1 -> -1 +ddcms547 comparesig 1E-8 1 -> -1 +ddcms548 comparesig 1E-7 1 -> -1 +ddcms549 comparesig 1E-6 1 -> -1 +ddcms550 comparesig 1E-5 1 -> -1 +ddcms551 comparesig 1E-4 1 -> -1 +ddcms552 comparesig 1E-3 1 -> -1 +ddcms553 comparesig 1E-2 1 -> -1 +ddcms554 comparesig 1E-1 1 -> -1 +ddcms555 comparesig 1E-0 1 -> 0 +ddcms556 comparesig 1E+1 1 -> 1 +ddcms557 comparesig 1E+2 1 -> 1 +ddcms558 comparesig 1E+3 1 -> 1 +ddcms559 comparesig 1E+4 1 -> 1 +ddcms561 comparesig 1E+5 1 -> 1 +ddcms562 comparesig 1E+6 1 -> 1 +ddcms563 comparesig 1E+7 1 -> 1 +ddcms564 comparesig 1E+8 1 -> 1 +ddcms565 comparesig 1E+9 1 -> 1 +ddcms566 comparesig 1E+10 1 -> 1 +ddcms567 comparesig 1E+11 1 -> 1 +ddcms568 comparesig 1E+12 1 -> 1 +ddcms569 comparesig 1E+13 1 -> 1 +ddcms570 comparesig 1E+14 1 -> 1 +ddcms571 comparesig 1E+15 1 -> 1 +-- similar with a useful coefficient, one side only +ddcms580 comparesig 0.000000987654321 1E-15 -> 1 +ddcms581 comparesig 0.000000987654321 1E-14 -> 1 +ddcms582 comparesig 0.000000987654321 1E-13 -> 1 +ddcms583 comparesig 0.000000987654321 1E-12 -> 1 +ddcms584 comparesig 0.000000987654321 1E-11 -> 1 +ddcms585 comparesig 0.000000987654321 1E-10 -> 1 +ddcms586 comparesig 0.000000987654321 1E-9 -> 1 +ddcms587 comparesig 0.000000987654321 1E-8 -> 1 +ddcms588 comparesig 0.000000987654321 1E-7 -> 1 +ddcms589 comparesig 0.000000987654321 1E-6 -> -1 +ddcms590 comparesig 0.000000987654321 1E-5 -> -1 +ddcms591 comparesig 0.000000987654321 1E-4 -> -1 +ddcms592 comparesig 0.000000987654321 1E-3 -> -1 +ddcms593 comparesig 0.000000987654321 1E-2 -> -1 +ddcms594 comparesig 0.000000987654321 1E-1 -> -1 +ddcms595 comparesig 0.000000987654321 1E-0 -> -1 +ddcms596 comparesig 0.000000987654321 1E+1 -> -1 +ddcms597 comparesig 0.000000987654321 1E+2 -> -1 +ddcms598 comparesig 0.000000987654321 1E+3 -> -1 +ddcms599 comparesig 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +ddcms600 comparesig 12 12.2345 -> -1 +ddcms601 comparesig 12.0 12.2345 -> -1 +ddcms602 comparesig 12.00 12.2345 -> -1 +ddcms603 comparesig 12.000 12.2345 -> -1 +ddcms604 comparesig 12.0000 12.2345 -> -1 +ddcms605 comparesig 12.00000 12.2345 -> -1 +ddcms606 comparesig 12.000000 12.2345 -> -1 +ddcms607 comparesig 12.0000000 12.2345 -> -1 +ddcms608 comparesig 12.00000000 12.2345 -> -1 +ddcms609 comparesig 12.000000000 12.2345 -> -1 +ddcms610 comparesig 12.1234 12 -> 1 +ddcms611 comparesig 12.1234 12.0 -> 1 +ddcms612 comparesig 12.1234 12.00 -> 1 +ddcms613 comparesig 12.1234 12.000 -> 1 +ddcms614 comparesig 12.1234 12.0000 -> 1 +ddcms615 comparesig 12.1234 12.00000 -> 1 +ddcms616 comparesig 12.1234 12.000000 -> 1 +ddcms617 comparesig 12.1234 12.0000000 -> 1 +ddcms618 comparesig 12.1234 12.00000000 -> 1 +ddcms619 comparesig 12.1234 12.000000000 -> 1 +ddcms620 comparesig -12 -12.2345 -> 1 +ddcms621 comparesig -12.0 -12.2345 -> 1 +ddcms622 comparesig -12.00 -12.2345 -> 1 +ddcms623 comparesig -12.000 -12.2345 -> 1 +ddcms624 comparesig -12.0000 -12.2345 -> 1 +ddcms625 comparesig -12.00000 -12.2345 -> 1 +ddcms626 comparesig -12.000000 -12.2345 -> 1 +ddcms627 comparesig -12.0000000 -12.2345 -> 1 +ddcms628 comparesig -12.00000000 -12.2345 -> 1 +ddcms629 comparesig -12.000000000 -12.2345 -> 1 +ddcms630 comparesig -12.1234 -12 -> -1 +ddcms631 comparesig -12.1234 -12.0 -> -1 +ddcms632 comparesig -12.1234 -12.00 -> -1 +ddcms633 comparesig -12.1234 -12.000 -> -1 +ddcms634 comparesig -12.1234 -12.0000 -> -1 +ddcms635 comparesig -12.1234 -12.00000 -> -1 +ddcms636 comparesig -12.1234 -12.000000 -> -1 +ddcms637 comparesig -12.1234 -12.0000000 -> -1 +ddcms638 comparesig -12.1234 -12.00000000 -> -1 +ddcms639 comparesig -12.1234 -12.000000000 -> -1 + +-- extended zeros +ddcms640 comparesig 0 0 -> 0 +ddcms641 comparesig 0 -0 -> 0 +ddcms642 comparesig 0 -0.0 -> 0 +ddcms643 comparesig 0 0.0 -> 0 +ddcms644 comparesig -0 0 -> 0 +ddcms645 comparesig -0 -0 -> 0 +ddcms646 comparesig -0 -0.0 -> 0 +ddcms647 comparesig -0 0.0 -> 0 +ddcms648 comparesig 0.0 0 -> 0 +ddcms649 comparesig 0.0 -0 -> 0 +ddcms650 comparesig 0.0 -0.0 -> 0 +ddcms651 comparesig 0.0 0.0 -> 0 +ddcms652 comparesig -0.0 0 -> 0 +ddcms653 comparesig -0.0 -0 -> 0 +ddcms654 comparesig -0.0 -0.0 -> 0 +ddcms655 comparesig -0.0 0.0 -> 0 + +ddcms656 comparesig -0E1 0.0 -> 0 +ddcms657 comparesig -0E2 0.0 -> 0 +ddcms658 comparesig 0E1 0.0 -> 0 +ddcms659 comparesig 0E2 0.0 -> 0 +ddcms660 comparesig -0E1 0 -> 0 +ddcms661 comparesig -0E2 0 -> 0 +ddcms662 comparesig 0E1 0 -> 0 +ddcms663 comparesig 0E2 0 -> 0 +ddcms664 comparesig -0E1 -0E1 -> 0 +ddcms665 comparesig -0E2 -0E1 -> 0 +ddcms666 comparesig 0E1 -0E1 -> 0 +ddcms667 comparesig 0E2 -0E1 -> 0 +ddcms668 comparesig -0E1 -0E2 -> 0 +ddcms669 comparesig -0E2 -0E2 -> 0 +ddcms670 comparesig 0E1 -0E2 -> 0 +ddcms671 comparesig 0E2 -0E2 -> 0 +ddcms672 comparesig -0E1 0E1 -> 0 +ddcms673 comparesig -0E2 0E1 -> 0 +ddcms674 comparesig 0E1 0E1 -> 0 +ddcms675 comparesig 0E2 0E1 -> 0 +ddcms676 comparesig -0E1 0E2 -> 0 +ddcms677 comparesig -0E2 0E2 -> 0 +ddcms678 comparesig 0E1 0E2 -> 0 +ddcms679 comparesig 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +ddcms680 comparesig 12 12 -> 0 +ddcms681 comparesig 12 12.0 -> 0 +ddcms682 comparesig 12 12.00 -> 0 +ddcms683 comparesig 12 12.000 -> 0 +ddcms684 comparesig 12 12.0000 -> 0 +ddcms685 comparesig 12 12.00000 -> 0 +ddcms686 comparesig 12 12.000000 -> 0 +ddcms687 comparesig 12 12.0000000 -> 0 +ddcms688 comparesig 12 12.00000000 -> 0 +ddcms689 comparesig 12 12.000000000 -> 0 +ddcms690 comparesig 12 12 -> 0 +ddcms691 comparesig 12.0 12 -> 0 +ddcms692 comparesig 12.00 12 -> 0 +ddcms693 comparesig 12.000 12 -> 0 +ddcms694 comparesig 12.0000 12 -> 0 +ddcms695 comparesig 12.00000 12 -> 0 +ddcms696 comparesig 12.000000 12 -> 0 +ddcms697 comparesig 12.0000000 12 -> 0 +ddcms698 comparesig 12.00000000 12 -> 0 +ddcms699 comparesig 12.000000000 12 -> 0 + +-- first, second, & last digit +ddcms700 comparesig 1234567890123456 1234567890123455 -> 1 +ddcms701 comparesig 1234567890123456 1234567890123456 -> 0 +ddcms702 comparesig 1234567890123456 1234567890123457 -> -1 +ddcms703 comparesig 1234567890123456 0234567890123456 -> 1 +ddcms704 comparesig 1234567890123456 1234567890123456 -> 0 +ddcms705 comparesig 1234567890123456 2234567890123456 -> -1 +ddcms706 comparesig 1134567890123456 1034567890123456 -> 1 +ddcms707 comparesig 1134567890123456 1134567890123456 -> 0 +ddcms708 comparesig 1134567890123456 1234567890123456 -> -1 + +-- miscellaneous +ddcms721 comparesig 12345678000 1 -> 1 +ddcms722 comparesig 1 12345678000 -> -1 +ddcms723 comparesig 1234567800 1 -> 1 +ddcms724 comparesig 1 1234567800 -> -1 +ddcms725 comparesig 1234567890 1 -> 1 +ddcms726 comparesig 1 1234567890 -> -1 +ddcms727 comparesig 1234567891 1 -> 1 +ddcms728 comparesig 1 1234567891 -> -1 +ddcms729 comparesig 12345678901 1 -> 1 +ddcms730 comparesig 1 12345678901 -> -1 +ddcms731 comparesig 1234567896 1 -> 1 +ddcms732 comparesig 1 1234567896 -> -1 + +-- residue cases at lower precision +ddcms740 comparesig 1 0.9999999 -> 1 +ddcms741 comparesig 1 0.999999 -> 1 +ddcms742 comparesig 1 0.99999 -> 1 +ddcms743 comparesig 1 1.0000 -> 0 +ddcms744 comparesig 1 1.00001 -> -1 +ddcms745 comparesig 1 1.000001 -> -1 +ddcms746 comparesig 1 1.0000001 -> -1 +ddcms750 comparesig 0.9999999 1 -> -1 +ddcms751 comparesig 0.999999 1 -> -1 +ddcms752 comparesig 0.99999 1 -> -1 +ddcms753 comparesig 1.0000 1 -> 0 +ddcms754 comparesig 1.00001 1 -> 1 +ddcms755 comparesig 1.000001 1 -> 1 +ddcms756 comparesig 1.0000001 1 -> 1 + +-- Specials +ddcms780 comparesig Inf -Inf -> 1 +ddcms781 comparesig Inf -1000 -> 1 +ddcms782 comparesig Inf -1 -> 1 +ddcms783 comparesig Inf -0 -> 1 +ddcms784 comparesig Inf 0 -> 1 +ddcms785 comparesig Inf 1 -> 1 +ddcms786 comparesig Inf 1000 -> 1 +ddcms787 comparesig Inf Inf -> 0 +ddcms788 comparesig -1000 Inf -> -1 +ddcms789 comparesig -Inf Inf -> -1 +ddcms790 comparesig -1 Inf -> -1 +ddcms791 comparesig -0 Inf -> -1 +ddcms792 comparesig 0 Inf -> -1 +ddcms793 comparesig 1 Inf -> -1 +ddcms794 comparesig 1000 Inf -> -1 +ddcms795 comparesig Inf Inf -> 0 + +ddcms800 comparesig -Inf -Inf -> 0 +ddcms801 comparesig -Inf -1000 -> -1 +ddcms802 comparesig -Inf -1 -> -1 +ddcms803 comparesig -Inf -0 -> -1 +ddcms804 comparesig -Inf 0 -> -1 +ddcms805 comparesig -Inf 1 -> -1 +ddcms806 comparesig -Inf 1000 -> -1 +ddcms807 comparesig -Inf Inf -> -1 +ddcms808 comparesig -Inf -Inf -> 0 +ddcms809 comparesig -1000 -Inf -> 1 +ddcms810 comparesig -1 -Inf -> 1 +ddcms811 comparesig -0 -Inf -> 1 +ddcms812 comparesig 0 -Inf -> 1 +ddcms813 comparesig 1 -Inf -> 1 +ddcms814 comparesig 1000 -Inf -> 1 +ddcms815 comparesig Inf -Inf -> 1 + +ddcms821 comparesig NaN -Inf -> NaN Invalid_operation +ddcms822 comparesig NaN -1000 -> NaN Invalid_operation +ddcms823 comparesig NaN -1 -> NaN Invalid_operation +ddcms824 comparesig NaN -0 -> NaN Invalid_operation +ddcms825 comparesig NaN 0 -> NaN Invalid_operation +ddcms826 comparesig NaN 1 -> NaN Invalid_operation +ddcms827 comparesig NaN 1000 -> NaN Invalid_operation +ddcms828 comparesig NaN Inf -> NaN Invalid_operation +ddcms829 comparesig NaN NaN -> NaN Invalid_operation +ddcms830 comparesig -Inf NaN -> NaN Invalid_operation +ddcms831 comparesig -1000 NaN -> NaN Invalid_operation +ddcms832 comparesig -1 NaN -> NaN Invalid_operation +ddcms833 comparesig -0 NaN -> NaN Invalid_operation +ddcms834 comparesig 0 NaN -> NaN Invalid_operation +ddcms835 comparesig 1 NaN -> NaN Invalid_operation +ddcms836 comparesig 1000 NaN -> NaN Invalid_operation +ddcms837 comparesig Inf NaN -> NaN Invalid_operation +ddcms838 comparesig -NaN -NaN -> -NaN Invalid_operation +ddcms839 comparesig +NaN -NaN -> NaN Invalid_operation +ddcms840 comparesig -NaN +NaN -> -NaN Invalid_operation + +ddcms841 comparesig sNaN -Inf -> NaN Invalid_operation +ddcms842 comparesig sNaN -1000 -> NaN Invalid_operation +ddcms843 comparesig sNaN -1 -> NaN Invalid_operation +ddcms844 comparesig sNaN -0 -> NaN Invalid_operation +ddcms845 comparesig sNaN 0 -> NaN Invalid_operation +ddcms846 comparesig sNaN 1 -> NaN Invalid_operation +ddcms847 comparesig sNaN 1000 -> NaN Invalid_operation +ddcms848 comparesig sNaN NaN -> NaN Invalid_operation +ddcms849 comparesig sNaN sNaN -> NaN Invalid_operation +ddcms850 comparesig NaN sNaN -> NaN Invalid_operation +ddcms851 comparesig -Inf sNaN -> NaN Invalid_operation +ddcms852 comparesig -1000 sNaN -> NaN Invalid_operation +ddcms853 comparesig -1 sNaN -> NaN Invalid_operation +ddcms854 comparesig -0 sNaN -> NaN Invalid_operation +ddcms855 comparesig 0 sNaN -> NaN Invalid_operation +ddcms856 comparesig 1 sNaN -> NaN Invalid_operation +ddcms857 comparesig 1000 sNaN -> NaN Invalid_operation +ddcms858 comparesig Inf sNaN -> NaN Invalid_operation +ddcms859 comparesig NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddcms860 comparesig NaN9 -Inf -> NaN9 Invalid_operation +ddcms861 comparesig NaN8 999 -> NaN8 Invalid_operation +ddcms862 comparesig NaN77 Inf -> NaN77 Invalid_operation +ddcms863 comparesig -NaN67 NaN5 -> -NaN67 Invalid_operation +ddcms864 comparesig -Inf -NaN4 -> -NaN4 Invalid_operation +ddcms865 comparesig -999 -NaN33 -> -NaN33 Invalid_operation +ddcms866 comparesig Inf NaN2 -> NaN2 Invalid_operation +ddcms867 comparesig -NaN41 -NaN42 -> -NaN41 Invalid_operation +ddcms868 comparesig +NaN41 -NaN42 -> NaN41 Invalid_operation +ddcms869 comparesig -NaN41 +NaN42 -> -NaN41 Invalid_operation +ddcms870 comparesig +NaN41 +NaN42 -> NaN41 Invalid_operation + +ddcms871 comparesig -sNaN99 -Inf -> -NaN99 Invalid_operation +ddcms872 comparesig sNaN98 -11 -> NaN98 Invalid_operation +ddcms873 comparesig sNaN97 NaN -> NaN97 Invalid_operation +ddcms874 comparesig sNaN16 sNaN94 -> NaN16 Invalid_operation +ddcms875 comparesig NaN85 sNaN83 -> NaN83 Invalid_operation +ddcms876 comparesig -Inf sNaN92 -> NaN92 Invalid_operation +ddcms877 comparesig 088 sNaN81 -> NaN81 Invalid_operation +ddcms878 comparesig Inf sNaN90 -> NaN90 Invalid_operation +ddcms879 comparesig NaN -sNaN89 -> -NaN89 Invalid_operation + +-- wide range +ddcms880 comparesig +1.23456789012345E-0 9E+384 -> -1 +ddcms881 comparesig 9E+384 +1.23456789012345E-0 -> 1 +ddcms882 comparesig +0.100 9E-383 -> 1 +ddcms883 comparesig 9E-383 +0.100 -> -1 +ddcms885 comparesig -1.23456789012345E-0 9E+384 -> -1 +ddcms886 comparesig 9E+384 -1.23456789012345E-0 -> 1 +ddcms887 comparesig -0.100 9E-383 -> -1 +ddcms888 comparesig 9E-383 -0.100 -> 1 + +-- signs +ddcms901 comparesig 1e+77 1e+11 -> 1 +ddcms902 comparesig 1e+77 -1e+11 -> 1 +ddcms903 comparesig -1e+77 1e+11 -> -1 +ddcms904 comparesig -1e+77 -1e+11 -> -1 +ddcms905 comparesig 1e-77 1e-11 -> -1 +ddcms906 comparesig 1e-77 -1e-11 -> 1 +ddcms907 comparesig -1e-77 1e-11 -> -1 +ddcms908 comparesig -1e-77 -1e-11 -> 1 + +-- Null tests +ddcms990 comparesig 10 # -> NaN Invalid_operation +ddcms991 comparesig # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddCompareTotal.decTest b/Lib/test/decimaltestdata/ddCompareTotal.decTest index 76beed5..10c984c 100644 --- a/Lib/test/decimaltestdata/ddCompareTotal.decTest +++ b/Lib/test/decimaltestdata/ddCompareTotal.decTest @@ -1,706 +1,706 @@ ------------------------------------------------------------------------- --- ddCompareTotal.decTest -- decDouble comparison using total ordering-- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). --- Similarly, comparetotal will have some radically different paths --- than compare. - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddcot001 comparetotal -2 -2 -> 0 -ddcot002 comparetotal -2 -1 -> -1 -ddcot003 comparetotal -2 0 -> -1 -ddcot004 comparetotal -2 1 -> -1 -ddcot005 comparetotal -2 2 -> -1 -ddcot006 comparetotal -1 -2 -> 1 -ddcot007 comparetotal -1 -1 -> 0 -ddcot008 comparetotal -1 0 -> -1 -ddcot009 comparetotal -1 1 -> -1 -ddcot010 comparetotal -1 2 -> -1 -ddcot011 comparetotal 0 -2 -> 1 -ddcot012 comparetotal 0 -1 -> 1 -ddcot013 comparetotal 0 0 -> 0 -ddcot014 comparetotal 0 1 -> -1 -ddcot015 comparetotal 0 2 -> -1 -ddcot016 comparetotal 1 -2 -> 1 -ddcot017 comparetotal 1 -1 -> 1 -ddcot018 comparetotal 1 0 -> 1 -ddcot019 comparetotal 1 1 -> 0 -ddcot020 comparetotal 1 2 -> -1 -ddcot021 comparetotal 2 -2 -> 1 -ddcot022 comparetotal 2 -1 -> 1 -ddcot023 comparetotal 2 0 -> 1 -ddcot025 comparetotal 2 1 -> 1 -ddcot026 comparetotal 2 2 -> 0 - -ddcot031 comparetotal -20 -20 -> 0 -ddcot032 comparetotal -20 -10 -> -1 -ddcot033 comparetotal -20 00 -> -1 -ddcot034 comparetotal -20 10 -> -1 -ddcot035 comparetotal -20 20 -> -1 -ddcot036 comparetotal -10 -20 -> 1 -ddcot037 comparetotal -10 -10 -> 0 -ddcot038 comparetotal -10 00 -> -1 -ddcot039 comparetotal -10 10 -> -1 -ddcot040 comparetotal -10 20 -> -1 -ddcot041 comparetotal 00 -20 -> 1 -ddcot042 comparetotal 00 -10 -> 1 -ddcot043 comparetotal 00 00 -> 0 -ddcot044 comparetotal 00 10 -> -1 -ddcot045 comparetotal 00 20 -> -1 -ddcot046 comparetotal 10 -20 -> 1 -ddcot047 comparetotal 10 -10 -> 1 -ddcot048 comparetotal 10 00 -> 1 -ddcot049 comparetotal 10 10 -> 0 -ddcot050 comparetotal 10 20 -> -1 -ddcot051 comparetotal 20 -20 -> 1 -ddcot052 comparetotal 20 -10 -> 1 -ddcot053 comparetotal 20 00 -> 1 -ddcot055 comparetotal 20 10 -> 1 -ddcot056 comparetotal 20 20 -> 0 - -ddcot061 comparetotal -2.0 -2.0 -> 0 -ddcot062 comparetotal -2.0 -1.0 -> -1 -ddcot063 comparetotal -2.0 0.0 -> -1 -ddcot064 comparetotal -2.0 1.0 -> -1 -ddcot065 comparetotal -2.0 2.0 -> -1 -ddcot066 comparetotal -1.0 -2.0 -> 1 -ddcot067 comparetotal -1.0 -1.0 -> 0 -ddcot068 comparetotal -1.0 0.0 -> -1 -ddcot069 comparetotal -1.0 1.0 -> -1 -ddcot070 comparetotal -1.0 2.0 -> -1 -ddcot071 comparetotal 0.0 -2.0 -> 1 -ddcot072 comparetotal 0.0 -1.0 -> 1 -ddcot073 comparetotal 0.0 0.0 -> 0 -ddcot074 comparetotal 0.0 1.0 -> -1 -ddcot075 comparetotal 0.0 2.0 -> -1 -ddcot076 comparetotal 1.0 -2.0 -> 1 -ddcot077 comparetotal 1.0 -1.0 -> 1 -ddcot078 comparetotal 1.0 0.0 -> 1 -ddcot079 comparetotal 1.0 1.0 -> 0 -ddcot080 comparetotal 1.0 2.0 -> -1 -ddcot081 comparetotal 2.0 -2.0 -> 1 -ddcot082 comparetotal 2.0 -1.0 -> 1 -ddcot083 comparetotal 2.0 0.0 -> 1 -ddcot085 comparetotal 2.0 1.0 -> 1 -ddcot086 comparetotal 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -ddcot090 comparetotal 9.99999999E+384 9.99999999E+384 -> 0 -ddcot091 comparetotal -9.99999999E+384 9.99999999E+384 -> -1 -ddcot092 comparetotal 9.99999999E+384 -9.99999999E+384 -> 1 -ddcot093 comparetotal -9.99999999E+384 -9.99999999E+384 -> 0 - --- some differing length/exponent cases --- in this first group, compare would compare all equal -ddcot100 comparetotal 7.0 7.0 -> 0 -ddcot101 comparetotal 7.0 7 -> -1 -ddcot102 comparetotal 7 7.0 -> 1 -ddcot103 comparetotal 7E+0 7.0 -> 1 -ddcot104 comparetotal 70E-1 7.0 -> 0 -ddcot105 comparetotal 0.7E+1 7 -> 0 -ddcot106 comparetotal 70E-1 7 -> -1 -ddcot107 comparetotal 7.0 7E+0 -> -1 -ddcot108 comparetotal 7.0 70E-1 -> 0 -ddcot109 comparetotal 7 0.7E+1 -> 0 -ddcot110 comparetotal 7 70E-1 -> 1 - -ddcot120 comparetotal 8.0 7.0 -> 1 -ddcot121 comparetotal 8.0 7 -> 1 -ddcot122 comparetotal 8 7.0 -> 1 -ddcot123 comparetotal 8E+0 7.0 -> 1 -ddcot124 comparetotal 80E-1 7.0 -> 1 -ddcot125 comparetotal 0.8E+1 7 -> 1 -ddcot126 comparetotal 80E-1 7 -> 1 -ddcot127 comparetotal 8.0 7E+0 -> 1 -ddcot128 comparetotal 8.0 70E-1 -> 1 -ddcot129 comparetotal 8 0.7E+1 -> 1 -ddcot130 comparetotal 8 70E-1 -> 1 - -ddcot140 comparetotal 8.0 9.0 -> -1 -ddcot141 comparetotal 8.0 9 -> -1 -ddcot142 comparetotal 8 9.0 -> -1 -ddcot143 comparetotal 8E+0 9.0 -> -1 -ddcot144 comparetotal 80E-1 9.0 -> -1 -ddcot145 comparetotal 0.8E+1 9 -> -1 -ddcot146 comparetotal 80E-1 9 -> -1 -ddcot147 comparetotal 8.0 9E+0 -> -1 -ddcot148 comparetotal 8.0 90E-1 -> -1 -ddcot149 comparetotal 8 0.9E+1 -> -1 -ddcot150 comparetotal 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -ddcot200 comparetotal -7.0 7.0 -> -1 -ddcot201 comparetotal -7.0 7 -> -1 -ddcot202 comparetotal -7 7.0 -> -1 -ddcot203 comparetotal -7E+0 7.0 -> -1 -ddcot204 comparetotal -70E-1 7.0 -> -1 -ddcot205 comparetotal -0.7E+1 7 -> -1 -ddcot206 comparetotal -70E-1 7 -> -1 -ddcot207 comparetotal -7.0 7E+0 -> -1 -ddcot208 comparetotal -7.0 70E-1 -> -1 -ddcot209 comparetotal -7 0.7E+1 -> -1 -ddcot210 comparetotal -7 70E-1 -> -1 - -ddcot220 comparetotal -8.0 7.0 -> -1 -ddcot221 comparetotal -8.0 7 -> -1 -ddcot222 comparetotal -8 7.0 -> -1 -ddcot223 comparetotal -8E+0 7.0 -> -1 -ddcot224 comparetotal -80E-1 7.0 -> -1 -ddcot225 comparetotal -0.8E+1 7 -> -1 -ddcot226 comparetotal -80E-1 7 -> -1 -ddcot227 comparetotal -8.0 7E+0 -> -1 -ddcot228 comparetotal -8.0 70E-1 -> -1 -ddcot229 comparetotal -8 0.7E+1 -> -1 -ddcot230 comparetotal -8 70E-1 -> -1 - -ddcot240 comparetotal -8.0 9.0 -> -1 -ddcot241 comparetotal -8.0 9 -> -1 -ddcot242 comparetotal -8 9.0 -> -1 -ddcot243 comparetotal -8E+0 9.0 -> -1 -ddcot244 comparetotal -80E-1 9.0 -> -1 -ddcot245 comparetotal -0.8E+1 9 -> -1 -ddcot246 comparetotal -80E-1 9 -> -1 -ddcot247 comparetotal -8.0 9E+0 -> -1 -ddcot248 comparetotal -8.0 90E-1 -> -1 -ddcot249 comparetotal -8 0.9E+1 -> -1 -ddcot250 comparetotal -8 90E-1 -> -1 - --- and again, with sign changes +- .. -ddcot300 comparetotal 7.0 -7.0 -> 1 -ddcot301 comparetotal 7.0 -7 -> 1 -ddcot302 comparetotal 7 -7.0 -> 1 -ddcot303 comparetotal 7E+0 -7.0 -> 1 -ddcot304 comparetotal 70E-1 -7.0 -> 1 -ddcot305 comparetotal .7E+1 -7 -> 1 -ddcot306 comparetotal 70E-1 -7 -> 1 -ddcot307 comparetotal 7.0 -7E+0 -> 1 -ddcot308 comparetotal 7.0 -70E-1 -> 1 -ddcot309 comparetotal 7 -.7E+1 -> 1 -ddcot310 comparetotal 7 -70E-1 -> 1 - -ddcot320 comparetotal 8.0 -7.0 -> 1 -ddcot321 comparetotal 8.0 -7 -> 1 -ddcot322 comparetotal 8 -7.0 -> 1 -ddcot323 comparetotal 8E+0 -7.0 -> 1 -ddcot324 comparetotal 80E-1 -7.0 -> 1 -ddcot325 comparetotal .8E+1 -7 -> 1 -ddcot326 comparetotal 80E-1 -7 -> 1 -ddcot327 comparetotal 8.0 -7E+0 -> 1 -ddcot328 comparetotal 8.0 -70E-1 -> 1 -ddcot329 comparetotal 8 -.7E+1 -> 1 -ddcot330 comparetotal 8 -70E-1 -> 1 - -ddcot340 comparetotal 8.0 -9.0 -> 1 -ddcot341 comparetotal 8.0 -9 -> 1 -ddcot342 comparetotal 8 -9.0 -> 1 -ddcot343 comparetotal 8E+0 -9.0 -> 1 -ddcot344 comparetotal 80E-1 -9.0 -> 1 -ddcot345 comparetotal .8E+1 -9 -> 1 -ddcot346 comparetotal 80E-1 -9 -> 1 -ddcot347 comparetotal 8.0 -9E+0 -> 1 -ddcot348 comparetotal 8.0 -90E-1 -> 1 -ddcot349 comparetotal 8 -.9E+1 -> 1 -ddcot350 comparetotal 8 -90E-1 -> 1 - --- and again, with sign changes -- .. -ddcot400 comparetotal -7.0 -7.0 -> 0 -ddcot401 comparetotal -7.0 -7 -> 1 -ddcot402 comparetotal -7 -7.0 -> -1 -ddcot403 comparetotal -7E+0 -7.0 -> -1 -ddcot404 comparetotal -70E-1 -7.0 -> 0 -ddcot405 comparetotal -.7E+1 -7 -> 0 -ddcot406 comparetotal -70E-1 -7 -> 1 -ddcot407 comparetotal -7.0 -7E+0 -> 1 -ddcot408 comparetotal -7.0 -70E-1 -> 0 -ddcot409 comparetotal -7 -.7E+1 -> 0 -ddcot410 comparetotal -7 -70E-1 -> -1 - -ddcot420 comparetotal -8.0 -7.0 -> -1 -ddcot421 comparetotal -8.0 -7 -> -1 -ddcot422 comparetotal -8 -7.0 -> -1 -ddcot423 comparetotal -8E+0 -7.0 -> -1 -ddcot424 comparetotal -80E-1 -7.0 -> -1 -ddcot425 comparetotal -.8E+1 -7 -> -1 -ddcot426 comparetotal -80E-1 -7 -> -1 -ddcot427 comparetotal -8.0 -7E+0 -> -1 -ddcot428 comparetotal -8.0 -70E-1 -> -1 -ddcot429 comparetotal -8 -.7E+1 -> -1 -ddcot430 comparetotal -8 -70E-1 -> -1 - -ddcot440 comparetotal -8.0 -9.0 -> 1 -ddcot441 comparetotal -8.0 -9 -> 1 -ddcot442 comparetotal -8 -9.0 -> 1 -ddcot443 comparetotal -8E+0 -9.0 -> 1 -ddcot444 comparetotal -80E-1 -9.0 -> 1 -ddcot445 comparetotal -.8E+1 -9 -> 1 -ddcot446 comparetotal -80E-1 -9 -> 1 -ddcot447 comparetotal -8.0 -9E+0 -> 1 -ddcot448 comparetotal -8.0 -90E-1 -> 1 -ddcot449 comparetotal -8 -.9E+1 -> 1 -ddcot450 comparetotal -8 -90E-1 -> 1 - - --- testcases that subtract to lots of zeros at boundaries [pgr] -ddcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1 -ddcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1 -ddcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1 -ddcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1 -ddcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1 -ddcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1 -ddcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1 -ddcot480 comparetotal 123.456000E+89 123.456E+89 -> -1 -ddcot481 comparetotal 123.45600E-89 123.456E-89 -> -1 -ddcot482 comparetotal 123.4560E+89 123.456E+89 -> -1 -ddcot483 comparetotal 123.456E-89 123.456E-89 -> 0 -ddcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1 -ddcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1 -ddcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1 -ddcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1 -ddcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1 -ddcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1 -ddcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1 -ddcot494 comparetotal 123.456E-89 123.456000E-89 -> 1 -ddcot495 comparetotal 123.456E+89 123.45600E+89 -> 1 -ddcot496 comparetotal 123.456E-89 123.4560E-89 -> 1 -ddcot497 comparetotal 123.456E+89 123.456E+89 -> 0 - --- wide-ranging, around precision; signs equal -ddcot498 comparetotal 1 1E-17 -> 1 -ddcot499 comparetotal 1 1E-16 -> 1 -ddcot500 comparetotal 1 1E-15 -> 1 -ddcot501 comparetotal 1 1E-14 -> 1 -ddcot502 comparetotal 1 1E-13 -> 1 -ddcot503 comparetotal 1 1E-12 -> 1 -ddcot504 comparetotal 1 1E-11 -> 1 -ddcot505 comparetotal 1 1E-10 -> 1 -ddcot506 comparetotal 1 1E-9 -> 1 -ddcot507 comparetotal 1 1E-8 -> 1 -ddcot508 comparetotal 1 1E-7 -> 1 -ddcot509 comparetotal 1 1E-6 -> 1 -ddcot510 comparetotal 1 1E-5 -> 1 -ddcot511 comparetotal 1 1E-4 -> 1 -ddcot512 comparetotal 1 1E-3 -> 1 -ddcot513 comparetotal 1 1E-2 -> 1 -ddcot514 comparetotal 1 1E-1 -> 1 -ddcot515 comparetotal 1 1E-0 -> 0 -ddcot516 comparetotal 1 1E+1 -> -1 -ddcot517 comparetotal 1 1E+2 -> -1 -ddcot518 comparetotal 1 1E+3 -> -1 -ddcot519 comparetotal 1 1E+4 -> -1 -ddcot521 comparetotal 1 1E+5 -> -1 -ddcot522 comparetotal 1 1E+6 -> -1 -ddcot523 comparetotal 1 1E+7 -> -1 -ddcot524 comparetotal 1 1E+8 -> -1 -ddcot525 comparetotal 1 1E+9 -> -1 -ddcot526 comparetotal 1 1E+10 -> -1 -ddcot527 comparetotal 1 1E+11 -> -1 -ddcot528 comparetotal 1 1E+12 -> -1 -ddcot529 comparetotal 1 1E+13 -> -1 -ddcot530 comparetotal 1 1E+14 -> -1 -ddcot531 comparetotal 1 1E+15 -> -1 -ddcot532 comparetotal 1 1E+16 -> -1 -ddcot533 comparetotal 1 1E+17 -> -1 --- LR swap -ddcot538 comparetotal 1E-17 1 -> -1 -ddcot539 comparetotal 1E-16 1 -> -1 -ddcot540 comparetotal 1E-15 1 -> -1 -ddcot541 comparetotal 1E-14 1 -> -1 -ddcot542 comparetotal 1E-13 1 -> -1 -ddcot543 comparetotal 1E-12 1 -> -1 -ddcot544 comparetotal 1E-11 1 -> -1 -ddcot545 comparetotal 1E-10 1 -> -1 -ddcot546 comparetotal 1E-9 1 -> -1 -ddcot547 comparetotal 1E-8 1 -> -1 -ddcot548 comparetotal 1E-7 1 -> -1 -ddcot549 comparetotal 1E-6 1 -> -1 -ddcot550 comparetotal 1E-5 1 -> -1 -ddcot551 comparetotal 1E-4 1 -> -1 -ddcot552 comparetotal 1E-3 1 -> -1 -ddcot553 comparetotal 1E-2 1 -> -1 -ddcot554 comparetotal 1E-1 1 -> -1 -ddcot555 comparetotal 1E-0 1 -> 0 -ddcot556 comparetotal 1E+1 1 -> 1 -ddcot557 comparetotal 1E+2 1 -> 1 -ddcot558 comparetotal 1E+3 1 -> 1 -ddcot559 comparetotal 1E+4 1 -> 1 -ddcot561 comparetotal 1E+5 1 -> 1 -ddcot562 comparetotal 1E+6 1 -> 1 -ddcot563 comparetotal 1E+7 1 -> 1 -ddcot564 comparetotal 1E+8 1 -> 1 -ddcot565 comparetotal 1E+9 1 -> 1 -ddcot566 comparetotal 1E+10 1 -> 1 -ddcot567 comparetotal 1E+11 1 -> 1 -ddcot568 comparetotal 1E+12 1 -> 1 -ddcot569 comparetotal 1E+13 1 -> 1 -ddcot570 comparetotal 1E+14 1 -> 1 -ddcot571 comparetotal 1E+15 1 -> 1 -ddcot572 comparetotal 1E+16 1 -> 1 -ddcot573 comparetotal 1E+17 1 -> 1 --- similar with a useful coefficient, one side only -ddcot578 comparetotal 0.000000987654321 1E-17 -> 1 -ddcot579 comparetotal 0.000000987654321 1E-16 -> 1 -ddcot580 comparetotal 0.000000987654321 1E-15 -> 1 -ddcot581 comparetotal 0.000000987654321 1E-14 -> 1 -ddcot582 comparetotal 0.000000987654321 1E-13 -> 1 -ddcot583 comparetotal 0.000000987654321 1E-12 -> 1 -ddcot584 comparetotal 0.000000987654321 1E-11 -> 1 -ddcot585 comparetotal 0.000000987654321 1E-10 -> 1 -ddcot586 comparetotal 0.000000987654321 1E-9 -> 1 -ddcot587 comparetotal 0.000000987654321 1E-8 -> 1 -ddcot588 comparetotal 0.000000987654321 1E-7 -> 1 -ddcot589 comparetotal 0.000000987654321 1E-6 -> -1 -ddcot590 comparetotal 0.000000987654321 1E-5 -> -1 -ddcot591 comparetotal 0.000000987654321 1E-4 -> -1 -ddcot592 comparetotal 0.000000987654321 1E-3 -> -1 -ddcot593 comparetotal 0.000000987654321 1E-2 -> -1 -ddcot594 comparetotal 0.000000987654321 1E-1 -> -1 -ddcot595 comparetotal 0.000000987654321 1E-0 -> -1 -ddcot596 comparetotal 0.000000987654321 1E+1 -> -1 -ddcot597 comparetotal 0.000000987654321 1E+2 -> -1 -ddcot598 comparetotal 0.000000987654321 1E+3 -> -1 -ddcot599 comparetotal 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -ddcot600 comparetotal 12 12.2345 -> -1 -ddcot601 comparetotal 12.0 12.2345 -> -1 -ddcot602 comparetotal 12.00 12.2345 -> -1 -ddcot603 comparetotal 12.000 12.2345 -> -1 -ddcot604 comparetotal 12.0000 12.2345 -> -1 -ddcot605 comparetotal 12.00000 12.2345 -> -1 -ddcot606 comparetotal 12.000000 12.2345 -> -1 -ddcot607 comparetotal 12.0000000 12.2345 -> -1 -ddcot608 comparetotal 12.00000000 12.2345 -> -1 -ddcot609 comparetotal 12.000000000 12.2345 -> -1 -ddcot610 comparetotal 12.1234 12 -> 1 -ddcot611 comparetotal 12.1234 12.0 -> 1 -ddcot612 comparetotal 12.1234 12.00 -> 1 -ddcot613 comparetotal 12.1234 12.000 -> 1 -ddcot614 comparetotal 12.1234 12.0000 -> 1 -ddcot615 comparetotal 12.1234 12.00000 -> 1 -ddcot616 comparetotal 12.1234 12.000000 -> 1 -ddcot617 comparetotal 12.1234 12.0000000 -> 1 -ddcot618 comparetotal 12.1234 12.00000000 -> 1 -ddcot619 comparetotal 12.1234 12.000000000 -> 1 -ddcot620 comparetotal -12 -12.2345 -> 1 -ddcot621 comparetotal -12.0 -12.2345 -> 1 -ddcot622 comparetotal -12.00 -12.2345 -> 1 -ddcot623 comparetotal -12.000 -12.2345 -> 1 -ddcot624 comparetotal -12.0000 -12.2345 -> 1 -ddcot625 comparetotal -12.00000 -12.2345 -> 1 -ddcot626 comparetotal -12.000000 -12.2345 -> 1 -ddcot627 comparetotal -12.0000000 -12.2345 -> 1 -ddcot628 comparetotal -12.00000000 -12.2345 -> 1 -ddcot629 comparetotal -12.000000000 -12.2345 -> 1 -ddcot630 comparetotal -12.1234 -12 -> -1 -ddcot631 comparetotal -12.1234 -12.0 -> -1 -ddcot632 comparetotal -12.1234 -12.00 -> -1 -ddcot633 comparetotal -12.1234 -12.000 -> -1 -ddcot634 comparetotal -12.1234 -12.0000 -> -1 -ddcot635 comparetotal -12.1234 -12.00000 -> -1 -ddcot636 comparetotal -12.1234 -12.000000 -> -1 -ddcot637 comparetotal -12.1234 -12.0000000 -> -1 -ddcot638 comparetotal -12.1234 -12.00000000 -> -1 -ddcot639 comparetotal -12.1234 -12.000000000 -> -1 - --- extended zeros -ddcot640 comparetotal 0 0 -> 0 -ddcot641 comparetotal 0 -0 -> 1 -ddcot642 comparetotal 0 -0.0 -> 1 -ddcot643 comparetotal 0 0.0 -> 1 -ddcot644 comparetotal -0 0 -> -1 -ddcot645 comparetotal -0 -0 -> 0 -ddcot646 comparetotal -0 -0.0 -> -1 -ddcot647 comparetotal -0 0.0 -> -1 -ddcot648 comparetotal 0.0 0 -> -1 -ddcot649 comparetotal 0.0 -0 -> 1 -ddcot650 comparetotal 0.0 -0.0 -> 1 -ddcot651 comparetotal 0.0 0.0 -> 0 -ddcot652 comparetotal -0.0 0 -> -1 -ddcot653 comparetotal -0.0 -0 -> 1 -ddcot654 comparetotal -0.0 -0.0 -> 0 -ddcot655 comparetotal -0.0 0.0 -> -1 - -ddcot656 comparetotal -0E1 0.0 -> -1 -ddcot657 comparetotal -0E2 0.0 -> -1 -ddcot658 comparetotal 0E1 0.0 -> 1 -ddcot659 comparetotal 0E2 0.0 -> 1 -ddcot660 comparetotal -0E1 0 -> -1 -ddcot661 comparetotal -0E2 0 -> -1 -ddcot662 comparetotal 0E1 0 -> 1 -ddcot663 comparetotal 0E2 0 -> 1 -ddcot664 comparetotal -0E1 -0E1 -> 0 -ddcot665 comparetotal -0E2 -0E1 -> -1 -ddcot666 comparetotal 0E1 -0E1 -> 1 -ddcot667 comparetotal 0E2 -0E1 -> 1 -ddcot668 comparetotal -0E1 -0E2 -> 1 -ddcot669 comparetotal -0E2 -0E2 -> 0 -ddcot670 comparetotal 0E1 -0E2 -> 1 -ddcot671 comparetotal 0E2 -0E2 -> 1 -ddcot672 comparetotal -0E1 0E1 -> -1 -ddcot673 comparetotal -0E2 0E1 -> -1 -ddcot674 comparetotal 0E1 0E1 -> 0 -ddcot675 comparetotal 0E2 0E1 -> 1 -ddcot676 comparetotal -0E1 0E2 -> -1 -ddcot677 comparetotal -0E2 0E2 -> -1 -ddcot678 comparetotal 0E1 0E2 -> -1 -ddcot679 comparetotal 0E2 0E2 -> 0 - --- trailing zeros; unit-y -ddcot680 comparetotal 12 12 -> 0 -ddcot681 comparetotal 12 12.0 -> 1 -ddcot682 comparetotal 12 12.00 -> 1 -ddcot683 comparetotal 12 12.000 -> 1 -ddcot684 comparetotal 12 12.0000 -> 1 -ddcot685 comparetotal 12 12.00000 -> 1 -ddcot686 comparetotal 12 12.000000 -> 1 -ddcot687 comparetotal 12 12.0000000 -> 1 -ddcot688 comparetotal 12 12.00000000 -> 1 -ddcot689 comparetotal 12 12.000000000 -> 1 -ddcot690 comparetotal 12 12 -> 0 -ddcot691 comparetotal 12.0 12 -> -1 -ddcot692 comparetotal 12.00 12 -> -1 -ddcot693 comparetotal 12.000 12 -> -1 -ddcot694 comparetotal 12.0000 12 -> -1 -ddcot695 comparetotal 12.00000 12 -> -1 -ddcot696 comparetotal 12.000000 12 -> -1 -ddcot697 comparetotal 12.0000000 12 -> -1 -ddcot698 comparetotal 12.00000000 12 -> -1 -ddcot699 comparetotal 12.000000000 12 -> -1 - --- old long operand checks -ddcot701 comparetotal 12345678000 1 -> 1 -ddcot702 comparetotal 1 12345678000 -> -1 -ddcot703 comparetotal 1234567800 1 -> 1 -ddcot704 comparetotal 1 1234567800 -> -1 -ddcot705 comparetotal 1234567890 1 -> 1 -ddcot706 comparetotal 1 1234567890 -> -1 -ddcot707 comparetotal 1234567891 1 -> 1 -ddcot708 comparetotal 1 1234567891 -> -1 -ddcot709 comparetotal 12345678901 1 -> 1 -ddcot710 comparetotal 1 12345678901 -> -1 -ddcot711 comparetotal 1234567896 1 -> 1 -ddcot712 comparetotal 1 1234567896 -> -1 -ddcot713 comparetotal -1234567891 1 -> -1 -ddcot714 comparetotal 1 -1234567891 -> 1 -ddcot715 comparetotal -12345678901 1 -> -1 -ddcot716 comparetotal 1 -12345678901 -> 1 -ddcot717 comparetotal -1234567896 1 -> -1 -ddcot718 comparetotal 1 -1234567896 -> 1 - --- old residue cases -ddcot740 comparetotal 1 0.9999999 -> 1 -ddcot741 comparetotal 1 0.999999 -> 1 -ddcot742 comparetotal 1 0.99999 -> 1 -ddcot743 comparetotal 1 1.0000 -> 1 -ddcot744 comparetotal 1 1.00001 -> -1 -ddcot745 comparetotal 1 1.000001 -> -1 -ddcot746 comparetotal 1 1.0000001 -> -1 -ddcot750 comparetotal 0.9999999 1 -> -1 -ddcot751 comparetotal 0.999999 1 -> -1 -ddcot752 comparetotal 0.99999 1 -> -1 -ddcot753 comparetotal 1.0000 1 -> -1 -ddcot754 comparetotal 1.00001 1 -> 1 -ddcot755 comparetotal 1.000001 1 -> 1 -ddcot756 comparetotal 1.0000001 1 -> 1 - --- Specials -ddcot780 comparetotal Inf -Inf -> 1 -ddcot781 comparetotal Inf -1000 -> 1 -ddcot782 comparetotal Inf -1 -> 1 -ddcot783 comparetotal Inf -0 -> 1 -ddcot784 comparetotal Inf 0 -> 1 -ddcot785 comparetotal Inf 1 -> 1 -ddcot786 comparetotal Inf 1000 -> 1 -ddcot787 comparetotal Inf Inf -> 0 -ddcot788 comparetotal -1000 Inf -> -1 -ddcot789 comparetotal -Inf Inf -> -1 -ddcot790 comparetotal -1 Inf -> -1 -ddcot791 comparetotal -0 Inf -> -1 -ddcot792 comparetotal 0 Inf -> -1 -ddcot793 comparetotal 1 Inf -> -1 -ddcot794 comparetotal 1000 Inf -> -1 -ddcot795 comparetotal Inf Inf -> 0 - -ddcot800 comparetotal -Inf -Inf -> 0 -ddcot801 comparetotal -Inf -1000 -> -1 -ddcot802 comparetotal -Inf -1 -> -1 -ddcot803 comparetotal -Inf -0 -> -1 -ddcot804 comparetotal -Inf 0 -> -1 -ddcot805 comparetotal -Inf 1 -> -1 -ddcot806 comparetotal -Inf 1000 -> -1 -ddcot807 comparetotal -Inf Inf -> -1 -ddcot808 comparetotal -Inf -Inf -> 0 -ddcot809 comparetotal -1000 -Inf -> 1 -ddcot810 comparetotal -1 -Inf -> 1 -ddcot811 comparetotal -0 -Inf -> 1 -ddcot812 comparetotal 0 -Inf -> 1 -ddcot813 comparetotal 1 -Inf -> 1 -ddcot814 comparetotal 1000 -Inf -> 1 -ddcot815 comparetotal Inf -Inf -> 1 - -ddcot821 comparetotal NaN -Inf -> 1 -ddcot822 comparetotal NaN -1000 -> 1 -ddcot823 comparetotal NaN -1 -> 1 -ddcot824 comparetotal NaN -0 -> 1 -ddcot825 comparetotal NaN 0 -> 1 -ddcot826 comparetotal NaN 1 -> 1 -ddcot827 comparetotal NaN 1000 -> 1 -ddcot828 comparetotal NaN Inf -> 1 -ddcot829 comparetotal NaN NaN -> 0 -ddcot830 comparetotal -Inf NaN -> -1 -ddcot831 comparetotal -1000 NaN -> -1 -ddcot832 comparetotal -1 NaN -> -1 -ddcot833 comparetotal -0 NaN -> -1 -ddcot834 comparetotal 0 NaN -> -1 -ddcot835 comparetotal 1 NaN -> -1 -ddcot836 comparetotal 1000 NaN -> -1 -ddcot837 comparetotal Inf NaN -> -1 -ddcot838 comparetotal -NaN -NaN -> 0 -ddcot839 comparetotal +NaN -NaN -> 1 -ddcot840 comparetotal -NaN +NaN -> -1 - -ddcot841 comparetotal sNaN -sNaN -> 1 -ddcot842 comparetotal sNaN -NaN -> 1 -ddcot843 comparetotal sNaN -Inf -> 1 -ddcot844 comparetotal sNaN -1000 -> 1 -ddcot845 comparetotal sNaN -1 -> 1 -ddcot846 comparetotal sNaN -0 -> 1 -ddcot847 comparetotal sNaN 0 -> 1 -ddcot848 comparetotal sNaN 1 -> 1 -ddcot849 comparetotal sNaN 1000 -> 1 -ddcot850 comparetotal sNaN NaN -> -1 -ddcot851 comparetotal sNaN sNaN -> 0 - -ddcot852 comparetotal -sNaN sNaN -> -1 -ddcot853 comparetotal -NaN sNaN -> -1 -ddcot854 comparetotal -Inf sNaN -> -1 -ddcot855 comparetotal -1000 sNaN -> -1 -ddcot856 comparetotal -1 sNaN -> -1 -ddcot857 comparetotal -0 sNaN -> -1 -ddcot858 comparetotal 0 sNaN -> -1 -ddcot859 comparetotal 1 sNaN -> -1 -ddcot860 comparetotal 1000 sNaN -> -1 -ddcot861 comparetotal Inf sNaN -> -1 -ddcot862 comparetotal NaN sNaN -> 1 -ddcot863 comparetotal sNaN sNaN -> 0 - -ddcot871 comparetotal -sNaN -sNaN -> 0 -ddcot872 comparetotal -sNaN -NaN -> 1 -ddcot873 comparetotal -sNaN -Inf -> -1 -ddcot874 comparetotal -sNaN -1000 -> -1 -ddcot875 comparetotal -sNaN -1 -> -1 -ddcot876 comparetotal -sNaN -0 -> -1 -ddcot877 comparetotal -sNaN 0 -> -1 -ddcot878 comparetotal -sNaN 1 -> -1 -ddcot879 comparetotal -sNaN 1000 -> -1 -ddcot880 comparetotal -sNaN NaN -> -1 -ddcot881 comparetotal -sNaN sNaN -> -1 - -ddcot882 comparetotal -sNaN -sNaN -> 0 -ddcot883 comparetotal -NaN -sNaN -> -1 -ddcot884 comparetotal -Inf -sNaN -> 1 -ddcot885 comparetotal -1000 -sNaN -> 1 -ddcot886 comparetotal -1 -sNaN -> 1 -ddcot887 comparetotal -0 -sNaN -> 1 -ddcot888 comparetotal 0 -sNaN -> 1 -ddcot889 comparetotal 1 -sNaN -> 1 -ddcot890 comparetotal 1000 -sNaN -> 1 -ddcot891 comparetotal Inf -sNaN -> 1 -ddcot892 comparetotal NaN -sNaN -> 1 -ddcot893 comparetotal sNaN -sNaN -> 1 - --- NaNs with payload -ddcot960 comparetotal NaN9 -Inf -> 1 -ddcot961 comparetotal NaN8 999 -> 1 -ddcot962 comparetotal NaN77 Inf -> 1 -ddcot963 comparetotal -NaN67 NaN5 -> -1 -ddcot964 comparetotal -Inf -NaN4 -> 1 -ddcot965 comparetotal -999 -NaN33 -> 1 -ddcot966 comparetotal Inf NaN2 -> -1 - -ddcot970 comparetotal -NaN41 -NaN42 -> 1 -ddcot971 comparetotal +NaN41 -NaN42 -> 1 -ddcot972 comparetotal -NaN41 +NaN42 -> -1 -ddcot973 comparetotal +NaN41 +NaN42 -> -1 -ddcot974 comparetotal -NaN42 -NaN01 -> -1 -ddcot975 comparetotal +NaN42 -NaN01 -> 1 -ddcot976 comparetotal -NaN42 +NaN01 -> -1 -ddcot977 comparetotal +NaN42 +NaN01 -> 1 - -ddcot980 comparetotal -sNaN771 -sNaN772 -> 1 -ddcot981 comparetotal +sNaN771 -sNaN772 -> 1 -ddcot982 comparetotal -sNaN771 +sNaN772 -> -1 -ddcot983 comparetotal +sNaN771 +sNaN772 -> -1 -ddcot984 comparetotal -sNaN772 -sNaN771 -> -1 -ddcot985 comparetotal +sNaN772 -sNaN771 -> 1 -ddcot986 comparetotal -sNaN772 +sNaN771 -> -1 -ddcot987 comparetotal +sNaN772 +sNaN771 -> 1 - -ddcot991 comparetotal -sNaN99 -Inf -> -1 -ddcot992 comparetotal sNaN98 -11 -> 1 -ddcot993 comparetotal sNaN97 NaN -> -1 -ddcot994 comparetotal sNaN16 sNaN94 -> -1 -ddcot995 comparetotal NaN85 sNaN83 -> 1 -ddcot996 comparetotal -Inf sNaN92 -> -1 -ddcot997 comparetotal 088 sNaN81 -> -1 -ddcot998 comparetotal Inf sNaN90 -> -1 -ddcot999 comparetotal NaN -sNaN89 -> 1 - --- spread zeros -ddcot1110 comparetotal 0E-383 0 -> -1 -ddcot1111 comparetotal 0E-383 -0 -> 1 -ddcot1112 comparetotal -0E-383 0 -> -1 -ddcot1113 comparetotal -0E-383 -0 -> 1 -ddcot1114 comparetotal 0E-383 0E+384 -> -1 -ddcot1115 comparetotal 0E-383 -0E+384 -> 1 -ddcot1116 comparetotal -0E-383 0E+384 -> -1 -ddcot1117 comparetotal -0E-383 -0E+384 -> 1 -ddcot1118 comparetotal 0 0E+384 -> -1 -ddcot1119 comparetotal 0 -0E+384 -> 1 -ddcot1120 comparetotal -0 0E+384 -> -1 -ddcot1121 comparetotal -0 -0E+384 -> 1 - -ddcot1130 comparetotal 0E+384 0 -> 1 -ddcot1131 comparetotal 0E+384 -0 -> 1 -ddcot1132 comparetotal -0E+384 0 -> -1 -ddcot1133 comparetotal -0E+384 -0 -> -1 -ddcot1134 comparetotal 0E+384 0E-383 -> 1 -ddcot1135 comparetotal 0E+384 -0E-383 -> 1 -ddcot1136 comparetotal -0E+384 0E-383 -> -1 -ddcot1137 comparetotal -0E+384 -0E-383 -> -1 -ddcot1138 comparetotal 0 0E-383 -> 1 -ddcot1139 comparetotal 0 -0E-383 -> 1 -ddcot1140 comparetotal -0 0E-383 -> -1 -ddcot1141 comparetotal -0 -0E-383 -> -1 - --- Null tests -ddcot9990 comparetotal 10 # -> NaN Invalid_operation -ddcot9991 comparetotal # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddCompareTotal.decTest -- decDouble comparison using total ordering-- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). +-- Similarly, comparetotal will have some radically different paths +-- than compare. + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddcot001 comparetotal -2 -2 -> 0 +ddcot002 comparetotal -2 -1 -> -1 +ddcot003 comparetotal -2 0 -> -1 +ddcot004 comparetotal -2 1 -> -1 +ddcot005 comparetotal -2 2 -> -1 +ddcot006 comparetotal -1 -2 -> 1 +ddcot007 comparetotal -1 -1 -> 0 +ddcot008 comparetotal -1 0 -> -1 +ddcot009 comparetotal -1 1 -> -1 +ddcot010 comparetotal -1 2 -> -1 +ddcot011 comparetotal 0 -2 -> 1 +ddcot012 comparetotal 0 -1 -> 1 +ddcot013 comparetotal 0 0 -> 0 +ddcot014 comparetotal 0 1 -> -1 +ddcot015 comparetotal 0 2 -> -1 +ddcot016 comparetotal 1 -2 -> 1 +ddcot017 comparetotal 1 -1 -> 1 +ddcot018 comparetotal 1 0 -> 1 +ddcot019 comparetotal 1 1 -> 0 +ddcot020 comparetotal 1 2 -> -1 +ddcot021 comparetotal 2 -2 -> 1 +ddcot022 comparetotal 2 -1 -> 1 +ddcot023 comparetotal 2 0 -> 1 +ddcot025 comparetotal 2 1 -> 1 +ddcot026 comparetotal 2 2 -> 0 + +ddcot031 comparetotal -20 -20 -> 0 +ddcot032 comparetotal -20 -10 -> -1 +ddcot033 comparetotal -20 00 -> -1 +ddcot034 comparetotal -20 10 -> -1 +ddcot035 comparetotal -20 20 -> -1 +ddcot036 comparetotal -10 -20 -> 1 +ddcot037 comparetotal -10 -10 -> 0 +ddcot038 comparetotal -10 00 -> -1 +ddcot039 comparetotal -10 10 -> -1 +ddcot040 comparetotal -10 20 -> -1 +ddcot041 comparetotal 00 -20 -> 1 +ddcot042 comparetotal 00 -10 -> 1 +ddcot043 comparetotal 00 00 -> 0 +ddcot044 comparetotal 00 10 -> -1 +ddcot045 comparetotal 00 20 -> -1 +ddcot046 comparetotal 10 -20 -> 1 +ddcot047 comparetotal 10 -10 -> 1 +ddcot048 comparetotal 10 00 -> 1 +ddcot049 comparetotal 10 10 -> 0 +ddcot050 comparetotal 10 20 -> -1 +ddcot051 comparetotal 20 -20 -> 1 +ddcot052 comparetotal 20 -10 -> 1 +ddcot053 comparetotal 20 00 -> 1 +ddcot055 comparetotal 20 10 -> 1 +ddcot056 comparetotal 20 20 -> 0 + +ddcot061 comparetotal -2.0 -2.0 -> 0 +ddcot062 comparetotal -2.0 -1.0 -> -1 +ddcot063 comparetotal -2.0 0.0 -> -1 +ddcot064 comparetotal -2.0 1.0 -> -1 +ddcot065 comparetotal -2.0 2.0 -> -1 +ddcot066 comparetotal -1.0 -2.0 -> 1 +ddcot067 comparetotal -1.0 -1.0 -> 0 +ddcot068 comparetotal -1.0 0.0 -> -1 +ddcot069 comparetotal -1.0 1.0 -> -1 +ddcot070 comparetotal -1.0 2.0 -> -1 +ddcot071 comparetotal 0.0 -2.0 -> 1 +ddcot072 comparetotal 0.0 -1.0 -> 1 +ddcot073 comparetotal 0.0 0.0 -> 0 +ddcot074 comparetotal 0.0 1.0 -> -1 +ddcot075 comparetotal 0.0 2.0 -> -1 +ddcot076 comparetotal 1.0 -2.0 -> 1 +ddcot077 comparetotal 1.0 -1.0 -> 1 +ddcot078 comparetotal 1.0 0.0 -> 1 +ddcot079 comparetotal 1.0 1.0 -> 0 +ddcot080 comparetotal 1.0 2.0 -> -1 +ddcot081 comparetotal 2.0 -2.0 -> 1 +ddcot082 comparetotal 2.0 -1.0 -> 1 +ddcot083 comparetotal 2.0 0.0 -> 1 +ddcot085 comparetotal 2.0 1.0 -> 1 +ddcot086 comparetotal 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +ddcot090 comparetotal 9.99999999E+384 9.99999999E+384 -> 0 +ddcot091 comparetotal -9.99999999E+384 9.99999999E+384 -> -1 +ddcot092 comparetotal 9.99999999E+384 -9.99999999E+384 -> 1 +ddcot093 comparetotal -9.99999999E+384 -9.99999999E+384 -> 0 + +-- some differing length/exponent cases +-- in this first group, compare would compare all equal +ddcot100 comparetotal 7.0 7.0 -> 0 +ddcot101 comparetotal 7.0 7 -> -1 +ddcot102 comparetotal 7 7.0 -> 1 +ddcot103 comparetotal 7E+0 7.0 -> 1 +ddcot104 comparetotal 70E-1 7.0 -> 0 +ddcot105 comparetotal 0.7E+1 7 -> 0 +ddcot106 comparetotal 70E-1 7 -> -1 +ddcot107 comparetotal 7.0 7E+0 -> -1 +ddcot108 comparetotal 7.0 70E-1 -> 0 +ddcot109 comparetotal 7 0.7E+1 -> 0 +ddcot110 comparetotal 7 70E-1 -> 1 + +ddcot120 comparetotal 8.0 7.0 -> 1 +ddcot121 comparetotal 8.0 7 -> 1 +ddcot122 comparetotal 8 7.0 -> 1 +ddcot123 comparetotal 8E+0 7.0 -> 1 +ddcot124 comparetotal 80E-1 7.0 -> 1 +ddcot125 comparetotal 0.8E+1 7 -> 1 +ddcot126 comparetotal 80E-1 7 -> 1 +ddcot127 comparetotal 8.0 7E+0 -> 1 +ddcot128 comparetotal 8.0 70E-1 -> 1 +ddcot129 comparetotal 8 0.7E+1 -> 1 +ddcot130 comparetotal 8 70E-1 -> 1 + +ddcot140 comparetotal 8.0 9.0 -> -1 +ddcot141 comparetotal 8.0 9 -> -1 +ddcot142 comparetotal 8 9.0 -> -1 +ddcot143 comparetotal 8E+0 9.0 -> -1 +ddcot144 comparetotal 80E-1 9.0 -> -1 +ddcot145 comparetotal 0.8E+1 9 -> -1 +ddcot146 comparetotal 80E-1 9 -> -1 +ddcot147 comparetotal 8.0 9E+0 -> -1 +ddcot148 comparetotal 8.0 90E-1 -> -1 +ddcot149 comparetotal 8 0.9E+1 -> -1 +ddcot150 comparetotal 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +ddcot200 comparetotal -7.0 7.0 -> -1 +ddcot201 comparetotal -7.0 7 -> -1 +ddcot202 comparetotal -7 7.0 -> -1 +ddcot203 comparetotal -7E+0 7.0 -> -1 +ddcot204 comparetotal -70E-1 7.0 -> -1 +ddcot205 comparetotal -0.7E+1 7 -> -1 +ddcot206 comparetotal -70E-1 7 -> -1 +ddcot207 comparetotal -7.0 7E+0 -> -1 +ddcot208 comparetotal -7.0 70E-1 -> -1 +ddcot209 comparetotal -7 0.7E+1 -> -1 +ddcot210 comparetotal -7 70E-1 -> -1 + +ddcot220 comparetotal -8.0 7.0 -> -1 +ddcot221 comparetotal -8.0 7 -> -1 +ddcot222 comparetotal -8 7.0 -> -1 +ddcot223 comparetotal -8E+0 7.0 -> -1 +ddcot224 comparetotal -80E-1 7.0 -> -1 +ddcot225 comparetotal -0.8E+1 7 -> -1 +ddcot226 comparetotal -80E-1 7 -> -1 +ddcot227 comparetotal -8.0 7E+0 -> -1 +ddcot228 comparetotal -8.0 70E-1 -> -1 +ddcot229 comparetotal -8 0.7E+1 -> -1 +ddcot230 comparetotal -8 70E-1 -> -1 + +ddcot240 comparetotal -8.0 9.0 -> -1 +ddcot241 comparetotal -8.0 9 -> -1 +ddcot242 comparetotal -8 9.0 -> -1 +ddcot243 comparetotal -8E+0 9.0 -> -1 +ddcot244 comparetotal -80E-1 9.0 -> -1 +ddcot245 comparetotal -0.8E+1 9 -> -1 +ddcot246 comparetotal -80E-1 9 -> -1 +ddcot247 comparetotal -8.0 9E+0 -> -1 +ddcot248 comparetotal -8.0 90E-1 -> -1 +ddcot249 comparetotal -8 0.9E+1 -> -1 +ddcot250 comparetotal -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +ddcot300 comparetotal 7.0 -7.0 -> 1 +ddcot301 comparetotal 7.0 -7 -> 1 +ddcot302 comparetotal 7 -7.0 -> 1 +ddcot303 comparetotal 7E+0 -7.0 -> 1 +ddcot304 comparetotal 70E-1 -7.0 -> 1 +ddcot305 comparetotal .7E+1 -7 -> 1 +ddcot306 comparetotal 70E-1 -7 -> 1 +ddcot307 comparetotal 7.0 -7E+0 -> 1 +ddcot308 comparetotal 7.0 -70E-1 -> 1 +ddcot309 comparetotal 7 -.7E+1 -> 1 +ddcot310 comparetotal 7 -70E-1 -> 1 + +ddcot320 comparetotal 8.0 -7.0 -> 1 +ddcot321 comparetotal 8.0 -7 -> 1 +ddcot322 comparetotal 8 -7.0 -> 1 +ddcot323 comparetotal 8E+0 -7.0 -> 1 +ddcot324 comparetotal 80E-1 -7.0 -> 1 +ddcot325 comparetotal .8E+1 -7 -> 1 +ddcot326 comparetotal 80E-1 -7 -> 1 +ddcot327 comparetotal 8.0 -7E+0 -> 1 +ddcot328 comparetotal 8.0 -70E-1 -> 1 +ddcot329 comparetotal 8 -.7E+1 -> 1 +ddcot330 comparetotal 8 -70E-1 -> 1 + +ddcot340 comparetotal 8.0 -9.0 -> 1 +ddcot341 comparetotal 8.0 -9 -> 1 +ddcot342 comparetotal 8 -9.0 -> 1 +ddcot343 comparetotal 8E+0 -9.0 -> 1 +ddcot344 comparetotal 80E-1 -9.0 -> 1 +ddcot345 comparetotal .8E+1 -9 -> 1 +ddcot346 comparetotal 80E-1 -9 -> 1 +ddcot347 comparetotal 8.0 -9E+0 -> 1 +ddcot348 comparetotal 8.0 -90E-1 -> 1 +ddcot349 comparetotal 8 -.9E+1 -> 1 +ddcot350 comparetotal 8 -90E-1 -> 1 + +-- and again, with sign changes -- .. +ddcot400 comparetotal -7.0 -7.0 -> 0 +ddcot401 comparetotal -7.0 -7 -> 1 +ddcot402 comparetotal -7 -7.0 -> -1 +ddcot403 comparetotal -7E+0 -7.0 -> -1 +ddcot404 comparetotal -70E-1 -7.0 -> 0 +ddcot405 comparetotal -.7E+1 -7 -> 0 +ddcot406 comparetotal -70E-1 -7 -> 1 +ddcot407 comparetotal -7.0 -7E+0 -> 1 +ddcot408 comparetotal -7.0 -70E-1 -> 0 +ddcot409 comparetotal -7 -.7E+1 -> 0 +ddcot410 comparetotal -7 -70E-1 -> -1 + +ddcot420 comparetotal -8.0 -7.0 -> -1 +ddcot421 comparetotal -8.0 -7 -> -1 +ddcot422 comparetotal -8 -7.0 -> -1 +ddcot423 comparetotal -8E+0 -7.0 -> -1 +ddcot424 comparetotal -80E-1 -7.0 -> -1 +ddcot425 comparetotal -.8E+1 -7 -> -1 +ddcot426 comparetotal -80E-1 -7 -> -1 +ddcot427 comparetotal -8.0 -7E+0 -> -1 +ddcot428 comparetotal -8.0 -70E-1 -> -1 +ddcot429 comparetotal -8 -.7E+1 -> -1 +ddcot430 comparetotal -8 -70E-1 -> -1 + +ddcot440 comparetotal -8.0 -9.0 -> 1 +ddcot441 comparetotal -8.0 -9 -> 1 +ddcot442 comparetotal -8 -9.0 -> 1 +ddcot443 comparetotal -8E+0 -9.0 -> 1 +ddcot444 comparetotal -80E-1 -9.0 -> 1 +ddcot445 comparetotal -.8E+1 -9 -> 1 +ddcot446 comparetotal -80E-1 -9 -> 1 +ddcot447 comparetotal -8.0 -9E+0 -> 1 +ddcot448 comparetotal -8.0 -90E-1 -> 1 +ddcot449 comparetotal -8 -.9E+1 -> 1 +ddcot450 comparetotal -8 -90E-1 -> 1 + + +-- testcases that subtract to lots of zeros at boundaries [pgr] +ddcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1 +ddcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1 +ddcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1 +ddcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1 +ddcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1 +ddcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1 +ddcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1 +ddcot480 comparetotal 123.456000E+89 123.456E+89 -> -1 +ddcot481 comparetotal 123.45600E-89 123.456E-89 -> -1 +ddcot482 comparetotal 123.4560E+89 123.456E+89 -> -1 +ddcot483 comparetotal 123.456E-89 123.456E-89 -> 0 +ddcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1 +ddcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1 +ddcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1 +ddcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1 +ddcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1 +ddcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1 +ddcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1 +ddcot494 comparetotal 123.456E-89 123.456000E-89 -> 1 +ddcot495 comparetotal 123.456E+89 123.45600E+89 -> 1 +ddcot496 comparetotal 123.456E-89 123.4560E-89 -> 1 +ddcot497 comparetotal 123.456E+89 123.456E+89 -> 0 + +-- wide-ranging, around precision; signs equal +ddcot498 comparetotal 1 1E-17 -> 1 +ddcot499 comparetotal 1 1E-16 -> 1 +ddcot500 comparetotal 1 1E-15 -> 1 +ddcot501 comparetotal 1 1E-14 -> 1 +ddcot502 comparetotal 1 1E-13 -> 1 +ddcot503 comparetotal 1 1E-12 -> 1 +ddcot504 comparetotal 1 1E-11 -> 1 +ddcot505 comparetotal 1 1E-10 -> 1 +ddcot506 comparetotal 1 1E-9 -> 1 +ddcot507 comparetotal 1 1E-8 -> 1 +ddcot508 comparetotal 1 1E-7 -> 1 +ddcot509 comparetotal 1 1E-6 -> 1 +ddcot510 comparetotal 1 1E-5 -> 1 +ddcot511 comparetotal 1 1E-4 -> 1 +ddcot512 comparetotal 1 1E-3 -> 1 +ddcot513 comparetotal 1 1E-2 -> 1 +ddcot514 comparetotal 1 1E-1 -> 1 +ddcot515 comparetotal 1 1E-0 -> 0 +ddcot516 comparetotal 1 1E+1 -> -1 +ddcot517 comparetotal 1 1E+2 -> -1 +ddcot518 comparetotal 1 1E+3 -> -1 +ddcot519 comparetotal 1 1E+4 -> -1 +ddcot521 comparetotal 1 1E+5 -> -1 +ddcot522 comparetotal 1 1E+6 -> -1 +ddcot523 comparetotal 1 1E+7 -> -1 +ddcot524 comparetotal 1 1E+8 -> -1 +ddcot525 comparetotal 1 1E+9 -> -1 +ddcot526 comparetotal 1 1E+10 -> -1 +ddcot527 comparetotal 1 1E+11 -> -1 +ddcot528 comparetotal 1 1E+12 -> -1 +ddcot529 comparetotal 1 1E+13 -> -1 +ddcot530 comparetotal 1 1E+14 -> -1 +ddcot531 comparetotal 1 1E+15 -> -1 +ddcot532 comparetotal 1 1E+16 -> -1 +ddcot533 comparetotal 1 1E+17 -> -1 +-- LR swap +ddcot538 comparetotal 1E-17 1 -> -1 +ddcot539 comparetotal 1E-16 1 -> -1 +ddcot540 comparetotal 1E-15 1 -> -1 +ddcot541 comparetotal 1E-14 1 -> -1 +ddcot542 comparetotal 1E-13 1 -> -1 +ddcot543 comparetotal 1E-12 1 -> -1 +ddcot544 comparetotal 1E-11 1 -> -1 +ddcot545 comparetotal 1E-10 1 -> -1 +ddcot546 comparetotal 1E-9 1 -> -1 +ddcot547 comparetotal 1E-8 1 -> -1 +ddcot548 comparetotal 1E-7 1 -> -1 +ddcot549 comparetotal 1E-6 1 -> -1 +ddcot550 comparetotal 1E-5 1 -> -1 +ddcot551 comparetotal 1E-4 1 -> -1 +ddcot552 comparetotal 1E-3 1 -> -1 +ddcot553 comparetotal 1E-2 1 -> -1 +ddcot554 comparetotal 1E-1 1 -> -1 +ddcot555 comparetotal 1E-0 1 -> 0 +ddcot556 comparetotal 1E+1 1 -> 1 +ddcot557 comparetotal 1E+2 1 -> 1 +ddcot558 comparetotal 1E+3 1 -> 1 +ddcot559 comparetotal 1E+4 1 -> 1 +ddcot561 comparetotal 1E+5 1 -> 1 +ddcot562 comparetotal 1E+6 1 -> 1 +ddcot563 comparetotal 1E+7 1 -> 1 +ddcot564 comparetotal 1E+8 1 -> 1 +ddcot565 comparetotal 1E+9 1 -> 1 +ddcot566 comparetotal 1E+10 1 -> 1 +ddcot567 comparetotal 1E+11 1 -> 1 +ddcot568 comparetotal 1E+12 1 -> 1 +ddcot569 comparetotal 1E+13 1 -> 1 +ddcot570 comparetotal 1E+14 1 -> 1 +ddcot571 comparetotal 1E+15 1 -> 1 +ddcot572 comparetotal 1E+16 1 -> 1 +ddcot573 comparetotal 1E+17 1 -> 1 +-- similar with a useful coefficient, one side only +ddcot578 comparetotal 0.000000987654321 1E-17 -> 1 +ddcot579 comparetotal 0.000000987654321 1E-16 -> 1 +ddcot580 comparetotal 0.000000987654321 1E-15 -> 1 +ddcot581 comparetotal 0.000000987654321 1E-14 -> 1 +ddcot582 comparetotal 0.000000987654321 1E-13 -> 1 +ddcot583 comparetotal 0.000000987654321 1E-12 -> 1 +ddcot584 comparetotal 0.000000987654321 1E-11 -> 1 +ddcot585 comparetotal 0.000000987654321 1E-10 -> 1 +ddcot586 comparetotal 0.000000987654321 1E-9 -> 1 +ddcot587 comparetotal 0.000000987654321 1E-8 -> 1 +ddcot588 comparetotal 0.000000987654321 1E-7 -> 1 +ddcot589 comparetotal 0.000000987654321 1E-6 -> -1 +ddcot590 comparetotal 0.000000987654321 1E-5 -> -1 +ddcot591 comparetotal 0.000000987654321 1E-4 -> -1 +ddcot592 comparetotal 0.000000987654321 1E-3 -> -1 +ddcot593 comparetotal 0.000000987654321 1E-2 -> -1 +ddcot594 comparetotal 0.000000987654321 1E-1 -> -1 +ddcot595 comparetotal 0.000000987654321 1E-0 -> -1 +ddcot596 comparetotal 0.000000987654321 1E+1 -> -1 +ddcot597 comparetotal 0.000000987654321 1E+2 -> -1 +ddcot598 comparetotal 0.000000987654321 1E+3 -> -1 +ddcot599 comparetotal 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +ddcot600 comparetotal 12 12.2345 -> -1 +ddcot601 comparetotal 12.0 12.2345 -> -1 +ddcot602 comparetotal 12.00 12.2345 -> -1 +ddcot603 comparetotal 12.000 12.2345 -> -1 +ddcot604 comparetotal 12.0000 12.2345 -> -1 +ddcot605 comparetotal 12.00000 12.2345 -> -1 +ddcot606 comparetotal 12.000000 12.2345 -> -1 +ddcot607 comparetotal 12.0000000 12.2345 -> -1 +ddcot608 comparetotal 12.00000000 12.2345 -> -1 +ddcot609 comparetotal 12.000000000 12.2345 -> -1 +ddcot610 comparetotal 12.1234 12 -> 1 +ddcot611 comparetotal 12.1234 12.0 -> 1 +ddcot612 comparetotal 12.1234 12.00 -> 1 +ddcot613 comparetotal 12.1234 12.000 -> 1 +ddcot614 comparetotal 12.1234 12.0000 -> 1 +ddcot615 comparetotal 12.1234 12.00000 -> 1 +ddcot616 comparetotal 12.1234 12.000000 -> 1 +ddcot617 comparetotal 12.1234 12.0000000 -> 1 +ddcot618 comparetotal 12.1234 12.00000000 -> 1 +ddcot619 comparetotal 12.1234 12.000000000 -> 1 +ddcot620 comparetotal -12 -12.2345 -> 1 +ddcot621 comparetotal -12.0 -12.2345 -> 1 +ddcot622 comparetotal -12.00 -12.2345 -> 1 +ddcot623 comparetotal -12.000 -12.2345 -> 1 +ddcot624 comparetotal -12.0000 -12.2345 -> 1 +ddcot625 comparetotal -12.00000 -12.2345 -> 1 +ddcot626 comparetotal -12.000000 -12.2345 -> 1 +ddcot627 comparetotal -12.0000000 -12.2345 -> 1 +ddcot628 comparetotal -12.00000000 -12.2345 -> 1 +ddcot629 comparetotal -12.000000000 -12.2345 -> 1 +ddcot630 comparetotal -12.1234 -12 -> -1 +ddcot631 comparetotal -12.1234 -12.0 -> -1 +ddcot632 comparetotal -12.1234 -12.00 -> -1 +ddcot633 comparetotal -12.1234 -12.000 -> -1 +ddcot634 comparetotal -12.1234 -12.0000 -> -1 +ddcot635 comparetotal -12.1234 -12.00000 -> -1 +ddcot636 comparetotal -12.1234 -12.000000 -> -1 +ddcot637 comparetotal -12.1234 -12.0000000 -> -1 +ddcot638 comparetotal -12.1234 -12.00000000 -> -1 +ddcot639 comparetotal -12.1234 -12.000000000 -> -1 + +-- extended zeros +ddcot640 comparetotal 0 0 -> 0 +ddcot641 comparetotal 0 -0 -> 1 +ddcot642 comparetotal 0 -0.0 -> 1 +ddcot643 comparetotal 0 0.0 -> 1 +ddcot644 comparetotal -0 0 -> -1 +ddcot645 comparetotal -0 -0 -> 0 +ddcot646 comparetotal -0 -0.0 -> -1 +ddcot647 comparetotal -0 0.0 -> -1 +ddcot648 comparetotal 0.0 0 -> -1 +ddcot649 comparetotal 0.0 -0 -> 1 +ddcot650 comparetotal 0.0 -0.0 -> 1 +ddcot651 comparetotal 0.0 0.0 -> 0 +ddcot652 comparetotal -0.0 0 -> -1 +ddcot653 comparetotal -0.0 -0 -> 1 +ddcot654 comparetotal -0.0 -0.0 -> 0 +ddcot655 comparetotal -0.0 0.0 -> -1 + +ddcot656 comparetotal -0E1 0.0 -> -1 +ddcot657 comparetotal -0E2 0.0 -> -1 +ddcot658 comparetotal 0E1 0.0 -> 1 +ddcot659 comparetotal 0E2 0.0 -> 1 +ddcot660 comparetotal -0E1 0 -> -1 +ddcot661 comparetotal -0E2 0 -> -1 +ddcot662 comparetotal 0E1 0 -> 1 +ddcot663 comparetotal 0E2 0 -> 1 +ddcot664 comparetotal -0E1 -0E1 -> 0 +ddcot665 comparetotal -0E2 -0E1 -> -1 +ddcot666 comparetotal 0E1 -0E1 -> 1 +ddcot667 comparetotal 0E2 -0E1 -> 1 +ddcot668 comparetotal -0E1 -0E2 -> 1 +ddcot669 comparetotal -0E2 -0E2 -> 0 +ddcot670 comparetotal 0E1 -0E2 -> 1 +ddcot671 comparetotal 0E2 -0E2 -> 1 +ddcot672 comparetotal -0E1 0E1 -> -1 +ddcot673 comparetotal -0E2 0E1 -> -1 +ddcot674 comparetotal 0E1 0E1 -> 0 +ddcot675 comparetotal 0E2 0E1 -> 1 +ddcot676 comparetotal -0E1 0E2 -> -1 +ddcot677 comparetotal -0E2 0E2 -> -1 +ddcot678 comparetotal 0E1 0E2 -> -1 +ddcot679 comparetotal 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +ddcot680 comparetotal 12 12 -> 0 +ddcot681 comparetotal 12 12.0 -> 1 +ddcot682 comparetotal 12 12.00 -> 1 +ddcot683 comparetotal 12 12.000 -> 1 +ddcot684 comparetotal 12 12.0000 -> 1 +ddcot685 comparetotal 12 12.00000 -> 1 +ddcot686 comparetotal 12 12.000000 -> 1 +ddcot687 comparetotal 12 12.0000000 -> 1 +ddcot688 comparetotal 12 12.00000000 -> 1 +ddcot689 comparetotal 12 12.000000000 -> 1 +ddcot690 comparetotal 12 12 -> 0 +ddcot691 comparetotal 12.0 12 -> -1 +ddcot692 comparetotal 12.00 12 -> -1 +ddcot693 comparetotal 12.000 12 -> -1 +ddcot694 comparetotal 12.0000 12 -> -1 +ddcot695 comparetotal 12.00000 12 -> -1 +ddcot696 comparetotal 12.000000 12 -> -1 +ddcot697 comparetotal 12.0000000 12 -> -1 +ddcot698 comparetotal 12.00000000 12 -> -1 +ddcot699 comparetotal 12.000000000 12 -> -1 + +-- old long operand checks +ddcot701 comparetotal 12345678000 1 -> 1 +ddcot702 comparetotal 1 12345678000 -> -1 +ddcot703 comparetotal 1234567800 1 -> 1 +ddcot704 comparetotal 1 1234567800 -> -1 +ddcot705 comparetotal 1234567890 1 -> 1 +ddcot706 comparetotal 1 1234567890 -> -1 +ddcot707 comparetotal 1234567891 1 -> 1 +ddcot708 comparetotal 1 1234567891 -> -1 +ddcot709 comparetotal 12345678901 1 -> 1 +ddcot710 comparetotal 1 12345678901 -> -1 +ddcot711 comparetotal 1234567896 1 -> 1 +ddcot712 comparetotal 1 1234567896 -> -1 +ddcot713 comparetotal -1234567891 1 -> -1 +ddcot714 comparetotal 1 -1234567891 -> 1 +ddcot715 comparetotal -12345678901 1 -> -1 +ddcot716 comparetotal 1 -12345678901 -> 1 +ddcot717 comparetotal -1234567896 1 -> -1 +ddcot718 comparetotal 1 -1234567896 -> 1 + +-- old residue cases +ddcot740 comparetotal 1 0.9999999 -> 1 +ddcot741 comparetotal 1 0.999999 -> 1 +ddcot742 comparetotal 1 0.99999 -> 1 +ddcot743 comparetotal 1 1.0000 -> 1 +ddcot744 comparetotal 1 1.00001 -> -1 +ddcot745 comparetotal 1 1.000001 -> -1 +ddcot746 comparetotal 1 1.0000001 -> -1 +ddcot750 comparetotal 0.9999999 1 -> -1 +ddcot751 comparetotal 0.999999 1 -> -1 +ddcot752 comparetotal 0.99999 1 -> -1 +ddcot753 comparetotal 1.0000 1 -> -1 +ddcot754 comparetotal 1.00001 1 -> 1 +ddcot755 comparetotal 1.000001 1 -> 1 +ddcot756 comparetotal 1.0000001 1 -> 1 + +-- Specials +ddcot780 comparetotal Inf -Inf -> 1 +ddcot781 comparetotal Inf -1000 -> 1 +ddcot782 comparetotal Inf -1 -> 1 +ddcot783 comparetotal Inf -0 -> 1 +ddcot784 comparetotal Inf 0 -> 1 +ddcot785 comparetotal Inf 1 -> 1 +ddcot786 comparetotal Inf 1000 -> 1 +ddcot787 comparetotal Inf Inf -> 0 +ddcot788 comparetotal -1000 Inf -> -1 +ddcot789 comparetotal -Inf Inf -> -1 +ddcot790 comparetotal -1 Inf -> -1 +ddcot791 comparetotal -0 Inf -> -1 +ddcot792 comparetotal 0 Inf -> -1 +ddcot793 comparetotal 1 Inf -> -1 +ddcot794 comparetotal 1000 Inf -> -1 +ddcot795 comparetotal Inf Inf -> 0 + +ddcot800 comparetotal -Inf -Inf -> 0 +ddcot801 comparetotal -Inf -1000 -> -1 +ddcot802 comparetotal -Inf -1 -> -1 +ddcot803 comparetotal -Inf -0 -> -1 +ddcot804 comparetotal -Inf 0 -> -1 +ddcot805 comparetotal -Inf 1 -> -1 +ddcot806 comparetotal -Inf 1000 -> -1 +ddcot807 comparetotal -Inf Inf -> -1 +ddcot808 comparetotal -Inf -Inf -> 0 +ddcot809 comparetotal -1000 -Inf -> 1 +ddcot810 comparetotal -1 -Inf -> 1 +ddcot811 comparetotal -0 -Inf -> 1 +ddcot812 comparetotal 0 -Inf -> 1 +ddcot813 comparetotal 1 -Inf -> 1 +ddcot814 comparetotal 1000 -Inf -> 1 +ddcot815 comparetotal Inf -Inf -> 1 + +ddcot821 comparetotal NaN -Inf -> 1 +ddcot822 comparetotal NaN -1000 -> 1 +ddcot823 comparetotal NaN -1 -> 1 +ddcot824 comparetotal NaN -0 -> 1 +ddcot825 comparetotal NaN 0 -> 1 +ddcot826 comparetotal NaN 1 -> 1 +ddcot827 comparetotal NaN 1000 -> 1 +ddcot828 comparetotal NaN Inf -> 1 +ddcot829 comparetotal NaN NaN -> 0 +ddcot830 comparetotal -Inf NaN -> -1 +ddcot831 comparetotal -1000 NaN -> -1 +ddcot832 comparetotal -1 NaN -> -1 +ddcot833 comparetotal -0 NaN -> -1 +ddcot834 comparetotal 0 NaN -> -1 +ddcot835 comparetotal 1 NaN -> -1 +ddcot836 comparetotal 1000 NaN -> -1 +ddcot837 comparetotal Inf NaN -> -1 +ddcot838 comparetotal -NaN -NaN -> 0 +ddcot839 comparetotal +NaN -NaN -> 1 +ddcot840 comparetotal -NaN +NaN -> -1 + +ddcot841 comparetotal sNaN -sNaN -> 1 +ddcot842 comparetotal sNaN -NaN -> 1 +ddcot843 comparetotal sNaN -Inf -> 1 +ddcot844 comparetotal sNaN -1000 -> 1 +ddcot845 comparetotal sNaN -1 -> 1 +ddcot846 comparetotal sNaN -0 -> 1 +ddcot847 comparetotal sNaN 0 -> 1 +ddcot848 comparetotal sNaN 1 -> 1 +ddcot849 comparetotal sNaN 1000 -> 1 +ddcot850 comparetotal sNaN NaN -> -1 +ddcot851 comparetotal sNaN sNaN -> 0 + +ddcot852 comparetotal -sNaN sNaN -> -1 +ddcot853 comparetotal -NaN sNaN -> -1 +ddcot854 comparetotal -Inf sNaN -> -1 +ddcot855 comparetotal -1000 sNaN -> -1 +ddcot856 comparetotal -1 sNaN -> -1 +ddcot857 comparetotal -0 sNaN -> -1 +ddcot858 comparetotal 0 sNaN -> -1 +ddcot859 comparetotal 1 sNaN -> -1 +ddcot860 comparetotal 1000 sNaN -> -1 +ddcot861 comparetotal Inf sNaN -> -1 +ddcot862 comparetotal NaN sNaN -> 1 +ddcot863 comparetotal sNaN sNaN -> 0 + +ddcot871 comparetotal -sNaN -sNaN -> 0 +ddcot872 comparetotal -sNaN -NaN -> 1 +ddcot873 comparetotal -sNaN -Inf -> -1 +ddcot874 comparetotal -sNaN -1000 -> -1 +ddcot875 comparetotal -sNaN -1 -> -1 +ddcot876 comparetotal -sNaN -0 -> -1 +ddcot877 comparetotal -sNaN 0 -> -1 +ddcot878 comparetotal -sNaN 1 -> -1 +ddcot879 comparetotal -sNaN 1000 -> -1 +ddcot880 comparetotal -sNaN NaN -> -1 +ddcot881 comparetotal -sNaN sNaN -> -1 + +ddcot882 comparetotal -sNaN -sNaN -> 0 +ddcot883 comparetotal -NaN -sNaN -> -1 +ddcot884 comparetotal -Inf -sNaN -> 1 +ddcot885 comparetotal -1000 -sNaN -> 1 +ddcot886 comparetotal -1 -sNaN -> 1 +ddcot887 comparetotal -0 -sNaN -> 1 +ddcot888 comparetotal 0 -sNaN -> 1 +ddcot889 comparetotal 1 -sNaN -> 1 +ddcot890 comparetotal 1000 -sNaN -> 1 +ddcot891 comparetotal Inf -sNaN -> 1 +ddcot892 comparetotal NaN -sNaN -> 1 +ddcot893 comparetotal sNaN -sNaN -> 1 + +-- NaNs with payload +ddcot960 comparetotal NaN9 -Inf -> 1 +ddcot961 comparetotal NaN8 999 -> 1 +ddcot962 comparetotal NaN77 Inf -> 1 +ddcot963 comparetotal -NaN67 NaN5 -> -1 +ddcot964 comparetotal -Inf -NaN4 -> 1 +ddcot965 comparetotal -999 -NaN33 -> 1 +ddcot966 comparetotal Inf NaN2 -> -1 + +ddcot970 comparetotal -NaN41 -NaN42 -> 1 +ddcot971 comparetotal +NaN41 -NaN42 -> 1 +ddcot972 comparetotal -NaN41 +NaN42 -> -1 +ddcot973 comparetotal +NaN41 +NaN42 -> -1 +ddcot974 comparetotal -NaN42 -NaN01 -> -1 +ddcot975 comparetotal +NaN42 -NaN01 -> 1 +ddcot976 comparetotal -NaN42 +NaN01 -> -1 +ddcot977 comparetotal +NaN42 +NaN01 -> 1 + +ddcot980 comparetotal -sNaN771 -sNaN772 -> 1 +ddcot981 comparetotal +sNaN771 -sNaN772 -> 1 +ddcot982 comparetotal -sNaN771 +sNaN772 -> -1 +ddcot983 comparetotal +sNaN771 +sNaN772 -> -1 +ddcot984 comparetotal -sNaN772 -sNaN771 -> -1 +ddcot985 comparetotal +sNaN772 -sNaN771 -> 1 +ddcot986 comparetotal -sNaN772 +sNaN771 -> -1 +ddcot987 comparetotal +sNaN772 +sNaN771 -> 1 + +ddcot991 comparetotal -sNaN99 -Inf -> -1 +ddcot992 comparetotal sNaN98 -11 -> 1 +ddcot993 comparetotal sNaN97 NaN -> -1 +ddcot994 comparetotal sNaN16 sNaN94 -> -1 +ddcot995 comparetotal NaN85 sNaN83 -> 1 +ddcot996 comparetotal -Inf sNaN92 -> -1 +ddcot997 comparetotal 088 sNaN81 -> -1 +ddcot998 comparetotal Inf sNaN90 -> -1 +ddcot999 comparetotal NaN -sNaN89 -> 1 + +-- spread zeros +ddcot1110 comparetotal 0E-383 0 -> -1 +ddcot1111 comparetotal 0E-383 -0 -> 1 +ddcot1112 comparetotal -0E-383 0 -> -1 +ddcot1113 comparetotal -0E-383 -0 -> 1 +ddcot1114 comparetotal 0E-383 0E+384 -> -1 +ddcot1115 comparetotal 0E-383 -0E+384 -> 1 +ddcot1116 comparetotal -0E-383 0E+384 -> -1 +ddcot1117 comparetotal -0E-383 -0E+384 -> 1 +ddcot1118 comparetotal 0 0E+384 -> -1 +ddcot1119 comparetotal 0 -0E+384 -> 1 +ddcot1120 comparetotal -0 0E+384 -> -1 +ddcot1121 comparetotal -0 -0E+384 -> 1 + +ddcot1130 comparetotal 0E+384 0 -> 1 +ddcot1131 comparetotal 0E+384 -0 -> 1 +ddcot1132 comparetotal -0E+384 0 -> -1 +ddcot1133 comparetotal -0E+384 -0 -> -1 +ddcot1134 comparetotal 0E+384 0E-383 -> 1 +ddcot1135 comparetotal 0E+384 -0E-383 -> 1 +ddcot1136 comparetotal -0E+384 0E-383 -> -1 +ddcot1137 comparetotal -0E+384 -0E-383 -> -1 +ddcot1138 comparetotal 0 0E-383 -> 1 +ddcot1139 comparetotal 0 -0E-383 -> 1 +ddcot1140 comparetotal -0 0E-383 -> -1 +ddcot1141 comparetotal -0 -0E-383 -> -1 + +-- Null tests +ddcot9990 comparetotal 10 # -> NaN Invalid_operation +ddcot9991 comparetotal # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddCompareTotalMag.decTest b/Lib/test/decimaltestdata/ddCompareTotalMag.decTest index f16537a..087a092 100644 --- a/Lib/test/decimaltestdata/ddCompareTotalMag.decTest +++ b/Lib/test/decimaltestdata/ddCompareTotalMag.decTest @@ -1,706 +1,706 @@ ------------------------------------------------------------------------- --- ddCompareTotalMag.decTest -- decDouble comparison; abs. total order-- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). --- Similarly, comparetotal will have some radically different paths --- than compare. - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddctm001 comparetotmag -2 -2 -> 0 -ddctm002 comparetotmag -2 -1 -> 1 -ddctm003 comparetotmag -2 0 -> 1 -ddctm004 comparetotmag -2 1 -> 1 -ddctm005 comparetotmag -2 2 -> 0 -ddctm006 comparetotmag -1 -2 -> -1 -ddctm007 comparetotmag -1 -1 -> 0 -ddctm008 comparetotmag -1 0 -> 1 -ddctm009 comparetotmag -1 1 -> 0 -ddctm010 comparetotmag -1 2 -> -1 -ddctm011 comparetotmag 0 -2 -> -1 -ddctm012 comparetotmag 0 -1 -> -1 -ddctm013 comparetotmag 0 0 -> 0 -ddctm014 comparetotmag 0 1 -> -1 -ddctm015 comparetotmag 0 2 -> -1 -ddctm016 comparetotmag 1 -2 -> -1 -ddctm017 comparetotmag 1 -1 -> 0 -ddctm018 comparetotmag 1 0 -> 1 -ddctm019 comparetotmag 1 1 -> 0 -ddctm020 comparetotmag 1 2 -> -1 -ddctm021 comparetotmag 2 -2 -> 0 -ddctm022 comparetotmag 2 -1 -> 1 -ddctm023 comparetotmag 2 0 -> 1 -ddctm025 comparetotmag 2 1 -> 1 -ddctm026 comparetotmag 2 2 -> 0 - -ddctm031 comparetotmag -20 -20 -> 0 -ddctm032 comparetotmag -20 -10 -> 1 -ddctm033 comparetotmag -20 00 -> 1 -ddctm034 comparetotmag -20 10 -> 1 -ddctm035 comparetotmag -20 20 -> 0 -ddctm036 comparetotmag -10 -20 -> -1 -ddctm037 comparetotmag -10 -10 -> 0 -ddctm038 comparetotmag -10 00 -> 1 -ddctm039 comparetotmag -10 10 -> 0 -ddctm040 comparetotmag -10 20 -> -1 -ddctm041 comparetotmag 00 -20 -> -1 -ddctm042 comparetotmag 00 -10 -> -1 -ddctm043 comparetotmag 00 00 -> 0 -ddctm044 comparetotmag 00 10 -> -1 -ddctm045 comparetotmag 00 20 -> -1 -ddctm046 comparetotmag 10 -20 -> -1 -ddctm047 comparetotmag 10 -10 -> 0 -ddctm048 comparetotmag 10 00 -> 1 -ddctm049 comparetotmag 10 10 -> 0 -ddctm050 comparetotmag 10 20 -> -1 -ddctm051 comparetotmag 20 -20 -> 0 -ddctm052 comparetotmag 20 -10 -> 1 -ddctm053 comparetotmag 20 00 -> 1 -ddctm055 comparetotmag 20 10 -> 1 -ddctm056 comparetotmag 20 20 -> 0 - -ddctm061 comparetotmag -2.0 -2.0 -> 0 -ddctm062 comparetotmag -2.0 -1.0 -> 1 -ddctm063 comparetotmag -2.0 0.0 -> 1 -ddctm064 comparetotmag -2.0 1.0 -> 1 -ddctm065 comparetotmag -2.0 2.0 -> 0 -ddctm066 comparetotmag -1.0 -2.0 -> -1 -ddctm067 comparetotmag -1.0 -1.0 -> 0 -ddctm068 comparetotmag -1.0 0.0 -> 1 -ddctm069 comparetotmag -1.0 1.0 -> 0 -ddctm070 comparetotmag -1.0 2.0 -> -1 -ddctm071 comparetotmag 0.0 -2.0 -> -1 -ddctm072 comparetotmag 0.0 -1.0 -> -1 -ddctm073 comparetotmag 0.0 0.0 -> 0 -ddctm074 comparetotmag 0.0 1.0 -> -1 -ddctm075 comparetotmag 0.0 2.0 -> -1 -ddctm076 comparetotmag 1.0 -2.0 -> -1 -ddctm077 comparetotmag 1.0 -1.0 -> 0 -ddctm078 comparetotmag 1.0 0.0 -> 1 -ddctm079 comparetotmag 1.0 1.0 -> 0 -ddctm080 comparetotmag 1.0 2.0 -> -1 -ddctm081 comparetotmag 2.0 -2.0 -> 0 -ddctm082 comparetotmag 2.0 -1.0 -> 1 -ddctm083 comparetotmag 2.0 0.0 -> 1 -ddctm085 comparetotmag 2.0 1.0 -> 1 -ddctm086 comparetotmag 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -ddctm090 comparetotmag 9.99999999E+384 9.99999999E+384 -> 0 -ddctm091 comparetotmag -9.99999999E+384 9.99999999E+384 -> 0 -ddctm092 comparetotmag 9.99999999E+384 -9.99999999E+384 -> 0 -ddctm093 comparetotmag -9.99999999E+384 -9.99999999E+384 -> 0 - --- some differing length/exponent cases --- in this first group, compare would compare all equal -ddctm100 comparetotmag 7.0 7.0 -> 0 -ddctm101 comparetotmag 7.0 7 -> -1 -ddctm102 comparetotmag 7 7.0 -> 1 -ddctm103 comparetotmag 7E+0 7.0 -> 1 -ddctm104 comparetotmag 70E-1 7.0 -> 0 -ddctm105 comparetotmag 0.7E+1 7 -> 0 -ddctm106 comparetotmag 70E-1 7 -> -1 -ddctm107 comparetotmag 7.0 7E+0 -> -1 -ddctm108 comparetotmag 7.0 70E-1 -> 0 -ddctm109 comparetotmag 7 0.7E+1 -> 0 -ddctm110 comparetotmag 7 70E-1 -> 1 - -ddctm120 comparetotmag 8.0 7.0 -> 1 -ddctm121 comparetotmag 8.0 7 -> 1 -ddctm122 comparetotmag 8 7.0 -> 1 -ddctm123 comparetotmag 8E+0 7.0 -> 1 -ddctm124 comparetotmag 80E-1 7.0 -> 1 -ddctm125 comparetotmag 0.8E+1 7 -> 1 -ddctm126 comparetotmag 80E-1 7 -> 1 -ddctm127 comparetotmag 8.0 7E+0 -> 1 -ddctm128 comparetotmag 8.0 70E-1 -> 1 -ddctm129 comparetotmag 8 0.7E+1 -> 1 -ddctm130 comparetotmag 8 70E-1 -> 1 - -ddctm140 comparetotmag 8.0 9.0 -> -1 -ddctm141 comparetotmag 8.0 9 -> -1 -ddctm142 comparetotmag 8 9.0 -> -1 -ddctm143 comparetotmag 8E+0 9.0 -> -1 -ddctm144 comparetotmag 80E-1 9.0 -> -1 -ddctm145 comparetotmag 0.8E+1 9 -> -1 -ddctm146 comparetotmag 80E-1 9 -> -1 -ddctm147 comparetotmag 8.0 9E+0 -> -1 -ddctm148 comparetotmag 8.0 90E-1 -> -1 -ddctm149 comparetotmag 8 0.9E+1 -> -1 -ddctm150 comparetotmag 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -ddctm200 comparetotmag -7.0 7.0 -> 0 -ddctm201 comparetotmag -7.0 7 -> -1 -ddctm202 comparetotmag -7 7.0 -> 1 -ddctm203 comparetotmag -7E+0 7.0 -> 1 -ddctm204 comparetotmag -70E-1 7.0 -> 0 -ddctm205 comparetotmag -0.7E+1 7 -> 0 -ddctm206 comparetotmag -70E-1 7 -> -1 -ddctm207 comparetotmag -7.0 7E+0 -> -1 -ddctm208 comparetotmag -7.0 70E-1 -> 0 -ddctm209 comparetotmag -7 0.7E+1 -> 0 -ddctm210 comparetotmag -7 70E-1 -> 1 - -ddctm220 comparetotmag -8.0 7.0 -> 1 -ddctm221 comparetotmag -8.0 7 -> 1 -ddctm222 comparetotmag -8 7.0 -> 1 -ddctm223 comparetotmag -8E+0 7.0 -> 1 -ddctm224 comparetotmag -80E-1 7.0 -> 1 -ddctm225 comparetotmag -0.8E+1 7 -> 1 -ddctm226 comparetotmag -80E-1 7 -> 1 -ddctm227 comparetotmag -8.0 7E+0 -> 1 -ddctm228 comparetotmag -8.0 70E-1 -> 1 -ddctm229 comparetotmag -8 0.7E+1 -> 1 -ddctm230 comparetotmag -8 70E-1 -> 1 - -ddctm240 comparetotmag -8.0 9.0 -> -1 -ddctm241 comparetotmag -8.0 9 -> -1 -ddctm242 comparetotmag -8 9.0 -> -1 -ddctm243 comparetotmag -8E+0 9.0 -> -1 -ddctm244 comparetotmag -80E-1 9.0 -> -1 -ddctm245 comparetotmag -0.8E+1 9 -> -1 -ddctm246 comparetotmag -80E-1 9 -> -1 -ddctm247 comparetotmag -8.0 9E+0 -> -1 -ddctm248 comparetotmag -8.0 90E-1 -> -1 -ddctm249 comparetotmag -8 0.9E+1 -> -1 -ddctm250 comparetotmag -8 90E-1 -> -1 - --- and again, with sign changes +- .. -ddctm300 comparetotmag 7.0 -7.0 -> 0 -ddctm301 comparetotmag 7.0 -7 -> -1 -ddctm302 comparetotmag 7 -7.0 -> 1 -ddctm303 comparetotmag 7E+0 -7.0 -> 1 -ddctm304 comparetotmag 70E-1 -7.0 -> 0 -ddctm305 comparetotmag .7E+1 -7 -> 0 -ddctm306 comparetotmag 70E-1 -7 -> -1 -ddctm307 comparetotmag 7.0 -7E+0 -> -1 -ddctm308 comparetotmag 7.0 -70E-1 -> 0 -ddctm309 comparetotmag 7 -.7E+1 -> 0 -ddctm310 comparetotmag 7 -70E-1 -> 1 - -ddctm320 comparetotmag 8.0 -7.0 -> 1 -ddctm321 comparetotmag 8.0 -7 -> 1 -ddctm322 comparetotmag 8 -7.0 -> 1 -ddctm323 comparetotmag 8E+0 -7.0 -> 1 -ddctm324 comparetotmag 80E-1 -7.0 -> 1 -ddctm325 comparetotmag .8E+1 -7 -> 1 -ddctm326 comparetotmag 80E-1 -7 -> 1 -ddctm327 comparetotmag 8.0 -7E+0 -> 1 -ddctm328 comparetotmag 8.0 -70E-1 -> 1 -ddctm329 comparetotmag 8 -.7E+1 -> 1 -ddctm330 comparetotmag 8 -70E-1 -> 1 - -ddctm340 comparetotmag 8.0 -9.0 -> -1 -ddctm341 comparetotmag 8.0 -9 -> -1 -ddctm342 comparetotmag 8 -9.0 -> -1 -ddctm343 comparetotmag 8E+0 -9.0 -> -1 -ddctm344 comparetotmag 80E-1 -9.0 -> -1 -ddctm345 comparetotmag .8E+1 -9 -> -1 -ddctm346 comparetotmag 80E-1 -9 -> -1 -ddctm347 comparetotmag 8.0 -9E+0 -> -1 -ddctm348 comparetotmag 8.0 -90E-1 -> -1 -ddctm349 comparetotmag 8 -.9E+1 -> -1 -ddctm350 comparetotmag 8 -90E-1 -> -1 - --- and again, with sign changes -- .. -ddctm400 comparetotmag -7.0 -7.0 -> 0 -ddctm401 comparetotmag -7.0 -7 -> -1 -ddctm402 comparetotmag -7 -7.0 -> 1 -ddctm403 comparetotmag -7E+0 -7.0 -> 1 -ddctm404 comparetotmag -70E-1 -7.0 -> 0 -ddctm405 comparetotmag -.7E+1 -7 -> 0 -ddctm406 comparetotmag -70E-1 -7 -> -1 -ddctm407 comparetotmag -7.0 -7E+0 -> -1 -ddctm408 comparetotmag -7.0 -70E-1 -> 0 -ddctm409 comparetotmag -7 -.7E+1 -> 0 -ddctm410 comparetotmag -7 -70E-1 -> 1 - -ddctm420 comparetotmag -8.0 -7.0 -> 1 -ddctm421 comparetotmag -8.0 -7 -> 1 -ddctm422 comparetotmag -8 -7.0 -> 1 -ddctm423 comparetotmag -8E+0 -7.0 -> 1 -ddctm424 comparetotmag -80E-1 -7.0 -> 1 -ddctm425 comparetotmag -.8E+1 -7 -> 1 -ddctm426 comparetotmag -80E-1 -7 -> 1 -ddctm427 comparetotmag -8.0 -7E+0 -> 1 -ddctm428 comparetotmag -8.0 -70E-1 -> 1 -ddctm429 comparetotmag -8 -.7E+1 -> 1 -ddctm430 comparetotmag -8 -70E-1 -> 1 - -ddctm440 comparetotmag -8.0 -9.0 -> -1 -ddctm441 comparetotmag -8.0 -9 -> -1 -ddctm442 comparetotmag -8 -9.0 -> -1 -ddctm443 comparetotmag -8E+0 -9.0 -> -1 -ddctm444 comparetotmag -80E-1 -9.0 -> -1 -ddctm445 comparetotmag -.8E+1 -9 -> -1 -ddctm446 comparetotmag -80E-1 -9 -> -1 -ddctm447 comparetotmag -8.0 -9E+0 -> -1 -ddctm448 comparetotmag -8.0 -90E-1 -> -1 -ddctm449 comparetotmag -8 -.9E+1 -> -1 -ddctm450 comparetotmag -8 -90E-1 -> -1 - - --- testcases that subtract to lots of zeros at boundaries [pgr] -ddctm473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1 -ddctm474 comparetotmag 123.456000000000E+89 123.456E+89 -> -1 -ddctm475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1 -ddctm476 comparetotmag 123.4560000000E+89 123.456E+89 -> -1 -ddctm477 comparetotmag 123.456000000E-89 123.456E-89 -> -1 -ddctm478 comparetotmag 123.45600000E+89 123.456E+89 -> -1 -ddctm479 comparetotmag 123.4560000E-89 123.456E-89 -> -1 -ddctm480 comparetotmag 123.456000E+89 123.456E+89 -> -1 -ddctm481 comparetotmag 123.45600E-89 123.456E-89 -> -1 -ddctm482 comparetotmag 123.4560E+89 123.456E+89 -> -1 -ddctm483 comparetotmag 123.456E-89 123.456E-89 -> 0 -ddctm487 comparetotmag 123.456E+89 123.4560000000000E+89 -> 1 -ddctm488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1 -ddctm489 comparetotmag 123.456E+89 123.45600000000E+89 -> 1 -ddctm490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1 -ddctm491 comparetotmag 123.456E+89 123.456000000E+89 -> 1 -ddctm492 comparetotmag 123.456E-89 123.45600000E-89 -> 1 -ddctm493 comparetotmag 123.456E+89 123.4560000E+89 -> 1 -ddctm494 comparetotmag 123.456E-89 123.456000E-89 -> 1 -ddctm495 comparetotmag 123.456E+89 123.45600E+89 -> 1 -ddctm496 comparetotmag 123.456E-89 123.4560E-89 -> 1 -ddctm497 comparetotmag 123.456E+89 123.456E+89 -> 0 - --- wide-ranging, around precision; signs equal -ddctm498 comparetotmag 1 1E-17 -> 1 -ddctm499 comparetotmag 1 1E-16 -> 1 -ddctm500 comparetotmag 1 1E-15 -> 1 -ddctm501 comparetotmag 1 1E-14 -> 1 -ddctm502 comparetotmag 1 1E-13 -> 1 -ddctm503 comparetotmag 1 1E-12 -> 1 -ddctm504 comparetotmag 1 1E-11 -> 1 -ddctm505 comparetotmag 1 1E-10 -> 1 -ddctm506 comparetotmag 1 1E-9 -> 1 -ddctm507 comparetotmag 1 1E-8 -> 1 -ddctm508 comparetotmag 1 1E-7 -> 1 -ddctm509 comparetotmag 1 1E-6 -> 1 -ddctm510 comparetotmag 1 1E-5 -> 1 -ddctm511 comparetotmag 1 1E-4 -> 1 -ddctm512 comparetotmag 1 1E-3 -> 1 -ddctm513 comparetotmag 1 1E-2 -> 1 -ddctm514 comparetotmag 1 1E-1 -> 1 -ddctm515 comparetotmag 1 1E-0 -> 0 -ddctm516 comparetotmag 1 1E+1 -> -1 -ddctm517 comparetotmag 1 1E+2 -> -1 -ddctm518 comparetotmag 1 1E+3 -> -1 -ddctm519 comparetotmag 1 1E+4 -> -1 -ddctm521 comparetotmag 1 1E+5 -> -1 -ddctm522 comparetotmag 1 1E+6 -> -1 -ddctm523 comparetotmag 1 1E+7 -> -1 -ddctm524 comparetotmag 1 1E+8 -> -1 -ddctm525 comparetotmag 1 1E+9 -> -1 -ddctm526 comparetotmag 1 1E+10 -> -1 -ddctm527 comparetotmag 1 1E+11 -> -1 -ddctm528 comparetotmag 1 1E+12 -> -1 -ddctm529 comparetotmag 1 1E+13 -> -1 -ddctm530 comparetotmag 1 1E+14 -> -1 -ddctm531 comparetotmag 1 1E+15 -> -1 -ddctm532 comparetotmag 1 1E+16 -> -1 -ddctm533 comparetotmag 1 1E+17 -> -1 --- LR swap -ddctm538 comparetotmag 1E-17 1 -> -1 -ddctm539 comparetotmag 1E-16 1 -> -1 -ddctm540 comparetotmag 1E-15 1 -> -1 -ddctm541 comparetotmag 1E-14 1 -> -1 -ddctm542 comparetotmag 1E-13 1 -> -1 -ddctm543 comparetotmag 1E-12 1 -> -1 -ddctm544 comparetotmag 1E-11 1 -> -1 -ddctm545 comparetotmag 1E-10 1 -> -1 -ddctm546 comparetotmag 1E-9 1 -> -1 -ddctm547 comparetotmag 1E-8 1 -> -1 -ddctm548 comparetotmag 1E-7 1 -> -1 -ddctm549 comparetotmag 1E-6 1 -> -1 -ddctm550 comparetotmag 1E-5 1 -> -1 -ddctm551 comparetotmag 1E-4 1 -> -1 -ddctm552 comparetotmag 1E-3 1 -> -1 -ddctm553 comparetotmag 1E-2 1 -> -1 -ddctm554 comparetotmag 1E-1 1 -> -1 -ddctm555 comparetotmag 1E-0 1 -> 0 -ddctm556 comparetotmag 1E+1 1 -> 1 -ddctm557 comparetotmag 1E+2 1 -> 1 -ddctm558 comparetotmag 1E+3 1 -> 1 -ddctm559 comparetotmag 1E+4 1 -> 1 -ddctm561 comparetotmag 1E+5 1 -> 1 -ddctm562 comparetotmag 1E+6 1 -> 1 -ddctm563 comparetotmag 1E+7 1 -> 1 -ddctm564 comparetotmag 1E+8 1 -> 1 -ddctm565 comparetotmag 1E+9 1 -> 1 -ddctm566 comparetotmag 1E+10 1 -> 1 -ddctm567 comparetotmag 1E+11 1 -> 1 -ddctm568 comparetotmag 1E+12 1 -> 1 -ddctm569 comparetotmag 1E+13 1 -> 1 -ddctm570 comparetotmag 1E+14 1 -> 1 -ddctm571 comparetotmag 1E+15 1 -> 1 -ddctm572 comparetotmag 1E+16 1 -> 1 -ddctm573 comparetotmag 1E+17 1 -> 1 --- similar with a useful coefficient, one side only -ddctm578 comparetotmag 0.000000987654321 1E-17 -> 1 -ddctm579 comparetotmag 0.000000987654321 1E-16 -> 1 -ddctm580 comparetotmag 0.000000987654321 1E-15 -> 1 -ddctm581 comparetotmag 0.000000987654321 1E-14 -> 1 -ddctm582 comparetotmag 0.000000987654321 1E-13 -> 1 -ddctm583 comparetotmag 0.000000987654321 1E-12 -> 1 -ddctm584 comparetotmag 0.000000987654321 1E-11 -> 1 -ddctm585 comparetotmag 0.000000987654321 1E-10 -> 1 -ddctm586 comparetotmag 0.000000987654321 1E-9 -> 1 -ddctm587 comparetotmag 0.000000987654321 1E-8 -> 1 -ddctm588 comparetotmag 0.000000987654321 1E-7 -> 1 -ddctm589 comparetotmag 0.000000987654321 1E-6 -> -1 -ddctm590 comparetotmag 0.000000987654321 1E-5 -> -1 -ddctm591 comparetotmag 0.000000987654321 1E-4 -> -1 -ddctm592 comparetotmag 0.000000987654321 1E-3 -> -1 -ddctm593 comparetotmag 0.000000987654321 1E-2 -> -1 -ddctm594 comparetotmag 0.000000987654321 1E-1 -> -1 -ddctm595 comparetotmag 0.000000987654321 1E-0 -> -1 -ddctm596 comparetotmag 0.000000987654321 1E+1 -> -1 -ddctm597 comparetotmag 0.000000987654321 1E+2 -> -1 -ddctm598 comparetotmag 0.000000987654321 1E+3 -> -1 -ddctm599 comparetotmag 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -ddctm600 comparetotmag 12 12.2345 -> -1 -ddctm601 comparetotmag 12.0 12.2345 -> -1 -ddctm602 comparetotmag 12.00 12.2345 -> -1 -ddctm603 comparetotmag 12.000 12.2345 -> -1 -ddctm604 comparetotmag 12.0000 12.2345 -> -1 -ddctm605 comparetotmag 12.00000 12.2345 -> -1 -ddctm606 comparetotmag 12.000000 12.2345 -> -1 -ddctm607 comparetotmag 12.0000000 12.2345 -> -1 -ddctm608 comparetotmag 12.00000000 12.2345 -> -1 -ddctm609 comparetotmag 12.000000000 12.2345 -> -1 -ddctm610 comparetotmag 12.1234 12 -> 1 -ddctm611 comparetotmag 12.1234 12.0 -> 1 -ddctm612 comparetotmag 12.1234 12.00 -> 1 -ddctm613 comparetotmag 12.1234 12.000 -> 1 -ddctm614 comparetotmag 12.1234 12.0000 -> 1 -ddctm615 comparetotmag 12.1234 12.00000 -> 1 -ddctm616 comparetotmag 12.1234 12.000000 -> 1 -ddctm617 comparetotmag 12.1234 12.0000000 -> 1 -ddctm618 comparetotmag 12.1234 12.00000000 -> 1 -ddctm619 comparetotmag 12.1234 12.000000000 -> 1 -ddctm620 comparetotmag -12 -12.2345 -> -1 -ddctm621 comparetotmag -12.0 -12.2345 -> -1 -ddctm622 comparetotmag -12.00 -12.2345 -> -1 -ddctm623 comparetotmag -12.000 -12.2345 -> -1 -ddctm624 comparetotmag -12.0000 -12.2345 -> -1 -ddctm625 comparetotmag -12.00000 -12.2345 -> -1 -ddctm626 comparetotmag -12.000000 -12.2345 -> -1 -ddctm627 comparetotmag -12.0000000 -12.2345 -> -1 -ddctm628 comparetotmag -12.00000000 -12.2345 -> -1 -ddctm629 comparetotmag -12.000000000 -12.2345 -> -1 -ddctm630 comparetotmag -12.1234 -12 -> 1 -ddctm631 comparetotmag -12.1234 -12.0 -> 1 -ddctm632 comparetotmag -12.1234 -12.00 -> 1 -ddctm633 comparetotmag -12.1234 -12.000 -> 1 -ddctm634 comparetotmag -12.1234 -12.0000 -> 1 -ddctm635 comparetotmag -12.1234 -12.00000 -> 1 -ddctm636 comparetotmag -12.1234 -12.000000 -> 1 -ddctm637 comparetotmag -12.1234 -12.0000000 -> 1 -ddctm638 comparetotmag -12.1234 -12.00000000 -> 1 -ddctm639 comparetotmag -12.1234 -12.000000000 -> 1 - --- extended zeros -ddctm640 comparetotmag 0 0 -> 0 -ddctm641 comparetotmag 0 -0 -> 0 -ddctm642 comparetotmag 0 -0.0 -> 1 -ddctm643 comparetotmag 0 0.0 -> 1 -ddctm644 comparetotmag -0 0 -> 0 -ddctm645 comparetotmag -0 -0 -> 0 -ddctm646 comparetotmag -0 -0.0 -> 1 -ddctm647 comparetotmag -0 0.0 -> 1 -ddctm648 comparetotmag 0.0 0 -> -1 -ddctm649 comparetotmag 0.0 -0 -> -1 -ddctm650 comparetotmag 0.0 -0.0 -> 0 -ddctm651 comparetotmag 0.0 0.0 -> 0 -ddctm652 comparetotmag -0.0 0 -> -1 -ddctm653 comparetotmag -0.0 -0 -> -1 -ddctm654 comparetotmag -0.0 -0.0 -> 0 -ddctm655 comparetotmag -0.0 0.0 -> 0 - -ddctm656 comparetotmag -0E1 0.0 -> 1 -ddctm657 comparetotmag -0E2 0.0 -> 1 -ddctm658 comparetotmag 0E1 0.0 -> 1 -ddctm659 comparetotmag 0E2 0.0 -> 1 -ddctm660 comparetotmag -0E1 0 -> 1 -ddctm661 comparetotmag -0E2 0 -> 1 -ddctm662 comparetotmag 0E1 0 -> 1 -ddctm663 comparetotmag 0E2 0 -> 1 -ddctm664 comparetotmag -0E1 -0E1 -> 0 -ddctm665 comparetotmag -0E2 -0E1 -> 1 -ddctm666 comparetotmag 0E1 -0E1 -> 0 -ddctm667 comparetotmag 0E2 -0E1 -> 1 -ddctm668 comparetotmag -0E1 -0E2 -> -1 -ddctm669 comparetotmag -0E2 -0E2 -> 0 -ddctm670 comparetotmag 0E1 -0E2 -> -1 -ddctm671 comparetotmag 0E2 -0E2 -> 0 -ddctm672 comparetotmag -0E1 0E1 -> 0 -ddctm673 comparetotmag -0E2 0E1 -> 1 -ddctm674 comparetotmag 0E1 0E1 -> 0 -ddctm675 comparetotmag 0E2 0E1 -> 1 -ddctm676 comparetotmag -0E1 0E2 -> -1 -ddctm677 comparetotmag -0E2 0E2 -> 0 -ddctm678 comparetotmag 0E1 0E2 -> -1 -ddctm679 comparetotmag 0E2 0E2 -> 0 - --- trailing zeros; unit-y -ddctm680 comparetotmag 12 12 -> 0 -ddctm681 comparetotmag 12 12.0 -> 1 -ddctm682 comparetotmag 12 12.00 -> 1 -ddctm683 comparetotmag 12 12.000 -> 1 -ddctm684 comparetotmag 12 12.0000 -> 1 -ddctm685 comparetotmag 12 12.00000 -> 1 -ddctm686 comparetotmag 12 12.000000 -> 1 -ddctm687 comparetotmag 12 12.0000000 -> 1 -ddctm688 comparetotmag 12 12.00000000 -> 1 -ddctm689 comparetotmag 12 12.000000000 -> 1 -ddctm690 comparetotmag 12 12 -> 0 -ddctm691 comparetotmag 12.0 12 -> -1 -ddctm692 comparetotmag 12.00 12 -> -1 -ddctm693 comparetotmag 12.000 12 -> -1 -ddctm694 comparetotmag 12.0000 12 -> -1 -ddctm695 comparetotmag 12.00000 12 -> -1 -ddctm696 comparetotmag 12.000000 12 -> -1 -ddctm697 comparetotmag 12.0000000 12 -> -1 -ddctm698 comparetotmag 12.00000000 12 -> -1 -ddctm699 comparetotmag 12.000000000 12 -> -1 - --- old long operand checks -ddctm701 comparetotmag 12345678000 1 -> 1 -ddctm702 comparetotmag 1 12345678000 -> -1 -ddctm703 comparetotmag 1234567800 1 -> 1 -ddctm704 comparetotmag 1 1234567800 -> -1 -ddctm705 comparetotmag 1234567890 1 -> 1 -ddctm706 comparetotmag 1 1234567890 -> -1 -ddctm707 comparetotmag 1234567891 1 -> 1 -ddctm708 comparetotmag 1 1234567891 -> -1 -ddctm709 comparetotmag 12345678901 1 -> 1 -ddctm710 comparetotmag 1 12345678901 -> -1 -ddctm711 comparetotmag 1234567896 1 -> 1 -ddctm712 comparetotmag 1 1234567896 -> -1 -ddctm713 comparetotmag -1234567891 1 -> 1 -ddctm714 comparetotmag 1 -1234567891 -> -1 -ddctm715 comparetotmag -12345678901 1 -> 1 -ddctm716 comparetotmag 1 -12345678901 -> -1 -ddctm717 comparetotmag -1234567896 1 -> 1 -ddctm718 comparetotmag 1 -1234567896 -> -1 - --- old residue cases -ddctm740 comparetotmag 1 0.9999999 -> 1 -ddctm741 comparetotmag 1 0.999999 -> 1 -ddctm742 comparetotmag 1 0.99999 -> 1 -ddctm743 comparetotmag 1 1.0000 -> 1 -ddctm744 comparetotmag 1 1.00001 -> -1 -ddctm745 comparetotmag 1 1.000001 -> -1 -ddctm746 comparetotmag 1 1.0000001 -> -1 -ddctm750 comparetotmag 0.9999999 1 -> -1 -ddctm751 comparetotmag 0.999999 1 -> -1 -ddctm752 comparetotmag 0.99999 1 -> -1 -ddctm753 comparetotmag 1.0000 1 -> -1 -ddctm754 comparetotmag 1.00001 1 -> 1 -ddctm755 comparetotmag 1.000001 1 -> 1 -ddctm756 comparetotmag 1.0000001 1 -> 1 - --- Specials -ddctm780 comparetotmag Inf -Inf -> 0 -ddctm781 comparetotmag Inf -1000 -> 1 -ddctm782 comparetotmag Inf -1 -> 1 -ddctm783 comparetotmag Inf -0 -> 1 -ddctm784 comparetotmag Inf 0 -> 1 -ddctm785 comparetotmag Inf 1 -> 1 -ddctm786 comparetotmag Inf 1000 -> 1 -ddctm787 comparetotmag Inf Inf -> 0 -ddctm788 comparetotmag -1000 Inf -> -1 -ddctm789 comparetotmag -Inf Inf -> 0 -ddctm790 comparetotmag -1 Inf -> -1 -ddctm791 comparetotmag -0 Inf -> -1 -ddctm792 comparetotmag 0 Inf -> -1 -ddctm793 comparetotmag 1 Inf -> -1 -ddctm794 comparetotmag 1000 Inf -> -1 -ddctm795 comparetotmag Inf Inf -> 0 - -ddctm800 comparetotmag -Inf -Inf -> 0 -ddctm801 comparetotmag -Inf -1000 -> 1 -ddctm802 comparetotmag -Inf -1 -> 1 -ddctm803 comparetotmag -Inf -0 -> 1 -ddctm804 comparetotmag -Inf 0 -> 1 -ddctm805 comparetotmag -Inf 1 -> 1 -ddctm806 comparetotmag -Inf 1000 -> 1 -ddctm807 comparetotmag -Inf Inf -> 0 -ddctm808 comparetotmag -Inf -Inf -> 0 -ddctm809 comparetotmag -1000 -Inf -> -1 -ddctm810 comparetotmag -1 -Inf -> -1 -ddctm811 comparetotmag -0 -Inf -> -1 -ddctm812 comparetotmag 0 -Inf -> -1 -ddctm813 comparetotmag 1 -Inf -> -1 -ddctm814 comparetotmag 1000 -Inf -> -1 -ddctm815 comparetotmag Inf -Inf -> 0 - -ddctm821 comparetotmag NaN -Inf -> 1 -ddctm822 comparetotmag NaN -1000 -> 1 -ddctm823 comparetotmag NaN -1 -> 1 -ddctm824 comparetotmag NaN -0 -> 1 -ddctm825 comparetotmag NaN 0 -> 1 -ddctm826 comparetotmag NaN 1 -> 1 -ddctm827 comparetotmag NaN 1000 -> 1 -ddctm828 comparetotmag NaN Inf -> 1 -ddctm829 comparetotmag NaN NaN -> 0 -ddctm830 comparetotmag -Inf NaN -> -1 -ddctm831 comparetotmag -1000 NaN -> -1 -ddctm832 comparetotmag -1 NaN -> -1 -ddctm833 comparetotmag -0 NaN -> -1 -ddctm834 comparetotmag 0 NaN -> -1 -ddctm835 comparetotmag 1 NaN -> -1 -ddctm836 comparetotmag 1000 NaN -> -1 -ddctm837 comparetotmag Inf NaN -> -1 -ddctm838 comparetotmag -NaN -NaN -> 0 -ddctm839 comparetotmag +NaN -NaN -> 0 -ddctm840 comparetotmag -NaN +NaN -> 0 - -ddctm841 comparetotmag sNaN -sNaN -> 0 -ddctm842 comparetotmag sNaN -NaN -> -1 -ddctm843 comparetotmag sNaN -Inf -> 1 -ddctm844 comparetotmag sNaN -1000 -> 1 -ddctm845 comparetotmag sNaN -1 -> 1 -ddctm846 comparetotmag sNaN -0 -> 1 -ddctm847 comparetotmag sNaN 0 -> 1 -ddctm848 comparetotmag sNaN 1 -> 1 -ddctm849 comparetotmag sNaN 1000 -> 1 -ddctm850 comparetotmag sNaN NaN -> -1 -ddctm851 comparetotmag sNaN sNaN -> 0 - -ddctm852 comparetotmag -sNaN sNaN -> 0 -ddctm853 comparetotmag -NaN sNaN -> 1 -ddctm854 comparetotmag -Inf sNaN -> -1 -ddctm855 comparetotmag -1000 sNaN -> -1 -ddctm856 comparetotmag -1 sNaN -> -1 -ddctm857 comparetotmag -0 sNaN -> -1 -ddctm858 comparetotmag 0 sNaN -> -1 -ddctm859 comparetotmag 1 sNaN -> -1 -ddctm860 comparetotmag 1000 sNaN -> -1 -ddctm861 comparetotmag Inf sNaN -> -1 -ddctm862 comparetotmag NaN sNaN -> 1 -ddctm863 comparetotmag sNaN sNaN -> 0 - -ddctm871 comparetotmag -sNaN -sNaN -> 0 -ddctm872 comparetotmag -sNaN -NaN -> -1 -ddctm873 comparetotmag -sNaN -Inf -> 1 -ddctm874 comparetotmag -sNaN -1000 -> 1 -ddctm875 comparetotmag -sNaN -1 -> 1 -ddctm876 comparetotmag -sNaN -0 -> 1 -ddctm877 comparetotmag -sNaN 0 -> 1 -ddctm878 comparetotmag -sNaN 1 -> 1 -ddctm879 comparetotmag -sNaN 1000 -> 1 -ddctm880 comparetotmag -sNaN NaN -> -1 -ddctm881 comparetotmag -sNaN sNaN -> 0 - -ddctm882 comparetotmag -sNaN -sNaN -> 0 -ddctm883 comparetotmag -NaN -sNaN -> 1 -ddctm884 comparetotmag -Inf -sNaN -> -1 -ddctm885 comparetotmag -1000 -sNaN -> -1 -ddctm886 comparetotmag -1 -sNaN -> -1 -ddctm887 comparetotmag -0 -sNaN -> -1 -ddctm888 comparetotmag 0 -sNaN -> -1 -ddctm889 comparetotmag 1 -sNaN -> -1 -ddctm890 comparetotmag 1000 -sNaN -> -1 -ddctm891 comparetotmag Inf -sNaN -> -1 -ddctm892 comparetotmag NaN -sNaN -> 1 -ddctm893 comparetotmag sNaN -sNaN -> 0 - --- NaNs with payload -ddctm960 comparetotmag NaN9 -Inf -> 1 -ddctm961 comparetotmag NaN8 999 -> 1 -ddctm962 comparetotmag NaN77 Inf -> 1 -ddctm963 comparetotmag -NaN67 NaN5 -> 1 -ddctm964 comparetotmag -Inf -NaN4 -> -1 -ddctm965 comparetotmag -999 -NaN33 -> -1 -ddctm966 comparetotmag Inf NaN2 -> -1 - -ddctm970 comparetotmag -NaN41 -NaN42 -> -1 -ddctm971 comparetotmag +NaN41 -NaN42 -> -1 -ddctm972 comparetotmag -NaN41 +NaN42 -> -1 -ddctm973 comparetotmag +NaN41 +NaN42 -> -1 -ddctm974 comparetotmag -NaN42 -NaN01 -> 1 -ddctm975 comparetotmag +NaN42 -NaN01 -> 1 -ddctm976 comparetotmag -NaN42 +NaN01 -> 1 -ddctm977 comparetotmag +NaN42 +NaN01 -> 1 - -ddctm980 comparetotmag -sNaN771 -sNaN772 -> -1 -ddctm981 comparetotmag +sNaN771 -sNaN772 -> -1 -ddctm982 comparetotmag -sNaN771 +sNaN772 -> -1 -ddctm983 comparetotmag +sNaN771 +sNaN772 -> -1 -ddctm984 comparetotmag -sNaN772 -sNaN771 -> 1 -ddctm985 comparetotmag +sNaN772 -sNaN771 -> 1 -ddctm986 comparetotmag -sNaN772 +sNaN771 -> 1 -ddctm987 comparetotmag +sNaN772 +sNaN771 -> 1 - -ddctm991 comparetotmag -sNaN99 -Inf -> 1 -ddctm992 comparetotmag sNaN98 -11 -> 1 -ddctm993 comparetotmag sNaN97 NaN -> -1 -ddctm994 comparetotmag sNaN16 sNaN94 -> -1 -ddctm995 comparetotmag NaN85 sNaN83 -> 1 -ddctm996 comparetotmag -Inf sNaN92 -> -1 -ddctm997 comparetotmag 088 sNaN81 -> -1 -ddctm998 comparetotmag Inf sNaN90 -> -1 -ddctm999 comparetotmag NaN -sNaN89 -> 1 - --- spread zeros -ddctm1110 comparetotmag 0E-383 0 -> -1 -ddctm1111 comparetotmag 0E-383 -0 -> -1 -ddctm1112 comparetotmag -0E-383 0 -> -1 -ddctm1113 comparetotmag -0E-383 -0 -> -1 -ddctm1114 comparetotmag 0E-383 0E+384 -> -1 -ddctm1115 comparetotmag 0E-383 -0E+384 -> -1 -ddctm1116 comparetotmag -0E-383 0E+384 -> -1 -ddctm1117 comparetotmag -0E-383 -0E+384 -> -1 -ddctm1118 comparetotmag 0 0E+384 -> -1 -ddctm1119 comparetotmag 0 -0E+384 -> -1 -ddctm1120 comparetotmag -0 0E+384 -> -1 -ddctm1121 comparetotmag -0 -0E+384 -> -1 - -ddctm1130 comparetotmag 0E+384 0 -> 1 -ddctm1131 comparetotmag 0E+384 -0 -> 1 -ddctm1132 comparetotmag -0E+384 0 -> 1 -ddctm1133 comparetotmag -0E+384 -0 -> 1 -ddctm1134 comparetotmag 0E+384 0E-383 -> 1 -ddctm1135 comparetotmag 0E+384 -0E-383 -> 1 -ddctm1136 comparetotmag -0E+384 0E-383 -> 1 -ddctm1137 comparetotmag -0E+384 -0E-383 -> 1 -ddctm1138 comparetotmag 0 0E-383 -> 1 -ddctm1139 comparetotmag 0 -0E-383 -> 1 -ddctm1140 comparetotmag -0 0E-383 -> 1 -ddctm1141 comparetotmag -0 -0E-383 -> 1 - --- Null tests -ddctm9990 comparetotmag 10 # -> NaN Invalid_operation -ddctm9991 comparetotmag # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddCompareTotalMag.decTest -- decDouble comparison; abs. total order-- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). +-- Similarly, comparetotal will have some radically different paths +-- than compare. + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddctm001 comparetotmag -2 -2 -> 0 +ddctm002 comparetotmag -2 -1 -> 1 +ddctm003 comparetotmag -2 0 -> 1 +ddctm004 comparetotmag -2 1 -> 1 +ddctm005 comparetotmag -2 2 -> 0 +ddctm006 comparetotmag -1 -2 -> -1 +ddctm007 comparetotmag -1 -1 -> 0 +ddctm008 comparetotmag -1 0 -> 1 +ddctm009 comparetotmag -1 1 -> 0 +ddctm010 comparetotmag -1 2 -> -1 +ddctm011 comparetotmag 0 -2 -> -1 +ddctm012 comparetotmag 0 -1 -> -1 +ddctm013 comparetotmag 0 0 -> 0 +ddctm014 comparetotmag 0 1 -> -1 +ddctm015 comparetotmag 0 2 -> -1 +ddctm016 comparetotmag 1 -2 -> -1 +ddctm017 comparetotmag 1 -1 -> 0 +ddctm018 comparetotmag 1 0 -> 1 +ddctm019 comparetotmag 1 1 -> 0 +ddctm020 comparetotmag 1 2 -> -1 +ddctm021 comparetotmag 2 -2 -> 0 +ddctm022 comparetotmag 2 -1 -> 1 +ddctm023 comparetotmag 2 0 -> 1 +ddctm025 comparetotmag 2 1 -> 1 +ddctm026 comparetotmag 2 2 -> 0 + +ddctm031 comparetotmag -20 -20 -> 0 +ddctm032 comparetotmag -20 -10 -> 1 +ddctm033 comparetotmag -20 00 -> 1 +ddctm034 comparetotmag -20 10 -> 1 +ddctm035 comparetotmag -20 20 -> 0 +ddctm036 comparetotmag -10 -20 -> -1 +ddctm037 comparetotmag -10 -10 -> 0 +ddctm038 comparetotmag -10 00 -> 1 +ddctm039 comparetotmag -10 10 -> 0 +ddctm040 comparetotmag -10 20 -> -1 +ddctm041 comparetotmag 00 -20 -> -1 +ddctm042 comparetotmag 00 -10 -> -1 +ddctm043 comparetotmag 00 00 -> 0 +ddctm044 comparetotmag 00 10 -> -1 +ddctm045 comparetotmag 00 20 -> -1 +ddctm046 comparetotmag 10 -20 -> -1 +ddctm047 comparetotmag 10 -10 -> 0 +ddctm048 comparetotmag 10 00 -> 1 +ddctm049 comparetotmag 10 10 -> 0 +ddctm050 comparetotmag 10 20 -> -1 +ddctm051 comparetotmag 20 -20 -> 0 +ddctm052 comparetotmag 20 -10 -> 1 +ddctm053 comparetotmag 20 00 -> 1 +ddctm055 comparetotmag 20 10 -> 1 +ddctm056 comparetotmag 20 20 -> 0 + +ddctm061 comparetotmag -2.0 -2.0 -> 0 +ddctm062 comparetotmag -2.0 -1.0 -> 1 +ddctm063 comparetotmag -2.0 0.0 -> 1 +ddctm064 comparetotmag -2.0 1.0 -> 1 +ddctm065 comparetotmag -2.0 2.0 -> 0 +ddctm066 comparetotmag -1.0 -2.0 -> -1 +ddctm067 comparetotmag -1.0 -1.0 -> 0 +ddctm068 comparetotmag -1.0 0.0 -> 1 +ddctm069 comparetotmag -1.0 1.0 -> 0 +ddctm070 comparetotmag -1.0 2.0 -> -1 +ddctm071 comparetotmag 0.0 -2.0 -> -1 +ddctm072 comparetotmag 0.0 -1.0 -> -1 +ddctm073 comparetotmag 0.0 0.0 -> 0 +ddctm074 comparetotmag 0.0 1.0 -> -1 +ddctm075 comparetotmag 0.0 2.0 -> -1 +ddctm076 comparetotmag 1.0 -2.0 -> -1 +ddctm077 comparetotmag 1.0 -1.0 -> 0 +ddctm078 comparetotmag 1.0 0.0 -> 1 +ddctm079 comparetotmag 1.0 1.0 -> 0 +ddctm080 comparetotmag 1.0 2.0 -> -1 +ddctm081 comparetotmag 2.0 -2.0 -> 0 +ddctm082 comparetotmag 2.0 -1.0 -> 1 +ddctm083 comparetotmag 2.0 0.0 -> 1 +ddctm085 comparetotmag 2.0 1.0 -> 1 +ddctm086 comparetotmag 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +ddctm090 comparetotmag 9.99999999E+384 9.99999999E+384 -> 0 +ddctm091 comparetotmag -9.99999999E+384 9.99999999E+384 -> 0 +ddctm092 comparetotmag 9.99999999E+384 -9.99999999E+384 -> 0 +ddctm093 comparetotmag -9.99999999E+384 -9.99999999E+384 -> 0 + +-- some differing length/exponent cases +-- in this first group, compare would compare all equal +ddctm100 comparetotmag 7.0 7.0 -> 0 +ddctm101 comparetotmag 7.0 7 -> -1 +ddctm102 comparetotmag 7 7.0 -> 1 +ddctm103 comparetotmag 7E+0 7.0 -> 1 +ddctm104 comparetotmag 70E-1 7.0 -> 0 +ddctm105 comparetotmag 0.7E+1 7 -> 0 +ddctm106 comparetotmag 70E-1 7 -> -1 +ddctm107 comparetotmag 7.0 7E+0 -> -1 +ddctm108 comparetotmag 7.0 70E-1 -> 0 +ddctm109 comparetotmag 7 0.7E+1 -> 0 +ddctm110 comparetotmag 7 70E-1 -> 1 + +ddctm120 comparetotmag 8.0 7.0 -> 1 +ddctm121 comparetotmag 8.0 7 -> 1 +ddctm122 comparetotmag 8 7.0 -> 1 +ddctm123 comparetotmag 8E+0 7.0 -> 1 +ddctm124 comparetotmag 80E-1 7.0 -> 1 +ddctm125 comparetotmag 0.8E+1 7 -> 1 +ddctm126 comparetotmag 80E-1 7 -> 1 +ddctm127 comparetotmag 8.0 7E+0 -> 1 +ddctm128 comparetotmag 8.0 70E-1 -> 1 +ddctm129 comparetotmag 8 0.7E+1 -> 1 +ddctm130 comparetotmag 8 70E-1 -> 1 + +ddctm140 comparetotmag 8.0 9.0 -> -1 +ddctm141 comparetotmag 8.0 9 -> -1 +ddctm142 comparetotmag 8 9.0 -> -1 +ddctm143 comparetotmag 8E+0 9.0 -> -1 +ddctm144 comparetotmag 80E-1 9.0 -> -1 +ddctm145 comparetotmag 0.8E+1 9 -> -1 +ddctm146 comparetotmag 80E-1 9 -> -1 +ddctm147 comparetotmag 8.0 9E+0 -> -1 +ddctm148 comparetotmag 8.0 90E-1 -> -1 +ddctm149 comparetotmag 8 0.9E+1 -> -1 +ddctm150 comparetotmag 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +ddctm200 comparetotmag -7.0 7.0 -> 0 +ddctm201 comparetotmag -7.0 7 -> -1 +ddctm202 comparetotmag -7 7.0 -> 1 +ddctm203 comparetotmag -7E+0 7.0 -> 1 +ddctm204 comparetotmag -70E-1 7.0 -> 0 +ddctm205 comparetotmag -0.7E+1 7 -> 0 +ddctm206 comparetotmag -70E-1 7 -> -1 +ddctm207 comparetotmag -7.0 7E+0 -> -1 +ddctm208 comparetotmag -7.0 70E-1 -> 0 +ddctm209 comparetotmag -7 0.7E+1 -> 0 +ddctm210 comparetotmag -7 70E-1 -> 1 + +ddctm220 comparetotmag -8.0 7.0 -> 1 +ddctm221 comparetotmag -8.0 7 -> 1 +ddctm222 comparetotmag -8 7.0 -> 1 +ddctm223 comparetotmag -8E+0 7.0 -> 1 +ddctm224 comparetotmag -80E-1 7.0 -> 1 +ddctm225 comparetotmag -0.8E+1 7 -> 1 +ddctm226 comparetotmag -80E-1 7 -> 1 +ddctm227 comparetotmag -8.0 7E+0 -> 1 +ddctm228 comparetotmag -8.0 70E-1 -> 1 +ddctm229 comparetotmag -8 0.7E+1 -> 1 +ddctm230 comparetotmag -8 70E-1 -> 1 + +ddctm240 comparetotmag -8.0 9.0 -> -1 +ddctm241 comparetotmag -8.0 9 -> -1 +ddctm242 comparetotmag -8 9.0 -> -1 +ddctm243 comparetotmag -8E+0 9.0 -> -1 +ddctm244 comparetotmag -80E-1 9.0 -> -1 +ddctm245 comparetotmag -0.8E+1 9 -> -1 +ddctm246 comparetotmag -80E-1 9 -> -1 +ddctm247 comparetotmag -8.0 9E+0 -> -1 +ddctm248 comparetotmag -8.0 90E-1 -> -1 +ddctm249 comparetotmag -8 0.9E+1 -> -1 +ddctm250 comparetotmag -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +ddctm300 comparetotmag 7.0 -7.0 -> 0 +ddctm301 comparetotmag 7.0 -7 -> -1 +ddctm302 comparetotmag 7 -7.0 -> 1 +ddctm303 comparetotmag 7E+0 -7.0 -> 1 +ddctm304 comparetotmag 70E-1 -7.0 -> 0 +ddctm305 comparetotmag .7E+1 -7 -> 0 +ddctm306 comparetotmag 70E-1 -7 -> -1 +ddctm307 comparetotmag 7.0 -7E+0 -> -1 +ddctm308 comparetotmag 7.0 -70E-1 -> 0 +ddctm309 comparetotmag 7 -.7E+1 -> 0 +ddctm310 comparetotmag 7 -70E-1 -> 1 + +ddctm320 comparetotmag 8.0 -7.0 -> 1 +ddctm321 comparetotmag 8.0 -7 -> 1 +ddctm322 comparetotmag 8 -7.0 -> 1 +ddctm323 comparetotmag 8E+0 -7.0 -> 1 +ddctm324 comparetotmag 80E-1 -7.0 -> 1 +ddctm325 comparetotmag .8E+1 -7 -> 1 +ddctm326 comparetotmag 80E-1 -7 -> 1 +ddctm327 comparetotmag 8.0 -7E+0 -> 1 +ddctm328 comparetotmag 8.0 -70E-1 -> 1 +ddctm329 comparetotmag 8 -.7E+1 -> 1 +ddctm330 comparetotmag 8 -70E-1 -> 1 + +ddctm340 comparetotmag 8.0 -9.0 -> -1 +ddctm341 comparetotmag 8.0 -9 -> -1 +ddctm342 comparetotmag 8 -9.0 -> -1 +ddctm343 comparetotmag 8E+0 -9.0 -> -1 +ddctm344 comparetotmag 80E-1 -9.0 -> -1 +ddctm345 comparetotmag .8E+1 -9 -> -1 +ddctm346 comparetotmag 80E-1 -9 -> -1 +ddctm347 comparetotmag 8.0 -9E+0 -> -1 +ddctm348 comparetotmag 8.0 -90E-1 -> -1 +ddctm349 comparetotmag 8 -.9E+1 -> -1 +ddctm350 comparetotmag 8 -90E-1 -> -1 + +-- and again, with sign changes -- .. +ddctm400 comparetotmag -7.0 -7.0 -> 0 +ddctm401 comparetotmag -7.0 -7 -> -1 +ddctm402 comparetotmag -7 -7.0 -> 1 +ddctm403 comparetotmag -7E+0 -7.0 -> 1 +ddctm404 comparetotmag -70E-1 -7.0 -> 0 +ddctm405 comparetotmag -.7E+1 -7 -> 0 +ddctm406 comparetotmag -70E-1 -7 -> -1 +ddctm407 comparetotmag -7.0 -7E+0 -> -1 +ddctm408 comparetotmag -7.0 -70E-1 -> 0 +ddctm409 comparetotmag -7 -.7E+1 -> 0 +ddctm410 comparetotmag -7 -70E-1 -> 1 + +ddctm420 comparetotmag -8.0 -7.0 -> 1 +ddctm421 comparetotmag -8.0 -7 -> 1 +ddctm422 comparetotmag -8 -7.0 -> 1 +ddctm423 comparetotmag -8E+0 -7.0 -> 1 +ddctm424 comparetotmag -80E-1 -7.0 -> 1 +ddctm425 comparetotmag -.8E+1 -7 -> 1 +ddctm426 comparetotmag -80E-1 -7 -> 1 +ddctm427 comparetotmag -8.0 -7E+0 -> 1 +ddctm428 comparetotmag -8.0 -70E-1 -> 1 +ddctm429 comparetotmag -8 -.7E+1 -> 1 +ddctm430 comparetotmag -8 -70E-1 -> 1 + +ddctm440 comparetotmag -8.0 -9.0 -> -1 +ddctm441 comparetotmag -8.0 -9 -> -1 +ddctm442 comparetotmag -8 -9.0 -> -1 +ddctm443 comparetotmag -8E+0 -9.0 -> -1 +ddctm444 comparetotmag -80E-1 -9.0 -> -1 +ddctm445 comparetotmag -.8E+1 -9 -> -1 +ddctm446 comparetotmag -80E-1 -9 -> -1 +ddctm447 comparetotmag -8.0 -9E+0 -> -1 +ddctm448 comparetotmag -8.0 -90E-1 -> -1 +ddctm449 comparetotmag -8 -.9E+1 -> -1 +ddctm450 comparetotmag -8 -90E-1 -> -1 + + +-- testcases that subtract to lots of zeros at boundaries [pgr] +ddctm473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1 +ddctm474 comparetotmag 123.456000000000E+89 123.456E+89 -> -1 +ddctm475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1 +ddctm476 comparetotmag 123.4560000000E+89 123.456E+89 -> -1 +ddctm477 comparetotmag 123.456000000E-89 123.456E-89 -> -1 +ddctm478 comparetotmag 123.45600000E+89 123.456E+89 -> -1 +ddctm479 comparetotmag 123.4560000E-89 123.456E-89 -> -1 +ddctm480 comparetotmag 123.456000E+89 123.456E+89 -> -1 +ddctm481 comparetotmag 123.45600E-89 123.456E-89 -> -1 +ddctm482 comparetotmag 123.4560E+89 123.456E+89 -> -1 +ddctm483 comparetotmag 123.456E-89 123.456E-89 -> 0 +ddctm487 comparetotmag 123.456E+89 123.4560000000000E+89 -> 1 +ddctm488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1 +ddctm489 comparetotmag 123.456E+89 123.45600000000E+89 -> 1 +ddctm490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1 +ddctm491 comparetotmag 123.456E+89 123.456000000E+89 -> 1 +ddctm492 comparetotmag 123.456E-89 123.45600000E-89 -> 1 +ddctm493 comparetotmag 123.456E+89 123.4560000E+89 -> 1 +ddctm494 comparetotmag 123.456E-89 123.456000E-89 -> 1 +ddctm495 comparetotmag 123.456E+89 123.45600E+89 -> 1 +ddctm496 comparetotmag 123.456E-89 123.4560E-89 -> 1 +ddctm497 comparetotmag 123.456E+89 123.456E+89 -> 0 + +-- wide-ranging, around precision; signs equal +ddctm498 comparetotmag 1 1E-17 -> 1 +ddctm499 comparetotmag 1 1E-16 -> 1 +ddctm500 comparetotmag 1 1E-15 -> 1 +ddctm501 comparetotmag 1 1E-14 -> 1 +ddctm502 comparetotmag 1 1E-13 -> 1 +ddctm503 comparetotmag 1 1E-12 -> 1 +ddctm504 comparetotmag 1 1E-11 -> 1 +ddctm505 comparetotmag 1 1E-10 -> 1 +ddctm506 comparetotmag 1 1E-9 -> 1 +ddctm507 comparetotmag 1 1E-8 -> 1 +ddctm508 comparetotmag 1 1E-7 -> 1 +ddctm509 comparetotmag 1 1E-6 -> 1 +ddctm510 comparetotmag 1 1E-5 -> 1 +ddctm511 comparetotmag 1 1E-4 -> 1 +ddctm512 comparetotmag 1 1E-3 -> 1 +ddctm513 comparetotmag 1 1E-2 -> 1 +ddctm514 comparetotmag 1 1E-1 -> 1 +ddctm515 comparetotmag 1 1E-0 -> 0 +ddctm516 comparetotmag 1 1E+1 -> -1 +ddctm517 comparetotmag 1 1E+2 -> -1 +ddctm518 comparetotmag 1 1E+3 -> -1 +ddctm519 comparetotmag 1 1E+4 -> -1 +ddctm521 comparetotmag 1 1E+5 -> -1 +ddctm522 comparetotmag 1 1E+6 -> -1 +ddctm523 comparetotmag 1 1E+7 -> -1 +ddctm524 comparetotmag 1 1E+8 -> -1 +ddctm525 comparetotmag 1 1E+9 -> -1 +ddctm526 comparetotmag 1 1E+10 -> -1 +ddctm527 comparetotmag 1 1E+11 -> -1 +ddctm528 comparetotmag 1 1E+12 -> -1 +ddctm529 comparetotmag 1 1E+13 -> -1 +ddctm530 comparetotmag 1 1E+14 -> -1 +ddctm531 comparetotmag 1 1E+15 -> -1 +ddctm532 comparetotmag 1 1E+16 -> -1 +ddctm533 comparetotmag 1 1E+17 -> -1 +-- LR swap +ddctm538 comparetotmag 1E-17 1 -> -1 +ddctm539 comparetotmag 1E-16 1 -> -1 +ddctm540 comparetotmag 1E-15 1 -> -1 +ddctm541 comparetotmag 1E-14 1 -> -1 +ddctm542 comparetotmag 1E-13 1 -> -1 +ddctm543 comparetotmag 1E-12 1 -> -1 +ddctm544 comparetotmag 1E-11 1 -> -1 +ddctm545 comparetotmag 1E-10 1 -> -1 +ddctm546 comparetotmag 1E-9 1 -> -1 +ddctm547 comparetotmag 1E-8 1 -> -1 +ddctm548 comparetotmag 1E-7 1 -> -1 +ddctm549 comparetotmag 1E-6 1 -> -1 +ddctm550 comparetotmag 1E-5 1 -> -1 +ddctm551 comparetotmag 1E-4 1 -> -1 +ddctm552 comparetotmag 1E-3 1 -> -1 +ddctm553 comparetotmag 1E-2 1 -> -1 +ddctm554 comparetotmag 1E-1 1 -> -1 +ddctm555 comparetotmag 1E-0 1 -> 0 +ddctm556 comparetotmag 1E+1 1 -> 1 +ddctm557 comparetotmag 1E+2 1 -> 1 +ddctm558 comparetotmag 1E+3 1 -> 1 +ddctm559 comparetotmag 1E+4 1 -> 1 +ddctm561 comparetotmag 1E+5 1 -> 1 +ddctm562 comparetotmag 1E+6 1 -> 1 +ddctm563 comparetotmag 1E+7 1 -> 1 +ddctm564 comparetotmag 1E+8 1 -> 1 +ddctm565 comparetotmag 1E+9 1 -> 1 +ddctm566 comparetotmag 1E+10 1 -> 1 +ddctm567 comparetotmag 1E+11 1 -> 1 +ddctm568 comparetotmag 1E+12 1 -> 1 +ddctm569 comparetotmag 1E+13 1 -> 1 +ddctm570 comparetotmag 1E+14 1 -> 1 +ddctm571 comparetotmag 1E+15 1 -> 1 +ddctm572 comparetotmag 1E+16 1 -> 1 +ddctm573 comparetotmag 1E+17 1 -> 1 +-- similar with a useful coefficient, one side only +ddctm578 comparetotmag 0.000000987654321 1E-17 -> 1 +ddctm579 comparetotmag 0.000000987654321 1E-16 -> 1 +ddctm580 comparetotmag 0.000000987654321 1E-15 -> 1 +ddctm581 comparetotmag 0.000000987654321 1E-14 -> 1 +ddctm582 comparetotmag 0.000000987654321 1E-13 -> 1 +ddctm583 comparetotmag 0.000000987654321 1E-12 -> 1 +ddctm584 comparetotmag 0.000000987654321 1E-11 -> 1 +ddctm585 comparetotmag 0.000000987654321 1E-10 -> 1 +ddctm586 comparetotmag 0.000000987654321 1E-9 -> 1 +ddctm587 comparetotmag 0.000000987654321 1E-8 -> 1 +ddctm588 comparetotmag 0.000000987654321 1E-7 -> 1 +ddctm589 comparetotmag 0.000000987654321 1E-6 -> -1 +ddctm590 comparetotmag 0.000000987654321 1E-5 -> -1 +ddctm591 comparetotmag 0.000000987654321 1E-4 -> -1 +ddctm592 comparetotmag 0.000000987654321 1E-3 -> -1 +ddctm593 comparetotmag 0.000000987654321 1E-2 -> -1 +ddctm594 comparetotmag 0.000000987654321 1E-1 -> -1 +ddctm595 comparetotmag 0.000000987654321 1E-0 -> -1 +ddctm596 comparetotmag 0.000000987654321 1E+1 -> -1 +ddctm597 comparetotmag 0.000000987654321 1E+2 -> -1 +ddctm598 comparetotmag 0.000000987654321 1E+3 -> -1 +ddctm599 comparetotmag 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +ddctm600 comparetotmag 12 12.2345 -> -1 +ddctm601 comparetotmag 12.0 12.2345 -> -1 +ddctm602 comparetotmag 12.00 12.2345 -> -1 +ddctm603 comparetotmag 12.000 12.2345 -> -1 +ddctm604 comparetotmag 12.0000 12.2345 -> -1 +ddctm605 comparetotmag 12.00000 12.2345 -> -1 +ddctm606 comparetotmag 12.000000 12.2345 -> -1 +ddctm607 comparetotmag 12.0000000 12.2345 -> -1 +ddctm608 comparetotmag 12.00000000 12.2345 -> -1 +ddctm609 comparetotmag 12.000000000 12.2345 -> -1 +ddctm610 comparetotmag 12.1234 12 -> 1 +ddctm611 comparetotmag 12.1234 12.0 -> 1 +ddctm612 comparetotmag 12.1234 12.00 -> 1 +ddctm613 comparetotmag 12.1234 12.000 -> 1 +ddctm614 comparetotmag 12.1234 12.0000 -> 1 +ddctm615 comparetotmag 12.1234 12.00000 -> 1 +ddctm616 comparetotmag 12.1234 12.000000 -> 1 +ddctm617 comparetotmag 12.1234 12.0000000 -> 1 +ddctm618 comparetotmag 12.1234 12.00000000 -> 1 +ddctm619 comparetotmag 12.1234 12.000000000 -> 1 +ddctm620 comparetotmag -12 -12.2345 -> -1 +ddctm621 comparetotmag -12.0 -12.2345 -> -1 +ddctm622 comparetotmag -12.00 -12.2345 -> -1 +ddctm623 comparetotmag -12.000 -12.2345 -> -1 +ddctm624 comparetotmag -12.0000 -12.2345 -> -1 +ddctm625 comparetotmag -12.00000 -12.2345 -> -1 +ddctm626 comparetotmag -12.000000 -12.2345 -> -1 +ddctm627 comparetotmag -12.0000000 -12.2345 -> -1 +ddctm628 comparetotmag -12.00000000 -12.2345 -> -1 +ddctm629 comparetotmag -12.000000000 -12.2345 -> -1 +ddctm630 comparetotmag -12.1234 -12 -> 1 +ddctm631 comparetotmag -12.1234 -12.0 -> 1 +ddctm632 comparetotmag -12.1234 -12.00 -> 1 +ddctm633 comparetotmag -12.1234 -12.000 -> 1 +ddctm634 comparetotmag -12.1234 -12.0000 -> 1 +ddctm635 comparetotmag -12.1234 -12.00000 -> 1 +ddctm636 comparetotmag -12.1234 -12.000000 -> 1 +ddctm637 comparetotmag -12.1234 -12.0000000 -> 1 +ddctm638 comparetotmag -12.1234 -12.00000000 -> 1 +ddctm639 comparetotmag -12.1234 -12.000000000 -> 1 + +-- extended zeros +ddctm640 comparetotmag 0 0 -> 0 +ddctm641 comparetotmag 0 -0 -> 0 +ddctm642 comparetotmag 0 -0.0 -> 1 +ddctm643 comparetotmag 0 0.0 -> 1 +ddctm644 comparetotmag -0 0 -> 0 +ddctm645 comparetotmag -0 -0 -> 0 +ddctm646 comparetotmag -0 -0.0 -> 1 +ddctm647 comparetotmag -0 0.0 -> 1 +ddctm648 comparetotmag 0.0 0 -> -1 +ddctm649 comparetotmag 0.0 -0 -> -1 +ddctm650 comparetotmag 0.0 -0.0 -> 0 +ddctm651 comparetotmag 0.0 0.0 -> 0 +ddctm652 comparetotmag -0.0 0 -> -1 +ddctm653 comparetotmag -0.0 -0 -> -1 +ddctm654 comparetotmag -0.0 -0.0 -> 0 +ddctm655 comparetotmag -0.0 0.0 -> 0 + +ddctm656 comparetotmag -0E1 0.0 -> 1 +ddctm657 comparetotmag -0E2 0.0 -> 1 +ddctm658 comparetotmag 0E1 0.0 -> 1 +ddctm659 comparetotmag 0E2 0.0 -> 1 +ddctm660 comparetotmag -0E1 0 -> 1 +ddctm661 comparetotmag -0E2 0 -> 1 +ddctm662 comparetotmag 0E1 0 -> 1 +ddctm663 comparetotmag 0E2 0 -> 1 +ddctm664 comparetotmag -0E1 -0E1 -> 0 +ddctm665 comparetotmag -0E2 -0E1 -> 1 +ddctm666 comparetotmag 0E1 -0E1 -> 0 +ddctm667 comparetotmag 0E2 -0E1 -> 1 +ddctm668 comparetotmag -0E1 -0E2 -> -1 +ddctm669 comparetotmag -0E2 -0E2 -> 0 +ddctm670 comparetotmag 0E1 -0E2 -> -1 +ddctm671 comparetotmag 0E2 -0E2 -> 0 +ddctm672 comparetotmag -0E1 0E1 -> 0 +ddctm673 comparetotmag -0E2 0E1 -> 1 +ddctm674 comparetotmag 0E1 0E1 -> 0 +ddctm675 comparetotmag 0E2 0E1 -> 1 +ddctm676 comparetotmag -0E1 0E2 -> -1 +ddctm677 comparetotmag -0E2 0E2 -> 0 +ddctm678 comparetotmag 0E1 0E2 -> -1 +ddctm679 comparetotmag 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +ddctm680 comparetotmag 12 12 -> 0 +ddctm681 comparetotmag 12 12.0 -> 1 +ddctm682 comparetotmag 12 12.00 -> 1 +ddctm683 comparetotmag 12 12.000 -> 1 +ddctm684 comparetotmag 12 12.0000 -> 1 +ddctm685 comparetotmag 12 12.00000 -> 1 +ddctm686 comparetotmag 12 12.000000 -> 1 +ddctm687 comparetotmag 12 12.0000000 -> 1 +ddctm688 comparetotmag 12 12.00000000 -> 1 +ddctm689 comparetotmag 12 12.000000000 -> 1 +ddctm690 comparetotmag 12 12 -> 0 +ddctm691 comparetotmag 12.0 12 -> -1 +ddctm692 comparetotmag 12.00 12 -> -1 +ddctm693 comparetotmag 12.000 12 -> -1 +ddctm694 comparetotmag 12.0000 12 -> -1 +ddctm695 comparetotmag 12.00000 12 -> -1 +ddctm696 comparetotmag 12.000000 12 -> -1 +ddctm697 comparetotmag 12.0000000 12 -> -1 +ddctm698 comparetotmag 12.00000000 12 -> -1 +ddctm699 comparetotmag 12.000000000 12 -> -1 + +-- old long operand checks +ddctm701 comparetotmag 12345678000 1 -> 1 +ddctm702 comparetotmag 1 12345678000 -> -1 +ddctm703 comparetotmag 1234567800 1 -> 1 +ddctm704 comparetotmag 1 1234567800 -> -1 +ddctm705 comparetotmag 1234567890 1 -> 1 +ddctm706 comparetotmag 1 1234567890 -> -1 +ddctm707 comparetotmag 1234567891 1 -> 1 +ddctm708 comparetotmag 1 1234567891 -> -1 +ddctm709 comparetotmag 12345678901 1 -> 1 +ddctm710 comparetotmag 1 12345678901 -> -1 +ddctm711 comparetotmag 1234567896 1 -> 1 +ddctm712 comparetotmag 1 1234567896 -> -1 +ddctm713 comparetotmag -1234567891 1 -> 1 +ddctm714 comparetotmag 1 -1234567891 -> -1 +ddctm715 comparetotmag -12345678901 1 -> 1 +ddctm716 comparetotmag 1 -12345678901 -> -1 +ddctm717 comparetotmag -1234567896 1 -> 1 +ddctm718 comparetotmag 1 -1234567896 -> -1 + +-- old residue cases +ddctm740 comparetotmag 1 0.9999999 -> 1 +ddctm741 comparetotmag 1 0.999999 -> 1 +ddctm742 comparetotmag 1 0.99999 -> 1 +ddctm743 comparetotmag 1 1.0000 -> 1 +ddctm744 comparetotmag 1 1.00001 -> -1 +ddctm745 comparetotmag 1 1.000001 -> -1 +ddctm746 comparetotmag 1 1.0000001 -> -1 +ddctm750 comparetotmag 0.9999999 1 -> -1 +ddctm751 comparetotmag 0.999999 1 -> -1 +ddctm752 comparetotmag 0.99999 1 -> -1 +ddctm753 comparetotmag 1.0000 1 -> -1 +ddctm754 comparetotmag 1.00001 1 -> 1 +ddctm755 comparetotmag 1.000001 1 -> 1 +ddctm756 comparetotmag 1.0000001 1 -> 1 + +-- Specials +ddctm780 comparetotmag Inf -Inf -> 0 +ddctm781 comparetotmag Inf -1000 -> 1 +ddctm782 comparetotmag Inf -1 -> 1 +ddctm783 comparetotmag Inf -0 -> 1 +ddctm784 comparetotmag Inf 0 -> 1 +ddctm785 comparetotmag Inf 1 -> 1 +ddctm786 comparetotmag Inf 1000 -> 1 +ddctm787 comparetotmag Inf Inf -> 0 +ddctm788 comparetotmag -1000 Inf -> -1 +ddctm789 comparetotmag -Inf Inf -> 0 +ddctm790 comparetotmag -1 Inf -> -1 +ddctm791 comparetotmag -0 Inf -> -1 +ddctm792 comparetotmag 0 Inf -> -1 +ddctm793 comparetotmag 1 Inf -> -1 +ddctm794 comparetotmag 1000 Inf -> -1 +ddctm795 comparetotmag Inf Inf -> 0 + +ddctm800 comparetotmag -Inf -Inf -> 0 +ddctm801 comparetotmag -Inf -1000 -> 1 +ddctm802 comparetotmag -Inf -1 -> 1 +ddctm803 comparetotmag -Inf -0 -> 1 +ddctm804 comparetotmag -Inf 0 -> 1 +ddctm805 comparetotmag -Inf 1 -> 1 +ddctm806 comparetotmag -Inf 1000 -> 1 +ddctm807 comparetotmag -Inf Inf -> 0 +ddctm808 comparetotmag -Inf -Inf -> 0 +ddctm809 comparetotmag -1000 -Inf -> -1 +ddctm810 comparetotmag -1 -Inf -> -1 +ddctm811 comparetotmag -0 -Inf -> -1 +ddctm812 comparetotmag 0 -Inf -> -1 +ddctm813 comparetotmag 1 -Inf -> -1 +ddctm814 comparetotmag 1000 -Inf -> -1 +ddctm815 comparetotmag Inf -Inf -> 0 + +ddctm821 comparetotmag NaN -Inf -> 1 +ddctm822 comparetotmag NaN -1000 -> 1 +ddctm823 comparetotmag NaN -1 -> 1 +ddctm824 comparetotmag NaN -0 -> 1 +ddctm825 comparetotmag NaN 0 -> 1 +ddctm826 comparetotmag NaN 1 -> 1 +ddctm827 comparetotmag NaN 1000 -> 1 +ddctm828 comparetotmag NaN Inf -> 1 +ddctm829 comparetotmag NaN NaN -> 0 +ddctm830 comparetotmag -Inf NaN -> -1 +ddctm831 comparetotmag -1000 NaN -> -1 +ddctm832 comparetotmag -1 NaN -> -1 +ddctm833 comparetotmag -0 NaN -> -1 +ddctm834 comparetotmag 0 NaN -> -1 +ddctm835 comparetotmag 1 NaN -> -1 +ddctm836 comparetotmag 1000 NaN -> -1 +ddctm837 comparetotmag Inf NaN -> -1 +ddctm838 comparetotmag -NaN -NaN -> 0 +ddctm839 comparetotmag +NaN -NaN -> 0 +ddctm840 comparetotmag -NaN +NaN -> 0 + +ddctm841 comparetotmag sNaN -sNaN -> 0 +ddctm842 comparetotmag sNaN -NaN -> -1 +ddctm843 comparetotmag sNaN -Inf -> 1 +ddctm844 comparetotmag sNaN -1000 -> 1 +ddctm845 comparetotmag sNaN -1 -> 1 +ddctm846 comparetotmag sNaN -0 -> 1 +ddctm847 comparetotmag sNaN 0 -> 1 +ddctm848 comparetotmag sNaN 1 -> 1 +ddctm849 comparetotmag sNaN 1000 -> 1 +ddctm850 comparetotmag sNaN NaN -> -1 +ddctm851 comparetotmag sNaN sNaN -> 0 + +ddctm852 comparetotmag -sNaN sNaN -> 0 +ddctm853 comparetotmag -NaN sNaN -> 1 +ddctm854 comparetotmag -Inf sNaN -> -1 +ddctm855 comparetotmag -1000 sNaN -> -1 +ddctm856 comparetotmag -1 sNaN -> -1 +ddctm857 comparetotmag -0 sNaN -> -1 +ddctm858 comparetotmag 0 sNaN -> -1 +ddctm859 comparetotmag 1 sNaN -> -1 +ddctm860 comparetotmag 1000 sNaN -> -1 +ddctm861 comparetotmag Inf sNaN -> -1 +ddctm862 comparetotmag NaN sNaN -> 1 +ddctm863 comparetotmag sNaN sNaN -> 0 + +ddctm871 comparetotmag -sNaN -sNaN -> 0 +ddctm872 comparetotmag -sNaN -NaN -> -1 +ddctm873 comparetotmag -sNaN -Inf -> 1 +ddctm874 comparetotmag -sNaN -1000 -> 1 +ddctm875 comparetotmag -sNaN -1 -> 1 +ddctm876 comparetotmag -sNaN -0 -> 1 +ddctm877 comparetotmag -sNaN 0 -> 1 +ddctm878 comparetotmag -sNaN 1 -> 1 +ddctm879 comparetotmag -sNaN 1000 -> 1 +ddctm880 comparetotmag -sNaN NaN -> -1 +ddctm881 comparetotmag -sNaN sNaN -> 0 + +ddctm882 comparetotmag -sNaN -sNaN -> 0 +ddctm883 comparetotmag -NaN -sNaN -> 1 +ddctm884 comparetotmag -Inf -sNaN -> -1 +ddctm885 comparetotmag -1000 -sNaN -> -1 +ddctm886 comparetotmag -1 -sNaN -> -1 +ddctm887 comparetotmag -0 -sNaN -> -1 +ddctm888 comparetotmag 0 -sNaN -> -1 +ddctm889 comparetotmag 1 -sNaN -> -1 +ddctm890 comparetotmag 1000 -sNaN -> -1 +ddctm891 comparetotmag Inf -sNaN -> -1 +ddctm892 comparetotmag NaN -sNaN -> 1 +ddctm893 comparetotmag sNaN -sNaN -> 0 + +-- NaNs with payload +ddctm960 comparetotmag NaN9 -Inf -> 1 +ddctm961 comparetotmag NaN8 999 -> 1 +ddctm962 comparetotmag NaN77 Inf -> 1 +ddctm963 comparetotmag -NaN67 NaN5 -> 1 +ddctm964 comparetotmag -Inf -NaN4 -> -1 +ddctm965 comparetotmag -999 -NaN33 -> -1 +ddctm966 comparetotmag Inf NaN2 -> -1 + +ddctm970 comparetotmag -NaN41 -NaN42 -> -1 +ddctm971 comparetotmag +NaN41 -NaN42 -> -1 +ddctm972 comparetotmag -NaN41 +NaN42 -> -1 +ddctm973 comparetotmag +NaN41 +NaN42 -> -1 +ddctm974 comparetotmag -NaN42 -NaN01 -> 1 +ddctm975 comparetotmag +NaN42 -NaN01 -> 1 +ddctm976 comparetotmag -NaN42 +NaN01 -> 1 +ddctm977 comparetotmag +NaN42 +NaN01 -> 1 + +ddctm980 comparetotmag -sNaN771 -sNaN772 -> -1 +ddctm981 comparetotmag +sNaN771 -sNaN772 -> -1 +ddctm982 comparetotmag -sNaN771 +sNaN772 -> -1 +ddctm983 comparetotmag +sNaN771 +sNaN772 -> -1 +ddctm984 comparetotmag -sNaN772 -sNaN771 -> 1 +ddctm985 comparetotmag +sNaN772 -sNaN771 -> 1 +ddctm986 comparetotmag -sNaN772 +sNaN771 -> 1 +ddctm987 comparetotmag +sNaN772 +sNaN771 -> 1 + +ddctm991 comparetotmag -sNaN99 -Inf -> 1 +ddctm992 comparetotmag sNaN98 -11 -> 1 +ddctm993 comparetotmag sNaN97 NaN -> -1 +ddctm994 comparetotmag sNaN16 sNaN94 -> -1 +ddctm995 comparetotmag NaN85 sNaN83 -> 1 +ddctm996 comparetotmag -Inf sNaN92 -> -1 +ddctm997 comparetotmag 088 sNaN81 -> -1 +ddctm998 comparetotmag Inf sNaN90 -> -1 +ddctm999 comparetotmag NaN -sNaN89 -> 1 + +-- spread zeros +ddctm1110 comparetotmag 0E-383 0 -> -1 +ddctm1111 comparetotmag 0E-383 -0 -> -1 +ddctm1112 comparetotmag -0E-383 0 -> -1 +ddctm1113 comparetotmag -0E-383 -0 -> -1 +ddctm1114 comparetotmag 0E-383 0E+384 -> -1 +ddctm1115 comparetotmag 0E-383 -0E+384 -> -1 +ddctm1116 comparetotmag -0E-383 0E+384 -> -1 +ddctm1117 comparetotmag -0E-383 -0E+384 -> -1 +ddctm1118 comparetotmag 0 0E+384 -> -1 +ddctm1119 comparetotmag 0 -0E+384 -> -1 +ddctm1120 comparetotmag -0 0E+384 -> -1 +ddctm1121 comparetotmag -0 -0E+384 -> -1 + +ddctm1130 comparetotmag 0E+384 0 -> 1 +ddctm1131 comparetotmag 0E+384 -0 -> 1 +ddctm1132 comparetotmag -0E+384 0 -> 1 +ddctm1133 comparetotmag -0E+384 -0 -> 1 +ddctm1134 comparetotmag 0E+384 0E-383 -> 1 +ddctm1135 comparetotmag 0E+384 -0E-383 -> 1 +ddctm1136 comparetotmag -0E+384 0E-383 -> 1 +ddctm1137 comparetotmag -0E+384 -0E-383 -> 1 +ddctm1138 comparetotmag 0 0E-383 -> 1 +ddctm1139 comparetotmag 0 -0E-383 -> 1 +ddctm1140 comparetotmag -0 0E-383 -> 1 +ddctm1141 comparetotmag -0 -0E-383 -> 1 + +-- Null tests +ddctm9990 comparetotmag 10 # -> NaN Invalid_operation +ddctm9991 comparetotmag # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddCopy.decTest b/Lib/test/decimaltestdata/ddCopy.decTest index f99d86a..9a175c5 100644 --- a/Lib/test/decimaltestdata/ddCopy.decTest +++ b/Lib/test/decimaltestdata/ddCopy.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- ddCopy.decTest -- quiet decDouble copy -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check -ddcpy001 copy +7.50 -> 7.50 - --- Infinities -ddcpy011 copy Infinity -> Infinity -ddcpy012 copy -Infinity -> -Infinity - --- NaNs, 0 payload -ddcpy021 copy NaN -> NaN -ddcpy022 copy -NaN -> -NaN -ddcpy023 copy sNaN -> sNaN -ddcpy024 copy -sNaN -> -sNaN - --- NaNs, non-0 payload -ddcpy031 copy NaN10 -> NaN10 -ddcpy032 copy -NaN10 -> -NaN10 -ddcpy033 copy sNaN10 -> sNaN10 -ddcpy034 copy -sNaN10 -> -sNaN10 -ddcpy035 copy NaN7 -> NaN7 -ddcpy036 copy -NaN7 -> -NaN7 -ddcpy037 copy sNaN101 -> sNaN101 -ddcpy038 copy -sNaN101 -> -sNaN101 - --- finites -ddcpy101 copy 7 -> 7 -ddcpy102 copy -7 -> -7 -ddcpy103 copy 75 -> 75 -ddcpy104 copy -75 -> -75 -ddcpy105 copy 7.50 -> 7.50 -ddcpy106 copy -7.50 -> -7.50 -ddcpy107 copy 7.500 -> 7.500 -ddcpy108 copy -7.500 -> -7.500 - --- zeros -ddcpy111 copy 0 -> 0 -ddcpy112 copy -0 -> -0 -ddcpy113 copy 0E+4 -> 0E+4 -ddcpy114 copy -0E+4 -> -0E+4 -ddcpy115 copy 0.0000 -> 0.0000 -ddcpy116 copy -0.0000 -> -0.0000 -ddcpy117 copy 0E-141 -> 0E-141 -ddcpy118 copy -0E-141 -> -0E-141 - --- full coefficients, alternating bits -ddcpy121 copy 2682682682682682 -> 2682682682682682 -ddcpy122 copy -2682682682682682 -> -2682682682682682 -ddcpy123 copy 1341341341341341 -> 1341341341341341 -ddcpy124 copy -1341341341341341 -> -1341341341341341 - --- Nmax, Nmin, Ntiny -ddcpy131 copy 9.999999999999999E+384 -> 9.999999999999999E+384 -ddcpy132 copy 1E-383 -> 1E-383 -ddcpy133 copy 1.000000000000000E-383 -> 1.000000000000000E-383 -ddcpy134 copy 1E-398 -> 1E-398 - -ddcpy135 copy -1E-398 -> -1E-398 -ddcpy136 copy -1.000000000000000E-383 -> -1.000000000000000E-383 -ddcpy137 copy -1E-383 -> -1E-383 -ddcpy138 copy -9.999999999999999E+384 -> -9.999999999999999E+384 +------------------------------------------------------------------------ +-- ddCopy.decTest -- quiet decDouble copy -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check +ddcpy001 copy +7.50 -> 7.50 + +-- Infinities +ddcpy011 copy Infinity -> Infinity +ddcpy012 copy -Infinity -> -Infinity + +-- NaNs, 0 payload +ddcpy021 copy NaN -> NaN +ddcpy022 copy -NaN -> -NaN +ddcpy023 copy sNaN -> sNaN +ddcpy024 copy -sNaN -> -sNaN + +-- NaNs, non-0 payload +ddcpy031 copy NaN10 -> NaN10 +ddcpy032 copy -NaN10 -> -NaN10 +ddcpy033 copy sNaN10 -> sNaN10 +ddcpy034 copy -sNaN10 -> -sNaN10 +ddcpy035 copy NaN7 -> NaN7 +ddcpy036 copy -NaN7 -> -NaN7 +ddcpy037 copy sNaN101 -> sNaN101 +ddcpy038 copy -sNaN101 -> -sNaN101 + +-- finites +ddcpy101 copy 7 -> 7 +ddcpy102 copy -7 -> -7 +ddcpy103 copy 75 -> 75 +ddcpy104 copy -75 -> -75 +ddcpy105 copy 7.50 -> 7.50 +ddcpy106 copy -7.50 -> -7.50 +ddcpy107 copy 7.500 -> 7.500 +ddcpy108 copy -7.500 -> -7.500 + +-- zeros +ddcpy111 copy 0 -> 0 +ddcpy112 copy -0 -> -0 +ddcpy113 copy 0E+4 -> 0E+4 +ddcpy114 copy -0E+4 -> -0E+4 +ddcpy115 copy 0.0000 -> 0.0000 +ddcpy116 copy -0.0000 -> -0.0000 +ddcpy117 copy 0E-141 -> 0E-141 +ddcpy118 copy -0E-141 -> -0E-141 + +-- full coefficients, alternating bits +ddcpy121 copy 2682682682682682 -> 2682682682682682 +ddcpy122 copy -2682682682682682 -> -2682682682682682 +ddcpy123 copy 1341341341341341 -> 1341341341341341 +ddcpy124 copy -1341341341341341 -> -1341341341341341 + +-- Nmax, Nmin, Ntiny +ddcpy131 copy 9.999999999999999E+384 -> 9.999999999999999E+384 +ddcpy132 copy 1E-383 -> 1E-383 +ddcpy133 copy 1.000000000000000E-383 -> 1.000000000000000E-383 +ddcpy134 copy 1E-398 -> 1E-398 + +ddcpy135 copy -1E-398 -> -1E-398 +ddcpy136 copy -1.000000000000000E-383 -> -1.000000000000000E-383 +ddcpy137 copy -1E-383 -> -1E-383 +ddcpy138 copy -9.999999999999999E+384 -> -9.999999999999999E+384 diff --git a/Lib/test/decimaltestdata/ddCopyAbs.decTest b/Lib/test/decimaltestdata/ddCopyAbs.decTest index d436a19..4823cf2 100644 --- a/Lib/test/decimaltestdata/ddCopyAbs.decTest +++ b/Lib/test/decimaltestdata/ddCopyAbs.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- ddCopyAbs.decTest -- quiet decDouble copy and set sign to zero -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check -ddcpa001 copyabs +7.50 -> 7.50 - --- Infinities -ddcpa011 copyabs Infinity -> Infinity -ddcpa012 copyabs -Infinity -> Infinity - --- NaNs, 0 payload -ddcpa021 copyabs NaN -> NaN -ddcpa022 copyabs -NaN -> NaN -ddcpa023 copyabs sNaN -> sNaN -ddcpa024 copyabs -sNaN -> sNaN - --- NaNs, non-0 payload -ddcpa031 copyabs NaN10 -> NaN10 -ddcpa032 copyabs -NaN15 -> NaN15 -ddcpa033 copyabs sNaN15 -> sNaN15 -ddcpa034 copyabs -sNaN10 -> sNaN10 -ddcpa035 copyabs NaN7 -> NaN7 -ddcpa036 copyabs -NaN7 -> NaN7 -ddcpa037 copyabs sNaN101 -> sNaN101 -ddcpa038 copyabs -sNaN101 -> sNaN101 - --- finites -ddcpa101 copyabs 7 -> 7 -ddcpa102 copyabs -7 -> 7 -ddcpa103 copyabs 75 -> 75 -ddcpa104 copyabs -75 -> 75 -ddcpa105 copyabs 7.10 -> 7.10 -ddcpa106 copyabs -7.10 -> 7.10 -ddcpa107 copyabs 7.500 -> 7.500 -ddcpa108 copyabs -7.500 -> 7.500 - --- zeros -ddcpa111 copyabs 0 -> 0 -ddcpa112 copyabs -0 -> 0 -ddcpa113 copyabs 0E+6 -> 0E+6 -ddcpa114 copyabs -0E+6 -> 0E+6 -ddcpa115 copyabs 0.0000 -> 0.0000 -ddcpa116 copyabs -0.0000 -> 0.0000 -ddcpa117 copyabs 0E-141 -> 0E-141 -ddcpa118 copyabs -0E-141 -> 0E-141 - --- full coefficients, alternating bits -ddcpa121 copyabs 2682682682682682 -> 2682682682682682 -ddcpa122 copyabs -2682682682682682 -> 2682682682682682 -ddcpa123 copyabs 1341341341341341 -> 1341341341341341 -ddcpa124 copyabs -1341341341341341 -> 1341341341341341 - --- Nmax, Nmin, Ntiny -ddcpa131 copyabs 9.999999999999999E+384 -> 9.999999999999999E+384 -ddcpa132 copyabs 1E-383 -> 1E-383 -ddcpa133 copyabs 1.000000000000000E-383 -> 1.000000000000000E-383 -ddcpa134 copyabs 1E-398 -> 1E-398 - -ddcpa135 copyabs -1E-398 -> 1E-398 -ddcpa136 copyabs -1.000000000000000E-383 -> 1.000000000000000E-383 -ddcpa137 copyabs -1E-383 -> 1E-383 -ddcpa138 copyabs -9.999999999999999E+384 -> 9.999999999999999E+384 +------------------------------------------------------------------------ +-- ddCopyAbs.decTest -- quiet decDouble copy and set sign to zero -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check +ddcpa001 copyabs +7.50 -> 7.50 + +-- Infinities +ddcpa011 copyabs Infinity -> Infinity +ddcpa012 copyabs -Infinity -> Infinity + +-- NaNs, 0 payload +ddcpa021 copyabs NaN -> NaN +ddcpa022 copyabs -NaN -> NaN +ddcpa023 copyabs sNaN -> sNaN +ddcpa024 copyabs -sNaN -> sNaN + +-- NaNs, non-0 payload +ddcpa031 copyabs NaN10 -> NaN10 +ddcpa032 copyabs -NaN15 -> NaN15 +ddcpa033 copyabs sNaN15 -> sNaN15 +ddcpa034 copyabs -sNaN10 -> sNaN10 +ddcpa035 copyabs NaN7 -> NaN7 +ddcpa036 copyabs -NaN7 -> NaN7 +ddcpa037 copyabs sNaN101 -> sNaN101 +ddcpa038 copyabs -sNaN101 -> sNaN101 + +-- finites +ddcpa101 copyabs 7 -> 7 +ddcpa102 copyabs -7 -> 7 +ddcpa103 copyabs 75 -> 75 +ddcpa104 copyabs -75 -> 75 +ddcpa105 copyabs 7.10 -> 7.10 +ddcpa106 copyabs -7.10 -> 7.10 +ddcpa107 copyabs 7.500 -> 7.500 +ddcpa108 copyabs -7.500 -> 7.500 + +-- zeros +ddcpa111 copyabs 0 -> 0 +ddcpa112 copyabs -0 -> 0 +ddcpa113 copyabs 0E+6 -> 0E+6 +ddcpa114 copyabs -0E+6 -> 0E+6 +ddcpa115 copyabs 0.0000 -> 0.0000 +ddcpa116 copyabs -0.0000 -> 0.0000 +ddcpa117 copyabs 0E-141 -> 0E-141 +ddcpa118 copyabs -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +ddcpa121 copyabs 2682682682682682 -> 2682682682682682 +ddcpa122 copyabs -2682682682682682 -> 2682682682682682 +ddcpa123 copyabs 1341341341341341 -> 1341341341341341 +ddcpa124 copyabs -1341341341341341 -> 1341341341341341 + +-- Nmax, Nmin, Ntiny +ddcpa131 copyabs 9.999999999999999E+384 -> 9.999999999999999E+384 +ddcpa132 copyabs 1E-383 -> 1E-383 +ddcpa133 copyabs 1.000000000000000E-383 -> 1.000000000000000E-383 +ddcpa134 copyabs 1E-398 -> 1E-398 + +ddcpa135 copyabs -1E-398 -> 1E-398 +ddcpa136 copyabs -1.000000000000000E-383 -> 1.000000000000000E-383 +ddcpa137 copyabs -1E-383 -> 1E-383 +ddcpa138 copyabs -9.999999999999999E+384 -> 9.999999999999999E+384 diff --git a/Lib/test/decimaltestdata/ddCopyNegate.decTest b/Lib/test/decimaltestdata/ddCopyNegate.decTest index a4c4274..121945c 100644 --- a/Lib/test/decimaltestdata/ddCopyNegate.decTest +++ b/Lib/test/decimaltestdata/ddCopyNegate.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- ddCopyNegate.decTest -- quiet decDouble copy and negate -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check -ddcpn001 copynegate +7.50 -> -7.50 - --- Infinities -ddcpn011 copynegate Infinity -> -Infinity -ddcpn012 copynegate -Infinity -> Infinity - --- NaNs, 0 payload -ddcpn021 copynegate NaN -> -NaN -ddcpn022 copynegate -NaN -> NaN -ddcpn023 copynegate sNaN -> -sNaN -ddcpn024 copynegate -sNaN -> sNaN - --- NaNs, non-0 payload -ddcpn031 copynegate NaN13 -> -NaN13 -ddcpn032 copynegate -NaN13 -> NaN13 -ddcpn033 copynegate sNaN13 -> -sNaN13 -ddcpn034 copynegate -sNaN13 -> sNaN13 -ddcpn035 copynegate NaN70 -> -NaN70 -ddcpn036 copynegate -NaN70 -> NaN70 -ddcpn037 copynegate sNaN101 -> -sNaN101 -ddcpn038 copynegate -sNaN101 -> sNaN101 - --- finites -ddcpn101 copynegate 7 -> -7 -ddcpn102 copynegate -7 -> 7 -ddcpn103 copynegate 75 -> -75 -ddcpn104 copynegate -75 -> 75 -ddcpn105 copynegate 7.50 -> -7.50 -ddcpn106 copynegate -7.50 -> 7.50 -ddcpn107 copynegate 7.500 -> -7.500 -ddcpn108 copynegate -7.500 -> 7.500 - --- zeros -ddcpn111 copynegate 0 -> -0 -ddcpn112 copynegate -0 -> 0 -ddcpn113 copynegate 0E+4 -> -0E+4 -ddcpn114 copynegate -0E+4 -> 0E+4 -ddcpn115 copynegate 0.0000 -> -0.0000 -ddcpn116 copynegate -0.0000 -> 0.0000 -ddcpn117 copynegate 0E-141 -> -0E-141 -ddcpn118 copynegate -0E-141 -> 0E-141 - --- full coefficients, alternating bits -ddcpn121 copynegate 2682682682682682 -> -2682682682682682 -ddcpn122 copynegate -2682682682682682 -> 2682682682682682 -ddcpn123 copynegate 1341341341341341 -> -1341341341341341 -ddcpn124 copynegate -1341341341341341 -> 1341341341341341 - --- Nmax, Nmin, Ntiny -ddcpn131 copynegate 9.999999999999999E+384 -> -9.999999999999999E+384 -ddcpn132 copynegate 1E-383 -> -1E-383 -ddcpn133 copynegate 1.000000000000000E-383 -> -1.000000000000000E-383 -ddcpn134 copynegate 1E-398 -> -1E-398 - -ddcpn135 copynegate -1E-398 -> 1E-398 -ddcpn136 copynegate -1.000000000000000E-383 -> 1.000000000000000E-383 -ddcpn137 copynegate -1E-383 -> 1E-383 -ddcpn138 copynegate -9.999999999999999E+384 -> 9.999999999999999E+384 +------------------------------------------------------------------------ +-- ddCopyNegate.decTest -- quiet decDouble copy and negate -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check +ddcpn001 copynegate +7.50 -> -7.50 + +-- Infinities +ddcpn011 copynegate Infinity -> -Infinity +ddcpn012 copynegate -Infinity -> Infinity + +-- NaNs, 0 payload +ddcpn021 copynegate NaN -> -NaN +ddcpn022 copynegate -NaN -> NaN +ddcpn023 copynegate sNaN -> -sNaN +ddcpn024 copynegate -sNaN -> sNaN + +-- NaNs, non-0 payload +ddcpn031 copynegate NaN13 -> -NaN13 +ddcpn032 copynegate -NaN13 -> NaN13 +ddcpn033 copynegate sNaN13 -> -sNaN13 +ddcpn034 copynegate -sNaN13 -> sNaN13 +ddcpn035 copynegate NaN70 -> -NaN70 +ddcpn036 copynegate -NaN70 -> NaN70 +ddcpn037 copynegate sNaN101 -> -sNaN101 +ddcpn038 copynegate -sNaN101 -> sNaN101 + +-- finites +ddcpn101 copynegate 7 -> -7 +ddcpn102 copynegate -7 -> 7 +ddcpn103 copynegate 75 -> -75 +ddcpn104 copynegate -75 -> 75 +ddcpn105 copynegate 7.50 -> -7.50 +ddcpn106 copynegate -7.50 -> 7.50 +ddcpn107 copynegate 7.500 -> -7.500 +ddcpn108 copynegate -7.500 -> 7.500 + +-- zeros +ddcpn111 copynegate 0 -> -0 +ddcpn112 copynegate -0 -> 0 +ddcpn113 copynegate 0E+4 -> -0E+4 +ddcpn114 copynegate -0E+4 -> 0E+4 +ddcpn115 copynegate 0.0000 -> -0.0000 +ddcpn116 copynegate -0.0000 -> 0.0000 +ddcpn117 copynegate 0E-141 -> -0E-141 +ddcpn118 copynegate -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +ddcpn121 copynegate 2682682682682682 -> -2682682682682682 +ddcpn122 copynegate -2682682682682682 -> 2682682682682682 +ddcpn123 copynegate 1341341341341341 -> -1341341341341341 +ddcpn124 copynegate -1341341341341341 -> 1341341341341341 + +-- Nmax, Nmin, Ntiny +ddcpn131 copynegate 9.999999999999999E+384 -> -9.999999999999999E+384 +ddcpn132 copynegate 1E-383 -> -1E-383 +ddcpn133 copynegate 1.000000000000000E-383 -> -1.000000000000000E-383 +ddcpn134 copynegate 1E-398 -> -1E-398 + +ddcpn135 copynegate -1E-398 -> 1E-398 +ddcpn136 copynegate -1.000000000000000E-383 -> 1.000000000000000E-383 +ddcpn137 copynegate -1E-383 -> 1E-383 +ddcpn138 copynegate -9.999999999999999E+384 -> 9.999999999999999E+384 diff --git a/Lib/test/decimaltestdata/ddCopySign.decTest b/Lib/test/decimaltestdata/ddCopySign.decTest index 6a78083..c99544d 100644 --- a/Lib/test/decimaltestdata/ddCopySign.decTest +++ b/Lib/test/decimaltestdata/ddCopySign.decTest @@ -1,175 +1,175 @@ ------------------------------------------------------------------------- --- ddCopySign.decTest -- quiet decDouble copy with sign from rhs -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check -ddcps001 copysign +7.50 11 -> 7.50 - --- Infinities -ddcps011 copysign Infinity 11 -> Infinity -ddcps012 copysign -Infinity 11 -> Infinity - --- NaNs, 0 payload -ddcps021 copysign NaN 11 -> NaN -ddcps022 copysign -NaN 11 -> NaN -ddcps023 copysign sNaN 11 -> sNaN -ddcps024 copysign -sNaN 11 -> sNaN - --- NaNs, non-0 payload -ddcps031 copysign NaN10 11 -> NaN10 -ddcps032 copysign -NaN10 11 -> NaN10 -ddcps033 copysign sNaN10 11 -> sNaN10 -ddcps034 copysign -sNaN10 11 -> sNaN10 -ddcps035 copysign NaN7 11 -> NaN7 -ddcps036 copysign -NaN7 11 -> NaN7 -ddcps037 copysign sNaN101 11 -> sNaN101 -ddcps038 copysign -sNaN101 11 -> sNaN101 - --- finites -ddcps101 copysign 7 11 -> 7 -ddcps102 copysign -7 11 -> 7 -ddcps103 copysign 75 11 -> 75 -ddcps104 copysign -75 11 -> 75 -ddcps105 copysign 7.50 11 -> 7.50 -ddcps106 copysign -7.50 11 -> 7.50 -ddcps107 copysign 7.500 11 -> 7.500 -ddcps108 copysign -7.500 11 -> 7.500 - --- zeros -ddcps111 copysign 0 11 -> 0 -ddcps112 copysign -0 11 -> 0 -ddcps113 copysign 0E+4 11 -> 0E+4 -ddcps114 copysign -0E+4 11 -> 0E+4 -ddcps115 copysign 0.0000 11 -> 0.0000 -ddcps116 copysign -0.0000 11 -> 0.0000 -ddcps117 copysign 0E-141 11 -> 0E-141 -ddcps118 copysign -0E-141 11 -> 0E-141 - --- full coefficients, alternating bits -ddcps121 copysign 2682682682682682 11 -> 2682682682682682 -ddcps122 copysign -2682682682682682 11 -> 2682682682682682 -ddcps123 copysign 1341341341341341 11 -> 1341341341341341 -ddcps124 copysign -1341341341341341 11 -> 1341341341341341 - --- Nmax, Nmin, Ntiny -ddcps131 copysign 9.999999999999999E+384 11 -> 9.999999999999999E+384 -ddcps132 copysign 1E-383 11 -> 1E-383 -ddcps133 copysign 1.000000000000000E-383 11 -> 1.000000000000000E-383 -ddcps134 copysign 1E-398 11 -> 1E-398 - -ddcps135 copysign -1E-398 11 -> 1E-398 -ddcps136 copysign -1.000000000000000E-383 11 -> 1.000000000000000E-383 -ddcps137 copysign -1E-383 11 -> 1E-383 -ddcps138 copysign -9.999999999999999E+384 11 -> 9.999999999999999E+384 - --- repeat with negative RHS - --- Infinities -ddcps211 copysign Infinity -34 -> -Infinity -ddcps212 copysign -Infinity -34 -> -Infinity - --- NaNs, 0 payload -ddcps221 copysign NaN -34 -> -NaN -ddcps222 copysign -NaN -34 -> -NaN -ddcps223 copysign sNaN -34 -> -sNaN -ddcps224 copysign -sNaN -34 -> -sNaN - --- NaNs, non-0 payload -ddcps231 copysign NaN10 -34 -> -NaN10 -ddcps232 copysign -NaN10 -34 -> -NaN10 -ddcps233 copysign sNaN10 -34 -> -sNaN10 -ddcps234 copysign -sNaN10 -34 -> -sNaN10 -ddcps235 copysign NaN7 -34 -> -NaN7 -ddcps236 copysign -NaN7 -34 -> -NaN7 -ddcps237 copysign sNaN101 -34 -> -sNaN101 -ddcps238 copysign -sNaN101 -34 -> -sNaN101 - --- finites -ddcps301 copysign 7 -34 -> -7 -ddcps302 copysign -7 -34 -> -7 -ddcps303 copysign 75 -34 -> -75 -ddcps304 copysign -75 -34 -> -75 -ddcps305 copysign 7.50 -34 -> -7.50 -ddcps306 copysign -7.50 -34 -> -7.50 -ddcps307 copysign 7.500 -34 -> -7.500 -ddcps308 copysign -7.500 -34 -> -7.500 - --- zeros -ddcps311 copysign 0 -34 -> -0 -ddcps312 copysign -0 -34 -> -0 -ddcps313 copysign 0E+4 -34 -> -0E+4 -ddcps314 copysign -0E+4 -34 -> -0E+4 -ddcps315 copysign 0.0000 -34 -> -0.0000 -ddcps316 copysign -0.0000 -34 -> -0.0000 -ddcps317 copysign 0E-141 -34 -> -0E-141 -ddcps318 copysign -0E-141 -34 -> -0E-141 - --- full coefficients, alternating bits -ddcps321 copysign 2682682682682682 -34 -> -2682682682682682 -ddcps322 copysign -2682682682682682 -34 -> -2682682682682682 -ddcps323 copysign 1341341341341341 -34 -> -1341341341341341 -ddcps324 copysign -1341341341341341 -34 -> -1341341341341341 - --- Nmax, Nmin, Ntiny -ddcps331 copysign 9.999999999999999E+384 -34 -> -9.999999999999999E+384 -ddcps332 copysign 1E-383 -34 -> -1E-383 -ddcps333 copysign 1.000000000000000E-383 -34 -> -1.000000000000000E-383 -ddcps334 copysign 1E-398 -34 -> -1E-398 - -ddcps335 copysign -1E-398 -34 -> -1E-398 -ddcps336 copysign -1.000000000000000E-383 -34 -> -1.000000000000000E-383 -ddcps337 copysign -1E-383 -34 -> -1E-383 -ddcps338 copysign -9.999999999999999E+384 -34 -> -9.999999999999999E+384 - --- Other kinds of RHS -ddcps401 copysign 701 -34 -> -701 -ddcps402 copysign -720 -34 -> -720 -ddcps403 copysign 701 -0 -> -701 -ddcps404 copysign -720 -0 -> -720 -ddcps405 copysign 701 +0 -> 701 -ddcps406 copysign -720 +0 -> 720 -ddcps407 copysign 701 +34 -> 701 -ddcps408 copysign -720 +34 -> 720 - -ddcps413 copysign 701 -Inf -> -701 -ddcps414 copysign -720 -Inf -> -720 -ddcps415 copysign 701 +Inf -> 701 -ddcps416 copysign -720 +Inf -> 720 - -ddcps420 copysign 701 -NaN -> -701 -ddcps421 copysign -720 -NaN -> -720 -ddcps422 copysign 701 +NaN -> 701 -ddcps423 copysign -720 +NaN -> 720 -ddcps425 copysign -720 +NaN8 -> 720 - -ddcps426 copysign 701 -sNaN -> -701 -ddcps427 copysign -720 -sNaN -> -720 -ddcps428 copysign 701 +sNaN -> 701 -ddcps429 copysign -720 +sNaN -> 720 -ddcps430 copysign -720 +sNaN3 -> 720 - +------------------------------------------------------------------------ +-- ddCopySign.decTest -- quiet decDouble copy with sign from rhs -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check +ddcps001 copysign +7.50 11 -> 7.50 + +-- Infinities +ddcps011 copysign Infinity 11 -> Infinity +ddcps012 copysign -Infinity 11 -> Infinity + +-- NaNs, 0 payload +ddcps021 copysign NaN 11 -> NaN +ddcps022 copysign -NaN 11 -> NaN +ddcps023 copysign sNaN 11 -> sNaN +ddcps024 copysign -sNaN 11 -> sNaN + +-- NaNs, non-0 payload +ddcps031 copysign NaN10 11 -> NaN10 +ddcps032 copysign -NaN10 11 -> NaN10 +ddcps033 copysign sNaN10 11 -> sNaN10 +ddcps034 copysign -sNaN10 11 -> sNaN10 +ddcps035 copysign NaN7 11 -> NaN7 +ddcps036 copysign -NaN7 11 -> NaN7 +ddcps037 copysign sNaN101 11 -> sNaN101 +ddcps038 copysign -sNaN101 11 -> sNaN101 + +-- finites +ddcps101 copysign 7 11 -> 7 +ddcps102 copysign -7 11 -> 7 +ddcps103 copysign 75 11 -> 75 +ddcps104 copysign -75 11 -> 75 +ddcps105 copysign 7.50 11 -> 7.50 +ddcps106 copysign -7.50 11 -> 7.50 +ddcps107 copysign 7.500 11 -> 7.500 +ddcps108 copysign -7.500 11 -> 7.500 + +-- zeros +ddcps111 copysign 0 11 -> 0 +ddcps112 copysign -0 11 -> 0 +ddcps113 copysign 0E+4 11 -> 0E+4 +ddcps114 copysign -0E+4 11 -> 0E+4 +ddcps115 copysign 0.0000 11 -> 0.0000 +ddcps116 copysign -0.0000 11 -> 0.0000 +ddcps117 copysign 0E-141 11 -> 0E-141 +ddcps118 copysign -0E-141 11 -> 0E-141 + +-- full coefficients, alternating bits +ddcps121 copysign 2682682682682682 11 -> 2682682682682682 +ddcps122 copysign -2682682682682682 11 -> 2682682682682682 +ddcps123 copysign 1341341341341341 11 -> 1341341341341341 +ddcps124 copysign -1341341341341341 11 -> 1341341341341341 + +-- Nmax, Nmin, Ntiny +ddcps131 copysign 9.999999999999999E+384 11 -> 9.999999999999999E+384 +ddcps132 copysign 1E-383 11 -> 1E-383 +ddcps133 copysign 1.000000000000000E-383 11 -> 1.000000000000000E-383 +ddcps134 copysign 1E-398 11 -> 1E-398 + +ddcps135 copysign -1E-398 11 -> 1E-398 +ddcps136 copysign -1.000000000000000E-383 11 -> 1.000000000000000E-383 +ddcps137 copysign -1E-383 11 -> 1E-383 +ddcps138 copysign -9.999999999999999E+384 11 -> 9.999999999999999E+384 + +-- repeat with negative RHS + +-- Infinities +ddcps211 copysign Infinity -34 -> -Infinity +ddcps212 copysign -Infinity -34 -> -Infinity + +-- NaNs, 0 payload +ddcps221 copysign NaN -34 -> -NaN +ddcps222 copysign -NaN -34 -> -NaN +ddcps223 copysign sNaN -34 -> -sNaN +ddcps224 copysign -sNaN -34 -> -sNaN + +-- NaNs, non-0 payload +ddcps231 copysign NaN10 -34 -> -NaN10 +ddcps232 copysign -NaN10 -34 -> -NaN10 +ddcps233 copysign sNaN10 -34 -> -sNaN10 +ddcps234 copysign -sNaN10 -34 -> -sNaN10 +ddcps235 copysign NaN7 -34 -> -NaN7 +ddcps236 copysign -NaN7 -34 -> -NaN7 +ddcps237 copysign sNaN101 -34 -> -sNaN101 +ddcps238 copysign -sNaN101 -34 -> -sNaN101 + +-- finites +ddcps301 copysign 7 -34 -> -7 +ddcps302 copysign -7 -34 -> -7 +ddcps303 copysign 75 -34 -> -75 +ddcps304 copysign -75 -34 -> -75 +ddcps305 copysign 7.50 -34 -> -7.50 +ddcps306 copysign -7.50 -34 -> -7.50 +ddcps307 copysign 7.500 -34 -> -7.500 +ddcps308 copysign -7.500 -34 -> -7.500 + +-- zeros +ddcps311 copysign 0 -34 -> -0 +ddcps312 copysign -0 -34 -> -0 +ddcps313 copysign 0E+4 -34 -> -0E+4 +ddcps314 copysign -0E+4 -34 -> -0E+4 +ddcps315 copysign 0.0000 -34 -> -0.0000 +ddcps316 copysign -0.0000 -34 -> -0.0000 +ddcps317 copysign 0E-141 -34 -> -0E-141 +ddcps318 copysign -0E-141 -34 -> -0E-141 + +-- full coefficients, alternating bits +ddcps321 copysign 2682682682682682 -34 -> -2682682682682682 +ddcps322 copysign -2682682682682682 -34 -> -2682682682682682 +ddcps323 copysign 1341341341341341 -34 -> -1341341341341341 +ddcps324 copysign -1341341341341341 -34 -> -1341341341341341 + +-- Nmax, Nmin, Ntiny +ddcps331 copysign 9.999999999999999E+384 -34 -> -9.999999999999999E+384 +ddcps332 copysign 1E-383 -34 -> -1E-383 +ddcps333 copysign 1.000000000000000E-383 -34 -> -1.000000000000000E-383 +ddcps334 copysign 1E-398 -34 -> -1E-398 + +ddcps335 copysign -1E-398 -34 -> -1E-398 +ddcps336 copysign -1.000000000000000E-383 -34 -> -1.000000000000000E-383 +ddcps337 copysign -1E-383 -34 -> -1E-383 +ddcps338 copysign -9.999999999999999E+384 -34 -> -9.999999999999999E+384 + +-- Other kinds of RHS +ddcps401 copysign 701 -34 -> -701 +ddcps402 copysign -720 -34 -> -720 +ddcps403 copysign 701 -0 -> -701 +ddcps404 copysign -720 -0 -> -720 +ddcps405 copysign 701 +0 -> 701 +ddcps406 copysign -720 +0 -> 720 +ddcps407 copysign 701 +34 -> 701 +ddcps408 copysign -720 +34 -> 720 + +ddcps413 copysign 701 -Inf -> -701 +ddcps414 copysign -720 -Inf -> -720 +ddcps415 copysign 701 +Inf -> 701 +ddcps416 copysign -720 +Inf -> 720 + +ddcps420 copysign 701 -NaN -> -701 +ddcps421 copysign -720 -NaN -> -720 +ddcps422 copysign 701 +NaN -> 701 +ddcps423 copysign -720 +NaN -> 720 +ddcps425 copysign -720 +NaN8 -> 720 + +ddcps426 copysign 701 -sNaN -> -701 +ddcps427 copysign -720 -sNaN -> -720 +ddcps428 copysign 701 +sNaN -> 701 +ddcps429 copysign -720 +sNaN -> 720 +ddcps430 copysign -720 +sNaN3 -> 720 + diff --git a/Lib/test/decimaltestdata/ddDivide.decTest b/Lib/test/decimaltestdata/ddDivide.decTest index 5531d0e..019db22 100644 --- a/Lib/test/decimaltestdata/ddDivide.decTest +++ b/Lib/test/decimaltestdata/ddDivide.decTest @@ -1,863 +1,863 @@ ------------------------------------------------------------------------- --- ddDivide.decTest -- decDouble division -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -dddiv001 divide 1 1 -> 1 -dddiv002 divide 2 1 -> 2 -dddiv003 divide 1 2 -> 0.5 -dddiv004 divide 2 2 -> 1 -dddiv005 divide 0 1 -> 0 -dddiv006 divide 0 2 -> 0 -dddiv007 divide 1 3 -> 0.3333333333333333 Inexact Rounded -dddiv008 divide 2 3 -> 0.6666666666666667 Inexact Rounded -dddiv009 divide 3 3 -> 1 - -dddiv010 divide 2.4 1 -> 2.4 -dddiv011 divide 2.4 -1 -> -2.4 -dddiv012 divide -2.4 1 -> -2.4 -dddiv013 divide -2.4 -1 -> 2.4 -dddiv014 divide 2.40 1 -> 2.40 -dddiv015 divide 2.400 1 -> 2.400 -dddiv016 divide 2.4 2 -> 1.2 -dddiv017 divide 2.400 2 -> 1.200 -dddiv018 divide 2. 2 -> 1 -dddiv019 divide 20 20 -> 1 - -dddiv020 divide 187 187 -> 1 -dddiv021 divide 5 2 -> 2.5 -dddiv022 divide 50 20 -> 2.5 -dddiv023 divide 500 200 -> 2.5 -dddiv024 divide 50.0 20.0 -> 2.5 -dddiv025 divide 5.00 2.00 -> 2.5 -dddiv026 divide 5 2.0 -> 2.5 -dddiv027 divide 5 2.000 -> 2.5 -dddiv028 divide 5 0.20 -> 25 -dddiv029 divide 5 0.200 -> 25 -dddiv030 divide 10 1 -> 10 -dddiv031 divide 100 1 -> 100 -dddiv032 divide 1000 1 -> 1000 -dddiv033 divide 1000 100 -> 10 - -dddiv035 divide 1 2 -> 0.5 -dddiv036 divide 1 4 -> 0.25 -dddiv037 divide 1 8 -> 0.125 -dddiv038 divide 1 16 -> 0.0625 -dddiv039 divide 1 32 -> 0.03125 -dddiv040 divide 1 64 -> 0.015625 -dddiv041 divide 1 -2 -> -0.5 -dddiv042 divide 1 -4 -> -0.25 -dddiv043 divide 1 -8 -> -0.125 -dddiv044 divide 1 -16 -> -0.0625 -dddiv045 divide 1 -32 -> -0.03125 -dddiv046 divide 1 -64 -> -0.015625 -dddiv047 divide -1 2 -> -0.5 -dddiv048 divide -1 4 -> -0.25 -dddiv049 divide -1 8 -> -0.125 -dddiv050 divide -1 16 -> -0.0625 -dddiv051 divide -1 32 -> -0.03125 -dddiv052 divide -1 64 -> -0.015625 -dddiv053 divide -1 -2 -> 0.5 -dddiv054 divide -1 -4 -> 0.25 -dddiv055 divide -1 -8 -> 0.125 -dddiv056 divide -1 -16 -> 0.0625 -dddiv057 divide -1 -32 -> 0.03125 -dddiv058 divide -1 -64 -> 0.015625 - --- bcdTime -dddiv060 divide 1 7 -> 0.1428571428571429 Inexact Rounded -dddiv061 divide 1.2345678 1.9876543 -> 0.6211179680490717 Inexact Rounded - --- 1234567890123456 -dddiv071 divide 9999999999999999 1 -> 9999999999999999 -dddiv072 divide 999999999999999 1 -> 999999999999999 -dddiv073 divide 99999999999999 1 -> 99999999999999 -dddiv074 divide 9999999999999 1 -> 9999999999999 -dddiv075 divide 999999999999 1 -> 999999999999 -dddiv076 divide 99999999999 1 -> 99999999999 -dddiv077 divide 9999999999 1 -> 9999999999 -dddiv078 divide 999999999 1 -> 999999999 -dddiv079 divide 99999999 1 -> 99999999 -dddiv080 divide 9999999 1 -> 9999999 -dddiv081 divide 999999 1 -> 999999 -dddiv082 divide 99999 1 -> 99999 -dddiv083 divide 9999 1 -> 9999 -dddiv084 divide 999 1 -> 999 -dddiv085 divide 99 1 -> 99 -dddiv086 divide 9 1 -> 9 - -dddiv090 divide 0. 1 -> 0 -dddiv091 divide .0 1 -> 0.0 -dddiv092 divide 0.00 1 -> 0.00 -dddiv093 divide 0.00E+9 1 -> 0E+7 -dddiv094 divide 0.0000E-50 1 -> 0E-54 - -dddiv095 divide 1 1E-8 -> 1E+8 -dddiv096 divide 1 1E-9 -> 1E+9 -dddiv097 divide 1 1E-10 -> 1E+10 -dddiv098 divide 1 1E-11 -> 1E+11 -dddiv099 divide 1 1E-12 -> 1E+12 - -dddiv100 divide 1 1 -> 1 -dddiv101 divide 1 2 -> 0.5 -dddiv102 divide 1 3 -> 0.3333333333333333 Inexact Rounded -dddiv103 divide 1 4 -> 0.25 -dddiv104 divide 1 5 -> 0.2 -dddiv105 divide 1 6 -> 0.1666666666666667 Inexact Rounded -dddiv106 divide 1 7 -> 0.1428571428571429 Inexact Rounded -dddiv107 divide 1 8 -> 0.125 -dddiv108 divide 1 9 -> 0.1111111111111111 Inexact Rounded -dddiv109 divide 1 10 -> 0.1 -dddiv110 divide 1 1 -> 1 -dddiv111 divide 2 1 -> 2 -dddiv112 divide 3 1 -> 3 -dddiv113 divide 4 1 -> 4 -dddiv114 divide 5 1 -> 5 -dddiv115 divide 6 1 -> 6 -dddiv116 divide 7 1 -> 7 -dddiv117 divide 8 1 -> 8 -dddiv118 divide 9 1 -> 9 -dddiv119 divide 10 1 -> 10 - -dddiv120 divide 3E+1 0.001 -> 3E+4 -dddiv121 divide 2.200 2 -> 1.100 - -dddiv130 divide 12345 4.999 -> 2469.493898779756 Inexact Rounded -dddiv131 divide 12345 4.99 -> 2473.947895791583 Inexact Rounded -dddiv132 divide 12345 4.9 -> 2519.387755102041 Inexact Rounded -dddiv133 divide 12345 5 -> 2469 -dddiv134 divide 12345 5.1 -> 2420.588235294118 Inexact Rounded -dddiv135 divide 12345 5.01 -> 2464.071856287425 Inexact Rounded -dddiv136 divide 12345 5.001 -> 2468.506298740252 Inexact Rounded - --- test possibly imprecise results -dddiv220 divide 391 597 -> 0.6549413735343384 Inexact Rounded -dddiv221 divide 391 -597 -> -0.6549413735343384 Inexact Rounded -dddiv222 divide -391 597 -> -0.6549413735343384 Inexact Rounded -dddiv223 divide -391 -597 -> 0.6549413735343384 Inexact Rounded - --- test some cases that are close to exponent overflow, some with coefficient padding -dddiv270 divide 1 1e384 -> 1E-384 Subnormal -dddiv271 divide 1 0.9e384 -> 1.11111111111111E-384 Rounded Inexact Subnormal Underflow -dddiv272 divide 1 0.99e384 -> 1.01010101010101E-384 Rounded Inexact Subnormal Underflow -dddiv273 divide 1 0.9999999999999999e384 -> 1.00000000000000E-384 Rounded Inexact Subnormal Underflow -dddiv274 divide 9e384 1 -> 9.000000000000000E+384 Clamped -dddiv275 divide 9.9e384 1 -> 9.900000000000000E+384 Clamped -dddiv276 divide 9.99e384 1 -> 9.990000000000000E+384 Clamped -dddiv277 divide 9.9999999999999e384 1 -> 9.999999999999900E+384 Clamped -dddiv278 divide 9.99999999999999e384 1 -> 9.999999999999990E+384 Clamped -dddiv279 divide 9.999999999999999e384 1 -> 9.999999999999999E+384 - -dddiv285 divide 9.9e384 1.1 -> 9.000000000000000E+384 Clamped -dddiv286 divide 9.99e384 1.1 -> 9.081818181818182E+384 Inexact Rounded -dddiv287 divide 9.9999999999999e384 1.1 -> 9.090909090909000E+384 Clamped -dddiv288 divide 9.99999999999999e384 1.1 -> 9.090909090909082E+384 Inexact Rounded -dddiv289 divide 9.999999999999999e384 1.1 -> 9.090909090909090E+384 Clamped - - --- Divide into 0 tests -dddiv301 divide 0 7 -> 0 -dddiv302 divide 0 7E-5 -> 0E+5 -dddiv303 divide 0 7E-1 -> 0E+1 -dddiv304 divide 0 7E+1 -> 0.0 -dddiv305 divide 0 7E+5 -> 0.00000 -dddiv306 divide 0 7E+6 -> 0.000000 -dddiv307 divide 0 7E+7 -> 0E-7 -dddiv308 divide 0 70E-5 -> 0E+5 -dddiv309 divide 0 70E-1 -> 0E+1 -dddiv310 divide 0 70E+0 -> 0 -dddiv311 divide 0 70E+1 -> 0.0 -dddiv312 divide 0 70E+5 -> 0.00000 -dddiv313 divide 0 70E+6 -> 0.000000 -dddiv314 divide 0 70E+7 -> 0E-7 -dddiv315 divide 0 700E-5 -> 0E+5 -dddiv316 divide 0 700E-1 -> 0E+1 -dddiv317 divide 0 700E+0 -> 0 -dddiv318 divide 0 700E+1 -> 0.0 -dddiv319 divide 0 700E+5 -> 0.00000 -dddiv320 divide 0 700E+6 -> 0.000000 -dddiv321 divide 0 700E+7 -> 0E-7 -dddiv322 divide 0 700E+77 -> 0E-77 - -dddiv331 divide 0E-3 7E-5 -> 0E+2 -dddiv332 divide 0E-3 7E-1 -> 0.00 -dddiv333 divide 0E-3 7E+1 -> 0.0000 -dddiv334 divide 0E-3 7E+5 -> 0E-8 -dddiv335 divide 0E-1 7E-5 -> 0E+4 -dddiv336 divide 0E-1 7E-1 -> 0 -dddiv337 divide 0E-1 7E+1 -> 0.00 -dddiv338 divide 0E-1 7E+5 -> 0.000000 -dddiv339 divide 0E+1 7E-5 -> 0E+6 -dddiv340 divide 0E+1 7E-1 -> 0E+2 -dddiv341 divide 0E+1 7E+1 -> 0 -dddiv342 divide 0E+1 7E+5 -> 0.0000 -dddiv343 divide 0E+3 7E-5 -> 0E+8 -dddiv344 divide 0E+3 7E-1 -> 0E+4 -dddiv345 divide 0E+3 7E+1 -> 0E+2 -dddiv346 divide 0E+3 7E+5 -> 0.00 - --- These were 'input rounding' -dddiv441 divide 12345678000 1 -> 12345678000 -dddiv442 divide 1 12345678000 -> 8.100000664200054E-11 Inexact Rounded -dddiv443 divide 1234567800 1 -> 1234567800 -dddiv444 divide 1 1234567800 -> 8.100000664200054E-10 Inexact Rounded -dddiv445 divide 1234567890 1 -> 1234567890 -dddiv446 divide 1 1234567890 -> 8.100000073710001E-10 Inexact Rounded -dddiv447 divide 1234567891 1 -> 1234567891 -dddiv448 divide 1 1234567891 -> 8.100000067149001E-10 Inexact Rounded -dddiv449 divide 12345678901 1 -> 12345678901 -dddiv450 divide 1 12345678901 -> 8.100000073053901E-11 Inexact Rounded -dddiv451 divide 1234567896 1 -> 1234567896 -dddiv452 divide 1 1234567896 -> 8.100000034344000E-10 Inexact Rounded - --- high-lows -dddiv453 divide 1e+1 1 -> 1E+1 -dddiv454 divide 1e+1 1.0 -> 1E+1 -dddiv455 divide 1e+1 1.00 -> 1E+1 -dddiv456 divide 1e+2 2 -> 5E+1 -dddiv457 divide 1e+2 2.0 -> 5E+1 -dddiv458 divide 1e+2 2.00 -> 5E+1 - --- some from IEEE discussions -dddiv460 divide 3e0 2e0 -> 1.5 -dddiv461 divide 30e-1 2e0 -> 1.5 -dddiv462 divide 300e-2 2e0 -> 1.50 -dddiv464 divide 3000e-3 2e0 -> 1.500 -dddiv465 divide 3e0 20e-1 -> 1.5 -dddiv466 divide 30e-1 20e-1 -> 1.5 -dddiv467 divide 300e-2 20e-1 -> 1.5 -dddiv468 divide 3000e-3 20e-1 -> 1.50 -dddiv469 divide 3e0 200e-2 -> 1.5 -dddiv470 divide 30e-1 200e-2 -> 1.5 -dddiv471 divide 300e-2 200e-2 -> 1.5 -dddiv472 divide 3000e-3 200e-2 -> 1.5 -dddiv473 divide 3e0 2000e-3 -> 1.5 -dddiv474 divide 30e-1 2000e-3 -> 1.5 -dddiv475 divide 300e-2 2000e-3 -> 1.5 -dddiv476 divide 3000e-3 2000e-3 -> 1.5 - --- some reciprocals -dddiv480 divide 1 1.0E+33 -> 1E-33 -dddiv481 divide 1 10E+33 -> 1E-34 -dddiv482 divide 1 1.0E-33 -> 1E+33 -dddiv483 divide 1 10E-33 -> 1E+32 - --- RMS discussion table -dddiv484 divide 0e5 1e3 -> 0E+2 -dddiv485 divide 0e5 2e3 -> 0E+2 -dddiv486 divide 0e5 10e2 -> 0E+3 -dddiv487 divide 0e5 20e2 -> 0E+3 -dddiv488 divide 0e5 100e1 -> 0E+4 -dddiv489 divide 0e5 200e1 -> 0E+4 - -dddiv491 divide 1e5 1e3 -> 1E+2 -dddiv492 divide 1e5 2e3 -> 5E+1 -dddiv493 divide 1e5 10e2 -> 1E+2 -dddiv494 divide 1e5 20e2 -> 5E+1 -dddiv495 divide 1e5 100e1 -> 1E+2 -dddiv496 divide 1e5 200e1 -> 5E+1 - --- tryzeros cases -rounding: half_up -dddiv497 divide 0E+380 1000E-13 -> 0E+369 Clamped -dddiv498 divide 0E-390 1000E+13 -> 0E-398 Clamped - -rounding: half_up - --- focus on trailing zeros issues -dddiv500 divide 1 9.9 -> 0.1010101010101010 Inexact Rounded -dddiv501 divide 1 9.09 -> 0.1100110011001100 Inexact Rounded -dddiv502 divide 1 9.009 -> 0.1110001110001110 Inexact Rounded - -dddiv511 divide 1 2 -> 0.5 -dddiv512 divide 1.0 2 -> 0.5 -dddiv513 divide 1.00 2 -> 0.50 -dddiv514 divide 1.000 2 -> 0.500 -dddiv515 divide 1.0000 2 -> 0.5000 -dddiv516 divide 1.00000 2 -> 0.50000 -dddiv517 divide 1.000000 2 -> 0.500000 -dddiv518 divide 1.0000000 2 -> 0.5000000 -dddiv519 divide 1.00 2.00 -> 0.5 - -dddiv521 divide 2 1 -> 2 -dddiv522 divide 2 1.0 -> 2 -dddiv523 divide 2 1.00 -> 2 -dddiv524 divide 2 1.000 -> 2 -dddiv525 divide 2 1.0000 -> 2 -dddiv526 divide 2 1.00000 -> 2 -dddiv527 divide 2 1.000000 -> 2 -dddiv528 divide 2 1.0000000 -> 2 -dddiv529 divide 2.00 1.00 -> 2 - -dddiv530 divide 2.40 2 -> 1.20 -dddiv531 divide 2.40 4 -> 0.60 -dddiv532 divide 2.40 10 -> 0.24 -dddiv533 divide 2.40 2.0 -> 1.2 -dddiv534 divide 2.40 4.0 -> 0.6 -dddiv535 divide 2.40 10.0 -> 0.24 -dddiv536 divide 2.40 2.00 -> 1.2 -dddiv537 divide 2.40 4.00 -> 0.6 -dddiv538 divide 2.40 10.00 -> 0.24 -dddiv539 divide 0.9 0.1 -> 9 -dddiv540 divide 0.9 0.01 -> 9E+1 -dddiv541 divide 0.9 0.001 -> 9E+2 -dddiv542 divide 5 2 -> 2.5 -dddiv543 divide 5 2.0 -> 2.5 -dddiv544 divide 5 2.00 -> 2.5 -dddiv545 divide 5 20 -> 0.25 -dddiv546 divide 5 20.0 -> 0.25 -dddiv547 divide 2.400 2 -> 1.200 -dddiv548 divide 2.400 2.0 -> 1.20 -dddiv549 divide 2.400 2.400 -> 1 - -dddiv550 divide 240 1 -> 240 -dddiv551 divide 240 10 -> 24 -dddiv552 divide 240 100 -> 2.4 -dddiv553 divide 240 1000 -> 0.24 -dddiv554 divide 2400 1 -> 2400 -dddiv555 divide 2400 10 -> 240 -dddiv556 divide 2400 100 -> 24 -dddiv557 divide 2400 1000 -> 2.4 - --- +ve exponent -dddiv600 divide 2.4E+9 2 -> 1.2E+9 -dddiv601 divide 2.40E+9 2 -> 1.20E+9 -dddiv602 divide 2.400E+9 2 -> 1.200E+9 -dddiv603 divide 2.4000E+9 2 -> 1.2000E+9 -dddiv604 divide 24E+8 2 -> 1.2E+9 -dddiv605 divide 240E+7 2 -> 1.20E+9 -dddiv606 divide 2400E+6 2 -> 1.200E+9 -dddiv607 divide 24000E+5 2 -> 1.2000E+9 - --- more zeros, etc. -dddiv731 divide 5.00 1E-3 -> 5.00E+3 -dddiv732 divide 00.00 0.000 -> NaN Division_undefined -dddiv733 divide 00.00 0E-3 -> NaN Division_undefined -dddiv734 divide 0 -0 -> NaN Division_undefined -dddiv735 divide -0 0 -> NaN Division_undefined -dddiv736 divide -0 -0 -> NaN Division_undefined - -dddiv741 divide 0 -1 -> -0 -dddiv742 divide -0 -1 -> 0 -dddiv743 divide 0 1 -> 0 -dddiv744 divide -0 1 -> -0 -dddiv745 divide -1 0 -> -Infinity Division_by_zero -dddiv746 divide -1 -0 -> Infinity Division_by_zero -dddiv747 divide 1 0 -> Infinity Division_by_zero -dddiv748 divide 1 -0 -> -Infinity Division_by_zero - -dddiv751 divide 0.0 -1 -> -0.0 -dddiv752 divide -0.0 -1 -> 0.0 -dddiv753 divide 0.0 1 -> 0.0 -dddiv754 divide -0.0 1 -> -0.0 -dddiv755 divide -1.0 0 -> -Infinity Division_by_zero -dddiv756 divide -1.0 -0 -> Infinity Division_by_zero -dddiv757 divide 1.0 0 -> Infinity Division_by_zero -dddiv758 divide 1.0 -0 -> -Infinity Division_by_zero - -dddiv761 divide 0 -1.0 -> -0E+1 -dddiv762 divide -0 -1.0 -> 0E+1 -dddiv763 divide 0 1.0 -> 0E+1 -dddiv764 divide -0 1.0 -> -0E+1 -dddiv765 divide -1 0.0 -> -Infinity Division_by_zero -dddiv766 divide -1 -0.0 -> Infinity Division_by_zero -dddiv767 divide 1 0.0 -> Infinity Division_by_zero -dddiv768 divide 1 -0.0 -> -Infinity Division_by_zero - -dddiv771 divide 0.0 -1.0 -> -0 -dddiv772 divide -0.0 -1.0 -> 0 -dddiv773 divide 0.0 1.0 -> 0 -dddiv774 divide -0.0 1.0 -> -0 -dddiv775 divide -1.0 0.0 -> -Infinity Division_by_zero -dddiv776 divide -1.0 -0.0 -> Infinity Division_by_zero -dddiv777 divide 1.0 0.0 -> Infinity Division_by_zero -dddiv778 divide 1.0 -0.0 -> -Infinity Division_by_zero - --- Specials -dddiv780 divide Inf -Inf -> NaN Invalid_operation -dddiv781 divide Inf -1000 -> -Infinity -dddiv782 divide Inf -1 -> -Infinity -dddiv783 divide Inf -0 -> -Infinity -dddiv784 divide Inf 0 -> Infinity -dddiv785 divide Inf 1 -> Infinity -dddiv786 divide Inf 1000 -> Infinity -dddiv787 divide Inf Inf -> NaN Invalid_operation -dddiv788 divide -1000 Inf -> -0E-398 Clamped -dddiv789 divide -Inf Inf -> NaN Invalid_operation -dddiv790 divide -1 Inf -> -0E-398 Clamped -dddiv791 divide -0 Inf -> -0E-398 Clamped -dddiv792 divide 0 Inf -> 0E-398 Clamped -dddiv793 divide 1 Inf -> 0E-398 Clamped -dddiv794 divide 1000 Inf -> 0E-398 Clamped -dddiv795 divide Inf Inf -> NaN Invalid_operation - -dddiv800 divide -Inf -Inf -> NaN Invalid_operation -dddiv801 divide -Inf -1000 -> Infinity -dddiv802 divide -Inf -1 -> Infinity -dddiv803 divide -Inf -0 -> Infinity -dddiv804 divide -Inf 0 -> -Infinity -dddiv805 divide -Inf 1 -> -Infinity -dddiv806 divide -Inf 1000 -> -Infinity -dddiv807 divide -Inf Inf -> NaN Invalid_operation -dddiv808 divide -1000 Inf -> -0E-398 Clamped -dddiv809 divide -Inf -Inf -> NaN Invalid_operation -dddiv810 divide -1 -Inf -> 0E-398 Clamped -dddiv811 divide -0 -Inf -> 0E-398 Clamped -dddiv812 divide 0 -Inf -> -0E-398 Clamped -dddiv813 divide 1 -Inf -> -0E-398 Clamped -dddiv814 divide 1000 -Inf -> -0E-398 Clamped -dddiv815 divide Inf -Inf -> NaN Invalid_operation - -dddiv821 divide NaN -Inf -> NaN -dddiv822 divide NaN -1000 -> NaN -dddiv823 divide NaN -1 -> NaN -dddiv824 divide NaN -0 -> NaN -dddiv825 divide NaN 0 -> NaN -dddiv826 divide NaN 1 -> NaN -dddiv827 divide NaN 1000 -> NaN -dddiv828 divide NaN Inf -> NaN -dddiv829 divide NaN NaN -> NaN -dddiv830 divide -Inf NaN -> NaN -dddiv831 divide -1000 NaN -> NaN -dddiv832 divide -1 NaN -> NaN -dddiv833 divide -0 NaN -> NaN -dddiv834 divide 0 NaN -> NaN -dddiv835 divide 1 NaN -> NaN -dddiv836 divide 1000 NaN -> NaN -dddiv837 divide Inf NaN -> NaN - -dddiv841 divide sNaN -Inf -> NaN Invalid_operation -dddiv842 divide sNaN -1000 -> NaN Invalid_operation -dddiv843 divide sNaN -1 -> NaN Invalid_operation -dddiv844 divide sNaN -0 -> NaN Invalid_operation -dddiv845 divide sNaN 0 -> NaN Invalid_operation -dddiv846 divide sNaN 1 -> NaN Invalid_operation -dddiv847 divide sNaN 1000 -> NaN Invalid_operation -dddiv848 divide sNaN NaN -> NaN Invalid_operation -dddiv849 divide sNaN sNaN -> NaN Invalid_operation -dddiv850 divide NaN sNaN -> NaN Invalid_operation -dddiv851 divide -Inf sNaN -> NaN Invalid_operation -dddiv852 divide -1000 sNaN -> NaN Invalid_operation -dddiv853 divide -1 sNaN -> NaN Invalid_operation -dddiv854 divide -0 sNaN -> NaN Invalid_operation -dddiv855 divide 0 sNaN -> NaN Invalid_operation -dddiv856 divide 1 sNaN -> NaN Invalid_operation -dddiv857 divide 1000 sNaN -> NaN Invalid_operation -dddiv858 divide Inf sNaN -> NaN Invalid_operation -dddiv859 divide NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dddiv861 divide NaN9 -Inf -> NaN9 -dddiv862 divide NaN8 1000 -> NaN8 -dddiv863 divide NaN7 Inf -> NaN7 -dddiv864 divide NaN6 NaN5 -> NaN6 -dddiv865 divide -Inf NaN4 -> NaN4 -dddiv866 divide -1000 NaN3 -> NaN3 -dddiv867 divide Inf NaN2 -> NaN2 - -dddiv871 divide sNaN99 -Inf -> NaN99 Invalid_operation -dddiv872 divide sNaN98 -1 -> NaN98 Invalid_operation -dddiv873 divide sNaN97 NaN -> NaN97 Invalid_operation -dddiv874 divide sNaN96 sNaN94 -> NaN96 Invalid_operation -dddiv875 divide NaN95 sNaN93 -> NaN93 Invalid_operation -dddiv876 divide -Inf sNaN92 -> NaN92 Invalid_operation -dddiv877 divide 0 sNaN91 -> NaN91 Invalid_operation -dddiv878 divide Inf sNaN90 -> NaN90 Invalid_operation -dddiv879 divide NaN sNaN89 -> NaN89 Invalid_operation - -dddiv881 divide -NaN9 -Inf -> -NaN9 -dddiv882 divide -NaN8 1000 -> -NaN8 -dddiv883 divide -NaN7 Inf -> -NaN7 -dddiv884 divide -NaN6 -NaN5 -> -NaN6 -dddiv885 divide -Inf -NaN4 -> -NaN4 -dddiv886 divide -1000 -NaN3 -> -NaN3 -dddiv887 divide Inf -NaN2 -> -NaN2 - -dddiv891 divide -sNaN99 -Inf -> -NaN99 Invalid_operation -dddiv892 divide -sNaN98 -1 -> -NaN98 Invalid_operation -dddiv893 divide -sNaN97 NaN -> -NaN97 Invalid_operation -dddiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation -dddiv895 divide -NaN95 -sNaN93 -> -NaN93 Invalid_operation -dddiv896 divide -Inf -sNaN92 -> -NaN92 Invalid_operation -dddiv897 divide 0 -sNaN91 -> -NaN91 Invalid_operation -dddiv898 divide Inf -sNaN90 -> -NaN90 Invalid_operation -dddiv899 divide -NaN -sNaN89 -> -NaN89 Invalid_operation - --- Various flavours of divide by 0 -dddiv901 divide 0 0 -> NaN Division_undefined -dddiv902 divide 0.0E5 0 -> NaN Division_undefined -dddiv903 divide 0.000 0 -> NaN Division_undefined -dddiv904 divide 0.0001 0 -> Infinity Division_by_zero -dddiv905 divide 0.01 0 -> Infinity Division_by_zero -dddiv906 divide 0.1 0 -> Infinity Division_by_zero -dddiv907 divide 1 0 -> Infinity Division_by_zero -dddiv908 divide 1 0.0 -> Infinity Division_by_zero -dddiv909 divide 10 0.0 -> Infinity Division_by_zero -dddiv910 divide 1E+100 0.0 -> Infinity Division_by_zero -dddiv911 divide 1E+100 0 -> Infinity Division_by_zero - -dddiv921 divide -0.0001 0 -> -Infinity Division_by_zero -dddiv922 divide -0.01 0 -> -Infinity Division_by_zero -dddiv923 divide -0.1 0 -> -Infinity Division_by_zero -dddiv924 divide -1 0 -> -Infinity Division_by_zero -dddiv925 divide -1 0.0 -> -Infinity Division_by_zero -dddiv926 divide -10 0.0 -> -Infinity Division_by_zero -dddiv927 divide -1E+100 0.0 -> -Infinity Division_by_zero -dddiv928 divide -1E+100 0 -> -Infinity Division_by_zero - -dddiv931 divide 0.0001 -0 -> -Infinity Division_by_zero -dddiv932 divide 0.01 -0 -> -Infinity Division_by_zero -dddiv933 divide 0.1 -0 -> -Infinity Division_by_zero -dddiv934 divide 1 -0 -> -Infinity Division_by_zero -dddiv935 divide 1 -0.0 -> -Infinity Division_by_zero -dddiv936 divide 10 -0.0 -> -Infinity Division_by_zero -dddiv937 divide 1E+100 -0.0 -> -Infinity Division_by_zero -dddiv938 divide 1E+100 -0 -> -Infinity Division_by_zero - -dddiv941 divide -0.0001 -0 -> Infinity Division_by_zero -dddiv942 divide -0.01 -0 -> Infinity Division_by_zero -dddiv943 divide -0.1 -0 -> Infinity Division_by_zero -dddiv944 divide -1 -0 -> Infinity Division_by_zero -dddiv945 divide -1 -0.0 -> Infinity Division_by_zero -dddiv946 divide -10 -0.0 -> Infinity Division_by_zero -dddiv947 divide -1E+100 -0.0 -> Infinity Division_by_zero -dddiv948 divide -1E+100 -0 -> Infinity Division_by_zero - --- Examples from SQL proposal (Krishna Kulkarni) -dddiv1021 divide 1E0 1E0 -> 1 -dddiv1022 divide 1E0 2E0 -> 0.5 -dddiv1023 divide 1E0 3E0 -> 0.3333333333333333 Inexact Rounded -dddiv1024 divide 100E-2 1000E-3 -> 1 -dddiv1025 divide 24E-1 2E0 -> 1.2 -dddiv1026 divide 2400E-3 2E0 -> 1.200 -dddiv1027 divide 5E0 2E0 -> 2.5 -dddiv1028 divide 5E0 20E-1 -> 2.5 -dddiv1029 divide 5E0 2000E-3 -> 2.5 -dddiv1030 divide 5E0 2E-1 -> 25 -dddiv1031 divide 5E0 20E-2 -> 25 -dddiv1032 divide 480E-2 3E0 -> 1.60 -dddiv1033 divide 47E-1 2E0 -> 2.35 - --- ECMAScript bad examples -rounding: half_down -dddiv1040 divide 5 9 -> 0.5555555555555556 Inexact Rounded -rounding: half_even -dddiv1041 divide 6 11 -> 0.5454545454545455 Inexact Rounded - --- overflow and underflow tests .. note subnormal results --- signs -dddiv1051 divide 1e+277 1e-311 -> Infinity Overflow Inexact Rounded -dddiv1052 divide 1e+277 -1e-311 -> -Infinity Overflow Inexact Rounded -dddiv1053 divide -1e+277 1e-311 -> -Infinity Overflow Inexact Rounded -dddiv1054 divide -1e+277 -1e-311 -> Infinity Overflow Inexact Rounded -dddiv1055 divide 1e-277 1e+311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1056 divide 1e-277 -1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1057 divide -1e-277 1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1058 divide -1e-277 -1e+311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -dddiv1060 divide 1e-291 1e+101 -> 1E-392 Subnormal -dddiv1061 divide 1e-291 1e+102 -> 1E-393 Subnormal -dddiv1062 divide 1e-291 1e+103 -> 1E-394 Subnormal -dddiv1063 divide 1e-291 1e+104 -> 1E-395 Subnormal -dddiv1064 divide 1e-291 1e+105 -> 1E-396 Subnormal -dddiv1065 divide 1e-291 1e+106 -> 1E-397 Subnormal -dddiv1066 divide 1e-291 1e+107 -> 1E-398 Subnormal -dddiv1067 divide 1e-291 1e+108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1068 divide 1e-291 1e+109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1069 divide 1e-291 1e+110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped --- [no equivalent of 'subnormal' for overflow] -dddiv1070 divide 1e+60 1e-321 -> 1.000000000000E+381 Clamped -dddiv1071 divide 1e+60 1e-322 -> 1.0000000000000E+382 Clamped -dddiv1072 divide 1e+60 1e-323 -> 1.00000000000000E+383 Clamped -dddiv1073 divide 1e+60 1e-324 -> 1.000000000000000E+384 Clamped -dddiv1074 divide 1e+60 1e-325 -> Infinity Overflow Inexact Rounded -dddiv1075 divide 1e+60 1e-326 -> Infinity Overflow Inexact Rounded -dddiv1076 divide 1e+60 1e-327 -> Infinity Overflow Inexact Rounded -dddiv1077 divide 1e+60 1e-328 -> Infinity Overflow Inexact Rounded -dddiv1078 divide 1e+60 1e-329 -> Infinity Overflow Inexact Rounded -dddiv1079 divide 1e+60 1e-330 -> Infinity Overflow Inexact Rounded - -dddiv1101 divide 1.0000E-394 1 -> 1.0000E-394 Subnormal -dddiv1102 divide 1.000E-394 1e+1 -> 1.000E-395 Subnormal -dddiv1103 divide 1.00E-394 1e+2 -> 1.00E-396 Subnormal -dddiv1104 divide 1.0E-394 1e+3 -> 1.0E-397 Subnormal -dddiv1105 divide 1.0E-394 1e+4 -> 1E-398 Subnormal Rounded -dddiv1106 divide 1.3E-394 1e+4 -> 1E-398 Underflow Subnormal Inexact Rounded -dddiv1107 divide 1.5E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded -dddiv1108 divide 1.7E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded -dddiv1109 divide 2.3E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded -dddiv1110 divide 2.5E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded -dddiv1111 divide 2.7E-394 1e+4 -> 3E-398 Underflow Subnormal Inexact Rounded -dddiv1112 divide 1.49E-394 1e+4 -> 1E-398 Underflow Subnormal Inexact Rounded -dddiv1113 divide 1.50E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded -dddiv1114 divide 1.51E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded -dddiv1115 divide 2.49E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded -dddiv1116 divide 2.50E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded -dddiv1117 divide 2.51E-394 1e+4 -> 3E-398 Underflow Subnormal Inexact Rounded - -dddiv1118 divide 1E-394 1e+4 -> 1E-398 Subnormal -dddiv1119 divide 3E-394 1e+5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1120 divide 5E-394 1e+5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1121 divide 7E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded -dddiv1122 divide 9E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded -dddiv1123 divide 9.9E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded - -dddiv1124 divide 1E-394 -1e+4 -> -1E-398 Subnormal -dddiv1125 divide 3E-394 -1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1126 divide -5E-394 1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1127 divide 7E-394 -1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded -dddiv1128 divide -9E-394 1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded -dddiv1129 divide 9.9E-394 -1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded -dddiv1130 divide 3.0E-394 -1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped - -dddiv1131 divide 1.0E-199 1e+200 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -dddiv1132 divide 1.0E-199 1e+199 -> 1E-398 Subnormal Rounded -dddiv1133 divide 1.0E-199 1e+198 -> 1.0E-397 Subnormal -dddiv1134 divide 2.0E-199 2e+198 -> 1.0E-397 Subnormal -dddiv1135 divide 4.0E-199 4e+198 -> 1.0E-397 Subnormal -dddiv1136 divide 10.0E-199 10e+198 -> 1.0E-397 Subnormal -dddiv1137 divide 30.0E-199 30e+198 -> 1.0E-397 Subnormal - --- randoms -dddiv2010 divide -3.303226714900711E-35 8.796578842713183E+73 -> -3.755126594058783E-109 Inexact Rounded -dddiv2011 divide 933153327821073.6 68782181090246.25 -> 13.56678885475763 Inexact Rounded -dddiv2012 divide 5.04752436057906E-72 -8.179481771238642E+64 -> -6.170958627632835E-137 Inexact Rounded -dddiv2013 divide -3707613309582318 3394911196503.048 -> -1092.109070010836 Inexact Rounded -dddiv2014 divide 99689.0555190461 -4.735208553891464 -> -21052.72753765411 Inexact Rounded -dddiv2015 divide -1447915775613329 269750797.8184875 -> -5367605.164925653 Inexact Rounded -dddiv2016 divide -9.394881304225258E-19 -830585.0252671636 -> 1.131116143251358E-24 Inexact Rounded -dddiv2017 divide -1.056283432738934 88.58754555124013 -> -0.01192361100159352 Inexact Rounded -dddiv2018 divide 5763220933343.081 689089567025052.1 -> 0.008363529516524456 Inexact Rounded -dddiv2019 divide 873819.122103216 9.740612494523300E-49 -> 8.970884763093948E+53 Inexact Rounded -dddiv2020 divide 8022914.838533576 6178.566801742713 -> 1298.507420243583 Inexact Rounded -dddiv2021 divide 203982.7605650363 -2158.283639053435 -> -94.51156320422168 Inexact Rounded -dddiv2022 divide 803.6310547013030 7101143795399.238 -> 1.131692411611166E-10 Inexact Rounded -dddiv2023 divide 9.251697842123399E-82 -1.342350220606119E-7 -> -6.892163982321936E-75 Inexact Rounded -dddiv2024 divide -1.980600645637992E-53 -5.474262753214457E+77 -> 3.618022617703168E-131 Inexact Rounded -dddiv2025 divide -210.0322996351690 -8.580951835872843E+80 -> 2.447657365434971E-79 Inexact Rounded -dddiv2026 divide -1.821980314020370E+85 -3.018915267138165 -> 6.035215144503042E+84 Inexact Rounded -dddiv2027 divide -772264503601.1047 5.158258271408988E-86 -> -1.497141986630614E+97 Inexact Rounded -dddiv2028 divide -767.0532415847106 2.700027228028939E-59 -> -2.840909282772941E+61 Inexact Rounded -dddiv2029 divide 496724.8548250093 7.32700588163100E+66 -> 6.779370220929013E-62 Inexact Rounded -dddiv2030 divide -304232651447703.9 -108.9730808657440 -> 2791814721862.565 Inexact Rounded -dddiv2031 divide -7.233817192699405E+42 -5711302004.149411 -> 1.266579352211430E+33 Inexact Rounded -dddiv2032 divide -9.999221444912745E+96 4010569406446197 -> -2.493217404202250E+81 Inexact Rounded -dddiv2033 divide -1837272.061937622 8.356322838066762 -> -219866.0939196882 Inexact Rounded -dddiv2034 divide 2168.517555606529 209.1910258615061 -> 10.36620737756784 Inexact Rounded -dddiv2035 divide -1.884389790576371E+88 2.95181953870583E+20 -> -6.383824505079828E+67 Inexact Rounded -dddiv2036 divide 732263.6037438196 961222.3634446889 -> 0.7618045850698269 Inexact Rounded -dddiv2037 divide -813461419.0348336 5.376293753809143E+84 -> -1.513052404285927E-76 Inexact Rounded -dddiv2038 divide -45562133508108.50 -9.776843494690107E+51 -> 4.660208945029519E-39 Inexact Rounded -dddiv2039 divide -6.489393172441016E+80 -9101965.097852113 -> 7.129661674897421E+73 Inexact Rounded -dddiv2040 divide 3.694576237117349E+93 6683512.012622003 -> 5.527896456443912E+86 Inexact Rounded -dddiv2041 divide -2.252877726403272E+19 -7451913256.181367 -> 3023220546.125531 Inexact Rounded -dddiv2042 divide 518303.1989111842 50.01587020474133 -> 10362.77479107123 Inexact Rounded -dddiv2043 divide 2.902087881880103E+24 33.32400992305702 -> 8.708699488989578E+22 Inexact Rounded -dddiv2044 divide 549619.4559510557 1660824845196338 -> 3.309316196351104E-10 Inexact Rounded -dddiv2045 divide -6775670774684043 8292152023.077262 -> -817118.4941891062 Inexact Rounded -dddiv2046 divide -77.50923921524079 -5.636882655425815E+74 -> 1.375037302588405E-73 Inexact Rounded -dddiv2047 divide -2.984889459605149E-10 -88106156784122.99 -> 3.387833005721384E-24 Inexact Rounded -dddiv2048 divide 0.949517293997085 44767115.96450998 -> 2.121015110175589E-8 Inexact Rounded -dddiv2049 divide -2760937211.084521 -1087015876975408 -> 0.000002539923537057024 Inexact Rounded -dddiv2050 divide 28438351.85030536 -4.209397904088624E-47 -> -6.755919135770688E+53 Inexact Rounded -dddiv2051 divide -85562731.6820956 -7.166045442530185E+45 -> 1.194002080621542E-38 Inexact Rounded -dddiv2052 divide 2533802852165.25 7154.119606235955 -> 354173957.3317501 Inexact Rounded -dddiv2053 divide -8858831346851.474 97.59734208801716 -> -90769186509.83577 Inexact Rounded -dddiv2054 divide 176783629801387.5 840073263.3109817 -> 210438.3480848206 Inexact Rounded -dddiv2055 divide -493506471796175.6 79733894790822.03 -> -6.189418854940746 Inexact Rounded -dddiv2056 divide 790.1682542103445 829.9449370367435 -> 0.9520731062371214 Inexact Rounded -dddiv2057 divide -8920459838.583164 -4767.889187899214 -> 1870945.294035581 Inexact Rounded -dddiv2058 divide 53536687164422.1 53137.5007032689 -> 1007512330.385698 Inexact Rounded -dddiv2059 divide 4.051532311146561E-74 -2.343089768972261E+94 -> -1.729140882606332E-168 Inexact Rounded -dddiv2060 divide -14847758778636.88 3.062543516383807E-43 -> -4.848178874587497E+55 Inexact Rounded - --- Division probably has pre-rounding, so need to test rounding --- explicitly rather than assume included through other tests; --- tests include simple rounding and also the tricky cases of sticky --- bits following two zeros --- --- 1/99999 gives 0.0000100001000010000100001000010000100001 --- 1234567890123456 --- --- 1/999999 gives 0.000001000001000001000001000001000001000001 --- 1234567890123456 - -rounding: ceiling -dddiv3001 divide 1 3 -> 0.3333333333333334 Inexact Rounded -dddiv3002 divide 2 3 -> 0.6666666666666667 Inexact Rounded -dddiv3003 divide 1 99999 -> 0.00001000010000100002 Inexact Rounded -dddiv3004 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded - -rounding: floor -dddiv3011 divide 1 3 -> 0.3333333333333333 Inexact Rounded -dddiv3012 divide 2 3 -> 0.6666666666666666 Inexact Rounded -dddiv3013 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded -dddiv3014 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded - -rounding: up -dddiv3021 divide 1 3 -> 0.3333333333333334 Inexact Rounded -dddiv3022 divide 2 3 -> 0.6666666666666667 Inexact Rounded -dddiv3023 divide 1 99999 -> 0.00001000010000100002 Inexact Rounded -dddiv3024 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded - -rounding: down -dddiv3031 divide 1 3 -> 0.3333333333333333 Inexact Rounded -dddiv3032 divide 2 3 -> 0.6666666666666666 Inexact Rounded -dddiv3033 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded -dddiv3034 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded - -rounding: half_up -dddiv3041 divide 1 3 -> 0.3333333333333333 Inexact Rounded -dddiv3042 divide 2 3 -> 0.6666666666666667 Inexact Rounded -dddiv3043 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded -dddiv3044 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded - -rounding: half_down -dddiv3051 divide 1 3 -> 0.3333333333333333 Inexact Rounded -dddiv3052 divide 2 3 -> 0.6666666666666667 Inexact Rounded -dddiv3053 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded -dddiv3054 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded - -rounding: half_even -dddiv3061 divide 1 3 -> 0.3333333333333333 Inexact Rounded -dddiv3062 divide 2 3 -> 0.6666666666666667 Inexact Rounded -dddiv3063 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded -dddiv3064 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded - -rounding: 05up -dddiv3071 divide 1 3 -> 0.3333333333333333 Inexact Rounded -dddiv3072 divide 2 3 -> 0.6666666666666666 Inexact Rounded -dddiv3073 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded -dddiv3074 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded - --- random divide tests with result near 1 -rounding: half_even -dddiv4001 divide 3195385192916917 3195385192946695 -> 0.9999999999906809 Inexact Rounded -dddiv4002 divide 1393723067526993 1393723067519475 -> 1.000000000005394 Inexact Rounded -dddiv4003 divide 759985543702302 759985543674015 -> 1.000000000037220 Inexact Rounded -dddiv4004 divide 9579158456027302 9579158456036864 -> 0.9999999999990018 Inexact Rounded -dddiv4005 divide 7079398299143569 7079398299156904 -> 0.9999999999981164 Inexact Rounded -dddiv4006 divide 6636169255366598 6636169255336386 -> 1.000000000004553 Inexact Rounded -dddiv4007 divide 6964813971340090 6964813971321554 -> 1.000000000002661 Inexact Rounded -dddiv4008 divide 4182275225480784 4182275225454009 -> 1.000000000006402 Inexact Rounded -dddiv4009 divide 9228325124938029 9228325124918730 -> 1.000000000002091 Inexact Rounded -dddiv4010 divide 3428346338630192 3428346338609843 -> 1.000000000005936 Inexact Rounded -dddiv4011 divide 2143511550722893 2143511550751754 -> 0.9999999999865356 Inexact Rounded -dddiv4012 divide 1672732924396785 1672732924401811 -> 0.9999999999969953 Inexact Rounded -dddiv4013 divide 4190714611948216 4190714611948664 -> 0.9999999999998931 Inexact Rounded -dddiv4014 divide 3942254800848877 3942254800814556 -> 1.000000000008706 Inexact Rounded -dddiv4015 divide 2854459826952334 2854459826960762 -> 0.9999999999970474 Inexact Rounded -dddiv4016 divide 2853258953664731 2853258953684471 -> 0.9999999999930816 Inexact Rounded -dddiv4017 divide 9453512638125978 9453512638146425 -> 0.9999999999978371 Inexact Rounded -dddiv4018 divide 339476633940369 339476633912887 -> 1.000000000080954 Inexact Rounded -dddiv4019 divide 4542181492688467 4542181492697735 -> 0.9999999999979596 Inexact Rounded -dddiv4020 divide 7312600192399197 7312600192395424 -> 1.000000000000516 Inexact Rounded -dddiv4021 divide 1811674985570111 1811674985603935 -> 0.9999999999813300 Inexact Rounded -dddiv4022 divide 1706462639003481 1706462639017740 -> 0.9999999999916441 Inexact Rounded -dddiv4023 divide 6697052654940368 6697052654934110 -> 1.000000000000934 Inexact Rounded -dddiv4024 divide 5015283664277539 5015283664310719 -> 0.9999999999933842 Inexact Rounded -dddiv4025 divide 2359501561537464 2359501561502464 -> 1.000000000014834 Inexact Rounded -dddiv4026 divide 2669850227909157 2669850227901548 -> 1.000000000002850 Inexact Rounded -dddiv4027 divide 9329725546974648 9329725547002445 -> 0.9999999999970206 Inexact Rounded -dddiv4028 divide 3228562867071248 3228562867106206 -> 0.9999999999891723 Inexact Rounded -dddiv4029 divide 4862226644921175 4862226644909380 -> 1.000000000002426 Inexact Rounded -dddiv4030 divide 1022267997054529 1022267997071329 -> 0.9999999999835660 Inexact Rounded -dddiv4031 divide 1048777482023719 1048777482000948 -> 1.000000000021712 Inexact Rounded -dddiv4032 divide 9980113777337098 9980113777330539 -> 1.000000000000657 Inexact Rounded -dddiv4033 divide 7506839167963908 7506839167942901 -> 1.000000000002798 Inexact Rounded -dddiv4034 divide 231119751977860 231119751962453 -> 1.000000000066662 Inexact Rounded -dddiv4035 divide 4034903664762962 4034903664795526 -> 0.9999999999919294 Inexact Rounded -dddiv4036 divide 5700122152274696 5700122152251386 -> 1.000000000004089 Inexact Rounded -dddiv4037 divide 6869599590293110 6869599590293495 -> 0.9999999999999440 Inexact Rounded -dddiv4038 divide 5576281960092797 5576281960105579 -> 0.9999999999977078 Inexact Rounded -dddiv4039 divide 2304844888381318 2304844888353073 -> 1.000000000012255 Inexact Rounded -dddiv4040 divide 3265933651656452 3265933651682779 -> 0.9999999999919389 Inexact Rounded -dddiv4041 divide 5235714985079914 5235714985066131 -> 1.000000000002632 Inexact Rounded -dddiv4042 divide 5578481572827551 5578481572822945 -> 1.000000000000826 Inexact Rounded -dddiv4043 divide 4909616081396134 4909616081373076 -> 1.000000000004696 Inexact Rounded -dddiv4044 divide 636447224349537 636447224338757 -> 1.000000000016938 Inexact Rounded -dddiv4045 divide 1539373428396640 1539373428364727 -> 1.000000000020731 Inexact Rounded -dddiv4046 divide 2028786707377893 2028786707378866 -> 0.9999999999995204 Inexact Rounded -dddiv4047 divide 137643260486222 137643260487419 -> 0.9999999999913036 Inexact Rounded -dddiv4048 divide 247451519746765 247451519752267 -> 0.9999999999777653 Inexact Rounded -dddiv4049 divide 7877858475022054 7877858474999794 -> 1.000000000002826 Inexact Rounded -dddiv4050 divide 7333242694766258 7333242694744628 -> 1.000000000002950 Inexact Rounded -dddiv4051 divide 124051503698592 124051503699397 -> 0.9999999999935108 Inexact Rounded -dddiv4052 divide 8944737432385188 8944737432406860 -> 0.9999999999975771 Inexact Rounded -dddiv4053 divide 9883948923406874 9883948923424843 -> 0.9999999999981820 Inexact Rounded -dddiv4054 divide 6829178741654284 6829178741671973 -> 0.9999999999974098 Inexact Rounded -dddiv4055 divide 7342752479768122 7342752479793385 -> 0.9999999999965595 Inexact Rounded -dddiv4056 divide 8066426579008783 8066426578977563 -> 1.000000000003870 Inexact Rounded -dddiv4057 divide 8992775071383295 8992775071352712 -> 1.000000000003401 Inexact Rounded -dddiv4058 divide 5485011755545641 5485011755543611 -> 1.000000000000370 Inexact Rounded -dddiv4059 divide 5779983054353918 5779983054365300 -> 0.9999999999980308 Inexact Rounded -dddiv4060 divide 9502265102713774 9502265102735208 -> 0.9999999999977443 Inexact Rounded -dddiv4061 divide 2109558399130981 2109558399116281 -> 1.000000000006968 Inexact Rounded -dddiv4062 divide 5296182636350471 5296182636351521 -> 0.9999999999998017 Inexact Rounded -dddiv4063 divide 1440019225591883 1440019225601844 -> 0.9999999999930827 Inexact Rounded -dddiv4064 divide 8182110791881341 8182110791847174 -> 1.000000000004176 Inexact Rounded -dddiv4065 divide 489098235512060 489098235534516 -> 0.9999999999540869 Inexact Rounded -dddiv4066 divide 6475687084782038 6475687084756089 -> 1.000000000004007 Inexact Rounded -dddiv4067 divide 8094348555736948 8094348555759236 -> 0.9999999999972465 Inexact Rounded -dddiv4068 divide 1982766816291543 1982766816309463 -> 0.9999999999909621 Inexact Rounded -dddiv4069 divide 9277314300113251 9277314300084467 -> 1.000000000003103 Inexact Rounded -dddiv4070 divide 4335532959318934 4335532959293167 -> 1.000000000005943 Inexact Rounded -dddiv4071 divide 7767113032981348 7767113032968132 -> 1.000000000001702 Inexact Rounded -dddiv4072 divide 1578548053342868 1578548053370448 -> 0.9999999999825282 Inexact Rounded -dddiv4073 divide 3790420686666898 3790420686636315 -> 1.000000000008068 Inexact Rounded -dddiv4074 divide 871682421955147 871682421976441 -> 0.9999999999755714 Inexact Rounded -dddiv4075 divide 744141054479940 744141054512329 -> 0.9999999999564746 Inexact Rounded -dddiv4076 divide 8956824183670735 8956824183641741 -> 1.000000000003237 Inexact Rounded -dddiv4077 divide 8337291694485682 8337291694451193 -> 1.000000000004137 Inexact Rounded -dddiv4078 divide 4107775944683669 4107775944657097 -> 1.000000000006469 Inexact Rounded -dddiv4079 divide 8691900057964648 8691900057997555 -> 0.9999999999962141 Inexact Rounded -dddiv4080 divide 2229528520536462 2229528520502337 -> 1.000000000015306 Inexact Rounded -dddiv4081 divide 398442083774322 398442083746273 -> 1.000000000070397 Inexact Rounded -dddiv4082 divide 5319819776808759 5319819776838313 -> 0.9999999999944445 Inexact Rounded -dddiv4083 divide 7710491299066855 7710491299041858 -> 1.000000000003242 Inexact Rounded -dddiv4084 divide 9083231296087266 9083231296058160 -> 1.000000000003204 Inexact Rounded -dddiv4085 divide 3566873574904559 3566873574890328 -> 1.000000000003990 Inexact Rounded -dddiv4086 divide 596343290550525 596343290555614 -> 0.9999999999914663 Inexact Rounded -dddiv4087 divide 278227925093192 278227925068104 -> 1.000000000090171 Inexact Rounded -dddiv4088 divide 3292902958490649 3292902958519881 -> 0.9999999999911227 Inexact Rounded -dddiv4089 divide 5521871364245881 5521871364229536 -> 1.000000000002960 Inexact Rounded -dddiv4090 divide 2406505602883617 2406505602857997 -> 1.000000000010646 Inexact Rounded -dddiv4091 divide 7741146984869208 7741146984867255 -> 1.000000000000252 Inexact Rounded -dddiv4092 divide 4576041832414909 4576041832405102 -> 1.000000000002143 Inexact Rounded -dddiv4093 divide 9183756982878057 9183756982901934 -> 0.9999999999974001 Inexact Rounded -dddiv4094 divide 6215736513855159 6215736513870342 -> 0.9999999999975573 Inexact Rounded -dddiv4095 divide 248554968534533 248554968551417 -> 0.9999999999320714 Inexact Rounded -dddiv4096 divide 376314165668645 376314165659755 -> 1.000000000023624 Inexact Rounded -dddiv4097 divide 5513569249809718 5513569249808906 -> 1.000000000000147 Inexact Rounded -dddiv4098 divide 3367992242167904 3367992242156228 -> 1.000000000003467 Inexact Rounded -dddiv4099 divide 6134869538966967 6134869538985986 -> 0.9999999999968999 Inexact Rounded - --- Null tests -dddiv9998 divide 10 # -> NaN Invalid_operation -dddiv9999 divide # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddDivide.decTest -- decDouble division -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +dddiv001 divide 1 1 -> 1 +dddiv002 divide 2 1 -> 2 +dddiv003 divide 1 2 -> 0.5 +dddiv004 divide 2 2 -> 1 +dddiv005 divide 0 1 -> 0 +dddiv006 divide 0 2 -> 0 +dddiv007 divide 1 3 -> 0.3333333333333333 Inexact Rounded +dddiv008 divide 2 3 -> 0.6666666666666667 Inexact Rounded +dddiv009 divide 3 3 -> 1 + +dddiv010 divide 2.4 1 -> 2.4 +dddiv011 divide 2.4 -1 -> -2.4 +dddiv012 divide -2.4 1 -> -2.4 +dddiv013 divide -2.4 -1 -> 2.4 +dddiv014 divide 2.40 1 -> 2.40 +dddiv015 divide 2.400 1 -> 2.400 +dddiv016 divide 2.4 2 -> 1.2 +dddiv017 divide 2.400 2 -> 1.200 +dddiv018 divide 2. 2 -> 1 +dddiv019 divide 20 20 -> 1 + +dddiv020 divide 187 187 -> 1 +dddiv021 divide 5 2 -> 2.5 +dddiv022 divide 50 20 -> 2.5 +dddiv023 divide 500 200 -> 2.5 +dddiv024 divide 50.0 20.0 -> 2.5 +dddiv025 divide 5.00 2.00 -> 2.5 +dddiv026 divide 5 2.0 -> 2.5 +dddiv027 divide 5 2.000 -> 2.5 +dddiv028 divide 5 0.20 -> 25 +dddiv029 divide 5 0.200 -> 25 +dddiv030 divide 10 1 -> 10 +dddiv031 divide 100 1 -> 100 +dddiv032 divide 1000 1 -> 1000 +dddiv033 divide 1000 100 -> 10 + +dddiv035 divide 1 2 -> 0.5 +dddiv036 divide 1 4 -> 0.25 +dddiv037 divide 1 8 -> 0.125 +dddiv038 divide 1 16 -> 0.0625 +dddiv039 divide 1 32 -> 0.03125 +dddiv040 divide 1 64 -> 0.015625 +dddiv041 divide 1 -2 -> -0.5 +dddiv042 divide 1 -4 -> -0.25 +dddiv043 divide 1 -8 -> -0.125 +dddiv044 divide 1 -16 -> -0.0625 +dddiv045 divide 1 -32 -> -0.03125 +dddiv046 divide 1 -64 -> -0.015625 +dddiv047 divide -1 2 -> -0.5 +dddiv048 divide -1 4 -> -0.25 +dddiv049 divide -1 8 -> -0.125 +dddiv050 divide -1 16 -> -0.0625 +dddiv051 divide -1 32 -> -0.03125 +dddiv052 divide -1 64 -> -0.015625 +dddiv053 divide -1 -2 -> 0.5 +dddiv054 divide -1 -4 -> 0.25 +dddiv055 divide -1 -8 -> 0.125 +dddiv056 divide -1 -16 -> 0.0625 +dddiv057 divide -1 -32 -> 0.03125 +dddiv058 divide -1 -64 -> 0.015625 + +-- bcdTime +dddiv060 divide 1 7 -> 0.1428571428571429 Inexact Rounded +dddiv061 divide 1.2345678 1.9876543 -> 0.6211179680490717 Inexact Rounded + +-- 1234567890123456 +dddiv071 divide 9999999999999999 1 -> 9999999999999999 +dddiv072 divide 999999999999999 1 -> 999999999999999 +dddiv073 divide 99999999999999 1 -> 99999999999999 +dddiv074 divide 9999999999999 1 -> 9999999999999 +dddiv075 divide 999999999999 1 -> 999999999999 +dddiv076 divide 99999999999 1 -> 99999999999 +dddiv077 divide 9999999999 1 -> 9999999999 +dddiv078 divide 999999999 1 -> 999999999 +dddiv079 divide 99999999 1 -> 99999999 +dddiv080 divide 9999999 1 -> 9999999 +dddiv081 divide 999999 1 -> 999999 +dddiv082 divide 99999 1 -> 99999 +dddiv083 divide 9999 1 -> 9999 +dddiv084 divide 999 1 -> 999 +dddiv085 divide 99 1 -> 99 +dddiv086 divide 9 1 -> 9 + +dddiv090 divide 0. 1 -> 0 +dddiv091 divide .0 1 -> 0.0 +dddiv092 divide 0.00 1 -> 0.00 +dddiv093 divide 0.00E+9 1 -> 0E+7 +dddiv094 divide 0.0000E-50 1 -> 0E-54 + +dddiv095 divide 1 1E-8 -> 1E+8 +dddiv096 divide 1 1E-9 -> 1E+9 +dddiv097 divide 1 1E-10 -> 1E+10 +dddiv098 divide 1 1E-11 -> 1E+11 +dddiv099 divide 1 1E-12 -> 1E+12 + +dddiv100 divide 1 1 -> 1 +dddiv101 divide 1 2 -> 0.5 +dddiv102 divide 1 3 -> 0.3333333333333333 Inexact Rounded +dddiv103 divide 1 4 -> 0.25 +dddiv104 divide 1 5 -> 0.2 +dddiv105 divide 1 6 -> 0.1666666666666667 Inexact Rounded +dddiv106 divide 1 7 -> 0.1428571428571429 Inexact Rounded +dddiv107 divide 1 8 -> 0.125 +dddiv108 divide 1 9 -> 0.1111111111111111 Inexact Rounded +dddiv109 divide 1 10 -> 0.1 +dddiv110 divide 1 1 -> 1 +dddiv111 divide 2 1 -> 2 +dddiv112 divide 3 1 -> 3 +dddiv113 divide 4 1 -> 4 +dddiv114 divide 5 1 -> 5 +dddiv115 divide 6 1 -> 6 +dddiv116 divide 7 1 -> 7 +dddiv117 divide 8 1 -> 8 +dddiv118 divide 9 1 -> 9 +dddiv119 divide 10 1 -> 10 + +dddiv120 divide 3E+1 0.001 -> 3E+4 +dddiv121 divide 2.200 2 -> 1.100 + +dddiv130 divide 12345 4.999 -> 2469.493898779756 Inexact Rounded +dddiv131 divide 12345 4.99 -> 2473.947895791583 Inexact Rounded +dddiv132 divide 12345 4.9 -> 2519.387755102041 Inexact Rounded +dddiv133 divide 12345 5 -> 2469 +dddiv134 divide 12345 5.1 -> 2420.588235294118 Inexact Rounded +dddiv135 divide 12345 5.01 -> 2464.071856287425 Inexact Rounded +dddiv136 divide 12345 5.001 -> 2468.506298740252 Inexact Rounded + +-- test possibly imprecise results +dddiv220 divide 391 597 -> 0.6549413735343384 Inexact Rounded +dddiv221 divide 391 -597 -> -0.6549413735343384 Inexact Rounded +dddiv222 divide -391 597 -> -0.6549413735343384 Inexact Rounded +dddiv223 divide -391 -597 -> 0.6549413735343384 Inexact Rounded + +-- test some cases that are close to exponent overflow, some with coefficient padding +dddiv270 divide 1 1e384 -> 1E-384 Subnormal +dddiv271 divide 1 0.9e384 -> 1.11111111111111E-384 Rounded Inexact Subnormal Underflow +dddiv272 divide 1 0.99e384 -> 1.01010101010101E-384 Rounded Inexact Subnormal Underflow +dddiv273 divide 1 0.9999999999999999e384 -> 1.00000000000000E-384 Rounded Inexact Subnormal Underflow +dddiv274 divide 9e384 1 -> 9.000000000000000E+384 Clamped +dddiv275 divide 9.9e384 1 -> 9.900000000000000E+384 Clamped +dddiv276 divide 9.99e384 1 -> 9.990000000000000E+384 Clamped +dddiv277 divide 9.9999999999999e384 1 -> 9.999999999999900E+384 Clamped +dddiv278 divide 9.99999999999999e384 1 -> 9.999999999999990E+384 Clamped +dddiv279 divide 9.999999999999999e384 1 -> 9.999999999999999E+384 + +dddiv285 divide 9.9e384 1.1 -> 9.000000000000000E+384 Clamped +dddiv286 divide 9.99e384 1.1 -> 9.081818181818182E+384 Inexact Rounded +dddiv287 divide 9.9999999999999e384 1.1 -> 9.090909090909000E+384 Clamped +dddiv288 divide 9.99999999999999e384 1.1 -> 9.090909090909082E+384 Inexact Rounded +dddiv289 divide 9.999999999999999e384 1.1 -> 9.090909090909090E+384 Clamped + + +-- Divide into 0 tests +dddiv301 divide 0 7 -> 0 +dddiv302 divide 0 7E-5 -> 0E+5 +dddiv303 divide 0 7E-1 -> 0E+1 +dddiv304 divide 0 7E+1 -> 0.0 +dddiv305 divide 0 7E+5 -> 0.00000 +dddiv306 divide 0 7E+6 -> 0.000000 +dddiv307 divide 0 7E+7 -> 0E-7 +dddiv308 divide 0 70E-5 -> 0E+5 +dddiv309 divide 0 70E-1 -> 0E+1 +dddiv310 divide 0 70E+0 -> 0 +dddiv311 divide 0 70E+1 -> 0.0 +dddiv312 divide 0 70E+5 -> 0.00000 +dddiv313 divide 0 70E+6 -> 0.000000 +dddiv314 divide 0 70E+7 -> 0E-7 +dddiv315 divide 0 700E-5 -> 0E+5 +dddiv316 divide 0 700E-1 -> 0E+1 +dddiv317 divide 0 700E+0 -> 0 +dddiv318 divide 0 700E+1 -> 0.0 +dddiv319 divide 0 700E+5 -> 0.00000 +dddiv320 divide 0 700E+6 -> 0.000000 +dddiv321 divide 0 700E+7 -> 0E-7 +dddiv322 divide 0 700E+77 -> 0E-77 + +dddiv331 divide 0E-3 7E-5 -> 0E+2 +dddiv332 divide 0E-3 7E-1 -> 0.00 +dddiv333 divide 0E-3 7E+1 -> 0.0000 +dddiv334 divide 0E-3 7E+5 -> 0E-8 +dddiv335 divide 0E-1 7E-5 -> 0E+4 +dddiv336 divide 0E-1 7E-1 -> 0 +dddiv337 divide 0E-1 7E+1 -> 0.00 +dddiv338 divide 0E-1 7E+5 -> 0.000000 +dddiv339 divide 0E+1 7E-5 -> 0E+6 +dddiv340 divide 0E+1 7E-1 -> 0E+2 +dddiv341 divide 0E+1 7E+1 -> 0 +dddiv342 divide 0E+1 7E+5 -> 0.0000 +dddiv343 divide 0E+3 7E-5 -> 0E+8 +dddiv344 divide 0E+3 7E-1 -> 0E+4 +dddiv345 divide 0E+3 7E+1 -> 0E+2 +dddiv346 divide 0E+3 7E+5 -> 0.00 + +-- These were 'input rounding' +dddiv441 divide 12345678000 1 -> 12345678000 +dddiv442 divide 1 12345678000 -> 8.100000664200054E-11 Inexact Rounded +dddiv443 divide 1234567800 1 -> 1234567800 +dddiv444 divide 1 1234567800 -> 8.100000664200054E-10 Inexact Rounded +dddiv445 divide 1234567890 1 -> 1234567890 +dddiv446 divide 1 1234567890 -> 8.100000073710001E-10 Inexact Rounded +dddiv447 divide 1234567891 1 -> 1234567891 +dddiv448 divide 1 1234567891 -> 8.100000067149001E-10 Inexact Rounded +dddiv449 divide 12345678901 1 -> 12345678901 +dddiv450 divide 1 12345678901 -> 8.100000073053901E-11 Inexact Rounded +dddiv451 divide 1234567896 1 -> 1234567896 +dddiv452 divide 1 1234567896 -> 8.100000034344000E-10 Inexact Rounded + +-- high-lows +dddiv453 divide 1e+1 1 -> 1E+1 +dddiv454 divide 1e+1 1.0 -> 1E+1 +dddiv455 divide 1e+1 1.00 -> 1E+1 +dddiv456 divide 1e+2 2 -> 5E+1 +dddiv457 divide 1e+2 2.0 -> 5E+1 +dddiv458 divide 1e+2 2.00 -> 5E+1 + +-- some from IEEE discussions +dddiv460 divide 3e0 2e0 -> 1.5 +dddiv461 divide 30e-1 2e0 -> 1.5 +dddiv462 divide 300e-2 2e0 -> 1.50 +dddiv464 divide 3000e-3 2e0 -> 1.500 +dddiv465 divide 3e0 20e-1 -> 1.5 +dddiv466 divide 30e-1 20e-1 -> 1.5 +dddiv467 divide 300e-2 20e-1 -> 1.5 +dddiv468 divide 3000e-3 20e-1 -> 1.50 +dddiv469 divide 3e0 200e-2 -> 1.5 +dddiv470 divide 30e-1 200e-2 -> 1.5 +dddiv471 divide 300e-2 200e-2 -> 1.5 +dddiv472 divide 3000e-3 200e-2 -> 1.5 +dddiv473 divide 3e0 2000e-3 -> 1.5 +dddiv474 divide 30e-1 2000e-3 -> 1.5 +dddiv475 divide 300e-2 2000e-3 -> 1.5 +dddiv476 divide 3000e-3 2000e-3 -> 1.5 + +-- some reciprocals +dddiv480 divide 1 1.0E+33 -> 1E-33 +dddiv481 divide 1 10E+33 -> 1E-34 +dddiv482 divide 1 1.0E-33 -> 1E+33 +dddiv483 divide 1 10E-33 -> 1E+32 + +-- RMS discussion table +dddiv484 divide 0e5 1e3 -> 0E+2 +dddiv485 divide 0e5 2e3 -> 0E+2 +dddiv486 divide 0e5 10e2 -> 0E+3 +dddiv487 divide 0e5 20e2 -> 0E+3 +dddiv488 divide 0e5 100e1 -> 0E+4 +dddiv489 divide 0e5 200e1 -> 0E+4 + +dddiv491 divide 1e5 1e3 -> 1E+2 +dddiv492 divide 1e5 2e3 -> 5E+1 +dddiv493 divide 1e5 10e2 -> 1E+2 +dddiv494 divide 1e5 20e2 -> 5E+1 +dddiv495 divide 1e5 100e1 -> 1E+2 +dddiv496 divide 1e5 200e1 -> 5E+1 + +-- tryzeros cases +rounding: half_up +dddiv497 divide 0E+380 1000E-13 -> 0E+369 Clamped +dddiv498 divide 0E-390 1000E+13 -> 0E-398 Clamped + +rounding: half_up + +-- focus on trailing zeros issues +dddiv500 divide 1 9.9 -> 0.1010101010101010 Inexact Rounded +dddiv501 divide 1 9.09 -> 0.1100110011001100 Inexact Rounded +dddiv502 divide 1 9.009 -> 0.1110001110001110 Inexact Rounded + +dddiv511 divide 1 2 -> 0.5 +dddiv512 divide 1.0 2 -> 0.5 +dddiv513 divide 1.00 2 -> 0.50 +dddiv514 divide 1.000 2 -> 0.500 +dddiv515 divide 1.0000 2 -> 0.5000 +dddiv516 divide 1.00000 2 -> 0.50000 +dddiv517 divide 1.000000 2 -> 0.500000 +dddiv518 divide 1.0000000 2 -> 0.5000000 +dddiv519 divide 1.00 2.00 -> 0.5 + +dddiv521 divide 2 1 -> 2 +dddiv522 divide 2 1.0 -> 2 +dddiv523 divide 2 1.00 -> 2 +dddiv524 divide 2 1.000 -> 2 +dddiv525 divide 2 1.0000 -> 2 +dddiv526 divide 2 1.00000 -> 2 +dddiv527 divide 2 1.000000 -> 2 +dddiv528 divide 2 1.0000000 -> 2 +dddiv529 divide 2.00 1.00 -> 2 + +dddiv530 divide 2.40 2 -> 1.20 +dddiv531 divide 2.40 4 -> 0.60 +dddiv532 divide 2.40 10 -> 0.24 +dddiv533 divide 2.40 2.0 -> 1.2 +dddiv534 divide 2.40 4.0 -> 0.6 +dddiv535 divide 2.40 10.0 -> 0.24 +dddiv536 divide 2.40 2.00 -> 1.2 +dddiv537 divide 2.40 4.00 -> 0.6 +dddiv538 divide 2.40 10.00 -> 0.24 +dddiv539 divide 0.9 0.1 -> 9 +dddiv540 divide 0.9 0.01 -> 9E+1 +dddiv541 divide 0.9 0.001 -> 9E+2 +dddiv542 divide 5 2 -> 2.5 +dddiv543 divide 5 2.0 -> 2.5 +dddiv544 divide 5 2.00 -> 2.5 +dddiv545 divide 5 20 -> 0.25 +dddiv546 divide 5 20.0 -> 0.25 +dddiv547 divide 2.400 2 -> 1.200 +dddiv548 divide 2.400 2.0 -> 1.20 +dddiv549 divide 2.400 2.400 -> 1 + +dddiv550 divide 240 1 -> 240 +dddiv551 divide 240 10 -> 24 +dddiv552 divide 240 100 -> 2.4 +dddiv553 divide 240 1000 -> 0.24 +dddiv554 divide 2400 1 -> 2400 +dddiv555 divide 2400 10 -> 240 +dddiv556 divide 2400 100 -> 24 +dddiv557 divide 2400 1000 -> 2.4 + +-- +ve exponent +dddiv600 divide 2.4E+9 2 -> 1.2E+9 +dddiv601 divide 2.40E+9 2 -> 1.20E+9 +dddiv602 divide 2.400E+9 2 -> 1.200E+9 +dddiv603 divide 2.4000E+9 2 -> 1.2000E+9 +dddiv604 divide 24E+8 2 -> 1.2E+9 +dddiv605 divide 240E+7 2 -> 1.20E+9 +dddiv606 divide 2400E+6 2 -> 1.200E+9 +dddiv607 divide 24000E+5 2 -> 1.2000E+9 + +-- more zeros, etc. +dddiv731 divide 5.00 1E-3 -> 5.00E+3 +dddiv732 divide 00.00 0.000 -> NaN Division_undefined +dddiv733 divide 00.00 0E-3 -> NaN Division_undefined +dddiv734 divide 0 -0 -> NaN Division_undefined +dddiv735 divide -0 0 -> NaN Division_undefined +dddiv736 divide -0 -0 -> NaN Division_undefined + +dddiv741 divide 0 -1 -> -0 +dddiv742 divide -0 -1 -> 0 +dddiv743 divide 0 1 -> 0 +dddiv744 divide -0 1 -> -0 +dddiv745 divide -1 0 -> -Infinity Division_by_zero +dddiv746 divide -1 -0 -> Infinity Division_by_zero +dddiv747 divide 1 0 -> Infinity Division_by_zero +dddiv748 divide 1 -0 -> -Infinity Division_by_zero + +dddiv751 divide 0.0 -1 -> -0.0 +dddiv752 divide -0.0 -1 -> 0.0 +dddiv753 divide 0.0 1 -> 0.0 +dddiv754 divide -0.0 1 -> -0.0 +dddiv755 divide -1.0 0 -> -Infinity Division_by_zero +dddiv756 divide -1.0 -0 -> Infinity Division_by_zero +dddiv757 divide 1.0 0 -> Infinity Division_by_zero +dddiv758 divide 1.0 -0 -> -Infinity Division_by_zero + +dddiv761 divide 0 -1.0 -> -0E+1 +dddiv762 divide -0 -1.0 -> 0E+1 +dddiv763 divide 0 1.0 -> 0E+1 +dddiv764 divide -0 1.0 -> -0E+1 +dddiv765 divide -1 0.0 -> -Infinity Division_by_zero +dddiv766 divide -1 -0.0 -> Infinity Division_by_zero +dddiv767 divide 1 0.0 -> Infinity Division_by_zero +dddiv768 divide 1 -0.0 -> -Infinity Division_by_zero + +dddiv771 divide 0.0 -1.0 -> -0 +dddiv772 divide -0.0 -1.0 -> 0 +dddiv773 divide 0.0 1.0 -> 0 +dddiv774 divide -0.0 1.0 -> -0 +dddiv775 divide -1.0 0.0 -> -Infinity Division_by_zero +dddiv776 divide -1.0 -0.0 -> Infinity Division_by_zero +dddiv777 divide 1.0 0.0 -> Infinity Division_by_zero +dddiv778 divide 1.0 -0.0 -> -Infinity Division_by_zero + +-- Specials +dddiv780 divide Inf -Inf -> NaN Invalid_operation +dddiv781 divide Inf -1000 -> -Infinity +dddiv782 divide Inf -1 -> -Infinity +dddiv783 divide Inf -0 -> -Infinity +dddiv784 divide Inf 0 -> Infinity +dddiv785 divide Inf 1 -> Infinity +dddiv786 divide Inf 1000 -> Infinity +dddiv787 divide Inf Inf -> NaN Invalid_operation +dddiv788 divide -1000 Inf -> -0E-398 Clamped +dddiv789 divide -Inf Inf -> NaN Invalid_operation +dddiv790 divide -1 Inf -> -0E-398 Clamped +dddiv791 divide -0 Inf -> -0E-398 Clamped +dddiv792 divide 0 Inf -> 0E-398 Clamped +dddiv793 divide 1 Inf -> 0E-398 Clamped +dddiv794 divide 1000 Inf -> 0E-398 Clamped +dddiv795 divide Inf Inf -> NaN Invalid_operation + +dddiv800 divide -Inf -Inf -> NaN Invalid_operation +dddiv801 divide -Inf -1000 -> Infinity +dddiv802 divide -Inf -1 -> Infinity +dddiv803 divide -Inf -0 -> Infinity +dddiv804 divide -Inf 0 -> -Infinity +dddiv805 divide -Inf 1 -> -Infinity +dddiv806 divide -Inf 1000 -> -Infinity +dddiv807 divide -Inf Inf -> NaN Invalid_operation +dddiv808 divide -1000 Inf -> -0E-398 Clamped +dddiv809 divide -Inf -Inf -> NaN Invalid_operation +dddiv810 divide -1 -Inf -> 0E-398 Clamped +dddiv811 divide -0 -Inf -> 0E-398 Clamped +dddiv812 divide 0 -Inf -> -0E-398 Clamped +dddiv813 divide 1 -Inf -> -0E-398 Clamped +dddiv814 divide 1000 -Inf -> -0E-398 Clamped +dddiv815 divide Inf -Inf -> NaN Invalid_operation + +dddiv821 divide NaN -Inf -> NaN +dddiv822 divide NaN -1000 -> NaN +dddiv823 divide NaN -1 -> NaN +dddiv824 divide NaN -0 -> NaN +dddiv825 divide NaN 0 -> NaN +dddiv826 divide NaN 1 -> NaN +dddiv827 divide NaN 1000 -> NaN +dddiv828 divide NaN Inf -> NaN +dddiv829 divide NaN NaN -> NaN +dddiv830 divide -Inf NaN -> NaN +dddiv831 divide -1000 NaN -> NaN +dddiv832 divide -1 NaN -> NaN +dddiv833 divide -0 NaN -> NaN +dddiv834 divide 0 NaN -> NaN +dddiv835 divide 1 NaN -> NaN +dddiv836 divide 1000 NaN -> NaN +dddiv837 divide Inf NaN -> NaN + +dddiv841 divide sNaN -Inf -> NaN Invalid_operation +dddiv842 divide sNaN -1000 -> NaN Invalid_operation +dddiv843 divide sNaN -1 -> NaN Invalid_operation +dddiv844 divide sNaN -0 -> NaN Invalid_operation +dddiv845 divide sNaN 0 -> NaN Invalid_operation +dddiv846 divide sNaN 1 -> NaN Invalid_operation +dddiv847 divide sNaN 1000 -> NaN Invalid_operation +dddiv848 divide sNaN NaN -> NaN Invalid_operation +dddiv849 divide sNaN sNaN -> NaN Invalid_operation +dddiv850 divide NaN sNaN -> NaN Invalid_operation +dddiv851 divide -Inf sNaN -> NaN Invalid_operation +dddiv852 divide -1000 sNaN -> NaN Invalid_operation +dddiv853 divide -1 sNaN -> NaN Invalid_operation +dddiv854 divide -0 sNaN -> NaN Invalid_operation +dddiv855 divide 0 sNaN -> NaN Invalid_operation +dddiv856 divide 1 sNaN -> NaN Invalid_operation +dddiv857 divide 1000 sNaN -> NaN Invalid_operation +dddiv858 divide Inf sNaN -> NaN Invalid_operation +dddiv859 divide NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dddiv861 divide NaN9 -Inf -> NaN9 +dddiv862 divide NaN8 1000 -> NaN8 +dddiv863 divide NaN7 Inf -> NaN7 +dddiv864 divide NaN6 NaN5 -> NaN6 +dddiv865 divide -Inf NaN4 -> NaN4 +dddiv866 divide -1000 NaN3 -> NaN3 +dddiv867 divide Inf NaN2 -> NaN2 + +dddiv871 divide sNaN99 -Inf -> NaN99 Invalid_operation +dddiv872 divide sNaN98 -1 -> NaN98 Invalid_operation +dddiv873 divide sNaN97 NaN -> NaN97 Invalid_operation +dddiv874 divide sNaN96 sNaN94 -> NaN96 Invalid_operation +dddiv875 divide NaN95 sNaN93 -> NaN93 Invalid_operation +dddiv876 divide -Inf sNaN92 -> NaN92 Invalid_operation +dddiv877 divide 0 sNaN91 -> NaN91 Invalid_operation +dddiv878 divide Inf sNaN90 -> NaN90 Invalid_operation +dddiv879 divide NaN sNaN89 -> NaN89 Invalid_operation + +dddiv881 divide -NaN9 -Inf -> -NaN9 +dddiv882 divide -NaN8 1000 -> -NaN8 +dddiv883 divide -NaN7 Inf -> -NaN7 +dddiv884 divide -NaN6 -NaN5 -> -NaN6 +dddiv885 divide -Inf -NaN4 -> -NaN4 +dddiv886 divide -1000 -NaN3 -> -NaN3 +dddiv887 divide Inf -NaN2 -> -NaN2 + +dddiv891 divide -sNaN99 -Inf -> -NaN99 Invalid_operation +dddiv892 divide -sNaN98 -1 -> -NaN98 Invalid_operation +dddiv893 divide -sNaN97 NaN -> -NaN97 Invalid_operation +dddiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation +dddiv895 divide -NaN95 -sNaN93 -> -NaN93 Invalid_operation +dddiv896 divide -Inf -sNaN92 -> -NaN92 Invalid_operation +dddiv897 divide 0 -sNaN91 -> -NaN91 Invalid_operation +dddiv898 divide Inf -sNaN90 -> -NaN90 Invalid_operation +dddiv899 divide -NaN -sNaN89 -> -NaN89 Invalid_operation + +-- Various flavours of divide by 0 +dddiv901 divide 0 0 -> NaN Division_undefined +dddiv902 divide 0.0E5 0 -> NaN Division_undefined +dddiv903 divide 0.000 0 -> NaN Division_undefined +dddiv904 divide 0.0001 0 -> Infinity Division_by_zero +dddiv905 divide 0.01 0 -> Infinity Division_by_zero +dddiv906 divide 0.1 0 -> Infinity Division_by_zero +dddiv907 divide 1 0 -> Infinity Division_by_zero +dddiv908 divide 1 0.0 -> Infinity Division_by_zero +dddiv909 divide 10 0.0 -> Infinity Division_by_zero +dddiv910 divide 1E+100 0.0 -> Infinity Division_by_zero +dddiv911 divide 1E+100 0 -> Infinity Division_by_zero + +dddiv921 divide -0.0001 0 -> -Infinity Division_by_zero +dddiv922 divide -0.01 0 -> -Infinity Division_by_zero +dddiv923 divide -0.1 0 -> -Infinity Division_by_zero +dddiv924 divide -1 0 -> -Infinity Division_by_zero +dddiv925 divide -1 0.0 -> -Infinity Division_by_zero +dddiv926 divide -10 0.0 -> -Infinity Division_by_zero +dddiv927 divide -1E+100 0.0 -> -Infinity Division_by_zero +dddiv928 divide -1E+100 0 -> -Infinity Division_by_zero + +dddiv931 divide 0.0001 -0 -> -Infinity Division_by_zero +dddiv932 divide 0.01 -0 -> -Infinity Division_by_zero +dddiv933 divide 0.1 -0 -> -Infinity Division_by_zero +dddiv934 divide 1 -0 -> -Infinity Division_by_zero +dddiv935 divide 1 -0.0 -> -Infinity Division_by_zero +dddiv936 divide 10 -0.0 -> -Infinity Division_by_zero +dddiv937 divide 1E+100 -0.0 -> -Infinity Division_by_zero +dddiv938 divide 1E+100 -0 -> -Infinity Division_by_zero + +dddiv941 divide -0.0001 -0 -> Infinity Division_by_zero +dddiv942 divide -0.01 -0 -> Infinity Division_by_zero +dddiv943 divide -0.1 -0 -> Infinity Division_by_zero +dddiv944 divide -1 -0 -> Infinity Division_by_zero +dddiv945 divide -1 -0.0 -> Infinity Division_by_zero +dddiv946 divide -10 -0.0 -> Infinity Division_by_zero +dddiv947 divide -1E+100 -0.0 -> Infinity Division_by_zero +dddiv948 divide -1E+100 -0 -> Infinity Division_by_zero + +-- Examples from SQL proposal (Krishna Kulkarni) +dddiv1021 divide 1E0 1E0 -> 1 +dddiv1022 divide 1E0 2E0 -> 0.5 +dddiv1023 divide 1E0 3E0 -> 0.3333333333333333 Inexact Rounded +dddiv1024 divide 100E-2 1000E-3 -> 1 +dddiv1025 divide 24E-1 2E0 -> 1.2 +dddiv1026 divide 2400E-3 2E0 -> 1.200 +dddiv1027 divide 5E0 2E0 -> 2.5 +dddiv1028 divide 5E0 20E-1 -> 2.5 +dddiv1029 divide 5E0 2000E-3 -> 2.5 +dddiv1030 divide 5E0 2E-1 -> 25 +dddiv1031 divide 5E0 20E-2 -> 25 +dddiv1032 divide 480E-2 3E0 -> 1.60 +dddiv1033 divide 47E-1 2E0 -> 2.35 + +-- ECMAScript bad examples +rounding: half_down +dddiv1040 divide 5 9 -> 0.5555555555555556 Inexact Rounded +rounding: half_even +dddiv1041 divide 6 11 -> 0.5454545454545455 Inexact Rounded + +-- overflow and underflow tests .. note subnormal results +-- signs +dddiv1051 divide 1e+277 1e-311 -> Infinity Overflow Inexact Rounded +dddiv1052 divide 1e+277 -1e-311 -> -Infinity Overflow Inexact Rounded +dddiv1053 divide -1e+277 1e-311 -> -Infinity Overflow Inexact Rounded +dddiv1054 divide -1e+277 -1e-311 -> Infinity Overflow Inexact Rounded +dddiv1055 divide 1e-277 1e+311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1056 divide 1e-277 -1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1057 divide -1e-277 1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1058 divide -1e-277 -1e+311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +dddiv1060 divide 1e-291 1e+101 -> 1E-392 Subnormal +dddiv1061 divide 1e-291 1e+102 -> 1E-393 Subnormal +dddiv1062 divide 1e-291 1e+103 -> 1E-394 Subnormal +dddiv1063 divide 1e-291 1e+104 -> 1E-395 Subnormal +dddiv1064 divide 1e-291 1e+105 -> 1E-396 Subnormal +dddiv1065 divide 1e-291 1e+106 -> 1E-397 Subnormal +dddiv1066 divide 1e-291 1e+107 -> 1E-398 Subnormal +dddiv1067 divide 1e-291 1e+108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1068 divide 1e-291 1e+109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1069 divide 1e-291 1e+110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +-- [no equivalent of 'subnormal' for overflow] +dddiv1070 divide 1e+60 1e-321 -> 1.000000000000E+381 Clamped +dddiv1071 divide 1e+60 1e-322 -> 1.0000000000000E+382 Clamped +dddiv1072 divide 1e+60 1e-323 -> 1.00000000000000E+383 Clamped +dddiv1073 divide 1e+60 1e-324 -> 1.000000000000000E+384 Clamped +dddiv1074 divide 1e+60 1e-325 -> Infinity Overflow Inexact Rounded +dddiv1075 divide 1e+60 1e-326 -> Infinity Overflow Inexact Rounded +dddiv1076 divide 1e+60 1e-327 -> Infinity Overflow Inexact Rounded +dddiv1077 divide 1e+60 1e-328 -> Infinity Overflow Inexact Rounded +dddiv1078 divide 1e+60 1e-329 -> Infinity Overflow Inexact Rounded +dddiv1079 divide 1e+60 1e-330 -> Infinity Overflow Inexact Rounded + +dddiv1101 divide 1.0000E-394 1 -> 1.0000E-394 Subnormal +dddiv1102 divide 1.000E-394 1e+1 -> 1.000E-395 Subnormal +dddiv1103 divide 1.00E-394 1e+2 -> 1.00E-396 Subnormal +dddiv1104 divide 1.0E-394 1e+3 -> 1.0E-397 Subnormal +dddiv1105 divide 1.0E-394 1e+4 -> 1E-398 Subnormal Rounded +dddiv1106 divide 1.3E-394 1e+4 -> 1E-398 Underflow Subnormal Inexact Rounded +dddiv1107 divide 1.5E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded +dddiv1108 divide 1.7E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded +dddiv1109 divide 2.3E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded +dddiv1110 divide 2.5E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded +dddiv1111 divide 2.7E-394 1e+4 -> 3E-398 Underflow Subnormal Inexact Rounded +dddiv1112 divide 1.49E-394 1e+4 -> 1E-398 Underflow Subnormal Inexact Rounded +dddiv1113 divide 1.50E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded +dddiv1114 divide 1.51E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded +dddiv1115 divide 2.49E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded +dddiv1116 divide 2.50E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded +dddiv1117 divide 2.51E-394 1e+4 -> 3E-398 Underflow Subnormal Inexact Rounded + +dddiv1118 divide 1E-394 1e+4 -> 1E-398 Subnormal +dddiv1119 divide 3E-394 1e+5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1120 divide 5E-394 1e+5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1121 divide 7E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded +dddiv1122 divide 9E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded +dddiv1123 divide 9.9E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded + +dddiv1124 divide 1E-394 -1e+4 -> -1E-398 Subnormal +dddiv1125 divide 3E-394 -1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1126 divide -5E-394 1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1127 divide 7E-394 -1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded +dddiv1128 divide -9E-394 1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded +dddiv1129 divide 9.9E-394 -1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded +dddiv1130 divide 3.0E-394 -1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped + +dddiv1131 divide 1.0E-199 1e+200 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +dddiv1132 divide 1.0E-199 1e+199 -> 1E-398 Subnormal Rounded +dddiv1133 divide 1.0E-199 1e+198 -> 1.0E-397 Subnormal +dddiv1134 divide 2.0E-199 2e+198 -> 1.0E-397 Subnormal +dddiv1135 divide 4.0E-199 4e+198 -> 1.0E-397 Subnormal +dddiv1136 divide 10.0E-199 10e+198 -> 1.0E-397 Subnormal +dddiv1137 divide 30.0E-199 30e+198 -> 1.0E-397 Subnormal + +-- randoms +dddiv2010 divide -3.303226714900711E-35 8.796578842713183E+73 -> -3.755126594058783E-109 Inexact Rounded +dddiv2011 divide 933153327821073.6 68782181090246.25 -> 13.56678885475763 Inexact Rounded +dddiv2012 divide 5.04752436057906E-72 -8.179481771238642E+64 -> -6.170958627632835E-137 Inexact Rounded +dddiv2013 divide -3707613309582318 3394911196503.048 -> -1092.109070010836 Inexact Rounded +dddiv2014 divide 99689.0555190461 -4.735208553891464 -> -21052.72753765411 Inexact Rounded +dddiv2015 divide -1447915775613329 269750797.8184875 -> -5367605.164925653 Inexact Rounded +dddiv2016 divide -9.394881304225258E-19 -830585.0252671636 -> 1.131116143251358E-24 Inexact Rounded +dddiv2017 divide -1.056283432738934 88.58754555124013 -> -0.01192361100159352 Inexact Rounded +dddiv2018 divide 5763220933343.081 689089567025052.1 -> 0.008363529516524456 Inexact Rounded +dddiv2019 divide 873819.122103216 9.740612494523300E-49 -> 8.970884763093948E+53 Inexact Rounded +dddiv2020 divide 8022914.838533576 6178.566801742713 -> 1298.507420243583 Inexact Rounded +dddiv2021 divide 203982.7605650363 -2158.283639053435 -> -94.51156320422168 Inexact Rounded +dddiv2022 divide 803.6310547013030 7101143795399.238 -> 1.131692411611166E-10 Inexact Rounded +dddiv2023 divide 9.251697842123399E-82 -1.342350220606119E-7 -> -6.892163982321936E-75 Inexact Rounded +dddiv2024 divide -1.980600645637992E-53 -5.474262753214457E+77 -> 3.618022617703168E-131 Inexact Rounded +dddiv2025 divide -210.0322996351690 -8.580951835872843E+80 -> 2.447657365434971E-79 Inexact Rounded +dddiv2026 divide -1.821980314020370E+85 -3.018915267138165 -> 6.035215144503042E+84 Inexact Rounded +dddiv2027 divide -772264503601.1047 5.158258271408988E-86 -> -1.497141986630614E+97 Inexact Rounded +dddiv2028 divide -767.0532415847106 2.700027228028939E-59 -> -2.840909282772941E+61 Inexact Rounded +dddiv2029 divide 496724.8548250093 7.32700588163100E+66 -> 6.779370220929013E-62 Inexact Rounded +dddiv2030 divide -304232651447703.9 -108.9730808657440 -> 2791814721862.565 Inexact Rounded +dddiv2031 divide -7.233817192699405E+42 -5711302004.149411 -> 1.266579352211430E+33 Inexact Rounded +dddiv2032 divide -9.999221444912745E+96 4010569406446197 -> -2.493217404202250E+81 Inexact Rounded +dddiv2033 divide -1837272.061937622 8.356322838066762 -> -219866.0939196882 Inexact Rounded +dddiv2034 divide 2168.517555606529 209.1910258615061 -> 10.36620737756784 Inexact Rounded +dddiv2035 divide -1.884389790576371E+88 2.95181953870583E+20 -> -6.383824505079828E+67 Inexact Rounded +dddiv2036 divide 732263.6037438196 961222.3634446889 -> 0.7618045850698269 Inexact Rounded +dddiv2037 divide -813461419.0348336 5.376293753809143E+84 -> -1.513052404285927E-76 Inexact Rounded +dddiv2038 divide -45562133508108.50 -9.776843494690107E+51 -> 4.660208945029519E-39 Inexact Rounded +dddiv2039 divide -6.489393172441016E+80 -9101965.097852113 -> 7.129661674897421E+73 Inexact Rounded +dddiv2040 divide 3.694576237117349E+93 6683512.012622003 -> 5.527896456443912E+86 Inexact Rounded +dddiv2041 divide -2.252877726403272E+19 -7451913256.181367 -> 3023220546.125531 Inexact Rounded +dddiv2042 divide 518303.1989111842 50.01587020474133 -> 10362.77479107123 Inexact Rounded +dddiv2043 divide 2.902087881880103E+24 33.32400992305702 -> 8.708699488989578E+22 Inexact Rounded +dddiv2044 divide 549619.4559510557 1660824845196338 -> 3.309316196351104E-10 Inexact Rounded +dddiv2045 divide -6775670774684043 8292152023.077262 -> -817118.4941891062 Inexact Rounded +dddiv2046 divide -77.50923921524079 -5.636882655425815E+74 -> 1.375037302588405E-73 Inexact Rounded +dddiv2047 divide -2.984889459605149E-10 -88106156784122.99 -> 3.387833005721384E-24 Inexact Rounded +dddiv2048 divide 0.949517293997085 44767115.96450998 -> 2.121015110175589E-8 Inexact Rounded +dddiv2049 divide -2760937211.084521 -1087015876975408 -> 0.000002539923537057024 Inexact Rounded +dddiv2050 divide 28438351.85030536 -4.209397904088624E-47 -> -6.755919135770688E+53 Inexact Rounded +dddiv2051 divide -85562731.6820956 -7.166045442530185E+45 -> 1.194002080621542E-38 Inexact Rounded +dddiv2052 divide 2533802852165.25 7154.119606235955 -> 354173957.3317501 Inexact Rounded +dddiv2053 divide -8858831346851.474 97.59734208801716 -> -90769186509.83577 Inexact Rounded +dddiv2054 divide 176783629801387.5 840073263.3109817 -> 210438.3480848206 Inexact Rounded +dddiv2055 divide -493506471796175.6 79733894790822.03 -> -6.189418854940746 Inexact Rounded +dddiv2056 divide 790.1682542103445 829.9449370367435 -> 0.9520731062371214 Inexact Rounded +dddiv2057 divide -8920459838.583164 -4767.889187899214 -> 1870945.294035581 Inexact Rounded +dddiv2058 divide 53536687164422.1 53137.5007032689 -> 1007512330.385698 Inexact Rounded +dddiv2059 divide 4.051532311146561E-74 -2.343089768972261E+94 -> -1.729140882606332E-168 Inexact Rounded +dddiv2060 divide -14847758778636.88 3.062543516383807E-43 -> -4.848178874587497E+55 Inexact Rounded + +-- Division probably has pre-rounding, so need to test rounding +-- explicitly rather than assume included through other tests; +-- tests include simple rounding and also the tricky cases of sticky +-- bits following two zeros +-- +-- 1/99999 gives 0.0000100001000010000100001000010000100001 +-- 1234567890123456 +-- +-- 1/999999 gives 0.000001000001000001000001000001000001000001 +-- 1234567890123456 + +rounding: ceiling +dddiv3001 divide 1 3 -> 0.3333333333333334 Inexact Rounded +dddiv3002 divide 2 3 -> 0.6666666666666667 Inexact Rounded +dddiv3003 divide 1 99999 -> 0.00001000010000100002 Inexact Rounded +dddiv3004 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded + +rounding: floor +dddiv3011 divide 1 3 -> 0.3333333333333333 Inexact Rounded +dddiv3012 divide 2 3 -> 0.6666666666666666 Inexact Rounded +dddiv3013 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded +dddiv3014 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded + +rounding: up +dddiv3021 divide 1 3 -> 0.3333333333333334 Inexact Rounded +dddiv3022 divide 2 3 -> 0.6666666666666667 Inexact Rounded +dddiv3023 divide 1 99999 -> 0.00001000010000100002 Inexact Rounded +dddiv3024 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded + +rounding: down +dddiv3031 divide 1 3 -> 0.3333333333333333 Inexact Rounded +dddiv3032 divide 2 3 -> 0.6666666666666666 Inexact Rounded +dddiv3033 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded +dddiv3034 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded + +rounding: half_up +dddiv3041 divide 1 3 -> 0.3333333333333333 Inexact Rounded +dddiv3042 divide 2 3 -> 0.6666666666666667 Inexact Rounded +dddiv3043 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded +dddiv3044 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded + +rounding: half_down +dddiv3051 divide 1 3 -> 0.3333333333333333 Inexact Rounded +dddiv3052 divide 2 3 -> 0.6666666666666667 Inexact Rounded +dddiv3053 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded +dddiv3054 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded + +rounding: half_even +dddiv3061 divide 1 3 -> 0.3333333333333333 Inexact Rounded +dddiv3062 divide 2 3 -> 0.6666666666666667 Inexact Rounded +dddiv3063 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded +dddiv3064 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded + +rounding: 05up +dddiv3071 divide 1 3 -> 0.3333333333333333 Inexact Rounded +dddiv3072 divide 2 3 -> 0.6666666666666666 Inexact Rounded +dddiv3073 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded +dddiv3074 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded + +-- random divide tests with result near 1 +rounding: half_even +dddiv4001 divide 3195385192916917 3195385192946695 -> 0.9999999999906809 Inexact Rounded +dddiv4002 divide 1393723067526993 1393723067519475 -> 1.000000000005394 Inexact Rounded +dddiv4003 divide 759985543702302 759985543674015 -> 1.000000000037220 Inexact Rounded +dddiv4004 divide 9579158456027302 9579158456036864 -> 0.9999999999990018 Inexact Rounded +dddiv4005 divide 7079398299143569 7079398299156904 -> 0.9999999999981164 Inexact Rounded +dddiv4006 divide 6636169255366598 6636169255336386 -> 1.000000000004553 Inexact Rounded +dddiv4007 divide 6964813971340090 6964813971321554 -> 1.000000000002661 Inexact Rounded +dddiv4008 divide 4182275225480784 4182275225454009 -> 1.000000000006402 Inexact Rounded +dddiv4009 divide 9228325124938029 9228325124918730 -> 1.000000000002091 Inexact Rounded +dddiv4010 divide 3428346338630192 3428346338609843 -> 1.000000000005936 Inexact Rounded +dddiv4011 divide 2143511550722893 2143511550751754 -> 0.9999999999865356 Inexact Rounded +dddiv4012 divide 1672732924396785 1672732924401811 -> 0.9999999999969953 Inexact Rounded +dddiv4013 divide 4190714611948216 4190714611948664 -> 0.9999999999998931 Inexact Rounded +dddiv4014 divide 3942254800848877 3942254800814556 -> 1.000000000008706 Inexact Rounded +dddiv4015 divide 2854459826952334 2854459826960762 -> 0.9999999999970474 Inexact Rounded +dddiv4016 divide 2853258953664731 2853258953684471 -> 0.9999999999930816 Inexact Rounded +dddiv4017 divide 9453512638125978 9453512638146425 -> 0.9999999999978371 Inexact Rounded +dddiv4018 divide 339476633940369 339476633912887 -> 1.000000000080954 Inexact Rounded +dddiv4019 divide 4542181492688467 4542181492697735 -> 0.9999999999979596 Inexact Rounded +dddiv4020 divide 7312600192399197 7312600192395424 -> 1.000000000000516 Inexact Rounded +dddiv4021 divide 1811674985570111 1811674985603935 -> 0.9999999999813300 Inexact Rounded +dddiv4022 divide 1706462639003481 1706462639017740 -> 0.9999999999916441 Inexact Rounded +dddiv4023 divide 6697052654940368 6697052654934110 -> 1.000000000000934 Inexact Rounded +dddiv4024 divide 5015283664277539 5015283664310719 -> 0.9999999999933842 Inexact Rounded +dddiv4025 divide 2359501561537464 2359501561502464 -> 1.000000000014834 Inexact Rounded +dddiv4026 divide 2669850227909157 2669850227901548 -> 1.000000000002850 Inexact Rounded +dddiv4027 divide 9329725546974648 9329725547002445 -> 0.9999999999970206 Inexact Rounded +dddiv4028 divide 3228562867071248 3228562867106206 -> 0.9999999999891723 Inexact Rounded +dddiv4029 divide 4862226644921175 4862226644909380 -> 1.000000000002426 Inexact Rounded +dddiv4030 divide 1022267997054529 1022267997071329 -> 0.9999999999835660 Inexact Rounded +dddiv4031 divide 1048777482023719 1048777482000948 -> 1.000000000021712 Inexact Rounded +dddiv4032 divide 9980113777337098 9980113777330539 -> 1.000000000000657 Inexact Rounded +dddiv4033 divide 7506839167963908 7506839167942901 -> 1.000000000002798 Inexact Rounded +dddiv4034 divide 231119751977860 231119751962453 -> 1.000000000066662 Inexact Rounded +dddiv4035 divide 4034903664762962 4034903664795526 -> 0.9999999999919294 Inexact Rounded +dddiv4036 divide 5700122152274696 5700122152251386 -> 1.000000000004089 Inexact Rounded +dddiv4037 divide 6869599590293110 6869599590293495 -> 0.9999999999999440 Inexact Rounded +dddiv4038 divide 5576281960092797 5576281960105579 -> 0.9999999999977078 Inexact Rounded +dddiv4039 divide 2304844888381318 2304844888353073 -> 1.000000000012255 Inexact Rounded +dddiv4040 divide 3265933651656452 3265933651682779 -> 0.9999999999919389 Inexact Rounded +dddiv4041 divide 5235714985079914 5235714985066131 -> 1.000000000002632 Inexact Rounded +dddiv4042 divide 5578481572827551 5578481572822945 -> 1.000000000000826 Inexact Rounded +dddiv4043 divide 4909616081396134 4909616081373076 -> 1.000000000004696 Inexact Rounded +dddiv4044 divide 636447224349537 636447224338757 -> 1.000000000016938 Inexact Rounded +dddiv4045 divide 1539373428396640 1539373428364727 -> 1.000000000020731 Inexact Rounded +dddiv4046 divide 2028786707377893 2028786707378866 -> 0.9999999999995204 Inexact Rounded +dddiv4047 divide 137643260486222 137643260487419 -> 0.9999999999913036 Inexact Rounded +dddiv4048 divide 247451519746765 247451519752267 -> 0.9999999999777653 Inexact Rounded +dddiv4049 divide 7877858475022054 7877858474999794 -> 1.000000000002826 Inexact Rounded +dddiv4050 divide 7333242694766258 7333242694744628 -> 1.000000000002950 Inexact Rounded +dddiv4051 divide 124051503698592 124051503699397 -> 0.9999999999935108 Inexact Rounded +dddiv4052 divide 8944737432385188 8944737432406860 -> 0.9999999999975771 Inexact Rounded +dddiv4053 divide 9883948923406874 9883948923424843 -> 0.9999999999981820 Inexact Rounded +dddiv4054 divide 6829178741654284 6829178741671973 -> 0.9999999999974098 Inexact Rounded +dddiv4055 divide 7342752479768122 7342752479793385 -> 0.9999999999965595 Inexact Rounded +dddiv4056 divide 8066426579008783 8066426578977563 -> 1.000000000003870 Inexact Rounded +dddiv4057 divide 8992775071383295 8992775071352712 -> 1.000000000003401 Inexact Rounded +dddiv4058 divide 5485011755545641 5485011755543611 -> 1.000000000000370 Inexact Rounded +dddiv4059 divide 5779983054353918 5779983054365300 -> 0.9999999999980308 Inexact Rounded +dddiv4060 divide 9502265102713774 9502265102735208 -> 0.9999999999977443 Inexact Rounded +dddiv4061 divide 2109558399130981 2109558399116281 -> 1.000000000006968 Inexact Rounded +dddiv4062 divide 5296182636350471 5296182636351521 -> 0.9999999999998017 Inexact Rounded +dddiv4063 divide 1440019225591883 1440019225601844 -> 0.9999999999930827 Inexact Rounded +dddiv4064 divide 8182110791881341 8182110791847174 -> 1.000000000004176 Inexact Rounded +dddiv4065 divide 489098235512060 489098235534516 -> 0.9999999999540869 Inexact Rounded +dddiv4066 divide 6475687084782038 6475687084756089 -> 1.000000000004007 Inexact Rounded +dddiv4067 divide 8094348555736948 8094348555759236 -> 0.9999999999972465 Inexact Rounded +dddiv4068 divide 1982766816291543 1982766816309463 -> 0.9999999999909621 Inexact Rounded +dddiv4069 divide 9277314300113251 9277314300084467 -> 1.000000000003103 Inexact Rounded +dddiv4070 divide 4335532959318934 4335532959293167 -> 1.000000000005943 Inexact Rounded +dddiv4071 divide 7767113032981348 7767113032968132 -> 1.000000000001702 Inexact Rounded +dddiv4072 divide 1578548053342868 1578548053370448 -> 0.9999999999825282 Inexact Rounded +dddiv4073 divide 3790420686666898 3790420686636315 -> 1.000000000008068 Inexact Rounded +dddiv4074 divide 871682421955147 871682421976441 -> 0.9999999999755714 Inexact Rounded +dddiv4075 divide 744141054479940 744141054512329 -> 0.9999999999564746 Inexact Rounded +dddiv4076 divide 8956824183670735 8956824183641741 -> 1.000000000003237 Inexact Rounded +dddiv4077 divide 8337291694485682 8337291694451193 -> 1.000000000004137 Inexact Rounded +dddiv4078 divide 4107775944683669 4107775944657097 -> 1.000000000006469 Inexact Rounded +dddiv4079 divide 8691900057964648 8691900057997555 -> 0.9999999999962141 Inexact Rounded +dddiv4080 divide 2229528520536462 2229528520502337 -> 1.000000000015306 Inexact Rounded +dddiv4081 divide 398442083774322 398442083746273 -> 1.000000000070397 Inexact Rounded +dddiv4082 divide 5319819776808759 5319819776838313 -> 0.9999999999944445 Inexact Rounded +dddiv4083 divide 7710491299066855 7710491299041858 -> 1.000000000003242 Inexact Rounded +dddiv4084 divide 9083231296087266 9083231296058160 -> 1.000000000003204 Inexact Rounded +dddiv4085 divide 3566873574904559 3566873574890328 -> 1.000000000003990 Inexact Rounded +dddiv4086 divide 596343290550525 596343290555614 -> 0.9999999999914663 Inexact Rounded +dddiv4087 divide 278227925093192 278227925068104 -> 1.000000000090171 Inexact Rounded +dddiv4088 divide 3292902958490649 3292902958519881 -> 0.9999999999911227 Inexact Rounded +dddiv4089 divide 5521871364245881 5521871364229536 -> 1.000000000002960 Inexact Rounded +dddiv4090 divide 2406505602883617 2406505602857997 -> 1.000000000010646 Inexact Rounded +dddiv4091 divide 7741146984869208 7741146984867255 -> 1.000000000000252 Inexact Rounded +dddiv4092 divide 4576041832414909 4576041832405102 -> 1.000000000002143 Inexact Rounded +dddiv4093 divide 9183756982878057 9183756982901934 -> 0.9999999999974001 Inexact Rounded +dddiv4094 divide 6215736513855159 6215736513870342 -> 0.9999999999975573 Inexact Rounded +dddiv4095 divide 248554968534533 248554968551417 -> 0.9999999999320714 Inexact Rounded +dddiv4096 divide 376314165668645 376314165659755 -> 1.000000000023624 Inexact Rounded +dddiv4097 divide 5513569249809718 5513569249808906 -> 1.000000000000147 Inexact Rounded +dddiv4098 divide 3367992242167904 3367992242156228 -> 1.000000000003467 Inexact Rounded +dddiv4099 divide 6134869538966967 6134869538985986 -> 0.9999999999968999 Inexact Rounded + +-- Null tests +dddiv9998 divide 10 # -> NaN Invalid_operation +dddiv9999 divide # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddDivideInt.decTest b/Lib/test/decimaltestdata/ddDivideInt.decTest index 1555b42..bec5679 100644 --- a/Lib/test/decimaltestdata/ddDivideInt.decTest +++ b/Lib/test/decimaltestdata/ddDivideInt.decTest @@ -1,449 +1,449 @@ ------------------------------------------------------------------------- --- ddDivideInt.decTest -- decDouble integer division -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -dddvi001 divideint 1 1 -> 1 -dddvi002 divideint 2 1 -> 2 -dddvi003 divideint 1 2 -> 0 -dddvi004 divideint 2 2 -> 1 -dddvi005 divideint 0 1 -> 0 -dddvi006 divideint 0 2 -> 0 -dddvi007 divideint 1 3 -> 0 -dddvi008 divideint 2 3 -> 0 -dddvi009 divideint 3 3 -> 1 - -dddvi010 divideint 2.4 1 -> 2 -dddvi011 divideint 2.4 -1 -> -2 -dddvi012 divideint -2.4 1 -> -2 -dddvi013 divideint -2.4 -1 -> 2 -dddvi014 divideint 2.40 1 -> 2 -dddvi015 divideint 2.400 1 -> 2 -dddvi016 divideint 2.4 2 -> 1 -dddvi017 divideint 2.400 2 -> 1 -dddvi018 divideint 2. 2 -> 1 -dddvi019 divideint 20 20 -> 1 - -dddvi020 divideint 187 187 -> 1 -dddvi021 divideint 5 2 -> 2 -dddvi022 divideint 5 2.0 -> 2 -dddvi023 divideint 5 2.000 -> 2 -dddvi024 divideint 5 0.200 -> 25 -dddvi025 divideint 5 0.200 -> 25 - -dddvi030 divideint 1 2 -> 0 -dddvi031 divideint 1 4 -> 0 -dddvi032 divideint 1 8 -> 0 -dddvi033 divideint 1 16 -> 0 -dddvi034 divideint 1 32 -> 0 -dddvi035 divideint 1 64 -> 0 -dddvi040 divideint 1 -2 -> -0 -dddvi041 divideint 1 -4 -> -0 -dddvi042 divideint 1 -8 -> -0 -dddvi043 divideint 1 -16 -> -0 -dddvi044 divideint 1 -32 -> -0 -dddvi045 divideint 1 -64 -> -0 -dddvi050 divideint -1 2 -> -0 -dddvi051 divideint -1 4 -> -0 -dddvi052 divideint -1 8 -> -0 -dddvi053 divideint -1 16 -> -0 -dddvi054 divideint -1 32 -> -0 -dddvi055 divideint -1 64 -> -0 -dddvi060 divideint -1 -2 -> 0 -dddvi061 divideint -1 -4 -> 0 -dddvi062 divideint -1 -8 -> 0 -dddvi063 divideint -1 -16 -> 0 -dddvi064 divideint -1 -32 -> 0 -dddvi065 divideint -1 -64 -> 0 - --- similar with powers of ten -dddvi160 divideint 1 1 -> 1 -dddvi161 divideint 1 10 -> 0 -dddvi162 divideint 1 100 -> 0 -dddvi163 divideint 1 1000 -> 0 -dddvi164 divideint 1 10000 -> 0 -dddvi165 divideint 1 100000 -> 0 -dddvi166 divideint 1 1000000 -> 0 -dddvi167 divideint 1 10000000 -> 0 -dddvi168 divideint 1 100000000 -> 0 -dddvi170 divideint 1 -1 -> -1 -dddvi171 divideint 1 -10 -> -0 -dddvi172 divideint 1 -100 -> -0 -dddvi173 divideint 1 -1000 -> -0 -dddvi174 divideint 1 -10000 -> -0 -dddvi175 divideint 1 -100000 -> -0 -dddvi176 divideint 1 -1000000 -> -0 -dddvi177 divideint 1 -10000000 -> -0 -dddvi178 divideint 1 -100000000 -> -0 -dddvi180 divideint -1 1 -> -1 -dddvi181 divideint -1 10 -> -0 -dddvi182 divideint -1 100 -> -0 -dddvi183 divideint -1 1000 -> -0 -dddvi184 divideint -1 10000 -> -0 -dddvi185 divideint -1 100000 -> -0 -dddvi186 divideint -1 1000000 -> -0 -dddvi187 divideint -1 10000000 -> -0 -dddvi188 divideint -1 100000000 -> -0 -dddvi190 divideint -1 -1 -> 1 -dddvi191 divideint -1 -10 -> 0 -dddvi192 divideint -1 -100 -> 0 -dddvi193 divideint -1 -1000 -> 0 -dddvi194 divideint -1 -10000 -> 0 -dddvi195 divideint -1 -100000 -> 0 -dddvi196 divideint -1 -1000000 -> 0 -dddvi197 divideint -1 -10000000 -> 0 -dddvi198 divideint -1 -100000000 -> 0 - --- some long operand (at p=9) cases -dddvi070 divideint 999999999 1 -> 999999999 -dddvi071 divideint 999999999.4 1 -> 999999999 -dddvi072 divideint 999999999.5 1 -> 999999999 -dddvi073 divideint 999999999.9 1 -> 999999999 -dddvi074 divideint 999999999.999 1 -> 999999999 - -dddvi090 divideint 0. 1 -> 0 -dddvi091 divideint .0 1 -> 0 -dddvi092 divideint 0.00 1 -> 0 -dddvi093 divideint 0.00E+9 1 -> 0 -dddvi094 divideint 0.0000E-50 1 -> 0 - -dddvi100 divideint 1 1 -> 1 -dddvi101 divideint 1 2 -> 0 -dddvi102 divideint 1 3 -> 0 -dddvi103 divideint 1 4 -> 0 -dddvi104 divideint 1 5 -> 0 -dddvi105 divideint 1 6 -> 0 -dddvi106 divideint 1 7 -> 0 -dddvi107 divideint 1 8 -> 0 -dddvi108 divideint 1 9 -> 0 -dddvi109 divideint 1 10 -> 0 -dddvi110 divideint 1 1 -> 1 -dddvi111 divideint 2 1 -> 2 -dddvi112 divideint 3 1 -> 3 -dddvi113 divideint 4 1 -> 4 -dddvi114 divideint 5 1 -> 5 -dddvi115 divideint 6 1 -> 6 -dddvi116 divideint 7 1 -> 7 -dddvi117 divideint 8 1 -> 8 -dddvi118 divideint 9 1 -> 9 -dddvi119 divideint 10 1 -> 10 - --- from DiagBigDecimal -dddvi131 divideint 101.3 1 -> 101 -dddvi132 divideint 101.0 1 -> 101 -dddvi133 divideint 101.3 3 -> 33 -dddvi134 divideint 101.0 3 -> 33 -dddvi135 divideint 2.4 1 -> 2 -dddvi136 divideint 2.400 1 -> 2 -dddvi137 divideint 18 18 -> 1 -dddvi138 divideint 1120 1000 -> 1 -dddvi139 divideint 2.4 2 -> 1 -dddvi140 divideint 2.400 2 -> 1 -dddvi141 divideint 0.5 2.000 -> 0 -dddvi142 divideint 8.005 7 -> 1 -dddvi143 divideint 5 2 -> 2 -dddvi144 divideint 0 2 -> 0 -dddvi145 divideint 0.00 2 -> 0 - --- Others -dddvi150 divideint 12345 4.999 -> 2469 -dddvi151 divideint 12345 4.99 -> 2473 -dddvi152 divideint 12345 4.9 -> 2519 -dddvi153 divideint 12345 5 -> 2469 -dddvi154 divideint 12345 5.1 -> 2420 -dddvi155 divideint 12345 5.01 -> 2464 -dddvi156 divideint 12345 5.001 -> 2468 -dddvi157 divideint 101 7.6 -> 13 - --- Various flavours of divideint by 0 -dddvi201 divideint 0 0 -> NaN Division_undefined -dddvi202 divideint 0.0E5 0 -> NaN Division_undefined -dddvi203 divideint 0.000 0 -> NaN Division_undefined -dddvi204 divideint 0.0001 0 -> Infinity Division_by_zero -dddvi205 divideint 0.01 0 -> Infinity Division_by_zero -dddvi206 divideint 0.1 0 -> Infinity Division_by_zero -dddvi207 divideint 1 0 -> Infinity Division_by_zero -dddvi208 divideint 1 0.0 -> Infinity Division_by_zero -dddvi209 divideint 10 0.0 -> Infinity Division_by_zero -dddvi210 divideint 1E+100 0.0 -> Infinity Division_by_zero -dddvi211 divideint 1E+380 0 -> Infinity Division_by_zero -dddvi214 divideint -0.0001 0 -> -Infinity Division_by_zero -dddvi215 divideint -0.01 0 -> -Infinity Division_by_zero -dddvi216 divideint -0.1 0 -> -Infinity Division_by_zero -dddvi217 divideint -1 0 -> -Infinity Division_by_zero -dddvi218 divideint -1 0.0 -> -Infinity Division_by_zero -dddvi219 divideint -10 0.0 -> -Infinity Division_by_zero -dddvi220 divideint -1E+100 0.0 -> -Infinity Division_by_zero -dddvi221 divideint -1E+380 0 -> -Infinity Division_by_zero - --- test some cases that are close to exponent overflow -dddvi270 divideint 1 1e384 -> 0 -dddvi271 divideint 1 0.9e384 -> 0 -dddvi272 divideint 1 0.99e384 -> 0 -dddvi273 divideint 1 0.9999999999999999e384 -> 0 -dddvi274 divideint 9e384 1 -> NaN Division_impossible -dddvi275 divideint 9.9e384 1 -> NaN Division_impossible -dddvi276 divideint 9.99e384 1 -> NaN Division_impossible -dddvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible - -dddvi280 divideint 0.1 9e-383 -> NaN Division_impossible -dddvi281 divideint 0.1 99e-383 -> NaN Division_impossible -dddvi282 divideint 0.1 999e-383 -> NaN Division_impossible -dddvi283 divideint 0.1 9e-382 -> NaN Division_impossible -dddvi284 divideint 0.1 99e-382 -> NaN Division_impossible - --- GD edge cases: lhs smaller than rhs but more digits -dddvi301 divideint 0.9 2 -> 0 -dddvi302 divideint 0.9 2.0 -> 0 -dddvi303 divideint 0.9 2.1 -> 0 -dddvi304 divideint 0.9 2.00 -> 0 -dddvi305 divideint 0.9 2.01 -> 0 -dddvi306 divideint 0.12 1 -> 0 -dddvi307 divideint 0.12 1.0 -> 0 -dddvi308 divideint 0.12 1.00 -> 0 -dddvi309 divideint 0.12 1.0 -> 0 -dddvi310 divideint 0.12 1.00 -> 0 -dddvi311 divideint 0.12 2 -> 0 -dddvi312 divideint 0.12 2.0 -> 0 -dddvi313 divideint 0.12 2.1 -> 0 -dddvi314 divideint 0.12 2.00 -> 0 -dddvi315 divideint 0.12 2.01 -> 0 - --- edge cases of impossible -dddvi330 divideint 1234567890123456 10 -> 123456789012345 -dddvi331 divideint 1234567890123456 1 -> 1234567890123456 -dddvi332 divideint 1234567890123456 0.1 -> NaN Division_impossible -dddvi333 divideint 1234567890123456 0.01 -> NaN Division_impossible - --- overflow and underflow tests [from divide] -dddvi1051 divideint 1e+277 1e-311 -> NaN Division_impossible -dddvi1052 divideint 1e+277 -1e-311 -> NaN Division_impossible -dddvi1053 divideint -1e+277 1e-311 -> NaN Division_impossible -dddvi1054 divideint -1e+277 -1e-311 -> NaN Division_impossible -dddvi1055 divideint 1e-277 1e+311 -> 0 -dddvi1056 divideint 1e-277 -1e+311 -> -0 -dddvi1057 divideint -1e-277 1e+311 -> -0 -dddvi1058 divideint -1e-277 -1e+311 -> 0 - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -dddvi1060 divideint 1e-291 1e+101 -> 0 -dddvi1061 divideint 1e-291 1e+102 -> 0 -dddvi1062 divideint 1e-291 1e+103 -> 0 -dddvi1063 divideint 1e-291 1e+104 -> 0 -dddvi1064 divideint 1e-291 1e+105 -> 0 -dddvi1065 divideint 1e-291 1e+106 -> 0 -dddvi1066 divideint 1e-291 1e+107 -> 0 -dddvi1067 divideint 1e-291 1e+108 -> 0 -dddvi1068 divideint 1e-291 1e+109 -> 0 -dddvi1069 divideint 1e-291 1e+110 -> 0 - -dddvi1101 divideint 1.0000E-394 1 -> 0 -dddvi1102 divideint 1.000E-394 1e+1 -> 0 -dddvi1103 divideint 1.00E-394 1e+2 -> 0 - -dddvi1118 divideint 1E-394 1e+4 -> 0 -dddvi1119 divideint 3E-394 -1e+5 -> -0 -dddvi1120 divideint 5E-394 1e+5 -> 0 - -dddvi1124 divideint 1E-394 -1e+4 -> -0 -dddvi1130 divideint 3.0E-394 -1e+5 -> -0 - -dddvi1131 divideint 1.0E-199 1e+200 -> 0 -dddvi1132 divideint 1.0E-199 1e+199 -> 0 -dddvi1133 divideint 1.0E-199 1e+198 -> 0 -dddvi1134 divideint 2.0E-199 2e+198 -> 0 -dddvi1135 divideint 4.0E-199 4e+198 -> 0 - --- long operand checks -dddvi401 divideint 12345678000 100 -> 123456780 -dddvi402 divideint 1 12345678000 -> 0 -dddvi403 divideint 1234567800 10 -> 123456780 -dddvi404 divideint 1 1234567800 -> 0 -dddvi405 divideint 1234567890 10 -> 123456789 -dddvi406 divideint 1 1234567890 -> 0 -dddvi407 divideint 1234567891 10 -> 123456789 -dddvi408 divideint 1 1234567891 -> 0 -dddvi409 divideint 12345678901 100 -> 123456789 -dddvi410 divideint 1 12345678901 -> 0 -dddvi411 divideint 1234567896 10 -> 123456789 -dddvi412 divideint 1 1234567896 -> 0 -dddvi413 divideint 12345678948 100 -> 123456789 -dddvi414 divideint 12345678949 100 -> 123456789 -dddvi415 divideint 12345678950 100 -> 123456789 -dddvi416 divideint 12345678951 100 -> 123456789 -dddvi417 divideint 12345678999 100 -> 123456789 -dddvi441 divideint 12345678000 1 -> 12345678000 -dddvi442 divideint 1 12345678000 -> 0 -dddvi443 divideint 1234567800 1 -> 1234567800 -dddvi444 divideint 1 1234567800 -> 0 -dddvi445 divideint 1234567890 1 -> 1234567890 -dddvi446 divideint 1 1234567890 -> 0 -dddvi447 divideint 1234567891 1 -> 1234567891 -dddvi448 divideint 1 1234567891 -> 0 -dddvi449 divideint 12345678901 1 -> 12345678901 -dddvi450 divideint 1 12345678901 -> 0 -dddvi451 divideint 1234567896 1 -> 1234567896 -dddvi452 divideint 1 1234567896 -> 0 - --- more zeros, etc. -dddvi531 divideint 5.00 1E-3 -> 5000 -dddvi532 divideint 00.00 0.000 -> NaN Division_undefined -dddvi533 divideint 00.00 0E-3 -> NaN Division_undefined -dddvi534 divideint 0 -0 -> NaN Division_undefined -dddvi535 divideint -0 0 -> NaN Division_undefined -dddvi536 divideint -0 -0 -> NaN Division_undefined - -dddvi541 divideint 0 -1 -> -0 -dddvi542 divideint -0 -1 -> 0 -dddvi543 divideint 0 1 -> 0 -dddvi544 divideint -0 1 -> -0 -dddvi545 divideint -1 0 -> -Infinity Division_by_zero -dddvi546 divideint -1 -0 -> Infinity Division_by_zero -dddvi547 divideint 1 0 -> Infinity Division_by_zero -dddvi548 divideint 1 -0 -> -Infinity Division_by_zero - -dddvi551 divideint 0.0 -1 -> -0 -dddvi552 divideint -0.0 -1 -> 0 -dddvi553 divideint 0.0 1 -> 0 -dddvi554 divideint -0.0 1 -> -0 -dddvi555 divideint -1.0 0 -> -Infinity Division_by_zero -dddvi556 divideint -1.0 -0 -> Infinity Division_by_zero -dddvi557 divideint 1.0 0 -> Infinity Division_by_zero -dddvi558 divideint 1.0 -0 -> -Infinity Division_by_zero - -dddvi561 divideint 0 -1.0 -> -0 -dddvi562 divideint -0 -1.0 -> 0 -dddvi563 divideint 0 1.0 -> 0 -dddvi564 divideint -0 1.0 -> -0 -dddvi565 divideint -1 0.0 -> -Infinity Division_by_zero -dddvi566 divideint -1 -0.0 -> Infinity Division_by_zero -dddvi567 divideint 1 0.0 -> Infinity Division_by_zero -dddvi568 divideint 1 -0.0 -> -Infinity Division_by_zero - -dddvi571 divideint 0.0 -1.0 -> -0 -dddvi572 divideint -0.0 -1.0 -> 0 -dddvi573 divideint 0.0 1.0 -> 0 -dddvi574 divideint -0.0 1.0 -> -0 -dddvi575 divideint -1.0 0.0 -> -Infinity Division_by_zero -dddvi576 divideint -1.0 -0.0 -> Infinity Division_by_zero -dddvi577 divideint 1.0 0.0 -> Infinity Division_by_zero -dddvi578 divideint 1.0 -0.0 -> -Infinity Division_by_zero - --- Specials -dddvi580 divideint Inf -Inf -> NaN Invalid_operation -dddvi581 divideint Inf -1000 -> -Infinity -dddvi582 divideint Inf -1 -> -Infinity -dddvi583 divideint Inf -0 -> -Infinity -dddvi584 divideint Inf 0 -> Infinity -dddvi585 divideint Inf 1 -> Infinity -dddvi586 divideint Inf 1000 -> Infinity -dddvi587 divideint Inf Inf -> NaN Invalid_operation -dddvi588 divideint -1000 Inf -> -0 -dddvi589 divideint -Inf Inf -> NaN Invalid_operation -dddvi590 divideint -1 Inf -> -0 -dddvi591 divideint -0 Inf -> -0 -dddvi592 divideint 0 Inf -> 0 -dddvi593 divideint 1 Inf -> 0 -dddvi594 divideint 1000 Inf -> 0 -dddvi595 divideint Inf Inf -> NaN Invalid_operation - -dddvi600 divideint -Inf -Inf -> NaN Invalid_operation -dddvi601 divideint -Inf -1000 -> Infinity -dddvi602 divideint -Inf -1 -> Infinity -dddvi603 divideint -Inf -0 -> Infinity -dddvi604 divideint -Inf 0 -> -Infinity -dddvi605 divideint -Inf 1 -> -Infinity -dddvi606 divideint -Inf 1000 -> -Infinity -dddvi607 divideint -Inf Inf -> NaN Invalid_operation -dddvi608 divideint -1000 Inf -> -0 -dddvi609 divideint -Inf -Inf -> NaN Invalid_operation -dddvi610 divideint -1 -Inf -> 0 -dddvi611 divideint -0 -Inf -> 0 -dddvi612 divideint 0 -Inf -> -0 -dddvi613 divideint 1 -Inf -> -0 -dddvi614 divideint 1000 -Inf -> -0 -dddvi615 divideint Inf -Inf -> NaN Invalid_operation - -dddvi621 divideint NaN -Inf -> NaN -dddvi622 divideint NaN -1000 -> NaN -dddvi623 divideint NaN -1 -> NaN -dddvi624 divideint NaN -0 -> NaN -dddvi625 divideint NaN 0 -> NaN -dddvi626 divideint NaN 1 -> NaN -dddvi627 divideint NaN 1000 -> NaN -dddvi628 divideint NaN Inf -> NaN -dddvi629 divideint NaN NaN -> NaN -dddvi630 divideint -Inf NaN -> NaN -dddvi631 divideint -1000 NaN -> NaN -dddvi632 divideint -1 NaN -> NaN -dddvi633 divideint -0 NaN -> NaN -dddvi634 divideint 0 NaN -> NaN -dddvi635 divideint 1 NaN -> NaN -dddvi636 divideint 1000 NaN -> NaN -dddvi637 divideint Inf NaN -> NaN - -dddvi641 divideint sNaN -Inf -> NaN Invalid_operation -dddvi642 divideint sNaN -1000 -> NaN Invalid_operation -dddvi643 divideint sNaN -1 -> NaN Invalid_operation -dddvi644 divideint sNaN -0 -> NaN Invalid_operation -dddvi645 divideint sNaN 0 -> NaN Invalid_operation -dddvi646 divideint sNaN 1 -> NaN Invalid_operation -dddvi647 divideint sNaN 1000 -> NaN Invalid_operation -dddvi648 divideint sNaN NaN -> NaN Invalid_operation -dddvi649 divideint sNaN sNaN -> NaN Invalid_operation -dddvi650 divideint NaN sNaN -> NaN Invalid_operation -dddvi651 divideint -Inf sNaN -> NaN Invalid_operation -dddvi652 divideint -1000 sNaN -> NaN Invalid_operation -dddvi653 divideint -1 sNaN -> NaN Invalid_operation -dddvi654 divideint -0 sNaN -> NaN Invalid_operation -dddvi655 divideint 0 sNaN -> NaN Invalid_operation -dddvi656 divideint 1 sNaN -> NaN Invalid_operation -dddvi657 divideint 1000 sNaN -> NaN Invalid_operation -dddvi658 divideint Inf sNaN -> NaN Invalid_operation -dddvi659 divideint NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dddvi661 divideint NaN9 -Inf -> NaN9 -dddvi662 divideint NaN8 1000 -> NaN8 -dddvi663 divideint NaN7 Inf -> NaN7 -dddvi664 divideint -NaN6 NaN5 -> -NaN6 -dddvi665 divideint -Inf NaN4 -> NaN4 -dddvi666 divideint -1000 NaN3 -> NaN3 -dddvi667 divideint Inf -NaN2 -> -NaN2 - -dddvi671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation -dddvi672 divideint sNaN98 -1 -> NaN98 Invalid_operation -dddvi673 divideint sNaN97 NaN -> NaN97 Invalid_operation -dddvi674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation -dddvi675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation -dddvi676 divideint -Inf sNaN92 -> NaN92 Invalid_operation -dddvi677 divideint 0 sNaN91 -> NaN91 Invalid_operation -dddvi678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation -dddvi679 divideint NaN sNaN89 -> NaN89 Invalid_operation - --- Null tests -dddvi900 divideint 10 # -> NaN Invalid_operation -dddvi901 divideint # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddDivideInt.decTest -- decDouble integer division -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +dddvi001 divideint 1 1 -> 1 +dddvi002 divideint 2 1 -> 2 +dddvi003 divideint 1 2 -> 0 +dddvi004 divideint 2 2 -> 1 +dddvi005 divideint 0 1 -> 0 +dddvi006 divideint 0 2 -> 0 +dddvi007 divideint 1 3 -> 0 +dddvi008 divideint 2 3 -> 0 +dddvi009 divideint 3 3 -> 1 + +dddvi010 divideint 2.4 1 -> 2 +dddvi011 divideint 2.4 -1 -> -2 +dddvi012 divideint -2.4 1 -> -2 +dddvi013 divideint -2.4 -1 -> 2 +dddvi014 divideint 2.40 1 -> 2 +dddvi015 divideint 2.400 1 -> 2 +dddvi016 divideint 2.4 2 -> 1 +dddvi017 divideint 2.400 2 -> 1 +dddvi018 divideint 2. 2 -> 1 +dddvi019 divideint 20 20 -> 1 + +dddvi020 divideint 187 187 -> 1 +dddvi021 divideint 5 2 -> 2 +dddvi022 divideint 5 2.0 -> 2 +dddvi023 divideint 5 2.000 -> 2 +dddvi024 divideint 5 0.200 -> 25 +dddvi025 divideint 5 0.200 -> 25 + +dddvi030 divideint 1 2 -> 0 +dddvi031 divideint 1 4 -> 0 +dddvi032 divideint 1 8 -> 0 +dddvi033 divideint 1 16 -> 0 +dddvi034 divideint 1 32 -> 0 +dddvi035 divideint 1 64 -> 0 +dddvi040 divideint 1 -2 -> -0 +dddvi041 divideint 1 -4 -> -0 +dddvi042 divideint 1 -8 -> -0 +dddvi043 divideint 1 -16 -> -0 +dddvi044 divideint 1 -32 -> -0 +dddvi045 divideint 1 -64 -> -0 +dddvi050 divideint -1 2 -> -0 +dddvi051 divideint -1 4 -> -0 +dddvi052 divideint -1 8 -> -0 +dddvi053 divideint -1 16 -> -0 +dddvi054 divideint -1 32 -> -0 +dddvi055 divideint -1 64 -> -0 +dddvi060 divideint -1 -2 -> 0 +dddvi061 divideint -1 -4 -> 0 +dddvi062 divideint -1 -8 -> 0 +dddvi063 divideint -1 -16 -> 0 +dddvi064 divideint -1 -32 -> 0 +dddvi065 divideint -1 -64 -> 0 + +-- similar with powers of ten +dddvi160 divideint 1 1 -> 1 +dddvi161 divideint 1 10 -> 0 +dddvi162 divideint 1 100 -> 0 +dddvi163 divideint 1 1000 -> 0 +dddvi164 divideint 1 10000 -> 0 +dddvi165 divideint 1 100000 -> 0 +dddvi166 divideint 1 1000000 -> 0 +dddvi167 divideint 1 10000000 -> 0 +dddvi168 divideint 1 100000000 -> 0 +dddvi170 divideint 1 -1 -> -1 +dddvi171 divideint 1 -10 -> -0 +dddvi172 divideint 1 -100 -> -0 +dddvi173 divideint 1 -1000 -> -0 +dddvi174 divideint 1 -10000 -> -0 +dddvi175 divideint 1 -100000 -> -0 +dddvi176 divideint 1 -1000000 -> -0 +dddvi177 divideint 1 -10000000 -> -0 +dddvi178 divideint 1 -100000000 -> -0 +dddvi180 divideint -1 1 -> -1 +dddvi181 divideint -1 10 -> -0 +dddvi182 divideint -1 100 -> -0 +dddvi183 divideint -1 1000 -> -0 +dddvi184 divideint -1 10000 -> -0 +dddvi185 divideint -1 100000 -> -0 +dddvi186 divideint -1 1000000 -> -0 +dddvi187 divideint -1 10000000 -> -0 +dddvi188 divideint -1 100000000 -> -0 +dddvi190 divideint -1 -1 -> 1 +dddvi191 divideint -1 -10 -> 0 +dddvi192 divideint -1 -100 -> 0 +dddvi193 divideint -1 -1000 -> 0 +dddvi194 divideint -1 -10000 -> 0 +dddvi195 divideint -1 -100000 -> 0 +dddvi196 divideint -1 -1000000 -> 0 +dddvi197 divideint -1 -10000000 -> 0 +dddvi198 divideint -1 -100000000 -> 0 + +-- some long operand (at p=9) cases +dddvi070 divideint 999999999 1 -> 999999999 +dddvi071 divideint 999999999.4 1 -> 999999999 +dddvi072 divideint 999999999.5 1 -> 999999999 +dddvi073 divideint 999999999.9 1 -> 999999999 +dddvi074 divideint 999999999.999 1 -> 999999999 + +dddvi090 divideint 0. 1 -> 0 +dddvi091 divideint .0 1 -> 0 +dddvi092 divideint 0.00 1 -> 0 +dddvi093 divideint 0.00E+9 1 -> 0 +dddvi094 divideint 0.0000E-50 1 -> 0 + +dddvi100 divideint 1 1 -> 1 +dddvi101 divideint 1 2 -> 0 +dddvi102 divideint 1 3 -> 0 +dddvi103 divideint 1 4 -> 0 +dddvi104 divideint 1 5 -> 0 +dddvi105 divideint 1 6 -> 0 +dddvi106 divideint 1 7 -> 0 +dddvi107 divideint 1 8 -> 0 +dddvi108 divideint 1 9 -> 0 +dddvi109 divideint 1 10 -> 0 +dddvi110 divideint 1 1 -> 1 +dddvi111 divideint 2 1 -> 2 +dddvi112 divideint 3 1 -> 3 +dddvi113 divideint 4 1 -> 4 +dddvi114 divideint 5 1 -> 5 +dddvi115 divideint 6 1 -> 6 +dddvi116 divideint 7 1 -> 7 +dddvi117 divideint 8 1 -> 8 +dddvi118 divideint 9 1 -> 9 +dddvi119 divideint 10 1 -> 10 + +-- from DiagBigDecimal +dddvi131 divideint 101.3 1 -> 101 +dddvi132 divideint 101.0 1 -> 101 +dddvi133 divideint 101.3 3 -> 33 +dddvi134 divideint 101.0 3 -> 33 +dddvi135 divideint 2.4 1 -> 2 +dddvi136 divideint 2.400 1 -> 2 +dddvi137 divideint 18 18 -> 1 +dddvi138 divideint 1120 1000 -> 1 +dddvi139 divideint 2.4 2 -> 1 +dddvi140 divideint 2.400 2 -> 1 +dddvi141 divideint 0.5 2.000 -> 0 +dddvi142 divideint 8.005 7 -> 1 +dddvi143 divideint 5 2 -> 2 +dddvi144 divideint 0 2 -> 0 +dddvi145 divideint 0.00 2 -> 0 + +-- Others +dddvi150 divideint 12345 4.999 -> 2469 +dddvi151 divideint 12345 4.99 -> 2473 +dddvi152 divideint 12345 4.9 -> 2519 +dddvi153 divideint 12345 5 -> 2469 +dddvi154 divideint 12345 5.1 -> 2420 +dddvi155 divideint 12345 5.01 -> 2464 +dddvi156 divideint 12345 5.001 -> 2468 +dddvi157 divideint 101 7.6 -> 13 + +-- Various flavours of divideint by 0 +dddvi201 divideint 0 0 -> NaN Division_undefined +dddvi202 divideint 0.0E5 0 -> NaN Division_undefined +dddvi203 divideint 0.000 0 -> NaN Division_undefined +dddvi204 divideint 0.0001 0 -> Infinity Division_by_zero +dddvi205 divideint 0.01 0 -> Infinity Division_by_zero +dddvi206 divideint 0.1 0 -> Infinity Division_by_zero +dddvi207 divideint 1 0 -> Infinity Division_by_zero +dddvi208 divideint 1 0.0 -> Infinity Division_by_zero +dddvi209 divideint 10 0.0 -> Infinity Division_by_zero +dddvi210 divideint 1E+100 0.0 -> Infinity Division_by_zero +dddvi211 divideint 1E+380 0 -> Infinity Division_by_zero +dddvi214 divideint -0.0001 0 -> -Infinity Division_by_zero +dddvi215 divideint -0.01 0 -> -Infinity Division_by_zero +dddvi216 divideint -0.1 0 -> -Infinity Division_by_zero +dddvi217 divideint -1 0 -> -Infinity Division_by_zero +dddvi218 divideint -1 0.0 -> -Infinity Division_by_zero +dddvi219 divideint -10 0.0 -> -Infinity Division_by_zero +dddvi220 divideint -1E+100 0.0 -> -Infinity Division_by_zero +dddvi221 divideint -1E+380 0 -> -Infinity Division_by_zero + +-- test some cases that are close to exponent overflow +dddvi270 divideint 1 1e384 -> 0 +dddvi271 divideint 1 0.9e384 -> 0 +dddvi272 divideint 1 0.99e384 -> 0 +dddvi273 divideint 1 0.9999999999999999e384 -> 0 +dddvi274 divideint 9e384 1 -> NaN Division_impossible +dddvi275 divideint 9.9e384 1 -> NaN Division_impossible +dddvi276 divideint 9.99e384 1 -> NaN Division_impossible +dddvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible + +dddvi280 divideint 0.1 9e-383 -> NaN Division_impossible +dddvi281 divideint 0.1 99e-383 -> NaN Division_impossible +dddvi282 divideint 0.1 999e-383 -> NaN Division_impossible +dddvi283 divideint 0.1 9e-382 -> NaN Division_impossible +dddvi284 divideint 0.1 99e-382 -> NaN Division_impossible + +-- GD edge cases: lhs smaller than rhs but more digits +dddvi301 divideint 0.9 2 -> 0 +dddvi302 divideint 0.9 2.0 -> 0 +dddvi303 divideint 0.9 2.1 -> 0 +dddvi304 divideint 0.9 2.00 -> 0 +dddvi305 divideint 0.9 2.01 -> 0 +dddvi306 divideint 0.12 1 -> 0 +dddvi307 divideint 0.12 1.0 -> 0 +dddvi308 divideint 0.12 1.00 -> 0 +dddvi309 divideint 0.12 1.0 -> 0 +dddvi310 divideint 0.12 1.00 -> 0 +dddvi311 divideint 0.12 2 -> 0 +dddvi312 divideint 0.12 2.0 -> 0 +dddvi313 divideint 0.12 2.1 -> 0 +dddvi314 divideint 0.12 2.00 -> 0 +dddvi315 divideint 0.12 2.01 -> 0 + +-- edge cases of impossible +dddvi330 divideint 1234567890123456 10 -> 123456789012345 +dddvi331 divideint 1234567890123456 1 -> 1234567890123456 +dddvi332 divideint 1234567890123456 0.1 -> NaN Division_impossible +dddvi333 divideint 1234567890123456 0.01 -> NaN Division_impossible + +-- overflow and underflow tests [from divide] +dddvi1051 divideint 1e+277 1e-311 -> NaN Division_impossible +dddvi1052 divideint 1e+277 -1e-311 -> NaN Division_impossible +dddvi1053 divideint -1e+277 1e-311 -> NaN Division_impossible +dddvi1054 divideint -1e+277 -1e-311 -> NaN Division_impossible +dddvi1055 divideint 1e-277 1e+311 -> 0 +dddvi1056 divideint 1e-277 -1e+311 -> -0 +dddvi1057 divideint -1e-277 1e+311 -> -0 +dddvi1058 divideint -1e-277 -1e+311 -> 0 + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +dddvi1060 divideint 1e-291 1e+101 -> 0 +dddvi1061 divideint 1e-291 1e+102 -> 0 +dddvi1062 divideint 1e-291 1e+103 -> 0 +dddvi1063 divideint 1e-291 1e+104 -> 0 +dddvi1064 divideint 1e-291 1e+105 -> 0 +dddvi1065 divideint 1e-291 1e+106 -> 0 +dddvi1066 divideint 1e-291 1e+107 -> 0 +dddvi1067 divideint 1e-291 1e+108 -> 0 +dddvi1068 divideint 1e-291 1e+109 -> 0 +dddvi1069 divideint 1e-291 1e+110 -> 0 + +dddvi1101 divideint 1.0000E-394 1 -> 0 +dddvi1102 divideint 1.000E-394 1e+1 -> 0 +dddvi1103 divideint 1.00E-394 1e+2 -> 0 + +dddvi1118 divideint 1E-394 1e+4 -> 0 +dddvi1119 divideint 3E-394 -1e+5 -> -0 +dddvi1120 divideint 5E-394 1e+5 -> 0 + +dddvi1124 divideint 1E-394 -1e+4 -> -0 +dddvi1130 divideint 3.0E-394 -1e+5 -> -0 + +dddvi1131 divideint 1.0E-199 1e+200 -> 0 +dddvi1132 divideint 1.0E-199 1e+199 -> 0 +dddvi1133 divideint 1.0E-199 1e+198 -> 0 +dddvi1134 divideint 2.0E-199 2e+198 -> 0 +dddvi1135 divideint 4.0E-199 4e+198 -> 0 + +-- long operand checks +dddvi401 divideint 12345678000 100 -> 123456780 +dddvi402 divideint 1 12345678000 -> 0 +dddvi403 divideint 1234567800 10 -> 123456780 +dddvi404 divideint 1 1234567800 -> 0 +dddvi405 divideint 1234567890 10 -> 123456789 +dddvi406 divideint 1 1234567890 -> 0 +dddvi407 divideint 1234567891 10 -> 123456789 +dddvi408 divideint 1 1234567891 -> 0 +dddvi409 divideint 12345678901 100 -> 123456789 +dddvi410 divideint 1 12345678901 -> 0 +dddvi411 divideint 1234567896 10 -> 123456789 +dddvi412 divideint 1 1234567896 -> 0 +dddvi413 divideint 12345678948 100 -> 123456789 +dddvi414 divideint 12345678949 100 -> 123456789 +dddvi415 divideint 12345678950 100 -> 123456789 +dddvi416 divideint 12345678951 100 -> 123456789 +dddvi417 divideint 12345678999 100 -> 123456789 +dddvi441 divideint 12345678000 1 -> 12345678000 +dddvi442 divideint 1 12345678000 -> 0 +dddvi443 divideint 1234567800 1 -> 1234567800 +dddvi444 divideint 1 1234567800 -> 0 +dddvi445 divideint 1234567890 1 -> 1234567890 +dddvi446 divideint 1 1234567890 -> 0 +dddvi447 divideint 1234567891 1 -> 1234567891 +dddvi448 divideint 1 1234567891 -> 0 +dddvi449 divideint 12345678901 1 -> 12345678901 +dddvi450 divideint 1 12345678901 -> 0 +dddvi451 divideint 1234567896 1 -> 1234567896 +dddvi452 divideint 1 1234567896 -> 0 + +-- more zeros, etc. +dddvi531 divideint 5.00 1E-3 -> 5000 +dddvi532 divideint 00.00 0.000 -> NaN Division_undefined +dddvi533 divideint 00.00 0E-3 -> NaN Division_undefined +dddvi534 divideint 0 -0 -> NaN Division_undefined +dddvi535 divideint -0 0 -> NaN Division_undefined +dddvi536 divideint -0 -0 -> NaN Division_undefined + +dddvi541 divideint 0 -1 -> -0 +dddvi542 divideint -0 -1 -> 0 +dddvi543 divideint 0 1 -> 0 +dddvi544 divideint -0 1 -> -0 +dddvi545 divideint -1 0 -> -Infinity Division_by_zero +dddvi546 divideint -1 -0 -> Infinity Division_by_zero +dddvi547 divideint 1 0 -> Infinity Division_by_zero +dddvi548 divideint 1 -0 -> -Infinity Division_by_zero + +dddvi551 divideint 0.0 -1 -> -0 +dddvi552 divideint -0.0 -1 -> 0 +dddvi553 divideint 0.0 1 -> 0 +dddvi554 divideint -0.0 1 -> -0 +dddvi555 divideint -1.0 0 -> -Infinity Division_by_zero +dddvi556 divideint -1.0 -0 -> Infinity Division_by_zero +dddvi557 divideint 1.0 0 -> Infinity Division_by_zero +dddvi558 divideint 1.0 -0 -> -Infinity Division_by_zero + +dddvi561 divideint 0 -1.0 -> -0 +dddvi562 divideint -0 -1.0 -> 0 +dddvi563 divideint 0 1.0 -> 0 +dddvi564 divideint -0 1.0 -> -0 +dddvi565 divideint -1 0.0 -> -Infinity Division_by_zero +dddvi566 divideint -1 -0.0 -> Infinity Division_by_zero +dddvi567 divideint 1 0.0 -> Infinity Division_by_zero +dddvi568 divideint 1 -0.0 -> -Infinity Division_by_zero + +dddvi571 divideint 0.0 -1.0 -> -0 +dddvi572 divideint -0.0 -1.0 -> 0 +dddvi573 divideint 0.0 1.0 -> 0 +dddvi574 divideint -0.0 1.0 -> -0 +dddvi575 divideint -1.0 0.0 -> -Infinity Division_by_zero +dddvi576 divideint -1.0 -0.0 -> Infinity Division_by_zero +dddvi577 divideint 1.0 0.0 -> Infinity Division_by_zero +dddvi578 divideint 1.0 -0.0 -> -Infinity Division_by_zero + +-- Specials +dddvi580 divideint Inf -Inf -> NaN Invalid_operation +dddvi581 divideint Inf -1000 -> -Infinity +dddvi582 divideint Inf -1 -> -Infinity +dddvi583 divideint Inf -0 -> -Infinity +dddvi584 divideint Inf 0 -> Infinity +dddvi585 divideint Inf 1 -> Infinity +dddvi586 divideint Inf 1000 -> Infinity +dddvi587 divideint Inf Inf -> NaN Invalid_operation +dddvi588 divideint -1000 Inf -> -0 +dddvi589 divideint -Inf Inf -> NaN Invalid_operation +dddvi590 divideint -1 Inf -> -0 +dddvi591 divideint -0 Inf -> -0 +dddvi592 divideint 0 Inf -> 0 +dddvi593 divideint 1 Inf -> 0 +dddvi594 divideint 1000 Inf -> 0 +dddvi595 divideint Inf Inf -> NaN Invalid_operation + +dddvi600 divideint -Inf -Inf -> NaN Invalid_operation +dddvi601 divideint -Inf -1000 -> Infinity +dddvi602 divideint -Inf -1 -> Infinity +dddvi603 divideint -Inf -0 -> Infinity +dddvi604 divideint -Inf 0 -> -Infinity +dddvi605 divideint -Inf 1 -> -Infinity +dddvi606 divideint -Inf 1000 -> -Infinity +dddvi607 divideint -Inf Inf -> NaN Invalid_operation +dddvi608 divideint -1000 Inf -> -0 +dddvi609 divideint -Inf -Inf -> NaN Invalid_operation +dddvi610 divideint -1 -Inf -> 0 +dddvi611 divideint -0 -Inf -> 0 +dddvi612 divideint 0 -Inf -> -0 +dddvi613 divideint 1 -Inf -> -0 +dddvi614 divideint 1000 -Inf -> -0 +dddvi615 divideint Inf -Inf -> NaN Invalid_operation + +dddvi621 divideint NaN -Inf -> NaN +dddvi622 divideint NaN -1000 -> NaN +dddvi623 divideint NaN -1 -> NaN +dddvi624 divideint NaN -0 -> NaN +dddvi625 divideint NaN 0 -> NaN +dddvi626 divideint NaN 1 -> NaN +dddvi627 divideint NaN 1000 -> NaN +dddvi628 divideint NaN Inf -> NaN +dddvi629 divideint NaN NaN -> NaN +dddvi630 divideint -Inf NaN -> NaN +dddvi631 divideint -1000 NaN -> NaN +dddvi632 divideint -1 NaN -> NaN +dddvi633 divideint -0 NaN -> NaN +dddvi634 divideint 0 NaN -> NaN +dddvi635 divideint 1 NaN -> NaN +dddvi636 divideint 1000 NaN -> NaN +dddvi637 divideint Inf NaN -> NaN + +dddvi641 divideint sNaN -Inf -> NaN Invalid_operation +dddvi642 divideint sNaN -1000 -> NaN Invalid_operation +dddvi643 divideint sNaN -1 -> NaN Invalid_operation +dddvi644 divideint sNaN -0 -> NaN Invalid_operation +dddvi645 divideint sNaN 0 -> NaN Invalid_operation +dddvi646 divideint sNaN 1 -> NaN Invalid_operation +dddvi647 divideint sNaN 1000 -> NaN Invalid_operation +dddvi648 divideint sNaN NaN -> NaN Invalid_operation +dddvi649 divideint sNaN sNaN -> NaN Invalid_operation +dddvi650 divideint NaN sNaN -> NaN Invalid_operation +dddvi651 divideint -Inf sNaN -> NaN Invalid_operation +dddvi652 divideint -1000 sNaN -> NaN Invalid_operation +dddvi653 divideint -1 sNaN -> NaN Invalid_operation +dddvi654 divideint -0 sNaN -> NaN Invalid_operation +dddvi655 divideint 0 sNaN -> NaN Invalid_operation +dddvi656 divideint 1 sNaN -> NaN Invalid_operation +dddvi657 divideint 1000 sNaN -> NaN Invalid_operation +dddvi658 divideint Inf sNaN -> NaN Invalid_operation +dddvi659 divideint NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dddvi661 divideint NaN9 -Inf -> NaN9 +dddvi662 divideint NaN8 1000 -> NaN8 +dddvi663 divideint NaN7 Inf -> NaN7 +dddvi664 divideint -NaN6 NaN5 -> -NaN6 +dddvi665 divideint -Inf NaN4 -> NaN4 +dddvi666 divideint -1000 NaN3 -> NaN3 +dddvi667 divideint Inf -NaN2 -> -NaN2 + +dddvi671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation +dddvi672 divideint sNaN98 -1 -> NaN98 Invalid_operation +dddvi673 divideint sNaN97 NaN -> NaN97 Invalid_operation +dddvi674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation +dddvi675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation +dddvi676 divideint -Inf sNaN92 -> NaN92 Invalid_operation +dddvi677 divideint 0 sNaN91 -> NaN91 Invalid_operation +dddvi678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation +dddvi679 divideint NaN sNaN89 -> NaN89 Invalid_operation + +-- Null tests +dddvi900 divideint 10 # -> NaN Invalid_operation +dddvi901 divideint # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddEncode.decTest b/Lib/test/decimaltestdata/ddEncode.decTest index e91ec61..de9d31c 100644 --- a/Lib/test/decimaltestdata/ddEncode.decTest +++ b/Lib/test/decimaltestdata/ddEncode.decTest @@ -1,495 +1,495 @@ ------------------------------------------------------------------------- --- ddEncode.decTest -- decimal eight-byte format testcases -- --- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- --- [Previously called decimal64.decTest] -version: 2.59 - --- This set of tests is for the eight-byte concrete representation. --- Its characteristics are: --- --- 1 bit sign --- 5 bits combination field --- 8 bits exponent continuation --- 50 bits coefficient continuation --- --- Total exponent length 10 bits --- Total coefficient length 54 bits (16 digits) --- --- Elimit = 767 (maximum encoded exponent) --- Emax = 384 (largest exponent value) --- Emin = -383 (smallest exponent value) --- bias = 398 (subtracted from encoded exponent) = -Etiny - --- The testcases here have only exactly representable data on the --- 'left-hand-side'; rounding from strings is tested in 'base' --- testcase groups. - -extended: 1 -clamp: 1 -precision: 16 -rounding: half_up -maxExponent: 384 -minExponent: -383 - --- General testcases --- (mostly derived from the Strawman 4 document and examples) -dece001 apply #A2300000000003D0 -> -7.50 -dece002 apply -7.50 -> #A2300000000003D0 --- derivative canonical plain strings -dece003 apply #A23c0000000003D0 -> -7.50E+3 -dece004 apply -7.50E+3 -> #A23c0000000003D0 -dece005 apply #A2380000000003D0 -> -750 -dece006 apply -750 -> #A2380000000003D0 -dece007 apply #A2340000000003D0 -> -75.0 -dece008 apply -75.0 -> #A2340000000003D0 -dece009 apply #A22c0000000003D0 -> -0.750 -dece010 apply -0.750 -> #A22c0000000003D0 -dece011 apply #A2280000000003D0 -> -0.0750 -dece012 apply -0.0750 -> #A2280000000003D0 -dece013 apply #A2200000000003D0 -> -0.000750 -dece014 apply -0.000750 -> #A2200000000003D0 -dece015 apply #A2180000000003D0 -> -0.00000750 -dece016 apply -0.00000750 -> #A2180000000003D0 -dece017 apply #A2140000000003D0 -> -7.50E-7 -dece018 apply -7.50E-7 -> #A2140000000003D0 - --- Normality -dece020 apply 1234567890123456 -> #263934b9c1e28e56 -dece021 apply -1234567890123456 -> #a63934b9c1e28e56 -dece022 apply 1234.567890123456 -> #260934b9c1e28e56 -dece023 apply #260934b9c1e28e56 -> 1234.567890123456 -dece024 apply 1111111111111111 -> #2638912449124491 -dece025 apply 9999999999999999 -> #6e38ff3fcff3fcff - --- Nmax and similar -dece031 apply 9999999999999999E+369 -> #77fcff3fcff3fcff -dece032 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff -dece033 apply #77fcff3fcff3fcff -> 9.999999999999999E+384 -dece034 apply 1.234567890123456E+384 -> #47fd34b9c1e28e56 -dece035 apply #47fd34b9c1e28e56 -> 1.234567890123456E+384 --- fold-downs (more below) -dece036 apply 1.23E+384 -> #47fd300000000000 Clamped -dece037 apply #47fd300000000000 -> 1.230000000000000E+384 -decd038 apply 1E+384 -> #47fc000000000000 Clamped -decd039 apply #47fc000000000000 -> 1.000000000000000E+384 - -decd051 apply 12345 -> #22380000000049c5 -decd052 apply #22380000000049c5 -> 12345 -decd053 apply 1234 -> #2238000000000534 -decd054 apply #2238000000000534 -> 1234 -decd055 apply 123 -> #22380000000000a3 -decd056 apply #22380000000000a3 -> 123 -decd057 apply 12 -> #2238000000000012 -decd058 apply #2238000000000012 -> 12 -decd059 apply 1 -> #2238000000000001 -decd060 apply #2238000000000001 -> 1 -decd061 apply 1.23 -> #22300000000000a3 -decd062 apply #22300000000000a3 -> 1.23 -decd063 apply 123.45 -> #22300000000049c5 -decd064 apply #22300000000049c5 -> 123.45 - --- Nmin and below -decd071 apply 1E-383 -> #003c000000000001 -decd072 apply #003c000000000001 -> 1E-383 -decd073 apply 1.000000000000000E-383 -> #0400000000000000 -decd074 apply #0400000000000000 -> 1.000000000000000E-383 -decd075 apply 1.000000000000001E-383 -> #0400000000000001 -decd076 apply #0400000000000001 -> 1.000000000000001E-383 - -decd077 apply 0.100000000000000E-383 -> #0000800000000000 Subnormal -decd078 apply #0000800000000000 -> 1.00000000000000E-384 Subnormal -decd079 apply 0.000000000000010E-383 -> #0000000000000010 Subnormal -decd080 apply #0000000000000010 -> 1.0E-397 Subnormal -decd081 apply 0.00000000000001E-383 -> #0004000000000001 Subnormal -decd082 apply #0004000000000001 -> 1E-397 Subnormal -decd083 apply 0.000000000000001E-383 -> #0000000000000001 Subnormal -decd084 apply #0000000000000001 -> 1E-398 Subnormal --- next is smallest all-nines -decd085 apply 9999999999999999E-398 -> #6400ff3fcff3fcff -decd086 apply #6400ff3fcff3fcff -> 9.999999999999999E-383 --- and a problematic divide result -decd088 apply 1.111111111111111E-383 -> #0400912449124491 -decd089 apply #0400912449124491 -> 1.111111111111111E-383 - --- forties -decd090 apply 40 -> #2238000000000040 -decd091 apply 39.99 -> #2230000000000cff - --- underflows cannot be tested as all LHS exact - --- Same again, negatives --- Nmax and similar -decd122 apply -9.999999999999999E+384 -> #f7fcff3fcff3fcff -decd123 apply #f7fcff3fcff3fcff -> -9.999999999999999E+384 -decd124 apply -1.234567890123456E+384 -> #c7fd34b9c1e28e56 -decd125 apply #c7fd34b9c1e28e56 -> -1.234567890123456E+384 --- fold-downs (more below) -decd130 apply -1.23E+384 -> #c7fd300000000000 Clamped -decd131 apply #c7fd300000000000 -> -1.230000000000000E+384 -decd132 apply -1E+384 -> #c7fc000000000000 Clamped -decd133 apply #c7fc000000000000 -> -1.000000000000000E+384 - --- overflows -decd151 apply -12345 -> #a2380000000049c5 -decd152 apply #a2380000000049c5 -> -12345 -decd153 apply -1234 -> #a238000000000534 -decd154 apply #a238000000000534 -> -1234 -decd155 apply -123 -> #a2380000000000a3 -decd156 apply #a2380000000000a3 -> -123 -decd157 apply -12 -> #a238000000000012 -decd158 apply #a238000000000012 -> -12 -decd159 apply -1 -> #a238000000000001 -decd160 apply #a238000000000001 -> -1 -decd161 apply -1.23 -> #a2300000000000a3 -decd162 apply #a2300000000000a3 -> -1.23 -decd163 apply -123.45 -> #a2300000000049c5 -decd164 apply #a2300000000049c5 -> -123.45 - --- Nmin and below -decd171 apply -1E-383 -> #803c000000000001 -decd172 apply #803c000000000001 -> -1E-383 -decd173 apply -1.000000000000000E-383 -> #8400000000000000 -decd174 apply #8400000000000000 -> -1.000000000000000E-383 -decd175 apply -1.000000000000001E-383 -> #8400000000000001 -decd176 apply #8400000000000001 -> -1.000000000000001E-383 - -decd177 apply -0.100000000000000E-383 -> #8000800000000000 Subnormal -decd178 apply #8000800000000000 -> -1.00000000000000E-384 Subnormal -decd179 apply -0.000000000000010E-383 -> #8000000000000010 Subnormal -decd180 apply #8000000000000010 -> -1.0E-397 Subnormal -decd181 apply -0.00000000000001E-383 -> #8004000000000001 Subnormal -decd182 apply #8004000000000001 -> -1E-397 Subnormal -decd183 apply -0.000000000000001E-383 -> #8000000000000001 Subnormal -decd184 apply #8000000000000001 -> -1E-398 Subnormal --- next is smallest all-nines -decd185 apply -9999999999999999E-398 -> #e400ff3fcff3fcff -decd186 apply #e400ff3fcff3fcff -> -9.999999999999999E-383 --- and a tricky subnormal -decd187 apply 1.11111111111524E-384 -> #00009124491246a4 Subnormal -decd188 apply #00009124491246a4 -> 1.11111111111524E-384 Subnormal - --- near-underflows -decd189 apply -1e-398 -> #8000000000000001 Subnormal -decd190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded - --- zeros -decd401 apply 0E-500 -> #0000000000000000 Clamped -decd402 apply 0E-400 -> #0000000000000000 Clamped -decd403 apply 0E-398 -> #0000000000000000 -decd404 apply #0000000000000000 -> 0E-398 -decd405 apply 0.000000000000000E-383 -> #0000000000000000 -decd406 apply #0000000000000000 -> 0E-398 -decd407 apply 0E-2 -> #2230000000000000 -decd408 apply #2230000000000000 -> 0.00 -decd409 apply 0 -> #2238000000000000 -decd410 apply #2238000000000000 -> 0 -decd411 apply 0E+3 -> #2244000000000000 -decd412 apply #2244000000000000 -> 0E+3 -decd413 apply 0E+369 -> #43fc000000000000 -decd414 apply #43fc000000000000 -> 0E+369 --- clamped zeros... -decd415 apply 0E+370 -> #43fc000000000000 Clamped -decd416 apply #43fc000000000000 -> 0E+369 -decd417 apply 0E+384 -> #43fc000000000000 Clamped -decd418 apply #43fc000000000000 -> 0E+369 -decd419 apply 0E+400 -> #43fc000000000000 Clamped -decd420 apply #43fc000000000000 -> 0E+369 -decd421 apply 0E+500 -> #43fc000000000000 Clamped -decd422 apply #43fc000000000000 -> 0E+369 - --- negative zeros -decd431 apply -0E-400 -> #8000000000000000 Clamped -decd432 apply -0E-400 -> #8000000000000000 Clamped -decd433 apply -0E-398 -> #8000000000000000 -decd434 apply #8000000000000000 -> -0E-398 -decd435 apply -0.000000000000000E-383 -> #8000000000000000 -decd436 apply #8000000000000000 -> -0E-398 -decd437 apply -0E-2 -> #a230000000000000 -decd438 apply #a230000000000000 -> -0.00 -decd439 apply -0 -> #a238000000000000 -decd440 apply #a238000000000000 -> -0 -decd441 apply -0E+3 -> #a244000000000000 -decd442 apply #a244000000000000 -> -0E+3 -decd443 apply -0E+369 -> #c3fc000000000000 -decd444 apply #c3fc000000000000 -> -0E+369 --- clamped zeros... -decd445 apply -0E+370 -> #c3fc000000000000 Clamped -decd446 apply #c3fc000000000000 -> -0E+369 -decd447 apply -0E+384 -> #c3fc000000000000 Clamped -decd448 apply #c3fc000000000000 -> -0E+369 -decd449 apply -0E+400 -> #c3fc000000000000 Clamped -decd450 apply #c3fc000000000000 -> -0E+369 -decd451 apply -0E+500 -> #c3fc000000000000 Clamped -decd452 apply #c3fc000000000000 -> -0E+369 - --- exponents -decd460 apply #225c000000000007 -> 7E+9 -decd461 apply 7E+9 -> #225c000000000007 -decd462 apply #23c4000000000007 -> 7E+99 -decd463 apply 7E+99 -> #23c4000000000007 - --- Specials -decd500 apply Infinity -> #7800000000000000 -decd501 apply #7878787878787878 -> #7800000000000000 -decd502 apply #7800000000000000 -> Infinity -decd503 apply #7979797979797979 -> #7800000000000000 -decd504 apply #7900000000000000 -> Infinity -decd505 apply #7a7a7a7a7a7a7a7a -> #7800000000000000 -decd506 apply #7a00000000000000 -> Infinity -decd507 apply #7b7b7b7b7b7b7b7b -> #7800000000000000 -decd508 apply #7b00000000000000 -> Infinity - -decd509 apply NaN -> #7c00000000000000 -decd510 apply #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c -decd511 apply #7c00000000000000 -> NaN -decd512 apply #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d -decd513 apply #7d00000000000000 -> NaN -decd514 apply #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e -decd515 apply #7e00000000000000 -> sNaN -decd516 apply #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f -decd517 apply #7f00000000000000 -> sNaN -decd518 apply #7fffffffffffffff -> sNaN999999999999999 -decd519 apply #7fffffffffffffff -> #7e00ff3fcff3fcff - -decd520 apply -Infinity -> #f800000000000000 -decd521 apply #f878787878787878 -> #f800000000000000 -decd522 apply #f800000000000000 -> -Infinity -decd523 apply #f979797979797979 -> #f800000000000000 -decd524 apply #f900000000000000 -> -Infinity -decd525 apply #fa7a7a7a7a7a7a7a -> #f800000000000000 -decd526 apply #fa00000000000000 -> -Infinity -decd527 apply #fb7b7b7b7b7b7b7b -> #f800000000000000 -decd528 apply #fb00000000000000 -> -Infinity - -decd529 apply -NaN -> #fc00000000000000 -decd530 apply #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c -decd531 apply #fc00000000000000 -> -NaN -decd532 apply #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d -decd533 apply #fd00000000000000 -> -NaN -decd534 apply #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e -decd535 apply #fe00000000000000 -> -sNaN -decd536 apply #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f -decd537 apply #ff00000000000000 -> -sNaN -decd538 apply #ffffffffffffffff -> -sNaN999999999999999 -decd539 apply #ffffffffffffffff -> #fe00ff3fcff3fcff - --- diagnostic NaNs -decd540 apply NaN -> #7c00000000000000 -decd541 apply NaN0 -> #7c00000000000000 -decd542 apply NaN1 -> #7c00000000000001 -decd543 apply NaN12 -> #7c00000000000012 -decd544 apply NaN79 -> #7c00000000000079 -decd545 apply NaN12345 -> #7c000000000049c5 -decd546 apply NaN123456 -> #7c00000000028e56 -decd547 apply NaN799799 -> #7c000000000f7fdf -decd548 apply NaN799799799799799 -> #7c03dff7fdff7fdf -decd549 apply NaN999999999999999 -> #7c00ff3fcff3fcff --- too many digits - --- fold-down full sequence -decd601 apply 1E+384 -> #47fc000000000000 Clamped -decd602 apply #47fc000000000000 -> 1.000000000000000E+384 -decd603 apply 1E+383 -> #43fc800000000000 Clamped -decd604 apply #43fc800000000000 -> 1.00000000000000E+383 -decd605 apply 1E+382 -> #43fc100000000000 Clamped -decd606 apply #43fc100000000000 -> 1.0000000000000E+382 -decd607 apply 1E+381 -> #43fc010000000000 Clamped -decd608 apply #43fc010000000000 -> 1.000000000000E+381 -decd609 apply 1E+380 -> #43fc002000000000 Clamped -decd610 apply #43fc002000000000 -> 1.00000000000E+380 -decd611 apply 1E+379 -> #43fc000400000000 Clamped -decd612 apply #43fc000400000000 -> 1.0000000000E+379 -decd613 apply 1E+378 -> #43fc000040000000 Clamped -decd614 apply #43fc000040000000 -> 1.000000000E+378 -decd615 apply 1E+377 -> #43fc000008000000 Clamped -decd616 apply #43fc000008000000 -> 1.00000000E+377 -decd617 apply 1E+376 -> #43fc000001000000 Clamped -decd618 apply #43fc000001000000 -> 1.0000000E+376 -decd619 apply 1E+375 -> #43fc000000100000 Clamped -decd620 apply #43fc000000100000 -> 1.000000E+375 -decd621 apply 1E+374 -> #43fc000000020000 Clamped -decd622 apply #43fc000000020000 -> 1.00000E+374 -decd623 apply 1E+373 -> #43fc000000004000 Clamped -decd624 apply #43fc000000004000 -> 1.0000E+373 -decd625 apply 1E+372 -> #43fc000000000400 Clamped -decd626 apply #43fc000000000400 -> 1.000E+372 -decd627 apply 1E+371 -> #43fc000000000080 Clamped -decd628 apply #43fc000000000080 -> 1.00E+371 -decd629 apply 1E+370 -> #43fc000000000010 Clamped -decd630 apply #43fc000000000010 -> 1.0E+370 -decd631 apply 1E+369 -> #43fc000000000001 -decd632 apply #43fc000000000001 -> 1E+369 -decd633 apply 1E+368 -> #43f8000000000001 -decd634 apply #43f8000000000001 -> 1E+368 --- same with 9s -decd641 apply 9E+384 -> #77fc000000000000 Clamped -decd642 apply #77fc000000000000 -> 9.000000000000000E+384 -decd643 apply 9E+383 -> #43fc8c0000000000 Clamped -decd644 apply #43fc8c0000000000 -> 9.00000000000000E+383 -decd645 apply 9E+382 -> #43fc1a0000000000 Clamped -decd646 apply #43fc1a0000000000 -> 9.0000000000000E+382 -decd647 apply 9E+381 -> #43fc090000000000 Clamped -decd648 apply #43fc090000000000 -> 9.000000000000E+381 -decd649 apply 9E+380 -> #43fc002300000000 Clamped -decd650 apply #43fc002300000000 -> 9.00000000000E+380 -decd651 apply 9E+379 -> #43fc000680000000 Clamped -decd652 apply #43fc000680000000 -> 9.0000000000E+379 -decd653 apply 9E+378 -> #43fc000240000000 Clamped -decd654 apply #43fc000240000000 -> 9.000000000E+378 -decd655 apply 9E+377 -> #43fc000008c00000 Clamped -decd656 apply #43fc000008c00000 -> 9.00000000E+377 -decd657 apply 9E+376 -> #43fc000001a00000 Clamped -decd658 apply #43fc000001a00000 -> 9.0000000E+376 -decd659 apply 9E+375 -> #43fc000000900000 Clamped -decd660 apply #43fc000000900000 -> 9.000000E+375 -decd661 apply 9E+374 -> #43fc000000023000 Clamped -decd662 apply #43fc000000023000 -> 9.00000E+374 -decd663 apply 9E+373 -> #43fc000000006800 Clamped -decd664 apply #43fc000000006800 -> 9.0000E+373 -decd665 apply 9E+372 -> #43fc000000002400 Clamped -decd666 apply #43fc000000002400 -> 9.000E+372 -decd667 apply 9E+371 -> #43fc00000000008c Clamped -decd668 apply #43fc00000000008c -> 9.00E+371 -decd669 apply 9E+370 -> #43fc00000000001a Clamped -decd670 apply #43fc00000000001a -> 9.0E+370 -decd671 apply 9E+369 -> #43fc000000000009 -decd672 apply #43fc000000000009 -> 9E+369 -decd673 apply 9E+368 -> #43f8000000000009 -decd674 apply #43f8000000000009 -> 9E+368 - - --- Selected DPD codes -decd700 apply #2238000000000000 -> 0 -decd701 apply #2238000000000009 -> 9 -decd702 apply #2238000000000010 -> 10 -decd703 apply #2238000000000019 -> 19 -decd704 apply #2238000000000020 -> 20 -decd705 apply #2238000000000029 -> 29 -decd706 apply #2238000000000030 -> 30 -decd707 apply #2238000000000039 -> 39 -decd708 apply #2238000000000040 -> 40 -decd709 apply #2238000000000049 -> 49 -decd710 apply #2238000000000050 -> 50 -decd711 apply #2238000000000059 -> 59 -decd712 apply #2238000000000060 -> 60 -decd713 apply #2238000000000069 -> 69 -decd714 apply #2238000000000070 -> 70 -decd715 apply #2238000000000071 -> 71 -decd716 apply #2238000000000072 -> 72 -decd717 apply #2238000000000073 -> 73 -decd718 apply #2238000000000074 -> 74 -decd719 apply #2238000000000075 -> 75 -decd720 apply #2238000000000076 -> 76 -decd721 apply #2238000000000077 -> 77 -decd722 apply #2238000000000078 -> 78 -decd723 apply #2238000000000079 -> 79 - -decd725 apply #223800000000029e -> 994 -decd726 apply #223800000000029f -> 995 -decd727 apply #22380000000002a0 -> 520 -decd728 apply #22380000000002a1 -> 521 --- from telco test data -decd730 apply #2238000000000188 -> 308 -decd731 apply #22380000000001a3 -> 323 -decd732 apply #223800000000002a -> 82 -decd733 apply #22380000000001a9 -> 329 -decd734 apply #2238000000000081 -> 101 -decd735 apply #22380000000002a2 -> 522 - --- DPD: one of each of the huffman groups -decd740 apply #22380000000003f7 -> 777 -decd741 apply #22380000000003f8 -> 778 -decd742 apply #22380000000003eb -> 787 -decd743 apply #223800000000037d -> 877 -decd744 apply #223800000000039f -> 997 -decd745 apply #22380000000003bf -> 979 -decd746 apply #22380000000003df -> 799 -decd747 apply #223800000000006e -> 888 - --- DPD all-highs cases (includes the 24 redundant codes) -decd750 apply #223800000000006e -> 888 -decd751 apply #223800000000016e -> 888 -decd752 apply #223800000000026e -> 888 -decd753 apply #223800000000036e -> 888 -decd754 apply #223800000000006f -> 889 -decd755 apply #223800000000016f -> 889 -decd756 apply #223800000000026f -> 889 -decd757 apply #223800000000036f -> 889 - -decd760 apply #223800000000007e -> 898 -decd761 apply #223800000000017e -> 898 -decd762 apply #223800000000027e -> 898 -decd763 apply #223800000000037e -> 898 -decd764 apply #223800000000007f -> 899 -decd765 apply #223800000000017f -> 899 -decd766 apply #223800000000027f -> 899 -decd767 apply #223800000000037f -> 899 - -decd770 apply #22380000000000ee -> 988 -decd771 apply #22380000000001ee -> 988 -decd772 apply #22380000000002ee -> 988 -decd773 apply #22380000000003ee -> 988 -decd774 apply #22380000000000ef -> 989 -decd775 apply #22380000000001ef -> 989 -decd776 apply #22380000000002ef -> 989 -decd777 apply #22380000000003ef -> 989 - -decd780 apply #22380000000000fe -> 998 -decd781 apply #22380000000001fe -> 998 -decd782 apply #22380000000002fe -> 998 -decd783 apply #22380000000003fe -> 998 -decd784 apply #22380000000000ff -> 999 -decd785 apply #22380000000001ff -> 999 -decd786 apply #22380000000002ff -> 999 -decd787 apply #22380000000003ff -> 999 - --- values around [u]int32 edges (zeros done earlier) -decd800 apply -2147483646 -> #a23800008c78af46 -decd801 apply -2147483647 -> #a23800008c78af47 -decd802 apply -2147483648 -> #a23800008c78af48 -decd803 apply -2147483649 -> #a23800008c78af49 -decd804 apply 2147483646 -> #223800008c78af46 -decd805 apply 2147483647 -> #223800008c78af47 -decd806 apply 2147483648 -> #223800008c78af48 -decd807 apply 2147483649 -> #223800008c78af49 -decd808 apply 4294967294 -> #2238000115afb55a -decd809 apply 4294967295 -> #2238000115afb55b -decd810 apply 4294967296 -> #2238000115afb57a -decd811 apply 4294967297 -> #2238000115afb57b - -decd820 apply #a23800008c78af46 -> -2147483646 -decd821 apply #a23800008c78af47 -> -2147483647 -decd822 apply #a23800008c78af48 -> -2147483648 -decd823 apply #a23800008c78af49 -> -2147483649 -decd824 apply #223800008c78af46 -> 2147483646 -decd825 apply #223800008c78af47 -> 2147483647 -decd826 apply #223800008c78af48 -> 2147483648 -decd827 apply #223800008c78af49 -> 2147483649 -decd828 apply #2238000115afb55a -> 4294967294 -decd829 apply #2238000115afb55b -> 4294967295 -decd830 apply #2238000115afb57a -> 4294967296 -decd831 apply #2238000115afb57b -> 4294967297 - --- for narrowing -decd840 apply #2870000000000000 -> 2.000000000000000E-99 - --- some miscellaneous -decd850 apply #0004070000000000 -> 7.000000000000E-385 Subnormal -decd851 apply #0008000000020000 -> 1.00000E-391 Subnormal - +------------------------------------------------------------------------ +-- ddEncode.decTest -- decimal eight-byte format testcases -- +-- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +-- [Previously called decimal64.decTest] +version: 2.59 + +-- This set of tests is for the eight-byte concrete representation. +-- Its characteristics are: +-- +-- 1 bit sign +-- 5 bits combination field +-- 8 bits exponent continuation +-- 50 bits coefficient continuation +-- +-- Total exponent length 10 bits +-- Total coefficient length 54 bits (16 digits) +-- +-- Elimit = 767 (maximum encoded exponent) +-- Emax = 384 (largest exponent value) +-- Emin = -383 (smallest exponent value) +-- bias = 398 (subtracted from encoded exponent) = -Etiny + +-- The testcases here have only exactly representable data on the +-- 'left-hand-side'; rounding from strings is tested in 'base' +-- testcase groups. + +extended: 1 +clamp: 1 +precision: 16 +rounding: half_up +maxExponent: 384 +minExponent: -383 + +-- General testcases +-- (mostly derived from the Strawman 4 document and examples) +dece001 apply #A2300000000003D0 -> -7.50 +dece002 apply -7.50 -> #A2300000000003D0 +-- derivative canonical plain strings +dece003 apply #A23c0000000003D0 -> -7.50E+3 +dece004 apply -7.50E+3 -> #A23c0000000003D0 +dece005 apply #A2380000000003D0 -> -750 +dece006 apply -750 -> #A2380000000003D0 +dece007 apply #A2340000000003D0 -> -75.0 +dece008 apply -75.0 -> #A2340000000003D0 +dece009 apply #A22c0000000003D0 -> -0.750 +dece010 apply -0.750 -> #A22c0000000003D0 +dece011 apply #A2280000000003D0 -> -0.0750 +dece012 apply -0.0750 -> #A2280000000003D0 +dece013 apply #A2200000000003D0 -> -0.000750 +dece014 apply -0.000750 -> #A2200000000003D0 +dece015 apply #A2180000000003D0 -> -0.00000750 +dece016 apply -0.00000750 -> #A2180000000003D0 +dece017 apply #A2140000000003D0 -> -7.50E-7 +dece018 apply -7.50E-7 -> #A2140000000003D0 + +-- Normality +dece020 apply 1234567890123456 -> #263934b9c1e28e56 +dece021 apply -1234567890123456 -> #a63934b9c1e28e56 +dece022 apply 1234.567890123456 -> #260934b9c1e28e56 +dece023 apply #260934b9c1e28e56 -> 1234.567890123456 +dece024 apply 1111111111111111 -> #2638912449124491 +dece025 apply 9999999999999999 -> #6e38ff3fcff3fcff + +-- Nmax and similar +dece031 apply 9999999999999999E+369 -> #77fcff3fcff3fcff +dece032 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff +dece033 apply #77fcff3fcff3fcff -> 9.999999999999999E+384 +dece034 apply 1.234567890123456E+384 -> #47fd34b9c1e28e56 +dece035 apply #47fd34b9c1e28e56 -> 1.234567890123456E+384 +-- fold-downs (more below) +dece036 apply 1.23E+384 -> #47fd300000000000 Clamped +dece037 apply #47fd300000000000 -> 1.230000000000000E+384 +decd038 apply 1E+384 -> #47fc000000000000 Clamped +decd039 apply #47fc000000000000 -> 1.000000000000000E+384 + +decd051 apply 12345 -> #22380000000049c5 +decd052 apply #22380000000049c5 -> 12345 +decd053 apply 1234 -> #2238000000000534 +decd054 apply #2238000000000534 -> 1234 +decd055 apply 123 -> #22380000000000a3 +decd056 apply #22380000000000a3 -> 123 +decd057 apply 12 -> #2238000000000012 +decd058 apply #2238000000000012 -> 12 +decd059 apply 1 -> #2238000000000001 +decd060 apply #2238000000000001 -> 1 +decd061 apply 1.23 -> #22300000000000a3 +decd062 apply #22300000000000a3 -> 1.23 +decd063 apply 123.45 -> #22300000000049c5 +decd064 apply #22300000000049c5 -> 123.45 + +-- Nmin and below +decd071 apply 1E-383 -> #003c000000000001 +decd072 apply #003c000000000001 -> 1E-383 +decd073 apply 1.000000000000000E-383 -> #0400000000000000 +decd074 apply #0400000000000000 -> 1.000000000000000E-383 +decd075 apply 1.000000000000001E-383 -> #0400000000000001 +decd076 apply #0400000000000001 -> 1.000000000000001E-383 + +decd077 apply 0.100000000000000E-383 -> #0000800000000000 Subnormal +decd078 apply #0000800000000000 -> 1.00000000000000E-384 Subnormal +decd079 apply 0.000000000000010E-383 -> #0000000000000010 Subnormal +decd080 apply #0000000000000010 -> 1.0E-397 Subnormal +decd081 apply 0.00000000000001E-383 -> #0004000000000001 Subnormal +decd082 apply #0004000000000001 -> 1E-397 Subnormal +decd083 apply 0.000000000000001E-383 -> #0000000000000001 Subnormal +decd084 apply #0000000000000001 -> 1E-398 Subnormal +-- next is smallest all-nines +decd085 apply 9999999999999999E-398 -> #6400ff3fcff3fcff +decd086 apply #6400ff3fcff3fcff -> 9.999999999999999E-383 +-- and a problematic divide result +decd088 apply 1.111111111111111E-383 -> #0400912449124491 +decd089 apply #0400912449124491 -> 1.111111111111111E-383 + +-- forties +decd090 apply 40 -> #2238000000000040 +decd091 apply 39.99 -> #2230000000000cff + +-- underflows cannot be tested as all LHS exact + +-- Same again, negatives +-- Nmax and similar +decd122 apply -9.999999999999999E+384 -> #f7fcff3fcff3fcff +decd123 apply #f7fcff3fcff3fcff -> -9.999999999999999E+384 +decd124 apply -1.234567890123456E+384 -> #c7fd34b9c1e28e56 +decd125 apply #c7fd34b9c1e28e56 -> -1.234567890123456E+384 +-- fold-downs (more below) +decd130 apply -1.23E+384 -> #c7fd300000000000 Clamped +decd131 apply #c7fd300000000000 -> -1.230000000000000E+384 +decd132 apply -1E+384 -> #c7fc000000000000 Clamped +decd133 apply #c7fc000000000000 -> -1.000000000000000E+384 + +-- overflows +decd151 apply -12345 -> #a2380000000049c5 +decd152 apply #a2380000000049c5 -> -12345 +decd153 apply -1234 -> #a238000000000534 +decd154 apply #a238000000000534 -> -1234 +decd155 apply -123 -> #a2380000000000a3 +decd156 apply #a2380000000000a3 -> -123 +decd157 apply -12 -> #a238000000000012 +decd158 apply #a238000000000012 -> -12 +decd159 apply -1 -> #a238000000000001 +decd160 apply #a238000000000001 -> -1 +decd161 apply -1.23 -> #a2300000000000a3 +decd162 apply #a2300000000000a3 -> -1.23 +decd163 apply -123.45 -> #a2300000000049c5 +decd164 apply #a2300000000049c5 -> -123.45 + +-- Nmin and below +decd171 apply -1E-383 -> #803c000000000001 +decd172 apply #803c000000000001 -> -1E-383 +decd173 apply -1.000000000000000E-383 -> #8400000000000000 +decd174 apply #8400000000000000 -> -1.000000000000000E-383 +decd175 apply -1.000000000000001E-383 -> #8400000000000001 +decd176 apply #8400000000000001 -> -1.000000000000001E-383 + +decd177 apply -0.100000000000000E-383 -> #8000800000000000 Subnormal +decd178 apply #8000800000000000 -> -1.00000000000000E-384 Subnormal +decd179 apply -0.000000000000010E-383 -> #8000000000000010 Subnormal +decd180 apply #8000000000000010 -> -1.0E-397 Subnormal +decd181 apply -0.00000000000001E-383 -> #8004000000000001 Subnormal +decd182 apply #8004000000000001 -> -1E-397 Subnormal +decd183 apply -0.000000000000001E-383 -> #8000000000000001 Subnormal +decd184 apply #8000000000000001 -> -1E-398 Subnormal +-- next is smallest all-nines +decd185 apply -9999999999999999E-398 -> #e400ff3fcff3fcff +decd186 apply #e400ff3fcff3fcff -> -9.999999999999999E-383 +-- and a tricky subnormal +decd187 apply 1.11111111111524E-384 -> #00009124491246a4 Subnormal +decd188 apply #00009124491246a4 -> 1.11111111111524E-384 Subnormal + +-- near-underflows +decd189 apply -1e-398 -> #8000000000000001 Subnormal +decd190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded + +-- zeros +decd401 apply 0E-500 -> #0000000000000000 Clamped +decd402 apply 0E-400 -> #0000000000000000 Clamped +decd403 apply 0E-398 -> #0000000000000000 +decd404 apply #0000000000000000 -> 0E-398 +decd405 apply 0.000000000000000E-383 -> #0000000000000000 +decd406 apply #0000000000000000 -> 0E-398 +decd407 apply 0E-2 -> #2230000000000000 +decd408 apply #2230000000000000 -> 0.00 +decd409 apply 0 -> #2238000000000000 +decd410 apply #2238000000000000 -> 0 +decd411 apply 0E+3 -> #2244000000000000 +decd412 apply #2244000000000000 -> 0E+3 +decd413 apply 0E+369 -> #43fc000000000000 +decd414 apply #43fc000000000000 -> 0E+369 +-- clamped zeros... +decd415 apply 0E+370 -> #43fc000000000000 Clamped +decd416 apply #43fc000000000000 -> 0E+369 +decd417 apply 0E+384 -> #43fc000000000000 Clamped +decd418 apply #43fc000000000000 -> 0E+369 +decd419 apply 0E+400 -> #43fc000000000000 Clamped +decd420 apply #43fc000000000000 -> 0E+369 +decd421 apply 0E+500 -> #43fc000000000000 Clamped +decd422 apply #43fc000000000000 -> 0E+369 + +-- negative zeros +decd431 apply -0E-400 -> #8000000000000000 Clamped +decd432 apply -0E-400 -> #8000000000000000 Clamped +decd433 apply -0E-398 -> #8000000000000000 +decd434 apply #8000000000000000 -> -0E-398 +decd435 apply -0.000000000000000E-383 -> #8000000000000000 +decd436 apply #8000000000000000 -> -0E-398 +decd437 apply -0E-2 -> #a230000000000000 +decd438 apply #a230000000000000 -> -0.00 +decd439 apply -0 -> #a238000000000000 +decd440 apply #a238000000000000 -> -0 +decd441 apply -0E+3 -> #a244000000000000 +decd442 apply #a244000000000000 -> -0E+3 +decd443 apply -0E+369 -> #c3fc000000000000 +decd444 apply #c3fc000000000000 -> -0E+369 +-- clamped zeros... +decd445 apply -0E+370 -> #c3fc000000000000 Clamped +decd446 apply #c3fc000000000000 -> -0E+369 +decd447 apply -0E+384 -> #c3fc000000000000 Clamped +decd448 apply #c3fc000000000000 -> -0E+369 +decd449 apply -0E+400 -> #c3fc000000000000 Clamped +decd450 apply #c3fc000000000000 -> -0E+369 +decd451 apply -0E+500 -> #c3fc000000000000 Clamped +decd452 apply #c3fc000000000000 -> -0E+369 + +-- exponents +decd460 apply #225c000000000007 -> 7E+9 +decd461 apply 7E+9 -> #225c000000000007 +decd462 apply #23c4000000000007 -> 7E+99 +decd463 apply 7E+99 -> #23c4000000000007 + +-- Specials +decd500 apply Infinity -> #7800000000000000 +decd501 apply #7878787878787878 -> #7800000000000000 +decd502 apply #7800000000000000 -> Infinity +decd503 apply #7979797979797979 -> #7800000000000000 +decd504 apply #7900000000000000 -> Infinity +decd505 apply #7a7a7a7a7a7a7a7a -> #7800000000000000 +decd506 apply #7a00000000000000 -> Infinity +decd507 apply #7b7b7b7b7b7b7b7b -> #7800000000000000 +decd508 apply #7b00000000000000 -> Infinity + +decd509 apply NaN -> #7c00000000000000 +decd510 apply #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c +decd511 apply #7c00000000000000 -> NaN +decd512 apply #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d +decd513 apply #7d00000000000000 -> NaN +decd514 apply #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e +decd515 apply #7e00000000000000 -> sNaN +decd516 apply #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f +decd517 apply #7f00000000000000 -> sNaN +decd518 apply #7fffffffffffffff -> sNaN999999999999999 +decd519 apply #7fffffffffffffff -> #7e00ff3fcff3fcff + +decd520 apply -Infinity -> #f800000000000000 +decd521 apply #f878787878787878 -> #f800000000000000 +decd522 apply #f800000000000000 -> -Infinity +decd523 apply #f979797979797979 -> #f800000000000000 +decd524 apply #f900000000000000 -> -Infinity +decd525 apply #fa7a7a7a7a7a7a7a -> #f800000000000000 +decd526 apply #fa00000000000000 -> -Infinity +decd527 apply #fb7b7b7b7b7b7b7b -> #f800000000000000 +decd528 apply #fb00000000000000 -> -Infinity + +decd529 apply -NaN -> #fc00000000000000 +decd530 apply #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c +decd531 apply #fc00000000000000 -> -NaN +decd532 apply #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d +decd533 apply #fd00000000000000 -> -NaN +decd534 apply #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e +decd535 apply #fe00000000000000 -> -sNaN +decd536 apply #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f +decd537 apply #ff00000000000000 -> -sNaN +decd538 apply #ffffffffffffffff -> -sNaN999999999999999 +decd539 apply #ffffffffffffffff -> #fe00ff3fcff3fcff + +-- diagnostic NaNs +decd540 apply NaN -> #7c00000000000000 +decd541 apply NaN0 -> #7c00000000000000 +decd542 apply NaN1 -> #7c00000000000001 +decd543 apply NaN12 -> #7c00000000000012 +decd544 apply NaN79 -> #7c00000000000079 +decd545 apply NaN12345 -> #7c000000000049c5 +decd546 apply NaN123456 -> #7c00000000028e56 +decd547 apply NaN799799 -> #7c000000000f7fdf +decd548 apply NaN799799799799799 -> #7c03dff7fdff7fdf +decd549 apply NaN999999999999999 -> #7c00ff3fcff3fcff +-- too many digits + +-- fold-down full sequence +decd601 apply 1E+384 -> #47fc000000000000 Clamped +decd602 apply #47fc000000000000 -> 1.000000000000000E+384 +decd603 apply 1E+383 -> #43fc800000000000 Clamped +decd604 apply #43fc800000000000 -> 1.00000000000000E+383 +decd605 apply 1E+382 -> #43fc100000000000 Clamped +decd606 apply #43fc100000000000 -> 1.0000000000000E+382 +decd607 apply 1E+381 -> #43fc010000000000 Clamped +decd608 apply #43fc010000000000 -> 1.000000000000E+381 +decd609 apply 1E+380 -> #43fc002000000000 Clamped +decd610 apply #43fc002000000000 -> 1.00000000000E+380 +decd611 apply 1E+379 -> #43fc000400000000 Clamped +decd612 apply #43fc000400000000 -> 1.0000000000E+379 +decd613 apply 1E+378 -> #43fc000040000000 Clamped +decd614 apply #43fc000040000000 -> 1.000000000E+378 +decd615 apply 1E+377 -> #43fc000008000000 Clamped +decd616 apply #43fc000008000000 -> 1.00000000E+377 +decd617 apply 1E+376 -> #43fc000001000000 Clamped +decd618 apply #43fc000001000000 -> 1.0000000E+376 +decd619 apply 1E+375 -> #43fc000000100000 Clamped +decd620 apply #43fc000000100000 -> 1.000000E+375 +decd621 apply 1E+374 -> #43fc000000020000 Clamped +decd622 apply #43fc000000020000 -> 1.00000E+374 +decd623 apply 1E+373 -> #43fc000000004000 Clamped +decd624 apply #43fc000000004000 -> 1.0000E+373 +decd625 apply 1E+372 -> #43fc000000000400 Clamped +decd626 apply #43fc000000000400 -> 1.000E+372 +decd627 apply 1E+371 -> #43fc000000000080 Clamped +decd628 apply #43fc000000000080 -> 1.00E+371 +decd629 apply 1E+370 -> #43fc000000000010 Clamped +decd630 apply #43fc000000000010 -> 1.0E+370 +decd631 apply 1E+369 -> #43fc000000000001 +decd632 apply #43fc000000000001 -> 1E+369 +decd633 apply 1E+368 -> #43f8000000000001 +decd634 apply #43f8000000000001 -> 1E+368 +-- same with 9s +decd641 apply 9E+384 -> #77fc000000000000 Clamped +decd642 apply #77fc000000000000 -> 9.000000000000000E+384 +decd643 apply 9E+383 -> #43fc8c0000000000 Clamped +decd644 apply #43fc8c0000000000 -> 9.00000000000000E+383 +decd645 apply 9E+382 -> #43fc1a0000000000 Clamped +decd646 apply #43fc1a0000000000 -> 9.0000000000000E+382 +decd647 apply 9E+381 -> #43fc090000000000 Clamped +decd648 apply #43fc090000000000 -> 9.000000000000E+381 +decd649 apply 9E+380 -> #43fc002300000000 Clamped +decd650 apply #43fc002300000000 -> 9.00000000000E+380 +decd651 apply 9E+379 -> #43fc000680000000 Clamped +decd652 apply #43fc000680000000 -> 9.0000000000E+379 +decd653 apply 9E+378 -> #43fc000240000000 Clamped +decd654 apply #43fc000240000000 -> 9.000000000E+378 +decd655 apply 9E+377 -> #43fc000008c00000 Clamped +decd656 apply #43fc000008c00000 -> 9.00000000E+377 +decd657 apply 9E+376 -> #43fc000001a00000 Clamped +decd658 apply #43fc000001a00000 -> 9.0000000E+376 +decd659 apply 9E+375 -> #43fc000000900000 Clamped +decd660 apply #43fc000000900000 -> 9.000000E+375 +decd661 apply 9E+374 -> #43fc000000023000 Clamped +decd662 apply #43fc000000023000 -> 9.00000E+374 +decd663 apply 9E+373 -> #43fc000000006800 Clamped +decd664 apply #43fc000000006800 -> 9.0000E+373 +decd665 apply 9E+372 -> #43fc000000002400 Clamped +decd666 apply #43fc000000002400 -> 9.000E+372 +decd667 apply 9E+371 -> #43fc00000000008c Clamped +decd668 apply #43fc00000000008c -> 9.00E+371 +decd669 apply 9E+370 -> #43fc00000000001a Clamped +decd670 apply #43fc00000000001a -> 9.0E+370 +decd671 apply 9E+369 -> #43fc000000000009 +decd672 apply #43fc000000000009 -> 9E+369 +decd673 apply 9E+368 -> #43f8000000000009 +decd674 apply #43f8000000000009 -> 9E+368 + + +-- Selected DPD codes +decd700 apply #2238000000000000 -> 0 +decd701 apply #2238000000000009 -> 9 +decd702 apply #2238000000000010 -> 10 +decd703 apply #2238000000000019 -> 19 +decd704 apply #2238000000000020 -> 20 +decd705 apply #2238000000000029 -> 29 +decd706 apply #2238000000000030 -> 30 +decd707 apply #2238000000000039 -> 39 +decd708 apply #2238000000000040 -> 40 +decd709 apply #2238000000000049 -> 49 +decd710 apply #2238000000000050 -> 50 +decd711 apply #2238000000000059 -> 59 +decd712 apply #2238000000000060 -> 60 +decd713 apply #2238000000000069 -> 69 +decd714 apply #2238000000000070 -> 70 +decd715 apply #2238000000000071 -> 71 +decd716 apply #2238000000000072 -> 72 +decd717 apply #2238000000000073 -> 73 +decd718 apply #2238000000000074 -> 74 +decd719 apply #2238000000000075 -> 75 +decd720 apply #2238000000000076 -> 76 +decd721 apply #2238000000000077 -> 77 +decd722 apply #2238000000000078 -> 78 +decd723 apply #2238000000000079 -> 79 + +decd725 apply #223800000000029e -> 994 +decd726 apply #223800000000029f -> 995 +decd727 apply #22380000000002a0 -> 520 +decd728 apply #22380000000002a1 -> 521 +-- from telco test data +decd730 apply #2238000000000188 -> 308 +decd731 apply #22380000000001a3 -> 323 +decd732 apply #223800000000002a -> 82 +decd733 apply #22380000000001a9 -> 329 +decd734 apply #2238000000000081 -> 101 +decd735 apply #22380000000002a2 -> 522 + +-- DPD: one of each of the huffman groups +decd740 apply #22380000000003f7 -> 777 +decd741 apply #22380000000003f8 -> 778 +decd742 apply #22380000000003eb -> 787 +decd743 apply #223800000000037d -> 877 +decd744 apply #223800000000039f -> 997 +decd745 apply #22380000000003bf -> 979 +decd746 apply #22380000000003df -> 799 +decd747 apply #223800000000006e -> 888 + +-- DPD all-highs cases (includes the 24 redundant codes) +decd750 apply #223800000000006e -> 888 +decd751 apply #223800000000016e -> 888 +decd752 apply #223800000000026e -> 888 +decd753 apply #223800000000036e -> 888 +decd754 apply #223800000000006f -> 889 +decd755 apply #223800000000016f -> 889 +decd756 apply #223800000000026f -> 889 +decd757 apply #223800000000036f -> 889 + +decd760 apply #223800000000007e -> 898 +decd761 apply #223800000000017e -> 898 +decd762 apply #223800000000027e -> 898 +decd763 apply #223800000000037e -> 898 +decd764 apply #223800000000007f -> 899 +decd765 apply #223800000000017f -> 899 +decd766 apply #223800000000027f -> 899 +decd767 apply #223800000000037f -> 899 + +decd770 apply #22380000000000ee -> 988 +decd771 apply #22380000000001ee -> 988 +decd772 apply #22380000000002ee -> 988 +decd773 apply #22380000000003ee -> 988 +decd774 apply #22380000000000ef -> 989 +decd775 apply #22380000000001ef -> 989 +decd776 apply #22380000000002ef -> 989 +decd777 apply #22380000000003ef -> 989 + +decd780 apply #22380000000000fe -> 998 +decd781 apply #22380000000001fe -> 998 +decd782 apply #22380000000002fe -> 998 +decd783 apply #22380000000003fe -> 998 +decd784 apply #22380000000000ff -> 999 +decd785 apply #22380000000001ff -> 999 +decd786 apply #22380000000002ff -> 999 +decd787 apply #22380000000003ff -> 999 + +-- values around [u]int32 edges (zeros done earlier) +decd800 apply -2147483646 -> #a23800008c78af46 +decd801 apply -2147483647 -> #a23800008c78af47 +decd802 apply -2147483648 -> #a23800008c78af48 +decd803 apply -2147483649 -> #a23800008c78af49 +decd804 apply 2147483646 -> #223800008c78af46 +decd805 apply 2147483647 -> #223800008c78af47 +decd806 apply 2147483648 -> #223800008c78af48 +decd807 apply 2147483649 -> #223800008c78af49 +decd808 apply 4294967294 -> #2238000115afb55a +decd809 apply 4294967295 -> #2238000115afb55b +decd810 apply 4294967296 -> #2238000115afb57a +decd811 apply 4294967297 -> #2238000115afb57b + +decd820 apply #a23800008c78af46 -> -2147483646 +decd821 apply #a23800008c78af47 -> -2147483647 +decd822 apply #a23800008c78af48 -> -2147483648 +decd823 apply #a23800008c78af49 -> -2147483649 +decd824 apply #223800008c78af46 -> 2147483646 +decd825 apply #223800008c78af47 -> 2147483647 +decd826 apply #223800008c78af48 -> 2147483648 +decd827 apply #223800008c78af49 -> 2147483649 +decd828 apply #2238000115afb55a -> 4294967294 +decd829 apply #2238000115afb55b -> 4294967295 +decd830 apply #2238000115afb57a -> 4294967296 +decd831 apply #2238000115afb57b -> 4294967297 + +-- for narrowing +decd840 apply #2870000000000000 -> 2.000000000000000E-99 + +-- some miscellaneous +decd850 apply #0004070000000000 -> 7.000000000000E-385 Subnormal +decd851 apply #0008000000020000 -> 1.00000E-391 Subnormal + diff --git a/Lib/test/decimaltestdata/ddFMA.decTest b/Lib/test/decimaltestdata/ddFMA.decTest index f0acfc7..8ae92a7 100644 --- a/Lib/test/decimaltestdata/ddFMA.decTest +++ b/Lib/test/decimaltestdata/ddFMA.decTest @@ -1,1698 +1,1698 @@ ------------------------------------------------------------------------- --- ddFMA.decTest -- decDouble Fused Multiply Add -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- These tests comprese three parts: --- 1. Sanity checks and other three-operand tests (especially those --- where the fused operation makes a difference) --- 2. Multiply tests (third operand is neutral zero [0E+emax]) --- 3. Addition tests (first operand is 1) --- The multiply and addition tests are extensive because FMA may have --- its own dedicated multiplication or addition routine(s), and they --- also inherently check the left-to-right properties. - --- Sanity checks -ddfma0001 fma 1 1 1 -> 2 -ddfma0002 fma 1 1 2 -> 3 -ddfma0003 fma 2 2 3 -> 7 -ddfma0004 fma 9 9 9 -> 90 -ddfma0005 fma -1 1 1 -> 0 -ddfma0006 fma -1 1 2 -> 1 -ddfma0007 fma -2 2 3 -> -1 -ddfma0008 fma -9 9 9 -> -72 -ddfma0011 fma 1 -1 1 -> 0 -ddfma0012 fma 1 -1 2 -> 1 -ddfma0013 fma 2 -2 3 -> -1 -ddfma0014 fma 9 -9 9 -> -72 -ddfma0015 fma 1 1 -1 -> 0 -ddfma0016 fma 1 1 -2 -> -1 -ddfma0017 fma 2 2 -3 -> 1 -ddfma0018 fma 9 9 -9 -> 72 - --- non-integer exacts -ddfma0100 fma 25.2 63.6 -438 -> 1164.72 -ddfma0101 fma 0.301 0.380 334 -> 334.114380 -ddfma0102 fma 49.2 -4.8 23.3 -> -212.86 -ddfma0103 fma 4.22 0.079 -94.6 -> -94.26662 -ddfma0104 fma 903 0.797 0.887 -> 720.578 -ddfma0105 fma 6.13 -161 65.9 -> -921.03 -ddfma0106 fma 28.2 727 5.45 -> 20506.85 -ddfma0107 fma 4 605 688 -> 3108 -ddfma0108 fma 93.3 0.19 0.226 -> 17.953 -ddfma0109 fma 0.169 -341 5.61 -> -52.019 -ddfma0110 fma -72.2 30 -51.2 -> -2217.2 -ddfma0111 fma -0.409 13 20.4 -> 15.083 -ddfma0112 fma 317 77.0 19.0 -> 24428.0 -ddfma0113 fma 47 6.58 1.62 -> 310.88 -ddfma0114 fma 1.36 0.984 0.493 -> 1.83124 -ddfma0115 fma 72.7 274 1.56 -> 19921.36 -ddfma0116 fma 335 847 83 -> 283828 -ddfma0117 fma 666 0.247 25.4 -> 189.902 -ddfma0118 fma -3.87 3.06 78.0 -> 66.1578 -ddfma0119 fma 0.742 192 35.6 -> 178.064 -ddfma0120 fma -91.6 5.29 0.153 -> -484.411 - --- cases where result is different from separate multiply + add; each --- is preceded by the result of unfused multiply and add --- [this is about 20% of all similar cases in general] --- -> 7.123356429257969E+16 -ddfma0201 fma 27583489.6645 2582471078.04 2593183.42371 -> 7.123356429257970E+16 Inexact Rounded --- -> 22813275328.80506 -ddfma0208 fma 24280.355566 939577.397653 2032.013252 -> 22813275328.80507 Inexact Rounded --- -> -2.030397734278062E+16 -ddfma0209 fma 7848976432 -2586831.2281 137903.517909 -> -2.030397734278061E+16 Inexact Rounded --- -> 2040774094814.077 -ddfma0217 fma 56890.388731 35872030.4255 339337.123410 -> 2040774094814.078 Inexact Rounded --- -> 2.714469575205049E+18 -ddfma0220 fma 7533543.57445 360317763928 5073392.31638 -> 2.714469575205050E+18 Inexact Rounded --- -> 1.011676297716716E+19 -ddfma0223 fma 739945255.563 13672312784.1 -994381.53572 -> 1.011676297716715E+19 Inexact Rounded --- -> -2.914135721455315E+23 -ddfma0224 fma -413510957218 704729988550 9234162614.0 -> -2.914135721455314E+23 Inexact Rounded --- -> 2.620119863365786E+17 -ddfma0226 fma 437484.00601 598906432790 894450638.442 -> 2.620119863365787E+17 Inexact Rounded --- -> 1.272647995808178E+19 -ddfma0253 fma 73287556929 173651305.784 -358312568.389 -> 1.272647995808177E+19 Inexact Rounded --- -> -1.753769320861851E+18 -ddfma0257 fma 203258304486 -8628278.8066 153127.446727 -> -1.753769320861850E+18 Inexact Rounded --- -> -1.550737835263346E+17 -ddfma0260 fma 42560533.1774 -3643605282.86 178277.96377 -> -1.550737835263347E+17 Inexact Rounded --- -> 2.897624620576005E+22 -ddfma0269 fma 142656587375 203118879670 604576103991 -> 2.897624620576004E+22 Inexact Rounded - --- Cases where multiply would overflow or underflow if separate -fma0300 fma 9e+384 10 0 -> Infinity Overflow Inexact Rounded -fma0301 fma 1e+384 10 0 -> Infinity Overflow Inexact Rounded -fma0302 fma 1e+384 10 -1e+384 -> 9.000000000000000E+384 Clamped -fma0303 fma 1e+384 10 -9e+384 -> 1.000000000000000E+384 Clamped --- subnormal etc. -fma0305 fma 1e-398 0.1 0 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -fma0306 fma 1e-398 0.1 1 -> 1.000000000000000 Inexact Rounded -fma0307 fma 1e-398 0.1 1e-398 -> 1E-398 Underflow Subnormal Inexact Rounded - --- Infinite combinations -ddfma0800 fma Inf Inf Inf -> Infinity -ddfma0801 fma Inf Inf -Inf -> NaN Invalid_operation -ddfma0802 fma Inf -Inf Inf -> NaN Invalid_operation -ddfma0803 fma Inf -Inf -Inf -> -Infinity -ddfma0804 fma -Inf Inf Inf -> NaN Invalid_operation -ddfma0805 fma -Inf Inf -Inf -> -Infinity -ddfma0806 fma -Inf -Inf Inf -> Infinity -ddfma0807 fma -Inf -Inf -Inf -> NaN Invalid_operation - --- Triple NaN propagation -ddfma0900 fma NaN2 NaN3 NaN5 -> NaN2 -ddfma0901 fma 0 NaN3 NaN5 -> NaN3 -ddfma0902 fma 0 0 NaN5 -> NaN5 --- first sNaN wins (consider qNaN from earlier sNaN being --- overridden by an sNaN in third operand) -ddfma0903 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation -ddfma0904 fma 0 sNaN2 sNaN3 -> NaN2 Invalid_operation -ddfma0905 fma 0 0 sNaN3 -> NaN3 Invalid_operation -ddfma0906 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation -ddfma0907 fma NaN7 sNaN2 sNaN3 -> NaN2 Invalid_operation -ddfma0908 fma NaN7 NaN5 sNaN3 -> NaN3 Invalid_operation - --- MULTIPLICATION TESTS ------------------------------------------------ - --- sanity checks -ddfma2000 fma 2 2 0e+384 -> 4 -ddfma2001 fma 2 3 0e+384 -> 6 -ddfma2002 fma 5 1 0e+384 -> 5 -ddfma2003 fma 5 2 0e+384 -> 10 -ddfma2004 fma 1.20 2 0e+384 -> 2.40 -ddfma2005 fma 1.20 0 0e+384 -> 0.00 -ddfma2006 fma 1.20 -2 0e+384 -> -2.40 -ddfma2007 fma -1.20 2 0e+384 -> -2.40 -ddfma2008 fma -1.20 0 0e+384 -> 0.00 -ddfma2009 fma -1.20 -2 0e+384 -> 2.40 -ddfma2010 fma 5.09 7.1 0e+384 -> 36.139 -ddfma2011 fma 2.5 4 0e+384 -> 10.0 -ddfma2012 fma 2.50 4 0e+384 -> 10.00 -ddfma2013 fma 1.23456789 1.00000000 0e+384 -> 1.234567890000000 Rounded -ddfma2015 fma 2.50 4 0e+384 -> 10.00 -ddfma2016 fma 9.999999999 9.999999999 0e+384 -> 99.99999998000000 Inexact Rounded -ddfma2017 fma 9.999999999 -9.999999999 0e+384 -> -99.99999998000000 Inexact Rounded -ddfma2018 fma -9.999999999 9.999999999 0e+384 -> -99.99999998000000 Inexact Rounded -ddfma2019 fma -9.999999999 -9.999999999 0e+384 -> 99.99999998000000 Inexact Rounded - --- zeros, etc. -ddfma2021 fma 0 0 0e+384 -> 0 -ddfma2022 fma 0 -0 0e+384 -> 0 -ddfma2023 fma -0 0 0e+384 -> 0 -ddfma2024 fma -0 -0 0e+384 -> 0 -ddfma2025 fma -0.0 -0.0 0e+384 -> 0.00 -ddfma2026 fma -0.0 -0.0 0e+384 -> 0.00 -ddfma2027 fma -0.0 -0.0 0e+384 -> 0.00 -ddfma2028 fma -0.0 -0.0 0e+384 -> 0.00 -ddfma2030 fma 5.00 1E-3 0e+384 -> 0.00500 -ddfma2031 fma 00.00 0.000 0e+384 -> 0.00000 -ddfma2032 fma 00.00 0E-3 0e+384 -> 0.00000 -- rhs is 0 -ddfma2033 fma 0E-3 00.00 0e+384 -> 0.00000 -- lhs is 0 -ddfma2034 fma -5.00 1E-3 0e+384 -> -0.00500 -ddfma2035 fma -00.00 0.000 0e+384 -> 0.00000 -ddfma2036 fma -00.00 0E-3 0e+384 -> 0.00000 -- rhs is 0 -ddfma2037 fma -0E-3 00.00 0e+384 -> 0.00000 -- lhs is 0 -ddfma2038 fma 5.00 -1E-3 0e+384 -> -0.00500 -ddfma2039 fma 00.00 -0.000 0e+384 -> 0.00000 -ddfma2040 fma 00.00 -0E-3 0e+384 -> 0.00000 -- rhs is 0 -ddfma2041 fma 0E-3 -00.00 0e+384 -> 0.00000 -- lhs is 0 -ddfma2042 fma -5.00 -1E-3 0e+384 -> 0.00500 -ddfma2043 fma -00.00 -0.000 0e+384 -> 0.00000 -ddfma2044 fma -00.00 -0E-3 0e+384 -> 0.00000 -- rhs is 0 -ddfma2045 fma -0E-3 -00.00 -0e+384 -> 0.00000 -- lhs is 0 -ddfma2046 fma -0E-3 00.00 -0e+384 -> -0.00000 -ddfma2047 fma 0E-3 -00.00 -0e+384 -> -0.00000 -ddfma2048 fma 0E-3 00.00 -0e+384 -> 0.00000 - --- examples from decarith -ddfma2050 fma 1.20 3 0e+384 -> 3.60 -ddfma2051 fma 7 3 0e+384 -> 21 -ddfma2052 fma 0.9 0.8 0e+384 -> 0.72 -ddfma2053 fma 0.9 -0 0e+384 -> 0.0 -ddfma2054 fma 654321 654321 0e+384 -> 428135971041 - -ddfma2060 fma 123.45 1e7 0e+384 -> 1.2345E+9 -ddfma2061 fma 123.45 1e8 0e+384 -> 1.2345E+10 -ddfma2062 fma 123.45 1e+9 0e+384 -> 1.2345E+11 -ddfma2063 fma 123.45 1e10 0e+384 -> 1.2345E+12 -ddfma2064 fma 123.45 1e11 0e+384 -> 1.2345E+13 -ddfma2065 fma 123.45 1e12 0e+384 -> 1.2345E+14 -ddfma2066 fma 123.45 1e13 0e+384 -> 1.2345E+15 - - --- test some intermediate lengths --- 1234567890123456 -ddfma2080 fma 0.1 1230123456456789 0e+384 -> 123012345645678.9 -ddfma2084 fma 0.1 1230123456456789 0e+384 -> 123012345645678.9 -ddfma2090 fma 1230123456456789 0.1 0e+384 -> 123012345645678.9 -ddfma2094 fma 1230123456456789 0.1 0e+384 -> 123012345645678.9 - --- test some more edge cases and carries -ddfma2101 fma 9 9 0e+384 -> 81 -ddfma2102 fma 9 90 0e+384 -> 810 -ddfma2103 fma 9 900 0e+384 -> 8100 -ddfma2104 fma 9 9000 0e+384 -> 81000 -ddfma2105 fma 9 90000 0e+384 -> 810000 -ddfma2106 fma 9 900000 0e+384 -> 8100000 -ddfma2107 fma 9 9000000 0e+384 -> 81000000 -ddfma2108 fma 9 90000000 0e+384 -> 810000000 -ddfma2109 fma 9 900000000 0e+384 -> 8100000000 -ddfma2110 fma 9 9000000000 0e+384 -> 81000000000 -ddfma2111 fma 9 90000000000 0e+384 -> 810000000000 -ddfma2112 fma 9 900000000000 0e+384 -> 8100000000000 -ddfma2113 fma 9 9000000000000 0e+384 -> 81000000000000 -ddfma2114 fma 9 90000000000000 0e+384 -> 810000000000000 -ddfma2115 fma 9 900000000000000 0e+384 -> 8100000000000000 ---ddfma2116 fma 9 9000000000000000 0e+384 -> 81000000000000000 ---ddfma2117 fma 9 90000000000000000 0e+384 -> 810000000000000000 ---ddfma2118 fma 9 900000000000000000 0e+384 -> 8100000000000000000 ---ddfma2119 fma 9 9000000000000000000 0e+384 -> 81000000000000000000 ---ddfma2120 fma 9 90000000000000000000 0e+384 -> 810000000000000000000 ---ddfma2121 fma 9 900000000000000000000 0e+384 -> 8100000000000000000000 ---ddfma2122 fma 9 9000000000000000000000 0e+384 -> 81000000000000000000000 ---ddfma2123 fma 9 90000000000000000000000 0e+384 -> 810000000000000000000000 --- test some more edge cases without carries -ddfma2131 fma 3 3 0e+384 -> 9 -ddfma2132 fma 3 30 0e+384 -> 90 -ddfma2133 fma 3 300 0e+384 -> 900 -ddfma2134 fma 3 3000 0e+384 -> 9000 -ddfma2135 fma 3 30000 0e+384 -> 90000 -ddfma2136 fma 3 300000 0e+384 -> 900000 -ddfma2137 fma 3 3000000 0e+384 -> 9000000 -ddfma2138 fma 3 30000000 0e+384 -> 90000000 -ddfma2139 fma 3 300000000 0e+384 -> 900000000 -ddfma2140 fma 3 3000000000 0e+384 -> 9000000000 -ddfma2141 fma 3 30000000000 0e+384 -> 90000000000 -ddfma2142 fma 3 300000000000 0e+384 -> 900000000000 -ddfma2143 fma 3 3000000000000 0e+384 -> 9000000000000 -ddfma2144 fma 3 30000000000000 0e+384 -> 90000000000000 -ddfma2145 fma 3 300000000000000 0e+384 -> 900000000000000 - --- test some edge cases with exact rounding -ddfma2301 fma 9 9 0e+384 -> 81 -ddfma2302 fma 9 90 0e+384 -> 810 -ddfma2303 fma 9 900 0e+384 -> 8100 -ddfma2304 fma 9 9000 0e+384 -> 81000 -ddfma2305 fma 9 90000 0e+384 -> 810000 -ddfma2306 fma 9 900000 0e+384 -> 8100000 -ddfma2307 fma 9 9000000 0e+384 -> 81000000 -ddfma2308 fma 9 90000000 0e+384 -> 810000000 -ddfma2309 fma 9 900000000 0e+384 -> 8100000000 -ddfma2310 fma 9 9000000000 0e+384 -> 81000000000 -ddfma2311 fma 9 90000000000 0e+384 -> 810000000000 -ddfma2312 fma 9 900000000000 0e+384 -> 8100000000000 -ddfma2313 fma 9 9000000000000 0e+384 -> 81000000000000 -ddfma2314 fma 9 90000000000000 0e+384 -> 810000000000000 -ddfma2315 fma 9 900000000000000 0e+384 -> 8100000000000000 -ddfma2316 fma 9 9000000000000000 0e+384 -> 8.100000000000000E+16 Rounded -ddfma2317 fma 90 9000000000000000 0e+384 -> 8.100000000000000E+17 Rounded -ddfma2318 fma 900 9000000000000000 0e+384 -> 8.100000000000000E+18 Rounded -ddfma2319 fma 9000 9000000000000000 0e+384 -> 8.100000000000000E+19 Rounded -ddfma2320 fma 90000 9000000000000000 0e+384 -> 8.100000000000000E+20 Rounded -ddfma2321 fma 900000 9000000000000000 0e+384 -> 8.100000000000000E+21 Rounded -ddfma2322 fma 9000000 9000000000000000 0e+384 -> 8.100000000000000E+22 Rounded -ddfma2323 fma 90000000 9000000000000000 0e+384 -> 8.100000000000000E+23 Rounded - --- tryzeros cases -ddfma2504 fma 0E-260 1000E-260 0e+384 -> 0E-398 Clamped -ddfma2505 fma 100E+260 0E+260 0e+384 -> 0E+369 Clamped - --- mixed with zeros -ddfma2541 fma 0 -1 0e+384 -> 0 -ddfma2542 fma -0 -1 0e+384 -> 0 -ddfma2543 fma 0 1 0e+384 -> 0 -ddfma2544 fma -0 1 0e+384 -> 0 -ddfma2545 fma -1 0 0e+384 -> 0 -ddfma2546 fma -1 -0 0e+384 -> 0 -ddfma2547 fma 1 0 0e+384 -> 0 -ddfma2548 fma 1 -0 0e+384 -> 0 - -ddfma2551 fma 0.0 -1 0e+384 -> 0.0 -ddfma2552 fma -0.0 -1 0e+384 -> 0.0 -ddfma2553 fma 0.0 1 0e+384 -> 0.0 -ddfma2554 fma -0.0 1 0e+384 -> 0.0 -ddfma2555 fma -1.0 0 0e+384 -> 0.0 -ddfma2556 fma -1.0 -0 0e+384 -> 0.0 -ddfma2557 fma 1.0 0 0e+384 -> 0.0 -ddfma2558 fma 1.0 -0 0e+384 -> 0.0 - -ddfma2561 fma 0 -1.0 0e+384 -> 0.0 -ddfma2562 fma -0 -1.0 0e+384 -> 0.0 -ddfma2563 fma 0 1.0 0e+384 -> 0.0 -ddfma2564 fma -0 1.0 0e+384 -> 0.0 -ddfma2565 fma -1 0.0 0e+384 -> 0.0 -ddfma2566 fma -1 -0.0 0e+384 -> 0.0 -ddfma2567 fma 1 0.0 0e+384 -> 0.0 -ddfma2568 fma 1 -0.0 0e+384 -> 0.0 - -ddfma2571 fma 0.0 -1.0 0e+384 -> 0.00 -ddfma2572 fma -0.0 -1.0 0e+384 -> 0.00 -ddfma2573 fma 0.0 1.0 0e+384 -> 0.00 -ddfma2574 fma -0.0 1.0 0e+384 -> 0.00 -ddfma2575 fma -1.0 0.0 0e+384 -> 0.00 -ddfma2576 fma -1.0 -0.0 0e+384 -> 0.00 -ddfma2577 fma 1.0 0.0 0e+384 -> 0.00 -ddfma2578 fma 1.0 -0.0 0e+384 -> 0.00 - --- Specials -ddfma2580 fma Inf -Inf 0e+384 -> -Infinity -ddfma2581 fma Inf -1000 0e+384 -> -Infinity -ddfma2582 fma Inf -1 0e+384 -> -Infinity -ddfma2583 fma Inf -0 0e+384 -> NaN Invalid_operation -ddfma2584 fma Inf 0 0e+384 -> NaN Invalid_operation -ddfma2585 fma Inf 1 0e+384 -> Infinity -ddfma2586 fma Inf 1000 0e+384 -> Infinity -ddfma2587 fma Inf Inf 0e+384 -> Infinity -ddfma2588 fma -1000 Inf 0e+384 -> -Infinity -ddfma2589 fma -Inf Inf 0e+384 -> -Infinity -ddfma2590 fma -1 Inf 0e+384 -> -Infinity -ddfma2591 fma -0 Inf 0e+384 -> NaN Invalid_operation -ddfma2592 fma 0 Inf 0e+384 -> NaN Invalid_operation -ddfma2593 fma 1 Inf 0e+384 -> Infinity -ddfma2594 fma 1000 Inf 0e+384 -> Infinity -ddfma2595 fma Inf Inf 0e+384 -> Infinity - -ddfma2600 fma -Inf -Inf 0e+384 -> Infinity -ddfma2601 fma -Inf -1000 0e+384 -> Infinity -ddfma2602 fma -Inf -1 0e+384 -> Infinity -ddfma2603 fma -Inf -0 0e+384 -> NaN Invalid_operation -ddfma2604 fma -Inf 0 0e+384 -> NaN Invalid_operation -ddfma2605 fma -Inf 1 0e+384 -> -Infinity -ddfma2606 fma -Inf 1000 0e+384 -> -Infinity -ddfma2607 fma -Inf Inf 0e+384 -> -Infinity -ddfma2608 fma -1000 Inf 0e+384 -> -Infinity -ddfma2609 fma -Inf -Inf 0e+384 -> Infinity -ddfma2610 fma -1 -Inf 0e+384 -> Infinity -ddfma2611 fma -0 -Inf 0e+384 -> NaN Invalid_operation -ddfma2612 fma 0 -Inf 0e+384 -> NaN Invalid_operation -ddfma2613 fma 1 -Inf 0e+384 -> -Infinity -ddfma2614 fma 1000 -Inf 0e+384 -> -Infinity -ddfma2615 fma Inf -Inf 0e+384 -> -Infinity - -ddfma2621 fma NaN -Inf 0e+384 -> NaN -ddfma2622 fma NaN -1000 0e+384 -> NaN -ddfma2623 fma NaN -1 0e+384 -> NaN -ddfma2624 fma NaN -0 0e+384 -> NaN -ddfma2625 fma NaN 0 0e+384 -> NaN -ddfma2626 fma NaN 1 0e+384 -> NaN -ddfma2627 fma NaN 1000 0e+384 -> NaN -ddfma2628 fma NaN Inf 0e+384 -> NaN -ddfma2629 fma NaN NaN 0e+384 -> NaN -ddfma2630 fma -Inf NaN 0e+384 -> NaN -ddfma2631 fma -1000 NaN 0e+384 -> NaN -ddfma2632 fma -1 NaN 0e+384 -> NaN -ddfma2633 fma -0 NaN 0e+384 -> NaN -ddfma2634 fma 0 NaN 0e+384 -> NaN -ddfma2635 fma 1 NaN 0e+384 -> NaN -ddfma2636 fma 1000 NaN 0e+384 -> NaN -ddfma2637 fma Inf NaN 0e+384 -> NaN - -ddfma2641 fma sNaN -Inf 0e+384 -> NaN Invalid_operation -ddfma2642 fma sNaN -1000 0e+384 -> NaN Invalid_operation -ddfma2643 fma sNaN -1 0e+384 -> NaN Invalid_operation -ddfma2644 fma sNaN -0 0e+384 -> NaN Invalid_operation -ddfma2645 fma sNaN 0 0e+384 -> NaN Invalid_operation -ddfma2646 fma sNaN 1 0e+384 -> NaN Invalid_operation -ddfma2647 fma sNaN 1000 0e+384 -> NaN Invalid_operation -ddfma2648 fma sNaN NaN 0e+384 -> NaN Invalid_operation -ddfma2649 fma sNaN sNaN 0e+384 -> NaN Invalid_operation -ddfma2650 fma NaN sNaN 0e+384 -> NaN Invalid_operation -ddfma2651 fma -Inf sNaN 0e+384 -> NaN Invalid_operation -ddfma2652 fma -1000 sNaN 0e+384 -> NaN Invalid_operation -ddfma2653 fma -1 sNaN 0e+384 -> NaN Invalid_operation -ddfma2654 fma -0 sNaN 0e+384 -> NaN Invalid_operation -ddfma2655 fma 0 sNaN 0e+384 -> NaN Invalid_operation -ddfma2656 fma 1 sNaN 0e+384 -> NaN Invalid_operation -ddfma2657 fma 1000 sNaN 0e+384 -> NaN Invalid_operation -ddfma2658 fma Inf sNaN 0e+384 -> NaN Invalid_operation -ddfma2659 fma NaN sNaN 0e+384 -> NaN Invalid_operation - --- propagating NaNs -ddfma2661 fma NaN9 -Inf 0e+384 -> NaN9 -ddfma2662 fma NaN8 999 0e+384 -> NaN8 -ddfma2663 fma NaN71 Inf 0e+384 -> NaN71 -ddfma2664 fma NaN6 NaN5 0e+384 -> NaN6 -ddfma2665 fma -Inf NaN4 0e+384 -> NaN4 -ddfma2666 fma -999 NaN33 0e+384 -> NaN33 -ddfma2667 fma Inf NaN2 0e+384 -> NaN2 - -ddfma2671 fma sNaN99 -Inf 0e+384 -> NaN99 Invalid_operation -ddfma2672 fma sNaN98 -11 0e+384 -> NaN98 Invalid_operation -ddfma2673 fma sNaN97 NaN 0e+384 -> NaN97 Invalid_operation -ddfma2674 fma sNaN16 sNaN94 0e+384 -> NaN16 Invalid_operation -ddfma2675 fma NaN95 sNaN93 0e+384 -> NaN93 Invalid_operation -ddfma2676 fma -Inf sNaN92 0e+384 -> NaN92 Invalid_operation -ddfma2677 fma 088 sNaN91 0e+384 -> NaN91 Invalid_operation -ddfma2678 fma Inf sNaN90 0e+384 -> NaN90 Invalid_operation -ddfma2679 fma NaN sNaN89 0e+384 -> NaN89 Invalid_operation - -ddfma2681 fma -NaN9 -Inf 0e+384 -> -NaN9 -ddfma2682 fma -NaN8 999 0e+384 -> -NaN8 -ddfma2683 fma -NaN71 Inf 0e+384 -> -NaN71 -ddfma2684 fma -NaN6 -NaN5 0e+384 -> -NaN6 -ddfma2685 fma -Inf -NaN4 0e+384 -> -NaN4 -ddfma2686 fma -999 -NaN33 0e+384 -> -NaN33 -ddfma2687 fma Inf -NaN2 0e+384 -> -NaN2 - -ddfma2691 fma -sNaN99 -Inf 0e+384 -> -NaN99 Invalid_operation -ddfma2692 fma -sNaN98 -11 0e+384 -> -NaN98 Invalid_operation -ddfma2693 fma -sNaN97 NaN 0e+384 -> -NaN97 Invalid_operation -ddfma2694 fma -sNaN16 -sNaN94 0e+384 -> -NaN16 Invalid_operation -ddfma2695 fma -NaN95 -sNaN93 0e+384 -> -NaN93 Invalid_operation -ddfma2696 fma -Inf -sNaN92 0e+384 -> -NaN92 Invalid_operation -ddfma2697 fma 088 -sNaN91 0e+384 -> -NaN91 Invalid_operation -ddfma2698 fma Inf -sNaN90 0e+384 -> -NaN90 Invalid_operation -ddfma2699 fma -NaN -sNaN89 0e+384 -> -NaN89 Invalid_operation - -ddfma2701 fma -NaN -Inf 0e+384 -> -NaN -ddfma2702 fma -NaN 999 0e+384 -> -NaN -ddfma2703 fma -NaN Inf 0e+384 -> -NaN -ddfma2704 fma -NaN -NaN 0e+384 -> -NaN -ddfma2705 fma -Inf -NaN0 0e+384 -> -NaN -ddfma2706 fma -999 -NaN 0e+384 -> -NaN -ddfma2707 fma Inf -NaN 0e+384 -> -NaN - -ddfma2711 fma -sNaN -Inf 0e+384 -> -NaN Invalid_operation -ddfma2712 fma -sNaN -11 0e+384 -> -NaN Invalid_operation -ddfma2713 fma -sNaN00 NaN 0e+384 -> -NaN Invalid_operation -ddfma2714 fma -sNaN -sNaN 0e+384 -> -NaN Invalid_operation -ddfma2715 fma -NaN -sNaN 0e+384 -> -NaN Invalid_operation -ddfma2716 fma -Inf -sNaN 0e+384 -> -NaN Invalid_operation -ddfma2717 fma 088 -sNaN 0e+384 -> -NaN Invalid_operation -ddfma2718 fma Inf -sNaN 0e+384 -> -NaN Invalid_operation -ddfma2719 fma -NaN -sNaN 0e+384 -> -NaN Invalid_operation - --- overflow and underflow tests .. note subnormal results --- signs -ddfma2751 fma 1e+277 1e+311 0e+384 -> Infinity Overflow Inexact Rounded -ddfma2752 fma 1e+277 -1e+311 0e+384 -> -Infinity Overflow Inexact Rounded -ddfma2753 fma -1e+277 1e+311 0e+384 -> -Infinity Overflow Inexact Rounded -ddfma2754 fma -1e+277 -1e+311 0e+384 -> Infinity Overflow Inexact Rounded -ddfma2755 fma 1e-277 1e-311 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2756 fma 1e-277 -1e-311 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2757 fma -1e-277 1e-311 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2758 fma -1e-277 -1e-311 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -ddfma2760 fma 1e-291 1e-101 0e+384 -> 1E-392 Subnormal -ddfma2761 fma 1e-291 1e-102 0e+384 -> 1E-393 Subnormal -ddfma2762 fma 1e-291 1e-103 0e+384 -> 1E-394 Subnormal -ddfma2763 fma 1e-291 1e-104 0e+384 -> 1E-395 Subnormal -ddfma2764 fma 1e-291 1e-105 0e+384 -> 1E-396 Subnormal -ddfma2765 fma 1e-291 1e-106 0e+384 -> 1E-397 Subnormal -ddfma2766 fma 1e-291 1e-107 0e+384 -> 1E-398 Subnormal -ddfma2767 fma 1e-291 1e-108 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2768 fma 1e-291 1e-109 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2769 fma 1e-291 1e-110 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped --- [no equivalent of 'subnormal' for overflow] -ddfma2770 fma 1e+60 1e+321 0e+384 -> 1.000000000000E+381 Clamped -ddfma2771 fma 1e+60 1e+322 0e+384 -> 1.0000000000000E+382 Clamped -ddfma2772 fma 1e+60 1e+323 0e+384 -> 1.00000000000000E+383 Clamped -ddfma2773 fma 1e+60 1e+324 0e+384 -> 1.000000000000000E+384 Clamped -ddfma2774 fma 1e+60 1e+325 0e+384 -> Infinity Overflow Inexact Rounded -ddfma2775 fma 1e+60 1e+326 0e+384 -> Infinity Overflow Inexact Rounded -ddfma2776 fma 1e+60 1e+327 0e+384 -> Infinity Overflow Inexact Rounded -ddfma2777 fma 1e+60 1e+328 0e+384 -> Infinity Overflow Inexact Rounded -ddfma2778 fma 1e+60 1e+329 0e+384 -> Infinity Overflow Inexact Rounded -ddfma2779 fma 1e+60 1e+330 0e+384 -> Infinity Overflow Inexact Rounded - -ddfma2801 fma 1.0000E-394 1 0e+384 -> 1.0000E-394 Subnormal -ddfma2802 fma 1.000E-394 1e-1 0e+384 -> 1.000E-395 Subnormal -ddfma2803 fma 1.00E-394 1e-2 0e+384 -> 1.00E-396 Subnormal -ddfma2804 fma 1.0E-394 1e-3 0e+384 -> 1.0E-397 Subnormal -ddfma2805 fma 1.0E-394 1e-4 0e+384 -> 1E-398 Subnormal Rounded -ddfma2806 fma 1.3E-394 1e-4 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded -ddfma2807 fma 1.5E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded -ddfma2808 fma 1.7E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded -ddfma2809 fma 2.3E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded -ddfma2810 fma 2.5E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded -ddfma2811 fma 2.7E-394 1e-4 0e+384 -> 3E-398 Underflow Subnormal Inexact Rounded -ddfma2812 fma 1.49E-394 1e-4 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded -ddfma2813 fma 1.50E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded -ddfma2814 fma 1.51E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded -ddfma2815 fma 2.49E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded -ddfma2816 fma 2.50E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded -ddfma2817 fma 2.51E-394 1e-4 0e+384 -> 3E-398 Underflow Subnormal Inexact Rounded - -ddfma2818 fma 1E-394 1e-4 0e+384 -> 1E-398 Subnormal -ddfma2819 fma 3E-394 1e-5 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2820 fma 5E-394 1e-5 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2821 fma 7E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded -ddfma2822 fma 9E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded -ddfma2823 fma 9.9E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded - -ddfma2824 fma 1E-394 -1e-4 0e+384 -> -1E-398 Subnormal -ddfma2825 fma 3E-394 -1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2826 fma -5E-394 1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2827 fma 7E-394 -1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded -ddfma2828 fma -9E-394 1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded -ddfma2829 fma 9.9E-394 -1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded -ddfma2830 fma 3.0E-394 -1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped - -ddfma2831 fma 1.0E-199 1e-200 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddfma2832 fma 1.0E-199 1e-199 0e+384 -> 1E-398 Subnormal Rounded -ddfma2833 fma 1.0E-199 1e-198 0e+384 -> 1.0E-397 Subnormal -ddfma2834 fma 2.0E-199 2e-198 0e+384 -> 4.0E-397 Subnormal -ddfma2835 fma 4.0E-199 4e-198 0e+384 -> 1.60E-396 Subnormal -ddfma2836 fma 10.0E-199 10e-198 0e+384 -> 1.000E-395 Subnormal -ddfma2837 fma 30.0E-199 30e-198 0e+384 -> 9.000E-395 Subnormal -ddfma2838 fma 40.0E-199 40e-188 0e+384 -> 1.6000E-384 Subnormal -ddfma2839 fma 40.0E-199 40e-187 0e+384 -> 1.6000E-383 -ddfma2840 fma 40.0E-199 40e-186 0e+384 -> 1.6000E-382 - --- Long operand overflow may be a different path -ddfma2870 fma 100 9.999E+383 0e+384 -> Infinity Inexact Overflow Rounded -ddfma2871 fma 100 -9.999E+383 0e+384 -> -Infinity Inexact Overflow Rounded -ddfma2872 fma 9.999E+383 100 0e+384 -> Infinity Inexact Overflow Rounded -ddfma2873 fma -9.999E+383 100 0e+384 -> -Infinity Inexact Overflow Rounded - --- check for double-rounded subnormals -ddfma2881 fma 1.2347E-355 1.2347E-40 0e+384 -> 1.524E-395 Inexact Rounded Subnormal Underflow -ddfma2882 fma 1.234E-355 1.234E-40 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow -ddfma2883 fma 1.23E-355 1.23E-40 0e+384 -> 1.513E-395 Inexact Rounded Subnormal Underflow -ddfma2884 fma 1.2E-355 1.2E-40 0e+384 -> 1.44E-395 Subnormal -ddfma2885 fma 1.2E-355 1.2E-41 0e+384 -> 1.44E-396 Subnormal -ddfma2886 fma 1.2E-355 1.2E-42 0e+384 -> 1.4E-397 Subnormal Inexact Rounded Underflow -ddfma2887 fma 1.2E-355 1.3E-42 0e+384 -> 1.6E-397 Subnormal Inexact Rounded Underflow -ddfma2888 fma 1.3E-355 1.3E-42 0e+384 -> 1.7E-397 Subnormal Inexact Rounded Underflow -ddfma2889 fma 1.3E-355 1.3E-43 0e+384 -> 2E-398 Subnormal Inexact Rounded Underflow -ddfma2890 fma 1.3E-356 1.3E-43 0e+384 -> 0E-398 Clamped Subnormal Inexact Rounded Underflow - -ddfma2891 fma 1.2345E-39 1.234E-355 0e+384 -> 1.5234E-394 Inexact Rounded Subnormal Underflow -ddfma2892 fma 1.23456E-39 1.234E-355 0e+384 -> 1.5234E-394 Inexact Rounded Subnormal Underflow -ddfma2893 fma 1.2345E-40 1.234E-355 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow -ddfma2894 fma 1.23456E-40 1.234E-355 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow -ddfma2895 fma 1.2345E-41 1.234E-355 0e+384 -> 1.52E-396 Inexact Rounded Subnormal Underflow -ddfma2896 fma 1.23456E-41 1.234E-355 0e+384 -> 1.52E-396 Inexact Rounded Subnormal Underflow - --- Now explore the case where we get a normal result with Underflow -ddfma2900 fma 0.3000000000E-191 0.3000000000E-191 0e+384 -> 9.00000000000000E-384 Subnormal Rounded -ddfma2901 fma 0.3000000001E-191 0.3000000001E-191 0e+384 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded -ddfma2902 fma 9.999999999999999E-383 0.0999999999999 0e+384 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded -ddfma2903 fma 9.999999999999999E-383 0.09999999999999 0e+384 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded -ddfma2904 fma 9.999999999999999E-383 0.099999999999999 0e+384 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded -ddfma2905 fma 9.999999999999999E-383 0.0999999999999999 0e+384 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded --- prove operands are exact -ddfma2906 fma 9.999999999999999E-383 1 0e+384 -> 9.999999999999999E-383 -ddfma2907 fma 1 0.09999999999999999 0e+384 -> 0.09999999999999999 --- the next rounds to Nmin -ddfma2908 fma 9.999999999999999E-383 0.09999999999999999 0e+384 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded - --- hugest -ddfma2909 fma 9999999999999999 9999999999999999 0e+384 -> 9.999999999999998E+31 Inexact Rounded - --- Null tests -ddfma2990 fma 10 # 0e+384 -> NaN Invalid_operation -ddfma2991 fma # 10 0e+384 -> NaN Invalid_operation - - --- ADDITION TESTS ------------------------------------------------------ - --- [first group are 'quick confidence check'] -ddfma3001 fma 1 1 1 -> 2 -ddfma3002 fma 1 2 3 -> 5 -ddfma3003 fma 1 '5.75' '3.3' -> 9.05 -ddfma3004 fma 1 '5' '-3' -> 2 -ddfma3005 fma 1 '-5' '-3' -> -8 -ddfma3006 fma 1 '-7' '2.5' -> -4.5 -ddfma3007 fma 1 '0.7' '0.3' -> 1.0 -ddfma3008 fma 1 '1.25' '1.25' -> 2.50 -ddfma3009 fma 1 '1.23456789' '1.00000000' -> '2.23456789' -ddfma3010 fma 1 '1.23456789' '1.00000011' -> '2.23456800' - --- 1234567890123456 1234567890123456 -ddfma3011 fma 1 '0.4444444444444446' '0.5555555555555555' -> '1.000000000000000' Inexact Rounded -ddfma3012 fma 1 '0.4444444444444445' '0.5555555555555555' -> '1.000000000000000' Rounded -ddfma3013 fma 1 '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999' -ddfma3014 fma 1 '4444444444444444' '0.49' -> '4444444444444444' Inexact Rounded -ddfma3015 fma 1 '4444444444444444' '0.499' -> '4444444444444444' Inexact Rounded -ddfma3016 fma 1 '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded -ddfma3017 fma 1 '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded -ddfma3018 fma 1 '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded -ddfma3019 fma 1 '4444444444444444' '0.501' -> '4444444444444445' Inexact Rounded -ddfma3020 fma 1 '4444444444444444' '0.51' -> '4444444444444445' Inexact Rounded - -ddfma3021 fma 1 0 1 -> 1 -ddfma3022 fma 1 1 1 -> 2 -ddfma3023 fma 1 2 1 -> 3 -ddfma3024 fma 1 3 1 -> 4 -ddfma3025 fma 1 4 1 -> 5 -ddfma3026 fma 1 5 1 -> 6 -ddfma3027 fma 1 6 1 -> 7 -ddfma3028 fma 1 7 1 -> 8 -ddfma3029 fma 1 8 1 -> 9 -ddfma3030 fma 1 9 1 -> 10 - --- some carrying effects -ddfma3031 fma 1 '0.9998' '0.0000' -> '0.9998' -ddfma3032 fma 1 '0.9998' '0.0001' -> '0.9999' -ddfma3033 fma 1 '0.9998' '0.0002' -> '1.0000' -ddfma3034 fma 1 '0.9998' '0.0003' -> '1.0001' - -ddfma3035 fma 1 '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -ddfma3036 fma 1 '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -ddfma3037 fma 1 '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -ddfma3038 fma 1 '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded -ddfma3039 fma 1 '700000' '10000e+16' -> '1.000000000000007E+20' Rounded - --- symmetry: -ddfma3040 fma 1 '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded -ddfma3041 fma 1 '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded -ddfma3042 fma 1 '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded -ddfma3044 fma 1 '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded -ddfma3045 fma 1 '10000e+16' '700000' -> '1.000000000000007E+20' Rounded - --- same, without rounding -ddfma3046 fma 1 '10000e+9' '7' -> '10000000000007' -ddfma3047 fma 1 '10000e+9' '70' -> '10000000000070' -ddfma3048 fma 1 '10000e+9' '700' -> '10000000000700' -ddfma3049 fma 1 '10000e+9' '7000' -> '10000000007000' -ddfma3050 fma 1 '10000e+9' '70000' -> '10000000070000' -ddfma3051 fma 1 '10000e+9' '700000' -> '10000000700000' -ddfma3052 fma 1 '10000e+9' '7000000' -> '10000007000000' - --- examples from decarith -ddfma3053 fma 1 '12' '7.00' -> '19.00' -ddfma3054 fma 1 '1.3' '-1.07' -> '0.23' -ddfma3055 fma 1 '1.3' '-1.30' -> '0.00' -ddfma3056 fma 1 '1.3' '-2.07' -> '-0.77' -ddfma3057 fma 1 '1E+2' '1E+4' -> '1.01E+4' - --- leading zero preservation -ddfma3061 fma 1 1 '0.0001' -> '1.0001' -ddfma3062 fma 1 1 '0.00001' -> '1.00001' -ddfma3063 fma 1 1 '0.000001' -> '1.000001' -ddfma3064 fma 1 1 '0.0000001' -> '1.0000001' -ddfma3065 fma 1 1 '0.00000001' -> '1.00000001' - --- some funny zeros [in case of bad signum] -ddfma3070 fma 1 1 0 -> 1 -ddfma3071 fma 1 1 0. -> 1 -ddfma3072 fma 1 1 .0 -> 1.0 -ddfma3073 fma 1 1 0.0 -> 1.0 -ddfma3074 fma 1 1 0.00 -> 1.00 -ddfma3075 fma 1 0 1 -> 1 -ddfma3076 fma 1 0. 1 -> 1 -ddfma3077 fma 1 .0 1 -> 1.0 -ddfma3078 fma 1 0.0 1 -> 1.0 -ddfma3079 fma 1 0.00 1 -> 1.00 - --- some carries -ddfma3080 fma 1 999999998 1 -> 999999999 -ddfma3081 fma 1 999999999 1 -> 1000000000 -ddfma3082 fma 1 99999999 1 -> 100000000 -ddfma3083 fma 1 9999999 1 -> 10000000 -ddfma3084 fma 1 999999 1 -> 1000000 -ddfma3085 fma 1 99999 1 -> 100000 -ddfma3086 fma 1 9999 1 -> 10000 -ddfma3087 fma 1 999 1 -> 1000 -ddfma3088 fma 1 99 1 -> 100 -ddfma3089 fma 1 9 1 -> 10 - - --- more LHS swaps -ddfma3090 fma 1 '-56267E-10' 0 -> '-0.0000056267' -ddfma3091 fma 1 '-56267E-6' 0 -> '-0.056267' -ddfma3092 fma 1 '-56267E-5' 0 -> '-0.56267' -ddfma3093 fma 1 '-56267E-4' 0 -> '-5.6267' -ddfma3094 fma 1 '-56267E-3' 0 -> '-56.267' -ddfma3095 fma 1 '-56267E-2' 0 -> '-562.67' -ddfma3096 fma 1 '-56267E-1' 0 -> '-5626.7' -ddfma3097 fma 1 '-56267E-0' 0 -> '-56267' -ddfma3098 fma 1 '-5E-10' 0 -> '-5E-10' -ddfma3099 fma 1 '-5E-7' 0 -> '-5E-7' -ddfma3100 fma 1 '-5E-6' 0 -> '-0.000005' -ddfma3101 fma 1 '-5E-5' 0 -> '-0.00005' -ddfma3102 fma 1 '-5E-4' 0 -> '-0.0005' -ddfma3103 fma 1 '-5E-1' 0 -> '-0.5' -ddfma3104 fma 1 '-5E0' 0 -> '-5' -ddfma3105 fma 1 '-5E1' 0 -> '-50' -ddfma3106 fma 1 '-5E5' 0 -> '-500000' -ddfma3107 fma 1 '-5E15' 0 -> '-5000000000000000' -ddfma3108 fma 1 '-5E16' 0 -> '-5.000000000000000E+16' Rounded -ddfma3109 fma 1 '-5E17' 0 -> '-5.000000000000000E+17' Rounded -ddfma3110 fma 1 '-5E18' 0 -> '-5.000000000000000E+18' Rounded -ddfma3111 fma 1 '-5E100' 0 -> '-5.000000000000000E+100' Rounded - --- more RHS swaps -ddfma3113 fma 1 0 '-56267E-10' -> '-0.0000056267' -ddfma3114 fma 1 0 '-56267E-6' -> '-0.056267' -ddfma3116 fma 1 0 '-56267E-5' -> '-0.56267' -ddfma3117 fma 1 0 '-56267E-4' -> '-5.6267' -ddfma3119 fma 1 0 '-56267E-3' -> '-56.267' -ddfma3120 fma 1 0 '-56267E-2' -> '-562.67' -ddfma3121 fma 1 0 '-56267E-1' -> '-5626.7' -ddfma3122 fma 1 0 '-56267E-0' -> '-56267' -ddfma3123 fma 1 0 '-5E-10' -> '-5E-10' -ddfma3124 fma 1 0 '-5E-7' -> '-5E-7' -ddfma3125 fma 1 0 '-5E-6' -> '-0.000005' -ddfma3126 fma 1 0 '-5E-5' -> '-0.00005' -ddfma3127 fma 1 0 '-5E-4' -> '-0.0005' -ddfma3128 fma 1 0 '-5E-1' -> '-0.5' -ddfma3129 fma 1 0 '-5E0' -> '-5' -ddfma3130 fma 1 0 '-5E1' -> '-50' -ddfma3131 fma 1 0 '-5E5' -> '-500000' -ddfma3132 fma 1 0 '-5E15' -> '-5000000000000000' -ddfma3133 fma 1 0 '-5E16' -> '-5.000000000000000E+16' Rounded -ddfma3134 fma 1 0 '-5E17' -> '-5.000000000000000E+17' Rounded -ddfma3135 fma 1 0 '-5E18' -> '-5.000000000000000E+18' Rounded -ddfma3136 fma 1 0 '-5E100' -> '-5.000000000000000E+100' Rounded - --- related -ddfma3137 fma 1 1 '0E-19' -> '1.000000000000000' Rounded -ddfma3138 fma 1 -1 '0E-19' -> '-1.000000000000000' Rounded -ddfma3139 fma 1 '0E-19' 1 -> '1.000000000000000' Rounded -ddfma3140 fma 1 '0E-19' -1 -> '-1.000000000000000' Rounded -ddfma3141 fma 1 1E+11 0.0000 -> '100000000000.0000' -ddfma3142 fma 1 1E+11 0.00000 -> '100000000000.0000' Rounded -ddfma3143 fma 1 0.000 1E+12 -> '1000000000000.000' -ddfma3144 fma 1 0.0000 1E+12 -> '1000000000000.000' Rounded - --- [some of the next group are really constructor tests] -ddfma3146 fma 1 '00.0' 0 -> '0.0' -ddfma3147 fma 1 '0.00' 0 -> '0.00' -ddfma3148 fma 1 0 '0.00' -> '0.00' -ddfma3149 fma 1 0 '00.0' -> '0.0' -ddfma3150 fma 1 '00.0' '0.00' -> '0.00' -ddfma3151 fma 1 '0.00' '00.0' -> '0.00' -ddfma3152 fma 1 '3' '.3' -> '3.3' -ddfma3153 fma 1 '3.' '.3' -> '3.3' -ddfma3154 fma 1 '3.0' '.3' -> '3.3' -ddfma3155 fma 1 '3.00' '.3' -> '3.30' -ddfma3156 fma 1 '3' '3' -> '6' -ddfma3157 fma 1 '3' '+3' -> '6' -ddfma3158 fma 1 '3' '-3' -> '0' -ddfma3159 fma 1 '0.3' '-0.3' -> '0.0' -ddfma3160 fma 1 '0.03' '-0.03' -> '0.00' - --- try borderline precision, with carries, etc. -ddfma3161 fma 1 '1E+12' '-1' -> '999999999999' -ddfma3162 fma 1 '1E+12' '1.11' -> '1000000000001.11' -ddfma3163 fma 1 '1.11' '1E+12' -> '1000000000001.11' -ddfma3164 fma 1 '-1' '1E+12' -> '999999999999' -ddfma3165 fma 1 '7E+12' '-1' -> '6999999999999' -ddfma3166 fma 1 '7E+12' '1.11' -> '7000000000001.11' -ddfma3167 fma 1 '1.11' '7E+12' -> '7000000000001.11' -ddfma3168 fma 1 '-1' '7E+12' -> '6999999999999' - -rounding: half_up --- 1.234567890123456 1234567890123456 1 234567890123456 -ddfma3170 fma 1 '4.444444444444444' '0.5555555555555567' -> '5.000000000000001' Inexact Rounded -ddfma3171 fma 1 '4.444444444444444' '0.5555555555555566' -> '5.000000000000001' Inexact Rounded -ddfma3172 fma 1 '4.444444444444444' '0.5555555555555565' -> '5.000000000000001' Inexact Rounded -ddfma3173 fma 1 '4.444444444444444' '0.5555555555555564' -> '5.000000000000000' Inexact Rounded -ddfma3174 fma 1 '4.444444444444444' '0.5555555555555553' -> '4.999999999999999' Inexact Rounded -ddfma3175 fma 1 '4.444444444444444' '0.5555555555555552' -> '4.999999999999999' Inexact Rounded -ddfma3176 fma 1 '4.444444444444444' '0.5555555555555551' -> '4.999999999999999' Inexact Rounded -ddfma3177 fma 1 '4.444444444444444' '0.5555555555555550' -> '4.999999999999999' Rounded -ddfma3178 fma 1 '4.444444444444444' '0.5555555555555545' -> '4.999999999999999' Inexact Rounded -ddfma3179 fma 1 '4.444444444444444' '0.5555555555555544' -> '4.999999999999998' Inexact Rounded -ddfma3180 fma 1 '4.444444444444444' '0.5555555555555543' -> '4.999999999999998' Inexact Rounded -ddfma3181 fma 1 '4.444444444444444' '0.5555555555555542' -> '4.999999999999998' Inexact Rounded -ddfma3182 fma 1 '4.444444444444444' '0.5555555555555541' -> '4.999999999999998' Inexact Rounded -ddfma3183 fma 1 '4.444444444444444' '0.5555555555555540' -> '4.999999999999998' Rounded - --- and some more, including residue effects and different roundings -rounding: half_up -ddfma3200 fma 1 '1234560123456789' 0 -> '1234560123456789' -ddfma3201 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded -ddfma3202 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded -ddfma3203 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded -ddfma3204 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded -ddfma3205 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded -ddfma3206 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded -ddfma3207 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded -ddfma3208 fma 1 '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded -ddfma3209 fma 1 '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded -ddfma3210 fma 1 '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded -ddfma3211 fma 1 '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded -ddfma3212 fma 1 '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded -ddfma3213 fma 1 '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded -ddfma3214 fma 1 '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded -ddfma3215 fma 1 '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded -ddfma3216 fma 1 '1234560123456789' 1 -> '1234560123456790' -ddfma3217 fma 1 '1234560123456789' 1.000000001 -> '1234560123456790' Inexact Rounded -ddfma3218 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded -ddfma3219 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded - -rounding: half_even -ddfma3220 fma 1 '1234560123456789' 0 -> '1234560123456789' -ddfma3221 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded -ddfma3222 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded -ddfma3223 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded -ddfma3224 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded -ddfma3225 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded -ddfma3226 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded -ddfma3227 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded -ddfma3228 fma 1 '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded -ddfma3229 fma 1 '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded -ddfma3230 fma 1 '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded -ddfma3231 fma 1 '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded -ddfma3232 fma 1 '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded -ddfma3233 fma 1 '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded -ddfma3234 fma 1 '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded -ddfma3235 fma 1 '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded -ddfma3236 fma 1 '1234560123456789' 1 -> '1234560123456790' -ddfma3237 fma 1 '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded -ddfma3238 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded -ddfma3239 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded --- critical few with even bottom digit... -ddfma3240 fma 1 '1234560123456788' 0.499999999 -> '1234560123456788' Inexact Rounded -ddfma3241 fma 1 '1234560123456788' 0.5 -> '1234560123456788' Inexact Rounded -ddfma3242 fma 1 '1234560123456788' 0.500000001 -> '1234560123456789' Inexact Rounded - -rounding: down -ddfma3250 fma 1 '1234560123456789' 0 -> '1234560123456789' -ddfma3251 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded -ddfma3252 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded -ddfma3253 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded -ddfma3254 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded -ddfma3255 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded -ddfma3256 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded -ddfma3257 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded -ddfma3258 fma 1 '1234560123456789' 0.5 -> '1234560123456789' Inexact Rounded -ddfma3259 fma 1 '1234560123456789' 0.500000001 -> '1234560123456789' Inexact Rounded -ddfma3260 fma 1 '1234560123456789' 0.500001 -> '1234560123456789' Inexact Rounded -ddfma3261 fma 1 '1234560123456789' 0.51 -> '1234560123456789' Inexact Rounded -ddfma3262 fma 1 '1234560123456789' 0.6 -> '1234560123456789' Inexact Rounded -ddfma3263 fma 1 '1234560123456789' 0.9 -> '1234560123456789' Inexact Rounded -ddfma3264 fma 1 '1234560123456789' 0.99999 -> '1234560123456789' Inexact Rounded -ddfma3265 fma 1 '1234560123456789' 0.999999999 -> '1234560123456789' Inexact Rounded -ddfma3266 fma 1 '1234560123456789' 1 -> '1234560123456790' -ddfma3267 fma 1 '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded -ddfma3268 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded -ddfma3269 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded - --- 1 in last place tests -rounding: half_up -ddfma3301 fma 1 -1 1 -> 0 -ddfma3302 fma 1 0 1 -> 1 -ddfma3303 fma 1 1 1 -> 2 -ddfma3304 fma 1 12 1 -> 13 -ddfma3305 fma 1 98 1 -> 99 -ddfma3306 fma 1 99 1 -> 100 -ddfma3307 fma 1 100 1 -> 101 -ddfma3308 fma 1 101 1 -> 102 -ddfma3309 fma 1 -1 -1 -> -2 -ddfma3310 fma 1 0 -1 -> -1 -ddfma3311 fma 1 1 -1 -> 0 -ddfma3312 fma 1 12 -1 -> 11 -ddfma3313 fma 1 98 -1 -> 97 -ddfma3314 fma 1 99 -1 -> 98 -ddfma3315 fma 1 100 -1 -> 99 -ddfma3316 fma 1 101 -1 -> 100 - -ddfma3321 fma 1 -0.01 0.01 -> 0.00 -ddfma3322 fma 1 0.00 0.01 -> 0.01 -ddfma3323 fma 1 0.01 0.01 -> 0.02 -ddfma3324 fma 1 0.12 0.01 -> 0.13 -ddfma3325 fma 1 0.98 0.01 -> 0.99 -ddfma3326 fma 1 0.99 0.01 -> 1.00 -ddfma3327 fma 1 1.00 0.01 -> 1.01 -ddfma3328 fma 1 1.01 0.01 -> 1.02 -ddfma3329 fma 1 -0.01 -0.01 -> -0.02 -ddfma3330 fma 1 0.00 -0.01 -> -0.01 -ddfma3331 fma 1 0.01 -0.01 -> 0.00 -ddfma3332 fma 1 0.12 -0.01 -> 0.11 -ddfma3333 fma 1 0.98 -0.01 -> 0.97 -ddfma3334 fma 1 0.99 -0.01 -> 0.98 -ddfma3335 fma 1 1.00 -0.01 -> 0.99 -ddfma3336 fma 1 1.01 -0.01 -> 1.00 - --- some more cases where adding 0 affects the coefficient -ddfma3340 fma 1 1E+3 0 -> 1000 -ddfma3341 fma 1 1E+15 0 -> 1000000000000000 -ddfma3342 fma 1 1E+16 0 -> 1.000000000000000E+16 Rounded -ddfma3343 fma 1 1E+20 0 -> 1.000000000000000E+20 Rounded --- which simply follow from these cases ... -ddfma3344 fma 1 1E+3 1 -> 1001 -ddfma3345 fma 1 1E+15 1 -> 1000000000000001 -ddfma3346 fma 1 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded -ddfma3347 fma 1 1E+20 1 -> 1.000000000000000E+20 Inexact Rounded -ddfma3348 fma 1 1E+3 7 -> 1007 -ddfma3349 fma 1 1E+15 7 -> 1000000000000007 -ddfma3350 fma 1 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded -ddfma3351 fma 1 1E+20 7 -> 1.000000000000000E+20 Inexact Rounded - --- tryzeros cases -rounding: half_up -ddfma3360 fma 1 0E+50 10000E+1 -> 1.0000E+5 -ddfma3361 fma 1 0E-50 10000E+1 -> 100000.0000000000 Rounded -ddfma3362 fma 1 10000E+1 0E-50 -> 100000.0000000000 Rounded -ddfma3363 fma 1 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact -ddfma3364 fma 1 9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369 - --- a curiosity from JSR 13 testing -rounding: half_down -ddfma3370 fma 1 999999999999999 815 -> 1000000000000814 -ddfma3371 fma 1 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact -rounding: half_up -ddfma3372 fma 1 999999999999999 815 -> 1000000000000814 -ddfma3373 fma 1 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact -rounding: half_even -ddfma3374 fma 1 999999999999999 815 -> 1000000000000814 -ddfma3375 fma 1 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact - --- ulp replacement tests -ddfma3400 fma 1 1 77e-14 -> 1.00000000000077 -ddfma3401 fma 1 1 77e-15 -> 1.000000000000077 -ddfma3402 fma 1 1 77e-16 -> 1.000000000000008 Inexact Rounded -ddfma3403 fma 1 1 77e-17 -> 1.000000000000001 Inexact Rounded -ddfma3404 fma 1 1 77e-18 -> 1.000000000000000 Inexact Rounded -ddfma3405 fma 1 1 77e-19 -> 1.000000000000000 Inexact Rounded -ddfma3406 fma 1 1 77e-299 -> 1.000000000000000 Inexact Rounded - -ddfma3410 fma 1 10 77e-14 -> 10.00000000000077 -ddfma3411 fma 1 10 77e-15 -> 10.00000000000008 Inexact Rounded -ddfma3412 fma 1 10 77e-16 -> 10.00000000000001 Inexact Rounded -ddfma3413 fma 1 10 77e-17 -> 10.00000000000000 Inexact Rounded -ddfma3414 fma 1 10 77e-18 -> 10.00000000000000 Inexact Rounded -ddfma3415 fma 1 10 77e-19 -> 10.00000000000000 Inexact Rounded -ddfma3416 fma 1 10 77e-299 -> 10.00000000000000 Inexact Rounded - -ddfma3420 fma 1 77e-14 1 -> 1.00000000000077 -ddfma3421 fma 1 77e-15 1 -> 1.000000000000077 -ddfma3422 fma 1 77e-16 1 -> 1.000000000000008 Inexact Rounded -ddfma3423 fma 1 77e-17 1 -> 1.000000000000001 Inexact Rounded -ddfma3424 fma 1 77e-18 1 -> 1.000000000000000 Inexact Rounded -ddfma3425 fma 1 77e-19 1 -> 1.000000000000000 Inexact Rounded -ddfma3426 fma 1 77e-299 1 -> 1.000000000000000 Inexact Rounded - -ddfma3430 fma 1 77e-14 10 -> 10.00000000000077 -ddfma3431 fma 1 77e-15 10 -> 10.00000000000008 Inexact Rounded -ddfma3432 fma 1 77e-16 10 -> 10.00000000000001 Inexact Rounded -ddfma3433 fma 1 77e-17 10 -> 10.00000000000000 Inexact Rounded -ddfma3434 fma 1 77e-18 10 -> 10.00000000000000 Inexact Rounded -ddfma3435 fma 1 77e-19 10 -> 10.00000000000000 Inexact Rounded -ddfma3436 fma 1 77e-299 10 -> 10.00000000000000 Inexact Rounded - --- negative ulps -ddfma36440 fma 1 1 -77e-14 -> 0.99999999999923 -ddfma36441 fma 1 1 -77e-15 -> 0.999999999999923 -ddfma36442 fma 1 1 -77e-16 -> 0.9999999999999923 -ddfma36443 fma 1 1 -77e-17 -> 0.9999999999999992 Inexact Rounded -ddfma36444 fma 1 1 -77e-18 -> 0.9999999999999999 Inexact Rounded -ddfma36445 fma 1 1 -77e-19 -> 1.000000000000000 Inexact Rounded -ddfma36446 fma 1 1 -77e-99 -> 1.000000000000000 Inexact Rounded - -ddfma36450 fma 1 10 -77e-14 -> 9.99999999999923 -ddfma36451 fma 1 10 -77e-15 -> 9.999999999999923 -ddfma36452 fma 1 10 -77e-16 -> 9.999999999999992 Inexact Rounded -ddfma36453 fma 1 10 -77e-17 -> 9.999999999999999 Inexact Rounded -ddfma36454 fma 1 10 -77e-18 -> 10.00000000000000 Inexact Rounded -ddfma36455 fma 1 10 -77e-19 -> 10.00000000000000 Inexact Rounded -ddfma36456 fma 1 10 -77e-99 -> 10.00000000000000 Inexact Rounded - -ddfma36460 fma 1 -77e-14 1 -> 0.99999999999923 -ddfma36461 fma 1 -77e-15 1 -> 0.999999999999923 -ddfma36462 fma 1 -77e-16 1 -> 0.9999999999999923 -ddfma36463 fma 1 -77e-17 1 -> 0.9999999999999992 Inexact Rounded -ddfma36464 fma 1 -77e-18 1 -> 0.9999999999999999 Inexact Rounded -ddfma36465 fma 1 -77e-19 1 -> 1.000000000000000 Inexact Rounded -ddfma36466 fma 1 -77e-99 1 -> 1.000000000000000 Inexact Rounded - -ddfma36470 fma 1 -77e-14 10 -> 9.99999999999923 -ddfma36471 fma 1 -77e-15 10 -> 9.999999999999923 -ddfma36472 fma 1 -77e-16 10 -> 9.999999999999992 Inexact Rounded -ddfma36473 fma 1 -77e-17 10 -> 9.999999999999999 Inexact Rounded -ddfma36474 fma 1 -77e-18 10 -> 10.00000000000000 Inexact Rounded -ddfma36475 fma 1 -77e-19 10 -> 10.00000000000000 Inexact Rounded -ddfma36476 fma 1 -77e-99 10 -> 10.00000000000000 Inexact Rounded - --- negative ulps -ddfma36480 fma 1 -1 77e-14 -> -0.99999999999923 -ddfma36481 fma 1 -1 77e-15 -> -0.999999999999923 -ddfma36482 fma 1 -1 77e-16 -> -0.9999999999999923 -ddfma36483 fma 1 -1 77e-17 -> -0.9999999999999992 Inexact Rounded -ddfma36484 fma 1 -1 77e-18 -> -0.9999999999999999 Inexact Rounded -ddfma36485 fma 1 -1 77e-19 -> -1.000000000000000 Inexact Rounded -ddfma36486 fma 1 -1 77e-99 -> -1.000000000000000 Inexact Rounded - -ddfma36490 fma 1 -10 77e-14 -> -9.99999999999923 -ddfma36491 fma 1 -10 77e-15 -> -9.999999999999923 -ddfma36492 fma 1 -10 77e-16 -> -9.999999999999992 Inexact Rounded -ddfma36493 fma 1 -10 77e-17 -> -9.999999999999999 Inexact Rounded -ddfma36494 fma 1 -10 77e-18 -> -10.00000000000000 Inexact Rounded -ddfma36495 fma 1 -10 77e-19 -> -10.00000000000000 Inexact Rounded -ddfma36496 fma 1 -10 77e-99 -> -10.00000000000000 Inexact Rounded - -ddfma36500 fma 1 77e-14 -1 -> -0.99999999999923 -ddfma36501 fma 1 77e-15 -1 -> -0.999999999999923 -ddfma36502 fma 1 77e-16 -1 -> -0.9999999999999923 -ddfma36503 fma 1 77e-17 -1 -> -0.9999999999999992 Inexact Rounded -ddfma36504 fma 1 77e-18 -1 -> -0.9999999999999999 Inexact Rounded -ddfma36505 fma 1 77e-19 -1 -> -1.000000000000000 Inexact Rounded -ddfma36506 fma 1 77e-99 -1 -> -1.000000000000000 Inexact Rounded - -ddfma36510 fma 1 77e-14 -10 -> -9.99999999999923 -ddfma36511 fma 1 77e-15 -10 -> -9.999999999999923 -ddfma36512 fma 1 77e-16 -10 -> -9.999999999999992 Inexact Rounded -ddfma36513 fma 1 77e-17 -10 -> -9.999999999999999 Inexact Rounded -ddfma36514 fma 1 77e-18 -10 -> -10.00000000000000 Inexact Rounded -ddfma36515 fma 1 77e-19 -10 -> -10.00000000000000 Inexact Rounded -ddfma36516 fma 1 77e-99 -10 -> -10.00000000000000 Inexact Rounded - --- and a couple more with longer RHS -ddfma36520 fma 1 1 -7777e-16 -> 0.9999999999992223 -ddfma36521 fma 1 1 -7777e-17 -> 0.9999999999999222 Inexact Rounded -ddfma36522 fma 1 1 -7777e-18 -> 0.9999999999999922 Inexact Rounded -ddfma36523 fma 1 1 -7777e-19 -> 0.9999999999999992 Inexact Rounded -ddfma36524 fma 1 1 -7777e-20 -> 0.9999999999999999 Inexact Rounded -ddfma36525 fma 1 1 -7777e-21 -> 1.000000000000000 Inexact Rounded -ddfma36526 fma 1 1 -7777e-22 -> 1.000000000000000 Inexact Rounded - - --- and some more residue effects and different roundings -rounding: half_up -ddfma36540 fma 1 '6543210123456789' 0 -> '6543210123456789' -ddfma36541 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -ddfma36542 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -ddfma36543 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -ddfma36544 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -ddfma36545 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -ddfma36546 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -ddfma36547 fma 1 '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded -ddfma36548 fma 1 '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded -ddfma36549 fma 1 '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded -ddfma36550 fma 1 '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded -ddfma36551 fma 1 '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded -ddfma36552 fma 1 '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded -ddfma36553 fma 1 '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded -ddfma36554 fma 1 '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded -ddfma36555 fma 1 '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded -ddfma36556 fma 1 '6543210123456789' 1 -> '6543210123456790' -ddfma36557 fma 1 '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded -ddfma36558 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -ddfma36559 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded - -rounding: half_even -ddfma36560 fma 1 '6543210123456789' 0 -> '6543210123456789' -ddfma36561 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -ddfma36562 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -ddfma36563 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -ddfma36564 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -ddfma36565 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -ddfma36566 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -ddfma36567 fma 1 '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded -ddfma36568 fma 1 '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded -ddfma36569 fma 1 '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded -ddfma36570 fma 1 '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded -ddfma36571 fma 1 '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded -ddfma36572 fma 1 '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded -ddfma36573 fma 1 '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded -ddfma36574 fma 1 '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded -ddfma36575 fma 1 '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded -ddfma36576 fma 1 '6543210123456789' 1 -> '6543210123456790' -ddfma36577 fma 1 '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded -ddfma36578 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -ddfma36579 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded - --- critical few with even bottom digit... -ddfma37540 fma 1 '6543210123456788' 0.499999999 -> '6543210123456788' Inexact Rounded -ddfma37541 fma 1 '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded -ddfma37542 fma 1 '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded - -rounding: down -ddfma37550 fma 1 '6543210123456789' 0 -> '6543210123456789' -ddfma37551 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -ddfma37552 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -ddfma37553 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -ddfma37554 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -ddfma37555 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -ddfma37556 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -ddfma37557 fma 1 '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded -ddfma37558 fma 1 '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded -ddfma37559 fma 1 '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded -ddfma37560 fma 1 '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded -ddfma37561 fma 1 '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded -ddfma37562 fma 1 '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded -ddfma37563 fma 1 '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded -ddfma37564 fma 1 '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded -ddfma37565 fma 1 '6543210123456789' 0.999999999 -> '6543210123456789' Inexact Rounded -ddfma37566 fma 1 '6543210123456789' 1 -> '6543210123456790' -ddfma37567 fma 1 '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded -ddfma37568 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -ddfma37569 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded - - --- verify a query -rounding: down -ddfma37661 fma 1 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded -ddfma37662 fma 1 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded -ddfma37663 fma 1 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded -ddfma37664 fma 1 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded - --- more zeros, etc. -rounding: half_even - -ddfma37701 fma 1 5.00 1.00E-3 -> 5.00100 -ddfma37702 fma 1 00.00 0.000 -> 0.000 -ddfma37703 fma 1 00.00 0E-3 -> 0.000 -ddfma37704 fma 1 0E-3 00.00 -> 0.000 - -ddfma37710 fma 1 0E+3 00.00 -> 0.00 -ddfma37711 fma 1 0E+3 00.0 -> 0.0 -ddfma37712 fma 1 0E+3 00. -> 0 -ddfma37713 fma 1 0E+3 00.E+1 -> 0E+1 -ddfma37714 fma 1 0E+3 00.E+2 -> 0E+2 -ddfma37715 fma 1 0E+3 00.E+3 -> 0E+3 -ddfma37716 fma 1 0E+3 00.E+4 -> 0E+3 -ddfma37717 fma 1 0E+3 00.E+5 -> 0E+3 -ddfma37718 fma 1 0E+3 -00.0 -> 0.0 -ddfma37719 fma 1 0E+3 -00. -> 0 -ddfma37731 fma 1 0E+3 -00.E+1 -> 0E+1 - -ddfma37720 fma 1 00.00 0E+3 -> 0.00 -ddfma37721 fma 1 00.0 0E+3 -> 0.0 -ddfma37722 fma 1 00. 0E+3 -> 0 -ddfma37723 fma 1 00.E+1 0E+3 -> 0E+1 -ddfma37724 fma 1 00.E+2 0E+3 -> 0E+2 -ddfma37725 fma 1 00.E+3 0E+3 -> 0E+3 -ddfma37726 fma 1 00.E+4 0E+3 -> 0E+3 -ddfma37727 fma 1 00.E+5 0E+3 -> 0E+3 -ddfma37728 fma 1 -00.00 0E+3 -> 0.00 -ddfma37729 fma 1 -00.0 0E+3 -> 0.0 -ddfma37730 fma 1 -00. 0E+3 -> 0 - -ddfma37732 fma 1 0 0 -> 0 -ddfma37733 fma 1 0 -0 -> 0 -ddfma37734 fma 1 -0 0 -> 0 -ddfma37735 fma 1 -0 -0 -> -0 -- IEEE 854 special case - -ddfma37736 fma 1 1 -1 -> 0 -ddfma37737 fma 1 -1 -1 -> -2 -ddfma37738 fma 1 1 1 -> 2 -ddfma37739 fma 1 -1 1 -> 0 - -ddfma37741 fma 1 0 -1 -> -1 -ddfma37742 fma 1 -0 -1 -> -1 -ddfma37743 fma 1 0 1 -> 1 -ddfma37744 fma 1 -0 1 -> 1 -ddfma37745 fma 1 -1 0 -> -1 -ddfma37746 fma 1 -1 -0 -> -1 -ddfma37747 fma 1 1 0 -> 1 -ddfma37748 fma 1 1 -0 -> 1 - -ddfma37751 fma 1 0.0 -1 -> -1.0 -ddfma37752 fma 1 -0.0 -1 -> -1.0 -ddfma37753 fma 1 0.0 1 -> 1.0 -ddfma37754 fma 1 -0.0 1 -> 1.0 -ddfma37755 fma 1 -1.0 0 -> -1.0 -ddfma37756 fma 1 -1.0 -0 -> -1.0 -ddfma37757 fma 1 1.0 0 -> 1.0 -ddfma37758 fma 1 1.0 -0 -> 1.0 - -ddfma37761 fma 1 0 -1.0 -> -1.0 -ddfma37762 fma 1 -0 -1.0 -> -1.0 -ddfma37763 fma 1 0 1.0 -> 1.0 -ddfma37764 fma 1 -0 1.0 -> 1.0 -ddfma37765 fma 1 -1 0.0 -> -1.0 -ddfma37766 fma 1 -1 -0.0 -> -1.0 -ddfma37767 fma 1 1 0.0 -> 1.0 -ddfma37768 fma 1 1 -0.0 -> 1.0 - -ddfma37771 fma 1 0.0 -1.0 -> -1.0 -ddfma37772 fma 1 -0.0 -1.0 -> -1.0 -ddfma37773 fma 1 0.0 1.0 -> 1.0 -ddfma37774 fma 1 -0.0 1.0 -> 1.0 -ddfma37775 fma 1 -1.0 0.0 -> -1.0 -ddfma37776 fma 1 -1.0 -0.0 -> -1.0 -ddfma37777 fma 1 1.0 0.0 -> 1.0 -ddfma37778 fma 1 1.0 -0.0 -> 1.0 - --- Specials -ddfma37780 fma 1 -Inf -Inf -> -Infinity -ddfma37781 fma 1 -Inf -1000 -> -Infinity -ddfma37782 fma 1 -Inf -1 -> -Infinity -ddfma37783 fma 1 -Inf -0 -> -Infinity -ddfma37784 fma 1 -Inf 0 -> -Infinity -ddfma37785 fma 1 -Inf 1 -> -Infinity -ddfma37786 fma 1 -Inf 1000 -> -Infinity -ddfma37787 fma 1 -1000 -Inf -> -Infinity -ddfma37788 fma 1 -Inf -Inf -> -Infinity -ddfma37789 fma 1 -1 -Inf -> -Infinity -ddfma37790 fma 1 -0 -Inf -> -Infinity -ddfma37791 fma 1 0 -Inf -> -Infinity -ddfma37792 fma 1 1 -Inf -> -Infinity -ddfma37793 fma 1 1000 -Inf -> -Infinity -ddfma37794 fma 1 Inf -Inf -> NaN Invalid_operation - -ddfma37800 fma 1 Inf -Inf -> NaN Invalid_operation -ddfma37801 fma 1 Inf -1000 -> Infinity -ddfma37802 fma 1 Inf -1 -> Infinity -ddfma37803 fma 1 Inf -0 -> Infinity -ddfma37804 fma 1 Inf 0 -> Infinity -ddfma37805 fma 1 Inf 1 -> Infinity -ddfma37806 fma 1 Inf 1000 -> Infinity -ddfma37807 fma 1 Inf Inf -> Infinity -ddfma37808 fma 1 -1000 Inf -> Infinity -ddfma37809 fma 1 -Inf Inf -> NaN Invalid_operation -ddfma37810 fma 1 -1 Inf -> Infinity -ddfma37811 fma 1 -0 Inf -> Infinity -ddfma37812 fma 1 0 Inf -> Infinity -ddfma37813 fma 1 1 Inf -> Infinity -ddfma37814 fma 1 1000 Inf -> Infinity -ddfma37815 fma 1 Inf Inf -> Infinity - -ddfma37821 fma 1 NaN -Inf -> NaN -ddfma37822 fma 1 NaN -1000 -> NaN -ddfma37823 fma 1 NaN -1 -> NaN -ddfma37824 fma 1 NaN -0 -> NaN -ddfma37825 fma 1 NaN 0 -> NaN -ddfma37826 fma 1 NaN 1 -> NaN -ddfma37827 fma 1 NaN 1000 -> NaN -ddfma37828 fma 1 NaN Inf -> NaN -ddfma37829 fma 1 NaN NaN -> NaN -ddfma37830 fma 1 -Inf NaN -> NaN -ddfma37831 fma 1 -1000 NaN -> NaN -ddfma37832 fma 1 -1 NaN -> NaN -ddfma37833 fma 1 -0 NaN -> NaN -ddfma37834 fma 1 0 NaN -> NaN -ddfma37835 fma 1 1 NaN -> NaN -ddfma37836 fma 1 1000 NaN -> NaN -ddfma37837 fma 1 Inf NaN -> NaN - -ddfma37841 fma 1 sNaN -Inf -> NaN Invalid_operation -ddfma37842 fma 1 sNaN -1000 -> NaN Invalid_operation -ddfma37843 fma 1 sNaN -1 -> NaN Invalid_operation -ddfma37844 fma 1 sNaN -0 -> NaN Invalid_operation -ddfma37845 fma 1 sNaN 0 -> NaN Invalid_operation -ddfma37846 fma 1 sNaN 1 -> NaN Invalid_operation -ddfma37847 fma 1 sNaN 1000 -> NaN Invalid_operation -ddfma37848 fma 1 sNaN NaN -> NaN Invalid_operation -ddfma37849 fma 1 sNaN sNaN -> NaN Invalid_operation -ddfma37850 fma 1 NaN sNaN -> NaN Invalid_operation -ddfma37851 fma 1 -Inf sNaN -> NaN Invalid_operation -ddfma37852 fma 1 -1000 sNaN -> NaN Invalid_operation -ddfma37853 fma 1 -1 sNaN -> NaN Invalid_operation -ddfma37854 fma 1 -0 sNaN -> NaN Invalid_operation -ddfma37855 fma 1 0 sNaN -> NaN Invalid_operation -ddfma37856 fma 1 1 sNaN -> NaN Invalid_operation -ddfma37857 fma 1 1000 sNaN -> NaN Invalid_operation -ddfma37858 fma 1 Inf sNaN -> NaN Invalid_operation -ddfma37859 fma 1 NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddfma37861 fma 1 NaN1 -Inf -> NaN1 -ddfma37862 fma 1 +NaN2 -1000 -> NaN2 -ddfma37863 fma 1 NaN3 1000 -> NaN3 -ddfma37864 fma 1 NaN4 Inf -> NaN4 -ddfma37865 fma 1 NaN5 +NaN6 -> NaN5 -ddfma37866 fma 1 -Inf NaN7 -> NaN7 -ddfma37867 fma 1 -1000 NaN8 -> NaN8 -ddfma37868 fma 1 1000 NaN9 -> NaN9 -ddfma37869 fma 1 Inf +NaN10 -> NaN10 -ddfma37871 fma 1 sNaN11 -Inf -> NaN11 Invalid_operation -ddfma37872 fma 1 sNaN12 -1000 -> NaN12 Invalid_operation -ddfma37873 fma 1 sNaN13 1000 -> NaN13 Invalid_operation -ddfma37874 fma 1 sNaN14 NaN17 -> NaN14 Invalid_operation -ddfma37875 fma 1 sNaN15 sNaN18 -> NaN15 Invalid_operation -ddfma37876 fma 1 NaN16 sNaN19 -> NaN19 Invalid_operation -ddfma37877 fma 1 -Inf +sNaN20 -> NaN20 Invalid_operation -ddfma37878 fma 1 -1000 sNaN21 -> NaN21 Invalid_operation -ddfma37879 fma 1 1000 sNaN22 -> NaN22 Invalid_operation -ddfma37880 fma 1 Inf sNaN23 -> NaN23 Invalid_operation -ddfma37881 fma 1 +NaN25 +sNaN24 -> NaN24 Invalid_operation -ddfma37882 fma 1 -NaN26 NaN28 -> -NaN26 -ddfma37883 fma 1 -sNaN27 sNaN29 -> -NaN27 Invalid_operation -ddfma37884 fma 1 1000 -NaN30 -> -NaN30 -ddfma37885 fma 1 1000 -sNaN31 -> -NaN31 Invalid_operation - --- Here we explore near the boundary of rounding a subnormal to Nmin -ddfma37575 fma 1 1E-383 -1E-398 -> 9.99999999999999E-384 Subnormal -ddfma37576 fma 1 -1E-383 +1E-398 -> -9.99999999999999E-384 Subnormal - --- check overflow edge case --- 1234567890123456 -ddfma37972 apply 9.999999999999999E+384 -> 9.999999999999999E+384 -ddfma37973 fma 1 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded -ddfma37974 fma 1 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded -ddfma37975 fma 1 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded -ddfma37976 fma 1 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded -ddfma37977 fma 1 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded -ddfma37978 fma 1 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded -ddfma37979 fma 1 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded -ddfma37980 fma 1 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded -ddfma37981 fma 1 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded -ddfma37982 fma 1 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded -ddfma37983 fma 1 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded -ddfma37984 fma 1 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded - -ddfma37985 apply -9.999999999999999E+384 -> -9.999999999999999E+384 -ddfma37986 fma 1 -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded -ddfma37987 fma 1 -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded -ddfma37988 fma 1 -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded -ddfma37989 fma 1 -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded -ddfma37990 fma 1 -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded -ddfma37991 fma 1 -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded -ddfma37992 fma 1 -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded -ddfma37993 fma 1 -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded -ddfma37994 fma 1 -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded -ddfma37995 fma 1 -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded -ddfma37996 fma 1 -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded -ddfma37997 fma 1 -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded - --- And for round down full and subnormal results -rounding: down -ddfma371100 fma 1 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact -ddfma371101 fma 1 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact -ddfma371103 fma 1 +1 -1e-383 -> 0.9999999999999999 Rounded Inexact -ddfma371104 fma 1 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact -ddfma371105 fma 1 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact -ddfma371106 fma 1 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact -ddfma371107 fma 1 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact -ddfma371108 fma 1 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact -ddfma371109 fma 1 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact - -rounding: ceiling -ddfma371110 fma 1 -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact -ddfma371111 fma 1 -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact -ddfma371113 fma 1 -1 +1e-383 -> -0.9999999999999999 Rounded Inexact -ddfma371114 fma 1 -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact -ddfma371115 fma 1 -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact -ddfma371116 fma 1 -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact -ddfma371117 fma 1 -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact -ddfma371118 fma 1 -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact -ddfma371119 fma 1 -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact - --- tests based on Gunnar Degnbol's edge case -rounding: half_even - -ddfma371300 fma 1 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded -ddfma371310 fma 1 1E16 -0.51 -> 9999999999999999 Inexact Rounded -ddfma371311 fma 1 1E16 -0.501 -> 9999999999999999 Inexact Rounded -ddfma371312 fma 1 1E16 -0.5001 -> 9999999999999999 Inexact Rounded -ddfma371313 fma 1 1E16 -0.50001 -> 9999999999999999 Inexact Rounded -ddfma371314 fma 1 1E16 -0.500001 -> 9999999999999999 Inexact Rounded -ddfma371315 fma 1 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded -ddfma371316 fma 1 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded -ddfma371317 fma 1 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded -ddfma371318 fma 1 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded -ddfma371319 fma 1 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded -ddfma371320 fma 1 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded -ddfma371321 fma 1 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded -ddfma371322 fma 1 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded -ddfma371323 fma 1 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded -ddfma371324 fma 1 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded -ddfma371325 fma 1 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371326 fma 1 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371327 fma 1 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371328 fma 1 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371329 fma 1 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371330 fma 1 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371331 fma 1 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371332 fma 1 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371333 fma 1 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371334 fma 1 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371335 fma 1 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371336 fma 1 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371337 fma 1 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371338 fma 1 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded -ddfma371339 fma 1 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded - -ddfma371340 fma 1 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded -ddfma371341 fma 1 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded - -ddfma371349 fma 1 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded -ddfma371350 fma 1 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded -ddfma371351 fma 1 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded -ddfma371352 fma 1 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded -ddfma371353 fma 1 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded -ddfma371354 fma 1 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded -ddfma371355 fma 1 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded -ddfma371356 fma 1 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded -ddfma371357 fma 1 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded -ddfma371358 fma 1 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded -ddfma371359 fma 1 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded -ddfma371360 fma 1 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded -ddfma371361 fma 1 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded -ddfma371362 fma 1 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded -ddfma371363 fma 1 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded -ddfma371364 fma 1 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded -ddfma371365 fma 1 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371367 fma 1 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371368 fma 1 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371369 fma 1 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371370 fma 1 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371371 fma 1 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371372 fma 1 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371373 fma 1 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371374 fma 1 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371375 fma 1 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371376 fma 1 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371377 fma 1 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371378 fma 1 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded -ddfma371379 fma 1 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded -ddfma371380 fma 1 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded -ddfma371381 fma 1 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded -ddfma371382 fma 1 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371383 fma 1 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371384 fma 1 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371385 fma 1 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371386 fma 1 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371387 fma 1 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371388 fma 1 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371389 fma 1 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371390 fma 1 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371391 fma 1 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371392 fma 1 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371393 fma 1 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371394 fma 1 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded -ddfma371395 fma 1 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded -ddfma371396 fma 1 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded - --- More GD edge cases, where difference between the unadjusted --- exponents is larger than the maximum precision and one side is 0 -ddfma371420 fma 1 0 1.123456789012345 -> 1.123456789012345 -ddfma371421 fma 1 0 1.123456789012345E-1 -> 0.1123456789012345 -ddfma371422 fma 1 0 1.123456789012345E-2 -> 0.01123456789012345 -ddfma371423 fma 1 0 1.123456789012345E-3 -> 0.001123456789012345 -ddfma371424 fma 1 0 1.123456789012345E-4 -> 0.0001123456789012345 -ddfma371425 fma 1 0 1.123456789012345E-5 -> 0.00001123456789012345 -ddfma371426 fma 1 0 1.123456789012345E-6 -> 0.000001123456789012345 -ddfma371427 fma 1 0 1.123456789012345E-7 -> 1.123456789012345E-7 -ddfma371428 fma 1 0 1.123456789012345E-8 -> 1.123456789012345E-8 -ddfma371429 fma 1 0 1.123456789012345E-9 -> 1.123456789012345E-9 -ddfma371430 fma 1 0 1.123456789012345E-10 -> 1.123456789012345E-10 -ddfma371431 fma 1 0 1.123456789012345E-11 -> 1.123456789012345E-11 -ddfma371432 fma 1 0 1.123456789012345E-12 -> 1.123456789012345E-12 -ddfma371433 fma 1 0 1.123456789012345E-13 -> 1.123456789012345E-13 -ddfma371434 fma 1 0 1.123456789012345E-14 -> 1.123456789012345E-14 -ddfma371435 fma 1 0 1.123456789012345E-15 -> 1.123456789012345E-15 -ddfma371436 fma 1 0 1.123456789012345E-16 -> 1.123456789012345E-16 -ddfma371437 fma 1 0 1.123456789012345E-17 -> 1.123456789012345E-17 -ddfma371438 fma 1 0 1.123456789012345E-18 -> 1.123456789012345E-18 -ddfma371439 fma 1 0 1.123456789012345E-19 -> 1.123456789012345E-19 - --- same, reversed 0 -ddfma371440 fma 1 1.123456789012345 0 -> 1.123456789012345 -ddfma371441 fma 1 1.123456789012345E-1 0 -> 0.1123456789012345 -ddfma371442 fma 1 1.123456789012345E-2 0 -> 0.01123456789012345 -ddfma371443 fma 1 1.123456789012345E-3 0 -> 0.001123456789012345 -ddfma371444 fma 1 1.123456789012345E-4 0 -> 0.0001123456789012345 -ddfma371445 fma 1 1.123456789012345E-5 0 -> 0.00001123456789012345 -ddfma371446 fma 1 1.123456789012345E-6 0 -> 0.000001123456789012345 -ddfma371447 fma 1 1.123456789012345E-7 0 -> 1.123456789012345E-7 -ddfma371448 fma 1 1.123456789012345E-8 0 -> 1.123456789012345E-8 -ddfma371449 fma 1 1.123456789012345E-9 0 -> 1.123456789012345E-9 -ddfma371450 fma 1 1.123456789012345E-10 0 -> 1.123456789012345E-10 -ddfma371451 fma 1 1.123456789012345E-11 0 -> 1.123456789012345E-11 -ddfma371452 fma 1 1.123456789012345E-12 0 -> 1.123456789012345E-12 -ddfma371453 fma 1 1.123456789012345E-13 0 -> 1.123456789012345E-13 -ddfma371454 fma 1 1.123456789012345E-14 0 -> 1.123456789012345E-14 -ddfma371455 fma 1 1.123456789012345E-15 0 -> 1.123456789012345E-15 -ddfma371456 fma 1 1.123456789012345E-16 0 -> 1.123456789012345E-16 -ddfma371457 fma 1 1.123456789012345E-17 0 -> 1.123456789012345E-17 -ddfma371458 fma 1 1.123456789012345E-18 0 -> 1.123456789012345E-18 -ddfma371459 fma 1 1.123456789012345E-19 0 -> 1.123456789012345E-19 - --- same, Es on the 0 -ddfma371460 fma 1 1.123456789012345 0E-0 -> 1.123456789012345 -ddfma371461 fma 1 1.123456789012345 0E-1 -> 1.123456789012345 -ddfma371462 fma 1 1.123456789012345 0E-2 -> 1.123456789012345 -ddfma371463 fma 1 1.123456789012345 0E-3 -> 1.123456789012345 -ddfma371464 fma 1 1.123456789012345 0E-4 -> 1.123456789012345 -ddfma371465 fma 1 1.123456789012345 0E-5 -> 1.123456789012345 -ddfma371466 fma 1 1.123456789012345 0E-6 -> 1.123456789012345 -ddfma371467 fma 1 1.123456789012345 0E-7 -> 1.123456789012345 -ddfma371468 fma 1 1.123456789012345 0E-8 -> 1.123456789012345 -ddfma371469 fma 1 1.123456789012345 0E-9 -> 1.123456789012345 -ddfma371470 fma 1 1.123456789012345 0E-10 -> 1.123456789012345 -ddfma371471 fma 1 1.123456789012345 0E-11 -> 1.123456789012345 -ddfma371472 fma 1 1.123456789012345 0E-12 -> 1.123456789012345 -ddfma371473 fma 1 1.123456789012345 0E-13 -> 1.123456789012345 -ddfma371474 fma 1 1.123456789012345 0E-14 -> 1.123456789012345 -ddfma371475 fma 1 1.123456789012345 0E-15 -> 1.123456789012345 --- next four flag Rounded because the 0 extends the result -ddfma371476 fma 1 1.123456789012345 0E-16 -> 1.123456789012345 Rounded -ddfma371477 fma 1 1.123456789012345 0E-17 -> 1.123456789012345 Rounded -ddfma371478 fma 1 1.123456789012345 0E-18 -> 1.123456789012345 Rounded -ddfma371479 fma 1 1.123456789012345 0E-19 -> 1.123456789012345 Rounded - --- sum of two opposite-sign operands is exactly 0 and floor => -0 -rounding: half_up --- exact zeros from zeros -ddfma371500 fma 1 0 0E-19 -> 0E-19 -ddfma371501 fma 1 -0 0E-19 -> 0E-19 -ddfma371502 fma 1 0 -0E-19 -> 0E-19 -ddfma371503 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddfma371511 fma 1 -11 11 -> 0 -ddfma371512 fma 1 11 -11 -> 0 - -rounding: half_down --- exact zeros from zeros -ddfma371520 fma 1 0 0E-19 -> 0E-19 -ddfma371521 fma 1 -0 0E-19 -> 0E-19 -ddfma371522 fma 1 0 -0E-19 -> 0E-19 -ddfma371523 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddfma371531 fma 1 -11 11 -> 0 -ddfma371532 fma 1 11 -11 -> 0 - -rounding: half_even --- exact zeros from zeros -ddfma371540 fma 1 0 0E-19 -> 0E-19 -ddfma371541 fma 1 -0 0E-19 -> 0E-19 -ddfma371542 fma 1 0 -0E-19 -> 0E-19 -ddfma371543 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddfma371551 fma 1 -11 11 -> 0 -ddfma371552 fma 1 11 -11 -> 0 - -rounding: up --- exact zeros from zeros -ddfma371560 fma 1 0 0E-19 -> 0E-19 -ddfma371561 fma 1 -0 0E-19 -> 0E-19 -ddfma371562 fma 1 0 -0E-19 -> 0E-19 -ddfma371563 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddfma371571 fma 1 -11 11 -> 0 -ddfma371572 fma 1 11 -11 -> 0 - -rounding: down --- exact zeros from zeros -ddfma371580 fma 1 0 0E-19 -> 0E-19 -ddfma371581 fma 1 -0 0E-19 -> 0E-19 -ddfma371582 fma 1 0 -0E-19 -> 0E-19 -ddfma371583 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddfma371591 fma 1 -11 11 -> 0 -ddfma371592 fma 1 11 -11 -> 0 - -rounding: ceiling --- exact zeros from zeros -ddfma371600 fma 1 0 0E-19 -> 0E-19 -ddfma371601 fma 1 -0 0E-19 -> 0E-19 -ddfma371602 fma 1 0 -0E-19 -> 0E-19 -ddfma371603 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddfma371611 fma 1 -11 11 -> 0 -ddfma371612 fma 1 11 -11 -> 0 - --- and the extra-special ugly case; unusual minuses marked by -- * -rounding: floor --- exact zeros from zeros -ddfma371620 fma 1 0 0E-19 -> 0E-19 -ddfma371621 fma 1 -0 0E-19 -> -0E-19 -- * -ddfma371622 fma 1 0 -0E-19 -> -0E-19 -- * -ddfma371623 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -ddfma371631 fma 1 -11 11 -> -0 -- * -ddfma371632 fma 1 11 -11 -> -0 -- * - --- Examples from SQL proposal (Krishna Kulkarni) -ddfma371701 fma 1 130E-2 120E-2 -> 2.50 -ddfma371702 fma 1 130E-2 12E-1 -> 2.50 -ddfma371703 fma 1 130E-2 1E0 -> 2.30 -ddfma371704 fma 1 1E2 1E4 -> 1.01E+4 -ddfma371705 fma 1 130E-2 -120E-2 -> 0.10 -ddfma371706 fma 1 130E-2 -12E-1 -> 0.10 -ddfma371707 fma 1 130E-2 -1E0 -> 0.30 -ddfma371708 fma 1 1E2 -1E4 -> -9.9E+3 - --- Gappy coefficients; check residue handling even with full coefficient gap -rounding: half_even - -ddfma375001 fma 1 1234567890123456 1 -> 1234567890123457 -ddfma375002 fma 1 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded -ddfma375003 fma 1 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded -ddfma375004 fma 1 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded -ddfma375005 fma 1 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded -ddfma375006 fma 1 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded -ddfma375007 fma 1 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded -ddfma375008 fma 1 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded -ddfma375009 fma 1 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded -ddfma375010 fma 1 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded -ddfma375011 fma 1 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded -ddfma375012 fma 1 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded -ddfma375013 fma 1 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded -ddfma375014 fma 1 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded -ddfma375015 fma 1 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded -ddfma375016 fma 1 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded -ddfma375017 fma 1 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded -ddfma375018 fma 1 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded -ddfma375019 fma 1 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded -ddfma375020 fma 1 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded -ddfma375021 fma 1 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded - --- widening second argument at gap -ddfma375030 fma 1 12345678 1 -> 12345679 -ddfma375031 fma 1 12345678 0.1 -> 12345678.1 -ddfma375032 fma 1 12345678 0.12 -> 12345678.12 -ddfma375033 fma 1 12345678 0.123 -> 12345678.123 -ddfma375034 fma 1 12345678 0.1234 -> 12345678.1234 -ddfma375035 fma 1 12345678 0.12345 -> 12345678.12345 -ddfma375036 fma 1 12345678 0.123456 -> 12345678.123456 -ddfma375037 fma 1 12345678 0.1234567 -> 12345678.1234567 -ddfma375038 fma 1 12345678 0.12345678 -> 12345678.12345678 -ddfma375039 fma 1 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded -ddfma375040 fma 1 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded -ddfma375041 fma 1 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded -ddfma375042 fma 1 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded -ddfma375043 fma 1 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded -ddfma375044 fma 1 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded -ddfma375045 fma 1 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded -ddfma375046 fma 1 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded -ddfma375047 fma 1 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded -ddfma375048 fma 1 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded -ddfma375049 fma 1 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded --- 90123456 -rounding: half_even -ddfma375050 fma 1 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded -ddfma375051 fma 1 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded -ddfma375052 fma 1 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded -ddfma375053 fma 1 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded -ddfma375054 fma 1 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded -ddfma375055 fma 1 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded -ddfma375056 fma 1 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded -ddfma375057 fma 1 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded -ddfma375060 fma 1 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded -ddfma375061 fma 1 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded -ddfma375062 fma 1 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded -ddfma375063 fma 1 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded -ddfma375064 fma 1 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded -ddfma375065 fma 1 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded -ddfma375066 fma 1 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded -ddfma375067 fma 1 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded --- far-out residues (full coefficient gap is 16+15 digits) -rounding: up -ddfma375070 fma 1 12345678 1E-8 -> 12345678.00000001 -ddfma375071 fma 1 12345678 1E-9 -> 12345678.00000001 Inexact Rounded -ddfma375072 fma 1 12345678 1E-10 -> 12345678.00000001 Inexact Rounded -ddfma375073 fma 1 12345678 1E-11 -> 12345678.00000001 Inexact Rounded -ddfma375074 fma 1 12345678 1E-12 -> 12345678.00000001 Inexact Rounded -ddfma375075 fma 1 12345678 1E-13 -> 12345678.00000001 Inexact Rounded -ddfma375076 fma 1 12345678 1E-14 -> 12345678.00000001 Inexact Rounded -ddfma375077 fma 1 12345678 1E-15 -> 12345678.00000001 Inexact Rounded -ddfma375078 fma 1 12345678 1E-16 -> 12345678.00000001 Inexact Rounded -ddfma375079 fma 1 12345678 1E-17 -> 12345678.00000001 Inexact Rounded -ddfma375080 fma 1 12345678 1E-18 -> 12345678.00000001 Inexact Rounded -ddfma375081 fma 1 12345678 1E-19 -> 12345678.00000001 Inexact Rounded -ddfma375082 fma 1 12345678 1E-20 -> 12345678.00000001 Inexact Rounded -ddfma375083 fma 1 12345678 1E-25 -> 12345678.00000001 Inexact Rounded -ddfma375084 fma 1 12345678 1E-30 -> 12345678.00000001 Inexact Rounded -ddfma375085 fma 1 12345678 1E-31 -> 12345678.00000001 Inexact Rounded -ddfma375086 fma 1 12345678 1E-32 -> 12345678.00000001 Inexact Rounded -ddfma375087 fma 1 12345678 1E-33 -> 12345678.00000001 Inexact Rounded -ddfma375088 fma 1 12345678 1E-34 -> 12345678.00000001 Inexact Rounded -ddfma375089 fma 1 12345678 1E-35 -> 12345678.00000001 Inexact Rounded - --- desctructive subtraction (from remainder tests) - --- +++ some of these will be off-by-one remainder vs remainderNear - -ddfma4000 fma -1234567890123454 1.000000000000001 1234567890123456 -> 0.765432109876546 -ddfma4001 fma -1234567890123443 1.00000000000001 1234567890123456 -> 0.65432109876557 -ddfma4002 fma -1234567890123332 1.0000000000001 1234567890123456 -> 0.5432109876668 -ddfma4003 fma -308641972530863 4.000000000000001 1234567890123455 -> 2.691358027469137 -ddfma4004 fma -308641972530863 4.000000000000001 1234567890123456 -> 3.691358027469137 -ddfma4005 fma -246913578024696 4.9999999999999 1234567890123456 -> 0.6913578024696 -ddfma4006 fma -246913578024691 4.99999999999999 1234567890123456 -> 3.46913578024691 -ddfma4007 fma -246913578024691 4.999999999999999 1234567890123456 -> 1.246913578024691 -ddfma4008 fma -246913578024691 5.000000000000001 1234567890123456 -> 0.753086421975309 -ddfma4009 fma -246913578024690 5.00000000000001 1234567890123456 -> 3.53086421975310 -ddfma4010 fma -246913578024686 5.0000000000001 1234567890123456 -> 1.3086421975314 -ddfma4011 fma -1234567890123455 1.000000000000001 1234567890123456 -> -0.234567890123455 -ddfma4012 fma -1234567890123444 1.00000000000001 1234567890123456 -> -0.34567890123444 -ddfma4013 fma -1234567890123333 1.0000000000001 1234567890123456 -> -0.4567890123333 -ddfma4014 fma -308641972530864 4.000000000000001 1234567890123455 -> -1.308641972530864 -ddfma4015 fma -308641972530864 4.000000000000001 1234567890123456 -> -0.308641972530864 -ddfma4016 fma -246913578024696 4.9999999999999 1234567890123456 -> 0.6913578024696 -ddfma4017 fma -246913578024692 4.99999999999999 1234567890123456 -> -1.53086421975308 -ddfma4018 fma -246913578024691 4.999999999999999 1234567890123456 -> 1.246913578024691 -ddfma4019 fma -246913578024691 5.000000000000001 1234567890123456 -> 0.753086421975309 -ddfma4020 fma -246913578024691 5.00000000000001 1234567890123456 -> -1.46913578024691 -ddfma4021 fma -246913578024686 5.0000000000001 1234567890123456 -> 1.3086421975314 - - --- Null tests -ddfma39990 fma 1 10 # -> NaN Invalid_operation -ddfma39991 fma 1 # 10 -> NaN Invalid_operation - - +------------------------------------------------------------------------ +-- ddFMA.decTest -- decDouble Fused Multiply Add -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- These tests comprese three parts: +-- 1. Sanity checks and other three-operand tests (especially those +-- where the fused operation makes a difference) +-- 2. Multiply tests (third operand is neutral zero [0E+emax]) +-- 3. Addition tests (first operand is 1) +-- The multiply and addition tests are extensive because FMA may have +-- its own dedicated multiplication or addition routine(s), and they +-- also inherently check the left-to-right properties. + +-- Sanity checks +ddfma0001 fma 1 1 1 -> 2 +ddfma0002 fma 1 1 2 -> 3 +ddfma0003 fma 2 2 3 -> 7 +ddfma0004 fma 9 9 9 -> 90 +ddfma0005 fma -1 1 1 -> 0 +ddfma0006 fma -1 1 2 -> 1 +ddfma0007 fma -2 2 3 -> -1 +ddfma0008 fma -9 9 9 -> -72 +ddfma0011 fma 1 -1 1 -> 0 +ddfma0012 fma 1 -1 2 -> 1 +ddfma0013 fma 2 -2 3 -> -1 +ddfma0014 fma 9 -9 9 -> -72 +ddfma0015 fma 1 1 -1 -> 0 +ddfma0016 fma 1 1 -2 -> -1 +ddfma0017 fma 2 2 -3 -> 1 +ddfma0018 fma 9 9 -9 -> 72 + +-- non-integer exacts +ddfma0100 fma 25.2 63.6 -438 -> 1164.72 +ddfma0101 fma 0.301 0.380 334 -> 334.114380 +ddfma0102 fma 49.2 -4.8 23.3 -> -212.86 +ddfma0103 fma 4.22 0.079 -94.6 -> -94.26662 +ddfma0104 fma 903 0.797 0.887 -> 720.578 +ddfma0105 fma 6.13 -161 65.9 -> -921.03 +ddfma0106 fma 28.2 727 5.45 -> 20506.85 +ddfma0107 fma 4 605 688 -> 3108 +ddfma0108 fma 93.3 0.19 0.226 -> 17.953 +ddfma0109 fma 0.169 -341 5.61 -> -52.019 +ddfma0110 fma -72.2 30 -51.2 -> -2217.2 +ddfma0111 fma -0.409 13 20.4 -> 15.083 +ddfma0112 fma 317 77.0 19.0 -> 24428.0 +ddfma0113 fma 47 6.58 1.62 -> 310.88 +ddfma0114 fma 1.36 0.984 0.493 -> 1.83124 +ddfma0115 fma 72.7 274 1.56 -> 19921.36 +ddfma0116 fma 335 847 83 -> 283828 +ddfma0117 fma 666 0.247 25.4 -> 189.902 +ddfma0118 fma -3.87 3.06 78.0 -> 66.1578 +ddfma0119 fma 0.742 192 35.6 -> 178.064 +ddfma0120 fma -91.6 5.29 0.153 -> -484.411 + +-- cases where result is different from separate multiply + add; each +-- is preceded by the result of unfused multiply and add +-- [this is about 20% of all similar cases in general] +-- -> 7.123356429257969E+16 +ddfma0201 fma 27583489.6645 2582471078.04 2593183.42371 -> 7.123356429257970E+16 Inexact Rounded +-- -> 22813275328.80506 +ddfma0208 fma 24280.355566 939577.397653 2032.013252 -> 22813275328.80507 Inexact Rounded +-- -> -2.030397734278062E+16 +ddfma0209 fma 7848976432 -2586831.2281 137903.517909 -> -2.030397734278061E+16 Inexact Rounded +-- -> 2040774094814.077 +ddfma0217 fma 56890.388731 35872030.4255 339337.123410 -> 2040774094814.078 Inexact Rounded +-- -> 2.714469575205049E+18 +ddfma0220 fma 7533543.57445 360317763928 5073392.31638 -> 2.714469575205050E+18 Inexact Rounded +-- -> 1.011676297716716E+19 +ddfma0223 fma 739945255.563 13672312784.1 -994381.53572 -> 1.011676297716715E+19 Inexact Rounded +-- -> -2.914135721455315E+23 +ddfma0224 fma -413510957218 704729988550 9234162614.0 -> -2.914135721455314E+23 Inexact Rounded +-- -> 2.620119863365786E+17 +ddfma0226 fma 437484.00601 598906432790 894450638.442 -> 2.620119863365787E+17 Inexact Rounded +-- -> 1.272647995808178E+19 +ddfma0253 fma 73287556929 173651305.784 -358312568.389 -> 1.272647995808177E+19 Inexact Rounded +-- -> -1.753769320861851E+18 +ddfma0257 fma 203258304486 -8628278.8066 153127.446727 -> -1.753769320861850E+18 Inexact Rounded +-- -> -1.550737835263346E+17 +ddfma0260 fma 42560533.1774 -3643605282.86 178277.96377 -> -1.550737835263347E+17 Inexact Rounded +-- -> 2.897624620576005E+22 +ddfma0269 fma 142656587375 203118879670 604576103991 -> 2.897624620576004E+22 Inexact Rounded + +-- Cases where multiply would overflow or underflow if separate +fma0300 fma 9e+384 10 0 -> Infinity Overflow Inexact Rounded +fma0301 fma 1e+384 10 0 -> Infinity Overflow Inexact Rounded +fma0302 fma 1e+384 10 -1e+384 -> 9.000000000000000E+384 Clamped +fma0303 fma 1e+384 10 -9e+384 -> 1.000000000000000E+384 Clamped +-- subnormal etc. +fma0305 fma 1e-398 0.1 0 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +fma0306 fma 1e-398 0.1 1 -> 1.000000000000000 Inexact Rounded +fma0307 fma 1e-398 0.1 1e-398 -> 1E-398 Underflow Subnormal Inexact Rounded + +-- Infinite combinations +ddfma0800 fma Inf Inf Inf -> Infinity +ddfma0801 fma Inf Inf -Inf -> NaN Invalid_operation +ddfma0802 fma Inf -Inf Inf -> NaN Invalid_operation +ddfma0803 fma Inf -Inf -Inf -> -Infinity +ddfma0804 fma -Inf Inf Inf -> NaN Invalid_operation +ddfma0805 fma -Inf Inf -Inf -> -Infinity +ddfma0806 fma -Inf -Inf Inf -> Infinity +ddfma0807 fma -Inf -Inf -Inf -> NaN Invalid_operation + +-- Triple NaN propagation +ddfma0900 fma NaN2 NaN3 NaN5 -> NaN2 +ddfma0901 fma 0 NaN3 NaN5 -> NaN3 +ddfma0902 fma 0 0 NaN5 -> NaN5 +-- first sNaN wins (consider qNaN from earlier sNaN being +-- overridden by an sNaN in third operand) +ddfma0903 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation +ddfma0904 fma 0 sNaN2 sNaN3 -> NaN2 Invalid_operation +ddfma0905 fma 0 0 sNaN3 -> NaN3 Invalid_operation +ddfma0906 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation +ddfma0907 fma NaN7 sNaN2 sNaN3 -> NaN2 Invalid_operation +ddfma0908 fma NaN7 NaN5 sNaN3 -> NaN3 Invalid_operation + +-- MULTIPLICATION TESTS ------------------------------------------------ + +-- sanity checks +ddfma2000 fma 2 2 0e+384 -> 4 +ddfma2001 fma 2 3 0e+384 -> 6 +ddfma2002 fma 5 1 0e+384 -> 5 +ddfma2003 fma 5 2 0e+384 -> 10 +ddfma2004 fma 1.20 2 0e+384 -> 2.40 +ddfma2005 fma 1.20 0 0e+384 -> 0.00 +ddfma2006 fma 1.20 -2 0e+384 -> -2.40 +ddfma2007 fma -1.20 2 0e+384 -> -2.40 +ddfma2008 fma -1.20 0 0e+384 -> 0.00 +ddfma2009 fma -1.20 -2 0e+384 -> 2.40 +ddfma2010 fma 5.09 7.1 0e+384 -> 36.139 +ddfma2011 fma 2.5 4 0e+384 -> 10.0 +ddfma2012 fma 2.50 4 0e+384 -> 10.00 +ddfma2013 fma 1.23456789 1.00000000 0e+384 -> 1.234567890000000 Rounded +ddfma2015 fma 2.50 4 0e+384 -> 10.00 +ddfma2016 fma 9.999999999 9.999999999 0e+384 -> 99.99999998000000 Inexact Rounded +ddfma2017 fma 9.999999999 -9.999999999 0e+384 -> -99.99999998000000 Inexact Rounded +ddfma2018 fma -9.999999999 9.999999999 0e+384 -> -99.99999998000000 Inexact Rounded +ddfma2019 fma -9.999999999 -9.999999999 0e+384 -> 99.99999998000000 Inexact Rounded + +-- zeros, etc. +ddfma2021 fma 0 0 0e+384 -> 0 +ddfma2022 fma 0 -0 0e+384 -> 0 +ddfma2023 fma -0 0 0e+384 -> 0 +ddfma2024 fma -0 -0 0e+384 -> 0 +ddfma2025 fma -0.0 -0.0 0e+384 -> 0.00 +ddfma2026 fma -0.0 -0.0 0e+384 -> 0.00 +ddfma2027 fma -0.0 -0.0 0e+384 -> 0.00 +ddfma2028 fma -0.0 -0.0 0e+384 -> 0.00 +ddfma2030 fma 5.00 1E-3 0e+384 -> 0.00500 +ddfma2031 fma 00.00 0.000 0e+384 -> 0.00000 +ddfma2032 fma 00.00 0E-3 0e+384 -> 0.00000 -- rhs is 0 +ddfma2033 fma 0E-3 00.00 0e+384 -> 0.00000 -- lhs is 0 +ddfma2034 fma -5.00 1E-3 0e+384 -> -0.00500 +ddfma2035 fma -00.00 0.000 0e+384 -> 0.00000 +ddfma2036 fma -00.00 0E-3 0e+384 -> 0.00000 -- rhs is 0 +ddfma2037 fma -0E-3 00.00 0e+384 -> 0.00000 -- lhs is 0 +ddfma2038 fma 5.00 -1E-3 0e+384 -> -0.00500 +ddfma2039 fma 00.00 -0.000 0e+384 -> 0.00000 +ddfma2040 fma 00.00 -0E-3 0e+384 -> 0.00000 -- rhs is 0 +ddfma2041 fma 0E-3 -00.00 0e+384 -> 0.00000 -- lhs is 0 +ddfma2042 fma -5.00 -1E-3 0e+384 -> 0.00500 +ddfma2043 fma -00.00 -0.000 0e+384 -> 0.00000 +ddfma2044 fma -00.00 -0E-3 0e+384 -> 0.00000 -- rhs is 0 +ddfma2045 fma -0E-3 -00.00 -0e+384 -> 0.00000 -- lhs is 0 +ddfma2046 fma -0E-3 00.00 -0e+384 -> -0.00000 +ddfma2047 fma 0E-3 -00.00 -0e+384 -> -0.00000 +ddfma2048 fma 0E-3 00.00 -0e+384 -> 0.00000 + +-- examples from decarith +ddfma2050 fma 1.20 3 0e+384 -> 3.60 +ddfma2051 fma 7 3 0e+384 -> 21 +ddfma2052 fma 0.9 0.8 0e+384 -> 0.72 +ddfma2053 fma 0.9 -0 0e+384 -> 0.0 +ddfma2054 fma 654321 654321 0e+384 -> 428135971041 + +ddfma2060 fma 123.45 1e7 0e+384 -> 1.2345E+9 +ddfma2061 fma 123.45 1e8 0e+384 -> 1.2345E+10 +ddfma2062 fma 123.45 1e+9 0e+384 -> 1.2345E+11 +ddfma2063 fma 123.45 1e10 0e+384 -> 1.2345E+12 +ddfma2064 fma 123.45 1e11 0e+384 -> 1.2345E+13 +ddfma2065 fma 123.45 1e12 0e+384 -> 1.2345E+14 +ddfma2066 fma 123.45 1e13 0e+384 -> 1.2345E+15 + + +-- test some intermediate lengths +-- 1234567890123456 +ddfma2080 fma 0.1 1230123456456789 0e+384 -> 123012345645678.9 +ddfma2084 fma 0.1 1230123456456789 0e+384 -> 123012345645678.9 +ddfma2090 fma 1230123456456789 0.1 0e+384 -> 123012345645678.9 +ddfma2094 fma 1230123456456789 0.1 0e+384 -> 123012345645678.9 + +-- test some more edge cases and carries +ddfma2101 fma 9 9 0e+384 -> 81 +ddfma2102 fma 9 90 0e+384 -> 810 +ddfma2103 fma 9 900 0e+384 -> 8100 +ddfma2104 fma 9 9000 0e+384 -> 81000 +ddfma2105 fma 9 90000 0e+384 -> 810000 +ddfma2106 fma 9 900000 0e+384 -> 8100000 +ddfma2107 fma 9 9000000 0e+384 -> 81000000 +ddfma2108 fma 9 90000000 0e+384 -> 810000000 +ddfma2109 fma 9 900000000 0e+384 -> 8100000000 +ddfma2110 fma 9 9000000000 0e+384 -> 81000000000 +ddfma2111 fma 9 90000000000 0e+384 -> 810000000000 +ddfma2112 fma 9 900000000000 0e+384 -> 8100000000000 +ddfma2113 fma 9 9000000000000 0e+384 -> 81000000000000 +ddfma2114 fma 9 90000000000000 0e+384 -> 810000000000000 +ddfma2115 fma 9 900000000000000 0e+384 -> 8100000000000000 +--ddfma2116 fma 9 9000000000000000 0e+384 -> 81000000000000000 +--ddfma2117 fma 9 90000000000000000 0e+384 -> 810000000000000000 +--ddfma2118 fma 9 900000000000000000 0e+384 -> 8100000000000000000 +--ddfma2119 fma 9 9000000000000000000 0e+384 -> 81000000000000000000 +--ddfma2120 fma 9 90000000000000000000 0e+384 -> 810000000000000000000 +--ddfma2121 fma 9 900000000000000000000 0e+384 -> 8100000000000000000000 +--ddfma2122 fma 9 9000000000000000000000 0e+384 -> 81000000000000000000000 +--ddfma2123 fma 9 90000000000000000000000 0e+384 -> 810000000000000000000000 +-- test some more edge cases without carries +ddfma2131 fma 3 3 0e+384 -> 9 +ddfma2132 fma 3 30 0e+384 -> 90 +ddfma2133 fma 3 300 0e+384 -> 900 +ddfma2134 fma 3 3000 0e+384 -> 9000 +ddfma2135 fma 3 30000 0e+384 -> 90000 +ddfma2136 fma 3 300000 0e+384 -> 900000 +ddfma2137 fma 3 3000000 0e+384 -> 9000000 +ddfma2138 fma 3 30000000 0e+384 -> 90000000 +ddfma2139 fma 3 300000000 0e+384 -> 900000000 +ddfma2140 fma 3 3000000000 0e+384 -> 9000000000 +ddfma2141 fma 3 30000000000 0e+384 -> 90000000000 +ddfma2142 fma 3 300000000000 0e+384 -> 900000000000 +ddfma2143 fma 3 3000000000000 0e+384 -> 9000000000000 +ddfma2144 fma 3 30000000000000 0e+384 -> 90000000000000 +ddfma2145 fma 3 300000000000000 0e+384 -> 900000000000000 + +-- test some edge cases with exact rounding +ddfma2301 fma 9 9 0e+384 -> 81 +ddfma2302 fma 9 90 0e+384 -> 810 +ddfma2303 fma 9 900 0e+384 -> 8100 +ddfma2304 fma 9 9000 0e+384 -> 81000 +ddfma2305 fma 9 90000 0e+384 -> 810000 +ddfma2306 fma 9 900000 0e+384 -> 8100000 +ddfma2307 fma 9 9000000 0e+384 -> 81000000 +ddfma2308 fma 9 90000000 0e+384 -> 810000000 +ddfma2309 fma 9 900000000 0e+384 -> 8100000000 +ddfma2310 fma 9 9000000000 0e+384 -> 81000000000 +ddfma2311 fma 9 90000000000 0e+384 -> 810000000000 +ddfma2312 fma 9 900000000000 0e+384 -> 8100000000000 +ddfma2313 fma 9 9000000000000 0e+384 -> 81000000000000 +ddfma2314 fma 9 90000000000000 0e+384 -> 810000000000000 +ddfma2315 fma 9 900000000000000 0e+384 -> 8100000000000000 +ddfma2316 fma 9 9000000000000000 0e+384 -> 8.100000000000000E+16 Rounded +ddfma2317 fma 90 9000000000000000 0e+384 -> 8.100000000000000E+17 Rounded +ddfma2318 fma 900 9000000000000000 0e+384 -> 8.100000000000000E+18 Rounded +ddfma2319 fma 9000 9000000000000000 0e+384 -> 8.100000000000000E+19 Rounded +ddfma2320 fma 90000 9000000000000000 0e+384 -> 8.100000000000000E+20 Rounded +ddfma2321 fma 900000 9000000000000000 0e+384 -> 8.100000000000000E+21 Rounded +ddfma2322 fma 9000000 9000000000000000 0e+384 -> 8.100000000000000E+22 Rounded +ddfma2323 fma 90000000 9000000000000000 0e+384 -> 8.100000000000000E+23 Rounded + +-- tryzeros cases +ddfma2504 fma 0E-260 1000E-260 0e+384 -> 0E-398 Clamped +ddfma2505 fma 100E+260 0E+260 0e+384 -> 0E+369 Clamped + +-- mixed with zeros +ddfma2541 fma 0 -1 0e+384 -> 0 +ddfma2542 fma -0 -1 0e+384 -> 0 +ddfma2543 fma 0 1 0e+384 -> 0 +ddfma2544 fma -0 1 0e+384 -> 0 +ddfma2545 fma -1 0 0e+384 -> 0 +ddfma2546 fma -1 -0 0e+384 -> 0 +ddfma2547 fma 1 0 0e+384 -> 0 +ddfma2548 fma 1 -0 0e+384 -> 0 + +ddfma2551 fma 0.0 -1 0e+384 -> 0.0 +ddfma2552 fma -0.0 -1 0e+384 -> 0.0 +ddfma2553 fma 0.0 1 0e+384 -> 0.0 +ddfma2554 fma -0.0 1 0e+384 -> 0.0 +ddfma2555 fma -1.0 0 0e+384 -> 0.0 +ddfma2556 fma -1.0 -0 0e+384 -> 0.0 +ddfma2557 fma 1.0 0 0e+384 -> 0.0 +ddfma2558 fma 1.0 -0 0e+384 -> 0.0 + +ddfma2561 fma 0 -1.0 0e+384 -> 0.0 +ddfma2562 fma -0 -1.0 0e+384 -> 0.0 +ddfma2563 fma 0 1.0 0e+384 -> 0.0 +ddfma2564 fma -0 1.0 0e+384 -> 0.0 +ddfma2565 fma -1 0.0 0e+384 -> 0.0 +ddfma2566 fma -1 -0.0 0e+384 -> 0.0 +ddfma2567 fma 1 0.0 0e+384 -> 0.0 +ddfma2568 fma 1 -0.0 0e+384 -> 0.0 + +ddfma2571 fma 0.0 -1.0 0e+384 -> 0.00 +ddfma2572 fma -0.0 -1.0 0e+384 -> 0.00 +ddfma2573 fma 0.0 1.0 0e+384 -> 0.00 +ddfma2574 fma -0.0 1.0 0e+384 -> 0.00 +ddfma2575 fma -1.0 0.0 0e+384 -> 0.00 +ddfma2576 fma -1.0 -0.0 0e+384 -> 0.00 +ddfma2577 fma 1.0 0.0 0e+384 -> 0.00 +ddfma2578 fma 1.0 -0.0 0e+384 -> 0.00 + +-- Specials +ddfma2580 fma Inf -Inf 0e+384 -> -Infinity +ddfma2581 fma Inf -1000 0e+384 -> -Infinity +ddfma2582 fma Inf -1 0e+384 -> -Infinity +ddfma2583 fma Inf -0 0e+384 -> NaN Invalid_operation +ddfma2584 fma Inf 0 0e+384 -> NaN Invalid_operation +ddfma2585 fma Inf 1 0e+384 -> Infinity +ddfma2586 fma Inf 1000 0e+384 -> Infinity +ddfma2587 fma Inf Inf 0e+384 -> Infinity +ddfma2588 fma -1000 Inf 0e+384 -> -Infinity +ddfma2589 fma -Inf Inf 0e+384 -> -Infinity +ddfma2590 fma -1 Inf 0e+384 -> -Infinity +ddfma2591 fma -0 Inf 0e+384 -> NaN Invalid_operation +ddfma2592 fma 0 Inf 0e+384 -> NaN Invalid_operation +ddfma2593 fma 1 Inf 0e+384 -> Infinity +ddfma2594 fma 1000 Inf 0e+384 -> Infinity +ddfma2595 fma Inf Inf 0e+384 -> Infinity + +ddfma2600 fma -Inf -Inf 0e+384 -> Infinity +ddfma2601 fma -Inf -1000 0e+384 -> Infinity +ddfma2602 fma -Inf -1 0e+384 -> Infinity +ddfma2603 fma -Inf -0 0e+384 -> NaN Invalid_operation +ddfma2604 fma -Inf 0 0e+384 -> NaN Invalid_operation +ddfma2605 fma -Inf 1 0e+384 -> -Infinity +ddfma2606 fma -Inf 1000 0e+384 -> -Infinity +ddfma2607 fma -Inf Inf 0e+384 -> -Infinity +ddfma2608 fma -1000 Inf 0e+384 -> -Infinity +ddfma2609 fma -Inf -Inf 0e+384 -> Infinity +ddfma2610 fma -1 -Inf 0e+384 -> Infinity +ddfma2611 fma -0 -Inf 0e+384 -> NaN Invalid_operation +ddfma2612 fma 0 -Inf 0e+384 -> NaN Invalid_operation +ddfma2613 fma 1 -Inf 0e+384 -> -Infinity +ddfma2614 fma 1000 -Inf 0e+384 -> -Infinity +ddfma2615 fma Inf -Inf 0e+384 -> -Infinity + +ddfma2621 fma NaN -Inf 0e+384 -> NaN +ddfma2622 fma NaN -1000 0e+384 -> NaN +ddfma2623 fma NaN -1 0e+384 -> NaN +ddfma2624 fma NaN -0 0e+384 -> NaN +ddfma2625 fma NaN 0 0e+384 -> NaN +ddfma2626 fma NaN 1 0e+384 -> NaN +ddfma2627 fma NaN 1000 0e+384 -> NaN +ddfma2628 fma NaN Inf 0e+384 -> NaN +ddfma2629 fma NaN NaN 0e+384 -> NaN +ddfma2630 fma -Inf NaN 0e+384 -> NaN +ddfma2631 fma -1000 NaN 0e+384 -> NaN +ddfma2632 fma -1 NaN 0e+384 -> NaN +ddfma2633 fma -0 NaN 0e+384 -> NaN +ddfma2634 fma 0 NaN 0e+384 -> NaN +ddfma2635 fma 1 NaN 0e+384 -> NaN +ddfma2636 fma 1000 NaN 0e+384 -> NaN +ddfma2637 fma Inf NaN 0e+384 -> NaN + +ddfma2641 fma sNaN -Inf 0e+384 -> NaN Invalid_operation +ddfma2642 fma sNaN -1000 0e+384 -> NaN Invalid_operation +ddfma2643 fma sNaN -1 0e+384 -> NaN Invalid_operation +ddfma2644 fma sNaN -0 0e+384 -> NaN Invalid_operation +ddfma2645 fma sNaN 0 0e+384 -> NaN Invalid_operation +ddfma2646 fma sNaN 1 0e+384 -> NaN Invalid_operation +ddfma2647 fma sNaN 1000 0e+384 -> NaN Invalid_operation +ddfma2648 fma sNaN NaN 0e+384 -> NaN Invalid_operation +ddfma2649 fma sNaN sNaN 0e+384 -> NaN Invalid_operation +ddfma2650 fma NaN sNaN 0e+384 -> NaN Invalid_operation +ddfma2651 fma -Inf sNaN 0e+384 -> NaN Invalid_operation +ddfma2652 fma -1000 sNaN 0e+384 -> NaN Invalid_operation +ddfma2653 fma -1 sNaN 0e+384 -> NaN Invalid_operation +ddfma2654 fma -0 sNaN 0e+384 -> NaN Invalid_operation +ddfma2655 fma 0 sNaN 0e+384 -> NaN Invalid_operation +ddfma2656 fma 1 sNaN 0e+384 -> NaN Invalid_operation +ddfma2657 fma 1000 sNaN 0e+384 -> NaN Invalid_operation +ddfma2658 fma Inf sNaN 0e+384 -> NaN Invalid_operation +ddfma2659 fma NaN sNaN 0e+384 -> NaN Invalid_operation + +-- propagating NaNs +ddfma2661 fma NaN9 -Inf 0e+384 -> NaN9 +ddfma2662 fma NaN8 999 0e+384 -> NaN8 +ddfma2663 fma NaN71 Inf 0e+384 -> NaN71 +ddfma2664 fma NaN6 NaN5 0e+384 -> NaN6 +ddfma2665 fma -Inf NaN4 0e+384 -> NaN4 +ddfma2666 fma -999 NaN33 0e+384 -> NaN33 +ddfma2667 fma Inf NaN2 0e+384 -> NaN2 + +ddfma2671 fma sNaN99 -Inf 0e+384 -> NaN99 Invalid_operation +ddfma2672 fma sNaN98 -11 0e+384 -> NaN98 Invalid_operation +ddfma2673 fma sNaN97 NaN 0e+384 -> NaN97 Invalid_operation +ddfma2674 fma sNaN16 sNaN94 0e+384 -> NaN16 Invalid_operation +ddfma2675 fma NaN95 sNaN93 0e+384 -> NaN93 Invalid_operation +ddfma2676 fma -Inf sNaN92 0e+384 -> NaN92 Invalid_operation +ddfma2677 fma 088 sNaN91 0e+384 -> NaN91 Invalid_operation +ddfma2678 fma Inf sNaN90 0e+384 -> NaN90 Invalid_operation +ddfma2679 fma NaN sNaN89 0e+384 -> NaN89 Invalid_operation + +ddfma2681 fma -NaN9 -Inf 0e+384 -> -NaN9 +ddfma2682 fma -NaN8 999 0e+384 -> -NaN8 +ddfma2683 fma -NaN71 Inf 0e+384 -> -NaN71 +ddfma2684 fma -NaN6 -NaN5 0e+384 -> -NaN6 +ddfma2685 fma -Inf -NaN4 0e+384 -> -NaN4 +ddfma2686 fma -999 -NaN33 0e+384 -> -NaN33 +ddfma2687 fma Inf -NaN2 0e+384 -> -NaN2 + +ddfma2691 fma -sNaN99 -Inf 0e+384 -> -NaN99 Invalid_operation +ddfma2692 fma -sNaN98 -11 0e+384 -> -NaN98 Invalid_operation +ddfma2693 fma -sNaN97 NaN 0e+384 -> -NaN97 Invalid_operation +ddfma2694 fma -sNaN16 -sNaN94 0e+384 -> -NaN16 Invalid_operation +ddfma2695 fma -NaN95 -sNaN93 0e+384 -> -NaN93 Invalid_operation +ddfma2696 fma -Inf -sNaN92 0e+384 -> -NaN92 Invalid_operation +ddfma2697 fma 088 -sNaN91 0e+384 -> -NaN91 Invalid_operation +ddfma2698 fma Inf -sNaN90 0e+384 -> -NaN90 Invalid_operation +ddfma2699 fma -NaN -sNaN89 0e+384 -> -NaN89 Invalid_operation + +ddfma2701 fma -NaN -Inf 0e+384 -> -NaN +ddfma2702 fma -NaN 999 0e+384 -> -NaN +ddfma2703 fma -NaN Inf 0e+384 -> -NaN +ddfma2704 fma -NaN -NaN 0e+384 -> -NaN +ddfma2705 fma -Inf -NaN0 0e+384 -> -NaN +ddfma2706 fma -999 -NaN 0e+384 -> -NaN +ddfma2707 fma Inf -NaN 0e+384 -> -NaN + +ddfma2711 fma -sNaN -Inf 0e+384 -> -NaN Invalid_operation +ddfma2712 fma -sNaN -11 0e+384 -> -NaN Invalid_operation +ddfma2713 fma -sNaN00 NaN 0e+384 -> -NaN Invalid_operation +ddfma2714 fma -sNaN -sNaN 0e+384 -> -NaN Invalid_operation +ddfma2715 fma -NaN -sNaN 0e+384 -> -NaN Invalid_operation +ddfma2716 fma -Inf -sNaN 0e+384 -> -NaN Invalid_operation +ddfma2717 fma 088 -sNaN 0e+384 -> -NaN Invalid_operation +ddfma2718 fma Inf -sNaN 0e+384 -> -NaN Invalid_operation +ddfma2719 fma -NaN -sNaN 0e+384 -> -NaN Invalid_operation + +-- overflow and underflow tests .. note subnormal results +-- signs +ddfma2751 fma 1e+277 1e+311 0e+384 -> Infinity Overflow Inexact Rounded +ddfma2752 fma 1e+277 -1e+311 0e+384 -> -Infinity Overflow Inexact Rounded +ddfma2753 fma -1e+277 1e+311 0e+384 -> -Infinity Overflow Inexact Rounded +ddfma2754 fma -1e+277 -1e+311 0e+384 -> Infinity Overflow Inexact Rounded +ddfma2755 fma 1e-277 1e-311 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2756 fma 1e-277 -1e-311 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2757 fma -1e-277 1e-311 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2758 fma -1e-277 -1e-311 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +ddfma2760 fma 1e-291 1e-101 0e+384 -> 1E-392 Subnormal +ddfma2761 fma 1e-291 1e-102 0e+384 -> 1E-393 Subnormal +ddfma2762 fma 1e-291 1e-103 0e+384 -> 1E-394 Subnormal +ddfma2763 fma 1e-291 1e-104 0e+384 -> 1E-395 Subnormal +ddfma2764 fma 1e-291 1e-105 0e+384 -> 1E-396 Subnormal +ddfma2765 fma 1e-291 1e-106 0e+384 -> 1E-397 Subnormal +ddfma2766 fma 1e-291 1e-107 0e+384 -> 1E-398 Subnormal +ddfma2767 fma 1e-291 1e-108 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2768 fma 1e-291 1e-109 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2769 fma 1e-291 1e-110 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +-- [no equivalent of 'subnormal' for overflow] +ddfma2770 fma 1e+60 1e+321 0e+384 -> 1.000000000000E+381 Clamped +ddfma2771 fma 1e+60 1e+322 0e+384 -> 1.0000000000000E+382 Clamped +ddfma2772 fma 1e+60 1e+323 0e+384 -> 1.00000000000000E+383 Clamped +ddfma2773 fma 1e+60 1e+324 0e+384 -> 1.000000000000000E+384 Clamped +ddfma2774 fma 1e+60 1e+325 0e+384 -> Infinity Overflow Inexact Rounded +ddfma2775 fma 1e+60 1e+326 0e+384 -> Infinity Overflow Inexact Rounded +ddfma2776 fma 1e+60 1e+327 0e+384 -> Infinity Overflow Inexact Rounded +ddfma2777 fma 1e+60 1e+328 0e+384 -> Infinity Overflow Inexact Rounded +ddfma2778 fma 1e+60 1e+329 0e+384 -> Infinity Overflow Inexact Rounded +ddfma2779 fma 1e+60 1e+330 0e+384 -> Infinity Overflow Inexact Rounded + +ddfma2801 fma 1.0000E-394 1 0e+384 -> 1.0000E-394 Subnormal +ddfma2802 fma 1.000E-394 1e-1 0e+384 -> 1.000E-395 Subnormal +ddfma2803 fma 1.00E-394 1e-2 0e+384 -> 1.00E-396 Subnormal +ddfma2804 fma 1.0E-394 1e-3 0e+384 -> 1.0E-397 Subnormal +ddfma2805 fma 1.0E-394 1e-4 0e+384 -> 1E-398 Subnormal Rounded +ddfma2806 fma 1.3E-394 1e-4 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded +ddfma2807 fma 1.5E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded +ddfma2808 fma 1.7E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded +ddfma2809 fma 2.3E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded +ddfma2810 fma 2.5E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded +ddfma2811 fma 2.7E-394 1e-4 0e+384 -> 3E-398 Underflow Subnormal Inexact Rounded +ddfma2812 fma 1.49E-394 1e-4 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded +ddfma2813 fma 1.50E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded +ddfma2814 fma 1.51E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded +ddfma2815 fma 2.49E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded +ddfma2816 fma 2.50E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded +ddfma2817 fma 2.51E-394 1e-4 0e+384 -> 3E-398 Underflow Subnormal Inexact Rounded + +ddfma2818 fma 1E-394 1e-4 0e+384 -> 1E-398 Subnormal +ddfma2819 fma 3E-394 1e-5 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2820 fma 5E-394 1e-5 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2821 fma 7E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded +ddfma2822 fma 9E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded +ddfma2823 fma 9.9E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded + +ddfma2824 fma 1E-394 -1e-4 0e+384 -> -1E-398 Subnormal +ddfma2825 fma 3E-394 -1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2826 fma -5E-394 1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2827 fma 7E-394 -1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded +ddfma2828 fma -9E-394 1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded +ddfma2829 fma 9.9E-394 -1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded +ddfma2830 fma 3.0E-394 -1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped + +ddfma2831 fma 1.0E-199 1e-200 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddfma2832 fma 1.0E-199 1e-199 0e+384 -> 1E-398 Subnormal Rounded +ddfma2833 fma 1.0E-199 1e-198 0e+384 -> 1.0E-397 Subnormal +ddfma2834 fma 2.0E-199 2e-198 0e+384 -> 4.0E-397 Subnormal +ddfma2835 fma 4.0E-199 4e-198 0e+384 -> 1.60E-396 Subnormal +ddfma2836 fma 10.0E-199 10e-198 0e+384 -> 1.000E-395 Subnormal +ddfma2837 fma 30.0E-199 30e-198 0e+384 -> 9.000E-395 Subnormal +ddfma2838 fma 40.0E-199 40e-188 0e+384 -> 1.6000E-384 Subnormal +ddfma2839 fma 40.0E-199 40e-187 0e+384 -> 1.6000E-383 +ddfma2840 fma 40.0E-199 40e-186 0e+384 -> 1.6000E-382 + +-- Long operand overflow may be a different path +ddfma2870 fma 100 9.999E+383 0e+384 -> Infinity Inexact Overflow Rounded +ddfma2871 fma 100 -9.999E+383 0e+384 -> -Infinity Inexact Overflow Rounded +ddfma2872 fma 9.999E+383 100 0e+384 -> Infinity Inexact Overflow Rounded +ddfma2873 fma -9.999E+383 100 0e+384 -> -Infinity Inexact Overflow Rounded + +-- check for double-rounded subnormals +ddfma2881 fma 1.2347E-355 1.2347E-40 0e+384 -> 1.524E-395 Inexact Rounded Subnormal Underflow +ddfma2882 fma 1.234E-355 1.234E-40 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow +ddfma2883 fma 1.23E-355 1.23E-40 0e+384 -> 1.513E-395 Inexact Rounded Subnormal Underflow +ddfma2884 fma 1.2E-355 1.2E-40 0e+384 -> 1.44E-395 Subnormal +ddfma2885 fma 1.2E-355 1.2E-41 0e+384 -> 1.44E-396 Subnormal +ddfma2886 fma 1.2E-355 1.2E-42 0e+384 -> 1.4E-397 Subnormal Inexact Rounded Underflow +ddfma2887 fma 1.2E-355 1.3E-42 0e+384 -> 1.6E-397 Subnormal Inexact Rounded Underflow +ddfma2888 fma 1.3E-355 1.3E-42 0e+384 -> 1.7E-397 Subnormal Inexact Rounded Underflow +ddfma2889 fma 1.3E-355 1.3E-43 0e+384 -> 2E-398 Subnormal Inexact Rounded Underflow +ddfma2890 fma 1.3E-356 1.3E-43 0e+384 -> 0E-398 Clamped Subnormal Inexact Rounded Underflow + +ddfma2891 fma 1.2345E-39 1.234E-355 0e+384 -> 1.5234E-394 Inexact Rounded Subnormal Underflow +ddfma2892 fma 1.23456E-39 1.234E-355 0e+384 -> 1.5234E-394 Inexact Rounded Subnormal Underflow +ddfma2893 fma 1.2345E-40 1.234E-355 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow +ddfma2894 fma 1.23456E-40 1.234E-355 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow +ddfma2895 fma 1.2345E-41 1.234E-355 0e+384 -> 1.52E-396 Inexact Rounded Subnormal Underflow +ddfma2896 fma 1.23456E-41 1.234E-355 0e+384 -> 1.52E-396 Inexact Rounded Subnormal Underflow + +-- Now explore the case where we get a normal result with Underflow +ddfma2900 fma 0.3000000000E-191 0.3000000000E-191 0e+384 -> 9.00000000000000E-384 Subnormal Rounded +ddfma2901 fma 0.3000000001E-191 0.3000000001E-191 0e+384 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded +ddfma2902 fma 9.999999999999999E-383 0.0999999999999 0e+384 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded +ddfma2903 fma 9.999999999999999E-383 0.09999999999999 0e+384 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded +ddfma2904 fma 9.999999999999999E-383 0.099999999999999 0e+384 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded +ddfma2905 fma 9.999999999999999E-383 0.0999999999999999 0e+384 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded +-- prove operands are exact +ddfma2906 fma 9.999999999999999E-383 1 0e+384 -> 9.999999999999999E-383 +ddfma2907 fma 1 0.09999999999999999 0e+384 -> 0.09999999999999999 +-- the next rounds to Nmin +ddfma2908 fma 9.999999999999999E-383 0.09999999999999999 0e+384 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded + +-- hugest +ddfma2909 fma 9999999999999999 9999999999999999 0e+384 -> 9.999999999999998E+31 Inexact Rounded + +-- Null tests +ddfma2990 fma 10 # 0e+384 -> NaN Invalid_operation +ddfma2991 fma # 10 0e+384 -> NaN Invalid_operation + + +-- ADDITION TESTS ------------------------------------------------------ + +-- [first group are 'quick confidence check'] +ddfma3001 fma 1 1 1 -> 2 +ddfma3002 fma 1 2 3 -> 5 +ddfma3003 fma 1 '5.75' '3.3' -> 9.05 +ddfma3004 fma 1 '5' '-3' -> 2 +ddfma3005 fma 1 '-5' '-3' -> -8 +ddfma3006 fma 1 '-7' '2.5' -> -4.5 +ddfma3007 fma 1 '0.7' '0.3' -> 1.0 +ddfma3008 fma 1 '1.25' '1.25' -> 2.50 +ddfma3009 fma 1 '1.23456789' '1.00000000' -> '2.23456789' +ddfma3010 fma 1 '1.23456789' '1.00000011' -> '2.23456800' + +-- 1234567890123456 1234567890123456 +ddfma3011 fma 1 '0.4444444444444446' '0.5555555555555555' -> '1.000000000000000' Inexact Rounded +ddfma3012 fma 1 '0.4444444444444445' '0.5555555555555555' -> '1.000000000000000' Rounded +ddfma3013 fma 1 '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999' +ddfma3014 fma 1 '4444444444444444' '0.49' -> '4444444444444444' Inexact Rounded +ddfma3015 fma 1 '4444444444444444' '0.499' -> '4444444444444444' Inexact Rounded +ddfma3016 fma 1 '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded +ddfma3017 fma 1 '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded +ddfma3018 fma 1 '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded +ddfma3019 fma 1 '4444444444444444' '0.501' -> '4444444444444445' Inexact Rounded +ddfma3020 fma 1 '4444444444444444' '0.51' -> '4444444444444445' Inexact Rounded + +ddfma3021 fma 1 0 1 -> 1 +ddfma3022 fma 1 1 1 -> 2 +ddfma3023 fma 1 2 1 -> 3 +ddfma3024 fma 1 3 1 -> 4 +ddfma3025 fma 1 4 1 -> 5 +ddfma3026 fma 1 5 1 -> 6 +ddfma3027 fma 1 6 1 -> 7 +ddfma3028 fma 1 7 1 -> 8 +ddfma3029 fma 1 8 1 -> 9 +ddfma3030 fma 1 9 1 -> 10 + +-- some carrying effects +ddfma3031 fma 1 '0.9998' '0.0000' -> '0.9998' +ddfma3032 fma 1 '0.9998' '0.0001' -> '0.9999' +ddfma3033 fma 1 '0.9998' '0.0002' -> '1.0000' +ddfma3034 fma 1 '0.9998' '0.0003' -> '1.0001' + +ddfma3035 fma 1 '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +ddfma3036 fma 1 '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +ddfma3037 fma 1 '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +ddfma3038 fma 1 '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded +ddfma3039 fma 1 '700000' '10000e+16' -> '1.000000000000007E+20' Rounded + +-- symmetry: +ddfma3040 fma 1 '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded +ddfma3041 fma 1 '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded +ddfma3042 fma 1 '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded +ddfma3044 fma 1 '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded +ddfma3045 fma 1 '10000e+16' '700000' -> '1.000000000000007E+20' Rounded + +-- same, without rounding +ddfma3046 fma 1 '10000e+9' '7' -> '10000000000007' +ddfma3047 fma 1 '10000e+9' '70' -> '10000000000070' +ddfma3048 fma 1 '10000e+9' '700' -> '10000000000700' +ddfma3049 fma 1 '10000e+9' '7000' -> '10000000007000' +ddfma3050 fma 1 '10000e+9' '70000' -> '10000000070000' +ddfma3051 fma 1 '10000e+9' '700000' -> '10000000700000' +ddfma3052 fma 1 '10000e+9' '7000000' -> '10000007000000' + +-- examples from decarith +ddfma3053 fma 1 '12' '7.00' -> '19.00' +ddfma3054 fma 1 '1.3' '-1.07' -> '0.23' +ddfma3055 fma 1 '1.3' '-1.30' -> '0.00' +ddfma3056 fma 1 '1.3' '-2.07' -> '-0.77' +ddfma3057 fma 1 '1E+2' '1E+4' -> '1.01E+4' + +-- leading zero preservation +ddfma3061 fma 1 1 '0.0001' -> '1.0001' +ddfma3062 fma 1 1 '0.00001' -> '1.00001' +ddfma3063 fma 1 1 '0.000001' -> '1.000001' +ddfma3064 fma 1 1 '0.0000001' -> '1.0000001' +ddfma3065 fma 1 1 '0.00000001' -> '1.00000001' + +-- some funny zeros [in case of bad signum] +ddfma3070 fma 1 1 0 -> 1 +ddfma3071 fma 1 1 0. -> 1 +ddfma3072 fma 1 1 .0 -> 1.0 +ddfma3073 fma 1 1 0.0 -> 1.0 +ddfma3074 fma 1 1 0.00 -> 1.00 +ddfma3075 fma 1 0 1 -> 1 +ddfma3076 fma 1 0. 1 -> 1 +ddfma3077 fma 1 .0 1 -> 1.0 +ddfma3078 fma 1 0.0 1 -> 1.0 +ddfma3079 fma 1 0.00 1 -> 1.00 + +-- some carries +ddfma3080 fma 1 999999998 1 -> 999999999 +ddfma3081 fma 1 999999999 1 -> 1000000000 +ddfma3082 fma 1 99999999 1 -> 100000000 +ddfma3083 fma 1 9999999 1 -> 10000000 +ddfma3084 fma 1 999999 1 -> 1000000 +ddfma3085 fma 1 99999 1 -> 100000 +ddfma3086 fma 1 9999 1 -> 10000 +ddfma3087 fma 1 999 1 -> 1000 +ddfma3088 fma 1 99 1 -> 100 +ddfma3089 fma 1 9 1 -> 10 + + +-- more LHS swaps +ddfma3090 fma 1 '-56267E-10' 0 -> '-0.0000056267' +ddfma3091 fma 1 '-56267E-6' 0 -> '-0.056267' +ddfma3092 fma 1 '-56267E-5' 0 -> '-0.56267' +ddfma3093 fma 1 '-56267E-4' 0 -> '-5.6267' +ddfma3094 fma 1 '-56267E-3' 0 -> '-56.267' +ddfma3095 fma 1 '-56267E-2' 0 -> '-562.67' +ddfma3096 fma 1 '-56267E-1' 0 -> '-5626.7' +ddfma3097 fma 1 '-56267E-0' 0 -> '-56267' +ddfma3098 fma 1 '-5E-10' 0 -> '-5E-10' +ddfma3099 fma 1 '-5E-7' 0 -> '-5E-7' +ddfma3100 fma 1 '-5E-6' 0 -> '-0.000005' +ddfma3101 fma 1 '-5E-5' 0 -> '-0.00005' +ddfma3102 fma 1 '-5E-4' 0 -> '-0.0005' +ddfma3103 fma 1 '-5E-1' 0 -> '-0.5' +ddfma3104 fma 1 '-5E0' 0 -> '-5' +ddfma3105 fma 1 '-5E1' 0 -> '-50' +ddfma3106 fma 1 '-5E5' 0 -> '-500000' +ddfma3107 fma 1 '-5E15' 0 -> '-5000000000000000' +ddfma3108 fma 1 '-5E16' 0 -> '-5.000000000000000E+16' Rounded +ddfma3109 fma 1 '-5E17' 0 -> '-5.000000000000000E+17' Rounded +ddfma3110 fma 1 '-5E18' 0 -> '-5.000000000000000E+18' Rounded +ddfma3111 fma 1 '-5E100' 0 -> '-5.000000000000000E+100' Rounded + +-- more RHS swaps +ddfma3113 fma 1 0 '-56267E-10' -> '-0.0000056267' +ddfma3114 fma 1 0 '-56267E-6' -> '-0.056267' +ddfma3116 fma 1 0 '-56267E-5' -> '-0.56267' +ddfma3117 fma 1 0 '-56267E-4' -> '-5.6267' +ddfma3119 fma 1 0 '-56267E-3' -> '-56.267' +ddfma3120 fma 1 0 '-56267E-2' -> '-562.67' +ddfma3121 fma 1 0 '-56267E-1' -> '-5626.7' +ddfma3122 fma 1 0 '-56267E-0' -> '-56267' +ddfma3123 fma 1 0 '-5E-10' -> '-5E-10' +ddfma3124 fma 1 0 '-5E-7' -> '-5E-7' +ddfma3125 fma 1 0 '-5E-6' -> '-0.000005' +ddfma3126 fma 1 0 '-5E-5' -> '-0.00005' +ddfma3127 fma 1 0 '-5E-4' -> '-0.0005' +ddfma3128 fma 1 0 '-5E-1' -> '-0.5' +ddfma3129 fma 1 0 '-5E0' -> '-5' +ddfma3130 fma 1 0 '-5E1' -> '-50' +ddfma3131 fma 1 0 '-5E5' -> '-500000' +ddfma3132 fma 1 0 '-5E15' -> '-5000000000000000' +ddfma3133 fma 1 0 '-5E16' -> '-5.000000000000000E+16' Rounded +ddfma3134 fma 1 0 '-5E17' -> '-5.000000000000000E+17' Rounded +ddfma3135 fma 1 0 '-5E18' -> '-5.000000000000000E+18' Rounded +ddfma3136 fma 1 0 '-5E100' -> '-5.000000000000000E+100' Rounded + +-- related +ddfma3137 fma 1 1 '0E-19' -> '1.000000000000000' Rounded +ddfma3138 fma 1 -1 '0E-19' -> '-1.000000000000000' Rounded +ddfma3139 fma 1 '0E-19' 1 -> '1.000000000000000' Rounded +ddfma3140 fma 1 '0E-19' -1 -> '-1.000000000000000' Rounded +ddfma3141 fma 1 1E+11 0.0000 -> '100000000000.0000' +ddfma3142 fma 1 1E+11 0.00000 -> '100000000000.0000' Rounded +ddfma3143 fma 1 0.000 1E+12 -> '1000000000000.000' +ddfma3144 fma 1 0.0000 1E+12 -> '1000000000000.000' Rounded + +-- [some of the next group are really constructor tests] +ddfma3146 fma 1 '00.0' 0 -> '0.0' +ddfma3147 fma 1 '0.00' 0 -> '0.00' +ddfma3148 fma 1 0 '0.00' -> '0.00' +ddfma3149 fma 1 0 '00.0' -> '0.0' +ddfma3150 fma 1 '00.0' '0.00' -> '0.00' +ddfma3151 fma 1 '0.00' '00.0' -> '0.00' +ddfma3152 fma 1 '3' '.3' -> '3.3' +ddfma3153 fma 1 '3.' '.3' -> '3.3' +ddfma3154 fma 1 '3.0' '.3' -> '3.3' +ddfma3155 fma 1 '3.00' '.3' -> '3.30' +ddfma3156 fma 1 '3' '3' -> '6' +ddfma3157 fma 1 '3' '+3' -> '6' +ddfma3158 fma 1 '3' '-3' -> '0' +ddfma3159 fma 1 '0.3' '-0.3' -> '0.0' +ddfma3160 fma 1 '0.03' '-0.03' -> '0.00' + +-- try borderline precision, with carries, etc. +ddfma3161 fma 1 '1E+12' '-1' -> '999999999999' +ddfma3162 fma 1 '1E+12' '1.11' -> '1000000000001.11' +ddfma3163 fma 1 '1.11' '1E+12' -> '1000000000001.11' +ddfma3164 fma 1 '-1' '1E+12' -> '999999999999' +ddfma3165 fma 1 '7E+12' '-1' -> '6999999999999' +ddfma3166 fma 1 '7E+12' '1.11' -> '7000000000001.11' +ddfma3167 fma 1 '1.11' '7E+12' -> '7000000000001.11' +ddfma3168 fma 1 '-1' '7E+12' -> '6999999999999' + +rounding: half_up +-- 1.234567890123456 1234567890123456 1 234567890123456 +ddfma3170 fma 1 '4.444444444444444' '0.5555555555555567' -> '5.000000000000001' Inexact Rounded +ddfma3171 fma 1 '4.444444444444444' '0.5555555555555566' -> '5.000000000000001' Inexact Rounded +ddfma3172 fma 1 '4.444444444444444' '0.5555555555555565' -> '5.000000000000001' Inexact Rounded +ddfma3173 fma 1 '4.444444444444444' '0.5555555555555564' -> '5.000000000000000' Inexact Rounded +ddfma3174 fma 1 '4.444444444444444' '0.5555555555555553' -> '4.999999999999999' Inexact Rounded +ddfma3175 fma 1 '4.444444444444444' '0.5555555555555552' -> '4.999999999999999' Inexact Rounded +ddfma3176 fma 1 '4.444444444444444' '0.5555555555555551' -> '4.999999999999999' Inexact Rounded +ddfma3177 fma 1 '4.444444444444444' '0.5555555555555550' -> '4.999999999999999' Rounded +ddfma3178 fma 1 '4.444444444444444' '0.5555555555555545' -> '4.999999999999999' Inexact Rounded +ddfma3179 fma 1 '4.444444444444444' '0.5555555555555544' -> '4.999999999999998' Inexact Rounded +ddfma3180 fma 1 '4.444444444444444' '0.5555555555555543' -> '4.999999999999998' Inexact Rounded +ddfma3181 fma 1 '4.444444444444444' '0.5555555555555542' -> '4.999999999999998' Inexact Rounded +ddfma3182 fma 1 '4.444444444444444' '0.5555555555555541' -> '4.999999999999998' Inexact Rounded +ddfma3183 fma 1 '4.444444444444444' '0.5555555555555540' -> '4.999999999999998' Rounded + +-- and some more, including residue effects and different roundings +rounding: half_up +ddfma3200 fma 1 '1234560123456789' 0 -> '1234560123456789' +ddfma3201 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded +ddfma3202 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded +ddfma3203 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded +ddfma3204 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded +ddfma3205 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded +ddfma3206 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded +ddfma3207 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded +ddfma3208 fma 1 '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded +ddfma3209 fma 1 '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded +ddfma3210 fma 1 '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded +ddfma3211 fma 1 '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded +ddfma3212 fma 1 '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded +ddfma3213 fma 1 '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded +ddfma3214 fma 1 '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded +ddfma3215 fma 1 '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded +ddfma3216 fma 1 '1234560123456789' 1 -> '1234560123456790' +ddfma3217 fma 1 '1234560123456789' 1.000000001 -> '1234560123456790' Inexact Rounded +ddfma3218 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded +ddfma3219 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded + +rounding: half_even +ddfma3220 fma 1 '1234560123456789' 0 -> '1234560123456789' +ddfma3221 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded +ddfma3222 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded +ddfma3223 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded +ddfma3224 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded +ddfma3225 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded +ddfma3226 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded +ddfma3227 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded +ddfma3228 fma 1 '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded +ddfma3229 fma 1 '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded +ddfma3230 fma 1 '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded +ddfma3231 fma 1 '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded +ddfma3232 fma 1 '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded +ddfma3233 fma 1 '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded +ddfma3234 fma 1 '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded +ddfma3235 fma 1 '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded +ddfma3236 fma 1 '1234560123456789' 1 -> '1234560123456790' +ddfma3237 fma 1 '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded +ddfma3238 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded +ddfma3239 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded +-- critical few with even bottom digit... +ddfma3240 fma 1 '1234560123456788' 0.499999999 -> '1234560123456788' Inexact Rounded +ddfma3241 fma 1 '1234560123456788' 0.5 -> '1234560123456788' Inexact Rounded +ddfma3242 fma 1 '1234560123456788' 0.500000001 -> '1234560123456789' Inexact Rounded + +rounding: down +ddfma3250 fma 1 '1234560123456789' 0 -> '1234560123456789' +ddfma3251 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded +ddfma3252 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded +ddfma3253 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded +ddfma3254 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded +ddfma3255 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded +ddfma3256 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded +ddfma3257 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded +ddfma3258 fma 1 '1234560123456789' 0.5 -> '1234560123456789' Inexact Rounded +ddfma3259 fma 1 '1234560123456789' 0.500000001 -> '1234560123456789' Inexact Rounded +ddfma3260 fma 1 '1234560123456789' 0.500001 -> '1234560123456789' Inexact Rounded +ddfma3261 fma 1 '1234560123456789' 0.51 -> '1234560123456789' Inexact Rounded +ddfma3262 fma 1 '1234560123456789' 0.6 -> '1234560123456789' Inexact Rounded +ddfma3263 fma 1 '1234560123456789' 0.9 -> '1234560123456789' Inexact Rounded +ddfma3264 fma 1 '1234560123456789' 0.99999 -> '1234560123456789' Inexact Rounded +ddfma3265 fma 1 '1234560123456789' 0.999999999 -> '1234560123456789' Inexact Rounded +ddfma3266 fma 1 '1234560123456789' 1 -> '1234560123456790' +ddfma3267 fma 1 '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded +ddfma3268 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded +ddfma3269 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded + +-- 1 in last place tests +rounding: half_up +ddfma3301 fma 1 -1 1 -> 0 +ddfma3302 fma 1 0 1 -> 1 +ddfma3303 fma 1 1 1 -> 2 +ddfma3304 fma 1 12 1 -> 13 +ddfma3305 fma 1 98 1 -> 99 +ddfma3306 fma 1 99 1 -> 100 +ddfma3307 fma 1 100 1 -> 101 +ddfma3308 fma 1 101 1 -> 102 +ddfma3309 fma 1 -1 -1 -> -2 +ddfma3310 fma 1 0 -1 -> -1 +ddfma3311 fma 1 1 -1 -> 0 +ddfma3312 fma 1 12 -1 -> 11 +ddfma3313 fma 1 98 -1 -> 97 +ddfma3314 fma 1 99 -1 -> 98 +ddfma3315 fma 1 100 -1 -> 99 +ddfma3316 fma 1 101 -1 -> 100 + +ddfma3321 fma 1 -0.01 0.01 -> 0.00 +ddfma3322 fma 1 0.00 0.01 -> 0.01 +ddfma3323 fma 1 0.01 0.01 -> 0.02 +ddfma3324 fma 1 0.12 0.01 -> 0.13 +ddfma3325 fma 1 0.98 0.01 -> 0.99 +ddfma3326 fma 1 0.99 0.01 -> 1.00 +ddfma3327 fma 1 1.00 0.01 -> 1.01 +ddfma3328 fma 1 1.01 0.01 -> 1.02 +ddfma3329 fma 1 -0.01 -0.01 -> -0.02 +ddfma3330 fma 1 0.00 -0.01 -> -0.01 +ddfma3331 fma 1 0.01 -0.01 -> 0.00 +ddfma3332 fma 1 0.12 -0.01 -> 0.11 +ddfma3333 fma 1 0.98 -0.01 -> 0.97 +ddfma3334 fma 1 0.99 -0.01 -> 0.98 +ddfma3335 fma 1 1.00 -0.01 -> 0.99 +ddfma3336 fma 1 1.01 -0.01 -> 1.00 + +-- some more cases where adding 0 affects the coefficient +ddfma3340 fma 1 1E+3 0 -> 1000 +ddfma3341 fma 1 1E+15 0 -> 1000000000000000 +ddfma3342 fma 1 1E+16 0 -> 1.000000000000000E+16 Rounded +ddfma3343 fma 1 1E+20 0 -> 1.000000000000000E+20 Rounded +-- which simply follow from these cases ... +ddfma3344 fma 1 1E+3 1 -> 1001 +ddfma3345 fma 1 1E+15 1 -> 1000000000000001 +ddfma3346 fma 1 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded +ddfma3347 fma 1 1E+20 1 -> 1.000000000000000E+20 Inexact Rounded +ddfma3348 fma 1 1E+3 7 -> 1007 +ddfma3349 fma 1 1E+15 7 -> 1000000000000007 +ddfma3350 fma 1 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded +ddfma3351 fma 1 1E+20 7 -> 1.000000000000000E+20 Inexact Rounded + +-- tryzeros cases +rounding: half_up +ddfma3360 fma 1 0E+50 10000E+1 -> 1.0000E+5 +ddfma3361 fma 1 0E-50 10000E+1 -> 100000.0000000000 Rounded +ddfma3362 fma 1 10000E+1 0E-50 -> 100000.0000000000 Rounded +ddfma3363 fma 1 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact +ddfma3364 fma 1 9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369 + +-- a curiosity from JSR 13 testing +rounding: half_down +ddfma3370 fma 1 999999999999999 815 -> 1000000000000814 +ddfma3371 fma 1 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact +rounding: half_up +ddfma3372 fma 1 999999999999999 815 -> 1000000000000814 +ddfma3373 fma 1 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact +rounding: half_even +ddfma3374 fma 1 999999999999999 815 -> 1000000000000814 +ddfma3375 fma 1 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact + +-- ulp replacement tests +ddfma3400 fma 1 1 77e-14 -> 1.00000000000077 +ddfma3401 fma 1 1 77e-15 -> 1.000000000000077 +ddfma3402 fma 1 1 77e-16 -> 1.000000000000008 Inexact Rounded +ddfma3403 fma 1 1 77e-17 -> 1.000000000000001 Inexact Rounded +ddfma3404 fma 1 1 77e-18 -> 1.000000000000000 Inexact Rounded +ddfma3405 fma 1 1 77e-19 -> 1.000000000000000 Inexact Rounded +ddfma3406 fma 1 1 77e-299 -> 1.000000000000000 Inexact Rounded + +ddfma3410 fma 1 10 77e-14 -> 10.00000000000077 +ddfma3411 fma 1 10 77e-15 -> 10.00000000000008 Inexact Rounded +ddfma3412 fma 1 10 77e-16 -> 10.00000000000001 Inexact Rounded +ddfma3413 fma 1 10 77e-17 -> 10.00000000000000 Inexact Rounded +ddfma3414 fma 1 10 77e-18 -> 10.00000000000000 Inexact Rounded +ddfma3415 fma 1 10 77e-19 -> 10.00000000000000 Inexact Rounded +ddfma3416 fma 1 10 77e-299 -> 10.00000000000000 Inexact Rounded + +ddfma3420 fma 1 77e-14 1 -> 1.00000000000077 +ddfma3421 fma 1 77e-15 1 -> 1.000000000000077 +ddfma3422 fma 1 77e-16 1 -> 1.000000000000008 Inexact Rounded +ddfma3423 fma 1 77e-17 1 -> 1.000000000000001 Inexact Rounded +ddfma3424 fma 1 77e-18 1 -> 1.000000000000000 Inexact Rounded +ddfma3425 fma 1 77e-19 1 -> 1.000000000000000 Inexact Rounded +ddfma3426 fma 1 77e-299 1 -> 1.000000000000000 Inexact Rounded + +ddfma3430 fma 1 77e-14 10 -> 10.00000000000077 +ddfma3431 fma 1 77e-15 10 -> 10.00000000000008 Inexact Rounded +ddfma3432 fma 1 77e-16 10 -> 10.00000000000001 Inexact Rounded +ddfma3433 fma 1 77e-17 10 -> 10.00000000000000 Inexact Rounded +ddfma3434 fma 1 77e-18 10 -> 10.00000000000000 Inexact Rounded +ddfma3435 fma 1 77e-19 10 -> 10.00000000000000 Inexact Rounded +ddfma3436 fma 1 77e-299 10 -> 10.00000000000000 Inexact Rounded + +-- negative ulps +ddfma36440 fma 1 1 -77e-14 -> 0.99999999999923 +ddfma36441 fma 1 1 -77e-15 -> 0.999999999999923 +ddfma36442 fma 1 1 -77e-16 -> 0.9999999999999923 +ddfma36443 fma 1 1 -77e-17 -> 0.9999999999999992 Inexact Rounded +ddfma36444 fma 1 1 -77e-18 -> 0.9999999999999999 Inexact Rounded +ddfma36445 fma 1 1 -77e-19 -> 1.000000000000000 Inexact Rounded +ddfma36446 fma 1 1 -77e-99 -> 1.000000000000000 Inexact Rounded + +ddfma36450 fma 1 10 -77e-14 -> 9.99999999999923 +ddfma36451 fma 1 10 -77e-15 -> 9.999999999999923 +ddfma36452 fma 1 10 -77e-16 -> 9.999999999999992 Inexact Rounded +ddfma36453 fma 1 10 -77e-17 -> 9.999999999999999 Inexact Rounded +ddfma36454 fma 1 10 -77e-18 -> 10.00000000000000 Inexact Rounded +ddfma36455 fma 1 10 -77e-19 -> 10.00000000000000 Inexact Rounded +ddfma36456 fma 1 10 -77e-99 -> 10.00000000000000 Inexact Rounded + +ddfma36460 fma 1 -77e-14 1 -> 0.99999999999923 +ddfma36461 fma 1 -77e-15 1 -> 0.999999999999923 +ddfma36462 fma 1 -77e-16 1 -> 0.9999999999999923 +ddfma36463 fma 1 -77e-17 1 -> 0.9999999999999992 Inexact Rounded +ddfma36464 fma 1 -77e-18 1 -> 0.9999999999999999 Inexact Rounded +ddfma36465 fma 1 -77e-19 1 -> 1.000000000000000 Inexact Rounded +ddfma36466 fma 1 -77e-99 1 -> 1.000000000000000 Inexact Rounded + +ddfma36470 fma 1 -77e-14 10 -> 9.99999999999923 +ddfma36471 fma 1 -77e-15 10 -> 9.999999999999923 +ddfma36472 fma 1 -77e-16 10 -> 9.999999999999992 Inexact Rounded +ddfma36473 fma 1 -77e-17 10 -> 9.999999999999999 Inexact Rounded +ddfma36474 fma 1 -77e-18 10 -> 10.00000000000000 Inexact Rounded +ddfma36475 fma 1 -77e-19 10 -> 10.00000000000000 Inexact Rounded +ddfma36476 fma 1 -77e-99 10 -> 10.00000000000000 Inexact Rounded + +-- negative ulps +ddfma36480 fma 1 -1 77e-14 -> -0.99999999999923 +ddfma36481 fma 1 -1 77e-15 -> -0.999999999999923 +ddfma36482 fma 1 -1 77e-16 -> -0.9999999999999923 +ddfma36483 fma 1 -1 77e-17 -> -0.9999999999999992 Inexact Rounded +ddfma36484 fma 1 -1 77e-18 -> -0.9999999999999999 Inexact Rounded +ddfma36485 fma 1 -1 77e-19 -> -1.000000000000000 Inexact Rounded +ddfma36486 fma 1 -1 77e-99 -> -1.000000000000000 Inexact Rounded + +ddfma36490 fma 1 -10 77e-14 -> -9.99999999999923 +ddfma36491 fma 1 -10 77e-15 -> -9.999999999999923 +ddfma36492 fma 1 -10 77e-16 -> -9.999999999999992 Inexact Rounded +ddfma36493 fma 1 -10 77e-17 -> -9.999999999999999 Inexact Rounded +ddfma36494 fma 1 -10 77e-18 -> -10.00000000000000 Inexact Rounded +ddfma36495 fma 1 -10 77e-19 -> -10.00000000000000 Inexact Rounded +ddfma36496 fma 1 -10 77e-99 -> -10.00000000000000 Inexact Rounded + +ddfma36500 fma 1 77e-14 -1 -> -0.99999999999923 +ddfma36501 fma 1 77e-15 -1 -> -0.999999999999923 +ddfma36502 fma 1 77e-16 -1 -> -0.9999999999999923 +ddfma36503 fma 1 77e-17 -1 -> -0.9999999999999992 Inexact Rounded +ddfma36504 fma 1 77e-18 -1 -> -0.9999999999999999 Inexact Rounded +ddfma36505 fma 1 77e-19 -1 -> -1.000000000000000 Inexact Rounded +ddfma36506 fma 1 77e-99 -1 -> -1.000000000000000 Inexact Rounded + +ddfma36510 fma 1 77e-14 -10 -> -9.99999999999923 +ddfma36511 fma 1 77e-15 -10 -> -9.999999999999923 +ddfma36512 fma 1 77e-16 -10 -> -9.999999999999992 Inexact Rounded +ddfma36513 fma 1 77e-17 -10 -> -9.999999999999999 Inexact Rounded +ddfma36514 fma 1 77e-18 -10 -> -10.00000000000000 Inexact Rounded +ddfma36515 fma 1 77e-19 -10 -> -10.00000000000000 Inexact Rounded +ddfma36516 fma 1 77e-99 -10 -> -10.00000000000000 Inexact Rounded + +-- and a couple more with longer RHS +ddfma36520 fma 1 1 -7777e-16 -> 0.9999999999992223 +ddfma36521 fma 1 1 -7777e-17 -> 0.9999999999999222 Inexact Rounded +ddfma36522 fma 1 1 -7777e-18 -> 0.9999999999999922 Inexact Rounded +ddfma36523 fma 1 1 -7777e-19 -> 0.9999999999999992 Inexact Rounded +ddfma36524 fma 1 1 -7777e-20 -> 0.9999999999999999 Inexact Rounded +ddfma36525 fma 1 1 -7777e-21 -> 1.000000000000000 Inexact Rounded +ddfma36526 fma 1 1 -7777e-22 -> 1.000000000000000 Inexact Rounded + + +-- and some more residue effects and different roundings +rounding: half_up +ddfma36540 fma 1 '6543210123456789' 0 -> '6543210123456789' +ddfma36541 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +ddfma36542 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +ddfma36543 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +ddfma36544 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +ddfma36545 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +ddfma36546 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +ddfma36547 fma 1 '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +ddfma36548 fma 1 '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded +ddfma36549 fma 1 '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded +ddfma36550 fma 1 '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded +ddfma36551 fma 1 '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded +ddfma36552 fma 1 '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded +ddfma36553 fma 1 '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded +ddfma36554 fma 1 '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded +ddfma36555 fma 1 '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded +ddfma36556 fma 1 '6543210123456789' 1 -> '6543210123456790' +ddfma36557 fma 1 '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded +ddfma36558 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +ddfma36559 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +rounding: half_even +ddfma36560 fma 1 '6543210123456789' 0 -> '6543210123456789' +ddfma36561 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +ddfma36562 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +ddfma36563 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +ddfma36564 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +ddfma36565 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +ddfma36566 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +ddfma36567 fma 1 '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +ddfma36568 fma 1 '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded +ddfma36569 fma 1 '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded +ddfma36570 fma 1 '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded +ddfma36571 fma 1 '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded +ddfma36572 fma 1 '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded +ddfma36573 fma 1 '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded +ddfma36574 fma 1 '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded +ddfma36575 fma 1 '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded +ddfma36576 fma 1 '6543210123456789' 1 -> '6543210123456790' +ddfma36577 fma 1 '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded +ddfma36578 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +ddfma36579 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +-- critical few with even bottom digit... +ddfma37540 fma 1 '6543210123456788' 0.499999999 -> '6543210123456788' Inexact Rounded +ddfma37541 fma 1 '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded +ddfma37542 fma 1 '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded + +rounding: down +ddfma37550 fma 1 '6543210123456789' 0 -> '6543210123456789' +ddfma37551 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +ddfma37552 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +ddfma37553 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +ddfma37554 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +ddfma37555 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +ddfma37556 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +ddfma37557 fma 1 '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +ddfma37558 fma 1 '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded +ddfma37559 fma 1 '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded +ddfma37560 fma 1 '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded +ddfma37561 fma 1 '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded +ddfma37562 fma 1 '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded +ddfma37563 fma 1 '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded +ddfma37564 fma 1 '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded +ddfma37565 fma 1 '6543210123456789' 0.999999999 -> '6543210123456789' Inexact Rounded +ddfma37566 fma 1 '6543210123456789' 1 -> '6543210123456790' +ddfma37567 fma 1 '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded +ddfma37568 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +ddfma37569 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + + +-- verify a query +rounding: down +ddfma37661 fma 1 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded +ddfma37662 fma 1 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded +ddfma37663 fma 1 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded +ddfma37664 fma 1 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded + +-- more zeros, etc. +rounding: half_even + +ddfma37701 fma 1 5.00 1.00E-3 -> 5.00100 +ddfma37702 fma 1 00.00 0.000 -> 0.000 +ddfma37703 fma 1 00.00 0E-3 -> 0.000 +ddfma37704 fma 1 0E-3 00.00 -> 0.000 + +ddfma37710 fma 1 0E+3 00.00 -> 0.00 +ddfma37711 fma 1 0E+3 00.0 -> 0.0 +ddfma37712 fma 1 0E+3 00. -> 0 +ddfma37713 fma 1 0E+3 00.E+1 -> 0E+1 +ddfma37714 fma 1 0E+3 00.E+2 -> 0E+2 +ddfma37715 fma 1 0E+3 00.E+3 -> 0E+3 +ddfma37716 fma 1 0E+3 00.E+4 -> 0E+3 +ddfma37717 fma 1 0E+3 00.E+5 -> 0E+3 +ddfma37718 fma 1 0E+3 -00.0 -> 0.0 +ddfma37719 fma 1 0E+3 -00. -> 0 +ddfma37731 fma 1 0E+3 -00.E+1 -> 0E+1 + +ddfma37720 fma 1 00.00 0E+3 -> 0.00 +ddfma37721 fma 1 00.0 0E+3 -> 0.0 +ddfma37722 fma 1 00. 0E+3 -> 0 +ddfma37723 fma 1 00.E+1 0E+3 -> 0E+1 +ddfma37724 fma 1 00.E+2 0E+3 -> 0E+2 +ddfma37725 fma 1 00.E+3 0E+3 -> 0E+3 +ddfma37726 fma 1 00.E+4 0E+3 -> 0E+3 +ddfma37727 fma 1 00.E+5 0E+3 -> 0E+3 +ddfma37728 fma 1 -00.00 0E+3 -> 0.00 +ddfma37729 fma 1 -00.0 0E+3 -> 0.0 +ddfma37730 fma 1 -00. 0E+3 -> 0 + +ddfma37732 fma 1 0 0 -> 0 +ddfma37733 fma 1 0 -0 -> 0 +ddfma37734 fma 1 -0 0 -> 0 +ddfma37735 fma 1 -0 -0 -> -0 -- IEEE 854 special case + +ddfma37736 fma 1 1 -1 -> 0 +ddfma37737 fma 1 -1 -1 -> -2 +ddfma37738 fma 1 1 1 -> 2 +ddfma37739 fma 1 -1 1 -> 0 + +ddfma37741 fma 1 0 -1 -> -1 +ddfma37742 fma 1 -0 -1 -> -1 +ddfma37743 fma 1 0 1 -> 1 +ddfma37744 fma 1 -0 1 -> 1 +ddfma37745 fma 1 -1 0 -> -1 +ddfma37746 fma 1 -1 -0 -> -1 +ddfma37747 fma 1 1 0 -> 1 +ddfma37748 fma 1 1 -0 -> 1 + +ddfma37751 fma 1 0.0 -1 -> -1.0 +ddfma37752 fma 1 -0.0 -1 -> -1.0 +ddfma37753 fma 1 0.0 1 -> 1.0 +ddfma37754 fma 1 -0.0 1 -> 1.0 +ddfma37755 fma 1 -1.0 0 -> -1.0 +ddfma37756 fma 1 -1.0 -0 -> -1.0 +ddfma37757 fma 1 1.0 0 -> 1.0 +ddfma37758 fma 1 1.0 -0 -> 1.0 + +ddfma37761 fma 1 0 -1.0 -> -1.0 +ddfma37762 fma 1 -0 -1.0 -> -1.0 +ddfma37763 fma 1 0 1.0 -> 1.0 +ddfma37764 fma 1 -0 1.0 -> 1.0 +ddfma37765 fma 1 -1 0.0 -> -1.0 +ddfma37766 fma 1 -1 -0.0 -> -1.0 +ddfma37767 fma 1 1 0.0 -> 1.0 +ddfma37768 fma 1 1 -0.0 -> 1.0 + +ddfma37771 fma 1 0.0 -1.0 -> -1.0 +ddfma37772 fma 1 -0.0 -1.0 -> -1.0 +ddfma37773 fma 1 0.0 1.0 -> 1.0 +ddfma37774 fma 1 -0.0 1.0 -> 1.0 +ddfma37775 fma 1 -1.0 0.0 -> -1.0 +ddfma37776 fma 1 -1.0 -0.0 -> -1.0 +ddfma37777 fma 1 1.0 0.0 -> 1.0 +ddfma37778 fma 1 1.0 -0.0 -> 1.0 + +-- Specials +ddfma37780 fma 1 -Inf -Inf -> -Infinity +ddfma37781 fma 1 -Inf -1000 -> -Infinity +ddfma37782 fma 1 -Inf -1 -> -Infinity +ddfma37783 fma 1 -Inf -0 -> -Infinity +ddfma37784 fma 1 -Inf 0 -> -Infinity +ddfma37785 fma 1 -Inf 1 -> -Infinity +ddfma37786 fma 1 -Inf 1000 -> -Infinity +ddfma37787 fma 1 -1000 -Inf -> -Infinity +ddfma37788 fma 1 -Inf -Inf -> -Infinity +ddfma37789 fma 1 -1 -Inf -> -Infinity +ddfma37790 fma 1 -0 -Inf -> -Infinity +ddfma37791 fma 1 0 -Inf -> -Infinity +ddfma37792 fma 1 1 -Inf -> -Infinity +ddfma37793 fma 1 1000 -Inf -> -Infinity +ddfma37794 fma 1 Inf -Inf -> NaN Invalid_operation + +ddfma37800 fma 1 Inf -Inf -> NaN Invalid_operation +ddfma37801 fma 1 Inf -1000 -> Infinity +ddfma37802 fma 1 Inf -1 -> Infinity +ddfma37803 fma 1 Inf -0 -> Infinity +ddfma37804 fma 1 Inf 0 -> Infinity +ddfma37805 fma 1 Inf 1 -> Infinity +ddfma37806 fma 1 Inf 1000 -> Infinity +ddfma37807 fma 1 Inf Inf -> Infinity +ddfma37808 fma 1 -1000 Inf -> Infinity +ddfma37809 fma 1 -Inf Inf -> NaN Invalid_operation +ddfma37810 fma 1 -1 Inf -> Infinity +ddfma37811 fma 1 -0 Inf -> Infinity +ddfma37812 fma 1 0 Inf -> Infinity +ddfma37813 fma 1 1 Inf -> Infinity +ddfma37814 fma 1 1000 Inf -> Infinity +ddfma37815 fma 1 Inf Inf -> Infinity + +ddfma37821 fma 1 NaN -Inf -> NaN +ddfma37822 fma 1 NaN -1000 -> NaN +ddfma37823 fma 1 NaN -1 -> NaN +ddfma37824 fma 1 NaN -0 -> NaN +ddfma37825 fma 1 NaN 0 -> NaN +ddfma37826 fma 1 NaN 1 -> NaN +ddfma37827 fma 1 NaN 1000 -> NaN +ddfma37828 fma 1 NaN Inf -> NaN +ddfma37829 fma 1 NaN NaN -> NaN +ddfma37830 fma 1 -Inf NaN -> NaN +ddfma37831 fma 1 -1000 NaN -> NaN +ddfma37832 fma 1 -1 NaN -> NaN +ddfma37833 fma 1 -0 NaN -> NaN +ddfma37834 fma 1 0 NaN -> NaN +ddfma37835 fma 1 1 NaN -> NaN +ddfma37836 fma 1 1000 NaN -> NaN +ddfma37837 fma 1 Inf NaN -> NaN + +ddfma37841 fma 1 sNaN -Inf -> NaN Invalid_operation +ddfma37842 fma 1 sNaN -1000 -> NaN Invalid_operation +ddfma37843 fma 1 sNaN -1 -> NaN Invalid_operation +ddfma37844 fma 1 sNaN -0 -> NaN Invalid_operation +ddfma37845 fma 1 sNaN 0 -> NaN Invalid_operation +ddfma37846 fma 1 sNaN 1 -> NaN Invalid_operation +ddfma37847 fma 1 sNaN 1000 -> NaN Invalid_operation +ddfma37848 fma 1 sNaN NaN -> NaN Invalid_operation +ddfma37849 fma 1 sNaN sNaN -> NaN Invalid_operation +ddfma37850 fma 1 NaN sNaN -> NaN Invalid_operation +ddfma37851 fma 1 -Inf sNaN -> NaN Invalid_operation +ddfma37852 fma 1 -1000 sNaN -> NaN Invalid_operation +ddfma37853 fma 1 -1 sNaN -> NaN Invalid_operation +ddfma37854 fma 1 -0 sNaN -> NaN Invalid_operation +ddfma37855 fma 1 0 sNaN -> NaN Invalid_operation +ddfma37856 fma 1 1 sNaN -> NaN Invalid_operation +ddfma37857 fma 1 1000 sNaN -> NaN Invalid_operation +ddfma37858 fma 1 Inf sNaN -> NaN Invalid_operation +ddfma37859 fma 1 NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddfma37861 fma 1 NaN1 -Inf -> NaN1 +ddfma37862 fma 1 +NaN2 -1000 -> NaN2 +ddfma37863 fma 1 NaN3 1000 -> NaN3 +ddfma37864 fma 1 NaN4 Inf -> NaN4 +ddfma37865 fma 1 NaN5 +NaN6 -> NaN5 +ddfma37866 fma 1 -Inf NaN7 -> NaN7 +ddfma37867 fma 1 -1000 NaN8 -> NaN8 +ddfma37868 fma 1 1000 NaN9 -> NaN9 +ddfma37869 fma 1 Inf +NaN10 -> NaN10 +ddfma37871 fma 1 sNaN11 -Inf -> NaN11 Invalid_operation +ddfma37872 fma 1 sNaN12 -1000 -> NaN12 Invalid_operation +ddfma37873 fma 1 sNaN13 1000 -> NaN13 Invalid_operation +ddfma37874 fma 1 sNaN14 NaN17 -> NaN14 Invalid_operation +ddfma37875 fma 1 sNaN15 sNaN18 -> NaN15 Invalid_operation +ddfma37876 fma 1 NaN16 sNaN19 -> NaN19 Invalid_operation +ddfma37877 fma 1 -Inf +sNaN20 -> NaN20 Invalid_operation +ddfma37878 fma 1 -1000 sNaN21 -> NaN21 Invalid_operation +ddfma37879 fma 1 1000 sNaN22 -> NaN22 Invalid_operation +ddfma37880 fma 1 Inf sNaN23 -> NaN23 Invalid_operation +ddfma37881 fma 1 +NaN25 +sNaN24 -> NaN24 Invalid_operation +ddfma37882 fma 1 -NaN26 NaN28 -> -NaN26 +ddfma37883 fma 1 -sNaN27 sNaN29 -> -NaN27 Invalid_operation +ddfma37884 fma 1 1000 -NaN30 -> -NaN30 +ddfma37885 fma 1 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- Here we explore near the boundary of rounding a subnormal to Nmin +ddfma37575 fma 1 1E-383 -1E-398 -> 9.99999999999999E-384 Subnormal +ddfma37576 fma 1 -1E-383 +1E-398 -> -9.99999999999999E-384 Subnormal + +-- check overflow edge case +-- 1234567890123456 +ddfma37972 apply 9.999999999999999E+384 -> 9.999999999999999E+384 +ddfma37973 fma 1 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded +ddfma37974 fma 1 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded +ddfma37975 fma 1 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded +ddfma37976 fma 1 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded +ddfma37977 fma 1 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded +ddfma37978 fma 1 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded +ddfma37979 fma 1 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded +ddfma37980 fma 1 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded +ddfma37981 fma 1 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded +ddfma37982 fma 1 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded +ddfma37983 fma 1 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded +ddfma37984 fma 1 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded + +ddfma37985 apply -9.999999999999999E+384 -> -9.999999999999999E+384 +ddfma37986 fma 1 -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded +ddfma37987 fma 1 -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded +ddfma37988 fma 1 -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded +ddfma37989 fma 1 -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded +ddfma37990 fma 1 -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded +ddfma37991 fma 1 -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded +ddfma37992 fma 1 -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded +ddfma37993 fma 1 -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded +ddfma37994 fma 1 -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded +ddfma37995 fma 1 -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded +ddfma37996 fma 1 -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded +ddfma37997 fma 1 -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded + +-- And for round down full and subnormal results +rounding: down +ddfma371100 fma 1 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact +ddfma371101 fma 1 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact +ddfma371103 fma 1 +1 -1e-383 -> 0.9999999999999999 Rounded Inexact +ddfma371104 fma 1 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact +ddfma371105 fma 1 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact +ddfma371106 fma 1 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact +ddfma371107 fma 1 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact +ddfma371108 fma 1 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact +ddfma371109 fma 1 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact + +rounding: ceiling +ddfma371110 fma 1 -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact +ddfma371111 fma 1 -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact +ddfma371113 fma 1 -1 +1e-383 -> -0.9999999999999999 Rounded Inexact +ddfma371114 fma 1 -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact +ddfma371115 fma 1 -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact +ddfma371116 fma 1 -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact +ddfma371117 fma 1 -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact +ddfma371118 fma 1 -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact +ddfma371119 fma 1 -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact + +-- tests based on Gunnar Degnbol's edge case +rounding: half_even + +ddfma371300 fma 1 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded +ddfma371310 fma 1 1E16 -0.51 -> 9999999999999999 Inexact Rounded +ddfma371311 fma 1 1E16 -0.501 -> 9999999999999999 Inexact Rounded +ddfma371312 fma 1 1E16 -0.5001 -> 9999999999999999 Inexact Rounded +ddfma371313 fma 1 1E16 -0.50001 -> 9999999999999999 Inexact Rounded +ddfma371314 fma 1 1E16 -0.500001 -> 9999999999999999 Inexact Rounded +ddfma371315 fma 1 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded +ddfma371316 fma 1 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded +ddfma371317 fma 1 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded +ddfma371318 fma 1 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded +ddfma371319 fma 1 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded +ddfma371320 fma 1 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded +ddfma371321 fma 1 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded +ddfma371322 fma 1 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded +ddfma371323 fma 1 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded +ddfma371324 fma 1 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded +ddfma371325 fma 1 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371326 fma 1 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371327 fma 1 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371328 fma 1 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371329 fma 1 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371330 fma 1 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371331 fma 1 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371332 fma 1 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371333 fma 1 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371334 fma 1 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371335 fma 1 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371336 fma 1 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371337 fma 1 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371338 fma 1 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded +ddfma371339 fma 1 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded + +ddfma371340 fma 1 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded +ddfma371341 fma 1 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded + +ddfma371349 fma 1 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded +ddfma371350 fma 1 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded +ddfma371351 fma 1 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded +ddfma371352 fma 1 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded +ddfma371353 fma 1 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded +ddfma371354 fma 1 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded +ddfma371355 fma 1 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded +ddfma371356 fma 1 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded +ddfma371357 fma 1 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded +ddfma371358 fma 1 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded +ddfma371359 fma 1 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded +ddfma371360 fma 1 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded +ddfma371361 fma 1 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded +ddfma371362 fma 1 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded +ddfma371363 fma 1 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded +ddfma371364 fma 1 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded +ddfma371365 fma 1 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371367 fma 1 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371368 fma 1 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371369 fma 1 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371370 fma 1 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371371 fma 1 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371372 fma 1 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371373 fma 1 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371374 fma 1 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371375 fma 1 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371376 fma 1 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371377 fma 1 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371378 fma 1 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded +ddfma371379 fma 1 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded +ddfma371380 fma 1 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded +ddfma371381 fma 1 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded +ddfma371382 fma 1 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371383 fma 1 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371384 fma 1 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371385 fma 1 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371386 fma 1 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371387 fma 1 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371388 fma 1 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371389 fma 1 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371390 fma 1 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371391 fma 1 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371392 fma 1 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371393 fma 1 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371394 fma 1 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded +ddfma371395 fma 1 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded +ddfma371396 fma 1 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded + +-- More GD edge cases, where difference between the unadjusted +-- exponents is larger than the maximum precision and one side is 0 +ddfma371420 fma 1 0 1.123456789012345 -> 1.123456789012345 +ddfma371421 fma 1 0 1.123456789012345E-1 -> 0.1123456789012345 +ddfma371422 fma 1 0 1.123456789012345E-2 -> 0.01123456789012345 +ddfma371423 fma 1 0 1.123456789012345E-3 -> 0.001123456789012345 +ddfma371424 fma 1 0 1.123456789012345E-4 -> 0.0001123456789012345 +ddfma371425 fma 1 0 1.123456789012345E-5 -> 0.00001123456789012345 +ddfma371426 fma 1 0 1.123456789012345E-6 -> 0.000001123456789012345 +ddfma371427 fma 1 0 1.123456789012345E-7 -> 1.123456789012345E-7 +ddfma371428 fma 1 0 1.123456789012345E-8 -> 1.123456789012345E-8 +ddfma371429 fma 1 0 1.123456789012345E-9 -> 1.123456789012345E-9 +ddfma371430 fma 1 0 1.123456789012345E-10 -> 1.123456789012345E-10 +ddfma371431 fma 1 0 1.123456789012345E-11 -> 1.123456789012345E-11 +ddfma371432 fma 1 0 1.123456789012345E-12 -> 1.123456789012345E-12 +ddfma371433 fma 1 0 1.123456789012345E-13 -> 1.123456789012345E-13 +ddfma371434 fma 1 0 1.123456789012345E-14 -> 1.123456789012345E-14 +ddfma371435 fma 1 0 1.123456789012345E-15 -> 1.123456789012345E-15 +ddfma371436 fma 1 0 1.123456789012345E-16 -> 1.123456789012345E-16 +ddfma371437 fma 1 0 1.123456789012345E-17 -> 1.123456789012345E-17 +ddfma371438 fma 1 0 1.123456789012345E-18 -> 1.123456789012345E-18 +ddfma371439 fma 1 0 1.123456789012345E-19 -> 1.123456789012345E-19 + +-- same, reversed 0 +ddfma371440 fma 1 1.123456789012345 0 -> 1.123456789012345 +ddfma371441 fma 1 1.123456789012345E-1 0 -> 0.1123456789012345 +ddfma371442 fma 1 1.123456789012345E-2 0 -> 0.01123456789012345 +ddfma371443 fma 1 1.123456789012345E-3 0 -> 0.001123456789012345 +ddfma371444 fma 1 1.123456789012345E-4 0 -> 0.0001123456789012345 +ddfma371445 fma 1 1.123456789012345E-5 0 -> 0.00001123456789012345 +ddfma371446 fma 1 1.123456789012345E-6 0 -> 0.000001123456789012345 +ddfma371447 fma 1 1.123456789012345E-7 0 -> 1.123456789012345E-7 +ddfma371448 fma 1 1.123456789012345E-8 0 -> 1.123456789012345E-8 +ddfma371449 fma 1 1.123456789012345E-9 0 -> 1.123456789012345E-9 +ddfma371450 fma 1 1.123456789012345E-10 0 -> 1.123456789012345E-10 +ddfma371451 fma 1 1.123456789012345E-11 0 -> 1.123456789012345E-11 +ddfma371452 fma 1 1.123456789012345E-12 0 -> 1.123456789012345E-12 +ddfma371453 fma 1 1.123456789012345E-13 0 -> 1.123456789012345E-13 +ddfma371454 fma 1 1.123456789012345E-14 0 -> 1.123456789012345E-14 +ddfma371455 fma 1 1.123456789012345E-15 0 -> 1.123456789012345E-15 +ddfma371456 fma 1 1.123456789012345E-16 0 -> 1.123456789012345E-16 +ddfma371457 fma 1 1.123456789012345E-17 0 -> 1.123456789012345E-17 +ddfma371458 fma 1 1.123456789012345E-18 0 -> 1.123456789012345E-18 +ddfma371459 fma 1 1.123456789012345E-19 0 -> 1.123456789012345E-19 + +-- same, Es on the 0 +ddfma371460 fma 1 1.123456789012345 0E-0 -> 1.123456789012345 +ddfma371461 fma 1 1.123456789012345 0E-1 -> 1.123456789012345 +ddfma371462 fma 1 1.123456789012345 0E-2 -> 1.123456789012345 +ddfma371463 fma 1 1.123456789012345 0E-3 -> 1.123456789012345 +ddfma371464 fma 1 1.123456789012345 0E-4 -> 1.123456789012345 +ddfma371465 fma 1 1.123456789012345 0E-5 -> 1.123456789012345 +ddfma371466 fma 1 1.123456789012345 0E-6 -> 1.123456789012345 +ddfma371467 fma 1 1.123456789012345 0E-7 -> 1.123456789012345 +ddfma371468 fma 1 1.123456789012345 0E-8 -> 1.123456789012345 +ddfma371469 fma 1 1.123456789012345 0E-9 -> 1.123456789012345 +ddfma371470 fma 1 1.123456789012345 0E-10 -> 1.123456789012345 +ddfma371471 fma 1 1.123456789012345 0E-11 -> 1.123456789012345 +ddfma371472 fma 1 1.123456789012345 0E-12 -> 1.123456789012345 +ddfma371473 fma 1 1.123456789012345 0E-13 -> 1.123456789012345 +ddfma371474 fma 1 1.123456789012345 0E-14 -> 1.123456789012345 +ddfma371475 fma 1 1.123456789012345 0E-15 -> 1.123456789012345 +-- next four flag Rounded because the 0 extends the result +ddfma371476 fma 1 1.123456789012345 0E-16 -> 1.123456789012345 Rounded +ddfma371477 fma 1 1.123456789012345 0E-17 -> 1.123456789012345 Rounded +ddfma371478 fma 1 1.123456789012345 0E-18 -> 1.123456789012345 Rounded +ddfma371479 fma 1 1.123456789012345 0E-19 -> 1.123456789012345 Rounded + +-- sum of two opposite-sign operands is exactly 0 and floor => -0 +rounding: half_up +-- exact zeros from zeros +ddfma371500 fma 1 0 0E-19 -> 0E-19 +ddfma371501 fma 1 -0 0E-19 -> 0E-19 +ddfma371502 fma 1 0 -0E-19 -> 0E-19 +ddfma371503 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddfma371511 fma 1 -11 11 -> 0 +ddfma371512 fma 1 11 -11 -> 0 + +rounding: half_down +-- exact zeros from zeros +ddfma371520 fma 1 0 0E-19 -> 0E-19 +ddfma371521 fma 1 -0 0E-19 -> 0E-19 +ddfma371522 fma 1 0 -0E-19 -> 0E-19 +ddfma371523 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddfma371531 fma 1 -11 11 -> 0 +ddfma371532 fma 1 11 -11 -> 0 + +rounding: half_even +-- exact zeros from zeros +ddfma371540 fma 1 0 0E-19 -> 0E-19 +ddfma371541 fma 1 -0 0E-19 -> 0E-19 +ddfma371542 fma 1 0 -0E-19 -> 0E-19 +ddfma371543 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddfma371551 fma 1 -11 11 -> 0 +ddfma371552 fma 1 11 -11 -> 0 + +rounding: up +-- exact zeros from zeros +ddfma371560 fma 1 0 0E-19 -> 0E-19 +ddfma371561 fma 1 -0 0E-19 -> 0E-19 +ddfma371562 fma 1 0 -0E-19 -> 0E-19 +ddfma371563 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddfma371571 fma 1 -11 11 -> 0 +ddfma371572 fma 1 11 -11 -> 0 + +rounding: down +-- exact zeros from zeros +ddfma371580 fma 1 0 0E-19 -> 0E-19 +ddfma371581 fma 1 -0 0E-19 -> 0E-19 +ddfma371582 fma 1 0 -0E-19 -> 0E-19 +ddfma371583 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddfma371591 fma 1 -11 11 -> 0 +ddfma371592 fma 1 11 -11 -> 0 + +rounding: ceiling +-- exact zeros from zeros +ddfma371600 fma 1 0 0E-19 -> 0E-19 +ddfma371601 fma 1 -0 0E-19 -> 0E-19 +ddfma371602 fma 1 0 -0E-19 -> 0E-19 +ddfma371603 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddfma371611 fma 1 -11 11 -> 0 +ddfma371612 fma 1 11 -11 -> 0 + +-- and the extra-special ugly case; unusual minuses marked by -- * +rounding: floor +-- exact zeros from zeros +ddfma371620 fma 1 0 0E-19 -> 0E-19 +ddfma371621 fma 1 -0 0E-19 -> -0E-19 -- * +ddfma371622 fma 1 0 -0E-19 -> -0E-19 -- * +ddfma371623 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +ddfma371631 fma 1 -11 11 -> -0 -- * +ddfma371632 fma 1 11 -11 -> -0 -- * + +-- Examples from SQL proposal (Krishna Kulkarni) +ddfma371701 fma 1 130E-2 120E-2 -> 2.50 +ddfma371702 fma 1 130E-2 12E-1 -> 2.50 +ddfma371703 fma 1 130E-2 1E0 -> 2.30 +ddfma371704 fma 1 1E2 1E4 -> 1.01E+4 +ddfma371705 fma 1 130E-2 -120E-2 -> 0.10 +ddfma371706 fma 1 130E-2 -12E-1 -> 0.10 +ddfma371707 fma 1 130E-2 -1E0 -> 0.30 +ddfma371708 fma 1 1E2 -1E4 -> -9.9E+3 + +-- Gappy coefficients; check residue handling even with full coefficient gap +rounding: half_even + +ddfma375001 fma 1 1234567890123456 1 -> 1234567890123457 +ddfma375002 fma 1 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded +ddfma375003 fma 1 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded +ddfma375004 fma 1 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded +ddfma375005 fma 1 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded +ddfma375006 fma 1 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded +ddfma375007 fma 1 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded +ddfma375008 fma 1 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded +ddfma375009 fma 1 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded +ddfma375010 fma 1 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded +ddfma375011 fma 1 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded +ddfma375012 fma 1 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded +ddfma375013 fma 1 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded +ddfma375014 fma 1 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded +ddfma375015 fma 1 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded +ddfma375016 fma 1 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded +ddfma375017 fma 1 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded +ddfma375018 fma 1 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded +ddfma375019 fma 1 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded +ddfma375020 fma 1 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded +ddfma375021 fma 1 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded + +-- widening second argument at gap +ddfma375030 fma 1 12345678 1 -> 12345679 +ddfma375031 fma 1 12345678 0.1 -> 12345678.1 +ddfma375032 fma 1 12345678 0.12 -> 12345678.12 +ddfma375033 fma 1 12345678 0.123 -> 12345678.123 +ddfma375034 fma 1 12345678 0.1234 -> 12345678.1234 +ddfma375035 fma 1 12345678 0.12345 -> 12345678.12345 +ddfma375036 fma 1 12345678 0.123456 -> 12345678.123456 +ddfma375037 fma 1 12345678 0.1234567 -> 12345678.1234567 +ddfma375038 fma 1 12345678 0.12345678 -> 12345678.12345678 +ddfma375039 fma 1 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded +ddfma375040 fma 1 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded +ddfma375041 fma 1 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded +ddfma375042 fma 1 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded +ddfma375043 fma 1 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded +ddfma375044 fma 1 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded +ddfma375045 fma 1 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded +ddfma375046 fma 1 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded +ddfma375047 fma 1 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded +ddfma375048 fma 1 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded +ddfma375049 fma 1 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded +-- 90123456 +rounding: half_even +ddfma375050 fma 1 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded +ddfma375051 fma 1 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded +ddfma375052 fma 1 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded +ddfma375053 fma 1 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded +ddfma375054 fma 1 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded +ddfma375055 fma 1 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded +ddfma375056 fma 1 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded +ddfma375057 fma 1 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded +ddfma375060 fma 1 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded +ddfma375061 fma 1 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded +ddfma375062 fma 1 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded +ddfma375063 fma 1 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded +ddfma375064 fma 1 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded +ddfma375065 fma 1 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded +ddfma375066 fma 1 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded +ddfma375067 fma 1 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded +-- far-out residues (full coefficient gap is 16+15 digits) +rounding: up +ddfma375070 fma 1 12345678 1E-8 -> 12345678.00000001 +ddfma375071 fma 1 12345678 1E-9 -> 12345678.00000001 Inexact Rounded +ddfma375072 fma 1 12345678 1E-10 -> 12345678.00000001 Inexact Rounded +ddfma375073 fma 1 12345678 1E-11 -> 12345678.00000001 Inexact Rounded +ddfma375074 fma 1 12345678 1E-12 -> 12345678.00000001 Inexact Rounded +ddfma375075 fma 1 12345678 1E-13 -> 12345678.00000001 Inexact Rounded +ddfma375076 fma 1 12345678 1E-14 -> 12345678.00000001 Inexact Rounded +ddfma375077 fma 1 12345678 1E-15 -> 12345678.00000001 Inexact Rounded +ddfma375078 fma 1 12345678 1E-16 -> 12345678.00000001 Inexact Rounded +ddfma375079 fma 1 12345678 1E-17 -> 12345678.00000001 Inexact Rounded +ddfma375080 fma 1 12345678 1E-18 -> 12345678.00000001 Inexact Rounded +ddfma375081 fma 1 12345678 1E-19 -> 12345678.00000001 Inexact Rounded +ddfma375082 fma 1 12345678 1E-20 -> 12345678.00000001 Inexact Rounded +ddfma375083 fma 1 12345678 1E-25 -> 12345678.00000001 Inexact Rounded +ddfma375084 fma 1 12345678 1E-30 -> 12345678.00000001 Inexact Rounded +ddfma375085 fma 1 12345678 1E-31 -> 12345678.00000001 Inexact Rounded +ddfma375086 fma 1 12345678 1E-32 -> 12345678.00000001 Inexact Rounded +ddfma375087 fma 1 12345678 1E-33 -> 12345678.00000001 Inexact Rounded +ddfma375088 fma 1 12345678 1E-34 -> 12345678.00000001 Inexact Rounded +ddfma375089 fma 1 12345678 1E-35 -> 12345678.00000001 Inexact Rounded + +-- desctructive subtraction (from remainder tests) + +-- +++ some of these will be off-by-one remainder vs remainderNear + +ddfma4000 fma -1234567890123454 1.000000000000001 1234567890123456 -> 0.765432109876546 +ddfma4001 fma -1234567890123443 1.00000000000001 1234567890123456 -> 0.65432109876557 +ddfma4002 fma -1234567890123332 1.0000000000001 1234567890123456 -> 0.5432109876668 +ddfma4003 fma -308641972530863 4.000000000000001 1234567890123455 -> 2.691358027469137 +ddfma4004 fma -308641972530863 4.000000000000001 1234567890123456 -> 3.691358027469137 +ddfma4005 fma -246913578024696 4.9999999999999 1234567890123456 -> 0.6913578024696 +ddfma4006 fma -246913578024691 4.99999999999999 1234567890123456 -> 3.46913578024691 +ddfma4007 fma -246913578024691 4.999999999999999 1234567890123456 -> 1.246913578024691 +ddfma4008 fma -246913578024691 5.000000000000001 1234567890123456 -> 0.753086421975309 +ddfma4009 fma -246913578024690 5.00000000000001 1234567890123456 -> 3.53086421975310 +ddfma4010 fma -246913578024686 5.0000000000001 1234567890123456 -> 1.3086421975314 +ddfma4011 fma -1234567890123455 1.000000000000001 1234567890123456 -> -0.234567890123455 +ddfma4012 fma -1234567890123444 1.00000000000001 1234567890123456 -> -0.34567890123444 +ddfma4013 fma -1234567890123333 1.0000000000001 1234567890123456 -> -0.4567890123333 +ddfma4014 fma -308641972530864 4.000000000000001 1234567890123455 -> -1.308641972530864 +ddfma4015 fma -308641972530864 4.000000000000001 1234567890123456 -> -0.308641972530864 +ddfma4016 fma -246913578024696 4.9999999999999 1234567890123456 -> 0.6913578024696 +ddfma4017 fma -246913578024692 4.99999999999999 1234567890123456 -> -1.53086421975308 +ddfma4018 fma -246913578024691 4.999999999999999 1234567890123456 -> 1.246913578024691 +ddfma4019 fma -246913578024691 5.000000000000001 1234567890123456 -> 0.753086421975309 +ddfma4020 fma -246913578024691 5.00000000000001 1234567890123456 -> -1.46913578024691 +ddfma4021 fma -246913578024686 5.0000000000001 1234567890123456 -> 1.3086421975314 + + +-- Null tests +ddfma39990 fma 1 10 # -> NaN Invalid_operation +ddfma39991 fma 1 # 10 -> NaN Invalid_operation + + diff --git a/Lib/test/decimaltestdata/ddInvert.decTest b/Lib/test/decimaltestdata/ddInvert.decTest index 321e4e9..5d19fba 100644 --- a/Lib/test/decimaltestdata/ddInvert.decTest +++ b/Lib/test/decimaltestdata/ddInvert.decTest @@ -1,202 +1,202 @@ ------------------------------------------------------------------------- --- ddInvert.decTest -- digitwise logical INVERT for decDoubles -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check (truth table) -ddinv001 invert 0 -> 1111111111111111 -ddinv002 invert 1 -> 1111111111111110 -ddinv003 invert 10 -> 1111111111111101 -ddinv004 invert 111111111 -> 1111111000000000 -ddinv005 invert 000000000 -> 1111111111111111 --- and at msd and msd-1 -ddinv007 invert 0000000000000000 -> 1111111111111111 -ddinv008 invert 1000000000000000 -> 111111111111111 -ddinv009 invert 0000000000000000 -> 1111111111111111 -ddinv010 invert 0100000000000000 -> 1011111111111111 -ddinv011 invert 0111111111111111 -> 1000000000000000 -ddinv012 invert 1111111111111111 -> 0 -ddinv013 invert 0011111111111111 -> 1100000000000000 -ddinv014 invert 0111111111111111 -> 1000000000000000 - --- Various lengths --- 123456789 1234567890123456 -ddinv021 invert 111111111 -> 1111111000000000 -ddinv022 invert 111111111111 -> 1111000000000000 -ddinv023 invert 11111111 -> 1111111100000000 -ddinv025 invert 1111111 -> 1111111110000000 -ddinv026 invert 111111 -> 1111111111000000 -ddinv027 invert 11111 -> 1111111111100000 -ddinv028 invert 1111 -> 1111111111110000 -ddinv029 invert 111 -> 1111111111111000 -ddinv031 invert 11 -> 1111111111111100 -ddinv032 invert 1 -> 1111111111111110 -ddinv033 invert 111111111111 -> 1111000000000000 -ddinv034 invert 11111111111 -> 1111100000000000 -ddinv035 invert 1111111111 -> 1111110000000000 -ddinv036 invert 111111111 -> 1111111000000000 - -ddinv040 invert 011111111 -> 1111111100000000 -ddinv041 invert 101111111 -> 1111111010000000 -ddinv042 invert 110111111 -> 1111111001000000 -ddinv043 invert 111011111 -> 1111111000100000 -ddinv044 invert 111101111 -> 1111111000010000 -ddinv045 invert 111110111 -> 1111111000001000 -ddinv046 invert 111111011 -> 1111111000000100 -ddinv047 invert 111111101 -> 1111111000000010 -ddinv048 invert 111111110 -> 1111111000000001 -ddinv049 invert 011111011 -> 1111111100000100 -ddinv050 invert 101111101 -> 1111111010000010 -ddinv051 invert 110111110 -> 1111111001000001 -ddinv052 invert 111011101 -> 1111111000100010 -ddinv053 invert 111101011 -> 1111111000010100 -ddinv054 invert 111110111 -> 1111111000001000 -ddinv055 invert 111101011 -> 1111111000010100 -ddinv056 invert 111011101 -> 1111111000100010 -ddinv057 invert 110111110 -> 1111111001000001 -ddinv058 invert 101111101 -> 1111111010000010 -ddinv059 invert 011111011 -> 1111111100000100 - -ddinv080 invert 1000000011111111 -> 111111100000000 -ddinv081 invert 0100000101111111 -> 1011111010000000 -ddinv082 invert 0010000110111111 -> 1101111001000000 -ddinv083 invert 0001000111011111 -> 1110111000100000 -ddinv084 invert 0000100111101111 -> 1111011000010000 -ddinv085 invert 0000010111110111 -> 1111101000001000 -ddinv086 invert 0000001111111011 -> 1111110000000100 -ddinv087 invert 0000010111111101 -> 1111101000000010 -ddinv088 invert 0000100111111110 -> 1111011000000001 -ddinv089 invert 0001000011111011 -> 1110111100000100 -ddinv090 invert 0010000101111101 -> 1101111010000010 -ddinv091 invert 0100000110111110 -> 1011111001000001 -ddinv092 invert 1000000111011101 -> 111111000100010 -ddinv093 invert 0100000111101011 -> 1011111000010100 -ddinv094 invert 0010000111110111 -> 1101111000001000 -ddinv095 invert 0001000111101011 -> 1110111000010100 -ddinv096 invert 0000100111011101 -> 1111011000100010 -ddinv097 invert 0000010110111110 -> 1111101001000001 -ddinv098 invert 0000001101111101 -> 1111110010000010 -ddinv099 invert 0000010011111011 -> 1111101100000100 - --- non-0/1 should not be accepted, nor should signs -ddinv220 invert 111111112 -> NaN Invalid_operation -ddinv221 invert 333333333 -> NaN Invalid_operation -ddinv222 invert 555555555 -> NaN Invalid_operation -ddinv223 invert 777777777 -> NaN Invalid_operation -ddinv224 invert 999999999 -> NaN Invalid_operation -ddinv225 invert 222222222 -> NaN Invalid_operation -ddinv226 invert 444444444 -> NaN Invalid_operation -ddinv227 invert 666666666 -> NaN Invalid_operation -ddinv228 invert 888888888 -> NaN Invalid_operation -ddinv229 invert 999999999 -> NaN Invalid_operation -ddinv230 invert 999999999 -> NaN Invalid_operation -ddinv231 invert 999999999 -> NaN Invalid_operation -ddinv232 invert 999999999 -> NaN Invalid_operation --- a few randoms -ddinv240 invert 567468689 -> NaN Invalid_operation -ddinv241 invert 567367689 -> NaN Invalid_operation -ddinv242 invert -631917772 -> NaN Invalid_operation -ddinv243 invert -756253257 -> NaN Invalid_operation -ddinv244 invert 835590149 -> NaN Invalid_operation --- test MSD -ddinv250 invert 2000000000000000 -> NaN Invalid_operation -ddinv251 invert 3000000000000000 -> NaN Invalid_operation -ddinv252 invert 4000000000000000 -> NaN Invalid_operation -ddinv253 invert 5000000000000000 -> NaN Invalid_operation -ddinv254 invert 6000000000000000 -> NaN Invalid_operation -ddinv255 invert 7000000000000000 -> NaN Invalid_operation -ddinv256 invert 8000000000000000 -> NaN Invalid_operation -ddinv257 invert 9000000000000000 -> NaN Invalid_operation --- test MSD-1 -ddinv270 invert 0200001000000000 -> NaN Invalid_operation -ddinv271 invert 0300000100000000 -> NaN Invalid_operation -ddinv272 invert 0400000010000000 -> NaN Invalid_operation -ddinv273 invert 0500000001000000 -> NaN Invalid_operation -ddinv274 invert 1600000000100000 -> NaN Invalid_operation -ddinv275 invert 1700000000010000 -> NaN Invalid_operation -ddinv276 invert 1800000000001000 -> NaN Invalid_operation -ddinv277 invert 1900000000000100 -> NaN Invalid_operation --- test LSD -ddinv280 invert 0010000000000002 -> NaN Invalid_operation -ddinv281 invert 0001000000000003 -> NaN Invalid_operation -ddinv282 invert 0000100000000004 -> NaN Invalid_operation -ddinv283 invert 0000010000000005 -> NaN Invalid_operation -ddinv284 invert 1000001000000006 -> NaN Invalid_operation -ddinv285 invert 1000000100000007 -> NaN Invalid_operation -ddinv286 invert 1000000010000008 -> NaN Invalid_operation -ddinv287 invert 1000000001000009 -> NaN Invalid_operation --- test Middie -ddinv288 invert 0010000020000000 -> NaN Invalid_operation -ddinv289 invert 0001000030000001 -> NaN Invalid_operation -ddinv290 invert 0000100040000010 -> NaN Invalid_operation -ddinv291 invert 0000010050000100 -> NaN Invalid_operation -ddinv292 invert 1000001060001000 -> NaN Invalid_operation -ddinv293 invert 1000000170010000 -> NaN Invalid_operation -ddinv294 invert 1000000080100000 -> NaN Invalid_operation -ddinv295 invert 1000000091000000 -> NaN Invalid_operation --- sign -ddinv296 invert -1000000001000000 -> NaN Invalid_operation -ddinv299 invert 1000000001000000 -> 111111110111111 - - --- Nmax, Nmin, Ntiny-like -ddinv341 invert 9.99999999E+299 -> NaN Invalid_operation -ddinv342 invert 1E-299 -> NaN Invalid_operation -ddinv343 invert 1.00000000E-299 -> NaN Invalid_operation -ddinv344 invert 1E-207 -> NaN Invalid_operation -ddinv345 invert -1E-207 -> NaN Invalid_operation -ddinv346 invert -1.00000000E-299 -> NaN Invalid_operation -ddinv347 invert -1E-299 -> NaN Invalid_operation -ddinv348 invert -9.99999999E+299 -> NaN Invalid_operation - --- A few other non-integers -ddinv361 invert 1.0 -> NaN Invalid_operation -ddinv362 invert 1E+1 -> NaN Invalid_operation -ddinv363 invert 0.0 -> NaN Invalid_operation -ddinv364 invert 0E+1 -> NaN Invalid_operation -ddinv365 invert 9.9 -> NaN Invalid_operation -ddinv366 invert 9E+1 -> NaN Invalid_operation - --- All Specials are in error -ddinv788 invert -Inf -> NaN Invalid_operation -ddinv794 invert Inf -> NaN Invalid_operation -ddinv821 invert NaN -> NaN Invalid_operation -ddinv841 invert sNaN -> NaN Invalid_operation --- propagating NaNs -ddinv861 invert NaN1 -> NaN Invalid_operation -ddinv862 invert +NaN2 -> NaN Invalid_operation -ddinv863 invert NaN3 -> NaN Invalid_operation -ddinv864 invert NaN4 -> NaN Invalid_operation -ddinv865 invert NaN5 -> NaN Invalid_operation -ddinv871 invert sNaN11 -> NaN Invalid_operation -ddinv872 invert sNaN12 -> NaN Invalid_operation -ddinv873 invert sNaN13 -> NaN Invalid_operation -ddinv874 invert sNaN14 -> NaN Invalid_operation -ddinv875 invert sNaN15 -> NaN Invalid_operation -ddinv876 invert NaN16 -> NaN Invalid_operation -ddinv881 invert +NaN25 -> NaN Invalid_operation -ddinv882 invert -NaN26 -> NaN Invalid_operation -ddinv883 invert -sNaN27 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddInvert.decTest -- digitwise logical INVERT for decDoubles -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check (truth table) +ddinv001 invert 0 -> 1111111111111111 +ddinv002 invert 1 -> 1111111111111110 +ddinv003 invert 10 -> 1111111111111101 +ddinv004 invert 111111111 -> 1111111000000000 +ddinv005 invert 000000000 -> 1111111111111111 +-- and at msd and msd-1 +ddinv007 invert 0000000000000000 -> 1111111111111111 +ddinv008 invert 1000000000000000 -> 111111111111111 +ddinv009 invert 0000000000000000 -> 1111111111111111 +ddinv010 invert 0100000000000000 -> 1011111111111111 +ddinv011 invert 0111111111111111 -> 1000000000000000 +ddinv012 invert 1111111111111111 -> 0 +ddinv013 invert 0011111111111111 -> 1100000000000000 +ddinv014 invert 0111111111111111 -> 1000000000000000 + +-- Various lengths +-- 123456789 1234567890123456 +ddinv021 invert 111111111 -> 1111111000000000 +ddinv022 invert 111111111111 -> 1111000000000000 +ddinv023 invert 11111111 -> 1111111100000000 +ddinv025 invert 1111111 -> 1111111110000000 +ddinv026 invert 111111 -> 1111111111000000 +ddinv027 invert 11111 -> 1111111111100000 +ddinv028 invert 1111 -> 1111111111110000 +ddinv029 invert 111 -> 1111111111111000 +ddinv031 invert 11 -> 1111111111111100 +ddinv032 invert 1 -> 1111111111111110 +ddinv033 invert 111111111111 -> 1111000000000000 +ddinv034 invert 11111111111 -> 1111100000000000 +ddinv035 invert 1111111111 -> 1111110000000000 +ddinv036 invert 111111111 -> 1111111000000000 + +ddinv040 invert 011111111 -> 1111111100000000 +ddinv041 invert 101111111 -> 1111111010000000 +ddinv042 invert 110111111 -> 1111111001000000 +ddinv043 invert 111011111 -> 1111111000100000 +ddinv044 invert 111101111 -> 1111111000010000 +ddinv045 invert 111110111 -> 1111111000001000 +ddinv046 invert 111111011 -> 1111111000000100 +ddinv047 invert 111111101 -> 1111111000000010 +ddinv048 invert 111111110 -> 1111111000000001 +ddinv049 invert 011111011 -> 1111111100000100 +ddinv050 invert 101111101 -> 1111111010000010 +ddinv051 invert 110111110 -> 1111111001000001 +ddinv052 invert 111011101 -> 1111111000100010 +ddinv053 invert 111101011 -> 1111111000010100 +ddinv054 invert 111110111 -> 1111111000001000 +ddinv055 invert 111101011 -> 1111111000010100 +ddinv056 invert 111011101 -> 1111111000100010 +ddinv057 invert 110111110 -> 1111111001000001 +ddinv058 invert 101111101 -> 1111111010000010 +ddinv059 invert 011111011 -> 1111111100000100 + +ddinv080 invert 1000000011111111 -> 111111100000000 +ddinv081 invert 0100000101111111 -> 1011111010000000 +ddinv082 invert 0010000110111111 -> 1101111001000000 +ddinv083 invert 0001000111011111 -> 1110111000100000 +ddinv084 invert 0000100111101111 -> 1111011000010000 +ddinv085 invert 0000010111110111 -> 1111101000001000 +ddinv086 invert 0000001111111011 -> 1111110000000100 +ddinv087 invert 0000010111111101 -> 1111101000000010 +ddinv088 invert 0000100111111110 -> 1111011000000001 +ddinv089 invert 0001000011111011 -> 1110111100000100 +ddinv090 invert 0010000101111101 -> 1101111010000010 +ddinv091 invert 0100000110111110 -> 1011111001000001 +ddinv092 invert 1000000111011101 -> 111111000100010 +ddinv093 invert 0100000111101011 -> 1011111000010100 +ddinv094 invert 0010000111110111 -> 1101111000001000 +ddinv095 invert 0001000111101011 -> 1110111000010100 +ddinv096 invert 0000100111011101 -> 1111011000100010 +ddinv097 invert 0000010110111110 -> 1111101001000001 +ddinv098 invert 0000001101111101 -> 1111110010000010 +ddinv099 invert 0000010011111011 -> 1111101100000100 + +-- non-0/1 should not be accepted, nor should signs +ddinv220 invert 111111112 -> NaN Invalid_operation +ddinv221 invert 333333333 -> NaN Invalid_operation +ddinv222 invert 555555555 -> NaN Invalid_operation +ddinv223 invert 777777777 -> NaN Invalid_operation +ddinv224 invert 999999999 -> NaN Invalid_operation +ddinv225 invert 222222222 -> NaN Invalid_operation +ddinv226 invert 444444444 -> NaN Invalid_operation +ddinv227 invert 666666666 -> NaN Invalid_operation +ddinv228 invert 888888888 -> NaN Invalid_operation +ddinv229 invert 999999999 -> NaN Invalid_operation +ddinv230 invert 999999999 -> NaN Invalid_operation +ddinv231 invert 999999999 -> NaN Invalid_operation +ddinv232 invert 999999999 -> NaN Invalid_operation +-- a few randoms +ddinv240 invert 567468689 -> NaN Invalid_operation +ddinv241 invert 567367689 -> NaN Invalid_operation +ddinv242 invert -631917772 -> NaN Invalid_operation +ddinv243 invert -756253257 -> NaN Invalid_operation +ddinv244 invert 835590149 -> NaN Invalid_operation +-- test MSD +ddinv250 invert 2000000000000000 -> NaN Invalid_operation +ddinv251 invert 3000000000000000 -> NaN Invalid_operation +ddinv252 invert 4000000000000000 -> NaN Invalid_operation +ddinv253 invert 5000000000000000 -> NaN Invalid_operation +ddinv254 invert 6000000000000000 -> NaN Invalid_operation +ddinv255 invert 7000000000000000 -> NaN Invalid_operation +ddinv256 invert 8000000000000000 -> NaN Invalid_operation +ddinv257 invert 9000000000000000 -> NaN Invalid_operation +-- test MSD-1 +ddinv270 invert 0200001000000000 -> NaN Invalid_operation +ddinv271 invert 0300000100000000 -> NaN Invalid_operation +ddinv272 invert 0400000010000000 -> NaN Invalid_operation +ddinv273 invert 0500000001000000 -> NaN Invalid_operation +ddinv274 invert 1600000000100000 -> NaN Invalid_operation +ddinv275 invert 1700000000010000 -> NaN Invalid_operation +ddinv276 invert 1800000000001000 -> NaN Invalid_operation +ddinv277 invert 1900000000000100 -> NaN Invalid_operation +-- test LSD +ddinv280 invert 0010000000000002 -> NaN Invalid_operation +ddinv281 invert 0001000000000003 -> NaN Invalid_operation +ddinv282 invert 0000100000000004 -> NaN Invalid_operation +ddinv283 invert 0000010000000005 -> NaN Invalid_operation +ddinv284 invert 1000001000000006 -> NaN Invalid_operation +ddinv285 invert 1000000100000007 -> NaN Invalid_operation +ddinv286 invert 1000000010000008 -> NaN Invalid_operation +ddinv287 invert 1000000001000009 -> NaN Invalid_operation +-- test Middie +ddinv288 invert 0010000020000000 -> NaN Invalid_operation +ddinv289 invert 0001000030000001 -> NaN Invalid_operation +ddinv290 invert 0000100040000010 -> NaN Invalid_operation +ddinv291 invert 0000010050000100 -> NaN Invalid_operation +ddinv292 invert 1000001060001000 -> NaN Invalid_operation +ddinv293 invert 1000000170010000 -> NaN Invalid_operation +ddinv294 invert 1000000080100000 -> NaN Invalid_operation +ddinv295 invert 1000000091000000 -> NaN Invalid_operation +-- sign +ddinv296 invert -1000000001000000 -> NaN Invalid_operation +ddinv299 invert 1000000001000000 -> 111111110111111 + + +-- Nmax, Nmin, Ntiny-like +ddinv341 invert 9.99999999E+299 -> NaN Invalid_operation +ddinv342 invert 1E-299 -> NaN Invalid_operation +ddinv343 invert 1.00000000E-299 -> NaN Invalid_operation +ddinv344 invert 1E-207 -> NaN Invalid_operation +ddinv345 invert -1E-207 -> NaN Invalid_operation +ddinv346 invert -1.00000000E-299 -> NaN Invalid_operation +ddinv347 invert -1E-299 -> NaN Invalid_operation +ddinv348 invert -9.99999999E+299 -> NaN Invalid_operation + +-- A few other non-integers +ddinv361 invert 1.0 -> NaN Invalid_operation +ddinv362 invert 1E+1 -> NaN Invalid_operation +ddinv363 invert 0.0 -> NaN Invalid_operation +ddinv364 invert 0E+1 -> NaN Invalid_operation +ddinv365 invert 9.9 -> NaN Invalid_operation +ddinv366 invert 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +ddinv788 invert -Inf -> NaN Invalid_operation +ddinv794 invert Inf -> NaN Invalid_operation +ddinv821 invert NaN -> NaN Invalid_operation +ddinv841 invert sNaN -> NaN Invalid_operation +-- propagating NaNs +ddinv861 invert NaN1 -> NaN Invalid_operation +ddinv862 invert +NaN2 -> NaN Invalid_operation +ddinv863 invert NaN3 -> NaN Invalid_operation +ddinv864 invert NaN4 -> NaN Invalid_operation +ddinv865 invert NaN5 -> NaN Invalid_operation +ddinv871 invert sNaN11 -> NaN Invalid_operation +ddinv872 invert sNaN12 -> NaN Invalid_operation +ddinv873 invert sNaN13 -> NaN Invalid_operation +ddinv874 invert sNaN14 -> NaN Invalid_operation +ddinv875 invert sNaN15 -> NaN Invalid_operation +ddinv876 invert NaN16 -> NaN Invalid_operation +ddinv881 invert +NaN25 -> NaN Invalid_operation +ddinv882 invert -NaN26 -> NaN Invalid_operation +ddinv883 invert -sNaN27 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddLogB.decTest b/Lib/test/decimaltestdata/ddLogB.decTest index 00589b6..de728e5 100644 --- a/Lib/test/decimaltestdata/ddLogB.decTest +++ b/Lib/test/decimaltestdata/ddLogB.decTest @@ -1,159 +1,159 @@ ------------------------------------------------------------------------- --- ddLogB.decTest -- integral 754r adjusted exponent, for decDoubles -- --- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- basics -ddlogb000 logb 0 -> -Infinity Division_by_zero -ddlogb001 logb 1E-398 -> -398 -ddlogb002 logb 1E-383 -> -383 -ddlogb003 logb 0.001 -> -3 -ddlogb004 logb 0.03 -> -2 -ddlogb005 logb 1 -> 0 -ddlogb006 logb 2 -> 0 -ddlogb007 logb 2.5 -> 0 -ddlogb008 logb 2.500 -> 0 -ddlogb009 logb 10 -> 1 -ddlogb010 logb 70 -> 1 -ddlogb011 logb 100 -> 2 -ddlogb012 logb 333 -> 2 -ddlogb013 logb 9E+384 -> 384 -ddlogb014 logb +Infinity -> Infinity - --- negatives appear to be treated as positives -ddlogb021 logb -0 -> -Infinity Division_by_zero -ddlogb022 logb -1E-398 -> -398 -ddlogb023 logb -9E-383 -> -383 -ddlogb024 logb -0.001 -> -3 -ddlogb025 logb -1 -> 0 -ddlogb026 logb -2 -> 0 -ddlogb027 logb -10 -> 1 -ddlogb028 logb -70 -> 1 -ddlogb029 logb -100 -> 2 -ddlogb030 logb -9E+384 -> 384 -ddlogb031 logb -Infinity -> Infinity - --- zeros -ddlogb111 logb 0 -> -Infinity Division_by_zero -ddlogb112 logb -0 -> -Infinity Division_by_zero -ddlogb113 logb 0E+4 -> -Infinity Division_by_zero -ddlogb114 logb -0E+4 -> -Infinity Division_by_zero -ddlogb115 logb 0.0000 -> -Infinity Division_by_zero -ddlogb116 logb -0.0000 -> -Infinity Division_by_zero -ddlogb117 logb 0E-141 -> -Infinity Division_by_zero -ddlogb118 logb -0E-141 -> -Infinity Division_by_zero - --- full coefficients, alternating bits -ddlogb121 logb 268268268 -> 8 -ddlogb122 logb -268268268 -> 8 -ddlogb123 logb 134134134 -> 8 -ddlogb124 logb -134134134 -> 8 - --- Nmax, Nmin, Ntiny -ddlogb131 logb 9.999999999999999E+384 -> 384 -ddlogb132 logb 1E-383 -> -383 -ddlogb133 logb 1.000000000000000E-383 -> -383 -ddlogb134 logb 1E-398 -> -398 - -ddlogb135 logb -1E-398 -> -398 -ddlogb136 logb -1.000000000000000E-383 -> -383 -ddlogb137 logb -1E-383 -> -383 -ddlogb138 logb -9.999999999999999E+384 -> 384 - --- ones -ddlogb0061 logb 1 -> 0 -ddlogb0062 logb 1.0 -> 0 -ddlogb0063 logb 1.000000000000000 -> 0 - --- notable cases -- exact powers of 10 -ddlogb1100 logb 1 -> 0 -ddlogb1101 logb 10 -> 1 -ddlogb1102 logb 100 -> 2 -ddlogb1103 logb 1000 -> 3 -ddlogb1104 logb 10000 -> 4 -ddlogb1105 logb 100000 -> 5 -ddlogb1106 logb 1000000 -> 6 -ddlogb1107 logb 10000000 -> 7 -ddlogb1108 logb 100000000 -> 8 -ddlogb1109 logb 1000000000 -> 9 -ddlogb1110 logb 10000000000 -> 10 -ddlogb1111 logb 100000000000 -> 11 -ddlogb1112 logb 1000000000000 -> 12 -ddlogb1113 logb 0.00000000001 -> -11 -ddlogb1114 logb 0.0000000001 -> -10 -ddlogb1115 logb 0.000000001 -> -9 -ddlogb1116 logb 0.00000001 -> -8 -ddlogb1117 logb 0.0000001 -> -7 -ddlogb1118 logb 0.000001 -> -6 -ddlogb1119 logb 0.00001 -> -5 -ddlogb1120 logb 0.0001 -> -4 -ddlogb1121 logb 0.001 -> -3 -ddlogb1122 logb 0.01 -> -2 -ddlogb1123 logb 0.1 -> -1 -ddlogb1124 logb 1E-99 -> -99 -ddlogb1125 logb 1E-100 -> -100 -ddlogb1127 logb 1E-299 -> -299 -ddlogb1126 logb 1E-383 -> -383 - --- suggestions from Ilan Nehama -ddlogb1400 logb 10E-3 -> -2 -ddlogb1401 logb 10E-2 -> -1 -ddlogb1402 logb 100E-2 -> 0 -ddlogb1403 logb 1000E-2 -> 1 -ddlogb1404 logb 10000E-2 -> 2 -ddlogb1405 logb 10E-1 -> 0 -ddlogb1406 logb 100E-1 -> 1 -ddlogb1407 logb 1000E-1 -> 2 -ddlogb1408 logb 10000E-1 -> 3 -ddlogb1409 logb 10E0 -> 1 -ddlogb1410 logb 100E0 -> 2 -ddlogb1411 logb 1000E0 -> 3 -ddlogb1412 logb 10000E0 -> 4 -ddlogb1413 logb 10E1 -> 2 -ddlogb1414 logb 100E1 -> 3 -ddlogb1415 logb 1000E1 -> 4 -ddlogb1416 logb 10000E1 -> 5 -ddlogb1417 logb 10E2 -> 3 -ddlogb1418 logb 100E2 -> 4 -ddlogb1419 logb 1000E2 -> 5 -ddlogb1420 logb 10000E2 -> 6 - --- special values -ddlogb820 logb Infinity -> Infinity -ddlogb821 logb 0 -> -Infinity Division_by_zero -ddlogb822 logb NaN -> NaN -ddlogb823 logb sNaN -> NaN Invalid_operation --- propagating NaNs -ddlogb824 logb sNaN123 -> NaN123 Invalid_operation -ddlogb825 logb -sNaN321 -> -NaN321 Invalid_operation -ddlogb826 logb NaN456 -> NaN456 -ddlogb827 logb -NaN654 -> -NaN654 -ddlogb828 logb NaN1 -> NaN1 - --- Null test -ddlogb900 logb # -> NaN Invalid_operation - - +------------------------------------------------------------------------ +-- ddLogB.decTest -- integral 754r adjusted exponent, for decDoubles -- +-- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- basics +ddlogb000 logb 0 -> -Infinity Division_by_zero +ddlogb001 logb 1E-398 -> -398 +ddlogb002 logb 1E-383 -> -383 +ddlogb003 logb 0.001 -> -3 +ddlogb004 logb 0.03 -> -2 +ddlogb005 logb 1 -> 0 +ddlogb006 logb 2 -> 0 +ddlogb007 logb 2.5 -> 0 +ddlogb008 logb 2.500 -> 0 +ddlogb009 logb 10 -> 1 +ddlogb010 logb 70 -> 1 +ddlogb011 logb 100 -> 2 +ddlogb012 logb 333 -> 2 +ddlogb013 logb 9E+384 -> 384 +ddlogb014 logb +Infinity -> Infinity + +-- negatives appear to be treated as positives +ddlogb021 logb -0 -> -Infinity Division_by_zero +ddlogb022 logb -1E-398 -> -398 +ddlogb023 logb -9E-383 -> -383 +ddlogb024 logb -0.001 -> -3 +ddlogb025 logb -1 -> 0 +ddlogb026 logb -2 -> 0 +ddlogb027 logb -10 -> 1 +ddlogb028 logb -70 -> 1 +ddlogb029 logb -100 -> 2 +ddlogb030 logb -9E+384 -> 384 +ddlogb031 logb -Infinity -> Infinity + +-- zeros +ddlogb111 logb 0 -> -Infinity Division_by_zero +ddlogb112 logb -0 -> -Infinity Division_by_zero +ddlogb113 logb 0E+4 -> -Infinity Division_by_zero +ddlogb114 logb -0E+4 -> -Infinity Division_by_zero +ddlogb115 logb 0.0000 -> -Infinity Division_by_zero +ddlogb116 logb -0.0000 -> -Infinity Division_by_zero +ddlogb117 logb 0E-141 -> -Infinity Division_by_zero +ddlogb118 logb -0E-141 -> -Infinity Division_by_zero + +-- full coefficients, alternating bits +ddlogb121 logb 268268268 -> 8 +ddlogb122 logb -268268268 -> 8 +ddlogb123 logb 134134134 -> 8 +ddlogb124 logb -134134134 -> 8 + +-- Nmax, Nmin, Ntiny +ddlogb131 logb 9.999999999999999E+384 -> 384 +ddlogb132 logb 1E-383 -> -383 +ddlogb133 logb 1.000000000000000E-383 -> -383 +ddlogb134 logb 1E-398 -> -398 + +ddlogb135 logb -1E-398 -> -398 +ddlogb136 logb -1.000000000000000E-383 -> -383 +ddlogb137 logb -1E-383 -> -383 +ddlogb138 logb -9.999999999999999E+384 -> 384 + +-- ones +ddlogb0061 logb 1 -> 0 +ddlogb0062 logb 1.0 -> 0 +ddlogb0063 logb 1.000000000000000 -> 0 + +-- notable cases -- exact powers of 10 +ddlogb1100 logb 1 -> 0 +ddlogb1101 logb 10 -> 1 +ddlogb1102 logb 100 -> 2 +ddlogb1103 logb 1000 -> 3 +ddlogb1104 logb 10000 -> 4 +ddlogb1105 logb 100000 -> 5 +ddlogb1106 logb 1000000 -> 6 +ddlogb1107 logb 10000000 -> 7 +ddlogb1108 logb 100000000 -> 8 +ddlogb1109 logb 1000000000 -> 9 +ddlogb1110 logb 10000000000 -> 10 +ddlogb1111 logb 100000000000 -> 11 +ddlogb1112 logb 1000000000000 -> 12 +ddlogb1113 logb 0.00000000001 -> -11 +ddlogb1114 logb 0.0000000001 -> -10 +ddlogb1115 logb 0.000000001 -> -9 +ddlogb1116 logb 0.00000001 -> -8 +ddlogb1117 logb 0.0000001 -> -7 +ddlogb1118 logb 0.000001 -> -6 +ddlogb1119 logb 0.00001 -> -5 +ddlogb1120 logb 0.0001 -> -4 +ddlogb1121 logb 0.001 -> -3 +ddlogb1122 logb 0.01 -> -2 +ddlogb1123 logb 0.1 -> -1 +ddlogb1124 logb 1E-99 -> -99 +ddlogb1125 logb 1E-100 -> -100 +ddlogb1127 logb 1E-299 -> -299 +ddlogb1126 logb 1E-383 -> -383 + +-- suggestions from Ilan Nehama +ddlogb1400 logb 10E-3 -> -2 +ddlogb1401 logb 10E-2 -> -1 +ddlogb1402 logb 100E-2 -> 0 +ddlogb1403 logb 1000E-2 -> 1 +ddlogb1404 logb 10000E-2 -> 2 +ddlogb1405 logb 10E-1 -> 0 +ddlogb1406 logb 100E-1 -> 1 +ddlogb1407 logb 1000E-1 -> 2 +ddlogb1408 logb 10000E-1 -> 3 +ddlogb1409 logb 10E0 -> 1 +ddlogb1410 logb 100E0 -> 2 +ddlogb1411 logb 1000E0 -> 3 +ddlogb1412 logb 10000E0 -> 4 +ddlogb1413 logb 10E1 -> 2 +ddlogb1414 logb 100E1 -> 3 +ddlogb1415 logb 1000E1 -> 4 +ddlogb1416 logb 10000E1 -> 5 +ddlogb1417 logb 10E2 -> 3 +ddlogb1418 logb 100E2 -> 4 +ddlogb1419 logb 1000E2 -> 5 +ddlogb1420 logb 10000E2 -> 6 + +-- special values +ddlogb820 logb Infinity -> Infinity +ddlogb821 logb 0 -> -Infinity Division_by_zero +ddlogb822 logb NaN -> NaN +ddlogb823 logb sNaN -> NaN Invalid_operation +-- propagating NaNs +ddlogb824 logb sNaN123 -> NaN123 Invalid_operation +ddlogb825 logb -sNaN321 -> -NaN321 Invalid_operation +ddlogb826 logb NaN456 -> NaN456 +ddlogb827 logb -NaN654 -> -NaN654 +ddlogb828 logb NaN1 -> NaN1 + +-- Null test +ddlogb900 logb # -> NaN Invalid_operation + + diff --git a/Lib/test/decimaltestdata/ddMax.decTest b/Lib/test/decimaltestdata/ddMax.decTest index 45ea9b4..1ac6395 100644 --- a/Lib/test/decimaltestdata/ddMax.decTest +++ b/Lib/test/decimaltestdata/ddMax.decTest @@ -1,322 +1,322 @@ ------------------------------------------------------------------------- --- ddMax.decTest -- decDouble maxnum -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddmax001 max -2 -2 -> -2 -ddmax002 max -2 -1 -> -1 -ddmax003 max -2 0 -> 0 -ddmax004 max -2 1 -> 1 -ddmax005 max -2 2 -> 2 -ddmax006 max -1 -2 -> -1 -ddmax007 max -1 -1 -> -1 -ddmax008 max -1 0 -> 0 -ddmax009 max -1 1 -> 1 -ddmax010 max -1 2 -> 2 -ddmax011 max 0 -2 -> 0 -ddmax012 max 0 -1 -> 0 -ddmax013 max 0 0 -> 0 -ddmax014 max 0 1 -> 1 -ddmax015 max 0 2 -> 2 -ddmax016 max 1 -2 -> 1 -ddmax017 max 1 -1 -> 1 -ddmax018 max 1 0 -> 1 -ddmax019 max 1 1 -> 1 -ddmax020 max 1 2 -> 2 -ddmax021 max 2 -2 -> 2 -ddmax022 max 2 -1 -> 2 -ddmax023 max 2 0 -> 2 -ddmax025 max 2 1 -> 2 -ddmax026 max 2 2 -> 2 - --- extended zeros -ddmax030 max 0 0 -> 0 -ddmax031 max 0 -0 -> 0 -ddmax032 max 0 -0.0 -> 0 -ddmax033 max 0 0.0 -> 0 -ddmax034 max -0 0 -> 0 -- note: -0 = 0, but 0 chosen -ddmax035 max -0 -0 -> -0 -ddmax036 max -0 -0.0 -> -0.0 -ddmax037 max -0 0.0 -> 0.0 -ddmax038 max 0.0 0 -> 0 -ddmax039 max 0.0 -0 -> 0.0 -ddmax040 max 0.0 -0.0 -> 0.0 -ddmax041 max 0.0 0.0 -> 0.0 -ddmax042 max -0.0 0 -> 0 -ddmax043 max -0.0 -0 -> -0.0 -ddmax044 max -0.0 -0.0 -> -0.0 -ddmax045 max -0.0 0.0 -> 0.0 - -ddmax050 max -0E1 0E1 -> 0E+1 -ddmax051 max -0E2 0E2 -> 0E+2 -ddmax052 max -0E2 0E1 -> 0E+1 -ddmax053 max -0E1 0E2 -> 0E+2 -ddmax054 max 0E1 -0E1 -> 0E+1 -ddmax055 max 0E2 -0E2 -> 0E+2 -ddmax056 max 0E2 -0E1 -> 0E+2 -ddmax057 max 0E1 -0E2 -> 0E+1 - -ddmax058 max 0E1 0E1 -> 0E+1 -ddmax059 max 0E2 0E2 -> 0E+2 -ddmax060 max 0E2 0E1 -> 0E+2 -ddmax061 max 0E1 0E2 -> 0E+2 -ddmax062 max -0E1 -0E1 -> -0E+1 -ddmax063 max -0E2 -0E2 -> -0E+2 -ddmax064 max -0E2 -0E1 -> -0E+1 -ddmax065 max -0E1 -0E2 -> -0E+1 - --- Specials -ddmax090 max Inf -Inf -> Infinity -ddmax091 max Inf -1000 -> Infinity -ddmax092 max Inf -1 -> Infinity -ddmax093 max Inf -0 -> Infinity -ddmax094 max Inf 0 -> Infinity -ddmax095 max Inf 1 -> Infinity -ddmax096 max Inf 1000 -> Infinity -ddmax097 max Inf Inf -> Infinity -ddmax098 max -1000 Inf -> Infinity -ddmax099 max -Inf Inf -> Infinity -ddmax100 max -1 Inf -> Infinity -ddmax101 max -0 Inf -> Infinity -ddmax102 max 0 Inf -> Infinity -ddmax103 max 1 Inf -> Infinity -ddmax104 max 1000 Inf -> Infinity -ddmax105 max Inf Inf -> Infinity - -ddmax120 max -Inf -Inf -> -Infinity -ddmax121 max -Inf -1000 -> -1000 -ddmax122 max -Inf -1 -> -1 -ddmax123 max -Inf -0 -> -0 -ddmax124 max -Inf 0 -> 0 -ddmax125 max -Inf 1 -> 1 -ddmax126 max -Inf 1000 -> 1000 -ddmax127 max -Inf Inf -> Infinity -ddmax128 max -Inf -Inf -> -Infinity -ddmax129 max -1000 -Inf -> -1000 -ddmax130 max -1 -Inf -> -1 -ddmax131 max -0 -Inf -> -0 -ddmax132 max 0 -Inf -> 0 -ddmax133 max 1 -Inf -> 1 -ddmax134 max 1000 -Inf -> 1000 -ddmax135 max Inf -Inf -> Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -ddmax141 max NaN -Inf -> -Infinity -ddmax142 max NaN -1000 -> -1000 -ddmax143 max NaN -1 -> -1 -ddmax144 max NaN -0 -> -0 -ddmax145 max NaN 0 -> 0 -ddmax146 max NaN 1 -> 1 -ddmax147 max NaN 1000 -> 1000 -ddmax148 max NaN Inf -> Infinity -ddmax149 max NaN NaN -> NaN -ddmax150 max -Inf NaN -> -Infinity -ddmax151 max -1000 NaN -> -1000 -ddmax152 max -1 NaN -> -1 -ddmax153 max -0 NaN -> -0 -ddmax154 max 0 NaN -> 0 -ddmax155 max 1 NaN -> 1 -ddmax156 max 1000 NaN -> 1000 -ddmax157 max Inf NaN -> Infinity - -ddmax161 max sNaN -Inf -> NaN Invalid_operation -ddmax162 max sNaN -1000 -> NaN Invalid_operation -ddmax163 max sNaN -1 -> NaN Invalid_operation -ddmax164 max sNaN -0 -> NaN Invalid_operation -ddmax165 max sNaN 0 -> NaN Invalid_operation -ddmax166 max sNaN 1 -> NaN Invalid_operation -ddmax167 max sNaN 1000 -> NaN Invalid_operation -ddmax168 max sNaN NaN -> NaN Invalid_operation -ddmax169 max sNaN sNaN -> NaN Invalid_operation -ddmax170 max NaN sNaN -> NaN Invalid_operation -ddmax171 max -Inf sNaN -> NaN Invalid_operation -ddmax172 max -1000 sNaN -> NaN Invalid_operation -ddmax173 max -1 sNaN -> NaN Invalid_operation -ddmax174 max -0 sNaN -> NaN Invalid_operation -ddmax175 max 0 sNaN -> NaN Invalid_operation -ddmax176 max 1 sNaN -> NaN Invalid_operation -ddmax177 max 1000 sNaN -> NaN Invalid_operation -ddmax178 max Inf sNaN -> NaN Invalid_operation -ddmax179 max NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddmax181 max NaN9 -Inf -> -Infinity -ddmax182 max NaN8 9 -> 9 -ddmax183 max -NaN7 Inf -> Infinity - -ddmax184 max -NaN1 NaN11 -> -NaN1 -ddmax185 max NaN2 NaN12 -> NaN2 -ddmax186 max -NaN13 -NaN7 -> -NaN13 -ddmax187 max NaN14 -NaN5 -> NaN14 - -ddmax188 max -Inf NaN4 -> -Infinity -ddmax189 max -9 -NaN3 -> -9 -ddmax190 max Inf NaN2 -> Infinity - -ddmax191 max sNaN99 -Inf -> NaN99 Invalid_operation -ddmax192 max sNaN98 -1 -> NaN98 Invalid_operation -ddmax193 max -sNaN97 NaN -> -NaN97 Invalid_operation -ddmax194 max sNaN96 sNaN94 -> NaN96 Invalid_operation -ddmax195 max NaN95 sNaN93 -> NaN93 Invalid_operation -ddmax196 max -Inf sNaN92 -> NaN92 Invalid_operation -ddmax197 max 0 sNaN91 -> NaN91 Invalid_operation -ddmax198 max Inf -sNaN90 -> -NaN90 Invalid_operation -ddmax199 max NaN sNaN89 -> NaN89 Invalid_operation - --- old rounding checks -ddmax221 max 12345678000 1 -> 12345678000 -ddmax222 max 1 12345678000 -> 12345678000 -ddmax223 max 1234567800 1 -> 1234567800 -ddmax224 max 1 1234567800 -> 1234567800 -ddmax225 max 1234567890 1 -> 1234567890 -ddmax226 max 1 1234567890 -> 1234567890 -ddmax227 max 1234567891 1 -> 1234567891 -ddmax228 max 1 1234567891 -> 1234567891 -ddmax229 max 12345678901 1 -> 12345678901 -ddmax230 max 1 12345678901 -> 12345678901 -ddmax231 max 1234567896 1 -> 1234567896 -ddmax232 max 1 1234567896 -> 1234567896 -ddmax233 max -1234567891 1 -> 1 -ddmax234 max 1 -1234567891 -> 1 -ddmax235 max -12345678901 1 -> 1 -ddmax236 max 1 -12345678901 -> 1 -ddmax237 max -1234567896 1 -> 1 -ddmax238 max 1 -1234567896 -> 1 - --- from examples -ddmax280 max '3' '2' -> '3' -ddmax281 max '-10' '3' -> '3' -ddmax282 max '1.0' '1' -> '1' -ddmax283 max '1' '1.0' -> '1' -ddmax284 max '7' 'NaN' -> '7' - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -ddmax401 max Inf 1.1 -> Infinity -ddmax402 max 1.1 1 -> 1.1 -ddmax403 max 1 1.0 -> 1 -ddmax404 max 1.0 0.1 -> 1.0 -ddmax405 max 0.1 0.10 -> 0.1 -ddmax406 max 0.10 0.100 -> 0.10 -ddmax407 max 0.10 0 -> 0.10 -ddmax408 max 0 0.0 -> 0 -ddmax409 max 0.0 -0 -> 0.0 -ddmax410 max 0.0 -0.0 -> 0.0 -ddmax411 max 0.00 -0.0 -> 0.00 -ddmax412 max 0.0 -0.00 -> 0.0 -ddmax413 max 0 -0.0 -> 0 -ddmax414 max 0 -0 -> 0 -ddmax415 max -0.0 -0 -> -0.0 -ddmax416 max -0 -0.100 -> -0 -ddmax417 max -0.100 -0.10 -> -0.100 -ddmax418 max -0.10 -0.1 -> -0.10 -ddmax419 max -0.1 -1.0 -> -0.1 -ddmax420 max -1.0 -1 -> -1.0 -ddmax421 max -1 -1.1 -> -1 -ddmax423 max -1.1 -Inf -> -1.1 --- same with operands reversed -ddmax431 max 1.1 Inf -> Infinity -ddmax432 max 1 1.1 -> 1.1 -ddmax433 max 1.0 1 -> 1 -ddmax434 max 0.1 1.0 -> 1.0 -ddmax435 max 0.10 0.1 -> 0.1 -ddmax436 max 0.100 0.10 -> 0.10 -ddmax437 max 0 0.10 -> 0.10 -ddmax438 max 0.0 0 -> 0 -ddmax439 max -0 0.0 -> 0.0 -ddmax440 max -0.0 0.0 -> 0.0 -ddmax441 max -0.0 0.00 -> 0.00 -ddmax442 max -0.00 0.0 -> 0.0 -ddmax443 max -0.0 0 -> 0 -ddmax444 max -0 0 -> 0 -ddmax445 max -0 -0.0 -> -0.0 -ddmax446 max -0.100 -0 -> -0 -ddmax447 max -0.10 -0.100 -> -0.100 -ddmax448 max -0.1 -0.10 -> -0.10 -ddmax449 max -1.0 -0.1 -> -0.1 -ddmax450 max -1 -1.0 -> -1.0 -ddmax451 max -1.1 -1 -> -1 -ddmax453 max -Inf -1.1 -> -1.1 --- largies -ddmax460 max 1000 1E+3 -> 1E+3 -ddmax461 max 1E+3 1000 -> 1E+3 -ddmax462 max 1000 -1E+3 -> 1000 -ddmax463 max 1E+3 -1000 -> 1E+3 -ddmax464 max -1000 1E+3 -> 1E+3 -ddmax465 max -1E+3 1000 -> 1000 -ddmax466 max -1000 -1E+3 -> -1000 -ddmax467 max -1E+3 -1000 -> -1000 - --- misalignment traps for little-endian -ddmax471 max 1.0 0.1 -> 1.0 -ddmax472 max 0.1 1.0 -> 1.0 -ddmax473 max 10.0 0.1 -> 10.0 -ddmax474 max 0.1 10.0 -> 10.0 -ddmax475 max 100 1.0 -> 100 -ddmax476 max 1.0 100 -> 100 -ddmax477 max 1000 10.0 -> 1000 -ddmax478 max 10.0 1000 -> 1000 -ddmax479 max 10000 100.0 -> 10000 -ddmax480 max 100.0 10000 -> 10000 -ddmax481 max 100000 1000.0 -> 100000 -ddmax482 max 1000.0 100000 -> 100000 -ddmax483 max 1000000 10000.0 -> 1000000 -ddmax484 max 10000.0 1000000 -> 1000000 - --- subnormals -ddmax510 max 1.00E-383 0 -> 1.00E-383 -ddmax511 max 0.1E-383 0 -> 1E-384 Subnormal -ddmax512 max 0.10E-383 0 -> 1.0E-384 Subnormal -ddmax513 max 0.100E-383 0 -> 1.00E-384 Subnormal -ddmax514 max 0.01E-383 0 -> 1E-385 Subnormal -ddmax515 max 0.999E-383 0 -> 9.99E-384 Subnormal -ddmax516 max 0.099E-383 0 -> 9.9E-385 Subnormal -ddmax517 max 0.009E-383 0 -> 9E-386 Subnormal -ddmax518 max 0.001E-383 0 -> 1E-386 Subnormal -ddmax519 max 0.0009E-383 0 -> 9E-387 Subnormal -ddmax520 max 0.0001E-383 0 -> 1E-387 Subnormal - -ddmax530 max -1.00E-383 0 -> 0 -ddmax531 max -0.1E-383 0 -> 0 -ddmax532 max -0.10E-383 0 -> 0 -ddmax533 max -0.100E-383 0 -> 0 -ddmax534 max -0.01E-383 0 -> 0 -ddmax535 max -0.999E-383 0 -> 0 -ddmax536 max -0.099E-383 0 -> 0 -ddmax537 max -0.009E-383 0 -> 0 -ddmax538 max -0.001E-383 0 -> 0 -ddmax539 max -0.0009E-383 0 -> 0 -ddmax540 max -0.0001E-383 0 -> 0 - --- Null tests -ddmax900 max 10 # -> NaN Invalid_operation -ddmax901 max # 10 -> NaN Invalid_operation - - - +------------------------------------------------------------------------ +-- ddMax.decTest -- decDouble maxnum -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddmax001 max -2 -2 -> -2 +ddmax002 max -2 -1 -> -1 +ddmax003 max -2 0 -> 0 +ddmax004 max -2 1 -> 1 +ddmax005 max -2 2 -> 2 +ddmax006 max -1 -2 -> -1 +ddmax007 max -1 -1 -> -1 +ddmax008 max -1 0 -> 0 +ddmax009 max -1 1 -> 1 +ddmax010 max -1 2 -> 2 +ddmax011 max 0 -2 -> 0 +ddmax012 max 0 -1 -> 0 +ddmax013 max 0 0 -> 0 +ddmax014 max 0 1 -> 1 +ddmax015 max 0 2 -> 2 +ddmax016 max 1 -2 -> 1 +ddmax017 max 1 -1 -> 1 +ddmax018 max 1 0 -> 1 +ddmax019 max 1 1 -> 1 +ddmax020 max 1 2 -> 2 +ddmax021 max 2 -2 -> 2 +ddmax022 max 2 -1 -> 2 +ddmax023 max 2 0 -> 2 +ddmax025 max 2 1 -> 2 +ddmax026 max 2 2 -> 2 + +-- extended zeros +ddmax030 max 0 0 -> 0 +ddmax031 max 0 -0 -> 0 +ddmax032 max 0 -0.0 -> 0 +ddmax033 max 0 0.0 -> 0 +ddmax034 max -0 0 -> 0 -- note: -0 = 0, but 0 chosen +ddmax035 max -0 -0 -> -0 +ddmax036 max -0 -0.0 -> -0.0 +ddmax037 max -0 0.0 -> 0.0 +ddmax038 max 0.0 0 -> 0 +ddmax039 max 0.0 -0 -> 0.0 +ddmax040 max 0.0 -0.0 -> 0.0 +ddmax041 max 0.0 0.0 -> 0.0 +ddmax042 max -0.0 0 -> 0 +ddmax043 max -0.0 -0 -> -0.0 +ddmax044 max -0.0 -0.0 -> -0.0 +ddmax045 max -0.0 0.0 -> 0.0 + +ddmax050 max -0E1 0E1 -> 0E+1 +ddmax051 max -0E2 0E2 -> 0E+2 +ddmax052 max -0E2 0E1 -> 0E+1 +ddmax053 max -0E1 0E2 -> 0E+2 +ddmax054 max 0E1 -0E1 -> 0E+1 +ddmax055 max 0E2 -0E2 -> 0E+2 +ddmax056 max 0E2 -0E1 -> 0E+2 +ddmax057 max 0E1 -0E2 -> 0E+1 + +ddmax058 max 0E1 0E1 -> 0E+1 +ddmax059 max 0E2 0E2 -> 0E+2 +ddmax060 max 0E2 0E1 -> 0E+2 +ddmax061 max 0E1 0E2 -> 0E+2 +ddmax062 max -0E1 -0E1 -> -0E+1 +ddmax063 max -0E2 -0E2 -> -0E+2 +ddmax064 max -0E2 -0E1 -> -0E+1 +ddmax065 max -0E1 -0E2 -> -0E+1 + +-- Specials +ddmax090 max Inf -Inf -> Infinity +ddmax091 max Inf -1000 -> Infinity +ddmax092 max Inf -1 -> Infinity +ddmax093 max Inf -0 -> Infinity +ddmax094 max Inf 0 -> Infinity +ddmax095 max Inf 1 -> Infinity +ddmax096 max Inf 1000 -> Infinity +ddmax097 max Inf Inf -> Infinity +ddmax098 max -1000 Inf -> Infinity +ddmax099 max -Inf Inf -> Infinity +ddmax100 max -1 Inf -> Infinity +ddmax101 max -0 Inf -> Infinity +ddmax102 max 0 Inf -> Infinity +ddmax103 max 1 Inf -> Infinity +ddmax104 max 1000 Inf -> Infinity +ddmax105 max Inf Inf -> Infinity + +ddmax120 max -Inf -Inf -> -Infinity +ddmax121 max -Inf -1000 -> -1000 +ddmax122 max -Inf -1 -> -1 +ddmax123 max -Inf -0 -> -0 +ddmax124 max -Inf 0 -> 0 +ddmax125 max -Inf 1 -> 1 +ddmax126 max -Inf 1000 -> 1000 +ddmax127 max -Inf Inf -> Infinity +ddmax128 max -Inf -Inf -> -Infinity +ddmax129 max -1000 -Inf -> -1000 +ddmax130 max -1 -Inf -> -1 +ddmax131 max -0 -Inf -> -0 +ddmax132 max 0 -Inf -> 0 +ddmax133 max 1 -Inf -> 1 +ddmax134 max 1000 -Inf -> 1000 +ddmax135 max Inf -Inf -> Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +ddmax141 max NaN -Inf -> -Infinity +ddmax142 max NaN -1000 -> -1000 +ddmax143 max NaN -1 -> -1 +ddmax144 max NaN -0 -> -0 +ddmax145 max NaN 0 -> 0 +ddmax146 max NaN 1 -> 1 +ddmax147 max NaN 1000 -> 1000 +ddmax148 max NaN Inf -> Infinity +ddmax149 max NaN NaN -> NaN +ddmax150 max -Inf NaN -> -Infinity +ddmax151 max -1000 NaN -> -1000 +ddmax152 max -1 NaN -> -1 +ddmax153 max -0 NaN -> -0 +ddmax154 max 0 NaN -> 0 +ddmax155 max 1 NaN -> 1 +ddmax156 max 1000 NaN -> 1000 +ddmax157 max Inf NaN -> Infinity + +ddmax161 max sNaN -Inf -> NaN Invalid_operation +ddmax162 max sNaN -1000 -> NaN Invalid_operation +ddmax163 max sNaN -1 -> NaN Invalid_operation +ddmax164 max sNaN -0 -> NaN Invalid_operation +ddmax165 max sNaN 0 -> NaN Invalid_operation +ddmax166 max sNaN 1 -> NaN Invalid_operation +ddmax167 max sNaN 1000 -> NaN Invalid_operation +ddmax168 max sNaN NaN -> NaN Invalid_operation +ddmax169 max sNaN sNaN -> NaN Invalid_operation +ddmax170 max NaN sNaN -> NaN Invalid_operation +ddmax171 max -Inf sNaN -> NaN Invalid_operation +ddmax172 max -1000 sNaN -> NaN Invalid_operation +ddmax173 max -1 sNaN -> NaN Invalid_operation +ddmax174 max -0 sNaN -> NaN Invalid_operation +ddmax175 max 0 sNaN -> NaN Invalid_operation +ddmax176 max 1 sNaN -> NaN Invalid_operation +ddmax177 max 1000 sNaN -> NaN Invalid_operation +ddmax178 max Inf sNaN -> NaN Invalid_operation +ddmax179 max NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddmax181 max NaN9 -Inf -> -Infinity +ddmax182 max NaN8 9 -> 9 +ddmax183 max -NaN7 Inf -> Infinity + +ddmax184 max -NaN1 NaN11 -> -NaN1 +ddmax185 max NaN2 NaN12 -> NaN2 +ddmax186 max -NaN13 -NaN7 -> -NaN13 +ddmax187 max NaN14 -NaN5 -> NaN14 + +ddmax188 max -Inf NaN4 -> -Infinity +ddmax189 max -9 -NaN3 -> -9 +ddmax190 max Inf NaN2 -> Infinity + +ddmax191 max sNaN99 -Inf -> NaN99 Invalid_operation +ddmax192 max sNaN98 -1 -> NaN98 Invalid_operation +ddmax193 max -sNaN97 NaN -> -NaN97 Invalid_operation +ddmax194 max sNaN96 sNaN94 -> NaN96 Invalid_operation +ddmax195 max NaN95 sNaN93 -> NaN93 Invalid_operation +ddmax196 max -Inf sNaN92 -> NaN92 Invalid_operation +ddmax197 max 0 sNaN91 -> NaN91 Invalid_operation +ddmax198 max Inf -sNaN90 -> -NaN90 Invalid_operation +ddmax199 max NaN sNaN89 -> NaN89 Invalid_operation + +-- old rounding checks +ddmax221 max 12345678000 1 -> 12345678000 +ddmax222 max 1 12345678000 -> 12345678000 +ddmax223 max 1234567800 1 -> 1234567800 +ddmax224 max 1 1234567800 -> 1234567800 +ddmax225 max 1234567890 1 -> 1234567890 +ddmax226 max 1 1234567890 -> 1234567890 +ddmax227 max 1234567891 1 -> 1234567891 +ddmax228 max 1 1234567891 -> 1234567891 +ddmax229 max 12345678901 1 -> 12345678901 +ddmax230 max 1 12345678901 -> 12345678901 +ddmax231 max 1234567896 1 -> 1234567896 +ddmax232 max 1 1234567896 -> 1234567896 +ddmax233 max -1234567891 1 -> 1 +ddmax234 max 1 -1234567891 -> 1 +ddmax235 max -12345678901 1 -> 1 +ddmax236 max 1 -12345678901 -> 1 +ddmax237 max -1234567896 1 -> 1 +ddmax238 max 1 -1234567896 -> 1 + +-- from examples +ddmax280 max '3' '2' -> '3' +ddmax281 max '-10' '3' -> '3' +ddmax282 max '1.0' '1' -> '1' +ddmax283 max '1' '1.0' -> '1' +ddmax284 max '7' 'NaN' -> '7' + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +ddmax401 max Inf 1.1 -> Infinity +ddmax402 max 1.1 1 -> 1.1 +ddmax403 max 1 1.0 -> 1 +ddmax404 max 1.0 0.1 -> 1.0 +ddmax405 max 0.1 0.10 -> 0.1 +ddmax406 max 0.10 0.100 -> 0.10 +ddmax407 max 0.10 0 -> 0.10 +ddmax408 max 0 0.0 -> 0 +ddmax409 max 0.0 -0 -> 0.0 +ddmax410 max 0.0 -0.0 -> 0.0 +ddmax411 max 0.00 -0.0 -> 0.00 +ddmax412 max 0.0 -0.00 -> 0.0 +ddmax413 max 0 -0.0 -> 0 +ddmax414 max 0 -0 -> 0 +ddmax415 max -0.0 -0 -> -0.0 +ddmax416 max -0 -0.100 -> -0 +ddmax417 max -0.100 -0.10 -> -0.100 +ddmax418 max -0.10 -0.1 -> -0.10 +ddmax419 max -0.1 -1.0 -> -0.1 +ddmax420 max -1.0 -1 -> -1.0 +ddmax421 max -1 -1.1 -> -1 +ddmax423 max -1.1 -Inf -> -1.1 +-- same with operands reversed +ddmax431 max 1.1 Inf -> Infinity +ddmax432 max 1 1.1 -> 1.1 +ddmax433 max 1.0 1 -> 1 +ddmax434 max 0.1 1.0 -> 1.0 +ddmax435 max 0.10 0.1 -> 0.1 +ddmax436 max 0.100 0.10 -> 0.10 +ddmax437 max 0 0.10 -> 0.10 +ddmax438 max 0.0 0 -> 0 +ddmax439 max -0 0.0 -> 0.0 +ddmax440 max -0.0 0.0 -> 0.0 +ddmax441 max -0.0 0.00 -> 0.00 +ddmax442 max -0.00 0.0 -> 0.0 +ddmax443 max -0.0 0 -> 0 +ddmax444 max -0 0 -> 0 +ddmax445 max -0 -0.0 -> -0.0 +ddmax446 max -0.100 -0 -> -0 +ddmax447 max -0.10 -0.100 -> -0.100 +ddmax448 max -0.1 -0.10 -> -0.10 +ddmax449 max -1.0 -0.1 -> -0.1 +ddmax450 max -1 -1.0 -> -1.0 +ddmax451 max -1.1 -1 -> -1 +ddmax453 max -Inf -1.1 -> -1.1 +-- largies +ddmax460 max 1000 1E+3 -> 1E+3 +ddmax461 max 1E+3 1000 -> 1E+3 +ddmax462 max 1000 -1E+3 -> 1000 +ddmax463 max 1E+3 -1000 -> 1E+3 +ddmax464 max -1000 1E+3 -> 1E+3 +ddmax465 max -1E+3 1000 -> 1000 +ddmax466 max -1000 -1E+3 -> -1000 +ddmax467 max -1E+3 -1000 -> -1000 + +-- misalignment traps for little-endian +ddmax471 max 1.0 0.1 -> 1.0 +ddmax472 max 0.1 1.0 -> 1.0 +ddmax473 max 10.0 0.1 -> 10.0 +ddmax474 max 0.1 10.0 -> 10.0 +ddmax475 max 100 1.0 -> 100 +ddmax476 max 1.0 100 -> 100 +ddmax477 max 1000 10.0 -> 1000 +ddmax478 max 10.0 1000 -> 1000 +ddmax479 max 10000 100.0 -> 10000 +ddmax480 max 100.0 10000 -> 10000 +ddmax481 max 100000 1000.0 -> 100000 +ddmax482 max 1000.0 100000 -> 100000 +ddmax483 max 1000000 10000.0 -> 1000000 +ddmax484 max 10000.0 1000000 -> 1000000 + +-- subnormals +ddmax510 max 1.00E-383 0 -> 1.00E-383 +ddmax511 max 0.1E-383 0 -> 1E-384 Subnormal +ddmax512 max 0.10E-383 0 -> 1.0E-384 Subnormal +ddmax513 max 0.100E-383 0 -> 1.00E-384 Subnormal +ddmax514 max 0.01E-383 0 -> 1E-385 Subnormal +ddmax515 max 0.999E-383 0 -> 9.99E-384 Subnormal +ddmax516 max 0.099E-383 0 -> 9.9E-385 Subnormal +ddmax517 max 0.009E-383 0 -> 9E-386 Subnormal +ddmax518 max 0.001E-383 0 -> 1E-386 Subnormal +ddmax519 max 0.0009E-383 0 -> 9E-387 Subnormal +ddmax520 max 0.0001E-383 0 -> 1E-387 Subnormal + +ddmax530 max -1.00E-383 0 -> 0 +ddmax531 max -0.1E-383 0 -> 0 +ddmax532 max -0.10E-383 0 -> 0 +ddmax533 max -0.100E-383 0 -> 0 +ddmax534 max -0.01E-383 0 -> 0 +ddmax535 max -0.999E-383 0 -> 0 +ddmax536 max -0.099E-383 0 -> 0 +ddmax537 max -0.009E-383 0 -> 0 +ddmax538 max -0.001E-383 0 -> 0 +ddmax539 max -0.0009E-383 0 -> 0 +ddmax540 max -0.0001E-383 0 -> 0 + +-- Null tests +ddmax900 max 10 # -> NaN Invalid_operation +ddmax901 max # 10 -> NaN Invalid_operation + + + diff --git a/Lib/test/decimaltestdata/ddMaxMag.decTest b/Lib/test/decimaltestdata/ddMaxMag.decTest index ec2b830..19c3e90 100644 --- a/Lib/test/decimaltestdata/ddMaxMag.decTest +++ b/Lib/test/decimaltestdata/ddMaxMag.decTest @@ -1,304 +1,304 @@ ------------------------------------------------------------------------- --- ddMaxMag.decTest -- decDouble maxnummag -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddmxg001 maxmag -2 -2 -> -2 -ddmxg002 maxmag -2 -1 -> -2 -ddmxg003 maxmag -2 0 -> -2 -ddmxg004 maxmag -2 1 -> -2 -ddmxg005 maxmag -2 2 -> 2 -ddmxg006 maxmag -1 -2 -> -2 -ddmxg007 maxmag -1 -1 -> -1 -ddmxg008 maxmag -1 0 -> -1 -ddmxg009 maxmag -1 1 -> 1 -ddmxg010 maxmag -1 2 -> 2 -ddmxg011 maxmag 0 -2 -> -2 -ddmxg012 maxmag 0 -1 -> -1 -ddmxg013 maxmag 0 0 -> 0 -ddmxg014 maxmag 0 1 -> 1 -ddmxg015 maxmag 0 2 -> 2 -ddmxg016 maxmag 1 -2 -> -2 -ddmxg017 maxmag 1 -1 -> 1 -ddmxg018 maxmag 1 0 -> 1 -ddmxg019 maxmag 1 1 -> 1 -ddmxg020 maxmag 1 2 -> 2 -ddmxg021 maxmag 2 -2 -> 2 -ddmxg022 maxmag 2 -1 -> 2 -ddmxg023 maxmag 2 0 -> 2 -ddmxg025 maxmag 2 1 -> 2 -ddmxg026 maxmag 2 2 -> 2 - --- extended zeros -ddmxg030 maxmag 0 0 -> 0 -ddmxg031 maxmag 0 -0 -> 0 -ddmxg032 maxmag 0 -0.0 -> 0 -ddmxg033 maxmag 0 0.0 -> 0 -ddmxg034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen -ddmxg035 maxmag -0 -0 -> -0 -ddmxg036 maxmag -0 -0.0 -> -0.0 -ddmxg037 maxmag -0 0.0 -> 0.0 -ddmxg038 maxmag 0.0 0 -> 0 -ddmxg039 maxmag 0.0 -0 -> 0.0 -ddmxg040 maxmag 0.0 -0.0 -> 0.0 -ddmxg041 maxmag 0.0 0.0 -> 0.0 -ddmxg042 maxmag -0.0 0 -> 0 -ddmxg043 maxmag -0.0 -0 -> -0.0 -ddmxg044 maxmag -0.0 -0.0 -> -0.0 -ddmxg045 maxmag -0.0 0.0 -> 0.0 - -ddmxg050 maxmag -0E1 0E1 -> 0E+1 -ddmxg051 maxmag -0E2 0E2 -> 0E+2 -ddmxg052 maxmag -0E2 0E1 -> 0E+1 -ddmxg053 maxmag -0E1 0E2 -> 0E+2 -ddmxg054 maxmag 0E1 -0E1 -> 0E+1 -ddmxg055 maxmag 0E2 -0E2 -> 0E+2 -ddmxg056 maxmag 0E2 -0E1 -> 0E+2 -ddmxg057 maxmag 0E1 -0E2 -> 0E+1 - -ddmxg058 maxmag 0E1 0E1 -> 0E+1 -ddmxg059 maxmag 0E2 0E2 -> 0E+2 -ddmxg060 maxmag 0E2 0E1 -> 0E+2 -ddmxg061 maxmag 0E1 0E2 -> 0E+2 -ddmxg062 maxmag -0E1 -0E1 -> -0E+1 -ddmxg063 maxmag -0E2 -0E2 -> -0E+2 -ddmxg064 maxmag -0E2 -0E1 -> -0E+1 -ddmxg065 maxmag -0E1 -0E2 -> -0E+1 - --- Specials -ddmxg090 maxmag Inf -Inf -> Infinity -ddmxg091 maxmag Inf -1000 -> Infinity -ddmxg092 maxmag Inf -1 -> Infinity -ddmxg093 maxmag Inf -0 -> Infinity -ddmxg094 maxmag Inf 0 -> Infinity -ddmxg095 maxmag Inf 1 -> Infinity -ddmxg096 maxmag Inf 1000 -> Infinity -ddmxg097 maxmag Inf Inf -> Infinity -ddmxg098 maxmag -1000 Inf -> Infinity -ddmxg099 maxmag -Inf Inf -> Infinity -ddmxg100 maxmag -1 Inf -> Infinity -ddmxg101 maxmag -0 Inf -> Infinity -ddmxg102 maxmag 0 Inf -> Infinity -ddmxg103 maxmag 1 Inf -> Infinity -ddmxg104 maxmag 1000 Inf -> Infinity -ddmxg105 maxmag Inf Inf -> Infinity - -ddmxg120 maxmag -Inf -Inf -> -Infinity -ddmxg121 maxmag -Inf -1000 -> -Infinity -ddmxg122 maxmag -Inf -1 -> -Infinity -ddmxg123 maxmag -Inf -0 -> -Infinity -ddmxg124 maxmag -Inf 0 -> -Infinity -ddmxg125 maxmag -Inf 1 -> -Infinity -ddmxg126 maxmag -Inf 1000 -> -Infinity -ddmxg127 maxmag -Inf Inf -> Infinity -ddmxg128 maxmag -Inf -Inf -> -Infinity -ddmxg129 maxmag -1000 -Inf -> -Infinity -ddmxg130 maxmag -1 -Inf -> -Infinity -ddmxg131 maxmag -0 -Inf -> -Infinity -ddmxg132 maxmag 0 -Inf -> -Infinity -ddmxg133 maxmag 1 -Inf -> -Infinity -ddmxg134 maxmag 1000 -Inf -> -Infinity -ddmxg135 maxmag Inf -Inf -> Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -ddmxg141 maxmag NaN -Inf -> -Infinity -ddmxg142 maxmag NaN -1000 -> -1000 -ddmxg143 maxmag NaN -1 -> -1 -ddmxg144 maxmag NaN -0 -> -0 -ddmxg145 maxmag NaN 0 -> 0 -ddmxg146 maxmag NaN 1 -> 1 -ddmxg147 maxmag NaN 1000 -> 1000 -ddmxg148 maxmag NaN Inf -> Infinity -ddmxg149 maxmag NaN NaN -> NaN -ddmxg150 maxmag -Inf NaN -> -Infinity -ddmxg151 maxmag -1000 NaN -> -1000 -ddmxg152 maxmag -1 NaN -> -1 -ddmxg153 maxmag -0 NaN -> -0 -ddmxg154 maxmag 0 NaN -> 0 -ddmxg155 maxmag 1 NaN -> 1 -ddmxg156 maxmag 1000 NaN -> 1000 -ddmxg157 maxmag Inf NaN -> Infinity - -ddmxg161 maxmag sNaN -Inf -> NaN Invalid_operation -ddmxg162 maxmag sNaN -1000 -> NaN Invalid_operation -ddmxg163 maxmag sNaN -1 -> NaN Invalid_operation -ddmxg164 maxmag sNaN -0 -> NaN Invalid_operation -ddmxg165 maxmag sNaN 0 -> NaN Invalid_operation -ddmxg166 maxmag sNaN 1 -> NaN Invalid_operation -ddmxg167 maxmag sNaN 1000 -> NaN Invalid_operation -ddmxg168 maxmag sNaN NaN -> NaN Invalid_operation -ddmxg169 maxmag sNaN sNaN -> NaN Invalid_operation -ddmxg170 maxmag NaN sNaN -> NaN Invalid_operation -ddmxg171 maxmag -Inf sNaN -> NaN Invalid_operation -ddmxg172 maxmag -1000 sNaN -> NaN Invalid_operation -ddmxg173 maxmag -1 sNaN -> NaN Invalid_operation -ddmxg174 maxmag -0 sNaN -> NaN Invalid_operation -ddmxg175 maxmag 0 sNaN -> NaN Invalid_operation -ddmxg176 maxmag 1 sNaN -> NaN Invalid_operation -ddmxg177 maxmag 1000 sNaN -> NaN Invalid_operation -ddmxg178 maxmag Inf sNaN -> NaN Invalid_operation -ddmxg179 maxmag NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddmxg181 maxmag NaN9 -Inf -> -Infinity -ddmxg182 maxmag NaN8 9 -> 9 -ddmxg183 maxmag -NaN7 Inf -> Infinity - -ddmxg184 maxmag -NaN1 NaN11 -> -NaN1 -ddmxg185 maxmag NaN2 NaN12 -> NaN2 -ddmxg186 maxmag -NaN13 -NaN7 -> -NaN13 -ddmxg187 maxmag NaN14 -NaN5 -> NaN14 - -ddmxg188 maxmag -Inf NaN4 -> -Infinity -ddmxg189 maxmag -9 -NaN3 -> -9 -ddmxg190 maxmag Inf NaN2 -> Infinity - -ddmxg191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation -ddmxg192 maxmag sNaN98 -1 -> NaN98 Invalid_operation -ddmxg193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation -ddmxg194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation -ddmxg195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation -ddmxg196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation -ddmxg197 maxmag 0 sNaN91 -> NaN91 Invalid_operation -ddmxg198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation -ddmxg199 maxmag NaN sNaN89 -> NaN89 Invalid_operation - --- old rounding checks -ddmxg221 maxmag 12345678000 1 -> 12345678000 -ddmxg222 maxmag 1 12345678000 -> 12345678000 -ddmxg223 maxmag 1234567800 1 -> 1234567800 -ddmxg224 maxmag 1 1234567800 -> 1234567800 -ddmxg225 maxmag 1234567890 1 -> 1234567890 -ddmxg226 maxmag 1 1234567890 -> 1234567890 -ddmxg227 maxmag 1234567891 1 -> 1234567891 -ddmxg228 maxmag 1 1234567891 -> 1234567891 -ddmxg229 maxmag 12345678901 1 -> 12345678901 -ddmxg230 maxmag 1 12345678901 -> 12345678901 -ddmxg231 maxmag 1234567896 1 -> 1234567896 -ddmxg232 maxmag 1 1234567896 -> 1234567896 -ddmxg233 maxmag -1234567891 1 -> -1234567891 -ddmxg234 maxmag 1 -1234567891 -> -1234567891 -ddmxg235 maxmag -12345678901 1 -> -12345678901 -ddmxg236 maxmag 1 -12345678901 -> -12345678901 -ddmxg237 maxmag -1234567896 1 -> -1234567896 -ddmxg238 maxmag 1 -1234567896 -> -1234567896 - --- from examples -ddmxg280 maxmag '3' '2' -> '3' -ddmxg281 maxmag '-10' '3' -> '-10' -ddmxg282 maxmag '1.0' '1' -> '1' -ddmxg283 maxmag '1' '1.0' -> '1' -ddmxg284 maxmag '7' 'NaN' -> '7' - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -ddmxg401 maxmag Inf 1.1 -> Infinity -ddmxg402 maxmag 1.1 1 -> 1.1 -ddmxg403 maxmag 1 1.0 -> 1 -ddmxg404 maxmag 1.0 0.1 -> 1.0 -ddmxg405 maxmag 0.1 0.10 -> 0.1 -ddmxg406 maxmag 0.10 0.100 -> 0.10 -ddmxg407 maxmag 0.10 0 -> 0.10 -ddmxg408 maxmag 0 0.0 -> 0 -ddmxg409 maxmag 0.0 -0 -> 0.0 -ddmxg410 maxmag 0.0 -0.0 -> 0.0 -ddmxg411 maxmag 0.00 -0.0 -> 0.00 -ddmxg412 maxmag 0.0 -0.00 -> 0.0 -ddmxg413 maxmag 0 -0.0 -> 0 -ddmxg414 maxmag 0 -0 -> 0 -ddmxg415 maxmag -0.0 -0 -> -0.0 -ddmxg416 maxmag -0 -0.100 -> -0.100 -ddmxg417 maxmag -0.100 -0.10 -> -0.100 -ddmxg418 maxmag -0.10 -0.1 -> -0.10 -ddmxg419 maxmag -0.1 -1.0 -> -1.0 -ddmxg420 maxmag -1.0 -1 -> -1.0 -ddmxg421 maxmag -1 -1.1 -> -1.1 -ddmxg423 maxmag -1.1 -Inf -> -Infinity --- same with operands reversed -ddmxg431 maxmag 1.1 Inf -> Infinity -ddmxg432 maxmag 1 1.1 -> 1.1 -ddmxg433 maxmag 1.0 1 -> 1 -ddmxg434 maxmag 0.1 1.0 -> 1.0 -ddmxg435 maxmag 0.10 0.1 -> 0.1 -ddmxg436 maxmag 0.100 0.10 -> 0.10 -ddmxg437 maxmag 0 0.10 -> 0.10 -ddmxg438 maxmag 0.0 0 -> 0 -ddmxg439 maxmag -0 0.0 -> 0.0 -ddmxg440 maxmag -0.0 0.0 -> 0.0 -ddmxg441 maxmag -0.0 0.00 -> 0.00 -ddmxg442 maxmag -0.00 0.0 -> 0.0 -ddmxg443 maxmag -0.0 0 -> 0 -ddmxg444 maxmag -0 0 -> 0 -ddmxg445 maxmag -0 -0.0 -> -0.0 -ddmxg446 maxmag -0.100 -0 -> -0.100 -ddmxg447 maxmag -0.10 -0.100 -> -0.100 -ddmxg448 maxmag -0.1 -0.10 -> -0.10 -ddmxg449 maxmag -1.0 -0.1 -> -1.0 -ddmxg450 maxmag -1 -1.0 -> -1.0 -ddmxg451 maxmag -1.1 -1 -> -1.1 -ddmxg453 maxmag -Inf -1.1 -> -Infinity --- largies -ddmxg460 maxmag 1000 1E+3 -> 1E+3 -ddmxg461 maxmag 1E+3 1000 -> 1E+3 -ddmxg462 maxmag 1000 -1E+3 -> 1000 -ddmxg463 maxmag 1E+3 -1000 -> 1E+3 -ddmxg464 maxmag -1000 1E+3 -> 1E+3 -ddmxg465 maxmag -1E+3 1000 -> 1000 -ddmxg466 maxmag -1000 -1E+3 -> -1000 -ddmxg467 maxmag -1E+3 -1000 -> -1000 - --- subnormals -ddmxg510 maxmag 1.00E-383 0 -> 1.00E-383 -ddmxg511 maxmag 0.1E-383 0 -> 1E-384 Subnormal -ddmxg512 maxmag 0.10E-383 0 -> 1.0E-384 Subnormal -ddmxg513 maxmag 0.100E-383 0 -> 1.00E-384 Subnormal -ddmxg514 maxmag 0.01E-383 0 -> 1E-385 Subnormal -ddmxg515 maxmag 0.999E-383 0 -> 9.99E-384 Subnormal -ddmxg516 maxmag 0.099E-383 0 -> 9.9E-385 Subnormal -ddmxg517 maxmag 0.009E-383 0 -> 9E-386 Subnormal -ddmxg518 maxmag 0.001E-383 0 -> 1E-386 Subnormal -ddmxg519 maxmag 0.0009E-383 0 -> 9E-387 Subnormal -ddmxg520 maxmag 0.0001E-383 0 -> 1E-387 Subnormal - -ddmxg530 maxmag -1.00E-383 0 -> -1.00E-383 -ddmxg531 maxmag -0.1E-383 0 -> -1E-384 Subnormal -ddmxg532 maxmag -0.10E-383 0 -> -1.0E-384 Subnormal -ddmxg533 maxmag -0.100E-383 0 -> -1.00E-384 Subnormal -ddmxg534 maxmag -0.01E-383 0 -> -1E-385 Subnormal -ddmxg535 maxmag -0.999E-383 0 -> -9.99E-384 Subnormal -ddmxg536 maxmag -0.099E-383 0 -> -9.9E-385 Subnormal -ddmxg537 maxmag -0.009E-383 0 -> -9E-386 Subnormal -ddmxg538 maxmag -0.001E-383 0 -> -1E-386 Subnormal -ddmxg539 maxmag -0.0009E-383 0 -> -9E-387 Subnormal -ddmxg540 maxmag -0.0001E-383 0 -> -1E-387 Subnormal - --- Null tests -ddmxg900 maxmag 10 # -> NaN Invalid_operation -ddmxg901 maxmag # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddMaxMag.decTest -- decDouble maxnummag -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddmxg001 maxmag -2 -2 -> -2 +ddmxg002 maxmag -2 -1 -> -2 +ddmxg003 maxmag -2 0 -> -2 +ddmxg004 maxmag -2 1 -> -2 +ddmxg005 maxmag -2 2 -> 2 +ddmxg006 maxmag -1 -2 -> -2 +ddmxg007 maxmag -1 -1 -> -1 +ddmxg008 maxmag -1 0 -> -1 +ddmxg009 maxmag -1 1 -> 1 +ddmxg010 maxmag -1 2 -> 2 +ddmxg011 maxmag 0 -2 -> -2 +ddmxg012 maxmag 0 -1 -> -1 +ddmxg013 maxmag 0 0 -> 0 +ddmxg014 maxmag 0 1 -> 1 +ddmxg015 maxmag 0 2 -> 2 +ddmxg016 maxmag 1 -2 -> -2 +ddmxg017 maxmag 1 -1 -> 1 +ddmxg018 maxmag 1 0 -> 1 +ddmxg019 maxmag 1 1 -> 1 +ddmxg020 maxmag 1 2 -> 2 +ddmxg021 maxmag 2 -2 -> 2 +ddmxg022 maxmag 2 -1 -> 2 +ddmxg023 maxmag 2 0 -> 2 +ddmxg025 maxmag 2 1 -> 2 +ddmxg026 maxmag 2 2 -> 2 + +-- extended zeros +ddmxg030 maxmag 0 0 -> 0 +ddmxg031 maxmag 0 -0 -> 0 +ddmxg032 maxmag 0 -0.0 -> 0 +ddmxg033 maxmag 0 0.0 -> 0 +ddmxg034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen +ddmxg035 maxmag -0 -0 -> -0 +ddmxg036 maxmag -0 -0.0 -> -0.0 +ddmxg037 maxmag -0 0.0 -> 0.0 +ddmxg038 maxmag 0.0 0 -> 0 +ddmxg039 maxmag 0.0 -0 -> 0.0 +ddmxg040 maxmag 0.0 -0.0 -> 0.0 +ddmxg041 maxmag 0.0 0.0 -> 0.0 +ddmxg042 maxmag -0.0 0 -> 0 +ddmxg043 maxmag -0.0 -0 -> -0.0 +ddmxg044 maxmag -0.0 -0.0 -> -0.0 +ddmxg045 maxmag -0.0 0.0 -> 0.0 + +ddmxg050 maxmag -0E1 0E1 -> 0E+1 +ddmxg051 maxmag -0E2 0E2 -> 0E+2 +ddmxg052 maxmag -0E2 0E1 -> 0E+1 +ddmxg053 maxmag -0E1 0E2 -> 0E+2 +ddmxg054 maxmag 0E1 -0E1 -> 0E+1 +ddmxg055 maxmag 0E2 -0E2 -> 0E+2 +ddmxg056 maxmag 0E2 -0E1 -> 0E+2 +ddmxg057 maxmag 0E1 -0E2 -> 0E+1 + +ddmxg058 maxmag 0E1 0E1 -> 0E+1 +ddmxg059 maxmag 0E2 0E2 -> 0E+2 +ddmxg060 maxmag 0E2 0E1 -> 0E+2 +ddmxg061 maxmag 0E1 0E2 -> 0E+2 +ddmxg062 maxmag -0E1 -0E1 -> -0E+1 +ddmxg063 maxmag -0E2 -0E2 -> -0E+2 +ddmxg064 maxmag -0E2 -0E1 -> -0E+1 +ddmxg065 maxmag -0E1 -0E2 -> -0E+1 + +-- Specials +ddmxg090 maxmag Inf -Inf -> Infinity +ddmxg091 maxmag Inf -1000 -> Infinity +ddmxg092 maxmag Inf -1 -> Infinity +ddmxg093 maxmag Inf -0 -> Infinity +ddmxg094 maxmag Inf 0 -> Infinity +ddmxg095 maxmag Inf 1 -> Infinity +ddmxg096 maxmag Inf 1000 -> Infinity +ddmxg097 maxmag Inf Inf -> Infinity +ddmxg098 maxmag -1000 Inf -> Infinity +ddmxg099 maxmag -Inf Inf -> Infinity +ddmxg100 maxmag -1 Inf -> Infinity +ddmxg101 maxmag -0 Inf -> Infinity +ddmxg102 maxmag 0 Inf -> Infinity +ddmxg103 maxmag 1 Inf -> Infinity +ddmxg104 maxmag 1000 Inf -> Infinity +ddmxg105 maxmag Inf Inf -> Infinity + +ddmxg120 maxmag -Inf -Inf -> -Infinity +ddmxg121 maxmag -Inf -1000 -> -Infinity +ddmxg122 maxmag -Inf -1 -> -Infinity +ddmxg123 maxmag -Inf -0 -> -Infinity +ddmxg124 maxmag -Inf 0 -> -Infinity +ddmxg125 maxmag -Inf 1 -> -Infinity +ddmxg126 maxmag -Inf 1000 -> -Infinity +ddmxg127 maxmag -Inf Inf -> Infinity +ddmxg128 maxmag -Inf -Inf -> -Infinity +ddmxg129 maxmag -1000 -Inf -> -Infinity +ddmxg130 maxmag -1 -Inf -> -Infinity +ddmxg131 maxmag -0 -Inf -> -Infinity +ddmxg132 maxmag 0 -Inf -> -Infinity +ddmxg133 maxmag 1 -Inf -> -Infinity +ddmxg134 maxmag 1000 -Inf -> -Infinity +ddmxg135 maxmag Inf -Inf -> Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +ddmxg141 maxmag NaN -Inf -> -Infinity +ddmxg142 maxmag NaN -1000 -> -1000 +ddmxg143 maxmag NaN -1 -> -1 +ddmxg144 maxmag NaN -0 -> -0 +ddmxg145 maxmag NaN 0 -> 0 +ddmxg146 maxmag NaN 1 -> 1 +ddmxg147 maxmag NaN 1000 -> 1000 +ddmxg148 maxmag NaN Inf -> Infinity +ddmxg149 maxmag NaN NaN -> NaN +ddmxg150 maxmag -Inf NaN -> -Infinity +ddmxg151 maxmag -1000 NaN -> -1000 +ddmxg152 maxmag -1 NaN -> -1 +ddmxg153 maxmag -0 NaN -> -0 +ddmxg154 maxmag 0 NaN -> 0 +ddmxg155 maxmag 1 NaN -> 1 +ddmxg156 maxmag 1000 NaN -> 1000 +ddmxg157 maxmag Inf NaN -> Infinity + +ddmxg161 maxmag sNaN -Inf -> NaN Invalid_operation +ddmxg162 maxmag sNaN -1000 -> NaN Invalid_operation +ddmxg163 maxmag sNaN -1 -> NaN Invalid_operation +ddmxg164 maxmag sNaN -0 -> NaN Invalid_operation +ddmxg165 maxmag sNaN 0 -> NaN Invalid_operation +ddmxg166 maxmag sNaN 1 -> NaN Invalid_operation +ddmxg167 maxmag sNaN 1000 -> NaN Invalid_operation +ddmxg168 maxmag sNaN NaN -> NaN Invalid_operation +ddmxg169 maxmag sNaN sNaN -> NaN Invalid_operation +ddmxg170 maxmag NaN sNaN -> NaN Invalid_operation +ddmxg171 maxmag -Inf sNaN -> NaN Invalid_operation +ddmxg172 maxmag -1000 sNaN -> NaN Invalid_operation +ddmxg173 maxmag -1 sNaN -> NaN Invalid_operation +ddmxg174 maxmag -0 sNaN -> NaN Invalid_operation +ddmxg175 maxmag 0 sNaN -> NaN Invalid_operation +ddmxg176 maxmag 1 sNaN -> NaN Invalid_operation +ddmxg177 maxmag 1000 sNaN -> NaN Invalid_operation +ddmxg178 maxmag Inf sNaN -> NaN Invalid_operation +ddmxg179 maxmag NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddmxg181 maxmag NaN9 -Inf -> -Infinity +ddmxg182 maxmag NaN8 9 -> 9 +ddmxg183 maxmag -NaN7 Inf -> Infinity + +ddmxg184 maxmag -NaN1 NaN11 -> -NaN1 +ddmxg185 maxmag NaN2 NaN12 -> NaN2 +ddmxg186 maxmag -NaN13 -NaN7 -> -NaN13 +ddmxg187 maxmag NaN14 -NaN5 -> NaN14 + +ddmxg188 maxmag -Inf NaN4 -> -Infinity +ddmxg189 maxmag -9 -NaN3 -> -9 +ddmxg190 maxmag Inf NaN2 -> Infinity + +ddmxg191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation +ddmxg192 maxmag sNaN98 -1 -> NaN98 Invalid_operation +ddmxg193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation +ddmxg194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation +ddmxg195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation +ddmxg196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation +ddmxg197 maxmag 0 sNaN91 -> NaN91 Invalid_operation +ddmxg198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation +ddmxg199 maxmag NaN sNaN89 -> NaN89 Invalid_operation + +-- old rounding checks +ddmxg221 maxmag 12345678000 1 -> 12345678000 +ddmxg222 maxmag 1 12345678000 -> 12345678000 +ddmxg223 maxmag 1234567800 1 -> 1234567800 +ddmxg224 maxmag 1 1234567800 -> 1234567800 +ddmxg225 maxmag 1234567890 1 -> 1234567890 +ddmxg226 maxmag 1 1234567890 -> 1234567890 +ddmxg227 maxmag 1234567891 1 -> 1234567891 +ddmxg228 maxmag 1 1234567891 -> 1234567891 +ddmxg229 maxmag 12345678901 1 -> 12345678901 +ddmxg230 maxmag 1 12345678901 -> 12345678901 +ddmxg231 maxmag 1234567896 1 -> 1234567896 +ddmxg232 maxmag 1 1234567896 -> 1234567896 +ddmxg233 maxmag -1234567891 1 -> -1234567891 +ddmxg234 maxmag 1 -1234567891 -> -1234567891 +ddmxg235 maxmag -12345678901 1 -> -12345678901 +ddmxg236 maxmag 1 -12345678901 -> -12345678901 +ddmxg237 maxmag -1234567896 1 -> -1234567896 +ddmxg238 maxmag 1 -1234567896 -> -1234567896 + +-- from examples +ddmxg280 maxmag '3' '2' -> '3' +ddmxg281 maxmag '-10' '3' -> '-10' +ddmxg282 maxmag '1.0' '1' -> '1' +ddmxg283 maxmag '1' '1.0' -> '1' +ddmxg284 maxmag '7' 'NaN' -> '7' + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +ddmxg401 maxmag Inf 1.1 -> Infinity +ddmxg402 maxmag 1.1 1 -> 1.1 +ddmxg403 maxmag 1 1.0 -> 1 +ddmxg404 maxmag 1.0 0.1 -> 1.0 +ddmxg405 maxmag 0.1 0.10 -> 0.1 +ddmxg406 maxmag 0.10 0.100 -> 0.10 +ddmxg407 maxmag 0.10 0 -> 0.10 +ddmxg408 maxmag 0 0.0 -> 0 +ddmxg409 maxmag 0.0 -0 -> 0.0 +ddmxg410 maxmag 0.0 -0.0 -> 0.0 +ddmxg411 maxmag 0.00 -0.0 -> 0.00 +ddmxg412 maxmag 0.0 -0.00 -> 0.0 +ddmxg413 maxmag 0 -0.0 -> 0 +ddmxg414 maxmag 0 -0 -> 0 +ddmxg415 maxmag -0.0 -0 -> -0.0 +ddmxg416 maxmag -0 -0.100 -> -0.100 +ddmxg417 maxmag -0.100 -0.10 -> -0.100 +ddmxg418 maxmag -0.10 -0.1 -> -0.10 +ddmxg419 maxmag -0.1 -1.0 -> -1.0 +ddmxg420 maxmag -1.0 -1 -> -1.0 +ddmxg421 maxmag -1 -1.1 -> -1.1 +ddmxg423 maxmag -1.1 -Inf -> -Infinity +-- same with operands reversed +ddmxg431 maxmag 1.1 Inf -> Infinity +ddmxg432 maxmag 1 1.1 -> 1.1 +ddmxg433 maxmag 1.0 1 -> 1 +ddmxg434 maxmag 0.1 1.0 -> 1.0 +ddmxg435 maxmag 0.10 0.1 -> 0.1 +ddmxg436 maxmag 0.100 0.10 -> 0.10 +ddmxg437 maxmag 0 0.10 -> 0.10 +ddmxg438 maxmag 0.0 0 -> 0 +ddmxg439 maxmag -0 0.0 -> 0.0 +ddmxg440 maxmag -0.0 0.0 -> 0.0 +ddmxg441 maxmag -0.0 0.00 -> 0.00 +ddmxg442 maxmag -0.00 0.0 -> 0.0 +ddmxg443 maxmag -0.0 0 -> 0 +ddmxg444 maxmag -0 0 -> 0 +ddmxg445 maxmag -0 -0.0 -> -0.0 +ddmxg446 maxmag -0.100 -0 -> -0.100 +ddmxg447 maxmag -0.10 -0.100 -> -0.100 +ddmxg448 maxmag -0.1 -0.10 -> -0.10 +ddmxg449 maxmag -1.0 -0.1 -> -1.0 +ddmxg450 maxmag -1 -1.0 -> -1.0 +ddmxg451 maxmag -1.1 -1 -> -1.1 +ddmxg453 maxmag -Inf -1.1 -> -Infinity +-- largies +ddmxg460 maxmag 1000 1E+3 -> 1E+3 +ddmxg461 maxmag 1E+3 1000 -> 1E+3 +ddmxg462 maxmag 1000 -1E+3 -> 1000 +ddmxg463 maxmag 1E+3 -1000 -> 1E+3 +ddmxg464 maxmag -1000 1E+3 -> 1E+3 +ddmxg465 maxmag -1E+3 1000 -> 1000 +ddmxg466 maxmag -1000 -1E+3 -> -1000 +ddmxg467 maxmag -1E+3 -1000 -> -1000 + +-- subnormals +ddmxg510 maxmag 1.00E-383 0 -> 1.00E-383 +ddmxg511 maxmag 0.1E-383 0 -> 1E-384 Subnormal +ddmxg512 maxmag 0.10E-383 0 -> 1.0E-384 Subnormal +ddmxg513 maxmag 0.100E-383 0 -> 1.00E-384 Subnormal +ddmxg514 maxmag 0.01E-383 0 -> 1E-385 Subnormal +ddmxg515 maxmag 0.999E-383 0 -> 9.99E-384 Subnormal +ddmxg516 maxmag 0.099E-383 0 -> 9.9E-385 Subnormal +ddmxg517 maxmag 0.009E-383 0 -> 9E-386 Subnormal +ddmxg518 maxmag 0.001E-383 0 -> 1E-386 Subnormal +ddmxg519 maxmag 0.0009E-383 0 -> 9E-387 Subnormal +ddmxg520 maxmag 0.0001E-383 0 -> 1E-387 Subnormal + +ddmxg530 maxmag -1.00E-383 0 -> -1.00E-383 +ddmxg531 maxmag -0.1E-383 0 -> -1E-384 Subnormal +ddmxg532 maxmag -0.10E-383 0 -> -1.0E-384 Subnormal +ddmxg533 maxmag -0.100E-383 0 -> -1.00E-384 Subnormal +ddmxg534 maxmag -0.01E-383 0 -> -1E-385 Subnormal +ddmxg535 maxmag -0.999E-383 0 -> -9.99E-384 Subnormal +ddmxg536 maxmag -0.099E-383 0 -> -9.9E-385 Subnormal +ddmxg537 maxmag -0.009E-383 0 -> -9E-386 Subnormal +ddmxg538 maxmag -0.001E-383 0 -> -1E-386 Subnormal +ddmxg539 maxmag -0.0009E-383 0 -> -9E-387 Subnormal +ddmxg540 maxmag -0.0001E-383 0 -> -1E-387 Subnormal + +-- Null tests +ddmxg900 maxmag 10 # -> NaN Invalid_operation +ddmxg901 maxmag # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddMin.decTest b/Lib/test/decimaltestdata/ddMin.decTest index 9ce4282..eb942ff 100644 --- a/Lib/test/decimaltestdata/ddMin.decTest +++ b/Lib/test/decimaltestdata/ddMin.decTest @@ -1,309 +1,309 @@ ------------------------------------------------------------------------- --- ddMin.decTest -- decDouble minnum -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddmin001 min -2 -2 -> -2 -ddmin002 min -2 -1 -> -2 -ddmin003 min -2 0 -> -2 -ddmin004 min -2 1 -> -2 -ddmin005 min -2 2 -> -2 -ddmin006 min -1 -2 -> -2 -ddmin007 min -1 -1 -> -1 -ddmin008 min -1 0 -> -1 -ddmin009 min -1 1 -> -1 -ddmin010 min -1 2 -> -1 -ddmin011 min 0 -2 -> -2 -ddmin012 min 0 -1 -> -1 -ddmin013 min 0 0 -> 0 -ddmin014 min 0 1 -> 0 -ddmin015 min 0 2 -> 0 -ddmin016 min 1 -2 -> -2 -ddmin017 min 1 -1 -> -1 -ddmin018 min 1 0 -> 0 -ddmin019 min 1 1 -> 1 -ddmin020 min 1 2 -> 1 -ddmin021 min 2 -2 -> -2 -ddmin022 min 2 -1 -> -1 -ddmin023 min 2 0 -> 0 -ddmin025 min 2 1 -> 1 -ddmin026 min 2 2 -> 2 - --- extended zeros -ddmin030 min 0 0 -> 0 -ddmin031 min 0 -0 -> -0 -ddmin032 min 0 -0.0 -> -0.0 -ddmin033 min 0 0.0 -> 0.0 -ddmin034 min -0 0 -> -0 -ddmin035 min -0 -0 -> -0 -ddmin036 min -0 -0.0 -> -0 -ddmin037 min -0 0.0 -> -0 -ddmin038 min 0.0 0 -> 0.0 -ddmin039 min 0.0 -0 -> -0 -ddmin040 min 0.0 -0.0 -> -0.0 -ddmin041 min 0.0 0.0 -> 0.0 -ddmin042 min -0.0 0 -> -0.0 -ddmin043 min -0.0 -0 -> -0 -ddmin044 min -0.0 -0.0 -> -0.0 -ddmin045 min -0.0 0.0 -> -0.0 - -ddmin046 min 0E1 -0E1 -> -0E+1 -ddmin047 min -0E1 0E2 -> -0E+1 -ddmin048 min 0E2 0E1 -> 0E+1 -ddmin049 min 0E1 0E2 -> 0E+1 -ddmin050 min -0E3 -0E2 -> -0E+3 -ddmin051 min -0E2 -0E3 -> -0E+3 - --- Specials -ddmin090 min Inf -Inf -> -Infinity -ddmin091 min Inf -1000 -> -1000 -ddmin092 min Inf -1 -> -1 -ddmin093 min Inf -0 -> -0 -ddmin094 min Inf 0 -> 0 -ddmin095 min Inf 1 -> 1 -ddmin096 min Inf 1000 -> 1000 -ddmin097 min Inf Inf -> Infinity -ddmin098 min -1000 Inf -> -1000 -ddmin099 min -Inf Inf -> -Infinity -ddmin100 min -1 Inf -> -1 -ddmin101 min -0 Inf -> -0 -ddmin102 min 0 Inf -> 0 -ddmin103 min 1 Inf -> 1 -ddmin104 min 1000 Inf -> 1000 -ddmin105 min Inf Inf -> Infinity - -ddmin120 min -Inf -Inf -> -Infinity -ddmin121 min -Inf -1000 -> -Infinity -ddmin122 min -Inf -1 -> -Infinity -ddmin123 min -Inf -0 -> -Infinity -ddmin124 min -Inf 0 -> -Infinity -ddmin125 min -Inf 1 -> -Infinity -ddmin126 min -Inf 1000 -> -Infinity -ddmin127 min -Inf Inf -> -Infinity -ddmin128 min -Inf -Inf -> -Infinity -ddmin129 min -1000 -Inf -> -Infinity -ddmin130 min -1 -Inf -> -Infinity -ddmin131 min -0 -Inf -> -Infinity -ddmin132 min 0 -Inf -> -Infinity -ddmin133 min 1 -Inf -> -Infinity -ddmin134 min 1000 -Inf -> -Infinity -ddmin135 min Inf -Inf -> -Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -ddmin141 min NaN -Inf -> -Infinity -ddmin142 min NaN -1000 -> -1000 -ddmin143 min NaN -1 -> -1 -ddmin144 min NaN -0 -> -0 -ddmin145 min NaN 0 -> 0 -ddmin146 min NaN 1 -> 1 -ddmin147 min NaN 1000 -> 1000 -ddmin148 min NaN Inf -> Infinity -ddmin149 min NaN NaN -> NaN -ddmin150 min -Inf NaN -> -Infinity -ddmin151 min -1000 NaN -> -1000 -ddmin152 min -1 -NaN -> -1 -ddmin153 min -0 NaN -> -0 -ddmin154 min 0 -NaN -> 0 -ddmin155 min 1 NaN -> 1 -ddmin156 min 1000 NaN -> 1000 -ddmin157 min Inf NaN -> Infinity - -ddmin161 min sNaN -Inf -> NaN Invalid_operation -ddmin162 min sNaN -1000 -> NaN Invalid_operation -ddmin163 min sNaN -1 -> NaN Invalid_operation -ddmin164 min sNaN -0 -> NaN Invalid_operation -ddmin165 min -sNaN 0 -> -NaN Invalid_operation -ddmin166 min -sNaN 1 -> -NaN Invalid_operation -ddmin167 min sNaN 1000 -> NaN Invalid_operation -ddmin168 min sNaN NaN -> NaN Invalid_operation -ddmin169 min sNaN sNaN -> NaN Invalid_operation -ddmin170 min NaN sNaN -> NaN Invalid_operation -ddmin171 min -Inf sNaN -> NaN Invalid_operation -ddmin172 min -1000 sNaN -> NaN Invalid_operation -ddmin173 min -1 sNaN -> NaN Invalid_operation -ddmin174 min -0 sNaN -> NaN Invalid_operation -ddmin175 min 0 sNaN -> NaN Invalid_operation -ddmin176 min 1 sNaN -> NaN Invalid_operation -ddmin177 min 1000 sNaN -> NaN Invalid_operation -ddmin178 min Inf sNaN -> NaN Invalid_operation -ddmin179 min NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddmin181 min NaN9 -Inf -> -Infinity -ddmin182 min -NaN8 9990 -> 9990 -ddmin183 min NaN71 Inf -> Infinity - -ddmin184 min NaN1 NaN54 -> NaN1 -ddmin185 min NaN22 -NaN53 -> NaN22 -ddmin186 min -NaN3 NaN6 -> -NaN3 -ddmin187 min -NaN44 NaN7 -> -NaN44 - -ddmin188 min -Inf NaN41 -> -Infinity -ddmin189 min -9999 -NaN33 -> -9999 -ddmin190 min Inf NaN2 -> Infinity - -ddmin191 min sNaN99 -Inf -> NaN99 Invalid_operation -ddmin192 min sNaN98 -11 -> NaN98 Invalid_operation -ddmin193 min -sNaN97 NaN8 -> -NaN97 Invalid_operation -ddmin194 min sNaN69 sNaN94 -> NaN69 Invalid_operation -ddmin195 min NaN95 sNaN93 -> NaN93 Invalid_operation -ddmin196 min -Inf sNaN92 -> NaN92 Invalid_operation -ddmin197 min 088 sNaN91 -> NaN91 Invalid_operation -ddmin198 min Inf -sNaN90 -> -NaN90 Invalid_operation -ddmin199 min NaN sNaN86 -> NaN86 Invalid_operation - --- old rounding checks -ddmin221 min -12345678000 1 -> -12345678000 -ddmin222 min 1 -12345678000 -> -12345678000 -ddmin223 min -1234567800 1 -> -1234567800 -ddmin224 min 1 -1234567800 -> -1234567800 -ddmin225 min -1234567890 1 -> -1234567890 -ddmin226 min 1 -1234567890 -> -1234567890 -ddmin227 min -1234567891 1 -> -1234567891 -ddmin228 min 1 -1234567891 -> -1234567891 -ddmin229 min -12345678901 1 -> -12345678901 -ddmin230 min 1 -12345678901 -> -12345678901 -ddmin231 min -1234567896 1 -> -1234567896 -ddmin232 min 1 -1234567896 -> -1234567896 -ddmin233 min 1234567891 1 -> 1 -ddmin234 min 1 1234567891 -> 1 -ddmin235 min 12345678901 1 -> 1 -ddmin236 min 1 12345678901 -> 1 -ddmin237 min 1234567896 1 -> 1 -ddmin238 min 1 1234567896 -> 1 - --- from examples -ddmin280 min '3' '2' -> '2' -ddmin281 min '-10' '3' -> '-10' -ddmin282 min '1.0' '1' -> '1.0' -ddmin283 min '1' '1.0' -> '1.0' -ddmin284 min '7' 'NaN' -> '7' - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -ddmin401 min Inf 1.1 -> 1.1 -ddmin402 min 1.1 1 -> 1 -ddmin403 min 1 1.0 -> 1.0 -ddmin404 min 1.0 0.1 -> 0.1 -ddmin405 min 0.1 0.10 -> 0.10 -ddmin406 min 0.10 0.100 -> 0.100 -ddmin407 min 0.10 0 -> 0 -ddmin408 min 0 0.0 -> 0.0 -ddmin409 min 0.0 -0 -> -0 -ddmin410 min 0.0 -0.0 -> -0.0 -ddmin411 min 0.00 -0.0 -> -0.0 -ddmin412 min 0.0 -0.00 -> -0.00 -ddmin413 min 0 -0.0 -> -0.0 -ddmin414 min 0 -0 -> -0 -ddmin415 min -0.0 -0 -> -0 -ddmin416 min -0 -0.100 -> -0.100 -ddmin417 min -0.100 -0.10 -> -0.10 -ddmin418 min -0.10 -0.1 -> -0.1 -ddmin419 min -0.1 -1.0 -> -1.0 -ddmin420 min -1.0 -1 -> -1 -ddmin421 min -1 -1.1 -> -1.1 -ddmin423 min -1.1 -Inf -> -Infinity --- same with operands reversed -ddmin431 min 1.1 Inf -> 1.1 -ddmin432 min 1 1.1 -> 1 -ddmin433 min 1.0 1 -> 1.0 -ddmin434 min 0.1 1.0 -> 0.1 -ddmin435 min 0.10 0.1 -> 0.10 -ddmin436 min 0.100 0.10 -> 0.100 -ddmin437 min 0 0.10 -> 0 -ddmin438 min 0.0 0 -> 0.0 -ddmin439 min -0 0.0 -> -0 -ddmin440 min -0.0 0.0 -> -0.0 -ddmin441 min -0.0 0.00 -> -0.0 -ddmin442 min -0.00 0.0 -> -0.00 -ddmin443 min -0.0 0 -> -0.0 -ddmin444 min -0 0 -> -0 -ddmin445 min -0 -0.0 -> -0 -ddmin446 min -0.100 -0 -> -0.100 -ddmin447 min -0.10 -0.100 -> -0.10 -ddmin448 min -0.1 -0.10 -> -0.1 -ddmin449 min -1.0 -0.1 -> -1.0 -ddmin450 min -1 -1.0 -> -1 -ddmin451 min -1.1 -1 -> -1.1 -ddmin453 min -Inf -1.1 -> -Infinity --- largies -ddmin460 min 1000 1E+3 -> 1000 -ddmin461 min 1E+3 1000 -> 1000 -ddmin462 min 1000 -1E+3 -> -1E+3 -ddmin463 min 1E+3 -384 -> -384 -ddmin464 min -384 1E+3 -> -384 -ddmin465 min -1E+3 1000 -> -1E+3 -ddmin466 min -384 -1E+3 -> -1E+3 -ddmin467 min -1E+3 -384 -> -1E+3 - --- misalignment traps for little-endian -ddmin471 min 1.0 0.1 -> 0.1 -ddmin472 min 0.1 1.0 -> 0.1 -ddmin473 min 10.0 0.1 -> 0.1 -ddmin474 min 0.1 10.0 -> 0.1 -ddmin475 min 100 1.0 -> 1.0 -ddmin476 min 1.0 100 -> 1.0 -ddmin477 min 1000 10.0 -> 10.0 -ddmin478 min 10.0 1000 -> 10.0 -ddmin479 min 10000 100.0 -> 100.0 -ddmin480 min 100.0 10000 -> 100.0 -ddmin481 min 100000 1000.0 -> 1000.0 -ddmin482 min 1000.0 100000 -> 1000.0 -ddmin483 min 1000000 10000.0 -> 10000.0 -ddmin484 min 10000.0 1000000 -> 10000.0 - --- subnormals -ddmin510 min 1.00E-383 0 -> 0 -ddmin511 min 0.1E-383 0 -> 0 -ddmin512 min 0.10E-383 0 -> 0 -ddmin513 min 0.100E-383 0 -> 0 -ddmin514 min 0.01E-383 0 -> 0 -ddmin515 min 0.999E-383 0 -> 0 -ddmin516 min 0.099E-383 0 -> 0 -ddmin517 min 0.009E-383 0 -> 0 -ddmin518 min 0.001E-383 0 -> 0 -ddmin519 min 0.0009E-383 0 -> 0 -ddmin520 min 0.0001E-383 0 -> 0 - -ddmin530 min -1.00E-383 0 -> -1.00E-383 -ddmin531 min -0.1E-383 0 -> -1E-384 Subnormal -ddmin532 min -0.10E-383 0 -> -1.0E-384 Subnormal -ddmin533 min -0.100E-383 0 -> -1.00E-384 Subnormal -ddmin534 min -0.01E-383 0 -> -1E-385 Subnormal -ddmin535 min -0.999E-383 0 -> -9.99E-384 Subnormal -ddmin536 min -0.099E-383 0 -> -9.9E-385 Subnormal -ddmin537 min -0.009E-383 0 -> -9E-386 Subnormal -ddmin538 min -0.001E-383 0 -> -1E-386 Subnormal -ddmin539 min -0.0009E-383 0 -> -9E-387 Subnormal -ddmin540 min -0.0001E-383 0 -> -1E-387 Subnormal - - --- Null tests -ddmin900 min 10 # -> NaN Invalid_operation -ddmin901 min # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddMin.decTest -- decDouble minnum -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddmin001 min -2 -2 -> -2 +ddmin002 min -2 -1 -> -2 +ddmin003 min -2 0 -> -2 +ddmin004 min -2 1 -> -2 +ddmin005 min -2 2 -> -2 +ddmin006 min -1 -2 -> -2 +ddmin007 min -1 -1 -> -1 +ddmin008 min -1 0 -> -1 +ddmin009 min -1 1 -> -1 +ddmin010 min -1 2 -> -1 +ddmin011 min 0 -2 -> -2 +ddmin012 min 0 -1 -> -1 +ddmin013 min 0 0 -> 0 +ddmin014 min 0 1 -> 0 +ddmin015 min 0 2 -> 0 +ddmin016 min 1 -2 -> -2 +ddmin017 min 1 -1 -> -1 +ddmin018 min 1 0 -> 0 +ddmin019 min 1 1 -> 1 +ddmin020 min 1 2 -> 1 +ddmin021 min 2 -2 -> -2 +ddmin022 min 2 -1 -> -1 +ddmin023 min 2 0 -> 0 +ddmin025 min 2 1 -> 1 +ddmin026 min 2 2 -> 2 + +-- extended zeros +ddmin030 min 0 0 -> 0 +ddmin031 min 0 -0 -> -0 +ddmin032 min 0 -0.0 -> -0.0 +ddmin033 min 0 0.0 -> 0.0 +ddmin034 min -0 0 -> -0 +ddmin035 min -0 -0 -> -0 +ddmin036 min -0 -0.0 -> -0 +ddmin037 min -0 0.0 -> -0 +ddmin038 min 0.0 0 -> 0.0 +ddmin039 min 0.0 -0 -> -0 +ddmin040 min 0.0 -0.0 -> -0.0 +ddmin041 min 0.0 0.0 -> 0.0 +ddmin042 min -0.0 0 -> -0.0 +ddmin043 min -0.0 -0 -> -0 +ddmin044 min -0.0 -0.0 -> -0.0 +ddmin045 min -0.0 0.0 -> -0.0 + +ddmin046 min 0E1 -0E1 -> -0E+1 +ddmin047 min -0E1 0E2 -> -0E+1 +ddmin048 min 0E2 0E1 -> 0E+1 +ddmin049 min 0E1 0E2 -> 0E+1 +ddmin050 min -0E3 -0E2 -> -0E+3 +ddmin051 min -0E2 -0E3 -> -0E+3 + +-- Specials +ddmin090 min Inf -Inf -> -Infinity +ddmin091 min Inf -1000 -> -1000 +ddmin092 min Inf -1 -> -1 +ddmin093 min Inf -0 -> -0 +ddmin094 min Inf 0 -> 0 +ddmin095 min Inf 1 -> 1 +ddmin096 min Inf 1000 -> 1000 +ddmin097 min Inf Inf -> Infinity +ddmin098 min -1000 Inf -> -1000 +ddmin099 min -Inf Inf -> -Infinity +ddmin100 min -1 Inf -> -1 +ddmin101 min -0 Inf -> -0 +ddmin102 min 0 Inf -> 0 +ddmin103 min 1 Inf -> 1 +ddmin104 min 1000 Inf -> 1000 +ddmin105 min Inf Inf -> Infinity + +ddmin120 min -Inf -Inf -> -Infinity +ddmin121 min -Inf -1000 -> -Infinity +ddmin122 min -Inf -1 -> -Infinity +ddmin123 min -Inf -0 -> -Infinity +ddmin124 min -Inf 0 -> -Infinity +ddmin125 min -Inf 1 -> -Infinity +ddmin126 min -Inf 1000 -> -Infinity +ddmin127 min -Inf Inf -> -Infinity +ddmin128 min -Inf -Inf -> -Infinity +ddmin129 min -1000 -Inf -> -Infinity +ddmin130 min -1 -Inf -> -Infinity +ddmin131 min -0 -Inf -> -Infinity +ddmin132 min 0 -Inf -> -Infinity +ddmin133 min 1 -Inf -> -Infinity +ddmin134 min 1000 -Inf -> -Infinity +ddmin135 min Inf -Inf -> -Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +ddmin141 min NaN -Inf -> -Infinity +ddmin142 min NaN -1000 -> -1000 +ddmin143 min NaN -1 -> -1 +ddmin144 min NaN -0 -> -0 +ddmin145 min NaN 0 -> 0 +ddmin146 min NaN 1 -> 1 +ddmin147 min NaN 1000 -> 1000 +ddmin148 min NaN Inf -> Infinity +ddmin149 min NaN NaN -> NaN +ddmin150 min -Inf NaN -> -Infinity +ddmin151 min -1000 NaN -> -1000 +ddmin152 min -1 -NaN -> -1 +ddmin153 min -0 NaN -> -0 +ddmin154 min 0 -NaN -> 0 +ddmin155 min 1 NaN -> 1 +ddmin156 min 1000 NaN -> 1000 +ddmin157 min Inf NaN -> Infinity + +ddmin161 min sNaN -Inf -> NaN Invalid_operation +ddmin162 min sNaN -1000 -> NaN Invalid_operation +ddmin163 min sNaN -1 -> NaN Invalid_operation +ddmin164 min sNaN -0 -> NaN Invalid_operation +ddmin165 min -sNaN 0 -> -NaN Invalid_operation +ddmin166 min -sNaN 1 -> -NaN Invalid_operation +ddmin167 min sNaN 1000 -> NaN Invalid_operation +ddmin168 min sNaN NaN -> NaN Invalid_operation +ddmin169 min sNaN sNaN -> NaN Invalid_operation +ddmin170 min NaN sNaN -> NaN Invalid_operation +ddmin171 min -Inf sNaN -> NaN Invalid_operation +ddmin172 min -1000 sNaN -> NaN Invalid_operation +ddmin173 min -1 sNaN -> NaN Invalid_operation +ddmin174 min -0 sNaN -> NaN Invalid_operation +ddmin175 min 0 sNaN -> NaN Invalid_operation +ddmin176 min 1 sNaN -> NaN Invalid_operation +ddmin177 min 1000 sNaN -> NaN Invalid_operation +ddmin178 min Inf sNaN -> NaN Invalid_operation +ddmin179 min NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddmin181 min NaN9 -Inf -> -Infinity +ddmin182 min -NaN8 9990 -> 9990 +ddmin183 min NaN71 Inf -> Infinity + +ddmin184 min NaN1 NaN54 -> NaN1 +ddmin185 min NaN22 -NaN53 -> NaN22 +ddmin186 min -NaN3 NaN6 -> -NaN3 +ddmin187 min -NaN44 NaN7 -> -NaN44 + +ddmin188 min -Inf NaN41 -> -Infinity +ddmin189 min -9999 -NaN33 -> -9999 +ddmin190 min Inf NaN2 -> Infinity + +ddmin191 min sNaN99 -Inf -> NaN99 Invalid_operation +ddmin192 min sNaN98 -11 -> NaN98 Invalid_operation +ddmin193 min -sNaN97 NaN8 -> -NaN97 Invalid_operation +ddmin194 min sNaN69 sNaN94 -> NaN69 Invalid_operation +ddmin195 min NaN95 sNaN93 -> NaN93 Invalid_operation +ddmin196 min -Inf sNaN92 -> NaN92 Invalid_operation +ddmin197 min 088 sNaN91 -> NaN91 Invalid_operation +ddmin198 min Inf -sNaN90 -> -NaN90 Invalid_operation +ddmin199 min NaN sNaN86 -> NaN86 Invalid_operation + +-- old rounding checks +ddmin221 min -12345678000 1 -> -12345678000 +ddmin222 min 1 -12345678000 -> -12345678000 +ddmin223 min -1234567800 1 -> -1234567800 +ddmin224 min 1 -1234567800 -> -1234567800 +ddmin225 min -1234567890 1 -> -1234567890 +ddmin226 min 1 -1234567890 -> -1234567890 +ddmin227 min -1234567891 1 -> -1234567891 +ddmin228 min 1 -1234567891 -> -1234567891 +ddmin229 min -12345678901 1 -> -12345678901 +ddmin230 min 1 -12345678901 -> -12345678901 +ddmin231 min -1234567896 1 -> -1234567896 +ddmin232 min 1 -1234567896 -> -1234567896 +ddmin233 min 1234567891 1 -> 1 +ddmin234 min 1 1234567891 -> 1 +ddmin235 min 12345678901 1 -> 1 +ddmin236 min 1 12345678901 -> 1 +ddmin237 min 1234567896 1 -> 1 +ddmin238 min 1 1234567896 -> 1 + +-- from examples +ddmin280 min '3' '2' -> '2' +ddmin281 min '-10' '3' -> '-10' +ddmin282 min '1.0' '1' -> '1.0' +ddmin283 min '1' '1.0' -> '1.0' +ddmin284 min '7' 'NaN' -> '7' + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +ddmin401 min Inf 1.1 -> 1.1 +ddmin402 min 1.1 1 -> 1 +ddmin403 min 1 1.0 -> 1.0 +ddmin404 min 1.0 0.1 -> 0.1 +ddmin405 min 0.1 0.10 -> 0.10 +ddmin406 min 0.10 0.100 -> 0.100 +ddmin407 min 0.10 0 -> 0 +ddmin408 min 0 0.0 -> 0.0 +ddmin409 min 0.0 -0 -> -0 +ddmin410 min 0.0 -0.0 -> -0.0 +ddmin411 min 0.00 -0.0 -> -0.0 +ddmin412 min 0.0 -0.00 -> -0.00 +ddmin413 min 0 -0.0 -> -0.0 +ddmin414 min 0 -0 -> -0 +ddmin415 min -0.0 -0 -> -0 +ddmin416 min -0 -0.100 -> -0.100 +ddmin417 min -0.100 -0.10 -> -0.10 +ddmin418 min -0.10 -0.1 -> -0.1 +ddmin419 min -0.1 -1.0 -> -1.0 +ddmin420 min -1.0 -1 -> -1 +ddmin421 min -1 -1.1 -> -1.1 +ddmin423 min -1.1 -Inf -> -Infinity +-- same with operands reversed +ddmin431 min 1.1 Inf -> 1.1 +ddmin432 min 1 1.1 -> 1 +ddmin433 min 1.0 1 -> 1.0 +ddmin434 min 0.1 1.0 -> 0.1 +ddmin435 min 0.10 0.1 -> 0.10 +ddmin436 min 0.100 0.10 -> 0.100 +ddmin437 min 0 0.10 -> 0 +ddmin438 min 0.0 0 -> 0.0 +ddmin439 min -0 0.0 -> -0 +ddmin440 min -0.0 0.0 -> -0.0 +ddmin441 min -0.0 0.00 -> -0.0 +ddmin442 min -0.00 0.0 -> -0.00 +ddmin443 min -0.0 0 -> -0.0 +ddmin444 min -0 0 -> -0 +ddmin445 min -0 -0.0 -> -0 +ddmin446 min -0.100 -0 -> -0.100 +ddmin447 min -0.10 -0.100 -> -0.10 +ddmin448 min -0.1 -0.10 -> -0.1 +ddmin449 min -1.0 -0.1 -> -1.0 +ddmin450 min -1 -1.0 -> -1 +ddmin451 min -1.1 -1 -> -1.1 +ddmin453 min -Inf -1.1 -> -Infinity +-- largies +ddmin460 min 1000 1E+3 -> 1000 +ddmin461 min 1E+3 1000 -> 1000 +ddmin462 min 1000 -1E+3 -> -1E+3 +ddmin463 min 1E+3 -384 -> -384 +ddmin464 min -384 1E+3 -> -384 +ddmin465 min -1E+3 1000 -> -1E+3 +ddmin466 min -384 -1E+3 -> -1E+3 +ddmin467 min -1E+3 -384 -> -1E+3 + +-- misalignment traps for little-endian +ddmin471 min 1.0 0.1 -> 0.1 +ddmin472 min 0.1 1.0 -> 0.1 +ddmin473 min 10.0 0.1 -> 0.1 +ddmin474 min 0.1 10.0 -> 0.1 +ddmin475 min 100 1.0 -> 1.0 +ddmin476 min 1.0 100 -> 1.0 +ddmin477 min 1000 10.0 -> 10.0 +ddmin478 min 10.0 1000 -> 10.0 +ddmin479 min 10000 100.0 -> 100.0 +ddmin480 min 100.0 10000 -> 100.0 +ddmin481 min 100000 1000.0 -> 1000.0 +ddmin482 min 1000.0 100000 -> 1000.0 +ddmin483 min 1000000 10000.0 -> 10000.0 +ddmin484 min 10000.0 1000000 -> 10000.0 + +-- subnormals +ddmin510 min 1.00E-383 0 -> 0 +ddmin511 min 0.1E-383 0 -> 0 +ddmin512 min 0.10E-383 0 -> 0 +ddmin513 min 0.100E-383 0 -> 0 +ddmin514 min 0.01E-383 0 -> 0 +ddmin515 min 0.999E-383 0 -> 0 +ddmin516 min 0.099E-383 0 -> 0 +ddmin517 min 0.009E-383 0 -> 0 +ddmin518 min 0.001E-383 0 -> 0 +ddmin519 min 0.0009E-383 0 -> 0 +ddmin520 min 0.0001E-383 0 -> 0 + +ddmin530 min -1.00E-383 0 -> -1.00E-383 +ddmin531 min -0.1E-383 0 -> -1E-384 Subnormal +ddmin532 min -0.10E-383 0 -> -1.0E-384 Subnormal +ddmin533 min -0.100E-383 0 -> -1.00E-384 Subnormal +ddmin534 min -0.01E-383 0 -> -1E-385 Subnormal +ddmin535 min -0.999E-383 0 -> -9.99E-384 Subnormal +ddmin536 min -0.099E-383 0 -> -9.9E-385 Subnormal +ddmin537 min -0.009E-383 0 -> -9E-386 Subnormal +ddmin538 min -0.001E-383 0 -> -1E-386 Subnormal +ddmin539 min -0.0009E-383 0 -> -9E-387 Subnormal +ddmin540 min -0.0001E-383 0 -> -1E-387 Subnormal + + +-- Null tests +ddmin900 min 10 # -> NaN Invalid_operation +ddmin901 min # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddMinMag.decTest b/Lib/test/decimaltestdata/ddMinMag.decTest index 5537cc8..1012f1e 100644 --- a/Lib/test/decimaltestdata/ddMinMag.decTest +++ b/Lib/test/decimaltestdata/ddMinMag.decTest @@ -1,293 +1,293 @@ ------------------------------------------------------------------------- --- ddMinMag.decTest -- decDouble minnummag -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddmng001 minmag -2 -2 -> -2 -ddmng002 minmag -2 -1 -> -1 -ddmng003 minmag -2 0 -> 0 -ddmng004 minmag -2 1 -> 1 -ddmng005 minmag -2 2 -> -2 -ddmng006 minmag -1 -2 -> -1 -ddmng007 minmag -1 -1 -> -1 -ddmng008 minmag -1 0 -> 0 -ddmng009 minmag -1 1 -> -1 -ddmng010 minmag -1 2 -> -1 -ddmng011 minmag 0 -2 -> 0 -ddmng012 minmag 0 -1 -> 0 -ddmng013 minmag 0 0 -> 0 -ddmng014 minmag 0 1 -> 0 -ddmng015 minmag 0 2 -> 0 -ddmng016 minmag 1 -2 -> 1 -ddmng017 minmag 1 -1 -> -1 -ddmng018 minmag 1 0 -> 0 -ddmng019 minmag 1 1 -> 1 -ddmng020 minmag 1 2 -> 1 -ddmng021 minmag 2 -2 -> -2 -ddmng022 minmag 2 -1 -> -1 -ddmng023 minmag 2 0 -> 0 -ddmng025 minmag 2 1 -> 1 -ddmng026 minmag 2 2 -> 2 - --- extended zeros -ddmng030 minmag 0 0 -> 0 -ddmng031 minmag 0 -0 -> -0 -ddmng032 minmag 0 -0.0 -> -0.0 -ddmng033 minmag 0 0.0 -> 0.0 -ddmng034 minmag -0 0 -> -0 -ddmng035 minmag -0 -0 -> -0 -ddmng036 minmag -0 -0.0 -> -0 -ddmng037 minmag -0 0.0 -> -0 -ddmng038 minmag 0.0 0 -> 0.0 -ddmng039 minmag 0.0 -0 -> -0 -ddmng040 minmag 0.0 -0.0 -> -0.0 -ddmng041 minmag 0.0 0.0 -> 0.0 -ddmng042 minmag -0.0 0 -> -0.0 -ddmng043 minmag -0.0 -0 -> -0 -ddmng044 minmag -0.0 -0.0 -> -0.0 -ddmng045 minmag -0.0 0.0 -> -0.0 - -ddmng046 minmag 0E1 -0E1 -> -0E+1 -ddmng047 minmag -0E1 0E2 -> -0E+1 -ddmng048 minmag 0E2 0E1 -> 0E+1 -ddmng049 minmag 0E1 0E2 -> 0E+1 -ddmng050 minmag -0E3 -0E2 -> -0E+3 -ddmng051 minmag -0E2 -0E3 -> -0E+3 - --- Specials -ddmng090 minmag Inf -Inf -> -Infinity -ddmng091 minmag Inf -1000 -> -1000 -ddmng092 minmag Inf -1 -> -1 -ddmng093 minmag Inf -0 -> -0 -ddmng094 minmag Inf 0 -> 0 -ddmng095 minmag Inf 1 -> 1 -ddmng096 minmag Inf 1000 -> 1000 -ddmng097 minmag Inf Inf -> Infinity -ddmng098 minmag -1000 Inf -> -1000 -ddmng099 minmag -Inf Inf -> -Infinity -ddmng100 minmag -1 Inf -> -1 -ddmng101 minmag -0 Inf -> -0 -ddmng102 minmag 0 Inf -> 0 -ddmng103 minmag 1 Inf -> 1 -ddmng104 minmag 1000 Inf -> 1000 -ddmng105 minmag Inf Inf -> Infinity - -ddmng120 minmag -Inf -Inf -> -Infinity -ddmng121 minmag -Inf -1000 -> -1000 -ddmng122 minmag -Inf -1 -> -1 -ddmng123 minmag -Inf -0 -> -0 -ddmng124 minmag -Inf 0 -> 0 -ddmng125 minmag -Inf 1 -> 1 -ddmng126 minmag -Inf 1000 -> 1000 -ddmng127 minmag -Inf Inf -> -Infinity -ddmng128 minmag -Inf -Inf -> -Infinity -ddmng129 minmag -1000 -Inf -> -1000 -ddmng130 minmag -1 -Inf -> -1 -ddmng131 minmag -0 -Inf -> -0 -ddmng132 minmag 0 -Inf -> 0 -ddmng133 minmag 1 -Inf -> 1 -ddmng134 minmag 1000 -Inf -> 1000 -ddmng135 minmag Inf -Inf -> -Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -ddmng141 minmag NaN -Inf -> -Infinity -ddmng142 minmag NaN -1000 -> -1000 -ddmng143 minmag NaN -1 -> -1 -ddmng144 minmag NaN -0 -> -0 -ddmng145 minmag NaN 0 -> 0 -ddmng146 minmag NaN 1 -> 1 -ddmng147 minmag NaN 1000 -> 1000 -ddmng148 minmag NaN Inf -> Infinity -ddmng149 minmag NaN NaN -> NaN -ddmng150 minmag -Inf NaN -> -Infinity -ddmng151 minmag -1000 NaN -> -1000 -ddmng152 minmag -1 -NaN -> -1 -ddmng153 minmag -0 NaN -> -0 -ddmng154 minmag 0 -NaN -> 0 -ddmng155 minmag 1 NaN -> 1 -ddmng156 minmag 1000 NaN -> 1000 -ddmng157 minmag Inf NaN -> Infinity - -ddmng161 minmag sNaN -Inf -> NaN Invalid_operation -ddmng162 minmag sNaN -1000 -> NaN Invalid_operation -ddmng163 minmag sNaN -1 -> NaN Invalid_operation -ddmng164 minmag sNaN -0 -> NaN Invalid_operation -ddmng165 minmag -sNaN 0 -> -NaN Invalid_operation -ddmng166 minmag -sNaN 1 -> -NaN Invalid_operation -ddmng167 minmag sNaN 1000 -> NaN Invalid_operation -ddmng168 minmag sNaN NaN -> NaN Invalid_operation -ddmng169 minmag sNaN sNaN -> NaN Invalid_operation -ddmng170 minmag NaN sNaN -> NaN Invalid_operation -ddmng171 minmag -Inf sNaN -> NaN Invalid_operation -ddmng172 minmag -1000 sNaN -> NaN Invalid_operation -ddmng173 minmag -1 sNaN -> NaN Invalid_operation -ddmng174 minmag -0 sNaN -> NaN Invalid_operation -ddmng175 minmag 0 sNaN -> NaN Invalid_operation -ddmng176 minmag 1 sNaN -> NaN Invalid_operation -ddmng177 minmag 1000 sNaN -> NaN Invalid_operation -ddmng178 minmag Inf sNaN -> NaN Invalid_operation -ddmng179 minmag NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddmng181 minmag NaN9 -Inf -> -Infinity -ddmng182 minmag -NaN8 9990 -> 9990 -ddmng183 minmag NaN71 Inf -> Infinity - -ddmng184 minmag NaN1 NaN54 -> NaN1 -ddmng185 minmag NaN22 -NaN53 -> NaN22 -ddmng186 minmag -NaN3 NaN6 -> -NaN3 -ddmng187 minmag -NaN44 NaN7 -> -NaN44 - -ddmng188 minmag -Inf NaN41 -> -Infinity -ddmng189 minmag -9999 -NaN33 -> -9999 -ddmng190 minmag Inf NaN2 -> Infinity - -ddmng191 minmag sNaN99 -Inf -> NaN99 Invalid_operation -ddmng192 minmag sNaN98 -11 -> NaN98 Invalid_operation -ddmng193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation -ddmng194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation -ddmng195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation -ddmng196 minmag -Inf sNaN92 -> NaN92 Invalid_operation -ddmng197 minmag 088 sNaN91 -> NaN91 Invalid_operation -ddmng198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation -ddmng199 minmag NaN sNaN86 -> NaN86 Invalid_operation - --- old rounding checks -ddmng221 minmag -12345678000 1 -> 1 -ddmng222 minmag 1 -12345678000 -> 1 -ddmng223 minmag -1234567800 1 -> 1 -ddmng224 minmag 1 -1234567800 -> 1 -ddmng225 minmag -1234567890 1 -> 1 -ddmng226 minmag 1 -1234567890 -> 1 -ddmng227 minmag -1234567891 1 -> 1 -ddmng228 minmag 1 -1234567891 -> 1 -ddmng229 minmag -12345678901 1 -> 1 -ddmng230 minmag 1 -12345678901 -> 1 -ddmng231 minmag -1234567896 1 -> 1 -ddmng232 minmag 1 -1234567896 -> 1 -ddmng233 minmag 1234567891 1 -> 1 -ddmng234 minmag 1 1234567891 -> 1 -ddmng235 minmag 12345678901 1 -> 1 -ddmng236 minmag 1 12345678901 -> 1 -ddmng237 minmag 1234567896 1 -> 1 -ddmng238 minmag 1 1234567896 -> 1 - --- from examples -ddmng280 minmag '3' '2' -> '2' -ddmng281 minmag '-10' '3' -> '3' -ddmng282 minmag '1.0' '1' -> '1.0' -ddmng283 minmag '1' '1.0' -> '1.0' -ddmng284 minmag '7' 'NaN' -> '7' - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -ddmng401 minmag Inf 1.1 -> 1.1 -ddmng402 minmag 1.1 1 -> 1 -ddmng403 minmag 1 1.0 -> 1.0 -ddmng404 minmag 1.0 0.1 -> 0.1 -ddmng405 minmag 0.1 0.10 -> 0.10 -ddmng406 minmag 0.10 0.100 -> 0.100 -ddmng407 minmag 0.10 0 -> 0 -ddmng408 minmag 0 0.0 -> 0.0 -ddmng409 minmag 0.0 -0 -> -0 -ddmng410 minmag 0.0 -0.0 -> -0.0 -ddmng411 minmag 0.00 -0.0 -> -0.0 -ddmng412 minmag 0.0 -0.00 -> -0.00 -ddmng413 minmag 0 -0.0 -> -0.0 -ddmng414 minmag 0 -0 -> -0 -ddmng415 minmag -0.0 -0 -> -0 -ddmng416 minmag -0 -0.100 -> -0 -ddmng417 minmag -0.100 -0.10 -> -0.10 -ddmng418 minmag -0.10 -0.1 -> -0.1 -ddmng419 minmag -0.1 -1.0 -> -0.1 -ddmng420 minmag -1.0 -1 -> -1 -ddmng421 minmag -1 -1.1 -> -1 -ddmng423 minmag -1.1 -Inf -> -1.1 --- same with operands reversed -ddmng431 minmag 1.1 Inf -> 1.1 -ddmng432 minmag 1 1.1 -> 1 -ddmng433 minmag 1.0 1 -> 1.0 -ddmng434 minmag 0.1 1.0 -> 0.1 -ddmng435 minmag 0.10 0.1 -> 0.10 -ddmng436 minmag 0.100 0.10 -> 0.100 -ddmng437 minmag 0 0.10 -> 0 -ddmng438 minmag 0.0 0 -> 0.0 -ddmng439 minmag -0 0.0 -> -0 -ddmng440 minmag -0.0 0.0 -> -0.0 -ddmng441 minmag -0.0 0.00 -> -0.0 -ddmng442 minmag -0.00 0.0 -> -0.00 -ddmng443 minmag -0.0 0 -> -0.0 -ddmng444 minmag -0 0 -> -0 -ddmng445 minmag -0 -0.0 -> -0 -ddmng446 minmag -0.100 -0 -> -0 -ddmng447 minmag -0.10 -0.100 -> -0.10 -ddmng448 minmag -0.1 -0.10 -> -0.1 -ddmng449 minmag -1.0 -0.1 -> -0.1 -ddmng450 minmag -1 -1.0 -> -1 -ddmng451 minmag -1.1 -1 -> -1 -ddmng453 minmag -Inf -1.1 -> -1.1 --- largies -ddmng460 minmag 1000 1E+3 -> 1000 -ddmng461 minmag 1E+3 1000 -> 1000 -ddmng462 minmag 1000 -1E+3 -> -1E+3 -ddmng463 minmag 1E+3 -384 -> -384 -ddmng464 minmag -384 1E+3 -> -384 -ddmng465 minmag -1E+3 1000 -> -1E+3 -ddmng466 minmag -384 -1E+3 -> -384 -ddmng467 minmag -1E+3 -384 -> -384 - --- subnormals -ddmng510 minmag 1.00E-383 0 -> 0 -ddmng511 minmag 0.1E-383 0 -> 0 -ddmng512 minmag 0.10E-383 0 -> 0 -ddmng513 minmag 0.100E-383 0 -> 0 -ddmng514 minmag 0.01E-383 0 -> 0 -ddmng515 minmag 0.999E-383 0 -> 0 -ddmng516 minmag 0.099E-383 0 -> 0 -ddmng517 minmag 0.009E-383 0 -> 0 -ddmng518 minmag 0.001E-383 0 -> 0 -ddmng519 minmag 0.0009E-383 0 -> 0 -ddmng520 minmag 0.0001E-383 0 -> 0 - -ddmng530 minmag -1.00E-383 0 -> 0 -ddmng531 minmag -0.1E-383 0 -> 0 -ddmng532 minmag -0.10E-383 0 -> 0 -ddmng533 minmag -0.100E-383 0 -> 0 -ddmng534 minmag -0.01E-383 0 -> 0 -ddmng535 minmag -0.999E-383 0 -> 0 -ddmng536 minmag -0.099E-383 0 -> 0 -ddmng537 minmag -0.009E-383 0 -> 0 -ddmng538 minmag -0.001E-383 0 -> 0 -ddmng539 minmag -0.0009E-383 0 -> 0 -ddmng540 minmag -0.0001E-383 0 -> 0 - - --- Null tests -ddmng900 minmag 10 # -> NaN Invalid_operation -ddmng901 minmag # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddMinMag.decTest -- decDouble minnummag -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddmng001 minmag -2 -2 -> -2 +ddmng002 minmag -2 -1 -> -1 +ddmng003 minmag -2 0 -> 0 +ddmng004 minmag -2 1 -> 1 +ddmng005 minmag -2 2 -> -2 +ddmng006 minmag -1 -2 -> -1 +ddmng007 minmag -1 -1 -> -1 +ddmng008 minmag -1 0 -> 0 +ddmng009 minmag -1 1 -> -1 +ddmng010 minmag -1 2 -> -1 +ddmng011 minmag 0 -2 -> 0 +ddmng012 minmag 0 -1 -> 0 +ddmng013 minmag 0 0 -> 0 +ddmng014 minmag 0 1 -> 0 +ddmng015 minmag 0 2 -> 0 +ddmng016 minmag 1 -2 -> 1 +ddmng017 minmag 1 -1 -> -1 +ddmng018 minmag 1 0 -> 0 +ddmng019 minmag 1 1 -> 1 +ddmng020 minmag 1 2 -> 1 +ddmng021 minmag 2 -2 -> -2 +ddmng022 minmag 2 -1 -> -1 +ddmng023 minmag 2 0 -> 0 +ddmng025 minmag 2 1 -> 1 +ddmng026 minmag 2 2 -> 2 + +-- extended zeros +ddmng030 minmag 0 0 -> 0 +ddmng031 minmag 0 -0 -> -0 +ddmng032 minmag 0 -0.0 -> -0.0 +ddmng033 minmag 0 0.0 -> 0.0 +ddmng034 minmag -0 0 -> -0 +ddmng035 minmag -0 -0 -> -0 +ddmng036 minmag -0 -0.0 -> -0 +ddmng037 minmag -0 0.0 -> -0 +ddmng038 minmag 0.0 0 -> 0.0 +ddmng039 minmag 0.0 -0 -> -0 +ddmng040 minmag 0.0 -0.0 -> -0.0 +ddmng041 minmag 0.0 0.0 -> 0.0 +ddmng042 minmag -0.0 0 -> -0.0 +ddmng043 minmag -0.0 -0 -> -0 +ddmng044 minmag -0.0 -0.0 -> -0.0 +ddmng045 minmag -0.0 0.0 -> -0.0 + +ddmng046 minmag 0E1 -0E1 -> -0E+1 +ddmng047 minmag -0E1 0E2 -> -0E+1 +ddmng048 minmag 0E2 0E1 -> 0E+1 +ddmng049 minmag 0E1 0E2 -> 0E+1 +ddmng050 minmag -0E3 -0E2 -> -0E+3 +ddmng051 minmag -0E2 -0E3 -> -0E+3 + +-- Specials +ddmng090 minmag Inf -Inf -> -Infinity +ddmng091 minmag Inf -1000 -> -1000 +ddmng092 minmag Inf -1 -> -1 +ddmng093 minmag Inf -0 -> -0 +ddmng094 minmag Inf 0 -> 0 +ddmng095 minmag Inf 1 -> 1 +ddmng096 minmag Inf 1000 -> 1000 +ddmng097 minmag Inf Inf -> Infinity +ddmng098 minmag -1000 Inf -> -1000 +ddmng099 minmag -Inf Inf -> -Infinity +ddmng100 minmag -1 Inf -> -1 +ddmng101 minmag -0 Inf -> -0 +ddmng102 minmag 0 Inf -> 0 +ddmng103 minmag 1 Inf -> 1 +ddmng104 minmag 1000 Inf -> 1000 +ddmng105 minmag Inf Inf -> Infinity + +ddmng120 minmag -Inf -Inf -> -Infinity +ddmng121 minmag -Inf -1000 -> -1000 +ddmng122 minmag -Inf -1 -> -1 +ddmng123 minmag -Inf -0 -> -0 +ddmng124 minmag -Inf 0 -> 0 +ddmng125 minmag -Inf 1 -> 1 +ddmng126 minmag -Inf 1000 -> 1000 +ddmng127 minmag -Inf Inf -> -Infinity +ddmng128 minmag -Inf -Inf -> -Infinity +ddmng129 minmag -1000 -Inf -> -1000 +ddmng130 minmag -1 -Inf -> -1 +ddmng131 minmag -0 -Inf -> -0 +ddmng132 minmag 0 -Inf -> 0 +ddmng133 minmag 1 -Inf -> 1 +ddmng134 minmag 1000 -Inf -> 1000 +ddmng135 minmag Inf -Inf -> -Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +ddmng141 minmag NaN -Inf -> -Infinity +ddmng142 minmag NaN -1000 -> -1000 +ddmng143 minmag NaN -1 -> -1 +ddmng144 minmag NaN -0 -> -0 +ddmng145 minmag NaN 0 -> 0 +ddmng146 minmag NaN 1 -> 1 +ddmng147 minmag NaN 1000 -> 1000 +ddmng148 minmag NaN Inf -> Infinity +ddmng149 minmag NaN NaN -> NaN +ddmng150 minmag -Inf NaN -> -Infinity +ddmng151 minmag -1000 NaN -> -1000 +ddmng152 minmag -1 -NaN -> -1 +ddmng153 minmag -0 NaN -> -0 +ddmng154 minmag 0 -NaN -> 0 +ddmng155 minmag 1 NaN -> 1 +ddmng156 minmag 1000 NaN -> 1000 +ddmng157 minmag Inf NaN -> Infinity + +ddmng161 minmag sNaN -Inf -> NaN Invalid_operation +ddmng162 minmag sNaN -1000 -> NaN Invalid_operation +ddmng163 minmag sNaN -1 -> NaN Invalid_operation +ddmng164 minmag sNaN -0 -> NaN Invalid_operation +ddmng165 minmag -sNaN 0 -> -NaN Invalid_operation +ddmng166 minmag -sNaN 1 -> -NaN Invalid_operation +ddmng167 minmag sNaN 1000 -> NaN Invalid_operation +ddmng168 minmag sNaN NaN -> NaN Invalid_operation +ddmng169 minmag sNaN sNaN -> NaN Invalid_operation +ddmng170 minmag NaN sNaN -> NaN Invalid_operation +ddmng171 minmag -Inf sNaN -> NaN Invalid_operation +ddmng172 minmag -1000 sNaN -> NaN Invalid_operation +ddmng173 minmag -1 sNaN -> NaN Invalid_operation +ddmng174 minmag -0 sNaN -> NaN Invalid_operation +ddmng175 minmag 0 sNaN -> NaN Invalid_operation +ddmng176 minmag 1 sNaN -> NaN Invalid_operation +ddmng177 minmag 1000 sNaN -> NaN Invalid_operation +ddmng178 minmag Inf sNaN -> NaN Invalid_operation +ddmng179 minmag NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddmng181 minmag NaN9 -Inf -> -Infinity +ddmng182 minmag -NaN8 9990 -> 9990 +ddmng183 minmag NaN71 Inf -> Infinity + +ddmng184 minmag NaN1 NaN54 -> NaN1 +ddmng185 minmag NaN22 -NaN53 -> NaN22 +ddmng186 minmag -NaN3 NaN6 -> -NaN3 +ddmng187 minmag -NaN44 NaN7 -> -NaN44 + +ddmng188 minmag -Inf NaN41 -> -Infinity +ddmng189 minmag -9999 -NaN33 -> -9999 +ddmng190 minmag Inf NaN2 -> Infinity + +ddmng191 minmag sNaN99 -Inf -> NaN99 Invalid_operation +ddmng192 minmag sNaN98 -11 -> NaN98 Invalid_operation +ddmng193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation +ddmng194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation +ddmng195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation +ddmng196 minmag -Inf sNaN92 -> NaN92 Invalid_operation +ddmng197 minmag 088 sNaN91 -> NaN91 Invalid_operation +ddmng198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation +ddmng199 minmag NaN sNaN86 -> NaN86 Invalid_operation + +-- old rounding checks +ddmng221 minmag -12345678000 1 -> 1 +ddmng222 minmag 1 -12345678000 -> 1 +ddmng223 minmag -1234567800 1 -> 1 +ddmng224 minmag 1 -1234567800 -> 1 +ddmng225 minmag -1234567890 1 -> 1 +ddmng226 minmag 1 -1234567890 -> 1 +ddmng227 minmag -1234567891 1 -> 1 +ddmng228 minmag 1 -1234567891 -> 1 +ddmng229 minmag -12345678901 1 -> 1 +ddmng230 minmag 1 -12345678901 -> 1 +ddmng231 minmag -1234567896 1 -> 1 +ddmng232 minmag 1 -1234567896 -> 1 +ddmng233 minmag 1234567891 1 -> 1 +ddmng234 minmag 1 1234567891 -> 1 +ddmng235 minmag 12345678901 1 -> 1 +ddmng236 minmag 1 12345678901 -> 1 +ddmng237 minmag 1234567896 1 -> 1 +ddmng238 minmag 1 1234567896 -> 1 + +-- from examples +ddmng280 minmag '3' '2' -> '2' +ddmng281 minmag '-10' '3' -> '3' +ddmng282 minmag '1.0' '1' -> '1.0' +ddmng283 minmag '1' '1.0' -> '1.0' +ddmng284 minmag '7' 'NaN' -> '7' + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +ddmng401 minmag Inf 1.1 -> 1.1 +ddmng402 minmag 1.1 1 -> 1 +ddmng403 minmag 1 1.0 -> 1.0 +ddmng404 minmag 1.0 0.1 -> 0.1 +ddmng405 minmag 0.1 0.10 -> 0.10 +ddmng406 minmag 0.10 0.100 -> 0.100 +ddmng407 minmag 0.10 0 -> 0 +ddmng408 minmag 0 0.0 -> 0.0 +ddmng409 minmag 0.0 -0 -> -0 +ddmng410 minmag 0.0 -0.0 -> -0.0 +ddmng411 minmag 0.00 -0.0 -> -0.0 +ddmng412 minmag 0.0 -0.00 -> -0.00 +ddmng413 minmag 0 -0.0 -> -0.0 +ddmng414 minmag 0 -0 -> -0 +ddmng415 minmag -0.0 -0 -> -0 +ddmng416 minmag -0 -0.100 -> -0 +ddmng417 minmag -0.100 -0.10 -> -0.10 +ddmng418 minmag -0.10 -0.1 -> -0.1 +ddmng419 minmag -0.1 -1.0 -> -0.1 +ddmng420 minmag -1.0 -1 -> -1 +ddmng421 minmag -1 -1.1 -> -1 +ddmng423 minmag -1.1 -Inf -> -1.1 +-- same with operands reversed +ddmng431 minmag 1.1 Inf -> 1.1 +ddmng432 minmag 1 1.1 -> 1 +ddmng433 minmag 1.0 1 -> 1.0 +ddmng434 minmag 0.1 1.0 -> 0.1 +ddmng435 minmag 0.10 0.1 -> 0.10 +ddmng436 minmag 0.100 0.10 -> 0.100 +ddmng437 minmag 0 0.10 -> 0 +ddmng438 minmag 0.0 0 -> 0.0 +ddmng439 minmag -0 0.0 -> -0 +ddmng440 minmag -0.0 0.0 -> -0.0 +ddmng441 minmag -0.0 0.00 -> -0.0 +ddmng442 minmag -0.00 0.0 -> -0.00 +ddmng443 minmag -0.0 0 -> -0.0 +ddmng444 minmag -0 0 -> -0 +ddmng445 minmag -0 -0.0 -> -0 +ddmng446 minmag -0.100 -0 -> -0 +ddmng447 minmag -0.10 -0.100 -> -0.10 +ddmng448 minmag -0.1 -0.10 -> -0.1 +ddmng449 minmag -1.0 -0.1 -> -0.1 +ddmng450 minmag -1 -1.0 -> -1 +ddmng451 minmag -1.1 -1 -> -1 +ddmng453 minmag -Inf -1.1 -> -1.1 +-- largies +ddmng460 minmag 1000 1E+3 -> 1000 +ddmng461 minmag 1E+3 1000 -> 1000 +ddmng462 minmag 1000 -1E+3 -> -1E+3 +ddmng463 minmag 1E+3 -384 -> -384 +ddmng464 minmag -384 1E+3 -> -384 +ddmng465 minmag -1E+3 1000 -> -1E+3 +ddmng466 minmag -384 -1E+3 -> -384 +ddmng467 minmag -1E+3 -384 -> -384 + +-- subnormals +ddmng510 minmag 1.00E-383 0 -> 0 +ddmng511 minmag 0.1E-383 0 -> 0 +ddmng512 minmag 0.10E-383 0 -> 0 +ddmng513 minmag 0.100E-383 0 -> 0 +ddmng514 minmag 0.01E-383 0 -> 0 +ddmng515 minmag 0.999E-383 0 -> 0 +ddmng516 minmag 0.099E-383 0 -> 0 +ddmng517 minmag 0.009E-383 0 -> 0 +ddmng518 minmag 0.001E-383 0 -> 0 +ddmng519 minmag 0.0009E-383 0 -> 0 +ddmng520 minmag 0.0001E-383 0 -> 0 + +ddmng530 minmag -1.00E-383 0 -> 0 +ddmng531 minmag -0.1E-383 0 -> 0 +ddmng532 minmag -0.10E-383 0 -> 0 +ddmng533 minmag -0.100E-383 0 -> 0 +ddmng534 minmag -0.01E-383 0 -> 0 +ddmng535 minmag -0.999E-383 0 -> 0 +ddmng536 minmag -0.099E-383 0 -> 0 +ddmng537 minmag -0.009E-383 0 -> 0 +ddmng538 minmag -0.001E-383 0 -> 0 +ddmng539 minmag -0.0009E-383 0 -> 0 +ddmng540 minmag -0.0001E-383 0 -> 0 + + +-- Null tests +ddmng900 minmag 10 # -> NaN Invalid_operation +ddmng901 minmag # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddMinus.decTest b/Lib/test/decimaltestdata/ddMinus.decTest index 2705e79..b7ffff7 100644 --- a/Lib/test/decimaltestdata/ddMinus.decTest +++ b/Lib/test/decimaltestdata/ddMinus.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- ddMinus.decTest -- decDouble 0-x -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check -ddmns001 minus +7.50 -> -7.50 - --- Infinities -ddmns011 minus Infinity -> -Infinity -ddmns012 minus -Infinity -> Infinity - --- NaNs, 0 payload -ddmns021 minus NaN -> NaN -ddmns022 minus -NaN -> -NaN -ddmns023 minus sNaN -> NaN Invalid_operation -ddmns024 minus -sNaN -> -NaN Invalid_operation - --- NaNs, non-0 payload -ddmns031 minus NaN13 -> NaN13 -ddmns032 minus -NaN13 -> -NaN13 -ddmns033 minus sNaN13 -> NaN13 Invalid_operation -ddmns034 minus -sNaN13 -> -NaN13 Invalid_operation -ddmns035 minus NaN70 -> NaN70 -ddmns036 minus -NaN70 -> -NaN70 -ddmns037 minus sNaN101 -> NaN101 Invalid_operation -ddmns038 minus -sNaN101 -> -NaN101 Invalid_operation - --- finites -ddmns101 minus 7 -> -7 -ddmns102 minus -7 -> 7 -ddmns103 minus 75 -> -75 -ddmns104 minus -75 -> 75 -ddmns105 minus 7.50 -> -7.50 -ddmns106 minus -7.50 -> 7.50 -ddmns107 minus 7.500 -> -7.500 -ddmns108 minus -7.500 -> 7.500 - --- zeros -ddmns111 minus 0 -> 0 -ddmns112 minus -0 -> 0 -ddmns113 minus 0E+4 -> 0E+4 -ddmns114 minus -0E+4 -> 0E+4 -ddmns115 minus 0.0000 -> 0.0000 -ddmns116 minus -0.0000 -> 0.0000 -ddmns117 minus 0E-141 -> 0E-141 -ddmns118 minus -0E-141 -> 0E-141 - --- full coefficients, alternating bits -ddmns121 minus 2682682682682682 -> -2682682682682682 -ddmns122 minus -2682682682682682 -> 2682682682682682 -ddmns123 minus 1341341341341341 -> -1341341341341341 -ddmns124 minus -1341341341341341 -> 1341341341341341 - --- Nmax, Nmin, Ntiny -ddmns131 minus 9.999999999999999E+384 -> -9.999999999999999E+384 -ddmns132 minus 1E-383 -> -1E-383 -ddmns133 minus 1.000000000000000E-383 -> -1.000000000000000E-383 -ddmns134 minus 1E-398 -> -1E-398 Subnormal - -ddmns135 minus -1E-398 -> 1E-398 Subnormal -ddmns136 minus -1.000000000000000E-383 -> 1.000000000000000E-383 -ddmns137 minus -1E-383 -> 1E-383 -ddmns138 minus -9.999999999999999E+384 -> 9.999999999999999E+384 +------------------------------------------------------------------------ +-- ddMinus.decTest -- decDouble 0-x -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check +ddmns001 minus +7.50 -> -7.50 + +-- Infinities +ddmns011 minus Infinity -> -Infinity +ddmns012 minus -Infinity -> Infinity + +-- NaNs, 0 payload +ddmns021 minus NaN -> NaN +ddmns022 minus -NaN -> -NaN +ddmns023 minus sNaN -> NaN Invalid_operation +ddmns024 minus -sNaN -> -NaN Invalid_operation + +-- NaNs, non-0 payload +ddmns031 minus NaN13 -> NaN13 +ddmns032 minus -NaN13 -> -NaN13 +ddmns033 minus sNaN13 -> NaN13 Invalid_operation +ddmns034 minus -sNaN13 -> -NaN13 Invalid_operation +ddmns035 minus NaN70 -> NaN70 +ddmns036 minus -NaN70 -> -NaN70 +ddmns037 minus sNaN101 -> NaN101 Invalid_operation +ddmns038 minus -sNaN101 -> -NaN101 Invalid_operation + +-- finites +ddmns101 minus 7 -> -7 +ddmns102 minus -7 -> 7 +ddmns103 minus 75 -> -75 +ddmns104 minus -75 -> 75 +ddmns105 minus 7.50 -> -7.50 +ddmns106 minus -7.50 -> 7.50 +ddmns107 minus 7.500 -> -7.500 +ddmns108 minus -7.500 -> 7.500 + +-- zeros +ddmns111 minus 0 -> 0 +ddmns112 minus -0 -> 0 +ddmns113 minus 0E+4 -> 0E+4 +ddmns114 minus -0E+4 -> 0E+4 +ddmns115 minus 0.0000 -> 0.0000 +ddmns116 minus -0.0000 -> 0.0000 +ddmns117 minus 0E-141 -> 0E-141 +ddmns118 minus -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +ddmns121 minus 2682682682682682 -> -2682682682682682 +ddmns122 minus -2682682682682682 -> 2682682682682682 +ddmns123 minus 1341341341341341 -> -1341341341341341 +ddmns124 minus -1341341341341341 -> 1341341341341341 + +-- Nmax, Nmin, Ntiny +ddmns131 minus 9.999999999999999E+384 -> -9.999999999999999E+384 +ddmns132 minus 1E-383 -> -1E-383 +ddmns133 minus 1.000000000000000E-383 -> -1.000000000000000E-383 +ddmns134 minus 1E-398 -> -1E-398 Subnormal + +ddmns135 minus -1E-398 -> 1E-398 Subnormal +ddmns136 minus -1.000000000000000E-383 -> 1.000000000000000E-383 +ddmns137 minus -1E-383 -> 1E-383 +ddmns138 minus -9.999999999999999E+384 -> 9.999999999999999E+384 diff --git a/Lib/test/decimaltestdata/ddMultiply.decTest b/Lib/test/decimaltestdata/ddMultiply.decTest index 45a381d..5873f80 100644 --- a/Lib/test/decimaltestdata/ddMultiply.decTest +++ b/Lib/test/decimaltestdata/ddMultiply.decTest @@ -1,553 +1,553 @@ ------------------------------------------------------------------------- --- ddMultiply.decTest -- decDouble multiplication -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests are for decDoubles only; all arguments are --- representable in a decDouble -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddmul000 multiply 2 2 -> 4 -ddmul001 multiply 2 3 -> 6 -ddmul002 multiply 5 1 -> 5 -ddmul003 multiply 5 2 -> 10 -ddmul004 multiply 1.20 2 -> 2.40 -ddmul005 multiply 1.20 0 -> 0.00 -ddmul006 multiply 1.20 -2 -> -2.40 -ddmul007 multiply -1.20 2 -> -2.40 -ddmul008 multiply -1.20 0 -> -0.00 -ddmul009 multiply -1.20 -2 -> 2.40 -ddmul010 multiply 5.09 7.1 -> 36.139 -ddmul011 multiply 2.5 4 -> 10.0 -ddmul012 multiply 2.50 4 -> 10.00 -ddmul013 multiply 1.23456789 1.00000000 -> 1.234567890000000 Rounded -ddmul015 multiply 2.50 4 -> 10.00 -ddmul016 multiply 9.999999999 9.999999999 -> 99.99999998000000 Inexact Rounded -ddmul017 multiply 9.999999999 -9.999999999 -> -99.99999998000000 Inexact Rounded -ddmul018 multiply -9.999999999 9.999999999 -> -99.99999998000000 Inexact Rounded -ddmul019 multiply -9.999999999 -9.999999999 -> 99.99999998000000 Inexact Rounded - --- zeros, etc. -ddmul021 multiply 0 0 -> 0 -ddmul022 multiply 0 -0 -> -0 -ddmul023 multiply -0 0 -> -0 -ddmul024 multiply -0 -0 -> 0 -ddmul025 multiply -0.0 -0.0 -> 0.00 -ddmul026 multiply -0.0 -0.0 -> 0.00 -ddmul027 multiply -0.0 -0.0 -> 0.00 -ddmul028 multiply -0.0 -0.0 -> 0.00 -ddmul030 multiply 5.00 1E-3 -> 0.00500 -ddmul031 multiply 00.00 0.000 -> 0.00000 -ddmul032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0 -ddmul033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0 -ddmul034 multiply -5.00 1E-3 -> -0.00500 -ddmul035 multiply -00.00 0.000 -> -0.00000 -ddmul036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0 -ddmul037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0 -ddmul038 multiply 5.00 -1E-3 -> -0.00500 -ddmul039 multiply 00.00 -0.000 -> -0.00000 -ddmul040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0 -ddmul041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0 -ddmul042 multiply -5.00 -1E-3 -> 0.00500 -ddmul043 multiply -00.00 -0.000 -> 0.00000 -ddmul044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0 -ddmul045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0 - --- examples from decarith -ddmul050 multiply 1.20 3 -> 3.60 -ddmul051 multiply 7 3 -> 21 -ddmul052 multiply 0.9 0.8 -> 0.72 -ddmul053 multiply 0.9 -0 -> -0.0 -ddmul054 multiply 654321 654321 -> 428135971041 - -ddmul060 multiply 123.45 1e7 -> 1.2345E+9 -ddmul061 multiply 123.45 1e8 -> 1.2345E+10 -ddmul062 multiply 123.45 1e+9 -> 1.2345E+11 -ddmul063 multiply 123.45 1e10 -> 1.2345E+12 -ddmul064 multiply 123.45 1e11 -> 1.2345E+13 -ddmul065 multiply 123.45 1e12 -> 1.2345E+14 -ddmul066 multiply 123.45 1e13 -> 1.2345E+15 - - --- test some intermediate lengths --- 1234567890123456 -ddmul080 multiply 0.1 1230123456456789 -> 123012345645678.9 -ddmul084 multiply 0.1 1230123456456789 -> 123012345645678.9 -ddmul090 multiply 1230123456456789 0.1 -> 123012345645678.9 -ddmul094 multiply 1230123456456789 0.1 -> 123012345645678.9 - --- test some more edge cases and carries -ddmul101 multiply 9 9 -> 81 -ddmul102 multiply 9 90 -> 810 -ddmul103 multiply 9 900 -> 8100 -ddmul104 multiply 9 9000 -> 81000 -ddmul105 multiply 9 90000 -> 810000 -ddmul106 multiply 9 900000 -> 8100000 -ddmul107 multiply 9 9000000 -> 81000000 -ddmul108 multiply 9 90000000 -> 810000000 -ddmul109 multiply 9 900000000 -> 8100000000 -ddmul110 multiply 9 9000000000 -> 81000000000 -ddmul111 multiply 9 90000000000 -> 810000000000 -ddmul112 multiply 9 900000000000 -> 8100000000000 -ddmul113 multiply 9 9000000000000 -> 81000000000000 -ddmul114 multiply 9 90000000000000 -> 810000000000000 -ddmul115 multiply 9 900000000000000 -> 8100000000000000 ---ddmul116 multiply 9 9000000000000000 -> 81000000000000000 ---ddmul117 multiply 9 90000000000000000 -> 810000000000000000 ---ddmul118 multiply 9 900000000000000000 -> 8100000000000000000 ---ddmul119 multiply 9 9000000000000000000 -> 81000000000000000000 ---ddmul120 multiply 9 90000000000000000000 -> 810000000000000000000 ---ddmul121 multiply 9 900000000000000000000 -> 8100000000000000000000 ---ddmul122 multiply 9 9000000000000000000000 -> 81000000000000000000000 ---ddmul123 multiply 9 90000000000000000000000 -> 810000000000000000000000 --- test some more edge cases without carries -ddmul131 multiply 3 3 -> 9 -ddmul132 multiply 3 30 -> 90 -ddmul133 multiply 3 300 -> 900 -ddmul134 multiply 3 3000 -> 9000 -ddmul135 multiply 3 30000 -> 90000 -ddmul136 multiply 3 300000 -> 900000 -ddmul137 multiply 3 3000000 -> 9000000 -ddmul138 multiply 3 30000000 -> 90000000 -ddmul139 multiply 3 300000000 -> 900000000 -ddmul140 multiply 3 3000000000 -> 9000000000 -ddmul141 multiply 3 30000000000 -> 90000000000 -ddmul142 multiply 3 300000000000 -> 900000000000 -ddmul143 multiply 3 3000000000000 -> 9000000000000 -ddmul144 multiply 3 30000000000000 -> 90000000000000 -ddmul145 multiply 3 300000000000000 -> 900000000000000 - --- test some edge cases with exact rounding -ddmul301 multiply 9 9 -> 81 -ddmul302 multiply 9 90 -> 810 -ddmul303 multiply 9 900 -> 8100 -ddmul304 multiply 9 9000 -> 81000 -ddmul305 multiply 9 90000 -> 810000 -ddmul306 multiply 9 900000 -> 8100000 -ddmul307 multiply 9 9000000 -> 81000000 -ddmul308 multiply 9 90000000 -> 810000000 -ddmul309 multiply 9 900000000 -> 8100000000 -ddmul310 multiply 9 9000000000 -> 81000000000 -ddmul311 multiply 9 90000000000 -> 810000000000 -ddmul312 multiply 9 900000000000 -> 8100000000000 -ddmul313 multiply 9 9000000000000 -> 81000000000000 -ddmul314 multiply 9 90000000000000 -> 810000000000000 -ddmul315 multiply 9 900000000000000 -> 8100000000000000 -ddmul316 multiply 9 9000000000000000 -> 8.100000000000000E+16 Rounded -ddmul317 multiply 90 9000000000000000 -> 8.100000000000000E+17 Rounded -ddmul318 multiply 900 9000000000000000 -> 8.100000000000000E+18 Rounded -ddmul319 multiply 9000 9000000000000000 -> 8.100000000000000E+19 Rounded -ddmul320 multiply 90000 9000000000000000 -> 8.100000000000000E+20 Rounded -ddmul321 multiply 900000 9000000000000000 -> 8.100000000000000E+21 Rounded -ddmul322 multiply 9000000 9000000000000000 -> 8.100000000000000E+22 Rounded -ddmul323 multiply 90000000 9000000000000000 -> 8.100000000000000E+23 Rounded - --- tryzeros cases -ddmul504 multiply 0E-260 1000E-260 -> 0E-398 Clamped -ddmul505 multiply 100E+260 0E+260 -> 0E+369 Clamped --- 65K-1 case -ddmul506 multiply 77.1 850 -> 65535.0 - --- mixed with zeros -ddmul541 multiply 0 -1 -> -0 -ddmul542 multiply -0 -1 -> 0 -ddmul543 multiply 0 1 -> 0 -ddmul544 multiply -0 1 -> -0 -ddmul545 multiply -1 0 -> -0 -ddmul546 multiply -1 -0 -> 0 -ddmul547 multiply 1 0 -> 0 -ddmul548 multiply 1 -0 -> -0 - -ddmul551 multiply 0.0 -1 -> -0.0 -ddmul552 multiply -0.0 -1 -> 0.0 -ddmul553 multiply 0.0 1 -> 0.0 -ddmul554 multiply -0.0 1 -> -0.0 -ddmul555 multiply -1.0 0 -> -0.0 -ddmul556 multiply -1.0 -0 -> 0.0 -ddmul557 multiply 1.0 0 -> 0.0 -ddmul558 multiply 1.0 -0 -> -0.0 - -ddmul561 multiply 0 -1.0 -> -0.0 -ddmul562 multiply -0 -1.0 -> 0.0 -ddmul563 multiply 0 1.0 -> 0.0 -ddmul564 multiply -0 1.0 -> -0.0 -ddmul565 multiply -1 0.0 -> -0.0 -ddmul566 multiply -1 -0.0 -> 0.0 -ddmul567 multiply 1 0.0 -> 0.0 -ddmul568 multiply 1 -0.0 -> -0.0 - -ddmul571 multiply 0.0 -1.0 -> -0.00 -ddmul572 multiply -0.0 -1.0 -> 0.00 -ddmul573 multiply 0.0 1.0 -> 0.00 -ddmul574 multiply -0.0 1.0 -> -0.00 -ddmul575 multiply -1.0 0.0 -> -0.00 -ddmul576 multiply -1.0 -0.0 -> 0.00 -ddmul577 multiply 1.0 0.0 -> 0.00 -ddmul578 multiply 1.0 -0.0 -> -0.00 - - --- Specials -ddmul580 multiply Inf -Inf -> -Infinity -ddmul581 multiply Inf -1000 -> -Infinity -ddmul582 multiply Inf -1 -> -Infinity -ddmul583 multiply Inf -0 -> NaN Invalid_operation -ddmul584 multiply Inf 0 -> NaN Invalid_operation -ddmul585 multiply Inf 1 -> Infinity -ddmul586 multiply Inf 1000 -> Infinity -ddmul587 multiply Inf Inf -> Infinity -ddmul588 multiply -1000 Inf -> -Infinity -ddmul589 multiply -Inf Inf -> -Infinity -ddmul590 multiply -1 Inf -> -Infinity -ddmul591 multiply -0 Inf -> NaN Invalid_operation -ddmul592 multiply 0 Inf -> NaN Invalid_operation -ddmul593 multiply 1 Inf -> Infinity -ddmul594 multiply 1000 Inf -> Infinity -ddmul595 multiply Inf Inf -> Infinity - -ddmul600 multiply -Inf -Inf -> Infinity -ddmul601 multiply -Inf -1000 -> Infinity -ddmul602 multiply -Inf -1 -> Infinity -ddmul603 multiply -Inf -0 -> NaN Invalid_operation -ddmul604 multiply -Inf 0 -> NaN Invalid_operation -ddmul605 multiply -Inf 1 -> -Infinity -ddmul606 multiply -Inf 1000 -> -Infinity -ddmul607 multiply -Inf Inf -> -Infinity -ddmul608 multiply -1000 Inf -> -Infinity -ddmul609 multiply -Inf -Inf -> Infinity -ddmul610 multiply -1 -Inf -> Infinity -ddmul611 multiply -0 -Inf -> NaN Invalid_operation -ddmul612 multiply 0 -Inf -> NaN Invalid_operation -ddmul613 multiply 1 -Inf -> -Infinity -ddmul614 multiply 1000 -Inf -> -Infinity -ddmul615 multiply Inf -Inf -> -Infinity - -ddmul621 multiply NaN -Inf -> NaN -ddmul622 multiply NaN -1000 -> NaN -ddmul623 multiply NaN -1 -> NaN -ddmul624 multiply NaN -0 -> NaN -ddmul625 multiply NaN 0 -> NaN -ddmul626 multiply NaN 1 -> NaN -ddmul627 multiply NaN 1000 -> NaN -ddmul628 multiply NaN Inf -> NaN -ddmul629 multiply NaN NaN -> NaN -ddmul630 multiply -Inf NaN -> NaN -ddmul631 multiply -1000 NaN -> NaN -ddmul632 multiply -1 NaN -> NaN -ddmul633 multiply -0 NaN -> NaN -ddmul634 multiply 0 NaN -> NaN -ddmul635 multiply 1 NaN -> NaN -ddmul636 multiply 1000 NaN -> NaN -ddmul637 multiply Inf NaN -> NaN - -ddmul641 multiply sNaN -Inf -> NaN Invalid_operation -ddmul642 multiply sNaN -1000 -> NaN Invalid_operation -ddmul643 multiply sNaN -1 -> NaN Invalid_operation -ddmul644 multiply sNaN -0 -> NaN Invalid_operation -ddmul645 multiply sNaN 0 -> NaN Invalid_operation -ddmul646 multiply sNaN 1 -> NaN Invalid_operation -ddmul647 multiply sNaN 1000 -> NaN Invalid_operation -ddmul648 multiply sNaN NaN -> NaN Invalid_operation -ddmul649 multiply sNaN sNaN -> NaN Invalid_operation -ddmul650 multiply NaN sNaN -> NaN Invalid_operation -ddmul651 multiply -Inf sNaN -> NaN Invalid_operation -ddmul652 multiply -1000 sNaN -> NaN Invalid_operation -ddmul653 multiply -1 sNaN -> NaN Invalid_operation -ddmul654 multiply -0 sNaN -> NaN Invalid_operation -ddmul655 multiply 0 sNaN -> NaN Invalid_operation -ddmul656 multiply 1 sNaN -> NaN Invalid_operation -ddmul657 multiply 1000 sNaN -> NaN Invalid_operation -ddmul658 multiply Inf sNaN -> NaN Invalid_operation -ddmul659 multiply NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddmul661 multiply NaN9 -Inf -> NaN9 -ddmul662 multiply NaN8 999 -> NaN8 -ddmul663 multiply NaN71 Inf -> NaN71 -ddmul664 multiply NaN6 NaN5 -> NaN6 -ddmul665 multiply -Inf NaN4 -> NaN4 -ddmul666 multiply -999 NaN33 -> NaN33 -ddmul667 multiply Inf NaN2 -> NaN2 - -ddmul671 multiply sNaN99 -Inf -> NaN99 Invalid_operation -ddmul672 multiply sNaN98 -11 -> NaN98 Invalid_operation -ddmul673 multiply sNaN97 NaN -> NaN97 Invalid_operation -ddmul674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation -ddmul675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation -ddmul676 multiply -Inf sNaN92 -> NaN92 Invalid_operation -ddmul677 multiply 088 sNaN91 -> NaN91 Invalid_operation -ddmul678 multiply Inf sNaN90 -> NaN90 Invalid_operation -ddmul679 multiply NaN sNaN89 -> NaN89 Invalid_operation - -ddmul681 multiply -NaN9 -Inf -> -NaN9 -ddmul682 multiply -NaN8 999 -> -NaN8 -ddmul683 multiply -NaN71 Inf -> -NaN71 -ddmul684 multiply -NaN6 -NaN5 -> -NaN6 -ddmul685 multiply -Inf -NaN4 -> -NaN4 -ddmul686 multiply -999 -NaN33 -> -NaN33 -ddmul687 multiply Inf -NaN2 -> -NaN2 - -ddmul691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation -ddmul692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation -ddmul693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation -ddmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation -ddmul695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation -ddmul696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation -ddmul697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation -ddmul698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation -ddmul699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation - -ddmul701 multiply -NaN -Inf -> -NaN -ddmul702 multiply -NaN 999 -> -NaN -ddmul703 multiply -NaN Inf -> -NaN -ddmul704 multiply -NaN -NaN -> -NaN -ddmul705 multiply -Inf -NaN0 -> -NaN -ddmul706 multiply -999 -NaN -> -NaN -ddmul707 multiply Inf -NaN -> -NaN - -ddmul711 multiply -sNaN -Inf -> -NaN Invalid_operation -ddmul712 multiply -sNaN -11 -> -NaN Invalid_operation -ddmul713 multiply -sNaN00 NaN -> -NaN Invalid_operation -ddmul714 multiply -sNaN -sNaN -> -NaN Invalid_operation -ddmul715 multiply -NaN -sNaN -> -NaN Invalid_operation -ddmul716 multiply -Inf -sNaN -> -NaN Invalid_operation -ddmul717 multiply 088 -sNaN -> -NaN Invalid_operation -ddmul718 multiply Inf -sNaN -> -NaN Invalid_operation -ddmul719 multiply -NaN -sNaN -> -NaN Invalid_operation - --- overflow and underflow tests .. note subnormal results --- signs -ddmul751 multiply 1e+277 1e+311 -> Infinity Overflow Inexact Rounded -ddmul752 multiply 1e+277 -1e+311 -> -Infinity Overflow Inexact Rounded -ddmul753 multiply -1e+277 1e+311 -> -Infinity Overflow Inexact Rounded -ddmul754 multiply -1e+277 -1e+311 -> Infinity Overflow Inexact Rounded -ddmul755 multiply 1e-277 1e-311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul756 multiply 1e-277 -1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul757 multiply -1e-277 1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul758 multiply -1e-277 -1e-311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -ddmul760 multiply 1e-291 1e-101 -> 1E-392 Subnormal -ddmul761 multiply 1e-291 1e-102 -> 1E-393 Subnormal -ddmul762 multiply 1e-291 1e-103 -> 1E-394 Subnormal -ddmul763 multiply 1e-291 1e-104 -> 1E-395 Subnormal -ddmul764 multiply 1e-291 1e-105 -> 1E-396 Subnormal -ddmul765 multiply 1e-291 1e-106 -> 1E-397 Subnormal -ddmul766 multiply 1e-291 1e-107 -> 1E-398 Subnormal -ddmul767 multiply 1e-291 1e-108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul768 multiply 1e-291 1e-109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul769 multiply 1e-291 1e-110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped --- [no equivalent of 'subnormal' for overflow] -ddmul770 multiply 1e+60 1e+321 -> 1.000000000000E+381 Clamped -ddmul771 multiply 1e+60 1e+322 -> 1.0000000000000E+382 Clamped -ddmul772 multiply 1e+60 1e+323 -> 1.00000000000000E+383 Clamped -ddmul773 multiply 1e+60 1e+324 -> 1.000000000000000E+384 Clamped -ddmul774 multiply 1e+60 1e+325 -> Infinity Overflow Inexact Rounded -ddmul775 multiply 1e+60 1e+326 -> Infinity Overflow Inexact Rounded -ddmul776 multiply 1e+60 1e+327 -> Infinity Overflow Inexact Rounded -ddmul777 multiply 1e+60 1e+328 -> Infinity Overflow Inexact Rounded -ddmul778 multiply 1e+60 1e+329 -> Infinity Overflow Inexact Rounded -ddmul779 multiply 1e+60 1e+330 -> Infinity Overflow Inexact Rounded - -ddmul801 multiply 1.0000E-394 1 -> 1.0000E-394 Subnormal -ddmul802 multiply 1.000E-394 1e-1 -> 1.000E-395 Subnormal -ddmul803 multiply 1.00E-394 1e-2 -> 1.00E-396 Subnormal -ddmul804 multiply 1.0E-394 1e-3 -> 1.0E-397 Subnormal -ddmul805 multiply 1.0E-394 1e-4 -> 1E-398 Subnormal Rounded -ddmul806 multiply 1.3E-394 1e-4 -> 1E-398 Underflow Subnormal Inexact Rounded -ddmul807 multiply 1.5E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded -ddmul808 multiply 1.7E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded -ddmul809 multiply 2.3E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded -ddmul810 multiply 2.5E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded -ddmul811 multiply 2.7E-394 1e-4 -> 3E-398 Underflow Subnormal Inexact Rounded -ddmul812 multiply 1.49E-394 1e-4 -> 1E-398 Underflow Subnormal Inexact Rounded -ddmul813 multiply 1.50E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded -ddmul814 multiply 1.51E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded -ddmul815 multiply 2.49E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded -ddmul816 multiply 2.50E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded -ddmul817 multiply 2.51E-394 1e-4 -> 3E-398 Underflow Subnormal Inexact Rounded - -ddmul818 multiply 1E-394 1e-4 -> 1E-398 Subnormal -ddmul819 multiply 3E-394 1e-5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul820 multiply 5E-394 1e-5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul821 multiply 7E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded -ddmul822 multiply 9E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded -ddmul823 multiply 9.9E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded - -ddmul824 multiply 1E-394 -1e-4 -> -1E-398 Subnormal -ddmul825 multiply 3E-394 -1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul826 multiply -5E-394 1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul827 multiply 7E-394 -1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded -ddmul828 multiply -9E-394 1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded -ddmul829 multiply 9.9E-394 -1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded -ddmul830 multiply 3.0E-394 -1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped - -ddmul831 multiply 1.0E-199 1e-200 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddmul832 multiply 1.0E-199 1e-199 -> 1E-398 Subnormal Rounded -ddmul833 multiply 1.0E-199 1e-198 -> 1.0E-397 Subnormal -ddmul834 multiply 2.0E-199 2e-198 -> 4.0E-397 Subnormal -ddmul835 multiply 4.0E-199 4e-198 -> 1.60E-396 Subnormal -ddmul836 multiply 10.0E-199 10e-198 -> 1.000E-395 Subnormal -ddmul837 multiply 30.0E-199 30e-198 -> 9.000E-395 Subnormal -ddmul838 multiply 40.0E-199 40e-188 -> 1.6000E-384 Subnormal -ddmul839 multiply 40.0E-199 40e-187 -> 1.6000E-383 -ddmul840 multiply 40.0E-199 40e-186 -> 1.6000E-382 - --- Long operand overflow may be a different path -ddmul870 multiply 100 9.999E+383 -> Infinity Inexact Overflow Rounded -ddmul871 multiply 100 -9.999E+383 -> -Infinity Inexact Overflow Rounded -ddmul872 multiply 9.999E+383 100 -> Infinity Inexact Overflow Rounded -ddmul873 multiply -9.999E+383 100 -> -Infinity Inexact Overflow Rounded - --- check for double-rounded subnormals -ddmul881 multiply 1.2347E-355 1.2347E-40 -> 1.524E-395 Inexact Rounded Subnormal Underflow -ddmul882 multiply 1.234E-355 1.234E-40 -> 1.523E-395 Inexact Rounded Subnormal Underflow -ddmul883 multiply 1.23E-355 1.23E-40 -> 1.513E-395 Inexact Rounded Subnormal Underflow -ddmul884 multiply 1.2E-355 1.2E-40 -> 1.44E-395 Subnormal -ddmul885 multiply 1.2E-355 1.2E-41 -> 1.44E-396 Subnormal -ddmul886 multiply 1.2E-355 1.2E-42 -> 1.4E-397 Subnormal Inexact Rounded Underflow -ddmul887 multiply 1.2E-355 1.3E-42 -> 1.6E-397 Subnormal Inexact Rounded Underflow -ddmul888 multiply 1.3E-355 1.3E-42 -> 1.7E-397 Subnormal Inexact Rounded Underflow -ddmul889 multiply 1.3E-355 1.3E-43 -> 2E-398 Subnormal Inexact Rounded Underflow -ddmul890 multiply 1.3E-356 1.3E-43 -> 0E-398 Clamped Subnormal Inexact Rounded Underflow - -ddmul891 multiply 1.2345E-39 1.234E-355 -> 1.5234E-394 Inexact Rounded Subnormal Underflow -ddmul892 multiply 1.23456E-39 1.234E-355 -> 1.5234E-394 Inexact Rounded Subnormal Underflow -ddmul893 multiply 1.2345E-40 1.234E-355 -> 1.523E-395 Inexact Rounded Subnormal Underflow -ddmul894 multiply 1.23456E-40 1.234E-355 -> 1.523E-395 Inexact Rounded Subnormal Underflow -ddmul895 multiply 1.2345E-41 1.234E-355 -> 1.52E-396 Inexact Rounded Subnormal Underflow -ddmul896 multiply 1.23456E-41 1.234E-355 -> 1.52E-396 Inexact Rounded Subnormal Underflow - --- Now explore the case where we get a normal result with Underflow --- 1 234567890123456 -ddmul900 multiply 0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded -ddmul901 multiply 0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded -ddmul902 multiply 9.999999999999999E-383 0.0999999999999 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded -ddmul903 multiply 9.999999999999999E-383 0.09999999999999 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded -ddmul904 multiply 9.999999999999999E-383 0.099999999999999 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded -ddmul905 multiply 9.999999999999999E-383 0.0999999999999999 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded --- The next rounds to Nmin (b**emin); this is the distinguishing case --- for detecting tininess (before or after rounding) -- if after --- rounding then the result would be the same, but the Underflow flag --- would not be set -ddmul906 multiply 9.999999999999999E-383 0.09999999999999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded --- prove those operands were exact -ddmul907 multiply 9.999999999999999E-383 1 -> 9.999999999999999E-383 -ddmul908 multiply 1 0.09999999999999999 -> 0.09999999999999999 - --- reducing tiniest -ddmul910 multiply 1e-398 0.99 -> 1E-398 Subnormal Inexact Rounded Underflow -ddmul911 multiply 1e-398 0.75 -> 1E-398 Subnormal Inexact Rounded Underflow -ddmul912 multiply 1e-398 0.5 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -ddmul913 multiply 1e-398 0.25 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -ddmul914 multiply 1e-398 0.01 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped - --- hugest -ddmul920 multiply 9999999999999999 9999999999999999 -> 9.999999999999998E+31 Inexact Rounded - --- power-of-ten edge cases -ddmul1001 multiply 1 10 -> 10 -ddmul1002 multiply 1 100 -> 100 -ddmul1003 multiply 1 1000 -> 1000 -ddmul1004 multiply 1 10000 -> 10000 -ddmul1005 multiply 1 100000 -> 100000 -ddmul1006 multiply 1 1000000 -> 1000000 -ddmul1007 multiply 1 10000000 -> 10000000 -ddmul1008 multiply 1 100000000 -> 100000000 -ddmul1009 multiply 1 1000000000 -> 1000000000 -ddmul1010 multiply 1 10000000000 -> 10000000000 -ddmul1011 multiply 1 100000000000 -> 100000000000 -ddmul1012 multiply 1 1000000000000 -> 1000000000000 -ddmul1013 multiply 1 10000000000000 -> 10000000000000 -ddmul1014 multiply 1 100000000000000 -> 100000000000000 -ddmul1015 multiply 1 1000000000000000 -> 1000000000000000 -ddmul1021 multiply 10 1 -> 10 -ddmul1022 multiply 10 10 -> 100 -ddmul1023 multiply 10 100 -> 1000 -ddmul1024 multiply 10 1000 -> 10000 -ddmul1025 multiply 10 10000 -> 100000 -ddmul1026 multiply 10 100000 -> 1000000 -ddmul1027 multiply 10 1000000 -> 10000000 -ddmul1028 multiply 10 10000000 -> 100000000 -ddmul1029 multiply 10 100000000 -> 1000000000 -ddmul1030 multiply 10 1000000000 -> 10000000000 -ddmul1031 multiply 10 10000000000 -> 100000000000 -ddmul1032 multiply 10 100000000000 -> 1000000000000 -ddmul1033 multiply 10 1000000000000 -> 10000000000000 -ddmul1034 multiply 10 10000000000000 -> 100000000000000 -ddmul1035 multiply 10 100000000000000 -> 1000000000000000 -ddmul1041 multiply 100 0.1 -> 10.0 -ddmul1042 multiply 100 1 -> 100 -ddmul1043 multiply 100 10 -> 1000 -ddmul1044 multiply 100 100 -> 10000 -ddmul1045 multiply 100 1000 -> 100000 -ddmul1046 multiply 100 10000 -> 1000000 -ddmul1047 multiply 100 100000 -> 10000000 -ddmul1048 multiply 100 1000000 -> 100000000 -ddmul1049 multiply 100 10000000 -> 1000000000 -ddmul1050 multiply 100 100000000 -> 10000000000 -ddmul1051 multiply 100 1000000000 -> 100000000000 -ddmul1052 multiply 100 10000000000 -> 1000000000000 -ddmul1053 multiply 100 100000000000 -> 10000000000000 -ddmul1054 multiply 100 1000000000000 -> 100000000000000 -ddmul1055 multiply 100 10000000000000 -> 1000000000000000 -ddmul1061 multiply 1000 0.01 -> 10.00 -ddmul1062 multiply 1000 0.1 -> 100.0 -ddmul1063 multiply 1000 1 -> 1000 -ddmul1064 multiply 1000 10 -> 10000 -ddmul1065 multiply 1000 100 -> 100000 -ddmul1066 multiply 1000 1000 -> 1000000 -ddmul1067 multiply 1000 10000 -> 10000000 -ddmul1068 multiply 1000 100000 -> 100000000 -ddmul1069 multiply 1000 1000000 -> 1000000000 -ddmul1070 multiply 1000 10000000 -> 10000000000 -ddmul1071 multiply 1000 100000000 -> 100000000000 -ddmul1072 multiply 1000 1000000000 -> 1000000000000 -ddmul1073 multiply 1000 10000000000 -> 10000000000000 -ddmul1074 multiply 1000 100000000000 -> 100000000000000 -ddmul1075 multiply 1000 1000000000000 -> 1000000000000000 -ddmul1081 multiply 10000 0.001 -> 10.000 -ddmul1082 multiply 10000 0.01 -> 100.00 -ddmul1083 multiply 10000 0.1 -> 1000.0 -ddmul1084 multiply 10000 1 -> 10000 -ddmul1085 multiply 10000 10 -> 100000 -ddmul1086 multiply 10000 100 -> 1000000 -ddmul1087 multiply 10000 1000 -> 10000000 -ddmul1088 multiply 10000 10000 -> 100000000 -ddmul1089 multiply 10000 100000 -> 1000000000 -ddmul1090 multiply 10000 1000000 -> 10000000000 -ddmul1091 multiply 10000 10000000 -> 100000000000 -ddmul1092 multiply 10000 100000000 -> 1000000000000 -ddmul1093 multiply 10000 1000000000 -> 10000000000000 -ddmul1094 multiply 10000 10000000000 -> 100000000000000 -ddmul1095 multiply 10000 100000000000 -> 1000000000000000 - -ddmul1097 multiply 10000 99999999999 -> 999999999990000 -ddmul1098 multiply 10000 99999999999 -> 999999999990000 - - --- Null tests -ddmul9990 multiply 10 # -> NaN Invalid_operation -ddmul9991 multiply # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddMultiply.decTest -- decDouble multiplication -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests are for decDoubles only; all arguments are +-- representable in a decDouble +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddmul000 multiply 2 2 -> 4 +ddmul001 multiply 2 3 -> 6 +ddmul002 multiply 5 1 -> 5 +ddmul003 multiply 5 2 -> 10 +ddmul004 multiply 1.20 2 -> 2.40 +ddmul005 multiply 1.20 0 -> 0.00 +ddmul006 multiply 1.20 -2 -> -2.40 +ddmul007 multiply -1.20 2 -> -2.40 +ddmul008 multiply -1.20 0 -> -0.00 +ddmul009 multiply -1.20 -2 -> 2.40 +ddmul010 multiply 5.09 7.1 -> 36.139 +ddmul011 multiply 2.5 4 -> 10.0 +ddmul012 multiply 2.50 4 -> 10.00 +ddmul013 multiply 1.23456789 1.00000000 -> 1.234567890000000 Rounded +ddmul015 multiply 2.50 4 -> 10.00 +ddmul016 multiply 9.999999999 9.999999999 -> 99.99999998000000 Inexact Rounded +ddmul017 multiply 9.999999999 -9.999999999 -> -99.99999998000000 Inexact Rounded +ddmul018 multiply -9.999999999 9.999999999 -> -99.99999998000000 Inexact Rounded +ddmul019 multiply -9.999999999 -9.999999999 -> 99.99999998000000 Inexact Rounded + +-- zeros, etc. +ddmul021 multiply 0 0 -> 0 +ddmul022 multiply 0 -0 -> -0 +ddmul023 multiply -0 0 -> -0 +ddmul024 multiply -0 -0 -> 0 +ddmul025 multiply -0.0 -0.0 -> 0.00 +ddmul026 multiply -0.0 -0.0 -> 0.00 +ddmul027 multiply -0.0 -0.0 -> 0.00 +ddmul028 multiply -0.0 -0.0 -> 0.00 +ddmul030 multiply 5.00 1E-3 -> 0.00500 +ddmul031 multiply 00.00 0.000 -> 0.00000 +ddmul032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0 +ddmul033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0 +ddmul034 multiply -5.00 1E-3 -> -0.00500 +ddmul035 multiply -00.00 0.000 -> -0.00000 +ddmul036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0 +ddmul037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0 +ddmul038 multiply 5.00 -1E-3 -> -0.00500 +ddmul039 multiply 00.00 -0.000 -> -0.00000 +ddmul040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0 +ddmul041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0 +ddmul042 multiply -5.00 -1E-3 -> 0.00500 +ddmul043 multiply -00.00 -0.000 -> 0.00000 +ddmul044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0 +ddmul045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0 + +-- examples from decarith +ddmul050 multiply 1.20 3 -> 3.60 +ddmul051 multiply 7 3 -> 21 +ddmul052 multiply 0.9 0.8 -> 0.72 +ddmul053 multiply 0.9 -0 -> -0.0 +ddmul054 multiply 654321 654321 -> 428135971041 + +ddmul060 multiply 123.45 1e7 -> 1.2345E+9 +ddmul061 multiply 123.45 1e8 -> 1.2345E+10 +ddmul062 multiply 123.45 1e+9 -> 1.2345E+11 +ddmul063 multiply 123.45 1e10 -> 1.2345E+12 +ddmul064 multiply 123.45 1e11 -> 1.2345E+13 +ddmul065 multiply 123.45 1e12 -> 1.2345E+14 +ddmul066 multiply 123.45 1e13 -> 1.2345E+15 + + +-- test some intermediate lengths +-- 1234567890123456 +ddmul080 multiply 0.1 1230123456456789 -> 123012345645678.9 +ddmul084 multiply 0.1 1230123456456789 -> 123012345645678.9 +ddmul090 multiply 1230123456456789 0.1 -> 123012345645678.9 +ddmul094 multiply 1230123456456789 0.1 -> 123012345645678.9 + +-- test some more edge cases and carries +ddmul101 multiply 9 9 -> 81 +ddmul102 multiply 9 90 -> 810 +ddmul103 multiply 9 900 -> 8100 +ddmul104 multiply 9 9000 -> 81000 +ddmul105 multiply 9 90000 -> 810000 +ddmul106 multiply 9 900000 -> 8100000 +ddmul107 multiply 9 9000000 -> 81000000 +ddmul108 multiply 9 90000000 -> 810000000 +ddmul109 multiply 9 900000000 -> 8100000000 +ddmul110 multiply 9 9000000000 -> 81000000000 +ddmul111 multiply 9 90000000000 -> 810000000000 +ddmul112 multiply 9 900000000000 -> 8100000000000 +ddmul113 multiply 9 9000000000000 -> 81000000000000 +ddmul114 multiply 9 90000000000000 -> 810000000000000 +ddmul115 multiply 9 900000000000000 -> 8100000000000000 +--ddmul116 multiply 9 9000000000000000 -> 81000000000000000 +--ddmul117 multiply 9 90000000000000000 -> 810000000000000000 +--ddmul118 multiply 9 900000000000000000 -> 8100000000000000000 +--ddmul119 multiply 9 9000000000000000000 -> 81000000000000000000 +--ddmul120 multiply 9 90000000000000000000 -> 810000000000000000000 +--ddmul121 multiply 9 900000000000000000000 -> 8100000000000000000000 +--ddmul122 multiply 9 9000000000000000000000 -> 81000000000000000000000 +--ddmul123 multiply 9 90000000000000000000000 -> 810000000000000000000000 +-- test some more edge cases without carries +ddmul131 multiply 3 3 -> 9 +ddmul132 multiply 3 30 -> 90 +ddmul133 multiply 3 300 -> 900 +ddmul134 multiply 3 3000 -> 9000 +ddmul135 multiply 3 30000 -> 90000 +ddmul136 multiply 3 300000 -> 900000 +ddmul137 multiply 3 3000000 -> 9000000 +ddmul138 multiply 3 30000000 -> 90000000 +ddmul139 multiply 3 300000000 -> 900000000 +ddmul140 multiply 3 3000000000 -> 9000000000 +ddmul141 multiply 3 30000000000 -> 90000000000 +ddmul142 multiply 3 300000000000 -> 900000000000 +ddmul143 multiply 3 3000000000000 -> 9000000000000 +ddmul144 multiply 3 30000000000000 -> 90000000000000 +ddmul145 multiply 3 300000000000000 -> 900000000000000 + +-- test some edge cases with exact rounding +ddmul301 multiply 9 9 -> 81 +ddmul302 multiply 9 90 -> 810 +ddmul303 multiply 9 900 -> 8100 +ddmul304 multiply 9 9000 -> 81000 +ddmul305 multiply 9 90000 -> 810000 +ddmul306 multiply 9 900000 -> 8100000 +ddmul307 multiply 9 9000000 -> 81000000 +ddmul308 multiply 9 90000000 -> 810000000 +ddmul309 multiply 9 900000000 -> 8100000000 +ddmul310 multiply 9 9000000000 -> 81000000000 +ddmul311 multiply 9 90000000000 -> 810000000000 +ddmul312 multiply 9 900000000000 -> 8100000000000 +ddmul313 multiply 9 9000000000000 -> 81000000000000 +ddmul314 multiply 9 90000000000000 -> 810000000000000 +ddmul315 multiply 9 900000000000000 -> 8100000000000000 +ddmul316 multiply 9 9000000000000000 -> 8.100000000000000E+16 Rounded +ddmul317 multiply 90 9000000000000000 -> 8.100000000000000E+17 Rounded +ddmul318 multiply 900 9000000000000000 -> 8.100000000000000E+18 Rounded +ddmul319 multiply 9000 9000000000000000 -> 8.100000000000000E+19 Rounded +ddmul320 multiply 90000 9000000000000000 -> 8.100000000000000E+20 Rounded +ddmul321 multiply 900000 9000000000000000 -> 8.100000000000000E+21 Rounded +ddmul322 multiply 9000000 9000000000000000 -> 8.100000000000000E+22 Rounded +ddmul323 multiply 90000000 9000000000000000 -> 8.100000000000000E+23 Rounded + +-- tryzeros cases +ddmul504 multiply 0E-260 1000E-260 -> 0E-398 Clamped +ddmul505 multiply 100E+260 0E+260 -> 0E+369 Clamped +-- 65K-1 case +ddmul506 multiply 77.1 850 -> 65535.0 + +-- mixed with zeros +ddmul541 multiply 0 -1 -> -0 +ddmul542 multiply -0 -1 -> 0 +ddmul543 multiply 0 1 -> 0 +ddmul544 multiply -0 1 -> -0 +ddmul545 multiply -1 0 -> -0 +ddmul546 multiply -1 -0 -> 0 +ddmul547 multiply 1 0 -> 0 +ddmul548 multiply 1 -0 -> -0 + +ddmul551 multiply 0.0 -1 -> -0.0 +ddmul552 multiply -0.0 -1 -> 0.0 +ddmul553 multiply 0.0 1 -> 0.0 +ddmul554 multiply -0.0 1 -> -0.0 +ddmul555 multiply -1.0 0 -> -0.0 +ddmul556 multiply -1.0 -0 -> 0.0 +ddmul557 multiply 1.0 0 -> 0.0 +ddmul558 multiply 1.0 -0 -> -0.0 + +ddmul561 multiply 0 -1.0 -> -0.0 +ddmul562 multiply -0 -1.0 -> 0.0 +ddmul563 multiply 0 1.0 -> 0.0 +ddmul564 multiply -0 1.0 -> -0.0 +ddmul565 multiply -1 0.0 -> -0.0 +ddmul566 multiply -1 -0.0 -> 0.0 +ddmul567 multiply 1 0.0 -> 0.0 +ddmul568 multiply 1 -0.0 -> -0.0 + +ddmul571 multiply 0.0 -1.0 -> -0.00 +ddmul572 multiply -0.0 -1.0 -> 0.00 +ddmul573 multiply 0.0 1.0 -> 0.00 +ddmul574 multiply -0.0 1.0 -> -0.00 +ddmul575 multiply -1.0 0.0 -> -0.00 +ddmul576 multiply -1.0 -0.0 -> 0.00 +ddmul577 multiply 1.0 0.0 -> 0.00 +ddmul578 multiply 1.0 -0.0 -> -0.00 + + +-- Specials +ddmul580 multiply Inf -Inf -> -Infinity +ddmul581 multiply Inf -1000 -> -Infinity +ddmul582 multiply Inf -1 -> -Infinity +ddmul583 multiply Inf -0 -> NaN Invalid_operation +ddmul584 multiply Inf 0 -> NaN Invalid_operation +ddmul585 multiply Inf 1 -> Infinity +ddmul586 multiply Inf 1000 -> Infinity +ddmul587 multiply Inf Inf -> Infinity +ddmul588 multiply -1000 Inf -> -Infinity +ddmul589 multiply -Inf Inf -> -Infinity +ddmul590 multiply -1 Inf -> -Infinity +ddmul591 multiply -0 Inf -> NaN Invalid_operation +ddmul592 multiply 0 Inf -> NaN Invalid_operation +ddmul593 multiply 1 Inf -> Infinity +ddmul594 multiply 1000 Inf -> Infinity +ddmul595 multiply Inf Inf -> Infinity + +ddmul600 multiply -Inf -Inf -> Infinity +ddmul601 multiply -Inf -1000 -> Infinity +ddmul602 multiply -Inf -1 -> Infinity +ddmul603 multiply -Inf -0 -> NaN Invalid_operation +ddmul604 multiply -Inf 0 -> NaN Invalid_operation +ddmul605 multiply -Inf 1 -> -Infinity +ddmul606 multiply -Inf 1000 -> -Infinity +ddmul607 multiply -Inf Inf -> -Infinity +ddmul608 multiply -1000 Inf -> -Infinity +ddmul609 multiply -Inf -Inf -> Infinity +ddmul610 multiply -1 -Inf -> Infinity +ddmul611 multiply -0 -Inf -> NaN Invalid_operation +ddmul612 multiply 0 -Inf -> NaN Invalid_operation +ddmul613 multiply 1 -Inf -> -Infinity +ddmul614 multiply 1000 -Inf -> -Infinity +ddmul615 multiply Inf -Inf -> -Infinity + +ddmul621 multiply NaN -Inf -> NaN +ddmul622 multiply NaN -1000 -> NaN +ddmul623 multiply NaN -1 -> NaN +ddmul624 multiply NaN -0 -> NaN +ddmul625 multiply NaN 0 -> NaN +ddmul626 multiply NaN 1 -> NaN +ddmul627 multiply NaN 1000 -> NaN +ddmul628 multiply NaN Inf -> NaN +ddmul629 multiply NaN NaN -> NaN +ddmul630 multiply -Inf NaN -> NaN +ddmul631 multiply -1000 NaN -> NaN +ddmul632 multiply -1 NaN -> NaN +ddmul633 multiply -0 NaN -> NaN +ddmul634 multiply 0 NaN -> NaN +ddmul635 multiply 1 NaN -> NaN +ddmul636 multiply 1000 NaN -> NaN +ddmul637 multiply Inf NaN -> NaN + +ddmul641 multiply sNaN -Inf -> NaN Invalid_operation +ddmul642 multiply sNaN -1000 -> NaN Invalid_operation +ddmul643 multiply sNaN -1 -> NaN Invalid_operation +ddmul644 multiply sNaN -0 -> NaN Invalid_operation +ddmul645 multiply sNaN 0 -> NaN Invalid_operation +ddmul646 multiply sNaN 1 -> NaN Invalid_operation +ddmul647 multiply sNaN 1000 -> NaN Invalid_operation +ddmul648 multiply sNaN NaN -> NaN Invalid_operation +ddmul649 multiply sNaN sNaN -> NaN Invalid_operation +ddmul650 multiply NaN sNaN -> NaN Invalid_operation +ddmul651 multiply -Inf sNaN -> NaN Invalid_operation +ddmul652 multiply -1000 sNaN -> NaN Invalid_operation +ddmul653 multiply -1 sNaN -> NaN Invalid_operation +ddmul654 multiply -0 sNaN -> NaN Invalid_operation +ddmul655 multiply 0 sNaN -> NaN Invalid_operation +ddmul656 multiply 1 sNaN -> NaN Invalid_operation +ddmul657 multiply 1000 sNaN -> NaN Invalid_operation +ddmul658 multiply Inf sNaN -> NaN Invalid_operation +ddmul659 multiply NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddmul661 multiply NaN9 -Inf -> NaN9 +ddmul662 multiply NaN8 999 -> NaN8 +ddmul663 multiply NaN71 Inf -> NaN71 +ddmul664 multiply NaN6 NaN5 -> NaN6 +ddmul665 multiply -Inf NaN4 -> NaN4 +ddmul666 multiply -999 NaN33 -> NaN33 +ddmul667 multiply Inf NaN2 -> NaN2 + +ddmul671 multiply sNaN99 -Inf -> NaN99 Invalid_operation +ddmul672 multiply sNaN98 -11 -> NaN98 Invalid_operation +ddmul673 multiply sNaN97 NaN -> NaN97 Invalid_operation +ddmul674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation +ddmul675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation +ddmul676 multiply -Inf sNaN92 -> NaN92 Invalid_operation +ddmul677 multiply 088 sNaN91 -> NaN91 Invalid_operation +ddmul678 multiply Inf sNaN90 -> NaN90 Invalid_operation +ddmul679 multiply NaN sNaN89 -> NaN89 Invalid_operation + +ddmul681 multiply -NaN9 -Inf -> -NaN9 +ddmul682 multiply -NaN8 999 -> -NaN8 +ddmul683 multiply -NaN71 Inf -> -NaN71 +ddmul684 multiply -NaN6 -NaN5 -> -NaN6 +ddmul685 multiply -Inf -NaN4 -> -NaN4 +ddmul686 multiply -999 -NaN33 -> -NaN33 +ddmul687 multiply Inf -NaN2 -> -NaN2 + +ddmul691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation +ddmul692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation +ddmul693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation +ddmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation +ddmul695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation +ddmul696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation +ddmul697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation +ddmul698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation +ddmul699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation + +ddmul701 multiply -NaN -Inf -> -NaN +ddmul702 multiply -NaN 999 -> -NaN +ddmul703 multiply -NaN Inf -> -NaN +ddmul704 multiply -NaN -NaN -> -NaN +ddmul705 multiply -Inf -NaN0 -> -NaN +ddmul706 multiply -999 -NaN -> -NaN +ddmul707 multiply Inf -NaN -> -NaN + +ddmul711 multiply -sNaN -Inf -> -NaN Invalid_operation +ddmul712 multiply -sNaN -11 -> -NaN Invalid_operation +ddmul713 multiply -sNaN00 NaN -> -NaN Invalid_operation +ddmul714 multiply -sNaN -sNaN -> -NaN Invalid_operation +ddmul715 multiply -NaN -sNaN -> -NaN Invalid_operation +ddmul716 multiply -Inf -sNaN -> -NaN Invalid_operation +ddmul717 multiply 088 -sNaN -> -NaN Invalid_operation +ddmul718 multiply Inf -sNaN -> -NaN Invalid_operation +ddmul719 multiply -NaN -sNaN -> -NaN Invalid_operation + +-- overflow and underflow tests .. note subnormal results +-- signs +ddmul751 multiply 1e+277 1e+311 -> Infinity Overflow Inexact Rounded +ddmul752 multiply 1e+277 -1e+311 -> -Infinity Overflow Inexact Rounded +ddmul753 multiply -1e+277 1e+311 -> -Infinity Overflow Inexact Rounded +ddmul754 multiply -1e+277 -1e+311 -> Infinity Overflow Inexact Rounded +ddmul755 multiply 1e-277 1e-311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul756 multiply 1e-277 -1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul757 multiply -1e-277 1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul758 multiply -1e-277 -1e-311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +ddmul760 multiply 1e-291 1e-101 -> 1E-392 Subnormal +ddmul761 multiply 1e-291 1e-102 -> 1E-393 Subnormal +ddmul762 multiply 1e-291 1e-103 -> 1E-394 Subnormal +ddmul763 multiply 1e-291 1e-104 -> 1E-395 Subnormal +ddmul764 multiply 1e-291 1e-105 -> 1E-396 Subnormal +ddmul765 multiply 1e-291 1e-106 -> 1E-397 Subnormal +ddmul766 multiply 1e-291 1e-107 -> 1E-398 Subnormal +ddmul767 multiply 1e-291 1e-108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul768 multiply 1e-291 1e-109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul769 multiply 1e-291 1e-110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +-- [no equivalent of 'subnormal' for overflow] +ddmul770 multiply 1e+60 1e+321 -> 1.000000000000E+381 Clamped +ddmul771 multiply 1e+60 1e+322 -> 1.0000000000000E+382 Clamped +ddmul772 multiply 1e+60 1e+323 -> 1.00000000000000E+383 Clamped +ddmul773 multiply 1e+60 1e+324 -> 1.000000000000000E+384 Clamped +ddmul774 multiply 1e+60 1e+325 -> Infinity Overflow Inexact Rounded +ddmul775 multiply 1e+60 1e+326 -> Infinity Overflow Inexact Rounded +ddmul776 multiply 1e+60 1e+327 -> Infinity Overflow Inexact Rounded +ddmul777 multiply 1e+60 1e+328 -> Infinity Overflow Inexact Rounded +ddmul778 multiply 1e+60 1e+329 -> Infinity Overflow Inexact Rounded +ddmul779 multiply 1e+60 1e+330 -> Infinity Overflow Inexact Rounded + +ddmul801 multiply 1.0000E-394 1 -> 1.0000E-394 Subnormal +ddmul802 multiply 1.000E-394 1e-1 -> 1.000E-395 Subnormal +ddmul803 multiply 1.00E-394 1e-2 -> 1.00E-396 Subnormal +ddmul804 multiply 1.0E-394 1e-3 -> 1.0E-397 Subnormal +ddmul805 multiply 1.0E-394 1e-4 -> 1E-398 Subnormal Rounded +ddmul806 multiply 1.3E-394 1e-4 -> 1E-398 Underflow Subnormal Inexact Rounded +ddmul807 multiply 1.5E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded +ddmul808 multiply 1.7E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded +ddmul809 multiply 2.3E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded +ddmul810 multiply 2.5E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded +ddmul811 multiply 2.7E-394 1e-4 -> 3E-398 Underflow Subnormal Inexact Rounded +ddmul812 multiply 1.49E-394 1e-4 -> 1E-398 Underflow Subnormal Inexact Rounded +ddmul813 multiply 1.50E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded +ddmul814 multiply 1.51E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded +ddmul815 multiply 2.49E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded +ddmul816 multiply 2.50E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded +ddmul817 multiply 2.51E-394 1e-4 -> 3E-398 Underflow Subnormal Inexact Rounded + +ddmul818 multiply 1E-394 1e-4 -> 1E-398 Subnormal +ddmul819 multiply 3E-394 1e-5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul820 multiply 5E-394 1e-5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul821 multiply 7E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded +ddmul822 multiply 9E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded +ddmul823 multiply 9.9E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded + +ddmul824 multiply 1E-394 -1e-4 -> -1E-398 Subnormal +ddmul825 multiply 3E-394 -1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul826 multiply -5E-394 1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul827 multiply 7E-394 -1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded +ddmul828 multiply -9E-394 1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded +ddmul829 multiply 9.9E-394 -1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded +ddmul830 multiply 3.0E-394 -1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped + +ddmul831 multiply 1.0E-199 1e-200 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddmul832 multiply 1.0E-199 1e-199 -> 1E-398 Subnormal Rounded +ddmul833 multiply 1.0E-199 1e-198 -> 1.0E-397 Subnormal +ddmul834 multiply 2.0E-199 2e-198 -> 4.0E-397 Subnormal +ddmul835 multiply 4.0E-199 4e-198 -> 1.60E-396 Subnormal +ddmul836 multiply 10.0E-199 10e-198 -> 1.000E-395 Subnormal +ddmul837 multiply 30.0E-199 30e-198 -> 9.000E-395 Subnormal +ddmul838 multiply 40.0E-199 40e-188 -> 1.6000E-384 Subnormal +ddmul839 multiply 40.0E-199 40e-187 -> 1.6000E-383 +ddmul840 multiply 40.0E-199 40e-186 -> 1.6000E-382 + +-- Long operand overflow may be a different path +ddmul870 multiply 100 9.999E+383 -> Infinity Inexact Overflow Rounded +ddmul871 multiply 100 -9.999E+383 -> -Infinity Inexact Overflow Rounded +ddmul872 multiply 9.999E+383 100 -> Infinity Inexact Overflow Rounded +ddmul873 multiply -9.999E+383 100 -> -Infinity Inexact Overflow Rounded + +-- check for double-rounded subnormals +ddmul881 multiply 1.2347E-355 1.2347E-40 -> 1.524E-395 Inexact Rounded Subnormal Underflow +ddmul882 multiply 1.234E-355 1.234E-40 -> 1.523E-395 Inexact Rounded Subnormal Underflow +ddmul883 multiply 1.23E-355 1.23E-40 -> 1.513E-395 Inexact Rounded Subnormal Underflow +ddmul884 multiply 1.2E-355 1.2E-40 -> 1.44E-395 Subnormal +ddmul885 multiply 1.2E-355 1.2E-41 -> 1.44E-396 Subnormal +ddmul886 multiply 1.2E-355 1.2E-42 -> 1.4E-397 Subnormal Inexact Rounded Underflow +ddmul887 multiply 1.2E-355 1.3E-42 -> 1.6E-397 Subnormal Inexact Rounded Underflow +ddmul888 multiply 1.3E-355 1.3E-42 -> 1.7E-397 Subnormal Inexact Rounded Underflow +ddmul889 multiply 1.3E-355 1.3E-43 -> 2E-398 Subnormal Inexact Rounded Underflow +ddmul890 multiply 1.3E-356 1.3E-43 -> 0E-398 Clamped Subnormal Inexact Rounded Underflow + +ddmul891 multiply 1.2345E-39 1.234E-355 -> 1.5234E-394 Inexact Rounded Subnormal Underflow +ddmul892 multiply 1.23456E-39 1.234E-355 -> 1.5234E-394 Inexact Rounded Subnormal Underflow +ddmul893 multiply 1.2345E-40 1.234E-355 -> 1.523E-395 Inexact Rounded Subnormal Underflow +ddmul894 multiply 1.23456E-40 1.234E-355 -> 1.523E-395 Inexact Rounded Subnormal Underflow +ddmul895 multiply 1.2345E-41 1.234E-355 -> 1.52E-396 Inexact Rounded Subnormal Underflow +ddmul896 multiply 1.23456E-41 1.234E-355 -> 1.52E-396 Inexact Rounded Subnormal Underflow + +-- Now explore the case where we get a normal result with Underflow +-- 1 234567890123456 +ddmul900 multiply 0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded +ddmul901 multiply 0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded +ddmul902 multiply 9.999999999999999E-383 0.0999999999999 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded +ddmul903 multiply 9.999999999999999E-383 0.09999999999999 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded +ddmul904 multiply 9.999999999999999E-383 0.099999999999999 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded +ddmul905 multiply 9.999999999999999E-383 0.0999999999999999 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded +-- The next rounds to Nmin (b**emin); this is the distinguishing case +-- for detecting tininess (before or after rounding) -- if after +-- rounding then the result would be the same, but the Underflow flag +-- would not be set +ddmul906 multiply 9.999999999999999E-383 0.09999999999999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +-- prove those operands were exact +ddmul907 multiply 9.999999999999999E-383 1 -> 9.999999999999999E-383 +ddmul908 multiply 1 0.09999999999999999 -> 0.09999999999999999 + +-- reducing tiniest +ddmul910 multiply 1e-398 0.99 -> 1E-398 Subnormal Inexact Rounded Underflow +ddmul911 multiply 1e-398 0.75 -> 1E-398 Subnormal Inexact Rounded Underflow +ddmul912 multiply 1e-398 0.5 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +ddmul913 multiply 1e-398 0.25 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +ddmul914 multiply 1e-398 0.01 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped + +-- hugest +ddmul920 multiply 9999999999999999 9999999999999999 -> 9.999999999999998E+31 Inexact Rounded + +-- power-of-ten edge cases +ddmul1001 multiply 1 10 -> 10 +ddmul1002 multiply 1 100 -> 100 +ddmul1003 multiply 1 1000 -> 1000 +ddmul1004 multiply 1 10000 -> 10000 +ddmul1005 multiply 1 100000 -> 100000 +ddmul1006 multiply 1 1000000 -> 1000000 +ddmul1007 multiply 1 10000000 -> 10000000 +ddmul1008 multiply 1 100000000 -> 100000000 +ddmul1009 multiply 1 1000000000 -> 1000000000 +ddmul1010 multiply 1 10000000000 -> 10000000000 +ddmul1011 multiply 1 100000000000 -> 100000000000 +ddmul1012 multiply 1 1000000000000 -> 1000000000000 +ddmul1013 multiply 1 10000000000000 -> 10000000000000 +ddmul1014 multiply 1 100000000000000 -> 100000000000000 +ddmul1015 multiply 1 1000000000000000 -> 1000000000000000 +ddmul1021 multiply 10 1 -> 10 +ddmul1022 multiply 10 10 -> 100 +ddmul1023 multiply 10 100 -> 1000 +ddmul1024 multiply 10 1000 -> 10000 +ddmul1025 multiply 10 10000 -> 100000 +ddmul1026 multiply 10 100000 -> 1000000 +ddmul1027 multiply 10 1000000 -> 10000000 +ddmul1028 multiply 10 10000000 -> 100000000 +ddmul1029 multiply 10 100000000 -> 1000000000 +ddmul1030 multiply 10 1000000000 -> 10000000000 +ddmul1031 multiply 10 10000000000 -> 100000000000 +ddmul1032 multiply 10 100000000000 -> 1000000000000 +ddmul1033 multiply 10 1000000000000 -> 10000000000000 +ddmul1034 multiply 10 10000000000000 -> 100000000000000 +ddmul1035 multiply 10 100000000000000 -> 1000000000000000 +ddmul1041 multiply 100 0.1 -> 10.0 +ddmul1042 multiply 100 1 -> 100 +ddmul1043 multiply 100 10 -> 1000 +ddmul1044 multiply 100 100 -> 10000 +ddmul1045 multiply 100 1000 -> 100000 +ddmul1046 multiply 100 10000 -> 1000000 +ddmul1047 multiply 100 100000 -> 10000000 +ddmul1048 multiply 100 1000000 -> 100000000 +ddmul1049 multiply 100 10000000 -> 1000000000 +ddmul1050 multiply 100 100000000 -> 10000000000 +ddmul1051 multiply 100 1000000000 -> 100000000000 +ddmul1052 multiply 100 10000000000 -> 1000000000000 +ddmul1053 multiply 100 100000000000 -> 10000000000000 +ddmul1054 multiply 100 1000000000000 -> 100000000000000 +ddmul1055 multiply 100 10000000000000 -> 1000000000000000 +ddmul1061 multiply 1000 0.01 -> 10.00 +ddmul1062 multiply 1000 0.1 -> 100.0 +ddmul1063 multiply 1000 1 -> 1000 +ddmul1064 multiply 1000 10 -> 10000 +ddmul1065 multiply 1000 100 -> 100000 +ddmul1066 multiply 1000 1000 -> 1000000 +ddmul1067 multiply 1000 10000 -> 10000000 +ddmul1068 multiply 1000 100000 -> 100000000 +ddmul1069 multiply 1000 1000000 -> 1000000000 +ddmul1070 multiply 1000 10000000 -> 10000000000 +ddmul1071 multiply 1000 100000000 -> 100000000000 +ddmul1072 multiply 1000 1000000000 -> 1000000000000 +ddmul1073 multiply 1000 10000000000 -> 10000000000000 +ddmul1074 multiply 1000 100000000000 -> 100000000000000 +ddmul1075 multiply 1000 1000000000000 -> 1000000000000000 +ddmul1081 multiply 10000 0.001 -> 10.000 +ddmul1082 multiply 10000 0.01 -> 100.00 +ddmul1083 multiply 10000 0.1 -> 1000.0 +ddmul1084 multiply 10000 1 -> 10000 +ddmul1085 multiply 10000 10 -> 100000 +ddmul1086 multiply 10000 100 -> 1000000 +ddmul1087 multiply 10000 1000 -> 10000000 +ddmul1088 multiply 10000 10000 -> 100000000 +ddmul1089 multiply 10000 100000 -> 1000000000 +ddmul1090 multiply 10000 1000000 -> 10000000000 +ddmul1091 multiply 10000 10000000 -> 100000000000 +ddmul1092 multiply 10000 100000000 -> 1000000000000 +ddmul1093 multiply 10000 1000000000 -> 10000000000000 +ddmul1094 multiply 10000 10000000000 -> 100000000000000 +ddmul1095 multiply 10000 100000000000 -> 1000000000000000 + +ddmul1097 multiply 10000 99999999999 -> 999999999990000 +ddmul1098 multiply 10000 99999999999 -> 999999999990000 + + +-- Null tests +ddmul9990 multiply 10 # -> NaN Invalid_operation +ddmul9991 multiply # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddNextMinus.decTest b/Lib/test/decimaltestdata/ddNextMinus.decTest index f8a3c0e..39f58c1 100644 --- a/Lib/test/decimaltestdata/ddNextMinus.decTest +++ b/Lib/test/decimaltestdata/ddNextMinus.decTest @@ -1,126 +1,126 @@ ------------------------------------------------------------------------- --- ddNextMinus.decTest -- decDouble next that is less [754r nextdown] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -ddnextm001 nextminus 0.9999999999999995 -> 0.9999999999999994 -ddnextm002 nextminus 0.9999999999999996 -> 0.9999999999999995 -ddnextm003 nextminus 0.9999999999999997 -> 0.9999999999999996 -ddnextm004 nextminus 0.9999999999999998 -> 0.9999999999999997 -ddnextm005 nextminus 0.9999999999999999 -> 0.9999999999999998 -ddnextm006 nextminus 1.000000000000000 -> 0.9999999999999999 -ddnextm007 nextminus 1.0 -> 0.9999999999999999 -ddnextm008 nextminus 1 -> 0.9999999999999999 -ddnextm009 nextminus 1.000000000000001 -> 1.000000000000000 -ddnextm010 nextminus 1.000000000000002 -> 1.000000000000001 -ddnextm011 nextminus 1.000000000000003 -> 1.000000000000002 -ddnextm012 nextminus 1.000000000000004 -> 1.000000000000003 -ddnextm013 nextminus 1.000000000000005 -> 1.000000000000004 -ddnextm014 nextminus 1.000000000000006 -> 1.000000000000005 -ddnextm015 nextminus 1.000000000000007 -> 1.000000000000006 -ddnextm016 nextminus 1.000000000000008 -> 1.000000000000007 -ddnextm017 nextminus 1.000000000000009 -> 1.000000000000008 -ddnextm018 nextminus 1.000000000000010 -> 1.000000000000009 -ddnextm019 nextminus 1.000000000000011 -> 1.000000000000010 -ddnextm020 nextminus 1.000000000000012 -> 1.000000000000011 - -ddnextm021 nextminus -0.9999999999999995 -> -0.9999999999999996 -ddnextm022 nextminus -0.9999999999999996 -> -0.9999999999999997 -ddnextm023 nextminus -0.9999999999999997 -> -0.9999999999999998 -ddnextm024 nextminus -0.9999999999999998 -> -0.9999999999999999 -ddnextm025 nextminus -0.9999999999999999 -> -1.000000000000000 -ddnextm026 nextminus -1.000000000000000 -> -1.000000000000001 -ddnextm027 nextminus -1.0 -> -1.000000000000001 -ddnextm028 nextminus -1 -> -1.000000000000001 -ddnextm029 nextminus -1.000000000000001 -> -1.000000000000002 -ddnextm030 nextminus -1.000000000000002 -> -1.000000000000003 -ddnextm031 nextminus -1.000000000000003 -> -1.000000000000004 -ddnextm032 nextminus -1.000000000000004 -> -1.000000000000005 -ddnextm033 nextminus -1.000000000000005 -> -1.000000000000006 -ddnextm034 nextminus -1.000000000000006 -> -1.000000000000007 -ddnextm035 nextminus -1.000000000000007 -> -1.000000000000008 -ddnextm036 nextminus -1.000000000000008 -> -1.000000000000009 -ddnextm037 nextminus -1.000000000000009 -> -1.000000000000010 -ddnextm038 nextminus -1.000000000000010 -> -1.000000000000011 -ddnextm039 nextminus -1.000000000000011 -> -1.000000000000012 - --- ultra-tiny inputs -ddnextm062 nextminus 1E-398 -> 0E-398 -ddnextm065 nextminus -1E-398 -> -2E-398 - --- Zeros -ddnextm100 nextminus -0 -> -1E-398 -ddnextm101 nextminus 0 -> -1E-398 -ddnextm102 nextminus 0.00 -> -1E-398 -ddnextm103 nextminus -0.00 -> -1E-398 -ddnextm104 nextminus 0E-300 -> -1E-398 -ddnextm105 nextminus 0E+300 -> -1E-398 -ddnextm106 nextminus 0E+30000 -> -1E-398 -ddnextm107 nextminus -0E+30000 -> -1E-398 - --- specials -ddnextm150 nextminus Inf -> 9.999999999999999E+384 -ddnextm151 nextminus -Inf -> -Infinity -ddnextm152 nextminus NaN -> NaN -ddnextm153 nextminus sNaN -> NaN Invalid_operation -ddnextm154 nextminus NaN77 -> NaN77 -ddnextm155 nextminus sNaN88 -> NaN88 Invalid_operation -ddnextm156 nextminus -NaN -> -NaN -ddnextm157 nextminus -sNaN -> -NaN Invalid_operation -ddnextm158 nextminus -NaN77 -> -NaN77 -ddnextm159 nextminus -sNaN88 -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -ddnextm170 nextminus 9.999999999999999E+384 -> 9.999999999999998E+384 -ddnextm171 nextminus 9.999999999999998E+384 -> 9.999999999999997E+384 -ddnextm172 nextminus 1E-383 -> 9.99999999999999E-384 -ddnextm173 nextminus 1.000000000000000E-383 -> 9.99999999999999E-384 -ddnextm174 nextminus 9E-398 -> 8E-398 -ddnextm175 nextminus 9.9E-397 -> 9.8E-397 -ddnextm176 nextminus 9.99999999999E-387 -> 9.99999999998E-387 -ddnextm177 nextminus 9.99999999999999E-384 -> 9.99999999999998E-384 -ddnextm178 nextminus 9.99999999999998E-384 -> 9.99999999999997E-384 -ddnextm179 nextminus 9.99999999999997E-384 -> 9.99999999999996E-384 -ddnextm180 nextminus 0E-398 -> -1E-398 -ddnextm181 nextminus 1E-398 -> 0E-398 -ddnextm182 nextminus 2E-398 -> 1E-398 - -ddnextm183 nextminus -0E-398 -> -1E-398 -ddnextm184 nextminus -1E-398 -> -2E-398 -ddnextm185 nextminus -2E-398 -> -3E-398 -ddnextm186 nextminus -10E-398 -> -1.1E-397 -ddnextm187 nextminus -100E-398 -> -1.01E-396 -ddnextm188 nextminus -100000E-398 -> -1.00001E-393 -ddnextm189 nextminus -1.00000000000E-383 -> -1.000000000000001E-383 -ddnextm190 nextminus -1.000000000000000E-383 -> -1.000000000000001E-383 -ddnextm191 nextminus -1E-383 -> -1.000000000000001E-383 -ddnextm192 nextminus -9.999999999999998E+384 -> -9.999999999999999E+384 -ddnextm193 nextminus -9.999999999999999E+384 -> -Infinity - --- Null tests -ddnextm900 nextminus # -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddNextMinus.decTest -- decDouble next that is less [754r nextdown] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +ddnextm001 nextminus 0.9999999999999995 -> 0.9999999999999994 +ddnextm002 nextminus 0.9999999999999996 -> 0.9999999999999995 +ddnextm003 nextminus 0.9999999999999997 -> 0.9999999999999996 +ddnextm004 nextminus 0.9999999999999998 -> 0.9999999999999997 +ddnextm005 nextminus 0.9999999999999999 -> 0.9999999999999998 +ddnextm006 nextminus 1.000000000000000 -> 0.9999999999999999 +ddnextm007 nextminus 1.0 -> 0.9999999999999999 +ddnextm008 nextminus 1 -> 0.9999999999999999 +ddnextm009 nextminus 1.000000000000001 -> 1.000000000000000 +ddnextm010 nextminus 1.000000000000002 -> 1.000000000000001 +ddnextm011 nextminus 1.000000000000003 -> 1.000000000000002 +ddnextm012 nextminus 1.000000000000004 -> 1.000000000000003 +ddnextm013 nextminus 1.000000000000005 -> 1.000000000000004 +ddnextm014 nextminus 1.000000000000006 -> 1.000000000000005 +ddnextm015 nextminus 1.000000000000007 -> 1.000000000000006 +ddnextm016 nextminus 1.000000000000008 -> 1.000000000000007 +ddnextm017 nextminus 1.000000000000009 -> 1.000000000000008 +ddnextm018 nextminus 1.000000000000010 -> 1.000000000000009 +ddnextm019 nextminus 1.000000000000011 -> 1.000000000000010 +ddnextm020 nextminus 1.000000000000012 -> 1.000000000000011 + +ddnextm021 nextminus -0.9999999999999995 -> -0.9999999999999996 +ddnextm022 nextminus -0.9999999999999996 -> -0.9999999999999997 +ddnextm023 nextminus -0.9999999999999997 -> -0.9999999999999998 +ddnextm024 nextminus -0.9999999999999998 -> -0.9999999999999999 +ddnextm025 nextminus -0.9999999999999999 -> -1.000000000000000 +ddnextm026 nextminus -1.000000000000000 -> -1.000000000000001 +ddnextm027 nextminus -1.0 -> -1.000000000000001 +ddnextm028 nextminus -1 -> -1.000000000000001 +ddnextm029 nextminus -1.000000000000001 -> -1.000000000000002 +ddnextm030 nextminus -1.000000000000002 -> -1.000000000000003 +ddnextm031 nextminus -1.000000000000003 -> -1.000000000000004 +ddnextm032 nextminus -1.000000000000004 -> -1.000000000000005 +ddnextm033 nextminus -1.000000000000005 -> -1.000000000000006 +ddnextm034 nextminus -1.000000000000006 -> -1.000000000000007 +ddnextm035 nextminus -1.000000000000007 -> -1.000000000000008 +ddnextm036 nextminus -1.000000000000008 -> -1.000000000000009 +ddnextm037 nextminus -1.000000000000009 -> -1.000000000000010 +ddnextm038 nextminus -1.000000000000010 -> -1.000000000000011 +ddnextm039 nextminus -1.000000000000011 -> -1.000000000000012 + +-- ultra-tiny inputs +ddnextm062 nextminus 1E-398 -> 0E-398 +ddnextm065 nextminus -1E-398 -> -2E-398 + +-- Zeros +ddnextm100 nextminus -0 -> -1E-398 +ddnextm101 nextminus 0 -> -1E-398 +ddnextm102 nextminus 0.00 -> -1E-398 +ddnextm103 nextminus -0.00 -> -1E-398 +ddnextm104 nextminus 0E-300 -> -1E-398 +ddnextm105 nextminus 0E+300 -> -1E-398 +ddnextm106 nextminus 0E+30000 -> -1E-398 +ddnextm107 nextminus -0E+30000 -> -1E-398 + +-- specials +ddnextm150 nextminus Inf -> 9.999999999999999E+384 +ddnextm151 nextminus -Inf -> -Infinity +ddnextm152 nextminus NaN -> NaN +ddnextm153 nextminus sNaN -> NaN Invalid_operation +ddnextm154 nextminus NaN77 -> NaN77 +ddnextm155 nextminus sNaN88 -> NaN88 Invalid_operation +ddnextm156 nextminus -NaN -> -NaN +ddnextm157 nextminus -sNaN -> -NaN Invalid_operation +ddnextm158 nextminus -NaN77 -> -NaN77 +ddnextm159 nextminus -sNaN88 -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +ddnextm170 nextminus 9.999999999999999E+384 -> 9.999999999999998E+384 +ddnextm171 nextminus 9.999999999999998E+384 -> 9.999999999999997E+384 +ddnextm172 nextminus 1E-383 -> 9.99999999999999E-384 +ddnextm173 nextminus 1.000000000000000E-383 -> 9.99999999999999E-384 +ddnextm174 nextminus 9E-398 -> 8E-398 +ddnextm175 nextminus 9.9E-397 -> 9.8E-397 +ddnextm176 nextminus 9.99999999999E-387 -> 9.99999999998E-387 +ddnextm177 nextminus 9.99999999999999E-384 -> 9.99999999999998E-384 +ddnextm178 nextminus 9.99999999999998E-384 -> 9.99999999999997E-384 +ddnextm179 nextminus 9.99999999999997E-384 -> 9.99999999999996E-384 +ddnextm180 nextminus 0E-398 -> -1E-398 +ddnextm181 nextminus 1E-398 -> 0E-398 +ddnextm182 nextminus 2E-398 -> 1E-398 + +ddnextm183 nextminus -0E-398 -> -1E-398 +ddnextm184 nextminus -1E-398 -> -2E-398 +ddnextm185 nextminus -2E-398 -> -3E-398 +ddnextm186 nextminus -10E-398 -> -1.1E-397 +ddnextm187 nextminus -100E-398 -> -1.01E-396 +ddnextm188 nextminus -100000E-398 -> -1.00001E-393 +ddnextm189 nextminus -1.00000000000E-383 -> -1.000000000000001E-383 +ddnextm190 nextminus -1.000000000000000E-383 -> -1.000000000000001E-383 +ddnextm191 nextminus -1E-383 -> -1.000000000000001E-383 +ddnextm192 nextminus -9.999999999999998E+384 -> -9.999999999999999E+384 +ddnextm193 nextminus -9.999999999999999E+384 -> -Infinity + +-- Null tests +ddnextm900 nextminus # -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddNextPlus.decTest b/Lib/test/decimaltestdata/ddNextPlus.decTest index 4a749a1..d41dfba 100644 --- a/Lib/test/decimaltestdata/ddNextPlus.decTest +++ b/Lib/test/decimaltestdata/ddNextPlus.decTest @@ -1,124 +1,124 @@ ------------------------------------------------------------------------- --- ddNextPlus.decTest -- decDouble next that is greater [754r nextup] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -ddnextp001 nextplus 0.9999999999999995 -> 0.9999999999999996 -ddnextp002 nextplus 0.9999999999999996 -> 0.9999999999999997 -ddnextp003 nextplus 0.9999999999999997 -> 0.9999999999999998 -ddnextp004 nextplus 0.9999999999999998 -> 0.9999999999999999 -ddnextp005 nextplus 0.9999999999999999 -> 1.000000000000000 -ddnextp006 nextplus 1.000000000000000 -> 1.000000000000001 -ddnextp007 nextplus 1.0 -> 1.000000000000001 -ddnextp008 nextplus 1 -> 1.000000000000001 -ddnextp009 nextplus 1.000000000000001 -> 1.000000000000002 -ddnextp010 nextplus 1.000000000000002 -> 1.000000000000003 -ddnextp011 nextplus 1.000000000000003 -> 1.000000000000004 -ddnextp012 nextplus 1.000000000000004 -> 1.000000000000005 -ddnextp013 nextplus 1.000000000000005 -> 1.000000000000006 -ddnextp014 nextplus 1.000000000000006 -> 1.000000000000007 -ddnextp015 nextplus 1.000000000000007 -> 1.000000000000008 -ddnextp016 nextplus 1.000000000000008 -> 1.000000000000009 -ddnextp017 nextplus 1.000000000000009 -> 1.000000000000010 -ddnextp018 nextplus 1.000000000000010 -> 1.000000000000011 -ddnextp019 nextplus 1.000000000000011 -> 1.000000000000012 - -ddnextp021 nextplus -0.9999999999999995 -> -0.9999999999999994 -ddnextp022 nextplus -0.9999999999999996 -> -0.9999999999999995 -ddnextp023 nextplus -0.9999999999999997 -> -0.9999999999999996 -ddnextp024 nextplus -0.9999999999999998 -> -0.9999999999999997 -ddnextp025 nextplus -0.9999999999999999 -> -0.9999999999999998 -ddnextp026 nextplus -1.000000000000000 -> -0.9999999999999999 -ddnextp027 nextplus -1.0 -> -0.9999999999999999 -ddnextp028 nextplus -1 -> -0.9999999999999999 -ddnextp029 nextplus -1.000000000000001 -> -1.000000000000000 -ddnextp030 nextplus -1.000000000000002 -> -1.000000000000001 -ddnextp031 nextplus -1.000000000000003 -> -1.000000000000002 -ddnextp032 nextplus -1.000000000000004 -> -1.000000000000003 -ddnextp033 nextplus -1.000000000000005 -> -1.000000000000004 -ddnextp034 nextplus -1.000000000000006 -> -1.000000000000005 -ddnextp035 nextplus -1.000000000000007 -> -1.000000000000006 -ddnextp036 nextplus -1.000000000000008 -> -1.000000000000007 -ddnextp037 nextplus -1.000000000000009 -> -1.000000000000008 -ddnextp038 nextplus -1.000000000000010 -> -1.000000000000009 -ddnextp039 nextplus -1.000000000000011 -> -1.000000000000010 -ddnextp040 nextplus -1.000000000000012 -> -1.000000000000011 - --- Zeros -ddnextp100 nextplus 0 -> 1E-398 -ddnextp101 nextplus 0.00 -> 1E-398 -ddnextp102 nextplus 0E-300 -> 1E-398 -ddnextp103 nextplus 0E+300 -> 1E-398 -ddnextp104 nextplus 0E+30000 -> 1E-398 -ddnextp105 nextplus -0 -> 1E-398 -ddnextp106 nextplus -0.00 -> 1E-398 -ddnextp107 nextplus -0E-300 -> 1E-398 -ddnextp108 nextplus -0E+300 -> 1E-398 -ddnextp109 nextplus -0E+30000 -> 1E-398 - --- specials -ddnextp150 nextplus Inf -> Infinity -ddnextp151 nextplus -Inf -> -9.999999999999999E+384 -ddnextp152 nextplus NaN -> NaN -ddnextp153 nextplus sNaN -> NaN Invalid_operation -ddnextp154 nextplus NaN77 -> NaN77 -ddnextp155 nextplus sNaN88 -> NaN88 Invalid_operation -ddnextp156 nextplus -NaN -> -NaN -ddnextp157 nextplus -sNaN -> -NaN Invalid_operation -ddnextp158 nextplus -NaN77 -> -NaN77 -ddnextp159 nextplus -sNaN88 -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -ddnextp170 nextplus -9.999999999999999E+384 -> -9.999999999999998E+384 -ddnextp171 nextplus -9.999999999999998E+384 -> -9.999999999999997E+384 -ddnextp172 nextplus -1E-383 -> -9.99999999999999E-384 -ddnextp173 nextplus -1.000000000000000E-383 -> -9.99999999999999E-384 -ddnextp174 nextplus -9E-398 -> -8E-398 -ddnextp175 nextplus -9.9E-397 -> -9.8E-397 -ddnextp176 nextplus -9.99999999999E-387 -> -9.99999999998E-387 -ddnextp177 nextplus -9.99999999999999E-384 -> -9.99999999999998E-384 -ddnextp178 nextplus -9.99999999999998E-384 -> -9.99999999999997E-384 -ddnextp179 nextplus -9.99999999999997E-384 -> -9.99999999999996E-384 -ddnextp180 nextplus -0E-398 -> 1E-398 -ddnextp181 nextplus -1E-398 -> -0E-398 -ddnextp182 nextplus -2E-398 -> -1E-398 - -ddnextp183 nextplus 0E-398 -> 1E-398 -ddnextp184 nextplus 1E-398 -> 2E-398 -ddnextp185 nextplus 2E-398 -> 3E-398 -ddnextp186 nextplus 10E-398 -> 1.1E-397 -ddnextp187 nextplus 100E-398 -> 1.01E-396 -ddnextp188 nextplus 100000E-398 -> 1.00001E-393 -ddnextp189 nextplus 1.00000000000E-383 -> 1.000000000000001E-383 -ddnextp190 nextplus 1.000000000000000E-383 -> 1.000000000000001E-383 -ddnextp191 nextplus 1E-383 -> 1.000000000000001E-383 -ddnextp192 nextplus 9.999999999999998E+384 -> 9.999999999999999E+384 -ddnextp193 nextplus 9.999999999999999E+384 -> Infinity - --- Null tests -ddnextp900 nextplus # -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddNextPlus.decTest -- decDouble next that is greater [754r nextup] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +ddnextp001 nextplus 0.9999999999999995 -> 0.9999999999999996 +ddnextp002 nextplus 0.9999999999999996 -> 0.9999999999999997 +ddnextp003 nextplus 0.9999999999999997 -> 0.9999999999999998 +ddnextp004 nextplus 0.9999999999999998 -> 0.9999999999999999 +ddnextp005 nextplus 0.9999999999999999 -> 1.000000000000000 +ddnextp006 nextplus 1.000000000000000 -> 1.000000000000001 +ddnextp007 nextplus 1.0 -> 1.000000000000001 +ddnextp008 nextplus 1 -> 1.000000000000001 +ddnextp009 nextplus 1.000000000000001 -> 1.000000000000002 +ddnextp010 nextplus 1.000000000000002 -> 1.000000000000003 +ddnextp011 nextplus 1.000000000000003 -> 1.000000000000004 +ddnextp012 nextplus 1.000000000000004 -> 1.000000000000005 +ddnextp013 nextplus 1.000000000000005 -> 1.000000000000006 +ddnextp014 nextplus 1.000000000000006 -> 1.000000000000007 +ddnextp015 nextplus 1.000000000000007 -> 1.000000000000008 +ddnextp016 nextplus 1.000000000000008 -> 1.000000000000009 +ddnextp017 nextplus 1.000000000000009 -> 1.000000000000010 +ddnextp018 nextplus 1.000000000000010 -> 1.000000000000011 +ddnextp019 nextplus 1.000000000000011 -> 1.000000000000012 + +ddnextp021 nextplus -0.9999999999999995 -> -0.9999999999999994 +ddnextp022 nextplus -0.9999999999999996 -> -0.9999999999999995 +ddnextp023 nextplus -0.9999999999999997 -> -0.9999999999999996 +ddnextp024 nextplus -0.9999999999999998 -> -0.9999999999999997 +ddnextp025 nextplus -0.9999999999999999 -> -0.9999999999999998 +ddnextp026 nextplus -1.000000000000000 -> -0.9999999999999999 +ddnextp027 nextplus -1.0 -> -0.9999999999999999 +ddnextp028 nextplus -1 -> -0.9999999999999999 +ddnextp029 nextplus -1.000000000000001 -> -1.000000000000000 +ddnextp030 nextplus -1.000000000000002 -> -1.000000000000001 +ddnextp031 nextplus -1.000000000000003 -> -1.000000000000002 +ddnextp032 nextplus -1.000000000000004 -> -1.000000000000003 +ddnextp033 nextplus -1.000000000000005 -> -1.000000000000004 +ddnextp034 nextplus -1.000000000000006 -> -1.000000000000005 +ddnextp035 nextplus -1.000000000000007 -> -1.000000000000006 +ddnextp036 nextplus -1.000000000000008 -> -1.000000000000007 +ddnextp037 nextplus -1.000000000000009 -> -1.000000000000008 +ddnextp038 nextplus -1.000000000000010 -> -1.000000000000009 +ddnextp039 nextplus -1.000000000000011 -> -1.000000000000010 +ddnextp040 nextplus -1.000000000000012 -> -1.000000000000011 + +-- Zeros +ddnextp100 nextplus 0 -> 1E-398 +ddnextp101 nextplus 0.00 -> 1E-398 +ddnextp102 nextplus 0E-300 -> 1E-398 +ddnextp103 nextplus 0E+300 -> 1E-398 +ddnextp104 nextplus 0E+30000 -> 1E-398 +ddnextp105 nextplus -0 -> 1E-398 +ddnextp106 nextplus -0.00 -> 1E-398 +ddnextp107 nextplus -0E-300 -> 1E-398 +ddnextp108 nextplus -0E+300 -> 1E-398 +ddnextp109 nextplus -0E+30000 -> 1E-398 + +-- specials +ddnextp150 nextplus Inf -> Infinity +ddnextp151 nextplus -Inf -> -9.999999999999999E+384 +ddnextp152 nextplus NaN -> NaN +ddnextp153 nextplus sNaN -> NaN Invalid_operation +ddnextp154 nextplus NaN77 -> NaN77 +ddnextp155 nextplus sNaN88 -> NaN88 Invalid_operation +ddnextp156 nextplus -NaN -> -NaN +ddnextp157 nextplus -sNaN -> -NaN Invalid_operation +ddnextp158 nextplus -NaN77 -> -NaN77 +ddnextp159 nextplus -sNaN88 -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +ddnextp170 nextplus -9.999999999999999E+384 -> -9.999999999999998E+384 +ddnextp171 nextplus -9.999999999999998E+384 -> -9.999999999999997E+384 +ddnextp172 nextplus -1E-383 -> -9.99999999999999E-384 +ddnextp173 nextplus -1.000000000000000E-383 -> -9.99999999999999E-384 +ddnextp174 nextplus -9E-398 -> -8E-398 +ddnextp175 nextplus -9.9E-397 -> -9.8E-397 +ddnextp176 nextplus -9.99999999999E-387 -> -9.99999999998E-387 +ddnextp177 nextplus -9.99999999999999E-384 -> -9.99999999999998E-384 +ddnextp178 nextplus -9.99999999999998E-384 -> -9.99999999999997E-384 +ddnextp179 nextplus -9.99999999999997E-384 -> -9.99999999999996E-384 +ddnextp180 nextplus -0E-398 -> 1E-398 +ddnextp181 nextplus -1E-398 -> -0E-398 +ddnextp182 nextplus -2E-398 -> -1E-398 + +ddnextp183 nextplus 0E-398 -> 1E-398 +ddnextp184 nextplus 1E-398 -> 2E-398 +ddnextp185 nextplus 2E-398 -> 3E-398 +ddnextp186 nextplus 10E-398 -> 1.1E-397 +ddnextp187 nextplus 100E-398 -> 1.01E-396 +ddnextp188 nextplus 100000E-398 -> 1.00001E-393 +ddnextp189 nextplus 1.00000000000E-383 -> 1.000000000000001E-383 +ddnextp190 nextplus 1.000000000000000E-383 -> 1.000000000000001E-383 +ddnextp191 nextplus 1E-383 -> 1.000000000000001E-383 +ddnextp192 nextplus 9.999999999999998E+384 -> 9.999999999999999E+384 +ddnextp193 nextplus 9.999999999999999E+384 -> Infinity + +-- Null tests +ddnextp900 nextplus # -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddNextToward.decTest b/Lib/test/decimaltestdata/ddNextToward.decTest index 75386ad..f9e474d 100644 --- a/Lib/test/decimaltestdata/ddNextToward.decTest +++ b/Lib/test/decimaltestdata/ddNextToward.decTest @@ -1,374 +1,374 @@ ------------------------------------------------------------------------- --- ddNextToward.decTest -- decDouble next toward rhs [754r nextafter] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check with a scattering of numerics -ddnextt001 nexttoward 10 10 -> 10 -ddnextt002 nexttoward -10 -10 -> -10 -ddnextt003 nexttoward 1 10 -> 1.000000000000001 -ddnextt004 nexttoward 1 -10 -> 0.9999999999999999 -ddnextt005 nexttoward -1 10 -> -0.9999999999999999 -ddnextt006 nexttoward -1 -10 -> -1.000000000000001 -ddnextt007 nexttoward 0 10 -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt008 nexttoward 0 -10 -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt009 nexttoward 9.999999999999999E+384 +Infinity -> Infinity Overflow Inexact Rounded -ddnextt010 nexttoward -9.999999999999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded -ddnextt011 nexttoward 9.999999999999999 10 -> 10.00000000000000 -ddnextt012 nexttoward 10 9.999999999999999 -> 9.999999999999999 -ddnextt013 nexttoward -9.999999999999999 -10 -> -10.00000000000000 -ddnextt014 nexttoward -10 -9.999999999999999 -> -9.999999999999999 -ddnextt015 nexttoward 9.999999999999998 10 -> 9.999999999999999 -ddnextt016 nexttoward 10 9.999999999999998 -> 9.999999999999999 -ddnextt017 nexttoward -9.999999999999998 -10 -> -9.999999999999999 -ddnextt018 nexttoward -10 -9.999999999999998 -> -9.999999999999999 - -------- lhs=rhs --- finites -ddnextt101 nexttoward 7 7 -> 7 -ddnextt102 nexttoward -7 -7 -> -7 -ddnextt103 nexttoward 75 75 -> 75 -ddnextt104 nexttoward -75 -75 -> -75 -ddnextt105 nexttoward 7.50 7.5 -> 7.50 -ddnextt106 nexttoward -7.50 -7.50 -> -7.50 -ddnextt107 nexttoward 7.500 7.5000 -> 7.500 -ddnextt108 nexttoward -7.500 -7.5 -> -7.500 - --- zeros -ddnextt111 nexttoward 0 0 -> 0 -ddnextt112 nexttoward -0 -0 -> -0 -ddnextt113 nexttoward 0E+4 0 -> 0E+4 -ddnextt114 nexttoward -0E+4 -0 -> -0E+4 -ddnextt115 nexttoward 0.00000000000 0.000000000000 -> 0E-11 -ddnextt116 nexttoward -0.00000000000 -0.00 -> -0E-11 -ddnextt117 nexttoward 0E-141 0 -> 0E-141 -ddnextt118 nexttoward -0E-141 -000 -> -0E-141 - --- full coefficients, alternating bits -ddnextt121 nexttoward 268268268 268268268 -> 268268268 -ddnextt122 nexttoward -268268268 -268268268 -> -268268268 -ddnextt123 nexttoward 134134134 134134134 -> 134134134 -ddnextt124 nexttoward -134134134 -134134134 -> -134134134 - --- Nmax, Nmin, Ntiny -ddnextt131 nexttoward 9.999999999999999E+384 9.999999999999999E+384 -> 9.999999999999999E+384 -ddnextt132 nexttoward 1E-383 1E-383 -> 1E-383 -ddnextt133 nexttoward 1.000000000000000E-383 1.000000000000000E-383 -> 1.000000000000000E-383 -ddnextt134 nexttoward 1E-398 1E-398 -> 1E-398 - -ddnextt135 nexttoward -1E-398 -1E-398 -> -1E-398 -ddnextt136 nexttoward -1.000000000000000E-383 -1.000000000000000E-383 -> -1.000000000000000E-383 -ddnextt137 nexttoward -1E-383 -1E-383 -> -1E-383 -ddnextt138 nexttoward -9.999999999999999E+384 -9.999999999999999E+384 -> -9.999999999999999E+384 - -------- lhs 0.9999999999999996 -ddnextt202 nexttoward 0.9999999999999996 Infinity -> 0.9999999999999997 -ddnextt203 nexttoward 0.9999999999999997 Infinity -> 0.9999999999999998 -ddnextt204 nexttoward 0.9999999999999998 Infinity -> 0.9999999999999999 -ddnextt205 nexttoward 0.9999999999999999 Infinity -> 1.000000000000000 -ddnextt206 nexttoward 1.000000000000000 Infinity -> 1.000000000000001 -ddnextt207 nexttoward 1.0 Infinity -> 1.000000000000001 -ddnextt208 nexttoward 1 Infinity -> 1.000000000000001 -ddnextt209 nexttoward 1.000000000000001 Infinity -> 1.000000000000002 -ddnextt210 nexttoward 1.000000000000002 Infinity -> 1.000000000000003 -ddnextt211 nexttoward 1.000000000000003 Infinity -> 1.000000000000004 -ddnextt212 nexttoward 1.000000000000004 Infinity -> 1.000000000000005 -ddnextt213 nexttoward 1.000000000000005 Infinity -> 1.000000000000006 -ddnextt214 nexttoward 1.000000000000006 Infinity -> 1.000000000000007 -ddnextt215 nexttoward 1.000000000000007 Infinity -> 1.000000000000008 -ddnextt216 nexttoward 1.000000000000008 Infinity -> 1.000000000000009 -ddnextt217 nexttoward 1.000000000000009 Infinity -> 1.000000000000010 -ddnextt218 nexttoward 1.000000000000010 Infinity -> 1.000000000000011 -ddnextt219 nexttoward 1.000000000000011 Infinity -> 1.000000000000012 - -ddnextt221 nexttoward -0.9999999999999995 Infinity -> -0.9999999999999994 -ddnextt222 nexttoward -0.9999999999999996 Infinity -> -0.9999999999999995 -ddnextt223 nexttoward -0.9999999999999997 Infinity -> -0.9999999999999996 -ddnextt224 nexttoward -0.9999999999999998 Infinity -> -0.9999999999999997 -ddnextt225 nexttoward -0.9999999999999999 Infinity -> -0.9999999999999998 -ddnextt226 nexttoward -1.000000000000000 Infinity -> -0.9999999999999999 -ddnextt227 nexttoward -1.0 Infinity -> -0.9999999999999999 -ddnextt228 nexttoward -1 Infinity -> -0.9999999999999999 -ddnextt229 nexttoward -1.000000000000001 Infinity -> -1.000000000000000 -ddnextt230 nexttoward -1.000000000000002 Infinity -> -1.000000000000001 -ddnextt231 nexttoward -1.000000000000003 Infinity -> -1.000000000000002 -ddnextt232 nexttoward -1.000000000000004 Infinity -> -1.000000000000003 -ddnextt233 nexttoward -1.000000000000005 Infinity -> -1.000000000000004 -ddnextt234 nexttoward -1.000000000000006 Infinity -> -1.000000000000005 -ddnextt235 nexttoward -1.000000000000007 Infinity -> -1.000000000000006 -ddnextt236 nexttoward -1.000000000000008 Infinity -> -1.000000000000007 -ddnextt237 nexttoward -1.000000000000009 Infinity -> -1.000000000000008 -ddnextt238 nexttoward -1.000000000000010 Infinity -> -1.000000000000009 -ddnextt239 nexttoward -1.000000000000011 Infinity -> -1.000000000000010 -ddnextt240 nexttoward -1.000000000000012 Infinity -> -1.000000000000011 - --- Zeros -ddnextt300 nexttoward 0 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt301 nexttoward 0.00 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt302 nexttoward 0E-300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt303 nexttoward 0E+300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt304 nexttoward 0E+30000 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt305 nexttoward -0 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt306 nexttoward -0.00 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt307 nexttoward -0E-300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt308 nexttoward -0E+300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt309 nexttoward -0E+30000 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded - --- specials -ddnextt350 nexttoward Inf Infinity -> Infinity -ddnextt351 nexttoward -Inf Infinity -> -9.999999999999999E+384 -ddnextt352 nexttoward NaN Infinity -> NaN -ddnextt353 nexttoward sNaN Infinity -> NaN Invalid_operation -ddnextt354 nexttoward NaN77 Infinity -> NaN77 -ddnextt355 nexttoward sNaN88 Infinity -> NaN88 Invalid_operation -ddnextt356 nexttoward -NaN Infinity -> -NaN -ddnextt357 nexttoward -sNaN Infinity -> -NaN Invalid_operation -ddnextt358 nexttoward -NaN77 Infinity -> -NaN77 -ddnextt359 nexttoward -sNaN88 Infinity -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -ddnextt370 nexttoward -9.999999999999999E+384 Infinity -> -9.999999999999998E+384 -ddnextt371 nexttoward -9.999999999999998E+384 Infinity -> -9.999999999999997E+384 -ddnextt372 nexttoward -1E-383 Infinity -> -9.99999999999999E-384 Underflow Subnormal Inexact Rounded -ddnextt373 nexttoward -1.000000000000000E-383 Infinity -> -9.99999999999999E-384 Underflow Subnormal Inexact Rounded -ddnextt374 nexttoward -9E-398 Infinity -> -8E-398 Underflow Subnormal Inexact Rounded -ddnextt375 nexttoward -9.9E-397 Infinity -> -9.8E-397 Underflow Subnormal Inexact Rounded -ddnextt376 nexttoward -9.99999999999E-387 Infinity -> -9.99999999998E-387 Underflow Subnormal Inexact Rounded -ddnextt377 nexttoward -9.99999999999999E-384 Infinity -> -9.99999999999998E-384 Underflow Subnormal Inexact Rounded -ddnextt378 nexttoward -9.99999999999998E-384 Infinity -> -9.99999999999997E-384 Underflow Subnormal Inexact Rounded -ddnextt379 nexttoward -9.99999999999997E-384 Infinity -> -9.99999999999996E-384 Underflow Subnormal Inexact Rounded -ddnextt380 nexttoward -0E-398 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt381 nexttoward -1E-398 Infinity -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddnextt382 nexttoward -2E-398 Infinity -> -1E-398 Underflow Subnormal Inexact Rounded - -ddnextt383 nexttoward 0E-398 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt384 nexttoward 1E-398 Infinity -> 2E-398 Underflow Subnormal Inexact Rounded -ddnextt385 nexttoward 2E-398 Infinity -> 3E-398 Underflow Subnormal Inexact Rounded -ddnextt386 nexttoward 10E-398 Infinity -> 1.1E-397 Underflow Subnormal Inexact Rounded -ddnextt387 nexttoward 100E-398 Infinity -> 1.01E-396 Underflow Subnormal Inexact Rounded -ddnextt388 nexttoward 100000E-398 Infinity -> 1.00001E-393 Underflow Subnormal Inexact Rounded -ddnextt389 nexttoward 1.00000000000E-383 Infinity -> 1.000000000000001E-383 -ddnextt390 nexttoward 1.000000000000000E-383 Infinity -> 1.000000000000001E-383 -ddnextt391 nexttoward 1E-383 Infinity -> 1.000000000000001E-383 -ddnextt392 nexttoward 9.999999999999997E+384 Infinity -> 9.999999999999998E+384 -ddnextt393 nexttoward 9.999999999999998E+384 Infinity -> 9.999999999999999E+384 -ddnextt394 nexttoward 9.999999999999999E+384 Infinity -> Infinity Overflow Inexact Rounded - -------- lhs>rhs -ddnextt401 nexttoward 0.9999999999999995 -Infinity -> 0.9999999999999994 -ddnextt402 nexttoward 0.9999999999999996 -Infinity -> 0.9999999999999995 -ddnextt403 nexttoward 0.9999999999999997 -Infinity -> 0.9999999999999996 -ddnextt404 nexttoward 0.9999999999999998 -Infinity -> 0.9999999999999997 -ddnextt405 nexttoward 0.9999999999999999 -Infinity -> 0.9999999999999998 -ddnextt406 nexttoward 1.000000000000000 -Infinity -> 0.9999999999999999 -ddnextt407 nexttoward 1.0 -Infinity -> 0.9999999999999999 -ddnextt408 nexttoward 1 -Infinity -> 0.9999999999999999 -ddnextt409 nexttoward 1.000000000000001 -Infinity -> 1.000000000000000 -ddnextt410 nexttoward 1.000000000000002 -Infinity -> 1.000000000000001 -ddnextt411 nexttoward 1.000000000000003 -Infinity -> 1.000000000000002 -ddnextt412 nexttoward 1.000000000000004 -Infinity -> 1.000000000000003 -ddnextt413 nexttoward 1.000000000000005 -Infinity -> 1.000000000000004 -ddnextt414 nexttoward 1.000000000000006 -Infinity -> 1.000000000000005 -ddnextt415 nexttoward 1.000000000000007 -Infinity -> 1.000000000000006 -ddnextt416 nexttoward 1.000000000000008 -Infinity -> 1.000000000000007 -ddnextt417 nexttoward 1.000000000000009 -Infinity -> 1.000000000000008 -ddnextt418 nexttoward 1.000000000000010 -Infinity -> 1.000000000000009 -ddnextt419 nexttoward 1.000000000000011 -Infinity -> 1.000000000000010 -ddnextt420 nexttoward 1.000000000000012 -Infinity -> 1.000000000000011 - -ddnextt421 nexttoward -0.9999999999999995 -Infinity -> -0.9999999999999996 -ddnextt422 nexttoward -0.9999999999999996 -Infinity -> -0.9999999999999997 -ddnextt423 nexttoward -0.9999999999999997 -Infinity -> -0.9999999999999998 -ddnextt424 nexttoward -0.9999999999999998 -Infinity -> -0.9999999999999999 -ddnextt425 nexttoward -0.9999999999999999 -Infinity -> -1.000000000000000 -ddnextt426 nexttoward -1.000000000000000 -Infinity -> -1.000000000000001 -ddnextt427 nexttoward -1.0 -Infinity -> -1.000000000000001 -ddnextt428 nexttoward -1 -Infinity -> -1.000000000000001 -ddnextt429 nexttoward -1.000000000000001 -Infinity -> -1.000000000000002 -ddnextt430 nexttoward -1.000000000000002 -Infinity -> -1.000000000000003 -ddnextt431 nexttoward -1.000000000000003 -Infinity -> -1.000000000000004 -ddnextt432 nexttoward -1.000000000000004 -Infinity -> -1.000000000000005 -ddnextt433 nexttoward -1.000000000000005 -Infinity -> -1.000000000000006 -ddnextt434 nexttoward -1.000000000000006 -Infinity -> -1.000000000000007 -ddnextt435 nexttoward -1.000000000000007 -Infinity -> -1.000000000000008 -ddnextt436 nexttoward -1.000000000000008 -Infinity -> -1.000000000000009 -ddnextt437 nexttoward -1.000000000000009 -Infinity -> -1.000000000000010 -ddnextt438 nexttoward -1.000000000000010 -Infinity -> -1.000000000000011 -ddnextt439 nexttoward -1.000000000000011 -Infinity -> -1.000000000000012 - --- Zeros -ddnextt500 nexttoward -0 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt501 nexttoward 0 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt502 nexttoward 0.00 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt503 nexttoward -0.00 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt504 nexttoward 0E-300 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt505 nexttoward 0E+300 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt506 nexttoward 0E+30000 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt507 nexttoward -0E+30000 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded - --- specials -ddnextt550 nexttoward Inf -Infinity -> 9.999999999999999E+384 -ddnextt551 nexttoward -Inf -Infinity -> -Infinity -ddnextt552 nexttoward NaN -Infinity -> NaN -ddnextt553 nexttoward sNaN -Infinity -> NaN Invalid_operation -ddnextt554 nexttoward NaN77 -Infinity -> NaN77 -ddnextt555 nexttoward sNaN88 -Infinity -> NaN88 Invalid_operation -ddnextt556 nexttoward -NaN -Infinity -> -NaN -ddnextt557 nexttoward -sNaN -Infinity -> -NaN Invalid_operation -ddnextt558 nexttoward -NaN77 -Infinity -> -NaN77 -ddnextt559 nexttoward -sNaN88 -Infinity -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -ddnextt670 nexttoward 9.999999999999999E+384 -Infinity -> 9.999999999999998E+384 -ddnextt671 nexttoward 9.999999999999998E+384 -Infinity -> 9.999999999999997E+384 -ddnextt672 nexttoward 1E-383 -Infinity -> 9.99999999999999E-384 Underflow Subnormal Inexact Rounded -ddnextt673 nexttoward 1.000000000000000E-383 -Infinity -> 9.99999999999999E-384 Underflow Subnormal Inexact Rounded -ddnextt674 nexttoward 9E-398 -Infinity -> 8E-398 Underflow Subnormal Inexact Rounded -ddnextt675 nexttoward 9.9E-397 -Infinity -> 9.8E-397 Underflow Subnormal Inexact Rounded -ddnextt676 nexttoward 9.99999999999E-387 -Infinity -> 9.99999999998E-387 Underflow Subnormal Inexact Rounded -ddnextt677 nexttoward 9.99999999999999E-384 -Infinity -> 9.99999999999998E-384 Underflow Subnormal Inexact Rounded -ddnextt678 nexttoward 9.99999999999998E-384 -Infinity -> 9.99999999999997E-384 Underflow Subnormal Inexact Rounded -ddnextt679 nexttoward 9.99999999999997E-384 -Infinity -> 9.99999999999996E-384 Underflow Subnormal Inexact Rounded -ddnextt680 nexttoward 0E-398 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt681 nexttoward 1E-398 -Infinity -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddnextt682 nexttoward 2E-398 -Infinity -> 1E-398 Underflow Subnormal Inexact Rounded - -ddnextt683 nexttoward -0E-398 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt684 nexttoward -1E-398 -Infinity -> -2E-398 Underflow Subnormal Inexact Rounded -ddnextt685 nexttoward -2E-398 -Infinity -> -3E-398 Underflow Subnormal Inexact Rounded -ddnextt686 nexttoward -10E-398 -Infinity -> -1.1E-397 Underflow Subnormal Inexact Rounded -ddnextt687 nexttoward -100E-398 -Infinity -> -1.01E-396 Underflow Subnormal Inexact Rounded -ddnextt688 nexttoward -100000E-398 -Infinity -> -1.00001E-393 Underflow Subnormal Inexact Rounded -ddnextt689 nexttoward -1.00000000000E-383 -Infinity -> -1.000000000000001E-383 -ddnextt690 nexttoward -1.000000000000000E-383 -Infinity -> -1.000000000000001E-383 -ddnextt691 nexttoward -1E-383 -Infinity -> -1.000000000000001E-383 -ddnextt692 nexttoward -9.999999999999998E+384 -Infinity -> -9.999999999999999E+384 -ddnextt693 nexttoward -9.999999999999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded - -------- Specials -ddnextt780 nexttoward -Inf -Inf -> -Infinity -ddnextt781 nexttoward -Inf -1000 -> -9.999999999999999E+384 -ddnextt782 nexttoward -Inf -1 -> -9.999999999999999E+384 -ddnextt783 nexttoward -Inf -0 -> -9.999999999999999E+384 -ddnextt784 nexttoward -Inf 0 -> -9.999999999999999E+384 -ddnextt785 nexttoward -Inf 1 -> -9.999999999999999E+384 -ddnextt786 nexttoward -Inf 1000 -> -9.999999999999999E+384 -ddnextt787 nexttoward -1000 -Inf -> -1000.000000000001 -ddnextt788 nexttoward -Inf -Inf -> -Infinity -ddnextt789 nexttoward -1 -Inf -> -1.000000000000001 -ddnextt790 nexttoward -0 -Inf -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt791 nexttoward 0 -Inf -> -1E-398 Underflow Subnormal Inexact Rounded -ddnextt792 nexttoward 1 -Inf -> 0.9999999999999999 -ddnextt793 nexttoward 1000 -Inf -> 999.9999999999999 -ddnextt794 nexttoward Inf -Inf -> 9.999999999999999E+384 - -ddnextt800 nexttoward Inf -Inf -> 9.999999999999999E+384 -ddnextt801 nexttoward Inf -1000 -> 9.999999999999999E+384 -ddnextt802 nexttoward Inf -1 -> 9.999999999999999E+384 -ddnextt803 nexttoward Inf -0 -> 9.999999999999999E+384 -ddnextt804 nexttoward Inf 0 -> 9.999999999999999E+384 -ddnextt805 nexttoward Inf 1 -> 9.999999999999999E+384 -ddnextt806 nexttoward Inf 1000 -> 9.999999999999999E+384 -ddnextt807 nexttoward Inf Inf -> Infinity -ddnextt808 nexttoward -1000 Inf -> -999.9999999999999 -ddnextt809 nexttoward -Inf Inf -> -9.999999999999999E+384 -ddnextt810 nexttoward -1 Inf -> -0.9999999999999999 -ddnextt811 nexttoward -0 Inf -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt812 nexttoward 0 Inf -> 1E-398 Underflow Subnormal Inexact Rounded -ddnextt813 nexttoward 1 Inf -> 1.000000000000001 -ddnextt814 nexttoward 1000 Inf -> 1000.000000000001 -ddnextt815 nexttoward Inf Inf -> Infinity - -ddnextt821 nexttoward NaN -Inf -> NaN -ddnextt822 nexttoward NaN -1000 -> NaN -ddnextt823 nexttoward NaN -1 -> NaN -ddnextt824 nexttoward NaN -0 -> NaN -ddnextt825 nexttoward NaN 0 -> NaN -ddnextt826 nexttoward NaN 1 -> NaN -ddnextt827 nexttoward NaN 1000 -> NaN -ddnextt828 nexttoward NaN Inf -> NaN -ddnextt829 nexttoward NaN NaN -> NaN -ddnextt830 nexttoward -Inf NaN -> NaN -ddnextt831 nexttoward -1000 NaN -> NaN -ddnextt832 nexttoward -1 NaN -> NaN -ddnextt833 nexttoward -0 NaN -> NaN -ddnextt834 nexttoward 0 NaN -> NaN -ddnextt835 nexttoward 1 NaN -> NaN -ddnextt836 nexttoward 1000 NaN -> NaN -ddnextt837 nexttoward Inf NaN -> NaN - -ddnextt841 nexttoward sNaN -Inf -> NaN Invalid_operation -ddnextt842 nexttoward sNaN -1000 -> NaN Invalid_operation -ddnextt843 nexttoward sNaN -1 -> NaN Invalid_operation -ddnextt844 nexttoward sNaN -0 -> NaN Invalid_operation -ddnextt845 nexttoward sNaN 0 -> NaN Invalid_operation -ddnextt846 nexttoward sNaN 1 -> NaN Invalid_operation -ddnextt847 nexttoward sNaN 1000 -> NaN Invalid_operation -ddnextt848 nexttoward sNaN NaN -> NaN Invalid_operation -ddnextt849 nexttoward sNaN sNaN -> NaN Invalid_operation -ddnextt850 nexttoward NaN sNaN -> NaN Invalid_operation -ddnextt851 nexttoward -Inf sNaN -> NaN Invalid_operation -ddnextt852 nexttoward -1000 sNaN -> NaN Invalid_operation -ddnextt853 nexttoward -1 sNaN -> NaN Invalid_operation -ddnextt854 nexttoward -0 sNaN -> NaN Invalid_operation -ddnextt855 nexttoward 0 sNaN -> NaN Invalid_operation -ddnextt856 nexttoward 1 sNaN -> NaN Invalid_operation -ddnextt857 nexttoward 1000 sNaN -> NaN Invalid_operation -ddnextt858 nexttoward Inf sNaN -> NaN Invalid_operation -ddnextt859 nexttoward NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddnextt861 nexttoward NaN1 -Inf -> NaN1 -ddnextt862 nexttoward +NaN2 -1000 -> NaN2 -ddnextt863 nexttoward NaN3 1000 -> NaN3 -ddnextt864 nexttoward NaN4 Inf -> NaN4 -ddnextt865 nexttoward NaN5 +NaN6 -> NaN5 -ddnextt866 nexttoward -Inf NaN7 -> NaN7 -ddnextt867 nexttoward -1000 NaN8 -> NaN8 -ddnextt868 nexttoward 1000 NaN9 -> NaN9 -ddnextt869 nexttoward Inf +NaN10 -> NaN10 -ddnextt871 nexttoward sNaN11 -Inf -> NaN11 Invalid_operation -ddnextt872 nexttoward sNaN12 -1000 -> NaN12 Invalid_operation -ddnextt873 nexttoward sNaN13 1000 -> NaN13 Invalid_operation -ddnextt874 nexttoward sNaN14 NaN17 -> NaN14 Invalid_operation -ddnextt875 nexttoward sNaN15 sNaN18 -> NaN15 Invalid_operation -ddnextt876 nexttoward NaN16 sNaN19 -> NaN19 Invalid_operation -ddnextt877 nexttoward -Inf +sNaN20 -> NaN20 Invalid_operation -ddnextt878 nexttoward -1000 sNaN21 -> NaN21 Invalid_operation -ddnextt879 nexttoward 1000 sNaN22 -> NaN22 Invalid_operation -ddnextt880 nexttoward Inf sNaN23 -> NaN23 Invalid_operation -ddnextt881 nexttoward +NaN25 +sNaN24 -> NaN24 Invalid_operation -ddnextt882 nexttoward -NaN26 NaN28 -> -NaN26 -ddnextt883 nexttoward -sNaN27 sNaN29 -> -NaN27 Invalid_operation -ddnextt884 nexttoward 1000 -NaN30 -> -NaN30 -ddnextt885 nexttoward 1000 -sNaN31 -> -NaN31 Invalid_operation - --- Null tests -ddnextt900 nexttoward 1 # -> NaN Invalid_operation -ddnextt901 nexttoward # 1 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddNextToward.decTest -- decDouble next toward rhs [754r nextafter] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check with a scattering of numerics +ddnextt001 nexttoward 10 10 -> 10 +ddnextt002 nexttoward -10 -10 -> -10 +ddnextt003 nexttoward 1 10 -> 1.000000000000001 +ddnextt004 nexttoward 1 -10 -> 0.9999999999999999 +ddnextt005 nexttoward -1 10 -> -0.9999999999999999 +ddnextt006 nexttoward -1 -10 -> -1.000000000000001 +ddnextt007 nexttoward 0 10 -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt008 nexttoward 0 -10 -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt009 nexttoward 9.999999999999999E+384 +Infinity -> Infinity Overflow Inexact Rounded +ddnextt010 nexttoward -9.999999999999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded +ddnextt011 nexttoward 9.999999999999999 10 -> 10.00000000000000 +ddnextt012 nexttoward 10 9.999999999999999 -> 9.999999999999999 +ddnextt013 nexttoward -9.999999999999999 -10 -> -10.00000000000000 +ddnextt014 nexttoward -10 -9.999999999999999 -> -9.999999999999999 +ddnextt015 nexttoward 9.999999999999998 10 -> 9.999999999999999 +ddnextt016 nexttoward 10 9.999999999999998 -> 9.999999999999999 +ddnextt017 nexttoward -9.999999999999998 -10 -> -9.999999999999999 +ddnextt018 nexttoward -10 -9.999999999999998 -> -9.999999999999999 + +------- lhs=rhs +-- finites +ddnextt101 nexttoward 7 7 -> 7 +ddnextt102 nexttoward -7 -7 -> -7 +ddnextt103 nexttoward 75 75 -> 75 +ddnextt104 nexttoward -75 -75 -> -75 +ddnextt105 nexttoward 7.50 7.5 -> 7.50 +ddnextt106 nexttoward -7.50 -7.50 -> -7.50 +ddnextt107 nexttoward 7.500 7.5000 -> 7.500 +ddnextt108 nexttoward -7.500 -7.5 -> -7.500 + +-- zeros +ddnextt111 nexttoward 0 0 -> 0 +ddnextt112 nexttoward -0 -0 -> -0 +ddnextt113 nexttoward 0E+4 0 -> 0E+4 +ddnextt114 nexttoward -0E+4 -0 -> -0E+4 +ddnextt115 nexttoward 0.00000000000 0.000000000000 -> 0E-11 +ddnextt116 nexttoward -0.00000000000 -0.00 -> -0E-11 +ddnextt117 nexttoward 0E-141 0 -> 0E-141 +ddnextt118 nexttoward -0E-141 -000 -> -0E-141 + +-- full coefficients, alternating bits +ddnextt121 nexttoward 268268268 268268268 -> 268268268 +ddnextt122 nexttoward -268268268 -268268268 -> -268268268 +ddnextt123 nexttoward 134134134 134134134 -> 134134134 +ddnextt124 nexttoward -134134134 -134134134 -> -134134134 + +-- Nmax, Nmin, Ntiny +ddnextt131 nexttoward 9.999999999999999E+384 9.999999999999999E+384 -> 9.999999999999999E+384 +ddnextt132 nexttoward 1E-383 1E-383 -> 1E-383 +ddnextt133 nexttoward 1.000000000000000E-383 1.000000000000000E-383 -> 1.000000000000000E-383 +ddnextt134 nexttoward 1E-398 1E-398 -> 1E-398 + +ddnextt135 nexttoward -1E-398 -1E-398 -> -1E-398 +ddnextt136 nexttoward -1.000000000000000E-383 -1.000000000000000E-383 -> -1.000000000000000E-383 +ddnextt137 nexttoward -1E-383 -1E-383 -> -1E-383 +ddnextt138 nexttoward -9.999999999999999E+384 -9.999999999999999E+384 -> -9.999999999999999E+384 + +------- lhs 0.9999999999999996 +ddnextt202 nexttoward 0.9999999999999996 Infinity -> 0.9999999999999997 +ddnextt203 nexttoward 0.9999999999999997 Infinity -> 0.9999999999999998 +ddnextt204 nexttoward 0.9999999999999998 Infinity -> 0.9999999999999999 +ddnextt205 nexttoward 0.9999999999999999 Infinity -> 1.000000000000000 +ddnextt206 nexttoward 1.000000000000000 Infinity -> 1.000000000000001 +ddnextt207 nexttoward 1.0 Infinity -> 1.000000000000001 +ddnextt208 nexttoward 1 Infinity -> 1.000000000000001 +ddnextt209 nexttoward 1.000000000000001 Infinity -> 1.000000000000002 +ddnextt210 nexttoward 1.000000000000002 Infinity -> 1.000000000000003 +ddnextt211 nexttoward 1.000000000000003 Infinity -> 1.000000000000004 +ddnextt212 nexttoward 1.000000000000004 Infinity -> 1.000000000000005 +ddnextt213 nexttoward 1.000000000000005 Infinity -> 1.000000000000006 +ddnextt214 nexttoward 1.000000000000006 Infinity -> 1.000000000000007 +ddnextt215 nexttoward 1.000000000000007 Infinity -> 1.000000000000008 +ddnextt216 nexttoward 1.000000000000008 Infinity -> 1.000000000000009 +ddnextt217 nexttoward 1.000000000000009 Infinity -> 1.000000000000010 +ddnextt218 nexttoward 1.000000000000010 Infinity -> 1.000000000000011 +ddnextt219 nexttoward 1.000000000000011 Infinity -> 1.000000000000012 + +ddnextt221 nexttoward -0.9999999999999995 Infinity -> -0.9999999999999994 +ddnextt222 nexttoward -0.9999999999999996 Infinity -> -0.9999999999999995 +ddnextt223 nexttoward -0.9999999999999997 Infinity -> -0.9999999999999996 +ddnextt224 nexttoward -0.9999999999999998 Infinity -> -0.9999999999999997 +ddnextt225 nexttoward -0.9999999999999999 Infinity -> -0.9999999999999998 +ddnextt226 nexttoward -1.000000000000000 Infinity -> -0.9999999999999999 +ddnextt227 nexttoward -1.0 Infinity -> -0.9999999999999999 +ddnextt228 nexttoward -1 Infinity -> -0.9999999999999999 +ddnextt229 nexttoward -1.000000000000001 Infinity -> -1.000000000000000 +ddnextt230 nexttoward -1.000000000000002 Infinity -> -1.000000000000001 +ddnextt231 nexttoward -1.000000000000003 Infinity -> -1.000000000000002 +ddnextt232 nexttoward -1.000000000000004 Infinity -> -1.000000000000003 +ddnextt233 nexttoward -1.000000000000005 Infinity -> -1.000000000000004 +ddnextt234 nexttoward -1.000000000000006 Infinity -> -1.000000000000005 +ddnextt235 nexttoward -1.000000000000007 Infinity -> -1.000000000000006 +ddnextt236 nexttoward -1.000000000000008 Infinity -> -1.000000000000007 +ddnextt237 nexttoward -1.000000000000009 Infinity -> -1.000000000000008 +ddnextt238 nexttoward -1.000000000000010 Infinity -> -1.000000000000009 +ddnextt239 nexttoward -1.000000000000011 Infinity -> -1.000000000000010 +ddnextt240 nexttoward -1.000000000000012 Infinity -> -1.000000000000011 + +-- Zeros +ddnextt300 nexttoward 0 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt301 nexttoward 0.00 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt302 nexttoward 0E-300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt303 nexttoward 0E+300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt304 nexttoward 0E+30000 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt305 nexttoward -0 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt306 nexttoward -0.00 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt307 nexttoward -0E-300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt308 nexttoward -0E+300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt309 nexttoward -0E+30000 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded + +-- specials +ddnextt350 nexttoward Inf Infinity -> Infinity +ddnextt351 nexttoward -Inf Infinity -> -9.999999999999999E+384 +ddnextt352 nexttoward NaN Infinity -> NaN +ddnextt353 nexttoward sNaN Infinity -> NaN Invalid_operation +ddnextt354 nexttoward NaN77 Infinity -> NaN77 +ddnextt355 nexttoward sNaN88 Infinity -> NaN88 Invalid_operation +ddnextt356 nexttoward -NaN Infinity -> -NaN +ddnextt357 nexttoward -sNaN Infinity -> -NaN Invalid_operation +ddnextt358 nexttoward -NaN77 Infinity -> -NaN77 +ddnextt359 nexttoward -sNaN88 Infinity -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +ddnextt370 nexttoward -9.999999999999999E+384 Infinity -> -9.999999999999998E+384 +ddnextt371 nexttoward -9.999999999999998E+384 Infinity -> -9.999999999999997E+384 +ddnextt372 nexttoward -1E-383 Infinity -> -9.99999999999999E-384 Underflow Subnormal Inexact Rounded +ddnextt373 nexttoward -1.000000000000000E-383 Infinity -> -9.99999999999999E-384 Underflow Subnormal Inexact Rounded +ddnextt374 nexttoward -9E-398 Infinity -> -8E-398 Underflow Subnormal Inexact Rounded +ddnextt375 nexttoward -9.9E-397 Infinity -> -9.8E-397 Underflow Subnormal Inexact Rounded +ddnextt376 nexttoward -9.99999999999E-387 Infinity -> -9.99999999998E-387 Underflow Subnormal Inexact Rounded +ddnextt377 nexttoward -9.99999999999999E-384 Infinity -> -9.99999999999998E-384 Underflow Subnormal Inexact Rounded +ddnextt378 nexttoward -9.99999999999998E-384 Infinity -> -9.99999999999997E-384 Underflow Subnormal Inexact Rounded +ddnextt379 nexttoward -9.99999999999997E-384 Infinity -> -9.99999999999996E-384 Underflow Subnormal Inexact Rounded +ddnextt380 nexttoward -0E-398 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt381 nexttoward -1E-398 Infinity -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddnextt382 nexttoward -2E-398 Infinity -> -1E-398 Underflow Subnormal Inexact Rounded + +ddnextt383 nexttoward 0E-398 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt384 nexttoward 1E-398 Infinity -> 2E-398 Underflow Subnormal Inexact Rounded +ddnextt385 nexttoward 2E-398 Infinity -> 3E-398 Underflow Subnormal Inexact Rounded +ddnextt386 nexttoward 10E-398 Infinity -> 1.1E-397 Underflow Subnormal Inexact Rounded +ddnextt387 nexttoward 100E-398 Infinity -> 1.01E-396 Underflow Subnormal Inexact Rounded +ddnextt388 nexttoward 100000E-398 Infinity -> 1.00001E-393 Underflow Subnormal Inexact Rounded +ddnextt389 nexttoward 1.00000000000E-383 Infinity -> 1.000000000000001E-383 +ddnextt390 nexttoward 1.000000000000000E-383 Infinity -> 1.000000000000001E-383 +ddnextt391 nexttoward 1E-383 Infinity -> 1.000000000000001E-383 +ddnextt392 nexttoward 9.999999999999997E+384 Infinity -> 9.999999999999998E+384 +ddnextt393 nexttoward 9.999999999999998E+384 Infinity -> 9.999999999999999E+384 +ddnextt394 nexttoward 9.999999999999999E+384 Infinity -> Infinity Overflow Inexact Rounded + +------- lhs>rhs +ddnextt401 nexttoward 0.9999999999999995 -Infinity -> 0.9999999999999994 +ddnextt402 nexttoward 0.9999999999999996 -Infinity -> 0.9999999999999995 +ddnextt403 nexttoward 0.9999999999999997 -Infinity -> 0.9999999999999996 +ddnextt404 nexttoward 0.9999999999999998 -Infinity -> 0.9999999999999997 +ddnextt405 nexttoward 0.9999999999999999 -Infinity -> 0.9999999999999998 +ddnextt406 nexttoward 1.000000000000000 -Infinity -> 0.9999999999999999 +ddnextt407 nexttoward 1.0 -Infinity -> 0.9999999999999999 +ddnextt408 nexttoward 1 -Infinity -> 0.9999999999999999 +ddnextt409 nexttoward 1.000000000000001 -Infinity -> 1.000000000000000 +ddnextt410 nexttoward 1.000000000000002 -Infinity -> 1.000000000000001 +ddnextt411 nexttoward 1.000000000000003 -Infinity -> 1.000000000000002 +ddnextt412 nexttoward 1.000000000000004 -Infinity -> 1.000000000000003 +ddnextt413 nexttoward 1.000000000000005 -Infinity -> 1.000000000000004 +ddnextt414 nexttoward 1.000000000000006 -Infinity -> 1.000000000000005 +ddnextt415 nexttoward 1.000000000000007 -Infinity -> 1.000000000000006 +ddnextt416 nexttoward 1.000000000000008 -Infinity -> 1.000000000000007 +ddnextt417 nexttoward 1.000000000000009 -Infinity -> 1.000000000000008 +ddnextt418 nexttoward 1.000000000000010 -Infinity -> 1.000000000000009 +ddnextt419 nexttoward 1.000000000000011 -Infinity -> 1.000000000000010 +ddnextt420 nexttoward 1.000000000000012 -Infinity -> 1.000000000000011 + +ddnextt421 nexttoward -0.9999999999999995 -Infinity -> -0.9999999999999996 +ddnextt422 nexttoward -0.9999999999999996 -Infinity -> -0.9999999999999997 +ddnextt423 nexttoward -0.9999999999999997 -Infinity -> -0.9999999999999998 +ddnextt424 nexttoward -0.9999999999999998 -Infinity -> -0.9999999999999999 +ddnextt425 nexttoward -0.9999999999999999 -Infinity -> -1.000000000000000 +ddnextt426 nexttoward -1.000000000000000 -Infinity -> -1.000000000000001 +ddnextt427 nexttoward -1.0 -Infinity -> -1.000000000000001 +ddnextt428 nexttoward -1 -Infinity -> -1.000000000000001 +ddnextt429 nexttoward -1.000000000000001 -Infinity -> -1.000000000000002 +ddnextt430 nexttoward -1.000000000000002 -Infinity -> -1.000000000000003 +ddnextt431 nexttoward -1.000000000000003 -Infinity -> -1.000000000000004 +ddnextt432 nexttoward -1.000000000000004 -Infinity -> -1.000000000000005 +ddnextt433 nexttoward -1.000000000000005 -Infinity -> -1.000000000000006 +ddnextt434 nexttoward -1.000000000000006 -Infinity -> -1.000000000000007 +ddnextt435 nexttoward -1.000000000000007 -Infinity -> -1.000000000000008 +ddnextt436 nexttoward -1.000000000000008 -Infinity -> -1.000000000000009 +ddnextt437 nexttoward -1.000000000000009 -Infinity -> -1.000000000000010 +ddnextt438 nexttoward -1.000000000000010 -Infinity -> -1.000000000000011 +ddnextt439 nexttoward -1.000000000000011 -Infinity -> -1.000000000000012 + +-- Zeros +ddnextt500 nexttoward -0 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt501 nexttoward 0 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt502 nexttoward 0.00 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt503 nexttoward -0.00 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt504 nexttoward 0E-300 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt505 nexttoward 0E+300 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt506 nexttoward 0E+30000 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt507 nexttoward -0E+30000 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded + +-- specials +ddnextt550 nexttoward Inf -Infinity -> 9.999999999999999E+384 +ddnextt551 nexttoward -Inf -Infinity -> -Infinity +ddnextt552 nexttoward NaN -Infinity -> NaN +ddnextt553 nexttoward sNaN -Infinity -> NaN Invalid_operation +ddnextt554 nexttoward NaN77 -Infinity -> NaN77 +ddnextt555 nexttoward sNaN88 -Infinity -> NaN88 Invalid_operation +ddnextt556 nexttoward -NaN -Infinity -> -NaN +ddnextt557 nexttoward -sNaN -Infinity -> -NaN Invalid_operation +ddnextt558 nexttoward -NaN77 -Infinity -> -NaN77 +ddnextt559 nexttoward -sNaN88 -Infinity -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +ddnextt670 nexttoward 9.999999999999999E+384 -Infinity -> 9.999999999999998E+384 +ddnextt671 nexttoward 9.999999999999998E+384 -Infinity -> 9.999999999999997E+384 +ddnextt672 nexttoward 1E-383 -Infinity -> 9.99999999999999E-384 Underflow Subnormal Inexact Rounded +ddnextt673 nexttoward 1.000000000000000E-383 -Infinity -> 9.99999999999999E-384 Underflow Subnormal Inexact Rounded +ddnextt674 nexttoward 9E-398 -Infinity -> 8E-398 Underflow Subnormal Inexact Rounded +ddnextt675 nexttoward 9.9E-397 -Infinity -> 9.8E-397 Underflow Subnormal Inexact Rounded +ddnextt676 nexttoward 9.99999999999E-387 -Infinity -> 9.99999999998E-387 Underflow Subnormal Inexact Rounded +ddnextt677 nexttoward 9.99999999999999E-384 -Infinity -> 9.99999999999998E-384 Underflow Subnormal Inexact Rounded +ddnextt678 nexttoward 9.99999999999998E-384 -Infinity -> 9.99999999999997E-384 Underflow Subnormal Inexact Rounded +ddnextt679 nexttoward 9.99999999999997E-384 -Infinity -> 9.99999999999996E-384 Underflow Subnormal Inexact Rounded +ddnextt680 nexttoward 0E-398 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt681 nexttoward 1E-398 -Infinity -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddnextt682 nexttoward 2E-398 -Infinity -> 1E-398 Underflow Subnormal Inexact Rounded + +ddnextt683 nexttoward -0E-398 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt684 nexttoward -1E-398 -Infinity -> -2E-398 Underflow Subnormal Inexact Rounded +ddnextt685 nexttoward -2E-398 -Infinity -> -3E-398 Underflow Subnormal Inexact Rounded +ddnextt686 nexttoward -10E-398 -Infinity -> -1.1E-397 Underflow Subnormal Inexact Rounded +ddnextt687 nexttoward -100E-398 -Infinity -> -1.01E-396 Underflow Subnormal Inexact Rounded +ddnextt688 nexttoward -100000E-398 -Infinity -> -1.00001E-393 Underflow Subnormal Inexact Rounded +ddnextt689 nexttoward -1.00000000000E-383 -Infinity -> -1.000000000000001E-383 +ddnextt690 nexttoward -1.000000000000000E-383 -Infinity -> -1.000000000000001E-383 +ddnextt691 nexttoward -1E-383 -Infinity -> -1.000000000000001E-383 +ddnextt692 nexttoward -9.999999999999998E+384 -Infinity -> -9.999999999999999E+384 +ddnextt693 nexttoward -9.999999999999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded + +------- Specials +ddnextt780 nexttoward -Inf -Inf -> -Infinity +ddnextt781 nexttoward -Inf -1000 -> -9.999999999999999E+384 +ddnextt782 nexttoward -Inf -1 -> -9.999999999999999E+384 +ddnextt783 nexttoward -Inf -0 -> -9.999999999999999E+384 +ddnextt784 nexttoward -Inf 0 -> -9.999999999999999E+384 +ddnextt785 nexttoward -Inf 1 -> -9.999999999999999E+384 +ddnextt786 nexttoward -Inf 1000 -> -9.999999999999999E+384 +ddnextt787 nexttoward -1000 -Inf -> -1000.000000000001 +ddnextt788 nexttoward -Inf -Inf -> -Infinity +ddnextt789 nexttoward -1 -Inf -> -1.000000000000001 +ddnextt790 nexttoward -0 -Inf -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt791 nexttoward 0 -Inf -> -1E-398 Underflow Subnormal Inexact Rounded +ddnextt792 nexttoward 1 -Inf -> 0.9999999999999999 +ddnextt793 nexttoward 1000 -Inf -> 999.9999999999999 +ddnextt794 nexttoward Inf -Inf -> 9.999999999999999E+384 + +ddnextt800 nexttoward Inf -Inf -> 9.999999999999999E+384 +ddnextt801 nexttoward Inf -1000 -> 9.999999999999999E+384 +ddnextt802 nexttoward Inf -1 -> 9.999999999999999E+384 +ddnextt803 nexttoward Inf -0 -> 9.999999999999999E+384 +ddnextt804 nexttoward Inf 0 -> 9.999999999999999E+384 +ddnextt805 nexttoward Inf 1 -> 9.999999999999999E+384 +ddnextt806 nexttoward Inf 1000 -> 9.999999999999999E+384 +ddnextt807 nexttoward Inf Inf -> Infinity +ddnextt808 nexttoward -1000 Inf -> -999.9999999999999 +ddnextt809 nexttoward -Inf Inf -> -9.999999999999999E+384 +ddnextt810 nexttoward -1 Inf -> -0.9999999999999999 +ddnextt811 nexttoward -0 Inf -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt812 nexttoward 0 Inf -> 1E-398 Underflow Subnormal Inexact Rounded +ddnextt813 nexttoward 1 Inf -> 1.000000000000001 +ddnextt814 nexttoward 1000 Inf -> 1000.000000000001 +ddnextt815 nexttoward Inf Inf -> Infinity + +ddnextt821 nexttoward NaN -Inf -> NaN +ddnextt822 nexttoward NaN -1000 -> NaN +ddnextt823 nexttoward NaN -1 -> NaN +ddnextt824 nexttoward NaN -0 -> NaN +ddnextt825 nexttoward NaN 0 -> NaN +ddnextt826 nexttoward NaN 1 -> NaN +ddnextt827 nexttoward NaN 1000 -> NaN +ddnextt828 nexttoward NaN Inf -> NaN +ddnextt829 nexttoward NaN NaN -> NaN +ddnextt830 nexttoward -Inf NaN -> NaN +ddnextt831 nexttoward -1000 NaN -> NaN +ddnextt832 nexttoward -1 NaN -> NaN +ddnextt833 nexttoward -0 NaN -> NaN +ddnextt834 nexttoward 0 NaN -> NaN +ddnextt835 nexttoward 1 NaN -> NaN +ddnextt836 nexttoward 1000 NaN -> NaN +ddnextt837 nexttoward Inf NaN -> NaN + +ddnextt841 nexttoward sNaN -Inf -> NaN Invalid_operation +ddnextt842 nexttoward sNaN -1000 -> NaN Invalid_operation +ddnextt843 nexttoward sNaN -1 -> NaN Invalid_operation +ddnextt844 nexttoward sNaN -0 -> NaN Invalid_operation +ddnextt845 nexttoward sNaN 0 -> NaN Invalid_operation +ddnextt846 nexttoward sNaN 1 -> NaN Invalid_operation +ddnextt847 nexttoward sNaN 1000 -> NaN Invalid_operation +ddnextt848 nexttoward sNaN NaN -> NaN Invalid_operation +ddnextt849 nexttoward sNaN sNaN -> NaN Invalid_operation +ddnextt850 nexttoward NaN sNaN -> NaN Invalid_operation +ddnextt851 nexttoward -Inf sNaN -> NaN Invalid_operation +ddnextt852 nexttoward -1000 sNaN -> NaN Invalid_operation +ddnextt853 nexttoward -1 sNaN -> NaN Invalid_operation +ddnextt854 nexttoward -0 sNaN -> NaN Invalid_operation +ddnextt855 nexttoward 0 sNaN -> NaN Invalid_operation +ddnextt856 nexttoward 1 sNaN -> NaN Invalid_operation +ddnextt857 nexttoward 1000 sNaN -> NaN Invalid_operation +ddnextt858 nexttoward Inf sNaN -> NaN Invalid_operation +ddnextt859 nexttoward NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddnextt861 nexttoward NaN1 -Inf -> NaN1 +ddnextt862 nexttoward +NaN2 -1000 -> NaN2 +ddnextt863 nexttoward NaN3 1000 -> NaN3 +ddnextt864 nexttoward NaN4 Inf -> NaN4 +ddnextt865 nexttoward NaN5 +NaN6 -> NaN5 +ddnextt866 nexttoward -Inf NaN7 -> NaN7 +ddnextt867 nexttoward -1000 NaN8 -> NaN8 +ddnextt868 nexttoward 1000 NaN9 -> NaN9 +ddnextt869 nexttoward Inf +NaN10 -> NaN10 +ddnextt871 nexttoward sNaN11 -Inf -> NaN11 Invalid_operation +ddnextt872 nexttoward sNaN12 -1000 -> NaN12 Invalid_operation +ddnextt873 nexttoward sNaN13 1000 -> NaN13 Invalid_operation +ddnextt874 nexttoward sNaN14 NaN17 -> NaN14 Invalid_operation +ddnextt875 nexttoward sNaN15 sNaN18 -> NaN15 Invalid_operation +ddnextt876 nexttoward NaN16 sNaN19 -> NaN19 Invalid_operation +ddnextt877 nexttoward -Inf +sNaN20 -> NaN20 Invalid_operation +ddnextt878 nexttoward -1000 sNaN21 -> NaN21 Invalid_operation +ddnextt879 nexttoward 1000 sNaN22 -> NaN22 Invalid_operation +ddnextt880 nexttoward Inf sNaN23 -> NaN23 Invalid_operation +ddnextt881 nexttoward +NaN25 +sNaN24 -> NaN24 Invalid_operation +ddnextt882 nexttoward -NaN26 NaN28 -> -NaN26 +ddnextt883 nexttoward -sNaN27 sNaN29 -> -NaN27 Invalid_operation +ddnextt884 nexttoward 1000 -NaN30 -> -NaN30 +ddnextt885 nexttoward 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- Null tests +ddnextt900 nexttoward 1 # -> NaN Invalid_operation +ddnextt901 nexttoward # 1 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddOr.decTest b/Lib/test/decimaltestdata/ddOr.decTest index d36580b..f3a702b 100644 --- a/Lib/test/decimaltestdata/ddOr.decTest +++ b/Lib/test/decimaltestdata/ddOr.decTest @@ -1,292 +1,292 @@ ------------------------------------------------------------------------- --- ddOr.decTest -- digitwise logical OR for decDoubles -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check (truth table) -ddor001 or 0 0 -> 0 -ddor002 or 0 1 -> 1 -ddor003 or 1 0 -> 1 -ddor004 or 1 1 -> 1 -ddor005 or 1100 1010 -> 1110 --- and at msd and msd-1 -ddor006 or 0000000000000000 0000000000000000 -> 0 -ddor007 or 0000000000000000 1000000000000000 -> 1000000000000000 -ddor008 or 1000000000000000 0000000000000000 -> 1000000000000000 -ddor009 or 1000000000000000 1000000000000000 -> 1000000000000000 -ddor010 or 0000000000000000 0000000000000000 -> 0 -ddor011 or 0000000000000000 0100000000000000 -> 100000000000000 -ddor012 or 0100000000000000 0000000000000000 -> 100000000000000 -ddor013 or 0100000000000000 0100000000000000 -> 100000000000000 - --- Various lengths --- 1234567890123456 1234567890123456 1234567890123456 -ddor020 or 1111111111111111 1111111111111111 -> 1111111111111111 -ddor021 or 111111111111111 111111111111111 -> 111111111111111 -ddor022 or 11111111111111 11111111111111 -> 11111111111111 -ddor023 or 1111111111111 1111111111111 -> 1111111111111 -ddor024 or 111111111111 111111111111 -> 111111111111 -ddor025 or 11111111111 11111111111 -> 11111111111 -ddor026 or 1111111111 1111111111 -> 1111111111 -ddor027 or 111111111 111111111 -> 111111111 -ddor028 or 11111111 11111111 -> 11111111 -ddor029 or 1111111 1111111 -> 1111111 -ddor030 or 111111 111111 -> 111111 -ddor031 or 11111 11111 -> 11111 -ddor032 or 1111 1111 -> 1111 -ddor033 or 111 111 -> 111 -ddor034 or 11 11 -> 11 -ddor035 or 1 1 -> 1 -ddor036 or 0 0 -> 0 - -ddor042 or 111111110000000 1111111110000000 -> 1111111110000000 -ddor043 or 11111110000000 1000000100000000 -> 1011111110000000 -ddor044 or 1111110000000 1000001000000000 -> 1001111110000000 -ddor045 or 111110000000 1000010000000000 -> 1000111110000000 -ddor046 or 11110000000 1000100000000000 -> 1000111110000000 -ddor047 or 1110000000 1001000000000000 -> 1001001110000000 -ddor048 or 110000000 1010000000000000 -> 1010000110000000 -ddor049 or 10000000 1100000000000000 -> 1100000010000000 - -ddor090 or 011111111 111101111 -> 111111111 -ddor091 or 101111111 111101111 -> 111111111 -ddor092 or 110111111 111101111 -> 111111111 -ddor093 or 111011111 111101111 -> 111111111 -ddor094 or 111101111 111101111 -> 111101111 -ddor095 or 111110111 111101111 -> 111111111 -ddor096 or 111111011 111101111 -> 111111111 -ddor097 or 111111101 111101111 -> 111111111 -ddor098 or 111111110 111101111 -> 111111111 - -ddor100 or 111101111 011111111 -> 111111111 -ddor101 or 111101111 101111111 -> 111111111 -ddor102 or 111101111 110111111 -> 111111111 -ddor103 or 111101111 111011111 -> 111111111 -ddor104 or 111101111 111101111 -> 111101111 -ddor105 or 111101111 111110111 -> 111111111 -ddor106 or 111101111 111111011 -> 111111111 -ddor107 or 111101111 111111101 -> 111111111 -ddor108 or 111101111 111111110 -> 111111111 - --- non-0/1 should not be accepted, nor should signs -ddor220 or 111111112 111111111 -> NaN Invalid_operation -ddor221 or 333333333 333333333 -> NaN Invalid_operation -ddor222 or 555555555 555555555 -> NaN Invalid_operation -ddor223 or 777777777 777777777 -> NaN Invalid_operation -ddor224 or 999999999 999999999 -> NaN Invalid_operation -ddor225 or 222222222 999999999 -> NaN Invalid_operation -ddor226 or 444444444 999999999 -> NaN Invalid_operation -ddor227 or 666666666 999999999 -> NaN Invalid_operation -ddor228 or 888888888 999999999 -> NaN Invalid_operation -ddor229 or 999999999 222222222 -> NaN Invalid_operation -ddor230 or 999999999 444444444 -> NaN Invalid_operation -ddor231 or 999999999 666666666 -> NaN Invalid_operation -ddor232 or 999999999 888888888 -> NaN Invalid_operation --- a few randoms -ddor240 or 567468689 -934981942 -> NaN Invalid_operation -ddor241 or 567367689 934981942 -> NaN Invalid_operation -ddor242 or -631917772 -706014634 -> NaN Invalid_operation -ddor243 or -756253257 138579234 -> NaN Invalid_operation -ddor244 or 835590149 567435400 -> NaN Invalid_operation --- test MSD -ddor250 or 2000000000000000 1000000000000000 -> NaN Invalid_operation -ddor251 or 7000000000000000 1000000000000000 -> NaN Invalid_operation -ddor252 or 8000000000000000 1000000000000000 -> NaN Invalid_operation -ddor253 or 9000000000000000 1000000000000000 -> NaN Invalid_operation -ddor254 or 2000000000000000 0000000000000000 -> NaN Invalid_operation -ddor255 or 7000000000000000 0000000000000000 -> NaN Invalid_operation -ddor256 or 8000000000000000 0000000000000000 -> NaN Invalid_operation -ddor257 or 9000000000000000 0000000000000000 -> NaN Invalid_operation -ddor258 or 1000000000000000 2000000000000000 -> NaN Invalid_operation -ddor259 or 1000000000000000 7000000000000000 -> NaN Invalid_operation -ddor260 or 1000000000000000 8000000000000000 -> NaN Invalid_operation -ddor261 or 1000000000000000 9000000000000000 -> NaN Invalid_operation -ddor262 or 0000000000000000 2000000000000000 -> NaN Invalid_operation -ddor263 or 0000000000000000 7000000000000000 -> NaN Invalid_operation -ddor264 or 0000000000000000 8000000000000000 -> NaN Invalid_operation -ddor265 or 0000000000000000 9000000000000000 -> NaN Invalid_operation --- test MSD-1 -ddor270 or 0200001000000000 1000100000000010 -> NaN Invalid_operation -ddor271 or 0700000100000000 1000010000000100 -> NaN Invalid_operation -ddor272 or 0800000010000000 1000001000001000 -> NaN Invalid_operation -ddor273 or 0900000001000000 1000000100010000 -> NaN Invalid_operation -ddor274 or 1000000000100000 0200000010100000 -> NaN Invalid_operation -ddor275 or 1000000000010000 0700000001000000 -> NaN Invalid_operation -ddor276 or 1000000000001000 0800000010100000 -> NaN Invalid_operation -ddor277 or 1000000000000100 0900000000010000 -> NaN Invalid_operation --- test LSD -ddor280 or 0010000000000002 1000000100000001 -> NaN Invalid_operation -ddor281 or 0001000000000007 1000001000000011 -> NaN Invalid_operation -ddor282 or 0000100000000008 1000010000000001 -> NaN Invalid_operation -ddor283 or 0000010000000009 1000100000000001 -> NaN Invalid_operation -ddor284 or 1000001000000000 0001000000000002 -> NaN Invalid_operation -ddor285 or 1000000100000000 0010000000000007 -> NaN Invalid_operation -ddor286 or 1000000010000000 0100000000000008 -> NaN Invalid_operation -ddor287 or 1000000001000000 1000000000000009 -> NaN Invalid_operation --- test Middie -ddor288 or 0010000020000000 1000001000000000 -> NaN Invalid_operation -ddor289 or 0001000070000001 1000000100000000 -> NaN Invalid_operation -ddor290 or 0000100080000010 1000000010000000 -> NaN Invalid_operation -ddor291 or 0000010090000100 1000000001000000 -> NaN Invalid_operation -ddor292 or 1000001000001000 0000000020100000 -> NaN Invalid_operation -ddor293 or 1000000100010000 0000000070010000 -> NaN Invalid_operation -ddor294 or 1000000010100000 0000000080001000 -> NaN Invalid_operation -ddor295 or 1000000001000000 0000000090000100 -> NaN Invalid_operation --- signs -ddor296 or -1000000001000000 -0000010000000100 -> NaN Invalid_operation -ddor297 or -1000000001000000 0000000010000100 -> NaN Invalid_operation -ddor298 or 1000000001000000 -0000001000000100 -> NaN Invalid_operation -ddor299 or 1000000001000000 0000000011000100 -> 1000000011000100 - --- Nmax, Nmin, Ntiny-like -ddor331 or 2 9.99999999E+199 -> NaN Invalid_operation -ddor332 or 3 1E-199 -> NaN Invalid_operation -ddor333 or 4 1.00000000E-199 -> NaN Invalid_operation -ddor334 or 5 1E-100 -> NaN Invalid_operation -ddor335 or 6 -1E-100 -> NaN Invalid_operation -ddor336 or 7 -1.00000000E-199 -> NaN Invalid_operation -ddor337 or 8 -1E-199 -> NaN Invalid_operation -ddor338 or 9 -9.99999999E+199 -> NaN Invalid_operation -ddor341 or 9.99999999E+299 -18 -> NaN Invalid_operation -ddor342 or 1E-299 01 -> NaN Invalid_operation -ddor343 or 1.00000000E-299 -18 -> NaN Invalid_operation -ddor344 or 1E-100 18 -> NaN Invalid_operation -ddor345 or -1E-100 -10 -> NaN Invalid_operation -ddor346 or -1.00000000E-299 18 -> NaN Invalid_operation -ddor347 or -1E-299 10 -> NaN Invalid_operation -ddor348 or -9.99999999E+299 -18 -> NaN Invalid_operation - --- A few other non-integers -ddor361 or 1.0 1 -> NaN Invalid_operation -ddor362 or 1E+1 1 -> NaN Invalid_operation -ddor363 or 0.0 1 -> NaN Invalid_operation -ddor364 or 0E+1 1 -> NaN Invalid_operation -ddor365 or 9.9 1 -> NaN Invalid_operation -ddor366 or 9E+1 1 -> NaN Invalid_operation -ddor371 or 0 1.0 -> NaN Invalid_operation -ddor372 or 0 1E+1 -> NaN Invalid_operation -ddor373 or 0 0.0 -> NaN Invalid_operation -ddor374 or 0 0E+1 -> NaN Invalid_operation -ddor375 or 0 9.9 -> NaN Invalid_operation -ddor376 or 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -ddor780 or -Inf -Inf -> NaN Invalid_operation -ddor781 or -Inf -1000 -> NaN Invalid_operation -ddor782 or -Inf -1 -> NaN Invalid_operation -ddor783 or -Inf -0 -> NaN Invalid_operation -ddor784 or -Inf 0 -> NaN Invalid_operation -ddor785 or -Inf 1 -> NaN Invalid_operation -ddor786 or -Inf 1000 -> NaN Invalid_operation -ddor787 or -1000 -Inf -> NaN Invalid_operation -ddor788 or -Inf -Inf -> NaN Invalid_operation -ddor789 or -1 -Inf -> NaN Invalid_operation -ddor790 or -0 -Inf -> NaN Invalid_operation -ddor791 or 0 -Inf -> NaN Invalid_operation -ddor792 or 1 -Inf -> NaN Invalid_operation -ddor793 or 1000 -Inf -> NaN Invalid_operation -ddor794 or Inf -Inf -> NaN Invalid_operation - -ddor800 or Inf -Inf -> NaN Invalid_operation -ddor801 or Inf -1000 -> NaN Invalid_operation -ddor802 or Inf -1 -> NaN Invalid_operation -ddor803 or Inf -0 -> NaN Invalid_operation -ddor804 or Inf 0 -> NaN Invalid_operation -ddor805 or Inf 1 -> NaN Invalid_operation -ddor806 or Inf 1000 -> NaN Invalid_operation -ddor807 or Inf Inf -> NaN Invalid_operation -ddor808 or -1000 Inf -> NaN Invalid_operation -ddor809 or -Inf Inf -> NaN Invalid_operation -ddor810 or -1 Inf -> NaN Invalid_operation -ddor811 or -0 Inf -> NaN Invalid_operation -ddor812 or 0 Inf -> NaN Invalid_operation -ddor813 or 1 Inf -> NaN Invalid_operation -ddor814 or 1000 Inf -> NaN Invalid_operation -ddor815 or Inf Inf -> NaN Invalid_operation - -ddor821 or NaN -Inf -> NaN Invalid_operation -ddor822 or NaN -1000 -> NaN Invalid_operation -ddor823 or NaN -1 -> NaN Invalid_operation -ddor824 or NaN -0 -> NaN Invalid_operation -ddor825 or NaN 0 -> NaN Invalid_operation -ddor826 or NaN 1 -> NaN Invalid_operation -ddor827 or NaN 1000 -> NaN Invalid_operation -ddor828 or NaN Inf -> NaN Invalid_operation -ddor829 or NaN NaN -> NaN Invalid_operation -ddor830 or -Inf NaN -> NaN Invalid_operation -ddor831 or -1000 NaN -> NaN Invalid_operation -ddor832 or -1 NaN -> NaN Invalid_operation -ddor833 or -0 NaN -> NaN Invalid_operation -ddor834 or 0 NaN -> NaN Invalid_operation -ddor835 or 1 NaN -> NaN Invalid_operation -ddor836 or 1000 NaN -> NaN Invalid_operation -ddor837 or Inf NaN -> NaN Invalid_operation - -ddor841 or sNaN -Inf -> NaN Invalid_operation -ddor842 or sNaN -1000 -> NaN Invalid_operation -ddor843 or sNaN -1 -> NaN Invalid_operation -ddor844 or sNaN -0 -> NaN Invalid_operation -ddor845 or sNaN 0 -> NaN Invalid_operation -ddor846 or sNaN 1 -> NaN Invalid_operation -ddor847 or sNaN 1000 -> NaN Invalid_operation -ddor848 or sNaN NaN -> NaN Invalid_operation -ddor849 or sNaN sNaN -> NaN Invalid_operation -ddor850 or NaN sNaN -> NaN Invalid_operation -ddor851 or -Inf sNaN -> NaN Invalid_operation -ddor852 or -1000 sNaN -> NaN Invalid_operation -ddor853 or -1 sNaN -> NaN Invalid_operation -ddor854 or -0 sNaN -> NaN Invalid_operation -ddor855 or 0 sNaN -> NaN Invalid_operation -ddor856 or 1 sNaN -> NaN Invalid_operation -ddor857 or 1000 sNaN -> NaN Invalid_operation -ddor858 or Inf sNaN -> NaN Invalid_operation -ddor859 or NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddor861 or NaN1 -Inf -> NaN Invalid_operation -ddor862 or +NaN2 -1000 -> NaN Invalid_operation -ddor863 or NaN3 1000 -> NaN Invalid_operation -ddor864 or NaN4 Inf -> NaN Invalid_operation -ddor865 or NaN5 +NaN6 -> NaN Invalid_operation -ddor866 or -Inf NaN7 -> NaN Invalid_operation -ddor867 or -1000 NaN8 -> NaN Invalid_operation -ddor868 or 1000 NaN9 -> NaN Invalid_operation -ddor869 or Inf +NaN10 -> NaN Invalid_operation -ddor871 or sNaN11 -Inf -> NaN Invalid_operation -ddor872 or sNaN12 -1000 -> NaN Invalid_operation -ddor873 or sNaN13 1000 -> NaN Invalid_operation -ddor874 or sNaN14 NaN17 -> NaN Invalid_operation -ddor875 or sNaN15 sNaN18 -> NaN Invalid_operation -ddor876 or NaN16 sNaN19 -> NaN Invalid_operation -ddor877 or -Inf +sNaN20 -> NaN Invalid_operation -ddor878 or -1000 sNaN21 -> NaN Invalid_operation -ddor879 or 1000 sNaN22 -> NaN Invalid_operation -ddor880 or Inf sNaN23 -> NaN Invalid_operation -ddor881 or +NaN25 +sNaN24 -> NaN Invalid_operation -ddor882 or -NaN26 NaN28 -> NaN Invalid_operation -ddor883 or -sNaN27 sNaN29 -> NaN Invalid_operation -ddor884 or 1000 -NaN30 -> NaN Invalid_operation -ddor885 or 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddOr.decTest -- digitwise logical OR for decDoubles -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check (truth table) +ddor001 or 0 0 -> 0 +ddor002 or 0 1 -> 1 +ddor003 or 1 0 -> 1 +ddor004 or 1 1 -> 1 +ddor005 or 1100 1010 -> 1110 +-- and at msd and msd-1 +ddor006 or 0000000000000000 0000000000000000 -> 0 +ddor007 or 0000000000000000 1000000000000000 -> 1000000000000000 +ddor008 or 1000000000000000 0000000000000000 -> 1000000000000000 +ddor009 or 1000000000000000 1000000000000000 -> 1000000000000000 +ddor010 or 0000000000000000 0000000000000000 -> 0 +ddor011 or 0000000000000000 0100000000000000 -> 100000000000000 +ddor012 or 0100000000000000 0000000000000000 -> 100000000000000 +ddor013 or 0100000000000000 0100000000000000 -> 100000000000000 + +-- Various lengths +-- 1234567890123456 1234567890123456 1234567890123456 +ddor020 or 1111111111111111 1111111111111111 -> 1111111111111111 +ddor021 or 111111111111111 111111111111111 -> 111111111111111 +ddor022 or 11111111111111 11111111111111 -> 11111111111111 +ddor023 or 1111111111111 1111111111111 -> 1111111111111 +ddor024 or 111111111111 111111111111 -> 111111111111 +ddor025 or 11111111111 11111111111 -> 11111111111 +ddor026 or 1111111111 1111111111 -> 1111111111 +ddor027 or 111111111 111111111 -> 111111111 +ddor028 or 11111111 11111111 -> 11111111 +ddor029 or 1111111 1111111 -> 1111111 +ddor030 or 111111 111111 -> 111111 +ddor031 or 11111 11111 -> 11111 +ddor032 or 1111 1111 -> 1111 +ddor033 or 111 111 -> 111 +ddor034 or 11 11 -> 11 +ddor035 or 1 1 -> 1 +ddor036 or 0 0 -> 0 + +ddor042 or 111111110000000 1111111110000000 -> 1111111110000000 +ddor043 or 11111110000000 1000000100000000 -> 1011111110000000 +ddor044 or 1111110000000 1000001000000000 -> 1001111110000000 +ddor045 or 111110000000 1000010000000000 -> 1000111110000000 +ddor046 or 11110000000 1000100000000000 -> 1000111110000000 +ddor047 or 1110000000 1001000000000000 -> 1001001110000000 +ddor048 or 110000000 1010000000000000 -> 1010000110000000 +ddor049 or 10000000 1100000000000000 -> 1100000010000000 + +ddor090 or 011111111 111101111 -> 111111111 +ddor091 or 101111111 111101111 -> 111111111 +ddor092 or 110111111 111101111 -> 111111111 +ddor093 or 111011111 111101111 -> 111111111 +ddor094 or 111101111 111101111 -> 111101111 +ddor095 or 111110111 111101111 -> 111111111 +ddor096 or 111111011 111101111 -> 111111111 +ddor097 or 111111101 111101111 -> 111111111 +ddor098 or 111111110 111101111 -> 111111111 + +ddor100 or 111101111 011111111 -> 111111111 +ddor101 or 111101111 101111111 -> 111111111 +ddor102 or 111101111 110111111 -> 111111111 +ddor103 or 111101111 111011111 -> 111111111 +ddor104 or 111101111 111101111 -> 111101111 +ddor105 or 111101111 111110111 -> 111111111 +ddor106 or 111101111 111111011 -> 111111111 +ddor107 or 111101111 111111101 -> 111111111 +ddor108 or 111101111 111111110 -> 111111111 + +-- non-0/1 should not be accepted, nor should signs +ddor220 or 111111112 111111111 -> NaN Invalid_operation +ddor221 or 333333333 333333333 -> NaN Invalid_operation +ddor222 or 555555555 555555555 -> NaN Invalid_operation +ddor223 or 777777777 777777777 -> NaN Invalid_operation +ddor224 or 999999999 999999999 -> NaN Invalid_operation +ddor225 or 222222222 999999999 -> NaN Invalid_operation +ddor226 or 444444444 999999999 -> NaN Invalid_operation +ddor227 or 666666666 999999999 -> NaN Invalid_operation +ddor228 or 888888888 999999999 -> NaN Invalid_operation +ddor229 or 999999999 222222222 -> NaN Invalid_operation +ddor230 or 999999999 444444444 -> NaN Invalid_operation +ddor231 or 999999999 666666666 -> NaN Invalid_operation +ddor232 or 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +ddor240 or 567468689 -934981942 -> NaN Invalid_operation +ddor241 or 567367689 934981942 -> NaN Invalid_operation +ddor242 or -631917772 -706014634 -> NaN Invalid_operation +ddor243 or -756253257 138579234 -> NaN Invalid_operation +ddor244 or 835590149 567435400 -> NaN Invalid_operation +-- test MSD +ddor250 or 2000000000000000 1000000000000000 -> NaN Invalid_operation +ddor251 or 7000000000000000 1000000000000000 -> NaN Invalid_operation +ddor252 or 8000000000000000 1000000000000000 -> NaN Invalid_operation +ddor253 or 9000000000000000 1000000000000000 -> NaN Invalid_operation +ddor254 or 2000000000000000 0000000000000000 -> NaN Invalid_operation +ddor255 or 7000000000000000 0000000000000000 -> NaN Invalid_operation +ddor256 or 8000000000000000 0000000000000000 -> NaN Invalid_operation +ddor257 or 9000000000000000 0000000000000000 -> NaN Invalid_operation +ddor258 or 1000000000000000 2000000000000000 -> NaN Invalid_operation +ddor259 or 1000000000000000 7000000000000000 -> NaN Invalid_operation +ddor260 or 1000000000000000 8000000000000000 -> NaN Invalid_operation +ddor261 or 1000000000000000 9000000000000000 -> NaN Invalid_operation +ddor262 or 0000000000000000 2000000000000000 -> NaN Invalid_operation +ddor263 or 0000000000000000 7000000000000000 -> NaN Invalid_operation +ddor264 or 0000000000000000 8000000000000000 -> NaN Invalid_operation +ddor265 or 0000000000000000 9000000000000000 -> NaN Invalid_operation +-- test MSD-1 +ddor270 or 0200001000000000 1000100000000010 -> NaN Invalid_operation +ddor271 or 0700000100000000 1000010000000100 -> NaN Invalid_operation +ddor272 or 0800000010000000 1000001000001000 -> NaN Invalid_operation +ddor273 or 0900000001000000 1000000100010000 -> NaN Invalid_operation +ddor274 or 1000000000100000 0200000010100000 -> NaN Invalid_operation +ddor275 or 1000000000010000 0700000001000000 -> NaN Invalid_operation +ddor276 or 1000000000001000 0800000010100000 -> NaN Invalid_operation +ddor277 or 1000000000000100 0900000000010000 -> NaN Invalid_operation +-- test LSD +ddor280 or 0010000000000002 1000000100000001 -> NaN Invalid_operation +ddor281 or 0001000000000007 1000001000000011 -> NaN Invalid_operation +ddor282 or 0000100000000008 1000010000000001 -> NaN Invalid_operation +ddor283 or 0000010000000009 1000100000000001 -> NaN Invalid_operation +ddor284 or 1000001000000000 0001000000000002 -> NaN Invalid_operation +ddor285 or 1000000100000000 0010000000000007 -> NaN Invalid_operation +ddor286 or 1000000010000000 0100000000000008 -> NaN Invalid_operation +ddor287 or 1000000001000000 1000000000000009 -> NaN Invalid_operation +-- test Middie +ddor288 or 0010000020000000 1000001000000000 -> NaN Invalid_operation +ddor289 or 0001000070000001 1000000100000000 -> NaN Invalid_operation +ddor290 or 0000100080000010 1000000010000000 -> NaN Invalid_operation +ddor291 or 0000010090000100 1000000001000000 -> NaN Invalid_operation +ddor292 or 1000001000001000 0000000020100000 -> NaN Invalid_operation +ddor293 or 1000000100010000 0000000070010000 -> NaN Invalid_operation +ddor294 or 1000000010100000 0000000080001000 -> NaN Invalid_operation +ddor295 or 1000000001000000 0000000090000100 -> NaN Invalid_operation +-- signs +ddor296 or -1000000001000000 -0000010000000100 -> NaN Invalid_operation +ddor297 or -1000000001000000 0000000010000100 -> NaN Invalid_operation +ddor298 or 1000000001000000 -0000001000000100 -> NaN Invalid_operation +ddor299 or 1000000001000000 0000000011000100 -> 1000000011000100 + +-- Nmax, Nmin, Ntiny-like +ddor331 or 2 9.99999999E+199 -> NaN Invalid_operation +ddor332 or 3 1E-199 -> NaN Invalid_operation +ddor333 or 4 1.00000000E-199 -> NaN Invalid_operation +ddor334 or 5 1E-100 -> NaN Invalid_operation +ddor335 or 6 -1E-100 -> NaN Invalid_operation +ddor336 or 7 -1.00000000E-199 -> NaN Invalid_operation +ddor337 or 8 -1E-199 -> NaN Invalid_operation +ddor338 or 9 -9.99999999E+199 -> NaN Invalid_operation +ddor341 or 9.99999999E+299 -18 -> NaN Invalid_operation +ddor342 or 1E-299 01 -> NaN Invalid_operation +ddor343 or 1.00000000E-299 -18 -> NaN Invalid_operation +ddor344 or 1E-100 18 -> NaN Invalid_operation +ddor345 or -1E-100 -10 -> NaN Invalid_operation +ddor346 or -1.00000000E-299 18 -> NaN Invalid_operation +ddor347 or -1E-299 10 -> NaN Invalid_operation +ddor348 or -9.99999999E+299 -18 -> NaN Invalid_operation + +-- A few other non-integers +ddor361 or 1.0 1 -> NaN Invalid_operation +ddor362 or 1E+1 1 -> NaN Invalid_operation +ddor363 or 0.0 1 -> NaN Invalid_operation +ddor364 or 0E+1 1 -> NaN Invalid_operation +ddor365 or 9.9 1 -> NaN Invalid_operation +ddor366 or 9E+1 1 -> NaN Invalid_operation +ddor371 or 0 1.0 -> NaN Invalid_operation +ddor372 or 0 1E+1 -> NaN Invalid_operation +ddor373 or 0 0.0 -> NaN Invalid_operation +ddor374 or 0 0E+1 -> NaN Invalid_operation +ddor375 or 0 9.9 -> NaN Invalid_operation +ddor376 or 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +ddor780 or -Inf -Inf -> NaN Invalid_operation +ddor781 or -Inf -1000 -> NaN Invalid_operation +ddor782 or -Inf -1 -> NaN Invalid_operation +ddor783 or -Inf -0 -> NaN Invalid_operation +ddor784 or -Inf 0 -> NaN Invalid_operation +ddor785 or -Inf 1 -> NaN Invalid_operation +ddor786 or -Inf 1000 -> NaN Invalid_operation +ddor787 or -1000 -Inf -> NaN Invalid_operation +ddor788 or -Inf -Inf -> NaN Invalid_operation +ddor789 or -1 -Inf -> NaN Invalid_operation +ddor790 or -0 -Inf -> NaN Invalid_operation +ddor791 or 0 -Inf -> NaN Invalid_operation +ddor792 or 1 -Inf -> NaN Invalid_operation +ddor793 or 1000 -Inf -> NaN Invalid_operation +ddor794 or Inf -Inf -> NaN Invalid_operation + +ddor800 or Inf -Inf -> NaN Invalid_operation +ddor801 or Inf -1000 -> NaN Invalid_operation +ddor802 or Inf -1 -> NaN Invalid_operation +ddor803 or Inf -0 -> NaN Invalid_operation +ddor804 or Inf 0 -> NaN Invalid_operation +ddor805 or Inf 1 -> NaN Invalid_operation +ddor806 or Inf 1000 -> NaN Invalid_operation +ddor807 or Inf Inf -> NaN Invalid_operation +ddor808 or -1000 Inf -> NaN Invalid_operation +ddor809 or -Inf Inf -> NaN Invalid_operation +ddor810 or -1 Inf -> NaN Invalid_operation +ddor811 or -0 Inf -> NaN Invalid_operation +ddor812 or 0 Inf -> NaN Invalid_operation +ddor813 or 1 Inf -> NaN Invalid_operation +ddor814 or 1000 Inf -> NaN Invalid_operation +ddor815 or Inf Inf -> NaN Invalid_operation + +ddor821 or NaN -Inf -> NaN Invalid_operation +ddor822 or NaN -1000 -> NaN Invalid_operation +ddor823 or NaN -1 -> NaN Invalid_operation +ddor824 or NaN -0 -> NaN Invalid_operation +ddor825 or NaN 0 -> NaN Invalid_operation +ddor826 or NaN 1 -> NaN Invalid_operation +ddor827 or NaN 1000 -> NaN Invalid_operation +ddor828 or NaN Inf -> NaN Invalid_operation +ddor829 or NaN NaN -> NaN Invalid_operation +ddor830 or -Inf NaN -> NaN Invalid_operation +ddor831 or -1000 NaN -> NaN Invalid_operation +ddor832 or -1 NaN -> NaN Invalid_operation +ddor833 or -0 NaN -> NaN Invalid_operation +ddor834 or 0 NaN -> NaN Invalid_operation +ddor835 or 1 NaN -> NaN Invalid_operation +ddor836 or 1000 NaN -> NaN Invalid_operation +ddor837 or Inf NaN -> NaN Invalid_operation + +ddor841 or sNaN -Inf -> NaN Invalid_operation +ddor842 or sNaN -1000 -> NaN Invalid_operation +ddor843 or sNaN -1 -> NaN Invalid_operation +ddor844 or sNaN -0 -> NaN Invalid_operation +ddor845 or sNaN 0 -> NaN Invalid_operation +ddor846 or sNaN 1 -> NaN Invalid_operation +ddor847 or sNaN 1000 -> NaN Invalid_operation +ddor848 or sNaN NaN -> NaN Invalid_operation +ddor849 or sNaN sNaN -> NaN Invalid_operation +ddor850 or NaN sNaN -> NaN Invalid_operation +ddor851 or -Inf sNaN -> NaN Invalid_operation +ddor852 or -1000 sNaN -> NaN Invalid_operation +ddor853 or -1 sNaN -> NaN Invalid_operation +ddor854 or -0 sNaN -> NaN Invalid_operation +ddor855 or 0 sNaN -> NaN Invalid_operation +ddor856 or 1 sNaN -> NaN Invalid_operation +ddor857 or 1000 sNaN -> NaN Invalid_operation +ddor858 or Inf sNaN -> NaN Invalid_operation +ddor859 or NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddor861 or NaN1 -Inf -> NaN Invalid_operation +ddor862 or +NaN2 -1000 -> NaN Invalid_operation +ddor863 or NaN3 1000 -> NaN Invalid_operation +ddor864 or NaN4 Inf -> NaN Invalid_operation +ddor865 or NaN5 +NaN6 -> NaN Invalid_operation +ddor866 or -Inf NaN7 -> NaN Invalid_operation +ddor867 or -1000 NaN8 -> NaN Invalid_operation +ddor868 or 1000 NaN9 -> NaN Invalid_operation +ddor869 or Inf +NaN10 -> NaN Invalid_operation +ddor871 or sNaN11 -Inf -> NaN Invalid_operation +ddor872 or sNaN12 -1000 -> NaN Invalid_operation +ddor873 or sNaN13 1000 -> NaN Invalid_operation +ddor874 or sNaN14 NaN17 -> NaN Invalid_operation +ddor875 or sNaN15 sNaN18 -> NaN Invalid_operation +ddor876 or NaN16 sNaN19 -> NaN Invalid_operation +ddor877 or -Inf +sNaN20 -> NaN Invalid_operation +ddor878 or -1000 sNaN21 -> NaN Invalid_operation +ddor879 or 1000 sNaN22 -> NaN Invalid_operation +ddor880 or Inf sNaN23 -> NaN Invalid_operation +ddor881 or +NaN25 +sNaN24 -> NaN Invalid_operation +ddor882 or -NaN26 NaN28 -> NaN Invalid_operation +ddor883 or -sNaN27 sNaN29 -> NaN Invalid_operation +ddor884 or 1000 -NaN30 -> NaN Invalid_operation +ddor885 or 1000 -sNaN31 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddPlus.decTest b/Lib/test/decimaltestdata/ddPlus.decTest index 5191239..17aa08a 100644 --- a/Lib/test/decimaltestdata/ddPlus.decTest +++ b/Lib/test/decimaltestdata/ddPlus.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- ddPlus.decTest -- decDouble 0+x -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check -ddpls001 plus +7.50 -> 7.50 - --- Infinities -ddpls011 plus Infinity -> Infinity -ddpls012 plus -Infinity -> -Infinity - --- NaNs, 0 payload -ddpls021 plus NaN -> NaN -ddpls022 plus -NaN -> -NaN -ddpls023 plus sNaN -> NaN Invalid_operation -ddpls024 plus -sNaN -> -NaN Invalid_operation - --- NaNs, non-0 payload -ddpls031 plus NaN13 -> NaN13 -ddpls032 plus -NaN13 -> -NaN13 -ddpls033 plus sNaN13 -> NaN13 Invalid_operation -ddpls034 plus -sNaN13 -> -NaN13 Invalid_operation -ddpls035 plus NaN70 -> NaN70 -ddpls036 plus -NaN70 -> -NaN70 -ddpls037 plus sNaN101 -> NaN101 Invalid_operation -ddpls038 plus -sNaN101 -> -NaN101 Invalid_operation - --- finites -ddpls101 plus 7 -> 7 -ddpls102 plus -7 -> -7 -ddpls103 plus 75 -> 75 -ddpls104 plus -75 -> -75 -ddpls105 plus 7.50 -> 7.50 -ddpls106 plus -7.50 -> -7.50 -ddpls107 plus 7.500 -> 7.500 -ddpls108 plus -7.500 -> -7.500 - --- zeros -ddpls111 plus 0 -> 0 -ddpls112 plus -0 -> 0 -ddpls113 plus 0E+4 -> 0E+4 -ddpls114 plus -0E+4 -> 0E+4 -ddpls115 plus 0.0000 -> 0.0000 -ddpls116 plus -0.0000 -> 0.0000 -ddpls117 plus 0E-141 -> 0E-141 -ddpls118 plus -0E-141 -> 0E-141 - --- full coefficients, alternating bits -ddpls121 plus 2682682682682682 -> 2682682682682682 -ddpls122 plus -2682682682682682 -> -2682682682682682 -ddpls123 plus 1341341341341341 -> 1341341341341341 -ddpls124 plus -1341341341341341 -> -1341341341341341 - --- Nmax, Nmin, Ntiny -ddpls131 plus 9.999999999999999E+384 -> 9.999999999999999E+384 -ddpls132 plus 1E-383 -> 1E-383 -ddpls133 plus 1.000000000000000E-383 -> 1.000000000000000E-383 -ddpls134 plus 1E-398 -> 1E-398 Subnormal - -ddpls135 plus -1E-398 -> -1E-398 Subnormal -ddpls136 plus -1.000000000000000E-383 -> -1.000000000000000E-383 -ddpls137 plus -1E-383 -> -1E-383 -ddpls138 plus -9.999999999999999E+384 -> -9.999999999999999E+384 +------------------------------------------------------------------------ +-- ddPlus.decTest -- decDouble 0+x -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check +ddpls001 plus +7.50 -> 7.50 + +-- Infinities +ddpls011 plus Infinity -> Infinity +ddpls012 plus -Infinity -> -Infinity + +-- NaNs, 0 payload +ddpls021 plus NaN -> NaN +ddpls022 plus -NaN -> -NaN +ddpls023 plus sNaN -> NaN Invalid_operation +ddpls024 plus -sNaN -> -NaN Invalid_operation + +-- NaNs, non-0 payload +ddpls031 plus NaN13 -> NaN13 +ddpls032 plus -NaN13 -> -NaN13 +ddpls033 plus sNaN13 -> NaN13 Invalid_operation +ddpls034 plus -sNaN13 -> -NaN13 Invalid_operation +ddpls035 plus NaN70 -> NaN70 +ddpls036 plus -NaN70 -> -NaN70 +ddpls037 plus sNaN101 -> NaN101 Invalid_operation +ddpls038 plus -sNaN101 -> -NaN101 Invalid_operation + +-- finites +ddpls101 plus 7 -> 7 +ddpls102 plus -7 -> -7 +ddpls103 plus 75 -> 75 +ddpls104 plus -75 -> -75 +ddpls105 plus 7.50 -> 7.50 +ddpls106 plus -7.50 -> -7.50 +ddpls107 plus 7.500 -> 7.500 +ddpls108 plus -7.500 -> -7.500 + +-- zeros +ddpls111 plus 0 -> 0 +ddpls112 plus -0 -> 0 +ddpls113 plus 0E+4 -> 0E+4 +ddpls114 plus -0E+4 -> 0E+4 +ddpls115 plus 0.0000 -> 0.0000 +ddpls116 plus -0.0000 -> 0.0000 +ddpls117 plus 0E-141 -> 0E-141 +ddpls118 plus -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +ddpls121 plus 2682682682682682 -> 2682682682682682 +ddpls122 plus -2682682682682682 -> -2682682682682682 +ddpls123 plus 1341341341341341 -> 1341341341341341 +ddpls124 plus -1341341341341341 -> -1341341341341341 + +-- Nmax, Nmin, Ntiny +ddpls131 plus 9.999999999999999E+384 -> 9.999999999999999E+384 +ddpls132 plus 1E-383 -> 1E-383 +ddpls133 plus 1.000000000000000E-383 -> 1.000000000000000E-383 +ddpls134 plus 1E-398 -> 1E-398 Subnormal + +ddpls135 plus -1E-398 -> -1E-398 Subnormal +ddpls136 plus -1.000000000000000E-383 -> -1.000000000000000E-383 +ddpls137 plus -1E-383 -> -1E-383 +ddpls138 plus -9.999999999999999E+384 -> -9.999999999999999E+384 diff --git a/Lib/test/decimaltestdata/ddQuantize.decTest b/Lib/test/decimaltestdata/ddQuantize.decTest index 9177620..0d19c9d 100644 --- a/Lib/test/decimaltestdata/ddQuantize.decTest +++ b/Lib/test/decimaltestdata/ddQuantize.decTest @@ -1,833 +1,833 @@ ------------------------------------------------------------------------- --- ddQuantize.decTest -- decDouble quantize operation -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Most of the tests here assume a "regular pattern", where the --- sign and coefficient are +1. --- 2004.03.15 Underflow for quantize is suppressed --- 2005.06.08 More extensive tests for 'does not fit' -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks -ddqua001 quantize 0 1e0 -> 0 -ddqua002 quantize 1 1e0 -> 1 -ddqua003 quantize 0.1 1e+2 -> 0E+2 Inexact Rounded -ddqua005 quantize 0.1 1e+1 -> 0E+1 Inexact Rounded -ddqua006 quantize 0.1 1e0 -> 0 Inexact Rounded -ddqua007 quantize 0.1 1e-1 -> 0.1 -ddqua008 quantize 0.1 1e-2 -> 0.10 -ddqua009 quantize 0.1 1e-3 -> 0.100 -ddqua010 quantize 0.9 1e+2 -> 0E+2 Inexact Rounded -ddqua011 quantize 0.9 1e+1 -> 0E+1 Inexact Rounded -ddqua012 quantize 0.9 1e+0 -> 1 Inexact Rounded -ddqua013 quantize 0.9 1e-1 -> 0.9 -ddqua014 quantize 0.9 1e-2 -> 0.90 -ddqua015 quantize 0.9 1e-3 -> 0.900 --- negatives -ddqua021 quantize -0 1e0 -> -0 -ddqua022 quantize -1 1e0 -> -1 -ddqua023 quantize -0.1 1e+2 -> -0E+2 Inexact Rounded -ddqua025 quantize -0.1 1e+1 -> -0E+1 Inexact Rounded -ddqua026 quantize -0.1 1e0 -> -0 Inexact Rounded -ddqua027 quantize -0.1 1e-1 -> -0.1 -ddqua028 quantize -0.1 1e-2 -> -0.10 -ddqua029 quantize -0.1 1e-3 -> -0.100 -ddqua030 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded -ddqua031 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded -ddqua032 quantize -0.9 1e+0 -> -1 Inexact Rounded -ddqua033 quantize -0.9 1e-1 -> -0.9 -ddqua034 quantize -0.9 1e-2 -> -0.90 -ddqua035 quantize -0.9 1e-3 -> -0.900 -ddqua036 quantize -0.5 1e+2 -> -0E+2 Inexact Rounded -ddqua037 quantize -0.5 1e+1 -> -0E+1 Inexact Rounded -ddqua038 quantize -0.5 1e+0 -> -0 Inexact Rounded -ddqua039 quantize -0.5 1e-1 -> -0.5 -ddqua040 quantize -0.5 1e-2 -> -0.50 -ddqua041 quantize -0.5 1e-3 -> -0.500 -ddqua042 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded -ddqua043 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded -ddqua044 quantize -0.9 1e+0 -> -1 Inexact Rounded -ddqua045 quantize -0.9 1e-1 -> -0.9 -ddqua046 quantize -0.9 1e-2 -> -0.90 -ddqua047 quantize -0.9 1e-3 -> -0.900 - --- examples from Specification -ddqua060 quantize 2.17 0.001 -> 2.170 -ddqua061 quantize 2.17 0.01 -> 2.17 -ddqua062 quantize 2.17 0.1 -> 2.2 Inexact Rounded -ddqua063 quantize 2.17 1e+0 -> 2 Inexact Rounded -ddqua064 quantize 2.17 1e+1 -> 0E+1 Inexact Rounded -ddqua065 quantize -Inf Inf -> -Infinity -ddqua066 quantize 2 Inf -> NaN Invalid_operation -ddqua067 quantize -0.1 1 -> -0 Inexact Rounded -ddqua068 quantize -0 1e+5 -> -0E+5 -ddqua069 quantize +123456789012345.6 1e-2 -> NaN Invalid_operation -ddqua070 quantize -987654335236450.6 1e-2 -> NaN Invalid_operation -ddqua071 quantize 217 1e-1 -> 217.0 -ddqua072 quantize 217 1e+0 -> 217 -ddqua073 quantize 217 1e+1 -> 2.2E+2 Inexact Rounded -ddqua074 quantize 217 1e+2 -> 2E+2 Inexact Rounded - --- general tests .. -ddqua089 quantize 12 1e+4 -> 0E+4 Inexact Rounded -ddqua090 quantize 12 1e+3 -> 0E+3 Inexact Rounded -ddqua091 quantize 12 1e+2 -> 0E+2 Inexact Rounded -ddqua092 quantize 12 1e+1 -> 1E+1 Inexact Rounded -ddqua093 quantize 1.2345 1e-2 -> 1.23 Inexact Rounded -ddqua094 quantize 1.2355 1e-2 -> 1.24 Inexact Rounded -ddqua095 quantize 1.2345 1e-6 -> 1.234500 -ddqua096 quantize 9.9999 1e-2 -> 10.00 Inexact Rounded -ddqua097 quantize 0.0001 1e-2 -> 0.00 Inexact Rounded -ddqua098 quantize 0.001 1e-2 -> 0.00 Inexact Rounded -ddqua099 quantize 0.009 1e-2 -> 0.01 Inexact Rounded -ddqua100 quantize 92 1e+2 -> 1E+2 Inexact Rounded - -ddqua101 quantize -1 1e0 -> -1 -ddqua102 quantize -1 1e-1 -> -1.0 -ddqua103 quantize -1 1e-2 -> -1.00 -ddqua104 quantize 0 1e0 -> 0 -ddqua105 quantize 0 1e-1 -> 0.0 -ddqua106 quantize 0 1e-2 -> 0.00 -ddqua107 quantize 0.00 1e0 -> 0 -ddqua108 quantize 0 1e+1 -> 0E+1 -ddqua109 quantize 0 1e+2 -> 0E+2 -ddqua110 quantize +1 1e0 -> 1 -ddqua111 quantize +1 1e-1 -> 1.0 -ddqua112 quantize +1 1e-2 -> 1.00 - -ddqua120 quantize 1.04 1e-3 -> 1.040 -ddqua121 quantize 1.04 1e-2 -> 1.04 -ddqua122 quantize 1.04 1e-1 -> 1.0 Inexact Rounded -ddqua123 quantize 1.04 1e0 -> 1 Inexact Rounded -ddqua124 quantize 1.05 1e-3 -> 1.050 -ddqua125 quantize 1.05 1e-2 -> 1.05 -ddqua126 quantize 1.05 1e-1 -> 1.0 Inexact Rounded -ddqua131 quantize 1.05 1e0 -> 1 Inexact Rounded -ddqua132 quantize 1.06 1e-3 -> 1.060 -ddqua133 quantize 1.06 1e-2 -> 1.06 -ddqua134 quantize 1.06 1e-1 -> 1.1 Inexact Rounded -ddqua135 quantize 1.06 1e0 -> 1 Inexact Rounded - -ddqua140 quantize -10 1e-2 -> -10.00 -ddqua141 quantize +1 1e-2 -> 1.00 -ddqua142 quantize +10 1e-2 -> 10.00 -ddqua143 quantize 1E+17 1e-2 -> NaN Invalid_operation -ddqua144 quantize 1E-17 1e-2 -> 0.00 Inexact Rounded -ddqua145 quantize 1E-3 1e-2 -> 0.00 Inexact Rounded -ddqua146 quantize 1E-2 1e-2 -> 0.01 -ddqua147 quantize 1E-1 1e-2 -> 0.10 -ddqua148 quantize 0E-17 1e-2 -> 0.00 - -ddqua150 quantize 1.0600 1e-5 -> 1.06000 -ddqua151 quantize 1.0600 1e-4 -> 1.0600 -ddqua152 quantize 1.0600 1e-3 -> 1.060 Rounded -ddqua153 quantize 1.0600 1e-2 -> 1.06 Rounded -ddqua154 quantize 1.0600 1e-1 -> 1.1 Inexact Rounded -ddqua155 quantize 1.0600 1e0 -> 1 Inexact Rounded - --- a couple where rounding was different in base tests -rounding: half_up -ddqua157 quantize -0.5 1e+0 -> -1 Inexact Rounded -ddqua158 quantize 1.05 1e-1 -> 1.1 Inexact Rounded -ddqua159 quantize 1.06 1e0 -> 1 Inexact Rounded -rounding: half_even - --- base tests with non-1 coefficients -ddqua161 quantize 0 -9e0 -> 0 -ddqua162 quantize 1 -7e0 -> 1 -ddqua163 quantize 0.1 -1e+2 -> 0E+2 Inexact Rounded -ddqua165 quantize 0.1 0e+1 -> 0E+1 Inexact Rounded -ddqua166 quantize 0.1 2e0 -> 0 Inexact Rounded -ddqua167 quantize 0.1 3e-1 -> 0.1 -ddqua168 quantize 0.1 44e-2 -> 0.10 -ddqua169 quantize 0.1 555e-3 -> 0.100 -ddqua170 quantize 0.9 6666e+2 -> 0E+2 Inexact Rounded -ddqua171 quantize 0.9 -777e+1 -> 0E+1 Inexact Rounded -ddqua172 quantize 0.9 -88e+0 -> 1 Inexact Rounded -ddqua173 quantize 0.9 -9e-1 -> 0.9 -ddqua174 quantize 0.9 0e-2 -> 0.90 -ddqua175 quantize 0.9 1.1e-3 -> 0.9000 --- negatives -ddqua181 quantize -0 1.1e0 -> -0.0 -ddqua182 quantize -1 -1e0 -> -1 -ddqua183 quantize -0.1 11e+2 -> -0E+2 Inexact Rounded -ddqua185 quantize -0.1 111e+1 -> -0E+1 Inexact Rounded -ddqua186 quantize -0.1 71e0 -> -0 Inexact Rounded -ddqua187 quantize -0.1 -91e-1 -> -0.1 -ddqua188 quantize -0.1 -.1e-2 -> -0.100 -ddqua189 quantize -0.1 -1e-3 -> -0.100 -ddqua190 quantize -0.9 0e+2 -> -0E+2 Inexact Rounded -ddqua191 quantize -0.9 -0e+1 -> -0E+1 Inexact Rounded -ddqua192 quantize -0.9 -10e+0 -> -1 Inexact Rounded -ddqua193 quantize -0.9 100e-1 -> -0.9 -ddqua194 quantize -0.9 999e-2 -> -0.90 - --- +ve exponents .. -ddqua201 quantize -1 1e+0 -> -1 -ddqua202 quantize -1 1e+1 -> -0E+1 Inexact Rounded -ddqua203 quantize -1 1e+2 -> -0E+2 Inexact Rounded -ddqua204 quantize 0 1e+0 -> 0 -ddqua205 quantize 0 1e+1 -> 0E+1 -ddqua206 quantize 0 1e+2 -> 0E+2 -ddqua207 quantize +1 1e+0 -> 1 -ddqua208 quantize +1 1e+1 -> 0E+1 Inexact Rounded -ddqua209 quantize +1 1e+2 -> 0E+2 Inexact Rounded - -ddqua220 quantize 1.04 1e+3 -> 0E+3 Inexact Rounded -ddqua221 quantize 1.04 1e+2 -> 0E+2 Inexact Rounded -ddqua222 quantize 1.04 1e+1 -> 0E+1 Inexact Rounded -ddqua223 quantize 1.04 1e+0 -> 1 Inexact Rounded -ddqua224 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded -ddqua225 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded -ddqua226 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded -ddqua227 quantize 1.05 1e+0 -> 1 Inexact Rounded -ddqua228 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded -ddqua229 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded -ddqua230 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded -ddqua231 quantize 1.05 1e+0 -> 1 Inexact Rounded -ddqua232 quantize 1.06 1e+3 -> 0E+3 Inexact Rounded -ddqua233 quantize 1.06 1e+2 -> 0E+2 Inexact Rounded -ddqua234 quantize 1.06 1e+1 -> 0E+1 Inexact Rounded -ddqua235 quantize 1.06 1e+0 -> 1 Inexact Rounded - -ddqua240 quantize -10 1e+1 -> -1E+1 Rounded -ddqua241 quantize +1 1e+1 -> 0E+1 Inexact Rounded -ddqua242 quantize +10 1e+1 -> 1E+1 Rounded -ddqua243 quantize 1E+1 1e+1 -> 1E+1 -- underneath this is E+1 -ddqua244 quantize 1E+2 1e+1 -> 1.0E+2 -- underneath this is E+1 -ddqua245 quantize 1E+3 1e+1 -> 1.00E+3 -- underneath this is E+1 -ddqua246 quantize 1E+4 1e+1 -> 1.000E+4 -- underneath this is E+1 -ddqua247 quantize 1E+5 1e+1 -> 1.0000E+5 -- underneath this is E+1 -ddqua248 quantize 1E+6 1e+1 -> 1.00000E+6 -- underneath this is E+1 -ddqua249 quantize 1E+7 1e+1 -> 1.000000E+7 -- underneath this is E+1 -ddqua250 quantize 1E+8 1e+1 -> 1.0000000E+8 -- underneath this is E+1 -ddqua251 quantize 1E+9 1e+1 -> 1.00000000E+9 -- underneath this is E+1 --- next one tries to add 9 zeros -ddqua252 quantize 1E+17 1e+1 -> NaN Invalid_operation -ddqua253 quantize 1E-17 1e+1 -> 0E+1 Inexact Rounded -ddqua254 quantize 1E-2 1e+1 -> 0E+1 Inexact Rounded -ddqua255 quantize 0E-17 1e+1 -> 0E+1 -ddqua256 quantize -0E-17 1e+1 -> -0E+1 -ddqua257 quantize -0E-1 1e+1 -> -0E+1 -ddqua258 quantize -0 1e+1 -> -0E+1 -ddqua259 quantize -0E+1 1e+1 -> -0E+1 - -ddqua260 quantize -10 1e+2 -> -0E+2 Inexact Rounded -ddqua261 quantize +1 1e+2 -> 0E+2 Inexact Rounded -ddqua262 quantize +10 1e+2 -> 0E+2 Inexact Rounded -ddqua263 quantize 1E+1 1e+2 -> 0E+2 Inexact Rounded -ddqua264 quantize 1E+2 1e+2 -> 1E+2 -ddqua265 quantize 1E+3 1e+2 -> 1.0E+3 -ddqua266 quantize 1E+4 1e+2 -> 1.00E+4 -ddqua267 quantize 1E+5 1e+2 -> 1.000E+5 -ddqua268 quantize 1E+6 1e+2 -> 1.0000E+6 -ddqua269 quantize 1E+7 1e+2 -> 1.00000E+7 -ddqua270 quantize 1E+8 1e+2 -> 1.000000E+8 -ddqua271 quantize 1E+9 1e+2 -> 1.0000000E+9 -ddqua272 quantize 1E+10 1e+2 -> 1.00000000E+10 -ddqua273 quantize 1E-10 1e+2 -> 0E+2 Inexact Rounded -ddqua274 quantize 1E-2 1e+2 -> 0E+2 Inexact Rounded -ddqua275 quantize 0E-10 1e+2 -> 0E+2 - -ddqua280 quantize -10 1e+3 -> -0E+3 Inexact Rounded -ddqua281 quantize +1 1e+3 -> 0E+3 Inexact Rounded -ddqua282 quantize +10 1e+3 -> 0E+3 Inexact Rounded -ddqua283 quantize 1E+1 1e+3 -> 0E+3 Inexact Rounded -ddqua284 quantize 1E+2 1e+3 -> 0E+3 Inexact Rounded -ddqua285 quantize 1E+3 1e+3 -> 1E+3 -ddqua286 quantize 1E+4 1e+3 -> 1.0E+4 -ddqua287 quantize 1E+5 1e+3 -> 1.00E+5 -ddqua288 quantize 1E+6 1e+3 -> 1.000E+6 -ddqua289 quantize 1E+7 1e+3 -> 1.0000E+7 -ddqua290 quantize 1E+8 1e+3 -> 1.00000E+8 -ddqua291 quantize 1E+9 1e+3 -> 1.000000E+9 -ddqua292 quantize 1E+10 1e+3 -> 1.0000000E+10 -ddqua293 quantize 1E-10 1e+3 -> 0E+3 Inexact Rounded -ddqua294 quantize 1E-2 1e+3 -> 0E+3 Inexact Rounded -ddqua295 quantize 0E-10 1e+3 -> 0E+3 - --- round up from below [sign wrong in JIT compiler once] -ddqua300 quantize 0.0078 1e-5 -> 0.00780 -ddqua301 quantize 0.0078 1e-4 -> 0.0078 -ddqua302 quantize 0.0078 1e-3 -> 0.008 Inexact Rounded -ddqua303 quantize 0.0078 1e-2 -> 0.01 Inexact Rounded -ddqua304 quantize 0.0078 1e-1 -> 0.0 Inexact Rounded -ddqua305 quantize 0.0078 1e0 -> 0 Inexact Rounded -ddqua306 quantize 0.0078 1e+1 -> 0E+1 Inexact Rounded -ddqua307 quantize 0.0078 1e+2 -> 0E+2 Inexact Rounded - -ddqua310 quantize -0.0078 1e-5 -> -0.00780 -ddqua311 quantize -0.0078 1e-4 -> -0.0078 -ddqua312 quantize -0.0078 1e-3 -> -0.008 Inexact Rounded -ddqua313 quantize -0.0078 1e-2 -> -0.01 Inexact Rounded -ddqua314 quantize -0.0078 1e-1 -> -0.0 Inexact Rounded -ddqua315 quantize -0.0078 1e0 -> -0 Inexact Rounded -ddqua316 quantize -0.0078 1e+1 -> -0E+1 Inexact Rounded -ddqua317 quantize -0.0078 1e+2 -> -0E+2 Inexact Rounded - -ddqua320 quantize 0.078 1e-5 -> 0.07800 -ddqua321 quantize 0.078 1e-4 -> 0.0780 -ddqua322 quantize 0.078 1e-3 -> 0.078 -ddqua323 quantize 0.078 1e-2 -> 0.08 Inexact Rounded -ddqua324 quantize 0.078 1e-1 -> 0.1 Inexact Rounded -ddqua325 quantize 0.078 1e0 -> 0 Inexact Rounded -ddqua326 quantize 0.078 1e+1 -> 0E+1 Inexact Rounded -ddqua327 quantize 0.078 1e+2 -> 0E+2 Inexact Rounded - -ddqua330 quantize -0.078 1e-5 -> -0.07800 -ddqua331 quantize -0.078 1e-4 -> -0.0780 -ddqua332 quantize -0.078 1e-3 -> -0.078 -ddqua333 quantize -0.078 1e-2 -> -0.08 Inexact Rounded -ddqua334 quantize -0.078 1e-1 -> -0.1 Inexact Rounded -ddqua335 quantize -0.078 1e0 -> -0 Inexact Rounded -ddqua336 quantize -0.078 1e+1 -> -0E+1 Inexact Rounded -ddqua337 quantize -0.078 1e+2 -> -0E+2 Inexact Rounded - -ddqua340 quantize 0.78 1e-5 -> 0.78000 -ddqua341 quantize 0.78 1e-4 -> 0.7800 -ddqua342 quantize 0.78 1e-3 -> 0.780 -ddqua343 quantize 0.78 1e-2 -> 0.78 -ddqua344 quantize 0.78 1e-1 -> 0.8 Inexact Rounded -ddqua345 quantize 0.78 1e0 -> 1 Inexact Rounded -ddqua346 quantize 0.78 1e+1 -> 0E+1 Inexact Rounded -ddqua347 quantize 0.78 1e+2 -> 0E+2 Inexact Rounded - -ddqua350 quantize -0.78 1e-5 -> -0.78000 -ddqua351 quantize -0.78 1e-4 -> -0.7800 -ddqua352 quantize -0.78 1e-3 -> -0.780 -ddqua353 quantize -0.78 1e-2 -> -0.78 -ddqua354 quantize -0.78 1e-1 -> -0.8 Inexact Rounded -ddqua355 quantize -0.78 1e0 -> -1 Inexact Rounded -ddqua356 quantize -0.78 1e+1 -> -0E+1 Inexact Rounded -ddqua357 quantize -0.78 1e+2 -> -0E+2 Inexact Rounded - -ddqua360 quantize 7.8 1e-5 -> 7.80000 -ddqua361 quantize 7.8 1e-4 -> 7.8000 -ddqua362 quantize 7.8 1e-3 -> 7.800 -ddqua363 quantize 7.8 1e-2 -> 7.80 -ddqua364 quantize 7.8 1e-1 -> 7.8 -ddqua365 quantize 7.8 1e0 -> 8 Inexact Rounded -ddqua366 quantize 7.8 1e+1 -> 1E+1 Inexact Rounded -ddqua367 quantize 7.8 1e+2 -> 0E+2 Inexact Rounded -ddqua368 quantize 7.8 1e+3 -> 0E+3 Inexact Rounded - -ddqua370 quantize -7.8 1e-5 -> -7.80000 -ddqua371 quantize -7.8 1e-4 -> -7.8000 -ddqua372 quantize -7.8 1e-3 -> -7.800 -ddqua373 quantize -7.8 1e-2 -> -7.80 -ddqua374 quantize -7.8 1e-1 -> -7.8 -ddqua375 quantize -7.8 1e0 -> -8 Inexact Rounded -ddqua376 quantize -7.8 1e+1 -> -1E+1 Inexact Rounded -ddqua377 quantize -7.8 1e+2 -> -0E+2 Inexact Rounded -ddqua378 quantize -7.8 1e+3 -> -0E+3 Inexact Rounded - --- some individuals -ddqua380 quantize 1234567352364.506 1e-2 -> 1234567352364.51 Inexact Rounded -ddqua381 quantize 12345673523645.06 1e-2 -> 12345673523645.06 -ddqua382 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation -ddqua383 quantize 1234567352364506 1e-2 -> NaN Invalid_operation -ddqua384 quantize -1234567352364.506 1e-2 -> -1234567352364.51 Inexact Rounded -ddqua385 quantize -12345673523645.06 1e-2 -> -12345673523645.06 -ddqua386 quantize -123456735236450.6 1e-2 -> NaN Invalid_operation -ddqua387 quantize -1234567352364506 1e-2 -> NaN Invalid_operation - -rounding: down -ddqua389 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation --- ? should that one instead have been: --- ddqua389 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation -rounding: half_up - --- and a few more from e-mail discussions -ddqua391 quantize 12345678912.34567 1e-3 -> 12345678912.346 Inexact Rounded -ddqua392 quantize 123456789123.4567 1e-3 -> 123456789123.457 Inexact Rounded -ddqua393 quantize 1234567891234.567 1e-3 -> 1234567891234.567 -ddqua394 quantize 12345678912345.67 1e-3 -> NaN Invalid_operation -ddqua395 quantize 123456789123456.7 1e-3 -> NaN Invalid_operation -ddqua396 quantize 1234567891234567. 1e-3 -> NaN Invalid_operation - --- some 9999 round-up cases -ddqua400 quantize 9.999 1e-5 -> 9.99900 -ddqua401 quantize 9.999 1e-4 -> 9.9990 -ddqua402 quantize 9.999 1e-3 -> 9.999 -ddqua403 quantize 9.999 1e-2 -> 10.00 Inexact Rounded -ddqua404 quantize 9.999 1e-1 -> 10.0 Inexact Rounded -ddqua405 quantize 9.999 1e0 -> 10 Inexact Rounded -ddqua406 quantize 9.999 1e1 -> 1E+1 Inexact Rounded -ddqua407 quantize 9.999 1e2 -> 0E+2 Inexact Rounded - -ddqua410 quantize 0.999 1e-5 -> 0.99900 -ddqua411 quantize 0.999 1e-4 -> 0.9990 -ddqua412 quantize 0.999 1e-3 -> 0.999 -ddqua413 quantize 0.999 1e-2 -> 1.00 Inexact Rounded -ddqua414 quantize 0.999 1e-1 -> 1.0 Inexact Rounded -ddqua415 quantize 0.999 1e0 -> 1 Inexact Rounded -ddqua416 quantize 0.999 1e1 -> 0E+1 Inexact Rounded - -ddqua420 quantize 0.0999 1e-5 -> 0.09990 -ddqua421 quantize 0.0999 1e-4 -> 0.0999 -ddqua422 quantize 0.0999 1e-3 -> 0.100 Inexact Rounded -ddqua423 quantize 0.0999 1e-2 -> 0.10 Inexact Rounded -ddqua424 quantize 0.0999 1e-1 -> 0.1 Inexact Rounded -ddqua425 quantize 0.0999 1e0 -> 0 Inexact Rounded -ddqua426 quantize 0.0999 1e1 -> 0E+1 Inexact Rounded - -ddqua430 quantize 0.00999 1e-5 -> 0.00999 -ddqua431 quantize 0.00999 1e-4 -> 0.0100 Inexact Rounded -ddqua432 quantize 0.00999 1e-3 -> 0.010 Inexact Rounded -ddqua433 quantize 0.00999 1e-2 -> 0.01 Inexact Rounded -ddqua434 quantize 0.00999 1e-1 -> 0.0 Inexact Rounded -ddqua435 quantize 0.00999 1e0 -> 0 Inexact Rounded -ddqua436 quantize 0.00999 1e1 -> 0E+1 Inexact Rounded - -ddqua440 quantize 0.000999 1e-5 -> 0.00100 Inexact Rounded -ddqua441 quantize 0.000999 1e-4 -> 0.0010 Inexact Rounded -ddqua442 quantize 0.000999 1e-3 -> 0.001 Inexact Rounded -ddqua443 quantize 0.000999 1e-2 -> 0.00 Inexact Rounded -ddqua444 quantize 0.000999 1e-1 -> 0.0 Inexact Rounded -ddqua445 quantize 0.000999 1e0 -> 0 Inexact Rounded -ddqua446 quantize 0.000999 1e1 -> 0E+1 Inexact Rounded - -ddqua1001 quantize 0.000 0.001 -> 0.000 -ddqua1002 quantize 0.001 0.001 -> 0.001 -ddqua1003 quantize 0.0012 0.001 -> 0.001 Inexact Rounded -ddqua1004 quantize 0.0018 0.001 -> 0.002 Inexact Rounded -ddqua1005 quantize 0.501 0.001 -> 0.501 -ddqua1006 quantize 0.5012 0.001 -> 0.501 Inexact Rounded -ddqua1007 quantize 0.5018 0.001 -> 0.502 Inexact Rounded -ddqua1008 quantize 0.999 0.001 -> 0.999 - -ddqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded -ddqua482 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded -ddqua483 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded -ddqua484 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded -ddqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded -ddqua486 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded --- a potential double-round -ddqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded -ddqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded - -ddqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded -ddqua492 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded -ddqua493 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded -ddqua494 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded -ddqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded -ddqua496 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded -ddqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded -ddqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded - --- Zeros -ddqua500 quantize 0 1e1 -> 0E+1 -ddqua501 quantize 0 1e0 -> 0 -ddqua502 quantize 0 1e-1 -> 0.0 -ddqua503 quantize 0.0 1e-1 -> 0.0 -ddqua504 quantize 0.0 1e0 -> 0 -ddqua505 quantize 0.0 1e+1 -> 0E+1 -ddqua506 quantize 0E+1 1e-1 -> 0.0 -ddqua507 quantize 0E+1 1e0 -> 0 -ddqua508 quantize 0E+1 1e+1 -> 0E+1 -ddqua509 quantize -0 1e1 -> -0E+1 -ddqua510 quantize -0 1e0 -> -0 -ddqua511 quantize -0 1e-1 -> -0.0 -ddqua512 quantize -0.0 1e-1 -> -0.0 -ddqua513 quantize -0.0 1e0 -> -0 -ddqua514 quantize -0.0 1e+1 -> -0E+1 -ddqua515 quantize -0E+1 1e-1 -> -0.0 -ddqua516 quantize -0E+1 1e0 -> -0 -ddqua517 quantize -0E+1 1e+1 -> -0E+1 - --- Suspicious RHS values -ddqua520 quantize 1.234 1e359 -> 0E+359 Inexact Rounded -ddqua521 quantize 123.456 1e359 -> 0E+359 Inexact Rounded -ddqua522 quantize 1.234 1e359 -> 0E+359 Inexact Rounded -ddqua523 quantize 123.456 1e359 -> 0E+359 Inexact Rounded --- next four are "won't fit" overfl -ddqua526 quantize 1.234 1e-299 -> NaN Invalid_operation -ddqua527 quantize 123.456 1e-299 -> NaN Invalid_operation -ddqua528 quantize 1.234 1e-299 -> NaN Invalid_operation -ddqua529 quantize 123.456 1e-299 -> NaN Invalid_operation - -ddqua532 quantize 1.234E+299 1e299 -> 1E+299 Inexact Rounded -ddqua533 quantize 1.234E+298 1e299 -> 0E+299 Inexact Rounded -ddqua534 quantize 1.234 1e299 -> 0E+299 Inexact Rounded -ddqua537 quantize 0 1e-299 -> 0E-299 --- next two are "won't fit" overflows -ddqua538 quantize 1.234 1e-299 -> NaN Invalid_operation -ddqua539 quantize 1.234 1e-300 -> NaN Invalid_operation --- [more below] - --- Specials -ddqua580 quantize Inf -Inf -> Infinity -ddqua581 quantize Inf 1e-299 -> NaN Invalid_operation -ddqua582 quantize Inf 1e-1 -> NaN Invalid_operation -ddqua583 quantize Inf 1e0 -> NaN Invalid_operation -ddqua584 quantize Inf 1e1 -> NaN Invalid_operation -ddqua585 quantize Inf 1e299 -> NaN Invalid_operation -ddqua586 quantize Inf Inf -> Infinity -ddqua587 quantize -1000 Inf -> NaN Invalid_operation -ddqua588 quantize -Inf Inf -> -Infinity -ddqua589 quantize -1 Inf -> NaN Invalid_operation -ddqua590 quantize 0 Inf -> NaN Invalid_operation -ddqua591 quantize 1 Inf -> NaN Invalid_operation -ddqua592 quantize 1000 Inf -> NaN Invalid_operation -ddqua593 quantize Inf Inf -> Infinity -ddqua594 quantize Inf 1e-0 -> NaN Invalid_operation -ddqua595 quantize -0 Inf -> NaN Invalid_operation - -ddqua600 quantize -Inf -Inf -> -Infinity -ddqua601 quantize -Inf 1e-299 -> NaN Invalid_operation -ddqua602 quantize -Inf 1e-1 -> NaN Invalid_operation -ddqua603 quantize -Inf 1e0 -> NaN Invalid_operation -ddqua604 quantize -Inf 1e1 -> NaN Invalid_operation -ddqua605 quantize -Inf 1e299 -> NaN Invalid_operation -ddqua606 quantize -Inf Inf -> -Infinity -ddqua607 quantize -1000 Inf -> NaN Invalid_operation -ddqua608 quantize -Inf -Inf -> -Infinity -ddqua609 quantize -1 -Inf -> NaN Invalid_operation -ddqua610 quantize 0 -Inf -> NaN Invalid_operation -ddqua611 quantize 1 -Inf -> NaN Invalid_operation -ddqua612 quantize 1000 -Inf -> NaN Invalid_operation -ddqua613 quantize Inf -Inf -> Infinity -ddqua614 quantize -Inf 1e-0 -> NaN Invalid_operation -ddqua615 quantize -0 -Inf -> NaN Invalid_operation - -ddqua621 quantize NaN -Inf -> NaN -ddqua622 quantize NaN 1e-299 -> NaN -ddqua623 quantize NaN 1e-1 -> NaN -ddqua624 quantize NaN 1e0 -> NaN -ddqua625 quantize NaN 1e1 -> NaN -ddqua626 quantize NaN 1e299 -> NaN -ddqua627 quantize NaN Inf -> NaN -ddqua628 quantize NaN NaN -> NaN -ddqua629 quantize -Inf NaN -> NaN -ddqua630 quantize -1000 NaN -> NaN -ddqua631 quantize -1 NaN -> NaN -ddqua632 quantize 0 NaN -> NaN -ddqua633 quantize 1 NaN -> NaN -ddqua634 quantize 1000 NaN -> NaN -ddqua635 quantize Inf NaN -> NaN -ddqua636 quantize NaN 1e-0 -> NaN -ddqua637 quantize -0 NaN -> NaN - -ddqua641 quantize sNaN -Inf -> NaN Invalid_operation -ddqua642 quantize sNaN 1e-299 -> NaN Invalid_operation -ddqua643 quantize sNaN 1e-1 -> NaN Invalid_operation -ddqua644 quantize sNaN 1e0 -> NaN Invalid_operation -ddqua645 quantize sNaN 1e1 -> NaN Invalid_operation -ddqua646 quantize sNaN 1e299 -> NaN Invalid_operation -ddqua647 quantize sNaN NaN -> NaN Invalid_operation -ddqua648 quantize sNaN sNaN -> NaN Invalid_operation -ddqua649 quantize NaN sNaN -> NaN Invalid_operation -ddqua650 quantize -Inf sNaN -> NaN Invalid_operation -ddqua651 quantize -1000 sNaN -> NaN Invalid_operation -ddqua652 quantize -1 sNaN -> NaN Invalid_operation -ddqua653 quantize 0 sNaN -> NaN Invalid_operation -ddqua654 quantize 1 sNaN -> NaN Invalid_operation -ddqua655 quantize 1000 sNaN -> NaN Invalid_operation -ddqua656 quantize Inf sNaN -> NaN Invalid_operation -ddqua657 quantize NaN sNaN -> NaN Invalid_operation -ddqua658 quantize sNaN 1e-0 -> NaN Invalid_operation -ddqua659 quantize -0 sNaN -> NaN Invalid_operation - --- propagating NaNs -ddqua661 quantize NaN9 -Inf -> NaN9 -ddqua662 quantize NaN8 919 -> NaN8 -ddqua663 quantize NaN71 Inf -> NaN71 -ddqua664 quantize NaN6 NaN5 -> NaN6 -ddqua665 quantize -Inf NaN4 -> NaN4 -ddqua666 quantize -919 NaN31 -> NaN31 -ddqua667 quantize Inf NaN2 -> NaN2 - -ddqua671 quantize sNaN99 -Inf -> NaN99 Invalid_operation -ddqua672 quantize sNaN98 -11 -> NaN98 Invalid_operation -ddqua673 quantize sNaN97 NaN -> NaN97 Invalid_operation -ddqua674 quantize sNaN16 sNaN94 -> NaN16 Invalid_operation -ddqua675 quantize NaN95 sNaN93 -> NaN93 Invalid_operation -ddqua676 quantize -Inf sNaN92 -> NaN92 Invalid_operation -ddqua677 quantize 088 sNaN91 -> NaN91 Invalid_operation -ddqua678 quantize Inf sNaN90 -> NaN90 Invalid_operation -ddqua679 quantize NaN sNaN88 -> NaN88 Invalid_operation - -ddqua681 quantize -NaN9 -Inf -> -NaN9 -ddqua682 quantize -NaN8 919 -> -NaN8 -ddqua683 quantize -NaN71 Inf -> -NaN71 -ddqua684 quantize -NaN6 -NaN5 -> -NaN6 -ddqua685 quantize -Inf -NaN4 -> -NaN4 -ddqua686 quantize -919 -NaN31 -> -NaN31 -ddqua687 quantize Inf -NaN2 -> -NaN2 - -ddqua691 quantize -sNaN99 -Inf -> -NaN99 Invalid_operation -ddqua692 quantize -sNaN98 -11 -> -NaN98 Invalid_operation -ddqua693 quantize -sNaN97 NaN -> -NaN97 Invalid_operation -ddqua694 quantize -sNaN16 sNaN94 -> -NaN16 Invalid_operation -ddqua695 quantize -NaN95 -sNaN93 -> -NaN93 Invalid_operation -ddqua696 quantize -Inf -sNaN92 -> -NaN92 Invalid_operation -ddqua697 quantize 088 -sNaN91 -> -NaN91 Invalid_operation -ddqua698 quantize Inf -sNaN90 -> -NaN90 Invalid_operation -ddqua699 quantize NaN -sNaN88 -> -NaN88 Invalid_operation - --- subnormals and underflow -ddqua710 quantize 1.00E-383 1e-383 -> 1E-383 Rounded -ddqua711 quantize 0.1E-383 2e-384 -> 1E-384 Subnormal -ddqua712 quantize 0.10E-383 3e-384 -> 1E-384 Subnormal Rounded -ddqua713 quantize 0.100E-383 4e-384 -> 1E-384 Subnormal Rounded -ddqua714 quantize 0.01E-383 5e-385 -> 1E-385 Subnormal --- next is rounded to Emin -ddqua715 quantize 0.999E-383 1e-383 -> 1E-383 Inexact Rounded -ddqua716 quantize 0.099E-383 10e-384 -> 1E-384 Inexact Rounded Subnormal - -ddqua717 quantize 0.009E-383 1e-385 -> 1E-385 Inexact Rounded Subnormal -ddqua718 quantize 0.001E-383 1e-385 -> 0E-385 Inexact Rounded -ddqua719 quantize 0.0009E-383 1e-385 -> 0E-385 Inexact Rounded -ddqua720 quantize 0.0001E-383 1e-385 -> 0E-385 Inexact Rounded - -ddqua730 quantize -1.00E-383 1e-383 -> -1E-383 Rounded -ddqua731 quantize -0.1E-383 1e-383 -> -0E-383 Rounded Inexact -ddqua732 quantize -0.10E-383 1e-383 -> -0E-383 Rounded Inexact -ddqua733 quantize -0.100E-383 1e-383 -> -0E-383 Rounded Inexact -ddqua734 quantize -0.01E-383 1e-383 -> -0E-383 Inexact Rounded --- next is rounded to Emin -ddqua735 quantize -0.999E-383 90e-383 -> -1E-383 Inexact Rounded -ddqua736 quantize -0.099E-383 -1e-383 -> -0E-383 Inexact Rounded -ddqua737 quantize -0.009E-383 -1e-383 -> -0E-383 Inexact Rounded -ddqua738 quantize -0.001E-383 -0e-383 -> -0E-383 Inexact Rounded -ddqua739 quantize -0.0001E-383 0e-383 -> -0E-383 Inexact Rounded - -ddqua740 quantize -1.00E-383 1e-384 -> -1.0E-383 Rounded -ddqua741 quantize -0.1E-383 1e-384 -> -1E-384 Subnormal -ddqua742 quantize -0.10E-383 1e-384 -> -1E-384 Subnormal Rounded -ddqua743 quantize -0.100E-383 1e-384 -> -1E-384 Subnormal Rounded -ddqua744 quantize -0.01E-383 1e-384 -> -0E-384 Inexact Rounded --- next is rounded to Emin -ddqua745 quantize -0.999E-383 1e-384 -> -1.0E-383 Inexact Rounded -ddqua746 quantize -0.099E-383 1e-384 -> -1E-384 Inexact Rounded Subnormal -ddqua747 quantize -0.009E-383 1e-384 -> -0E-384 Inexact Rounded -ddqua748 quantize -0.001E-383 1e-384 -> -0E-384 Inexact Rounded -ddqua749 quantize -0.0001E-383 1e-384 -> -0E-384 Inexact Rounded - -ddqua750 quantize -1.00E-383 1e-385 -> -1.00E-383 -ddqua751 quantize -0.1E-383 1e-385 -> -1.0E-384 Subnormal -ddqua752 quantize -0.10E-383 1e-385 -> -1.0E-384 Subnormal -ddqua753 quantize -0.100E-383 1e-385 -> -1.0E-384 Subnormal Rounded -ddqua754 quantize -0.01E-383 1e-385 -> -1E-385 Subnormal --- next is rounded to Emin -ddqua755 quantize -0.999E-383 1e-385 -> -1.00E-383 Inexact Rounded -ddqua756 quantize -0.099E-383 1e-385 -> -1.0E-384 Inexact Rounded Subnormal -ddqua757 quantize -0.009E-383 1e-385 -> -1E-385 Inexact Rounded Subnormal -ddqua758 quantize -0.001E-383 1e-385 -> -0E-385 Inexact Rounded -ddqua759 quantize -0.0001E-383 1e-385 -> -0E-385 Inexact Rounded - -ddqua760 quantize -1.00E-383 1e-386 -> -1.000E-383 -ddqua761 quantize -0.1E-383 1e-386 -> -1.00E-384 Subnormal -ddqua762 quantize -0.10E-383 1e-386 -> -1.00E-384 Subnormal -ddqua763 quantize -0.100E-383 1e-386 -> -1.00E-384 Subnormal -ddqua764 quantize -0.01E-383 1e-386 -> -1.0E-385 Subnormal -ddqua765 quantize -0.999E-383 1e-386 -> -9.99E-384 Subnormal -ddqua766 quantize -0.099E-383 1e-386 -> -9.9E-385 Subnormal -ddqua767 quantize -0.009E-383 1e-386 -> -9E-386 Subnormal -ddqua768 quantize -0.001E-383 1e-386 -> -1E-386 Subnormal -ddqua769 quantize -0.0001E-383 1e-386 -> -0E-386 Inexact Rounded - --- More from Fung Lee -ddqua1021 quantize 8.666666666666000E+384 1.000000000000000E+384 -> 8.666666666666000E+384 -ddqua1022 quantize -8.666666666666000E+384 1.000000000000000E+384 -> -8.666666666666000E+384 -ddqua1027 quantize 8.666666666666000E+323 1E+31 -> NaN Invalid_operation -ddqua1029 quantize 8.66666666E+3 1E+3 -> 9E+3 Inexact Rounded - - ---ddqua1030 quantize 8.666666666666000E+384 1E+384 -> 9.000000000000000E+384 Rounded Inexact ---ddqua1031 quantize 8.666666666666000E+384 1E+384 -> 8.666666666666000E+384 Rounded ---ddqua1032 quantize 8.666666666666000E+384 1E+383 -> 8.666666666666000E+384 Rounded ---ddqua1033 quantize 8.666666666666000E+384 1E+382 -> 8.666666666666000E+384 Rounded ---ddqua1034 quantize 8.666666666666000E+384 1E+381 -> 8.666666666666000E+384 Rounded ---ddqua1035 quantize 8.666666666666000E+384 1E+380 -> 8.666666666666000E+384 Rounded - --- Int and uInt32 edge values for testing conversions -ddqua1040 quantize -2147483646 0 -> -2147483646 -ddqua1041 quantize -2147483647 0 -> -2147483647 -ddqua1042 quantize -2147483648 0 -> -2147483648 -ddqua1043 quantize -2147483649 0 -> -2147483649 -ddqua1044 quantize 2147483646 0 -> 2147483646 -ddqua1045 quantize 2147483647 0 -> 2147483647 -ddqua1046 quantize 2147483648 0 -> 2147483648 -ddqua1047 quantize 2147483649 0 -> 2147483649 -ddqua1048 quantize 4294967294 0 -> 4294967294 -ddqua1049 quantize 4294967295 0 -> 4294967295 -ddqua1050 quantize 4294967296 0 -> 4294967296 -ddqua1051 quantize 4294967297 0 -> 4294967297 - --- Rounding swathe -rounding: half_even -ddqua1100 quantize 1.2300 1.00 -> 1.23 Rounded -ddqua1101 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -ddqua1102 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -ddqua1103 quantize 1.2350 1.00 -> 1.24 Inexact Rounded -ddqua1104 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -ddqua1105 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -ddqua1106 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -ddqua1107 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -ddqua1108 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -ddqua1109 quantize 1.2399 1.00 -> 1.24 Inexact Rounded - -rounding: half_up -ddqua1200 quantize 1.2300 1.00 -> 1.23 Rounded -ddqua1201 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -ddqua1202 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -ddqua1203 quantize 1.2350 1.00 -> 1.24 Inexact Rounded -ddqua1204 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -ddqua1205 quantize 1.2450 1.00 -> 1.25 Inexact Rounded -ddqua1206 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -ddqua1207 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -ddqua1208 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -ddqua1209 quantize 1.2399 1.00 -> 1.24 Inexact Rounded - -rounding: half_down -ddqua1300 quantize 1.2300 1.00 -> 1.23 Rounded -ddqua1301 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -ddqua1302 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -ddqua1303 quantize 1.2350 1.00 -> 1.23 Inexact Rounded -ddqua1304 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -ddqua1305 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -ddqua1306 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -ddqua1307 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -ddqua1308 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -ddqua1309 quantize 1.2399 1.00 -> 1.24 Inexact Rounded - -rounding: up -ddqua1400 quantize 1.2300 1.00 -> 1.23 Rounded -ddqua1401 quantize 1.2301 1.00 -> 1.24 Inexact Rounded -ddqua1402 quantize 1.2310 1.00 -> 1.24 Inexact Rounded -ddqua1403 quantize 1.2350 1.00 -> 1.24 Inexact Rounded -ddqua1404 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -ddqua1405 quantize 1.2450 1.00 -> 1.25 Inexact Rounded -ddqua1406 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -ddqua1407 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -ddqua1408 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -ddqua1409 quantize 1.2399 1.00 -> 1.24 Inexact Rounded -ddqua1411 quantize -1.2399 1.00 -> -1.24 Inexact Rounded - -rounding: down -ddqua1500 quantize 1.2300 1.00 -> 1.23 Rounded -ddqua1501 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -ddqua1502 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -ddqua1503 quantize 1.2350 1.00 -> 1.23 Inexact Rounded -ddqua1504 quantize 1.2351 1.00 -> 1.23 Inexact Rounded -ddqua1505 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -ddqua1506 quantize 1.2451 1.00 -> 1.24 Inexact Rounded -ddqua1507 quantize 1.2360 1.00 -> 1.23 Inexact Rounded -ddqua1508 quantize 1.2370 1.00 -> 1.23 Inexact Rounded -ddqua1509 quantize 1.2399 1.00 -> 1.23 Inexact Rounded -ddqua1511 quantize -1.2399 1.00 -> -1.23 Inexact Rounded - -rounding: ceiling -ddqua1600 quantize 1.2300 1.00 -> 1.23 Rounded -ddqua1601 quantize 1.2301 1.00 -> 1.24 Inexact Rounded -ddqua1602 quantize 1.2310 1.00 -> 1.24 Inexact Rounded -ddqua1603 quantize 1.2350 1.00 -> 1.24 Inexact Rounded -ddqua1604 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -ddqua1605 quantize 1.2450 1.00 -> 1.25 Inexact Rounded -ddqua1606 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -ddqua1607 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -ddqua1608 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -ddqua1609 quantize 1.2399 1.00 -> 1.24 Inexact Rounded -ddqua1611 quantize -1.2399 1.00 -> -1.23 Inexact Rounded - -rounding: floor -ddqua1700 quantize 1.2300 1.00 -> 1.23 Rounded -ddqua1701 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -ddqua1702 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -ddqua1703 quantize 1.2350 1.00 -> 1.23 Inexact Rounded -ddqua1704 quantize 1.2351 1.00 -> 1.23 Inexact Rounded -ddqua1705 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -ddqua1706 quantize 1.2451 1.00 -> 1.24 Inexact Rounded -ddqua1707 quantize 1.2360 1.00 -> 1.23 Inexact Rounded -ddqua1708 quantize 1.2370 1.00 -> 1.23 Inexact Rounded -ddqua1709 quantize 1.2399 1.00 -> 1.23 Inexact Rounded -ddqua1711 quantize -1.2399 1.00 -> -1.24 Inexact Rounded - -rounding: 05up -ddqua1800 quantize 1.2000 1.00 -> 1.20 Rounded -ddqua1801 quantize 1.2001 1.00 -> 1.21 Inexact Rounded -ddqua1802 quantize 1.2010 1.00 -> 1.21 Inexact Rounded -ddqua1803 quantize 1.2050 1.00 -> 1.21 Inexact Rounded -ddqua1804 quantize 1.2051 1.00 -> 1.21 Inexact Rounded -ddqua1807 quantize 1.2060 1.00 -> 1.21 Inexact Rounded -ddqua1808 quantize 1.2070 1.00 -> 1.21 Inexact Rounded -ddqua1809 quantize 1.2099 1.00 -> 1.21 Inexact Rounded -ddqua1811 quantize -1.2099 1.00 -> -1.21 Inexact Rounded - -ddqua1900 quantize 1.2100 1.00 -> 1.21 Rounded -ddqua1901 quantize 1.2101 1.00 -> 1.21 Inexact Rounded -ddqua1902 quantize 1.2110 1.00 -> 1.21 Inexact Rounded -ddqua1903 quantize 1.2150 1.00 -> 1.21 Inexact Rounded -ddqua1904 quantize 1.2151 1.00 -> 1.21 Inexact Rounded -ddqua1907 quantize 1.2160 1.00 -> 1.21 Inexact Rounded -ddqua1908 quantize 1.2170 1.00 -> 1.21 Inexact Rounded -ddqua1909 quantize 1.2199 1.00 -> 1.21 Inexact Rounded -ddqua1911 quantize -1.2199 1.00 -> -1.21 Inexact Rounded - -ddqua2000 quantize 1.2400 1.00 -> 1.24 Rounded -ddqua2001 quantize 1.2401 1.00 -> 1.24 Inexact Rounded -ddqua2002 quantize 1.2410 1.00 -> 1.24 Inexact Rounded -ddqua2003 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -ddqua2004 quantize 1.2451 1.00 -> 1.24 Inexact Rounded -ddqua2007 quantize 1.2460 1.00 -> 1.24 Inexact Rounded -ddqua2008 quantize 1.2470 1.00 -> 1.24 Inexact Rounded -ddqua2009 quantize 1.2499 1.00 -> 1.24 Inexact Rounded -ddqua2011 quantize -1.2499 1.00 -> -1.24 Inexact Rounded - -ddqua2100 quantize 1.2500 1.00 -> 1.25 Rounded -ddqua2101 quantize 1.2501 1.00 -> 1.26 Inexact Rounded -ddqua2102 quantize 1.2510 1.00 -> 1.26 Inexact Rounded -ddqua2103 quantize 1.2550 1.00 -> 1.26 Inexact Rounded -ddqua2104 quantize 1.2551 1.00 -> 1.26 Inexact Rounded -ddqua2107 quantize 1.2560 1.00 -> 1.26 Inexact Rounded -ddqua2108 quantize 1.2570 1.00 -> 1.26 Inexact Rounded -ddqua2109 quantize 1.2599 1.00 -> 1.26 Inexact Rounded -ddqua2111 quantize -1.2599 1.00 -> -1.26 Inexact Rounded - -ddqua2200 quantize 1.2600 1.00 -> 1.26 Rounded -ddqua2201 quantize 1.2601 1.00 -> 1.26 Inexact Rounded -ddqua2202 quantize 1.2610 1.00 -> 1.26 Inexact Rounded -ddqua2203 quantize 1.2650 1.00 -> 1.26 Inexact Rounded -ddqua2204 quantize 1.2651 1.00 -> 1.26 Inexact Rounded -ddqua2207 quantize 1.2660 1.00 -> 1.26 Inexact Rounded -ddqua2208 quantize 1.2670 1.00 -> 1.26 Inexact Rounded -ddqua2209 quantize 1.2699 1.00 -> 1.26 Inexact Rounded -ddqua2211 quantize -1.2699 1.00 -> -1.26 Inexact Rounded - -ddqua2300 quantize 1.2900 1.00 -> 1.29 Rounded -ddqua2301 quantize 1.2901 1.00 -> 1.29 Inexact Rounded -ddqua2302 quantize 1.2910 1.00 -> 1.29 Inexact Rounded -ddqua2303 quantize 1.2950 1.00 -> 1.29 Inexact Rounded -ddqua2304 quantize 1.2951 1.00 -> 1.29 Inexact Rounded -ddqua2307 quantize 1.2960 1.00 -> 1.29 Inexact Rounded -ddqua2308 quantize 1.2970 1.00 -> 1.29 Inexact Rounded -ddqua2309 quantize 1.2999 1.00 -> 1.29 Inexact Rounded -ddqua2311 quantize -1.2999 1.00 -> -1.29 Inexact Rounded - --- Null tests -rounding: half_even -ddqua998 quantize 10 # -> NaN Invalid_operation -ddqua999 quantize # 1e10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddQuantize.decTest -- decDouble quantize operation -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Most of the tests here assume a "regular pattern", where the +-- sign and coefficient are +1. +-- 2004.03.15 Underflow for quantize is suppressed +-- 2005.06.08 More extensive tests for 'does not fit' +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks +ddqua001 quantize 0 1e0 -> 0 +ddqua002 quantize 1 1e0 -> 1 +ddqua003 quantize 0.1 1e+2 -> 0E+2 Inexact Rounded +ddqua005 quantize 0.1 1e+1 -> 0E+1 Inexact Rounded +ddqua006 quantize 0.1 1e0 -> 0 Inexact Rounded +ddqua007 quantize 0.1 1e-1 -> 0.1 +ddqua008 quantize 0.1 1e-2 -> 0.10 +ddqua009 quantize 0.1 1e-3 -> 0.100 +ddqua010 quantize 0.9 1e+2 -> 0E+2 Inexact Rounded +ddqua011 quantize 0.9 1e+1 -> 0E+1 Inexact Rounded +ddqua012 quantize 0.9 1e+0 -> 1 Inexact Rounded +ddqua013 quantize 0.9 1e-1 -> 0.9 +ddqua014 quantize 0.9 1e-2 -> 0.90 +ddqua015 quantize 0.9 1e-3 -> 0.900 +-- negatives +ddqua021 quantize -0 1e0 -> -0 +ddqua022 quantize -1 1e0 -> -1 +ddqua023 quantize -0.1 1e+2 -> -0E+2 Inexact Rounded +ddqua025 quantize -0.1 1e+1 -> -0E+1 Inexact Rounded +ddqua026 quantize -0.1 1e0 -> -0 Inexact Rounded +ddqua027 quantize -0.1 1e-1 -> -0.1 +ddqua028 quantize -0.1 1e-2 -> -0.10 +ddqua029 quantize -0.1 1e-3 -> -0.100 +ddqua030 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded +ddqua031 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded +ddqua032 quantize -0.9 1e+0 -> -1 Inexact Rounded +ddqua033 quantize -0.9 1e-1 -> -0.9 +ddqua034 quantize -0.9 1e-2 -> -0.90 +ddqua035 quantize -0.9 1e-3 -> -0.900 +ddqua036 quantize -0.5 1e+2 -> -0E+2 Inexact Rounded +ddqua037 quantize -0.5 1e+1 -> -0E+1 Inexact Rounded +ddqua038 quantize -0.5 1e+0 -> -0 Inexact Rounded +ddqua039 quantize -0.5 1e-1 -> -0.5 +ddqua040 quantize -0.5 1e-2 -> -0.50 +ddqua041 quantize -0.5 1e-3 -> -0.500 +ddqua042 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded +ddqua043 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded +ddqua044 quantize -0.9 1e+0 -> -1 Inexact Rounded +ddqua045 quantize -0.9 1e-1 -> -0.9 +ddqua046 quantize -0.9 1e-2 -> -0.90 +ddqua047 quantize -0.9 1e-3 -> -0.900 + +-- examples from Specification +ddqua060 quantize 2.17 0.001 -> 2.170 +ddqua061 quantize 2.17 0.01 -> 2.17 +ddqua062 quantize 2.17 0.1 -> 2.2 Inexact Rounded +ddqua063 quantize 2.17 1e+0 -> 2 Inexact Rounded +ddqua064 quantize 2.17 1e+1 -> 0E+1 Inexact Rounded +ddqua065 quantize -Inf Inf -> -Infinity +ddqua066 quantize 2 Inf -> NaN Invalid_operation +ddqua067 quantize -0.1 1 -> -0 Inexact Rounded +ddqua068 quantize -0 1e+5 -> -0E+5 +ddqua069 quantize +123456789012345.6 1e-2 -> NaN Invalid_operation +ddqua070 quantize -987654335236450.6 1e-2 -> NaN Invalid_operation +ddqua071 quantize 217 1e-1 -> 217.0 +ddqua072 quantize 217 1e+0 -> 217 +ddqua073 quantize 217 1e+1 -> 2.2E+2 Inexact Rounded +ddqua074 quantize 217 1e+2 -> 2E+2 Inexact Rounded + +-- general tests .. +ddqua089 quantize 12 1e+4 -> 0E+4 Inexact Rounded +ddqua090 quantize 12 1e+3 -> 0E+3 Inexact Rounded +ddqua091 quantize 12 1e+2 -> 0E+2 Inexact Rounded +ddqua092 quantize 12 1e+1 -> 1E+1 Inexact Rounded +ddqua093 quantize 1.2345 1e-2 -> 1.23 Inexact Rounded +ddqua094 quantize 1.2355 1e-2 -> 1.24 Inexact Rounded +ddqua095 quantize 1.2345 1e-6 -> 1.234500 +ddqua096 quantize 9.9999 1e-2 -> 10.00 Inexact Rounded +ddqua097 quantize 0.0001 1e-2 -> 0.00 Inexact Rounded +ddqua098 quantize 0.001 1e-2 -> 0.00 Inexact Rounded +ddqua099 quantize 0.009 1e-2 -> 0.01 Inexact Rounded +ddqua100 quantize 92 1e+2 -> 1E+2 Inexact Rounded + +ddqua101 quantize -1 1e0 -> -1 +ddqua102 quantize -1 1e-1 -> -1.0 +ddqua103 quantize -1 1e-2 -> -1.00 +ddqua104 quantize 0 1e0 -> 0 +ddqua105 quantize 0 1e-1 -> 0.0 +ddqua106 quantize 0 1e-2 -> 0.00 +ddqua107 quantize 0.00 1e0 -> 0 +ddqua108 quantize 0 1e+1 -> 0E+1 +ddqua109 quantize 0 1e+2 -> 0E+2 +ddqua110 quantize +1 1e0 -> 1 +ddqua111 quantize +1 1e-1 -> 1.0 +ddqua112 quantize +1 1e-2 -> 1.00 + +ddqua120 quantize 1.04 1e-3 -> 1.040 +ddqua121 quantize 1.04 1e-2 -> 1.04 +ddqua122 quantize 1.04 1e-1 -> 1.0 Inexact Rounded +ddqua123 quantize 1.04 1e0 -> 1 Inexact Rounded +ddqua124 quantize 1.05 1e-3 -> 1.050 +ddqua125 quantize 1.05 1e-2 -> 1.05 +ddqua126 quantize 1.05 1e-1 -> 1.0 Inexact Rounded +ddqua131 quantize 1.05 1e0 -> 1 Inexact Rounded +ddqua132 quantize 1.06 1e-3 -> 1.060 +ddqua133 quantize 1.06 1e-2 -> 1.06 +ddqua134 quantize 1.06 1e-1 -> 1.1 Inexact Rounded +ddqua135 quantize 1.06 1e0 -> 1 Inexact Rounded + +ddqua140 quantize -10 1e-2 -> -10.00 +ddqua141 quantize +1 1e-2 -> 1.00 +ddqua142 quantize +10 1e-2 -> 10.00 +ddqua143 quantize 1E+17 1e-2 -> NaN Invalid_operation +ddqua144 quantize 1E-17 1e-2 -> 0.00 Inexact Rounded +ddqua145 quantize 1E-3 1e-2 -> 0.00 Inexact Rounded +ddqua146 quantize 1E-2 1e-2 -> 0.01 +ddqua147 quantize 1E-1 1e-2 -> 0.10 +ddqua148 quantize 0E-17 1e-2 -> 0.00 + +ddqua150 quantize 1.0600 1e-5 -> 1.06000 +ddqua151 quantize 1.0600 1e-4 -> 1.0600 +ddqua152 quantize 1.0600 1e-3 -> 1.060 Rounded +ddqua153 quantize 1.0600 1e-2 -> 1.06 Rounded +ddqua154 quantize 1.0600 1e-1 -> 1.1 Inexact Rounded +ddqua155 quantize 1.0600 1e0 -> 1 Inexact Rounded + +-- a couple where rounding was different in base tests +rounding: half_up +ddqua157 quantize -0.5 1e+0 -> -1 Inexact Rounded +ddqua158 quantize 1.05 1e-1 -> 1.1 Inexact Rounded +ddqua159 quantize 1.06 1e0 -> 1 Inexact Rounded +rounding: half_even + +-- base tests with non-1 coefficients +ddqua161 quantize 0 -9e0 -> 0 +ddqua162 quantize 1 -7e0 -> 1 +ddqua163 quantize 0.1 -1e+2 -> 0E+2 Inexact Rounded +ddqua165 quantize 0.1 0e+1 -> 0E+1 Inexact Rounded +ddqua166 quantize 0.1 2e0 -> 0 Inexact Rounded +ddqua167 quantize 0.1 3e-1 -> 0.1 +ddqua168 quantize 0.1 44e-2 -> 0.10 +ddqua169 quantize 0.1 555e-3 -> 0.100 +ddqua170 quantize 0.9 6666e+2 -> 0E+2 Inexact Rounded +ddqua171 quantize 0.9 -777e+1 -> 0E+1 Inexact Rounded +ddqua172 quantize 0.9 -88e+0 -> 1 Inexact Rounded +ddqua173 quantize 0.9 -9e-1 -> 0.9 +ddqua174 quantize 0.9 0e-2 -> 0.90 +ddqua175 quantize 0.9 1.1e-3 -> 0.9000 +-- negatives +ddqua181 quantize -0 1.1e0 -> -0.0 +ddqua182 quantize -1 -1e0 -> -1 +ddqua183 quantize -0.1 11e+2 -> -0E+2 Inexact Rounded +ddqua185 quantize -0.1 111e+1 -> -0E+1 Inexact Rounded +ddqua186 quantize -0.1 71e0 -> -0 Inexact Rounded +ddqua187 quantize -0.1 -91e-1 -> -0.1 +ddqua188 quantize -0.1 -.1e-2 -> -0.100 +ddqua189 quantize -0.1 -1e-3 -> -0.100 +ddqua190 quantize -0.9 0e+2 -> -0E+2 Inexact Rounded +ddqua191 quantize -0.9 -0e+1 -> -0E+1 Inexact Rounded +ddqua192 quantize -0.9 -10e+0 -> -1 Inexact Rounded +ddqua193 quantize -0.9 100e-1 -> -0.9 +ddqua194 quantize -0.9 999e-2 -> -0.90 + +-- +ve exponents .. +ddqua201 quantize -1 1e+0 -> -1 +ddqua202 quantize -1 1e+1 -> -0E+1 Inexact Rounded +ddqua203 quantize -1 1e+2 -> -0E+2 Inexact Rounded +ddqua204 quantize 0 1e+0 -> 0 +ddqua205 quantize 0 1e+1 -> 0E+1 +ddqua206 quantize 0 1e+2 -> 0E+2 +ddqua207 quantize +1 1e+0 -> 1 +ddqua208 quantize +1 1e+1 -> 0E+1 Inexact Rounded +ddqua209 quantize +1 1e+2 -> 0E+2 Inexact Rounded + +ddqua220 quantize 1.04 1e+3 -> 0E+3 Inexact Rounded +ddqua221 quantize 1.04 1e+2 -> 0E+2 Inexact Rounded +ddqua222 quantize 1.04 1e+1 -> 0E+1 Inexact Rounded +ddqua223 quantize 1.04 1e+0 -> 1 Inexact Rounded +ddqua224 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded +ddqua225 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded +ddqua226 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded +ddqua227 quantize 1.05 1e+0 -> 1 Inexact Rounded +ddqua228 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded +ddqua229 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded +ddqua230 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded +ddqua231 quantize 1.05 1e+0 -> 1 Inexact Rounded +ddqua232 quantize 1.06 1e+3 -> 0E+3 Inexact Rounded +ddqua233 quantize 1.06 1e+2 -> 0E+2 Inexact Rounded +ddqua234 quantize 1.06 1e+1 -> 0E+1 Inexact Rounded +ddqua235 quantize 1.06 1e+0 -> 1 Inexact Rounded + +ddqua240 quantize -10 1e+1 -> -1E+1 Rounded +ddqua241 quantize +1 1e+1 -> 0E+1 Inexact Rounded +ddqua242 quantize +10 1e+1 -> 1E+1 Rounded +ddqua243 quantize 1E+1 1e+1 -> 1E+1 -- underneath this is E+1 +ddqua244 quantize 1E+2 1e+1 -> 1.0E+2 -- underneath this is E+1 +ddqua245 quantize 1E+3 1e+1 -> 1.00E+3 -- underneath this is E+1 +ddqua246 quantize 1E+4 1e+1 -> 1.000E+4 -- underneath this is E+1 +ddqua247 quantize 1E+5 1e+1 -> 1.0000E+5 -- underneath this is E+1 +ddqua248 quantize 1E+6 1e+1 -> 1.00000E+6 -- underneath this is E+1 +ddqua249 quantize 1E+7 1e+1 -> 1.000000E+7 -- underneath this is E+1 +ddqua250 quantize 1E+8 1e+1 -> 1.0000000E+8 -- underneath this is E+1 +ddqua251 quantize 1E+9 1e+1 -> 1.00000000E+9 -- underneath this is E+1 +-- next one tries to add 9 zeros +ddqua252 quantize 1E+17 1e+1 -> NaN Invalid_operation +ddqua253 quantize 1E-17 1e+1 -> 0E+1 Inexact Rounded +ddqua254 quantize 1E-2 1e+1 -> 0E+1 Inexact Rounded +ddqua255 quantize 0E-17 1e+1 -> 0E+1 +ddqua256 quantize -0E-17 1e+1 -> -0E+1 +ddqua257 quantize -0E-1 1e+1 -> -0E+1 +ddqua258 quantize -0 1e+1 -> -0E+1 +ddqua259 quantize -0E+1 1e+1 -> -0E+1 + +ddqua260 quantize -10 1e+2 -> -0E+2 Inexact Rounded +ddqua261 quantize +1 1e+2 -> 0E+2 Inexact Rounded +ddqua262 quantize +10 1e+2 -> 0E+2 Inexact Rounded +ddqua263 quantize 1E+1 1e+2 -> 0E+2 Inexact Rounded +ddqua264 quantize 1E+2 1e+2 -> 1E+2 +ddqua265 quantize 1E+3 1e+2 -> 1.0E+3 +ddqua266 quantize 1E+4 1e+2 -> 1.00E+4 +ddqua267 quantize 1E+5 1e+2 -> 1.000E+5 +ddqua268 quantize 1E+6 1e+2 -> 1.0000E+6 +ddqua269 quantize 1E+7 1e+2 -> 1.00000E+7 +ddqua270 quantize 1E+8 1e+2 -> 1.000000E+8 +ddqua271 quantize 1E+9 1e+2 -> 1.0000000E+9 +ddqua272 quantize 1E+10 1e+2 -> 1.00000000E+10 +ddqua273 quantize 1E-10 1e+2 -> 0E+2 Inexact Rounded +ddqua274 quantize 1E-2 1e+2 -> 0E+2 Inexact Rounded +ddqua275 quantize 0E-10 1e+2 -> 0E+2 + +ddqua280 quantize -10 1e+3 -> -0E+3 Inexact Rounded +ddqua281 quantize +1 1e+3 -> 0E+3 Inexact Rounded +ddqua282 quantize +10 1e+3 -> 0E+3 Inexact Rounded +ddqua283 quantize 1E+1 1e+3 -> 0E+3 Inexact Rounded +ddqua284 quantize 1E+2 1e+3 -> 0E+3 Inexact Rounded +ddqua285 quantize 1E+3 1e+3 -> 1E+3 +ddqua286 quantize 1E+4 1e+3 -> 1.0E+4 +ddqua287 quantize 1E+5 1e+3 -> 1.00E+5 +ddqua288 quantize 1E+6 1e+3 -> 1.000E+6 +ddqua289 quantize 1E+7 1e+3 -> 1.0000E+7 +ddqua290 quantize 1E+8 1e+3 -> 1.00000E+8 +ddqua291 quantize 1E+9 1e+3 -> 1.000000E+9 +ddqua292 quantize 1E+10 1e+3 -> 1.0000000E+10 +ddqua293 quantize 1E-10 1e+3 -> 0E+3 Inexact Rounded +ddqua294 quantize 1E-2 1e+3 -> 0E+3 Inexact Rounded +ddqua295 quantize 0E-10 1e+3 -> 0E+3 + +-- round up from below [sign wrong in JIT compiler once] +ddqua300 quantize 0.0078 1e-5 -> 0.00780 +ddqua301 quantize 0.0078 1e-4 -> 0.0078 +ddqua302 quantize 0.0078 1e-3 -> 0.008 Inexact Rounded +ddqua303 quantize 0.0078 1e-2 -> 0.01 Inexact Rounded +ddqua304 quantize 0.0078 1e-1 -> 0.0 Inexact Rounded +ddqua305 quantize 0.0078 1e0 -> 0 Inexact Rounded +ddqua306 quantize 0.0078 1e+1 -> 0E+1 Inexact Rounded +ddqua307 quantize 0.0078 1e+2 -> 0E+2 Inexact Rounded + +ddqua310 quantize -0.0078 1e-5 -> -0.00780 +ddqua311 quantize -0.0078 1e-4 -> -0.0078 +ddqua312 quantize -0.0078 1e-3 -> -0.008 Inexact Rounded +ddqua313 quantize -0.0078 1e-2 -> -0.01 Inexact Rounded +ddqua314 quantize -0.0078 1e-1 -> -0.0 Inexact Rounded +ddqua315 quantize -0.0078 1e0 -> -0 Inexact Rounded +ddqua316 quantize -0.0078 1e+1 -> -0E+1 Inexact Rounded +ddqua317 quantize -0.0078 1e+2 -> -0E+2 Inexact Rounded + +ddqua320 quantize 0.078 1e-5 -> 0.07800 +ddqua321 quantize 0.078 1e-4 -> 0.0780 +ddqua322 quantize 0.078 1e-3 -> 0.078 +ddqua323 quantize 0.078 1e-2 -> 0.08 Inexact Rounded +ddqua324 quantize 0.078 1e-1 -> 0.1 Inexact Rounded +ddqua325 quantize 0.078 1e0 -> 0 Inexact Rounded +ddqua326 quantize 0.078 1e+1 -> 0E+1 Inexact Rounded +ddqua327 quantize 0.078 1e+2 -> 0E+2 Inexact Rounded + +ddqua330 quantize -0.078 1e-5 -> -0.07800 +ddqua331 quantize -0.078 1e-4 -> -0.0780 +ddqua332 quantize -0.078 1e-3 -> -0.078 +ddqua333 quantize -0.078 1e-2 -> -0.08 Inexact Rounded +ddqua334 quantize -0.078 1e-1 -> -0.1 Inexact Rounded +ddqua335 quantize -0.078 1e0 -> -0 Inexact Rounded +ddqua336 quantize -0.078 1e+1 -> -0E+1 Inexact Rounded +ddqua337 quantize -0.078 1e+2 -> -0E+2 Inexact Rounded + +ddqua340 quantize 0.78 1e-5 -> 0.78000 +ddqua341 quantize 0.78 1e-4 -> 0.7800 +ddqua342 quantize 0.78 1e-3 -> 0.780 +ddqua343 quantize 0.78 1e-2 -> 0.78 +ddqua344 quantize 0.78 1e-1 -> 0.8 Inexact Rounded +ddqua345 quantize 0.78 1e0 -> 1 Inexact Rounded +ddqua346 quantize 0.78 1e+1 -> 0E+1 Inexact Rounded +ddqua347 quantize 0.78 1e+2 -> 0E+2 Inexact Rounded + +ddqua350 quantize -0.78 1e-5 -> -0.78000 +ddqua351 quantize -0.78 1e-4 -> -0.7800 +ddqua352 quantize -0.78 1e-3 -> -0.780 +ddqua353 quantize -0.78 1e-2 -> -0.78 +ddqua354 quantize -0.78 1e-1 -> -0.8 Inexact Rounded +ddqua355 quantize -0.78 1e0 -> -1 Inexact Rounded +ddqua356 quantize -0.78 1e+1 -> -0E+1 Inexact Rounded +ddqua357 quantize -0.78 1e+2 -> -0E+2 Inexact Rounded + +ddqua360 quantize 7.8 1e-5 -> 7.80000 +ddqua361 quantize 7.8 1e-4 -> 7.8000 +ddqua362 quantize 7.8 1e-3 -> 7.800 +ddqua363 quantize 7.8 1e-2 -> 7.80 +ddqua364 quantize 7.8 1e-1 -> 7.8 +ddqua365 quantize 7.8 1e0 -> 8 Inexact Rounded +ddqua366 quantize 7.8 1e+1 -> 1E+1 Inexact Rounded +ddqua367 quantize 7.8 1e+2 -> 0E+2 Inexact Rounded +ddqua368 quantize 7.8 1e+3 -> 0E+3 Inexact Rounded + +ddqua370 quantize -7.8 1e-5 -> -7.80000 +ddqua371 quantize -7.8 1e-4 -> -7.8000 +ddqua372 quantize -7.8 1e-3 -> -7.800 +ddqua373 quantize -7.8 1e-2 -> -7.80 +ddqua374 quantize -7.8 1e-1 -> -7.8 +ddqua375 quantize -7.8 1e0 -> -8 Inexact Rounded +ddqua376 quantize -7.8 1e+1 -> -1E+1 Inexact Rounded +ddqua377 quantize -7.8 1e+2 -> -0E+2 Inexact Rounded +ddqua378 quantize -7.8 1e+3 -> -0E+3 Inexact Rounded + +-- some individuals +ddqua380 quantize 1234567352364.506 1e-2 -> 1234567352364.51 Inexact Rounded +ddqua381 quantize 12345673523645.06 1e-2 -> 12345673523645.06 +ddqua382 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation +ddqua383 quantize 1234567352364506 1e-2 -> NaN Invalid_operation +ddqua384 quantize -1234567352364.506 1e-2 -> -1234567352364.51 Inexact Rounded +ddqua385 quantize -12345673523645.06 1e-2 -> -12345673523645.06 +ddqua386 quantize -123456735236450.6 1e-2 -> NaN Invalid_operation +ddqua387 quantize -1234567352364506 1e-2 -> NaN Invalid_operation + +rounding: down +ddqua389 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation +-- ? should that one instead have been: +-- ddqua389 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation +rounding: half_up + +-- and a few more from e-mail discussions +ddqua391 quantize 12345678912.34567 1e-3 -> 12345678912.346 Inexact Rounded +ddqua392 quantize 123456789123.4567 1e-3 -> 123456789123.457 Inexact Rounded +ddqua393 quantize 1234567891234.567 1e-3 -> 1234567891234.567 +ddqua394 quantize 12345678912345.67 1e-3 -> NaN Invalid_operation +ddqua395 quantize 123456789123456.7 1e-3 -> NaN Invalid_operation +ddqua396 quantize 1234567891234567. 1e-3 -> NaN Invalid_operation + +-- some 9999 round-up cases +ddqua400 quantize 9.999 1e-5 -> 9.99900 +ddqua401 quantize 9.999 1e-4 -> 9.9990 +ddqua402 quantize 9.999 1e-3 -> 9.999 +ddqua403 quantize 9.999 1e-2 -> 10.00 Inexact Rounded +ddqua404 quantize 9.999 1e-1 -> 10.0 Inexact Rounded +ddqua405 quantize 9.999 1e0 -> 10 Inexact Rounded +ddqua406 quantize 9.999 1e1 -> 1E+1 Inexact Rounded +ddqua407 quantize 9.999 1e2 -> 0E+2 Inexact Rounded + +ddqua410 quantize 0.999 1e-5 -> 0.99900 +ddqua411 quantize 0.999 1e-4 -> 0.9990 +ddqua412 quantize 0.999 1e-3 -> 0.999 +ddqua413 quantize 0.999 1e-2 -> 1.00 Inexact Rounded +ddqua414 quantize 0.999 1e-1 -> 1.0 Inexact Rounded +ddqua415 quantize 0.999 1e0 -> 1 Inexact Rounded +ddqua416 quantize 0.999 1e1 -> 0E+1 Inexact Rounded + +ddqua420 quantize 0.0999 1e-5 -> 0.09990 +ddqua421 quantize 0.0999 1e-4 -> 0.0999 +ddqua422 quantize 0.0999 1e-3 -> 0.100 Inexact Rounded +ddqua423 quantize 0.0999 1e-2 -> 0.10 Inexact Rounded +ddqua424 quantize 0.0999 1e-1 -> 0.1 Inexact Rounded +ddqua425 quantize 0.0999 1e0 -> 0 Inexact Rounded +ddqua426 quantize 0.0999 1e1 -> 0E+1 Inexact Rounded + +ddqua430 quantize 0.00999 1e-5 -> 0.00999 +ddqua431 quantize 0.00999 1e-4 -> 0.0100 Inexact Rounded +ddqua432 quantize 0.00999 1e-3 -> 0.010 Inexact Rounded +ddqua433 quantize 0.00999 1e-2 -> 0.01 Inexact Rounded +ddqua434 quantize 0.00999 1e-1 -> 0.0 Inexact Rounded +ddqua435 quantize 0.00999 1e0 -> 0 Inexact Rounded +ddqua436 quantize 0.00999 1e1 -> 0E+1 Inexact Rounded + +ddqua440 quantize 0.000999 1e-5 -> 0.00100 Inexact Rounded +ddqua441 quantize 0.000999 1e-4 -> 0.0010 Inexact Rounded +ddqua442 quantize 0.000999 1e-3 -> 0.001 Inexact Rounded +ddqua443 quantize 0.000999 1e-2 -> 0.00 Inexact Rounded +ddqua444 quantize 0.000999 1e-1 -> 0.0 Inexact Rounded +ddqua445 quantize 0.000999 1e0 -> 0 Inexact Rounded +ddqua446 quantize 0.000999 1e1 -> 0E+1 Inexact Rounded + +ddqua1001 quantize 0.000 0.001 -> 0.000 +ddqua1002 quantize 0.001 0.001 -> 0.001 +ddqua1003 quantize 0.0012 0.001 -> 0.001 Inexact Rounded +ddqua1004 quantize 0.0018 0.001 -> 0.002 Inexact Rounded +ddqua1005 quantize 0.501 0.001 -> 0.501 +ddqua1006 quantize 0.5012 0.001 -> 0.501 Inexact Rounded +ddqua1007 quantize 0.5018 0.001 -> 0.502 Inexact Rounded +ddqua1008 quantize 0.999 0.001 -> 0.999 + +ddqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded +ddqua482 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded +ddqua483 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded +ddqua484 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded +ddqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded +ddqua486 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded +-- a potential double-round +ddqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded +ddqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded + +ddqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded +ddqua492 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded +ddqua493 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded +ddqua494 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded +ddqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded +ddqua496 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded +ddqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded +ddqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded + +-- Zeros +ddqua500 quantize 0 1e1 -> 0E+1 +ddqua501 quantize 0 1e0 -> 0 +ddqua502 quantize 0 1e-1 -> 0.0 +ddqua503 quantize 0.0 1e-1 -> 0.0 +ddqua504 quantize 0.0 1e0 -> 0 +ddqua505 quantize 0.0 1e+1 -> 0E+1 +ddqua506 quantize 0E+1 1e-1 -> 0.0 +ddqua507 quantize 0E+1 1e0 -> 0 +ddqua508 quantize 0E+1 1e+1 -> 0E+1 +ddqua509 quantize -0 1e1 -> -0E+1 +ddqua510 quantize -0 1e0 -> -0 +ddqua511 quantize -0 1e-1 -> -0.0 +ddqua512 quantize -0.0 1e-1 -> -0.0 +ddqua513 quantize -0.0 1e0 -> -0 +ddqua514 quantize -0.0 1e+1 -> -0E+1 +ddqua515 quantize -0E+1 1e-1 -> -0.0 +ddqua516 quantize -0E+1 1e0 -> -0 +ddqua517 quantize -0E+1 1e+1 -> -0E+1 + +-- Suspicious RHS values +ddqua520 quantize 1.234 1e359 -> 0E+359 Inexact Rounded +ddqua521 quantize 123.456 1e359 -> 0E+359 Inexact Rounded +ddqua522 quantize 1.234 1e359 -> 0E+359 Inexact Rounded +ddqua523 quantize 123.456 1e359 -> 0E+359 Inexact Rounded +-- next four are "won't fit" overfl +ddqua526 quantize 1.234 1e-299 -> NaN Invalid_operation +ddqua527 quantize 123.456 1e-299 -> NaN Invalid_operation +ddqua528 quantize 1.234 1e-299 -> NaN Invalid_operation +ddqua529 quantize 123.456 1e-299 -> NaN Invalid_operation + +ddqua532 quantize 1.234E+299 1e299 -> 1E+299 Inexact Rounded +ddqua533 quantize 1.234E+298 1e299 -> 0E+299 Inexact Rounded +ddqua534 quantize 1.234 1e299 -> 0E+299 Inexact Rounded +ddqua537 quantize 0 1e-299 -> 0E-299 +-- next two are "won't fit" overflows +ddqua538 quantize 1.234 1e-299 -> NaN Invalid_operation +ddqua539 quantize 1.234 1e-300 -> NaN Invalid_operation +-- [more below] + +-- Specials +ddqua580 quantize Inf -Inf -> Infinity +ddqua581 quantize Inf 1e-299 -> NaN Invalid_operation +ddqua582 quantize Inf 1e-1 -> NaN Invalid_operation +ddqua583 quantize Inf 1e0 -> NaN Invalid_operation +ddqua584 quantize Inf 1e1 -> NaN Invalid_operation +ddqua585 quantize Inf 1e299 -> NaN Invalid_operation +ddqua586 quantize Inf Inf -> Infinity +ddqua587 quantize -1000 Inf -> NaN Invalid_operation +ddqua588 quantize -Inf Inf -> -Infinity +ddqua589 quantize -1 Inf -> NaN Invalid_operation +ddqua590 quantize 0 Inf -> NaN Invalid_operation +ddqua591 quantize 1 Inf -> NaN Invalid_operation +ddqua592 quantize 1000 Inf -> NaN Invalid_operation +ddqua593 quantize Inf Inf -> Infinity +ddqua594 quantize Inf 1e-0 -> NaN Invalid_operation +ddqua595 quantize -0 Inf -> NaN Invalid_operation + +ddqua600 quantize -Inf -Inf -> -Infinity +ddqua601 quantize -Inf 1e-299 -> NaN Invalid_operation +ddqua602 quantize -Inf 1e-1 -> NaN Invalid_operation +ddqua603 quantize -Inf 1e0 -> NaN Invalid_operation +ddqua604 quantize -Inf 1e1 -> NaN Invalid_operation +ddqua605 quantize -Inf 1e299 -> NaN Invalid_operation +ddqua606 quantize -Inf Inf -> -Infinity +ddqua607 quantize -1000 Inf -> NaN Invalid_operation +ddqua608 quantize -Inf -Inf -> -Infinity +ddqua609 quantize -1 -Inf -> NaN Invalid_operation +ddqua610 quantize 0 -Inf -> NaN Invalid_operation +ddqua611 quantize 1 -Inf -> NaN Invalid_operation +ddqua612 quantize 1000 -Inf -> NaN Invalid_operation +ddqua613 quantize Inf -Inf -> Infinity +ddqua614 quantize -Inf 1e-0 -> NaN Invalid_operation +ddqua615 quantize -0 -Inf -> NaN Invalid_operation + +ddqua621 quantize NaN -Inf -> NaN +ddqua622 quantize NaN 1e-299 -> NaN +ddqua623 quantize NaN 1e-1 -> NaN +ddqua624 quantize NaN 1e0 -> NaN +ddqua625 quantize NaN 1e1 -> NaN +ddqua626 quantize NaN 1e299 -> NaN +ddqua627 quantize NaN Inf -> NaN +ddqua628 quantize NaN NaN -> NaN +ddqua629 quantize -Inf NaN -> NaN +ddqua630 quantize -1000 NaN -> NaN +ddqua631 quantize -1 NaN -> NaN +ddqua632 quantize 0 NaN -> NaN +ddqua633 quantize 1 NaN -> NaN +ddqua634 quantize 1000 NaN -> NaN +ddqua635 quantize Inf NaN -> NaN +ddqua636 quantize NaN 1e-0 -> NaN +ddqua637 quantize -0 NaN -> NaN + +ddqua641 quantize sNaN -Inf -> NaN Invalid_operation +ddqua642 quantize sNaN 1e-299 -> NaN Invalid_operation +ddqua643 quantize sNaN 1e-1 -> NaN Invalid_operation +ddqua644 quantize sNaN 1e0 -> NaN Invalid_operation +ddqua645 quantize sNaN 1e1 -> NaN Invalid_operation +ddqua646 quantize sNaN 1e299 -> NaN Invalid_operation +ddqua647 quantize sNaN NaN -> NaN Invalid_operation +ddqua648 quantize sNaN sNaN -> NaN Invalid_operation +ddqua649 quantize NaN sNaN -> NaN Invalid_operation +ddqua650 quantize -Inf sNaN -> NaN Invalid_operation +ddqua651 quantize -1000 sNaN -> NaN Invalid_operation +ddqua652 quantize -1 sNaN -> NaN Invalid_operation +ddqua653 quantize 0 sNaN -> NaN Invalid_operation +ddqua654 quantize 1 sNaN -> NaN Invalid_operation +ddqua655 quantize 1000 sNaN -> NaN Invalid_operation +ddqua656 quantize Inf sNaN -> NaN Invalid_operation +ddqua657 quantize NaN sNaN -> NaN Invalid_operation +ddqua658 quantize sNaN 1e-0 -> NaN Invalid_operation +ddqua659 quantize -0 sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddqua661 quantize NaN9 -Inf -> NaN9 +ddqua662 quantize NaN8 919 -> NaN8 +ddqua663 quantize NaN71 Inf -> NaN71 +ddqua664 quantize NaN6 NaN5 -> NaN6 +ddqua665 quantize -Inf NaN4 -> NaN4 +ddqua666 quantize -919 NaN31 -> NaN31 +ddqua667 quantize Inf NaN2 -> NaN2 + +ddqua671 quantize sNaN99 -Inf -> NaN99 Invalid_operation +ddqua672 quantize sNaN98 -11 -> NaN98 Invalid_operation +ddqua673 quantize sNaN97 NaN -> NaN97 Invalid_operation +ddqua674 quantize sNaN16 sNaN94 -> NaN16 Invalid_operation +ddqua675 quantize NaN95 sNaN93 -> NaN93 Invalid_operation +ddqua676 quantize -Inf sNaN92 -> NaN92 Invalid_operation +ddqua677 quantize 088 sNaN91 -> NaN91 Invalid_operation +ddqua678 quantize Inf sNaN90 -> NaN90 Invalid_operation +ddqua679 quantize NaN sNaN88 -> NaN88 Invalid_operation + +ddqua681 quantize -NaN9 -Inf -> -NaN9 +ddqua682 quantize -NaN8 919 -> -NaN8 +ddqua683 quantize -NaN71 Inf -> -NaN71 +ddqua684 quantize -NaN6 -NaN5 -> -NaN6 +ddqua685 quantize -Inf -NaN4 -> -NaN4 +ddqua686 quantize -919 -NaN31 -> -NaN31 +ddqua687 quantize Inf -NaN2 -> -NaN2 + +ddqua691 quantize -sNaN99 -Inf -> -NaN99 Invalid_operation +ddqua692 quantize -sNaN98 -11 -> -NaN98 Invalid_operation +ddqua693 quantize -sNaN97 NaN -> -NaN97 Invalid_operation +ddqua694 quantize -sNaN16 sNaN94 -> -NaN16 Invalid_operation +ddqua695 quantize -NaN95 -sNaN93 -> -NaN93 Invalid_operation +ddqua696 quantize -Inf -sNaN92 -> -NaN92 Invalid_operation +ddqua697 quantize 088 -sNaN91 -> -NaN91 Invalid_operation +ddqua698 quantize Inf -sNaN90 -> -NaN90 Invalid_operation +ddqua699 quantize NaN -sNaN88 -> -NaN88 Invalid_operation + +-- subnormals and underflow +ddqua710 quantize 1.00E-383 1e-383 -> 1E-383 Rounded +ddqua711 quantize 0.1E-383 2e-384 -> 1E-384 Subnormal +ddqua712 quantize 0.10E-383 3e-384 -> 1E-384 Subnormal Rounded +ddqua713 quantize 0.100E-383 4e-384 -> 1E-384 Subnormal Rounded +ddqua714 quantize 0.01E-383 5e-385 -> 1E-385 Subnormal +-- next is rounded to Emin +ddqua715 quantize 0.999E-383 1e-383 -> 1E-383 Inexact Rounded +ddqua716 quantize 0.099E-383 10e-384 -> 1E-384 Inexact Rounded Subnormal + +ddqua717 quantize 0.009E-383 1e-385 -> 1E-385 Inexact Rounded Subnormal +ddqua718 quantize 0.001E-383 1e-385 -> 0E-385 Inexact Rounded +ddqua719 quantize 0.0009E-383 1e-385 -> 0E-385 Inexact Rounded +ddqua720 quantize 0.0001E-383 1e-385 -> 0E-385 Inexact Rounded + +ddqua730 quantize -1.00E-383 1e-383 -> -1E-383 Rounded +ddqua731 quantize -0.1E-383 1e-383 -> -0E-383 Rounded Inexact +ddqua732 quantize -0.10E-383 1e-383 -> -0E-383 Rounded Inexact +ddqua733 quantize -0.100E-383 1e-383 -> -0E-383 Rounded Inexact +ddqua734 quantize -0.01E-383 1e-383 -> -0E-383 Inexact Rounded +-- next is rounded to Emin +ddqua735 quantize -0.999E-383 90e-383 -> -1E-383 Inexact Rounded +ddqua736 quantize -0.099E-383 -1e-383 -> -0E-383 Inexact Rounded +ddqua737 quantize -0.009E-383 -1e-383 -> -0E-383 Inexact Rounded +ddqua738 quantize -0.001E-383 -0e-383 -> -0E-383 Inexact Rounded +ddqua739 quantize -0.0001E-383 0e-383 -> -0E-383 Inexact Rounded + +ddqua740 quantize -1.00E-383 1e-384 -> -1.0E-383 Rounded +ddqua741 quantize -0.1E-383 1e-384 -> -1E-384 Subnormal +ddqua742 quantize -0.10E-383 1e-384 -> -1E-384 Subnormal Rounded +ddqua743 quantize -0.100E-383 1e-384 -> -1E-384 Subnormal Rounded +ddqua744 quantize -0.01E-383 1e-384 -> -0E-384 Inexact Rounded +-- next is rounded to Emin +ddqua745 quantize -0.999E-383 1e-384 -> -1.0E-383 Inexact Rounded +ddqua746 quantize -0.099E-383 1e-384 -> -1E-384 Inexact Rounded Subnormal +ddqua747 quantize -0.009E-383 1e-384 -> -0E-384 Inexact Rounded +ddqua748 quantize -0.001E-383 1e-384 -> -0E-384 Inexact Rounded +ddqua749 quantize -0.0001E-383 1e-384 -> -0E-384 Inexact Rounded + +ddqua750 quantize -1.00E-383 1e-385 -> -1.00E-383 +ddqua751 quantize -0.1E-383 1e-385 -> -1.0E-384 Subnormal +ddqua752 quantize -0.10E-383 1e-385 -> -1.0E-384 Subnormal +ddqua753 quantize -0.100E-383 1e-385 -> -1.0E-384 Subnormal Rounded +ddqua754 quantize -0.01E-383 1e-385 -> -1E-385 Subnormal +-- next is rounded to Emin +ddqua755 quantize -0.999E-383 1e-385 -> -1.00E-383 Inexact Rounded +ddqua756 quantize -0.099E-383 1e-385 -> -1.0E-384 Inexact Rounded Subnormal +ddqua757 quantize -0.009E-383 1e-385 -> -1E-385 Inexact Rounded Subnormal +ddqua758 quantize -0.001E-383 1e-385 -> -0E-385 Inexact Rounded +ddqua759 quantize -0.0001E-383 1e-385 -> -0E-385 Inexact Rounded + +ddqua760 quantize -1.00E-383 1e-386 -> -1.000E-383 +ddqua761 quantize -0.1E-383 1e-386 -> -1.00E-384 Subnormal +ddqua762 quantize -0.10E-383 1e-386 -> -1.00E-384 Subnormal +ddqua763 quantize -0.100E-383 1e-386 -> -1.00E-384 Subnormal +ddqua764 quantize -0.01E-383 1e-386 -> -1.0E-385 Subnormal +ddqua765 quantize -0.999E-383 1e-386 -> -9.99E-384 Subnormal +ddqua766 quantize -0.099E-383 1e-386 -> -9.9E-385 Subnormal +ddqua767 quantize -0.009E-383 1e-386 -> -9E-386 Subnormal +ddqua768 quantize -0.001E-383 1e-386 -> -1E-386 Subnormal +ddqua769 quantize -0.0001E-383 1e-386 -> -0E-386 Inexact Rounded + +-- More from Fung Lee +ddqua1021 quantize 8.666666666666000E+384 1.000000000000000E+384 -> 8.666666666666000E+384 +ddqua1022 quantize -8.666666666666000E+384 1.000000000000000E+384 -> -8.666666666666000E+384 +ddqua1027 quantize 8.666666666666000E+323 1E+31 -> NaN Invalid_operation +ddqua1029 quantize 8.66666666E+3 1E+3 -> 9E+3 Inexact Rounded + + +--ddqua1030 quantize 8.666666666666000E+384 1E+384 -> 9.000000000000000E+384 Rounded Inexact +--ddqua1031 quantize 8.666666666666000E+384 1E+384 -> 8.666666666666000E+384 Rounded +--ddqua1032 quantize 8.666666666666000E+384 1E+383 -> 8.666666666666000E+384 Rounded +--ddqua1033 quantize 8.666666666666000E+384 1E+382 -> 8.666666666666000E+384 Rounded +--ddqua1034 quantize 8.666666666666000E+384 1E+381 -> 8.666666666666000E+384 Rounded +--ddqua1035 quantize 8.666666666666000E+384 1E+380 -> 8.666666666666000E+384 Rounded + +-- Int and uInt32 edge values for testing conversions +ddqua1040 quantize -2147483646 0 -> -2147483646 +ddqua1041 quantize -2147483647 0 -> -2147483647 +ddqua1042 quantize -2147483648 0 -> -2147483648 +ddqua1043 quantize -2147483649 0 -> -2147483649 +ddqua1044 quantize 2147483646 0 -> 2147483646 +ddqua1045 quantize 2147483647 0 -> 2147483647 +ddqua1046 quantize 2147483648 0 -> 2147483648 +ddqua1047 quantize 2147483649 0 -> 2147483649 +ddqua1048 quantize 4294967294 0 -> 4294967294 +ddqua1049 quantize 4294967295 0 -> 4294967295 +ddqua1050 quantize 4294967296 0 -> 4294967296 +ddqua1051 quantize 4294967297 0 -> 4294967297 + +-- Rounding swathe +rounding: half_even +ddqua1100 quantize 1.2300 1.00 -> 1.23 Rounded +ddqua1101 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +ddqua1102 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +ddqua1103 quantize 1.2350 1.00 -> 1.24 Inexact Rounded +ddqua1104 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +ddqua1105 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +ddqua1106 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +ddqua1107 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +ddqua1108 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +ddqua1109 quantize 1.2399 1.00 -> 1.24 Inexact Rounded + +rounding: half_up +ddqua1200 quantize 1.2300 1.00 -> 1.23 Rounded +ddqua1201 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +ddqua1202 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +ddqua1203 quantize 1.2350 1.00 -> 1.24 Inexact Rounded +ddqua1204 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +ddqua1205 quantize 1.2450 1.00 -> 1.25 Inexact Rounded +ddqua1206 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +ddqua1207 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +ddqua1208 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +ddqua1209 quantize 1.2399 1.00 -> 1.24 Inexact Rounded + +rounding: half_down +ddqua1300 quantize 1.2300 1.00 -> 1.23 Rounded +ddqua1301 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +ddqua1302 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +ddqua1303 quantize 1.2350 1.00 -> 1.23 Inexact Rounded +ddqua1304 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +ddqua1305 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +ddqua1306 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +ddqua1307 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +ddqua1308 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +ddqua1309 quantize 1.2399 1.00 -> 1.24 Inexact Rounded + +rounding: up +ddqua1400 quantize 1.2300 1.00 -> 1.23 Rounded +ddqua1401 quantize 1.2301 1.00 -> 1.24 Inexact Rounded +ddqua1402 quantize 1.2310 1.00 -> 1.24 Inexact Rounded +ddqua1403 quantize 1.2350 1.00 -> 1.24 Inexact Rounded +ddqua1404 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +ddqua1405 quantize 1.2450 1.00 -> 1.25 Inexact Rounded +ddqua1406 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +ddqua1407 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +ddqua1408 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +ddqua1409 quantize 1.2399 1.00 -> 1.24 Inexact Rounded +ddqua1411 quantize -1.2399 1.00 -> -1.24 Inexact Rounded + +rounding: down +ddqua1500 quantize 1.2300 1.00 -> 1.23 Rounded +ddqua1501 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +ddqua1502 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +ddqua1503 quantize 1.2350 1.00 -> 1.23 Inexact Rounded +ddqua1504 quantize 1.2351 1.00 -> 1.23 Inexact Rounded +ddqua1505 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +ddqua1506 quantize 1.2451 1.00 -> 1.24 Inexact Rounded +ddqua1507 quantize 1.2360 1.00 -> 1.23 Inexact Rounded +ddqua1508 quantize 1.2370 1.00 -> 1.23 Inexact Rounded +ddqua1509 quantize 1.2399 1.00 -> 1.23 Inexact Rounded +ddqua1511 quantize -1.2399 1.00 -> -1.23 Inexact Rounded + +rounding: ceiling +ddqua1600 quantize 1.2300 1.00 -> 1.23 Rounded +ddqua1601 quantize 1.2301 1.00 -> 1.24 Inexact Rounded +ddqua1602 quantize 1.2310 1.00 -> 1.24 Inexact Rounded +ddqua1603 quantize 1.2350 1.00 -> 1.24 Inexact Rounded +ddqua1604 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +ddqua1605 quantize 1.2450 1.00 -> 1.25 Inexact Rounded +ddqua1606 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +ddqua1607 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +ddqua1608 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +ddqua1609 quantize 1.2399 1.00 -> 1.24 Inexact Rounded +ddqua1611 quantize -1.2399 1.00 -> -1.23 Inexact Rounded + +rounding: floor +ddqua1700 quantize 1.2300 1.00 -> 1.23 Rounded +ddqua1701 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +ddqua1702 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +ddqua1703 quantize 1.2350 1.00 -> 1.23 Inexact Rounded +ddqua1704 quantize 1.2351 1.00 -> 1.23 Inexact Rounded +ddqua1705 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +ddqua1706 quantize 1.2451 1.00 -> 1.24 Inexact Rounded +ddqua1707 quantize 1.2360 1.00 -> 1.23 Inexact Rounded +ddqua1708 quantize 1.2370 1.00 -> 1.23 Inexact Rounded +ddqua1709 quantize 1.2399 1.00 -> 1.23 Inexact Rounded +ddqua1711 quantize -1.2399 1.00 -> -1.24 Inexact Rounded + +rounding: 05up +ddqua1800 quantize 1.2000 1.00 -> 1.20 Rounded +ddqua1801 quantize 1.2001 1.00 -> 1.21 Inexact Rounded +ddqua1802 quantize 1.2010 1.00 -> 1.21 Inexact Rounded +ddqua1803 quantize 1.2050 1.00 -> 1.21 Inexact Rounded +ddqua1804 quantize 1.2051 1.00 -> 1.21 Inexact Rounded +ddqua1807 quantize 1.2060 1.00 -> 1.21 Inexact Rounded +ddqua1808 quantize 1.2070 1.00 -> 1.21 Inexact Rounded +ddqua1809 quantize 1.2099 1.00 -> 1.21 Inexact Rounded +ddqua1811 quantize -1.2099 1.00 -> -1.21 Inexact Rounded + +ddqua1900 quantize 1.2100 1.00 -> 1.21 Rounded +ddqua1901 quantize 1.2101 1.00 -> 1.21 Inexact Rounded +ddqua1902 quantize 1.2110 1.00 -> 1.21 Inexact Rounded +ddqua1903 quantize 1.2150 1.00 -> 1.21 Inexact Rounded +ddqua1904 quantize 1.2151 1.00 -> 1.21 Inexact Rounded +ddqua1907 quantize 1.2160 1.00 -> 1.21 Inexact Rounded +ddqua1908 quantize 1.2170 1.00 -> 1.21 Inexact Rounded +ddqua1909 quantize 1.2199 1.00 -> 1.21 Inexact Rounded +ddqua1911 quantize -1.2199 1.00 -> -1.21 Inexact Rounded + +ddqua2000 quantize 1.2400 1.00 -> 1.24 Rounded +ddqua2001 quantize 1.2401 1.00 -> 1.24 Inexact Rounded +ddqua2002 quantize 1.2410 1.00 -> 1.24 Inexact Rounded +ddqua2003 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +ddqua2004 quantize 1.2451 1.00 -> 1.24 Inexact Rounded +ddqua2007 quantize 1.2460 1.00 -> 1.24 Inexact Rounded +ddqua2008 quantize 1.2470 1.00 -> 1.24 Inexact Rounded +ddqua2009 quantize 1.2499 1.00 -> 1.24 Inexact Rounded +ddqua2011 quantize -1.2499 1.00 -> -1.24 Inexact Rounded + +ddqua2100 quantize 1.2500 1.00 -> 1.25 Rounded +ddqua2101 quantize 1.2501 1.00 -> 1.26 Inexact Rounded +ddqua2102 quantize 1.2510 1.00 -> 1.26 Inexact Rounded +ddqua2103 quantize 1.2550 1.00 -> 1.26 Inexact Rounded +ddqua2104 quantize 1.2551 1.00 -> 1.26 Inexact Rounded +ddqua2107 quantize 1.2560 1.00 -> 1.26 Inexact Rounded +ddqua2108 quantize 1.2570 1.00 -> 1.26 Inexact Rounded +ddqua2109 quantize 1.2599 1.00 -> 1.26 Inexact Rounded +ddqua2111 quantize -1.2599 1.00 -> -1.26 Inexact Rounded + +ddqua2200 quantize 1.2600 1.00 -> 1.26 Rounded +ddqua2201 quantize 1.2601 1.00 -> 1.26 Inexact Rounded +ddqua2202 quantize 1.2610 1.00 -> 1.26 Inexact Rounded +ddqua2203 quantize 1.2650 1.00 -> 1.26 Inexact Rounded +ddqua2204 quantize 1.2651 1.00 -> 1.26 Inexact Rounded +ddqua2207 quantize 1.2660 1.00 -> 1.26 Inexact Rounded +ddqua2208 quantize 1.2670 1.00 -> 1.26 Inexact Rounded +ddqua2209 quantize 1.2699 1.00 -> 1.26 Inexact Rounded +ddqua2211 quantize -1.2699 1.00 -> -1.26 Inexact Rounded + +ddqua2300 quantize 1.2900 1.00 -> 1.29 Rounded +ddqua2301 quantize 1.2901 1.00 -> 1.29 Inexact Rounded +ddqua2302 quantize 1.2910 1.00 -> 1.29 Inexact Rounded +ddqua2303 quantize 1.2950 1.00 -> 1.29 Inexact Rounded +ddqua2304 quantize 1.2951 1.00 -> 1.29 Inexact Rounded +ddqua2307 quantize 1.2960 1.00 -> 1.29 Inexact Rounded +ddqua2308 quantize 1.2970 1.00 -> 1.29 Inexact Rounded +ddqua2309 quantize 1.2999 1.00 -> 1.29 Inexact Rounded +ddqua2311 quantize -1.2999 1.00 -> -1.29 Inexact Rounded + +-- Null tests +rounding: half_even +ddqua998 quantize 10 # -> NaN Invalid_operation +ddqua999 quantize # 1e10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddReduce.decTest b/Lib/test/decimaltestdata/ddReduce.decTest index bdfd060..9529e50 100644 --- a/Lib/test/decimaltestdata/ddReduce.decTest +++ b/Lib/test/decimaltestdata/ddReduce.decTest @@ -1,182 +1,182 @@ ------------------------------------------------------------------------- --- ddReduce.decTest -- remove trailing zeros from a decDouble -- --- Copyright (c) IBM Corporation, 2003, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -ddred001 reduce '1' -> '1' -ddred002 reduce '-1' -> '-1' -ddred003 reduce '1.00' -> '1' -ddred004 reduce '-1.00' -> '-1' -ddred005 reduce '0' -> '0' -ddred006 reduce '0.00' -> '0' -ddred007 reduce '00.0' -> '0' -ddred008 reduce '00.00' -> '0' -ddred009 reduce '00' -> '0' -ddred010 reduce '0E+1' -> '0' -ddred011 reduce '0E+5' -> '0' - -ddred012 reduce '-2' -> '-2' -ddred013 reduce '2' -> '2' -ddred014 reduce '-2.00' -> '-2' -ddred015 reduce '2.00' -> '2' -ddred016 reduce '-0' -> '-0' -ddred017 reduce '-0.00' -> '-0' -ddred018 reduce '-00.0' -> '-0' -ddred019 reduce '-00.00' -> '-0' -ddred020 reduce '-00' -> '-0' -ddred021 reduce '-0E+5' -> '-0' -ddred022 reduce '-0E+1' -> '-0' - -ddred030 reduce '+0.1' -> '0.1' -ddred031 reduce '-0.1' -> '-0.1' -ddred032 reduce '+0.01' -> '0.01' -ddred033 reduce '-0.01' -> '-0.01' -ddred034 reduce '+0.001' -> '0.001' -ddred035 reduce '-0.001' -> '-0.001' -ddred036 reduce '+0.000001' -> '0.000001' -ddred037 reduce '-0.000001' -> '-0.000001' -ddred038 reduce '+0.000000000001' -> '1E-12' -ddred039 reduce '-0.000000000001' -> '-1E-12' - -ddred041 reduce 1.1 -> 1.1 -ddred042 reduce 1.10 -> 1.1 -ddred043 reduce 1.100 -> 1.1 -ddred044 reduce 1.110 -> 1.11 -ddred045 reduce -1.1 -> -1.1 -ddred046 reduce -1.10 -> -1.1 -ddred047 reduce -1.100 -> -1.1 -ddred048 reduce -1.110 -> -1.11 -ddred049 reduce 9.9 -> 9.9 -ddred050 reduce 9.90 -> 9.9 -ddred051 reduce 9.900 -> 9.9 -ddred052 reduce 9.990 -> 9.99 -ddred053 reduce -9.9 -> -9.9 -ddred054 reduce -9.90 -> -9.9 -ddred055 reduce -9.900 -> -9.9 -ddred056 reduce -9.990 -> -9.99 - --- some trailing fractional zeros with zeros in units -ddred060 reduce 10.0 -> 1E+1 -ddred061 reduce 10.00 -> 1E+1 -ddred062 reduce 100.0 -> 1E+2 -ddred063 reduce 100.00 -> 1E+2 -ddred064 reduce 1.1000E+3 -> 1.1E+3 -ddred065 reduce 1.10000E+3 -> 1.1E+3 -ddred066 reduce -10.0 -> -1E+1 -ddred067 reduce -10.00 -> -1E+1 -ddred068 reduce -100.0 -> -1E+2 -ddred069 reduce -100.00 -> -1E+2 -ddred070 reduce -1.1000E+3 -> -1.1E+3 -ddred071 reduce -1.10000E+3 -> -1.1E+3 - --- some insignificant trailing zeros with positive exponent -ddred080 reduce 10E+1 -> 1E+2 -ddred081 reduce 100E+1 -> 1E+3 -ddred082 reduce 1.0E+2 -> 1E+2 -ddred083 reduce 1.0E+3 -> 1E+3 -ddred084 reduce 1.1E+3 -> 1.1E+3 -ddred085 reduce 1.00E+3 -> 1E+3 -ddred086 reduce 1.10E+3 -> 1.1E+3 -ddred087 reduce -10E+1 -> -1E+2 -ddred088 reduce -100E+1 -> -1E+3 -ddred089 reduce -1.0E+2 -> -1E+2 -ddred090 reduce -1.0E+3 -> -1E+3 -ddred091 reduce -1.1E+3 -> -1.1E+3 -ddred092 reduce -1.00E+3 -> -1E+3 -ddred093 reduce -1.10E+3 -> -1.1E+3 - --- some significant trailing zeros, were we to be trimming -ddred100 reduce 11 -> 11 -ddred101 reduce 10 -> 1E+1 -ddred102 reduce 10. -> 1E+1 -ddred103 reduce 1.1E+1 -> 11 -ddred104 reduce 1.0E+1 -> 1E+1 -ddred105 reduce 1.10E+2 -> 1.1E+2 -ddred106 reduce 1.00E+2 -> 1E+2 -ddred107 reduce 1.100E+3 -> 1.1E+3 -ddred108 reduce 1.000E+3 -> 1E+3 -ddred109 reduce 1.000000E+6 -> 1E+6 -ddred110 reduce -11 -> -11 -ddred111 reduce -10 -> -1E+1 -ddred112 reduce -10. -> -1E+1 -ddred113 reduce -1.1E+1 -> -11 -ddred114 reduce -1.0E+1 -> -1E+1 -ddred115 reduce -1.10E+2 -> -1.1E+2 -ddred116 reduce -1.00E+2 -> -1E+2 -ddred117 reduce -1.100E+3 -> -1.1E+3 -ddred118 reduce -1.000E+3 -> -1E+3 -ddred119 reduce -1.00000E+5 -> -1E+5 -ddred120 reduce -1.000000E+6 -> -1E+6 -ddred121 reduce -10.00000E+6 -> -1E+7 -ddred122 reduce -100.0000E+6 -> -1E+8 -ddred123 reduce -1000.000E+6 -> -1E+9 -ddred124 reduce -10000.00E+6 -> -1E+10 -ddred125 reduce -100000.0E+6 -> -1E+11 -ddred126 reduce -1000000.E+6 -> -1E+12 - --- examples from decArith -ddred140 reduce '2.1' -> '2.1' -ddred141 reduce '-2.0' -> '-2' -ddred142 reduce '1.200' -> '1.2' -ddred143 reduce '-120' -> '-1.2E+2' -ddred144 reduce '120.00' -> '1.2E+2' -ddred145 reduce '0.00' -> '0' - --- Nmax, Nmin, Ntiny --- note origami effect on some of these -ddred151 reduce 9.999999999999999E+384 -> 9.999999999999999E+384 -ddred152 reduce 9.999999000000000E+380 -> 9.99999900000E+380 -ddred153 reduce 9.999999999990000E+384 -> 9.999999999990000E+384 -ddred154 reduce 1E-383 -> 1E-383 -ddred155 reduce 1.000000000000000E-383 -> 1E-383 -ddred156 reduce 2.000E-395 -> 2E-395 Subnormal -ddred157 reduce 1E-398 -> 1E-398 Subnormal - -ddred161 reduce -1E-398 -> -1E-398 Subnormal -ddred162 reduce -2.000E-395 -> -2E-395 Subnormal -ddred163 reduce -1.000000000000000E-383 -> -1E-383 -ddred164 reduce -1E-383 -> -1E-383 -ddred165 reduce -9.999999000000000E+380 -> -9.99999900000E+380 -ddred166 reduce -9.999999999990000E+384 -> -9.999999999990000E+384 -ddred167 reduce -9.999999999999990E+384 -> -9.999999999999990E+384 -ddred168 reduce -9.999999999999999E+384 -> -9.999999999999999E+384 -ddred169 reduce -9.999999999999990E+384 -> -9.999999999999990E+384 - - --- specials (reduce does not affect payload) -ddred820 reduce 'Inf' -> 'Infinity' -ddred821 reduce '-Inf' -> '-Infinity' -ddred822 reduce NaN -> NaN -ddred823 reduce sNaN -> NaN Invalid_operation -ddred824 reduce NaN101 -> NaN101 -ddred825 reduce sNaN010 -> NaN10 Invalid_operation -ddred827 reduce -NaN -> -NaN -ddred828 reduce -sNaN -> -NaN Invalid_operation -ddred829 reduce -NaN101 -> -NaN101 -ddred830 reduce -sNaN010 -> -NaN10 Invalid_operation - --- Null test -ddred900 reduce # -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddReduce.decTest -- remove trailing zeros from a decDouble -- +-- Copyright (c) IBM Corporation, 2003, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +ddred001 reduce '1' -> '1' +ddred002 reduce '-1' -> '-1' +ddred003 reduce '1.00' -> '1' +ddred004 reduce '-1.00' -> '-1' +ddred005 reduce '0' -> '0' +ddred006 reduce '0.00' -> '0' +ddred007 reduce '00.0' -> '0' +ddred008 reduce '00.00' -> '0' +ddred009 reduce '00' -> '0' +ddred010 reduce '0E+1' -> '0' +ddred011 reduce '0E+5' -> '0' + +ddred012 reduce '-2' -> '-2' +ddred013 reduce '2' -> '2' +ddred014 reduce '-2.00' -> '-2' +ddred015 reduce '2.00' -> '2' +ddred016 reduce '-0' -> '-0' +ddred017 reduce '-0.00' -> '-0' +ddred018 reduce '-00.0' -> '-0' +ddred019 reduce '-00.00' -> '-0' +ddred020 reduce '-00' -> '-0' +ddred021 reduce '-0E+5' -> '-0' +ddred022 reduce '-0E+1' -> '-0' + +ddred030 reduce '+0.1' -> '0.1' +ddred031 reduce '-0.1' -> '-0.1' +ddred032 reduce '+0.01' -> '0.01' +ddred033 reduce '-0.01' -> '-0.01' +ddred034 reduce '+0.001' -> '0.001' +ddred035 reduce '-0.001' -> '-0.001' +ddred036 reduce '+0.000001' -> '0.000001' +ddred037 reduce '-0.000001' -> '-0.000001' +ddred038 reduce '+0.000000000001' -> '1E-12' +ddred039 reduce '-0.000000000001' -> '-1E-12' + +ddred041 reduce 1.1 -> 1.1 +ddred042 reduce 1.10 -> 1.1 +ddred043 reduce 1.100 -> 1.1 +ddred044 reduce 1.110 -> 1.11 +ddred045 reduce -1.1 -> -1.1 +ddred046 reduce -1.10 -> -1.1 +ddred047 reduce -1.100 -> -1.1 +ddred048 reduce -1.110 -> -1.11 +ddred049 reduce 9.9 -> 9.9 +ddred050 reduce 9.90 -> 9.9 +ddred051 reduce 9.900 -> 9.9 +ddred052 reduce 9.990 -> 9.99 +ddred053 reduce -9.9 -> -9.9 +ddred054 reduce -9.90 -> -9.9 +ddred055 reduce -9.900 -> -9.9 +ddred056 reduce -9.990 -> -9.99 + +-- some trailing fractional zeros with zeros in units +ddred060 reduce 10.0 -> 1E+1 +ddred061 reduce 10.00 -> 1E+1 +ddred062 reduce 100.0 -> 1E+2 +ddred063 reduce 100.00 -> 1E+2 +ddred064 reduce 1.1000E+3 -> 1.1E+3 +ddred065 reduce 1.10000E+3 -> 1.1E+3 +ddred066 reduce -10.0 -> -1E+1 +ddred067 reduce -10.00 -> -1E+1 +ddred068 reduce -100.0 -> -1E+2 +ddred069 reduce -100.00 -> -1E+2 +ddred070 reduce -1.1000E+3 -> -1.1E+3 +ddred071 reduce -1.10000E+3 -> -1.1E+3 + +-- some insignificant trailing zeros with positive exponent +ddred080 reduce 10E+1 -> 1E+2 +ddred081 reduce 100E+1 -> 1E+3 +ddred082 reduce 1.0E+2 -> 1E+2 +ddred083 reduce 1.0E+3 -> 1E+3 +ddred084 reduce 1.1E+3 -> 1.1E+3 +ddred085 reduce 1.00E+3 -> 1E+3 +ddred086 reduce 1.10E+3 -> 1.1E+3 +ddred087 reduce -10E+1 -> -1E+2 +ddred088 reduce -100E+1 -> -1E+3 +ddred089 reduce -1.0E+2 -> -1E+2 +ddred090 reduce -1.0E+3 -> -1E+3 +ddred091 reduce -1.1E+3 -> -1.1E+3 +ddred092 reduce -1.00E+3 -> -1E+3 +ddred093 reduce -1.10E+3 -> -1.1E+3 + +-- some significant trailing zeros, were we to be trimming +ddred100 reduce 11 -> 11 +ddred101 reduce 10 -> 1E+1 +ddred102 reduce 10. -> 1E+1 +ddred103 reduce 1.1E+1 -> 11 +ddred104 reduce 1.0E+1 -> 1E+1 +ddred105 reduce 1.10E+2 -> 1.1E+2 +ddred106 reduce 1.00E+2 -> 1E+2 +ddred107 reduce 1.100E+3 -> 1.1E+3 +ddred108 reduce 1.000E+3 -> 1E+3 +ddred109 reduce 1.000000E+6 -> 1E+6 +ddred110 reduce -11 -> -11 +ddred111 reduce -10 -> -1E+1 +ddred112 reduce -10. -> -1E+1 +ddred113 reduce -1.1E+1 -> -11 +ddred114 reduce -1.0E+1 -> -1E+1 +ddred115 reduce -1.10E+2 -> -1.1E+2 +ddred116 reduce -1.00E+2 -> -1E+2 +ddred117 reduce -1.100E+3 -> -1.1E+3 +ddred118 reduce -1.000E+3 -> -1E+3 +ddred119 reduce -1.00000E+5 -> -1E+5 +ddred120 reduce -1.000000E+6 -> -1E+6 +ddred121 reduce -10.00000E+6 -> -1E+7 +ddred122 reduce -100.0000E+6 -> -1E+8 +ddred123 reduce -1000.000E+6 -> -1E+9 +ddred124 reduce -10000.00E+6 -> -1E+10 +ddred125 reduce -100000.0E+6 -> -1E+11 +ddred126 reduce -1000000.E+6 -> -1E+12 + +-- examples from decArith +ddred140 reduce '2.1' -> '2.1' +ddred141 reduce '-2.0' -> '-2' +ddred142 reduce '1.200' -> '1.2' +ddred143 reduce '-120' -> '-1.2E+2' +ddred144 reduce '120.00' -> '1.2E+2' +ddred145 reduce '0.00' -> '0' + +-- Nmax, Nmin, Ntiny +-- note origami effect on some of these +ddred151 reduce 9.999999999999999E+384 -> 9.999999999999999E+384 +ddred152 reduce 9.999999000000000E+380 -> 9.99999900000E+380 +ddred153 reduce 9.999999999990000E+384 -> 9.999999999990000E+384 +ddred154 reduce 1E-383 -> 1E-383 +ddred155 reduce 1.000000000000000E-383 -> 1E-383 +ddred156 reduce 2.000E-395 -> 2E-395 Subnormal +ddred157 reduce 1E-398 -> 1E-398 Subnormal + +ddred161 reduce -1E-398 -> -1E-398 Subnormal +ddred162 reduce -2.000E-395 -> -2E-395 Subnormal +ddred163 reduce -1.000000000000000E-383 -> -1E-383 +ddred164 reduce -1E-383 -> -1E-383 +ddred165 reduce -9.999999000000000E+380 -> -9.99999900000E+380 +ddred166 reduce -9.999999999990000E+384 -> -9.999999999990000E+384 +ddred167 reduce -9.999999999999990E+384 -> -9.999999999999990E+384 +ddred168 reduce -9.999999999999999E+384 -> -9.999999999999999E+384 +ddred169 reduce -9.999999999999990E+384 -> -9.999999999999990E+384 + + +-- specials (reduce does not affect payload) +ddred820 reduce 'Inf' -> 'Infinity' +ddred821 reduce '-Inf' -> '-Infinity' +ddred822 reduce NaN -> NaN +ddred823 reduce sNaN -> NaN Invalid_operation +ddred824 reduce NaN101 -> NaN101 +ddred825 reduce sNaN010 -> NaN10 Invalid_operation +ddred827 reduce -NaN -> -NaN +ddred828 reduce -sNaN -> -NaN Invalid_operation +ddred829 reduce -NaN101 -> -NaN101 +ddred830 reduce -sNaN010 -> -NaN10 Invalid_operation + +-- Null test +ddred900 reduce # -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddRemainder.decTest b/Lib/test/decimaltestdata/ddRemainder.decTest index 5bd1e32..85d86f9 100644 --- a/Lib/test/decimaltestdata/ddRemainder.decTest +++ b/Lib/test/decimaltestdata/ddRemainder.decTest @@ -1,600 +1,600 @@ ------------------------------------------------------------------------- --- ddRemainder.decTest -- decDouble remainder -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks (as base, above) -ddrem001 remainder 1 1 -> 0 -ddrem002 remainder 2 1 -> 0 -ddrem003 remainder 1 2 -> 1 -ddrem004 remainder 2 2 -> 0 -ddrem005 remainder 0 1 -> 0 -ddrem006 remainder 0 2 -> 0 -ddrem007 remainder 1 3 -> 1 -ddrem008 remainder 2 3 -> 2 -ddrem009 remainder 3 3 -> 0 - -ddrem010 remainder 2.4 1 -> 0.4 -ddrem011 remainder 2.4 -1 -> 0.4 -ddrem012 remainder -2.4 1 -> -0.4 -ddrem013 remainder -2.4 -1 -> -0.4 -ddrem014 remainder 2.40 1 -> 0.40 -ddrem015 remainder 2.400 1 -> 0.400 -ddrem016 remainder 2.4 2 -> 0.4 -ddrem017 remainder 2.400 2 -> 0.400 -ddrem018 remainder 2. 2 -> 0 -ddrem019 remainder 20 20 -> 0 - -ddrem020 remainder 187 187 -> 0 -ddrem021 remainder 5 2 -> 1 -ddrem022 remainder 5 2.0 -> 1.0 -ddrem023 remainder 5 2.000 -> 1.000 -ddrem024 remainder 5 0.200 -> 0.000 -ddrem025 remainder 5 0.200 -> 0.000 - -ddrem030 remainder 1 2 -> 1 -ddrem031 remainder 1 4 -> 1 -ddrem032 remainder 1 8 -> 1 - -ddrem033 remainder 1 16 -> 1 -ddrem034 remainder 1 32 -> 1 -ddrem035 remainder 1 64 -> 1 -ddrem040 remainder 1 -2 -> 1 -ddrem041 remainder 1 -4 -> 1 -ddrem042 remainder 1 -8 -> 1 -ddrem043 remainder 1 -16 -> 1 -ddrem044 remainder 1 -32 -> 1 -ddrem045 remainder 1 -64 -> 1 -ddrem050 remainder -1 2 -> -1 -ddrem051 remainder -1 4 -> -1 -ddrem052 remainder -1 8 -> -1 -ddrem053 remainder -1 16 -> -1 -ddrem054 remainder -1 32 -> -1 -ddrem055 remainder -1 64 -> -1 -ddrem060 remainder -1 -2 -> -1 -ddrem061 remainder -1 -4 -> -1 -ddrem062 remainder -1 -8 -> -1 -ddrem063 remainder -1 -16 -> -1 -ddrem064 remainder -1 -32 -> -1 -ddrem065 remainder -1 -64 -> -1 - -ddrem066 remainder 999999999 1 -> 0 -ddrem067 remainder 999999999.4 1 -> 0.4 -ddrem068 remainder 999999999.5 1 -> 0.5 -ddrem069 remainder 999999999.9 1 -> 0.9 -ddrem070 remainder 999999999.999 1 -> 0.999 -ddrem071 remainder 999999.999999 1 -> 0.999999 -ddrem072 remainder 9 1 -> 0 -ddrem073 remainder 9999999999999999 1 -> 0 -ddrem074 remainder 9999999999999999 2 -> 1 -ddrem075 remainder 9999999999999999 3 -> 0 -ddrem076 remainder 9999999999999999 4 -> 3 - -ddrem080 remainder 0. 1 -> 0 -ddrem081 remainder .0 1 -> 0.0 -ddrem082 remainder 0.00 1 -> 0.00 -ddrem083 remainder 0.00E+9 1 -> 0 -ddrem084 remainder 0.00E+3 1 -> 0 -ddrem085 remainder 0.00E+2 1 -> 0 -ddrem086 remainder 0.00E+1 1 -> 0.0 -ddrem087 remainder 0.00E+0 1 -> 0.00 -ddrem088 remainder 0.00E-0 1 -> 0.00 -ddrem089 remainder 0.00E-1 1 -> 0.000 -ddrem090 remainder 0.00E-2 1 -> 0.0000 -ddrem091 remainder 0.00E-3 1 -> 0.00000 -ddrem092 remainder 0.00E-4 1 -> 0.000000 -ddrem093 remainder 0.00E-5 1 -> 0E-7 -ddrem094 remainder 0.00E-6 1 -> 0E-8 -ddrem095 remainder 0.0000E-50 1 -> 0E-54 - --- Various flavours of remainder by 0 -ddrem101 remainder 0 0 -> NaN Division_undefined -ddrem102 remainder 0 -0 -> NaN Division_undefined -ddrem103 remainder -0 0 -> NaN Division_undefined -ddrem104 remainder -0 -0 -> NaN Division_undefined -ddrem105 remainder 0.0E5 0 -> NaN Division_undefined -ddrem106 remainder 0.000 0 -> NaN Division_undefined --- [Some think this next group should be Division_by_zero exception, but --- IEEE 854 is explicit that it is Invalid operation .. for --- remainder-near, anyway] -ddrem107 remainder 0.0001 0 -> NaN Invalid_operation -ddrem108 remainder 0.01 0 -> NaN Invalid_operation -ddrem109 remainder 0.1 0 -> NaN Invalid_operation -ddrem110 remainder 1 0 -> NaN Invalid_operation -ddrem111 remainder 1 0.0 -> NaN Invalid_operation -ddrem112 remainder 10 0.0 -> NaN Invalid_operation -ddrem113 remainder 1E+100 0.0 -> NaN Invalid_operation -ddrem114 remainder 1E+380 0 -> NaN Invalid_operation -ddrem115 remainder 0.0001 -0 -> NaN Invalid_operation -ddrem116 remainder 0.01 -0 -> NaN Invalid_operation -ddrem119 remainder 0.1 -0 -> NaN Invalid_operation -ddrem120 remainder 1 -0 -> NaN Invalid_operation -ddrem121 remainder 1 -0.0 -> NaN Invalid_operation -ddrem122 remainder 10 -0.0 -> NaN Invalid_operation -ddrem123 remainder 1E+100 -0.0 -> NaN Invalid_operation -ddrem124 remainder 1E+384 -0 -> NaN Invalid_operation --- and zeros on left -ddrem130 remainder 0 1 -> 0 -ddrem131 remainder 0 -1 -> 0 -ddrem132 remainder 0.0 1 -> 0.0 -ddrem133 remainder 0.0 -1 -> 0.0 -ddrem134 remainder -0 1 -> -0 -ddrem135 remainder -0 -1 -> -0 -ddrem136 remainder -0.0 1 -> -0.0 -ddrem137 remainder -0.0 -1 -> -0.0 - --- 0.5ers -ddrem143 remainder 0.5 2 -> 0.5 -ddrem144 remainder 0.5 2.1 -> 0.5 -ddrem145 remainder 0.5 2.01 -> 0.50 -ddrem146 remainder 0.5 2.001 -> 0.500 -ddrem147 remainder 0.50 2 -> 0.50 -ddrem148 remainder 0.50 2.01 -> 0.50 -ddrem149 remainder 0.50 2.001 -> 0.500 - --- steadies -ddrem150 remainder 1 1 -> 0 -ddrem151 remainder 1 2 -> 1 -ddrem152 remainder 1 3 -> 1 -ddrem153 remainder 1 4 -> 1 -ddrem154 remainder 1 5 -> 1 -ddrem155 remainder 1 6 -> 1 -ddrem156 remainder 1 7 -> 1 -ddrem157 remainder 1 8 -> 1 -ddrem158 remainder 1 9 -> 1 -ddrem159 remainder 1 10 -> 1 -ddrem160 remainder 1 1 -> 0 -ddrem161 remainder 2 1 -> 0 -ddrem162 remainder 3 1 -> 0 -ddrem163 remainder 4 1 -> 0 -ddrem164 remainder 5 1 -> 0 -ddrem165 remainder 6 1 -> 0 -ddrem166 remainder 7 1 -> 0 -ddrem167 remainder 8 1 -> 0 -ddrem168 remainder 9 1 -> 0 -ddrem169 remainder 10 1 -> 0 - --- some differences from remainderNear -ddrem171 remainder 0.4 1.020 -> 0.400 -ddrem172 remainder 0.50 1.020 -> 0.500 -ddrem173 remainder 0.51 1.020 -> 0.510 -ddrem174 remainder 0.52 1.020 -> 0.520 -ddrem175 remainder 0.6 1.020 -> 0.600 - --- More flavours of remainder by 0 -ddrem201 remainder 0 0 -> NaN Division_undefined -ddrem202 remainder 0.0E5 0 -> NaN Division_undefined -ddrem203 remainder 0.000 0 -> NaN Division_undefined -ddrem204 remainder 0.0001 0 -> NaN Invalid_operation -ddrem205 remainder 0.01 0 -> NaN Invalid_operation -ddrem206 remainder 0.1 0 -> NaN Invalid_operation -ddrem207 remainder 1 0 -> NaN Invalid_operation -ddrem208 remainder 1 0.0 -> NaN Invalid_operation -ddrem209 remainder 10 0.0 -> NaN Invalid_operation -ddrem210 remainder 1E+100 0.0 -> NaN Invalid_operation -ddrem211 remainder 1E+380 0 -> NaN Invalid_operation - --- some differences from remainderNear -ddrem231 remainder -0.4 1.020 -> -0.400 -ddrem232 remainder -0.50 1.020 -> -0.500 -ddrem233 remainder -0.51 1.020 -> -0.510 -ddrem234 remainder -0.52 1.020 -> -0.520 -ddrem235 remainder -0.6 1.020 -> -0.600 - --- high Xs -ddrem240 remainder 1E+2 1.00 -> 0.00 - --- ddrem3xx are from DiagBigDecimal -ddrem301 remainder 1 3 -> 1 -ddrem302 remainder 5 5 -> 0 -ddrem303 remainder 13 10 -> 3 -ddrem304 remainder 13 50 -> 13 -ddrem305 remainder 13 100 -> 13 -ddrem306 remainder 13 1000 -> 13 -ddrem307 remainder .13 1 -> 0.13 -ddrem308 remainder 0.133 1 -> 0.133 -ddrem309 remainder 0.1033 1 -> 0.1033 -ddrem310 remainder 1.033 1 -> 0.033 -ddrem311 remainder 10.33 1 -> 0.33 -ddrem312 remainder 10.33 10 -> 0.33 -ddrem313 remainder 103.3 1 -> 0.3 -ddrem314 remainder 133 10 -> 3 -ddrem315 remainder 1033 10 -> 3 -ddrem316 remainder 1033 50 -> 33 -ddrem317 remainder 101.0 3 -> 2.0 -ddrem318 remainder 102.0 3 -> 0.0 -ddrem319 remainder 103.0 3 -> 1.0 -ddrem320 remainder 2.40 1 -> 0.40 -ddrem321 remainder 2.400 1 -> 0.400 -ddrem322 remainder 2.4 1 -> 0.4 -ddrem323 remainder 2.4 2 -> 0.4 -ddrem324 remainder 2.400 2 -> 0.400 -ddrem325 remainder 1 0.3 -> 0.1 -ddrem326 remainder 1 0.30 -> 0.10 -ddrem327 remainder 1 0.300 -> 0.100 -ddrem328 remainder 1 0.3000 -> 0.1000 -ddrem329 remainder 1.0 0.3 -> 0.1 -ddrem330 remainder 1.00 0.3 -> 0.10 -ddrem331 remainder 1.000 0.3 -> 0.100 -ddrem332 remainder 1.0000 0.3 -> 0.1000 -ddrem333 remainder 0.5 2 -> 0.5 -ddrem334 remainder 0.5 2.1 -> 0.5 -ddrem335 remainder 0.5 2.01 -> 0.50 -ddrem336 remainder 0.5 2.001 -> 0.500 -ddrem337 remainder 0.50 2 -> 0.50 -ddrem338 remainder 0.50 2.01 -> 0.50 -ddrem339 remainder 0.50 2.001 -> 0.500 - -ddrem340 remainder 0.5 0.5000001 -> 0.5000000 -ddrem341 remainder 0.5 0.50000001 -> 0.50000000 -ddrem342 remainder 0.5 0.500000001 -> 0.500000000 -ddrem343 remainder 0.5 0.5000000001 -> 0.5000000000 -ddrem344 remainder 0.5 0.50000000001 -> 0.50000000000 -ddrem345 remainder 0.5 0.4999999 -> 1E-7 -ddrem346 remainder 0.5 0.49999999 -> 1E-8 -ddrem347 remainder 0.5 0.499999999 -> 1E-9 -ddrem348 remainder 0.5 0.4999999999 -> 1E-10 -ddrem349 remainder 0.5 0.49999999999 -> 1E-11 -ddrem350 remainder 0.5 0.499999999999 -> 1E-12 - -ddrem351 remainder 0.03 7 -> 0.03 -ddrem352 remainder 5 2 -> 1 -ddrem353 remainder 4.1 2 -> 0.1 -ddrem354 remainder 4.01 2 -> 0.01 -ddrem355 remainder 4.001 2 -> 0.001 -ddrem356 remainder 4.0001 2 -> 0.0001 -ddrem357 remainder 4.00001 2 -> 0.00001 -ddrem358 remainder 4.000001 2 -> 0.000001 -ddrem359 remainder 4.0000001 2 -> 1E-7 - -ddrem360 remainder 1.2 0.7345 -> 0.4655 -ddrem361 remainder 0.8 12 -> 0.8 -ddrem362 remainder 0.8 0.2 -> 0.0 -ddrem363 remainder 0.8 0.3 -> 0.2 -ddrem364 remainder 0.800 12 -> 0.800 -ddrem365 remainder 0.800 1.7 -> 0.800 -ddrem366 remainder 2.400 2 -> 0.400 - -ddrem371 remainder 2.400 2 -> 0.400 - -ddrem381 remainder 12345 1 -> 0 -ddrem382 remainder 12345 1.0001 -> 0.7657 -ddrem383 remainder 12345 1.001 -> 0.668 -ddrem384 remainder 12345 1.01 -> 0.78 -ddrem385 remainder 12345 1.1 -> 0.8 -ddrem386 remainder 12355 4 -> 3 -ddrem387 remainder 12345 4 -> 1 -ddrem388 remainder 12355 4.0001 -> 2.6912 -ddrem389 remainder 12345 4.0001 -> 0.6914 -ddrem390 remainder 12345 4.9 -> 1.9 -ddrem391 remainder 12345 4.99 -> 4.73 -ddrem392 remainder 12345 4.999 -> 2.469 -ddrem393 remainder 12345 4.9999 -> 0.2469 -ddrem394 remainder 12345 5 -> 0 -ddrem395 remainder 12345 5.0001 -> 4.7532 -ddrem396 remainder 12345 5.001 -> 2.532 -ddrem397 remainder 12345 5.01 -> 0.36 -ddrem398 remainder 12345 5.1 -> 3.0 - --- the nasty division-by-1 cases -ddrem401 remainder 0.5 1 -> 0.5 -ddrem402 remainder 0.55 1 -> 0.55 -ddrem403 remainder 0.555 1 -> 0.555 -ddrem404 remainder 0.5555 1 -> 0.5555 -ddrem405 remainder 0.55555 1 -> 0.55555 -ddrem406 remainder 0.555555 1 -> 0.555555 -ddrem407 remainder 0.5555555 1 -> 0.5555555 -ddrem408 remainder 0.55555555 1 -> 0.55555555 -ddrem409 remainder 0.555555555 1 -> 0.555555555 - --- folddowns -ddrem421 remainder 1E+384 1 -> NaN Division_impossible -ddrem422 remainder 1E+384 1E+383 -> 0E+369 Clamped -ddrem423 remainder 1E+384 2E+383 -> 0E+369 Clamped -ddrem424 remainder 1E+384 3E+383 -> 1.00000000000000E+383 Clamped -ddrem425 remainder 1E+384 4E+383 -> 2.00000000000000E+383 Clamped -ddrem426 remainder 1E+384 5E+383 -> 0E+369 Clamped -ddrem427 remainder 1E+384 6E+383 -> 4.00000000000000E+383 Clamped -ddrem428 remainder 1E+384 7E+383 -> 3.00000000000000E+383 Clamped -ddrem429 remainder 1E+384 8E+383 -> 2.00000000000000E+383 Clamped -ddrem430 remainder 1E+384 9E+383 -> 1.00000000000000E+383 Clamped --- tinies -ddrem431 remainder 1E-397 1E-398 -> 0E-398 -ddrem432 remainder 1E-397 2E-398 -> 0E-398 -ddrem433 remainder 1E-397 3E-398 -> 1E-398 Subnormal -ddrem434 remainder 1E-397 4E-398 -> 2E-398 Subnormal -ddrem435 remainder 1E-397 5E-398 -> 0E-398 -ddrem436 remainder 1E-397 6E-398 -> 4E-398 Subnormal -ddrem437 remainder 1E-397 7E-398 -> 3E-398 Subnormal -ddrem438 remainder 1E-397 8E-398 -> 2E-398 Subnormal -ddrem439 remainder 1E-397 9E-398 -> 1E-398 Subnormal -ddrem440 remainder 1E-397 10E-398 -> 0E-398 -ddrem441 remainder 1E-397 11E-398 -> 1.0E-397 Subnormal -ddrem442 remainder 100E-397 11E-398 -> 1.0E-397 Subnormal -ddrem443 remainder 100E-397 20E-398 -> 0E-398 -ddrem444 remainder 100E-397 21E-398 -> 1.3E-397 Subnormal -ddrem445 remainder 100E-397 30E-398 -> 1.0E-397 Subnormal - --- zero signs -ddrem650 remainder 1 1 -> 0 -ddrem651 remainder -1 1 -> -0 -ddrem652 remainder 1 -1 -> 0 -ddrem653 remainder -1 -1 -> -0 -ddrem654 remainder 0 1 -> 0 -ddrem655 remainder -0 1 -> -0 -ddrem656 remainder 0 -1 -> 0 -ddrem657 remainder -0 -1 -> -0 -ddrem658 remainder 0.00 1 -> 0.00 -ddrem659 remainder -0.00 1 -> -0.00 - --- Specials -ddrem680 remainder Inf -Inf -> NaN Invalid_operation -ddrem681 remainder Inf -1000 -> NaN Invalid_operation -ddrem682 remainder Inf -1 -> NaN Invalid_operation -ddrem683 remainder Inf 0 -> NaN Invalid_operation -ddrem684 remainder Inf -0 -> NaN Invalid_operation -ddrem685 remainder Inf 1 -> NaN Invalid_operation -ddrem686 remainder Inf 1000 -> NaN Invalid_operation -ddrem687 remainder Inf Inf -> NaN Invalid_operation -ddrem688 remainder -1000 Inf -> -1000 -ddrem689 remainder -Inf Inf -> NaN Invalid_operation -ddrem691 remainder -1 Inf -> -1 -ddrem692 remainder 0 Inf -> 0 -ddrem693 remainder -0 Inf -> -0 -ddrem694 remainder 1 Inf -> 1 -ddrem695 remainder 1000 Inf -> 1000 -ddrem696 remainder Inf Inf -> NaN Invalid_operation - -ddrem700 remainder -Inf -Inf -> NaN Invalid_operation -ddrem701 remainder -Inf -1000 -> NaN Invalid_operation -ddrem702 remainder -Inf -1 -> NaN Invalid_operation -ddrem703 remainder -Inf -0 -> NaN Invalid_operation -ddrem704 remainder -Inf 0 -> NaN Invalid_operation -ddrem705 remainder -Inf 1 -> NaN Invalid_operation -ddrem706 remainder -Inf 1000 -> NaN Invalid_operation -ddrem707 remainder -Inf Inf -> NaN Invalid_operation -ddrem708 remainder -Inf -Inf -> NaN Invalid_operation -ddrem709 remainder -1000 Inf -> -1000 -ddrem710 remainder -1 -Inf -> -1 -ddrem711 remainder -0 -Inf -> -0 -ddrem712 remainder 0 -Inf -> 0 -ddrem713 remainder 1 -Inf -> 1 -ddrem714 remainder 1000 -Inf -> 1000 -ddrem715 remainder Inf -Inf -> NaN Invalid_operation - -ddrem721 remainder NaN -Inf -> NaN -ddrem722 remainder NaN -1000 -> NaN -ddrem723 remainder NaN -1 -> NaN -ddrem724 remainder NaN -0 -> NaN -ddrem725 remainder -NaN 0 -> -NaN -ddrem726 remainder NaN 1 -> NaN -ddrem727 remainder NaN 1000 -> NaN -ddrem728 remainder NaN Inf -> NaN -ddrem729 remainder NaN -NaN -> NaN -ddrem730 remainder -Inf NaN -> NaN -ddrem731 remainder -1000 NaN -> NaN -ddrem732 remainder -1 NaN -> NaN -ddrem733 remainder -0 -NaN -> -NaN -ddrem734 remainder 0 NaN -> NaN -ddrem735 remainder 1 -NaN -> -NaN -ddrem736 remainder 1000 NaN -> NaN -ddrem737 remainder Inf NaN -> NaN - -ddrem741 remainder sNaN -Inf -> NaN Invalid_operation -ddrem742 remainder sNaN -1000 -> NaN Invalid_operation -ddrem743 remainder -sNaN -1 -> -NaN Invalid_operation -ddrem744 remainder sNaN -0 -> NaN Invalid_operation -ddrem745 remainder sNaN 0 -> NaN Invalid_operation -ddrem746 remainder sNaN 1 -> NaN Invalid_operation -ddrem747 remainder sNaN 1000 -> NaN Invalid_operation -ddrem749 remainder sNaN NaN -> NaN Invalid_operation -ddrem750 remainder sNaN sNaN -> NaN Invalid_operation -ddrem751 remainder NaN sNaN -> NaN Invalid_operation -ddrem752 remainder -Inf sNaN -> NaN Invalid_operation -ddrem753 remainder -1000 sNaN -> NaN Invalid_operation -ddrem754 remainder -1 sNaN -> NaN Invalid_operation -ddrem755 remainder -0 sNaN -> NaN Invalid_operation -ddrem756 remainder 0 sNaN -> NaN Invalid_operation -ddrem757 remainder 1 sNaN -> NaN Invalid_operation -ddrem758 remainder 1000 sNaN -> NaN Invalid_operation -ddrem759 remainder Inf -sNaN -> -NaN Invalid_operation - --- propaging NaNs -ddrem760 remainder NaN1 NaN7 -> NaN1 -ddrem761 remainder sNaN2 NaN8 -> NaN2 Invalid_operation -ddrem762 remainder NaN3 sNaN9 -> NaN9 Invalid_operation -ddrem763 remainder sNaN4 sNaN10 -> NaN4 Invalid_operation -ddrem764 remainder 15 NaN11 -> NaN11 -ddrem765 remainder NaN6 NaN12 -> NaN6 -ddrem766 remainder Inf NaN13 -> NaN13 -ddrem767 remainder NaN14 -Inf -> NaN14 -ddrem768 remainder 0 NaN15 -> NaN15 -ddrem769 remainder NaN16 -0 -> NaN16 - --- edge cases of impossible -ddrem770 remainder 1234567890123456 10 -> 6 -ddrem771 remainder 1234567890123456 1 -> 0 -ddrem772 remainder 1234567890123456 0.1 -> NaN Division_impossible -ddrem773 remainder 1234567890123456 0.01 -> NaN Division_impossible - --- long operand checks -ddrem801 remainder 12345678000 100 -> 0 -ddrem802 remainder 1 12345678000 -> 1 -ddrem803 remainder 1234567800 10 -> 0 -ddrem804 remainder 1 1234567800 -> 1 -ddrem805 remainder 1234567890 10 -> 0 -ddrem806 remainder 1 1234567890 -> 1 -ddrem807 remainder 1234567891 10 -> 1 -ddrem808 remainder 1 1234567891 -> 1 -ddrem809 remainder 12345678901 100 -> 1 -ddrem810 remainder 1 12345678901 -> 1 -ddrem811 remainder 1234567896 10 -> 6 -ddrem812 remainder 1 1234567896 -> 1 - -ddrem821 remainder 12345678000 100 -> 0 -ddrem822 remainder 1 12345678000 -> 1 -ddrem823 remainder 1234567800 10 -> 0 -ddrem824 remainder 1 1234567800 -> 1 -ddrem825 remainder 1234567890 10 -> 0 -ddrem826 remainder 1 1234567890 -> 1 -ddrem827 remainder 1234567891 10 -> 1 -ddrem828 remainder 1 1234567891 -> 1 -ddrem829 remainder 12345678901 100 -> 1 -ddrem830 remainder 1 12345678901 -> 1 -ddrem831 remainder 1234567896 10 -> 6 -ddrem832 remainder 1 1234567896 -> 1 - --- from divideint -ddrem840 remainder 100000000.0 1 -> 0.0 -ddrem841 remainder 100000000.4 1 -> 0.4 -ddrem842 remainder 100000000.5 1 -> 0.5 -ddrem843 remainder 100000000.9 1 -> 0.9 -ddrem844 remainder 100000000.999 1 -> 0.999 -ddrem850 remainder 100000003 5 -> 3 -ddrem851 remainder 10000003 5 -> 3 -ddrem852 remainder 1000003 5 -> 3 -ddrem853 remainder 100003 5 -> 3 -ddrem854 remainder 10003 5 -> 3 -ddrem855 remainder 1003 5 -> 3 -ddrem856 remainder 103 5 -> 3 -ddrem857 remainder 13 5 -> 3 -ddrem858 remainder 1 5 -> 1 - --- Vladimir's cases 1234567890123456 -ddrem860 remainder 123.0e1 1000000000000000 -> 1230 -ddrem861 remainder 1230 1000000000000000 -> 1230 -ddrem862 remainder 12.3e2 1000000000000000 -> 1230 -ddrem863 remainder 1.23e3 1000000000000000 -> 1230 -ddrem864 remainder 123e1 1000000000000000 -> 1230 -ddrem870 remainder 123e1 1000000000000000 -> 1230 -ddrem871 remainder 123e1 100000000000000 -> 1230 -ddrem872 remainder 123e1 10000000000000 -> 1230 -ddrem873 remainder 123e1 1000000000000 -> 1230 -ddrem874 remainder 123e1 100000000000 -> 1230 -ddrem875 remainder 123e1 10000000000 -> 1230 -ddrem876 remainder 123e1 1000000000 -> 1230 -ddrem877 remainder 123e1 100000000 -> 1230 -ddrem878 remainder 1230 100000000 -> 1230 -ddrem879 remainder 123e1 10000000 -> 1230 -ddrem880 remainder 123e1 1000000 -> 1230 -ddrem881 remainder 123e1 100000 -> 1230 -ddrem882 remainder 123e1 10000 -> 1230 -ddrem883 remainder 123e1 1000 -> 230 -ddrem884 remainder 123e1 100 -> 30 -ddrem885 remainder 123e1 10 -> 0 -ddrem886 remainder 123e1 1 -> 0 - -ddrem890 remainder 123e1 2000000000000000 -> 1230 -ddrem891 remainder 123e1 200000000000000 -> 1230 -ddrem892 remainder 123e1 20000000000000 -> 1230 -ddrem893 remainder 123e1 2000000000000 -> 1230 -ddrem894 remainder 123e1 200000000000 -> 1230 -ddrem895 remainder 123e1 20000000000 -> 1230 -ddrem896 remainder 123e1 2000000000 -> 1230 -ddrem897 remainder 123e1 200000000 -> 1230 -ddrem899 remainder 123e1 20000000 -> 1230 -ddrem900 remainder 123e1 2000000 -> 1230 -ddrem901 remainder 123e1 200000 -> 1230 -ddrem902 remainder 123e1 20000 -> 1230 -ddrem903 remainder 123e1 2000 -> 1230 -ddrem904 remainder 123e1 200 -> 30 -ddrem905 remainder 123e1 20 -> 10 -ddrem906 remainder 123e1 2 -> 0 - -ddrem910 remainder 123e1 5000000000000000 -> 1230 -ddrem911 remainder 123e1 500000000000000 -> 1230 -ddrem912 remainder 123e1 50000000000000 -> 1230 -ddrem913 remainder 123e1 5000000000000 -> 1230 -ddrem914 remainder 123e1 500000000000 -> 1230 -ddrem915 remainder 123e1 50000000000 -> 1230 -ddrem916 remainder 123e1 5000000000 -> 1230 -ddrem917 remainder 123e1 500000000 -> 1230 -ddrem919 remainder 123e1 50000000 -> 1230 -ddrem920 remainder 123e1 5000000 -> 1230 -ddrem921 remainder 123e1 500000 -> 1230 -ddrem922 remainder 123e1 50000 -> 1230 -ddrem923 remainder 123e1 5000 -> 1230 -ddrem924 remainder 123e1 500 -> 230 -ddrem925 remainder 123e1 50 -> 30 -ddrem926 remainder 123e1 5 -> 0 - -ddrem930 remainder 123e1 9000000000000000 -> 1230 -ddrem931 remainder 123e1 900000000000000 -> 1230 -ddrem932 remainder 123e1 90000000000000 -> 1230 -ddrem933 remainder 123e1 9000000000000 -> 1230 -ddrem934 remainder 123e1 900000000000 -> 1230 -ddrem935 remainder 123e1 90000000000 -> 1230 -ddrem936 remainder 123e1 9000000000 -> 1230 -ddrem937 remainder 123e1 900000000 -> 1230 -ddrem939 remainder 123e1 90000000 -> 1230 -ddrem940 remainder 123e1 9000000 -> 1230 -ddrem941 remainder 123e1 900000 -> 1230 -ddrem942 remainder 123e1 90000 -> 1230 -ddrem943 remainder 123e1 9000 -> 1230 -ddrem944 remainder 123e1 900 -> 330 -ddrem945 remainder 123e1 90 -> 60 -ddrem946 remainder 123e1 9 -> 6 - -ddrem950 remainder 123e1 1000000000000000 -> 1230 -ddrem961 remainder 123e1 2999999999999999 -> 1230 -ddrem962 remainder 123e1 3999999999999999 -> 1230 -ddrem963 remainder 123e1 4999999999999999 -> 1230 -ddrem964 remainder 123e1 5999999999999999 -> 1230 -ddrem965 remainder 123e1 6999999999999999 -> 1230 -ddrem966 remainder 123e1 7999999999999999 -> 1230 -ddrem967 remainder 123e1 8999999999999999 -> 1230 -ddrem968 remainder 123e1 9999999999999999 -> 1230 -ddrem969 remainder 123e1 9876543210987654 -> 1230 - -ddrem980 remainder 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally - --- overflow and underflow tests [from divide] -ddrem1051 remainder 1e+277 1e-311 -> NaN Division_impossible -ddrem1052 remainder 1e+277 -1e-311 -> NaN Division_impossible -ddrem1053 remainder -1e+277 1e-311 -> NaN Division_impossible -ddrem1054 remainder -1e+277 -1e-311 -> NaN Division_impossible -ddrem1055 remainder 1e-277 1e+311 -> 1E-277 -ddrem1056 remainder 1e-277 -1e+311 -> 1E-277 -ddrem1057 remainder -1e-277 1e+311 -> -1E-277 -ddrem1058 remainder -1e-277 -1e+311 -> -1E-277 - --- destructive subtract -ddrem1101 remainder 1234567890123456 1.000000000000001 -> 0.765432109876546 -ddrem1102 remainder 1234567890123456 1.00000000000001 -> 0.65432109876557 -ddrem1103 remainder 1234567890123456 1.0000000000001 -> 0.5432109876668 -ddrem1104 remainder 1234567890123455 4.000000000000001 -> 2.691358027469137 -ddrem1105 remainder 1234567890123456 4.000000000000001 -> 3.691358027469137 -ddrem1106 remainder 1234567890123456 4.9999999999999 -> 0.6913578024696 -ddrem1107 remainder 1234567890123456 4.99999999999999 -> 3.46913578024691 -ddrem1108 remainder 1234567890123456 4.999999999999999 -> 1.246913578024691 -ddrem1109 remainder 1234567890123456 5.000000000000001 -> 0.753086421975309 -ddrem1110 remainder 1234567890123456 5.00000000000001 -> 3.53086421975310 -ddrem1111 remainder 1234567890123456 5.0000000000001 -> 1.3086421975314 - --- Null tests -ddrem1000 remainder 10 # -> NaN Invalid_operation -ddrem1001 remainder # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddRemainder.decTest -- decDouble remainder -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks (as base, above) +ddrem001 remainder 1 1 -> 0 +ddrem002 remainder 2 1 -> 0 +ddrem003 remainder 1 2 -> 1 +ddrem004 remainder 2 2 -> 0 +ddrem005 remainder 0 1 -> 0 +ddrem006 remainder 0 2 -> 0 +ddrem007 remainder 1 3 -> 1 +ddrem008 remainder 2 3 -> 2 +ddrem009 remainder 3 3 -> 0 + +ddrem010 remainder 2.4 1 -> 0.4 +ddrem011 remainder 2.4 -1 -> 0.4 +ddrem012 remainder -2.4 1 -> -0.4 +ddrem013 remainder -2.4 -1 -> -0.4 +ddrem014 remainder 2.40 1 -> 0.40 +ddrem015 remainder 2.400 1 -> 0.400 +ddrem016 remainder 2.4 2 -> 0.4 +ddrem017 remainder 2.400 2 -> 0.400 +ddrem018 remainder 2. 2 -> 0 +ddrem019 remainder 20 20 -> 0 + +ddrem020 remainder 187 187 -> 0 +ddrem021 remainder 5 2 -> 1 +ddrem022 remainder 5 2.0 -> 1.0 +ddrem023 remainder 5 2.000 -> 1.000 +ddrem024 remainder 5 0.200 -> 0.000 +ddrem025 remainder 5 0.200 -> 0.000 + +ddrem030 remainder 1 2 -> 1 +ddrem031 remainder 1 4 -> 1 +ddrem032 remainder 1 8 -> 1 + +ddrem033 remainder 1 16 -> 1 +ddrem034 remainder 1 32 -> 1 +ddrem035 remainder 1 64 -> 1 +ddrem040 remainder 1 -2 -> 1 +ddrem041 remainder 1 -4 -> 1 +ddrem042 remainder 1 -8 -> 1 +ddrem043 remainder 1 -16 -> 1 +ddrem044 remainder 1 -32 -> 1 +ddrem045 remainder 1 -64 -> 1 +ddrem050 remainder -1 2 -> -1 +ddrem051 remainder -1 4 -> -1 +ddrem052 remainder -1 8 -> -1 +ddrem053 remainder -1 16 -> -1 +ddrem054 remainder -1 32 -> -1 +ddrem055 remainder -1 64 -> -1 +ddrem060 remainder -1 -2 -> -1 +ddrem061 remainder -1 -4 -> -1 +ddrem062 remainder -1 -8 -> -1 +ddrem063 remainder -1 -16 -> -1 +ddrem064 remainder -1 -32 -> -1 +ddrem065 remainder -1 -64 -> -1 + +ddrem066 remainder 999999999 1 -> 0 +ddrem067 remainder 999999999.4 1 -> 0.4 +ddrem068 remainder 999999999.5 1 -> 0.5 +ddrem069 remainder 999999999.9 1 -> 0.9 +ddrem070 remainder 999999999.999 1 -> 0.999 +ddrem071 remainder 999999.999999 1 -> 0.999999 +ddrem072 remainder 9 1 -> 0 +ddrem073 remainder 9999999999999999 1 -> 0 +ddrem074 remainder 9999999999999999 2 -> 1 +ddrem075 remainder 9999999999999999 3 -> 0 +ddrem076 remainder 9999999999999999 4 -> 3 + +ddrem080 remainder 0. 1 -> 0 +ddrem081 remainder .0 1 -> 0.0 +ddrem082 remainder 0.00 1 -> 0.00 +ddrem083 remainder 0.00E+9 1 -> 0 +ddrem084 remainder 0.00E+3 1 -> 0 +ddrem085 remainder 0.00E+2 1 -> 0 +ddrem086 remainder 0.00E+1 1 -> 0.0 +ddrem087 remainder 0.00E+0 1 -> 0.00 +ddrem088 remainder 0.00E-0 1 -> 0.00 +ddrem089 remainder 0.00E-1 1 -> 0.000 +ddrem090 remainder 0.00E-2 1 -> 0.0000 +ddrem091 remainder 0.00E-3 1 -> 0.00000 +ddrem092 remainder 0.00E-4 1 -> 0.000000 +ddrem093 remainder 0.00E-5 1 -> 0E-7 +ddrem094 remainder 0.00E-6 1 -> 0E-8 +ddrem095 remainder 0.0000E-50 1 -> 0E-54 + +-- Various flavours of remainder by 0 +ddrem101 remainder 0 0 -> NaN Division_undefined +ddrem102 remainder 0 -0 -> NaN Division_undefined +ddrem103 remainder -0 0 -> NaN Division_undefined +ddrem104 remainder -0 -0 -> NaN Division_undefined +ddrem105 remainder 0.0E5 0 -> NaN Division_undefined +ddrem106 remainder 0.000 0 -> NaN Division_undefined +-- [Some think this next group should be Division_by_zero exception, but +-- IEEE 854 is explicit that it is Invalid operation .. for +-- remainder-near, anyway] +ddrem107 remainder 0.0001 0 -> NaN Invalid_operation +ddrem108 remainder 0.01 0 -> NaN Invalid_operation +ddrem109 remainder 0.1 0 -> NaN Invalid_operation +ddrem110 remainder 1 0 -> NaN Invalid_operation +ddrem111 remainder 1 0.0 -> NaN Invalid_operation +ddrem112 remainder 10 0.0 -> NaN Invalid_operation +ddrem113 remainder 1E+100 0.0 -> NaN Invalid_operation +ddrem114 remainder 1E+380 0 -> NaN Invalid_operation +ddrem115 remainder 0.0001 -0 -> NaN Invalid_operation +ddrem116 remainder 0.01 -0 -> NaN Invalid_operation +ddrem119 remainder 0.1 -0 -> NaN Invalid_operation +ddrem120 remainder 1 -0 -> NaN Invalid_operation +ddrem121 remainder 1 -0.0 -> NaN Invalid_operation +ddrem122 remainder 10 -0.0 -> NaN Invalid_operation +ddrem123 remainder 1E+100 -0.0 -> NaN Invalid_operation +ddrem124 remainder 1E+384 -0 -> NaN Invalid_operation +-- and zeros on left +ddrem130 remainder 0 1 -> 0 +ddrem131 remainder 0 -1 -> 0 +ddrem132 remainder 0.0 1 -> 0.0 +ddrem133 remainder 0.0 -1 -> 0.0 +ddrem134 remainder -0 1 -> -0 +ddrem135 remainder -0 -1 -> -0 +ddrem136 remainder -0.0 1 -> -0.0 +ddrem137 remainder -0.0 -1 -> -0.0 + +-- 0.5ers +ddrem143 remainder 0.5 2 -> 0.5 +ddrem144 remainder 0.5 2.1 -> 0.5 +ddrem145 remainder 0.5 2.01 -> 0.50 +ddrem146 remainder 0.5 2.001 -> 0.500 +ddrem147 remainder 0.50 2 -> 0.50 +ddrem148 remainder 0.50 2.01 -> 0.50 +ddrem149 remainder 0.50 2.001 -> 0.500 + +-- steadies +ddrem150 remainder 1 1 -> 0 +ddrem151 remainder 1 2 -> 1 +ddrem152 remainder 1 3 -> 1 +ddrem153 remainder 1 4 -> 1 +ddrem154 remainder 1 5 -> 1 +ddrem155 remainder 1 6 -> 1 +ddrem156 remainder 1 7 -> 1 +ddrem157 remainder 1 8 -> 1 +ddrem158 remainder 1 9 -> 1 +ddrem159 remainder 1 10 -> 1 +ddrem160 remainder 1 1 -> 0 +ddrem161 remainder 2 1 -> 0 +ddrem162 remainder 3 1 -> 0 +ddrem163 remainder 4 1 -> 0 +ddrem164 remainder 5 1 -> 0 +ddrem165 remainder 6 1 -> 0 +ddrem166 remainder 7 1 -> 0 +ddrem167 remainder 8 1 -> 0 +ddrem168 remainder 9 1 -> 0 +ddrem169 remainder 10 1 -> 0 + +-- some differences from remainderNear +ddrem171 remainder 0.4 1.020 -> 0.400 +ddrem172 remainder 0.50 1.020 -> 0.500 +ddrem173 remainder 0.51 1.020 -> 0.510 +ddrem174 remainder 0.52 1.020 -> 0.520 +ddrem175 remainder 0.6 1.020 -> 0.600 + +-- More flavours of remainder by 0 +ddrem201 remainder 0 0 -> NaN Division_undefined +ddrem202 remainder 0.0E5 0 -> NaN Division_undefined +ddrem203 remainder 0.000 0 -> NaN Division_undefined +ddrem204 remainder 0.0001 0 -> NaN Invalid_operation +ddrem205 remainder 0.01 0 -> NaN Invalid_operation +ddrem206 remainder 0.1 0 -> NaN Invalid_operation +ddrem207 remainder 1 0 -> NaN Invalid_operation +ddrem208 remainder 1 0.0 -> NaN Invalid_operation +ddrem209 remainder 10 0.0 -> NaN Invalid_operation +ddrem210 remainder 1E+100 0.0 -> NaN Invalid_operation +ddrem211 remainder 1E+380 0 -> NaN Invalid_operation + +-- some differences from remainderNear +ddrem231 remainder -0.4 1.020 -> -0.400 +ddrem232 remainder -0.50 1.020 -> -0.500 +ddrem233 remainder -0.51 1.020 -> -0.510 +ddrem234 remainder -0.52 1.020 -> -0.520 +ddrem235 remainder -0.6 1.020 -> -0.600 + +-- high Xs +ddrem240 remainder 1E+2 1.00 -> 0.00 + +-- ddrem3xx are from DiagBigDecimal +ddrem301 remainder 1 3 -> 1 +ddrem302 remainder 5 5 -> 0 +ddrem303 remainder 13 10 -> 3 +ddrem304 remainder 13 50 -> 13 +ddrem305 remainder 13 100 -> 13 +ddrem306 remainder 13 1000 -> 13 +ddrem307 remainder .13 1 -> 0.13 +ddrem308 remainder 0.133 1 -> 0.133 +ddrem309 remainder 0.1033 1 -> 0.1033 +ddrem310 remainder 1.033 1 -> 0.033 +ddrem311 remainder 10.33 1 -> 0.33 +ddrem312 remainder 10.33 10 -> 0.33 +ddrem313 remainder 103.3 1 -> 0.3 +ddrem314 remainder 133 10 -> 3 +ddrem315 remainder 1033 10 -> 3 +ddrem316 remainder 1033 50 -> 33 +ddrem317 remainder 101.0 3 -> 2.0 +ddrem318 remainder 102.0 3 -> 0.0 +ddrem319 remainder 103.0 3 -> 1.0 +ddrem320 remainder 2.40 1 -> 0.40 +ddrem321 remainder 2.400 1 -> 0.400 +ddrem322 remainder 2.4 1 -> 0.4 +ddrem323 remainder 2.4 2 -> 0.4 +ddrem324 remainder 2.400 2 -> 0.400 +ddrem325 remainder 1 0.3 -> 0.1 +ddrem326 remainder 1 0.30 -> 0.10 +ddrem327 remainder 1 0.300 -> 0.100 +ddrem328 remainder 1 0.3000 -> 0.1000 +ddrem329 remainder 1.0 0.3 -> 0.1 +ddrem330 remainder 1.00 0.3 -> 0.10 +ddrem331 remainder 1.000 0.3 -> 0.100 +ddrem332 remainder 1.0000 0.3 -> 0.1000 +ddrem333 remainder 0.5 2 -> 0.5 +ddrem334 remainder 0.5 2.1 -> 0.5 +ddrem335 remainder 0.5 2.01 -> 0.50 +ddrem336 remainder 0.5 2.001 -> 0.500 +ddrem337 remainder 0.50 2 -> 0.50 +ddrem338 remainder 0.50 2.01 -> 0.50 +ddrem339 remainder 0.50 2.001 -> 0.500 + +ddrem340 remainder 0.5 0.5000001 -> 0.5000000 +ddrem341 remainder 0.5 0.50000001 -> 0.50000000 +ddrem342 remainder 0.5 0.500000001 -> 0.500000000 +ddrem343 remainder 0.5 0.5000000001 -> 0.5000000000 +ddrem344 remainder 0.5 0.50000000001 -> 0.50000000000 +ddrem345 remainder 0.5 0.4999999 -> 1E-7 +ddrem346 remainder 0.5 0.49999999 -> 1E-8 +ddrem347 remainder 0.5 0.499999999 -> 1E-9 +ddrem348 remainder 0.5 0.4999999999 -> 1E-10 +ddrem349 remainder 0.5 0.49999999999 -> 1E-11 +ddrem350 remainder 0.5 0.499999999999 -> 1E-12 + +ddrem351 remainder 0.03 7 -> 0.03 +ddrem352 remainder 5 2 -> 1 +ddrem353 remainder 4.1 2 -> 0.1 +ddrem354 remainder 4.01 2 -> 0.01 +ddrem355 remainder 4.001 2 -> 0.001 +ddrem356 remainder 4.0001 2 -> 0.0001 +ddrem357 remainder 4.00001 2 -> 0.00001 +ddrem358 remainder 4.000001 2 -> 0.000001 +ddrem359 remainder 4.0000001 2 -> 1E-7 + +ddrem360 remainder 1.2 0.7345 -> 0.4655 +ddrem361 remainder 0.8 12 -> 0.8 +ddrem362 remainder 0.8 0.2 -> 0.0 +ddrem363 remainder 0.8 0.3 -> 0.2 +ddrem364 remainder 0.800 12 -> 0.800 +ddrem365 remainder 0.800 1.7 -> 0.800 +ddrem366 remainder 2.400 2 -> 0.400 + +ddrem371 remainder 2.400 2 -> 0.400 + +ddrem381 remainder 12345 1 -> 0 +ddrem382 remainder 12345 1.0001 -> 0.7657 +ddrem383 remainder 12345 1.001 -> 0.668 +ddrem384 remainder 12345 1.01 -> 0.78 +ddrem385 remainder 12345 1.1 -> 0.8 +ddrem386 remainder 12355 4 -> 3 +ddrem387 remainder 12345 4 -> 1 +ddrem388 remainder 12355 4.0001 -> 2.6912 +ddrem389 remainder 12345 4.0001 -> 0.6914 +ddrem390 remainder 12345 4.9 -> 1.9 +ddrem391 remainder 12345 4.99 -> 4.73 +ddrem392 remainder 12345 4.999 -> 2.469 +ddrem393 remainder 12345 4.9999 -> 0.2469 +ddrem394 remainder 12345 5 -> 0 +ddrem395 remainder 12345 5.0001 -> 4.7532 +ddrem396 remainder 12345 5.001 -> 2.532 +ddrem397 remainder 12345 5.01 -> 0.36 +ddrem398 remainder 12345 5.1 -> 3.0 + +-- the nasty division-by-1 cases +ddrem401 remainder 0.5 1 -> 0.5 +ddrem402 remainder 0.55 1 -> 0.55 +ddrem403 remainder 0.555 1 -> 0.555 +ddrem404 remainder 0.5555 1 -> 0.5555 +ddrem405 remainder 0.55555 1 -> 0.55555 +ddrem406 remainder 0.555555 1 -> 0.555555 +ddrem407 remainder 0.5555555 1 -> 0.5555555 +ddrem408 remainder 0.55555555 1 -> 0.55555555 +ddrem409 remainder 0.555555555 1 -> 0.555555555 + +-- folddowns +ddrem421 remainder 1E+384 1 -> NaN Division_impossible +ddrem422 remainder 1E+384 1E+383 -> 0E+369 Clamped +ddrem423 remainder 1E+384 2E+383 -> 0E+369 Clamped +ddrem424 remainder 1E+384 3E+383 -> 1.00000000000000E+383 Clamped +ddrem425 remainder 1E+384 4E+383 -> 2.00000000000000E+383 Clamped +ddrem426 remainder 1E+384 5E+383 -> 0E+369 Clamped +ddrem427 remainder 1E+384 6E+383 -> 4.00000000000000E+383 Clamped +ddrem428 remainder 1E+384 7E+383 -> 3.00000000000000E+383 Clamped +ddrem429 remainder 1E+384 8E+383 -> 2.00000000000000E+383 Clamped +ddrem430 remainder 1E+384 9E+383 -> 1.00000000000000E+383 Clamped +-- tinies +ddrem431 remainder 1E-397 1E-398 -> 0E-398 +ddrem432 remainder 1E-397 2E-398 -> 0E-398 +ddrem433 remainder 1E-397 3E-398 -> 1E-398 Subnormal +ddrem434 remainder 1E-397 4E-398 -> 2E-398 Subnormal +ddrem435 remainder 1E-397 5E-398 -> 0E-398 +ddrem436 remainder 1E-397 6E-398 -> 4E-398 Subnormal +ddrem437 remainder 1E-397 7E-398 -> 3E-398 Subnormal +ddrem438 remainder 1E-397 8E-398 -> 2E-398 Subnormal +ddrem439 remainder 1E-397 9E-398 -> 1E-398 Subnormal +ddrem440 remainder 1E-397 10E-398 -> 0E-398 +ddrem441 remainder 1E-397 11E-398 -> 1.0E-397 Subnormal +ddrem442 remainder 100E-397 11E-398 -> 1.0E-397 Subnormal +ddrem443 remainder 100E-397 20E-398 -> 0E-398 +ddrem444 remainder 100E-397 21E-398 -> 1.3E-397 Subnormal +ddrem445 remainder 100E-397 30E-398 -> 1.0E-397 Subnormal + +-- zero signs +ddrem650 remainder 1 1 -> 0 +ddrem651 remainder -1 1 -> -0 +ddrem652 remainder 1 -1 -> 0 +ddrem653 remainder -1 -1 -> -0 +ddrem654 remainder 0 1 -> 0 +ddrem655 remainder -0 1 -> -0 +ddrem656 remainder 0 -1 -> 0 +ddrem657 remainder -0 -1 -> -0 +ddrem658 remainder 0.00 1 -> 0.00 +ddrem659 remainder -0.00 1 -> -0.00 + +-- Specials +ddrem680 remainder Inf -Inf -> NaN Invalid_operation +ddrem681 remainder Inf -1000 -> NaN Invalid_operation +ddrem682 remainder Inf -1 -> NaN Invalid_operation +ddrem683 remainder Inf 0 -> NaN Invalid_operation +ddrem684 remainder Inf -0 -> NaN Invalid_operation +ddrem685 remainder Inf 1 -> NaN Invalid_operation +ddrem686 remainder Inf 1000 -> NaN Invalid_operation +ddrem687 remainder Inf Inf -> NaN Invalid_operation +ddrem688 remainder -1000 Inf -> -1000 +ddrem689 remainder -Inf Inf -> NaN Invalid_operation +ddrem691 remainder -1 Inf -> -1 +ddrem692 remainder 0 Inf -> 0 +ddrem693 remainder -0 Inf -> -0 +ddrem694 remainder 1 Inf -> 1 +ddrem695 remainder 1000 Inf -> 1000 +ddrem696 remainder Inf Inf -> NaN Invalid_operation + +ddrem700 remainder -Inf -Inf -> NaN Invalid_operation +ddrem701 remainder -Inf -1000 -> NaN Invalid_operation +ddrem702 remainder -Inf -1 -> NaN Invalid_operation +ddrem703 remainder -Inf -0 -> NaN Invalid_operation +ddrem704 remainder -Inf 0 -> NaN Invalid_operation +ddrem705 remainder -Inf 1 -> NaN Invalid_operation +ddrem706 remainder -Inf 1000 -> NaN Invalid_operation +ddrem707 remainder -Inf Inf -> NaN Invalid_operation +ddrem708 remainder -Inf -Inf -> NaN Invalid_operation +ddrem709 remainder -1000 Inf -> -1000 +ddrem710 remainder -1 -Inf -> -1 +ddrem711 remainder -0 -Inf -> -0 +ddrem712 remainder 0 -Inf -> 0 +ddrem713 remainder 1 -Inf -> 1 +ddrem714 remainder 1000 -Inf -> 1000 +ddrem715 remainder Inf -Inf -> NaN Invalid_operation + +ddrem721 remainder NaN -Inf -> NaN +ddrem722 remainder NaN -1000 -> NaN +ddrem723 remainder NaN -1 -> NaN +ddrem724 remainder NaN -0 -> NaN +ddrem725 remainder -NaN 0 -> -NaN +ddrem726 remainder NaN 1 -> NaN +ddrem727 remainder NaN 1000 -> NaN +ddrem728 remainder NaN Inf -> NaN +ddrem729 remainder NaN -NaN -> NaN +ddrem730 remainder -Inf NaN -> NaN +ddrem731 remainder -1000 NaN -> NaN +ddrem732 remainder -1 NaN -> NaN +ddrem733 remainder -0 -NaN -> -NaN +ddrem734 remainder 0 NaN -> NaN +ddrem735 remainder 1 -NaN -> -NaN +ddrem736 remainder 1000 NaN -> NaN +ddrem737 remainder Inf NaN -> NaN + +ddrem741 remainder sNaN -Inf -> NaN Invalid_operation +ddrem742 remainder sNaN -1000 -> NaN Invalid_operation +ddrem743 remainder -sNaN -1 -> -NaN Invalid_operation +ddrem744 remainder sNaN -0 -> NaN Invalid_operation +ddrem745 remainder sNaN 0 -> NaN Invalid_operation +ddrem746 remainder sNaN 1 -> NaN Invalid_operation +ddrem747 remainder sNaN 1000 -> NaN Invalid_operation +ddrem749 remainder sNaN NaN -> NaN Invalid_operation +ddrem750 remainder sNaN sNaN -> NaN Invalid_operation +ddrem751 remainder NaN sNaN -> NaN Invalid_operation +ddrem752 remainder -Inf sNaN -> NaN Invalid_operation +ddrem753 remainder -1000 sNaN -> NaN Invalid_operation +ddrem754 remainder -1 sNaN -> NaN Invalid_operation +ddrem755 remainder -0 sNaN -> NaN Invalid_operation +ddrem756 remainder 0 sNaN -> NaN Invalid_operation +ddrem757 remainder 1 sNaN -> NaN Invalid_operation +ddrem758 remainder 1000 sNaN -> NaN Invalid_operation +ddrem759 remainder Inf -sNaN -> -NaN Invalid_operation + +-- propaging NaNs +ddrem760 remainder NaN1 NaN7 -> NaN1 +ddrem761 remainder sNaN2 NaN8 -> NaN2 Invalid_operation +ddrem762 remainder NaN3 sNaN9 -> NaN9 Invalid_operation +ddrem763 remainder sNaN4 sNaN10 -> NaN4 Invalid_operation +ddrem764 remainder 15 NaN11 -> NaN11 +ddrem765 remainder NaN6 NaN12 -> NaN6 +ddrem766 remainder Inf NaN13 -> NaN13 +ddrem767 remainder NaN14 -Inf -> NaN14 +ddrem768 remainder 0 NaN15 -> NaN15 +ddrem769 remainder NaN16 -0 -> NaN16 + +-- edge cases of impossible +ddrem770 remainder 1234567890123456 10 -> 6 +ddrem771 remainder 1234567890123456 1 -> 0 +ddrem772 remainder 1234567890123456 0.1 -> NaN Division_impossible +ddrem773 remainder 1234567890123456 0.01 -> NaN Division_impossible + +-- long operand checks +ddrem801 remainder 12345678000 100 -> 0 +ddrem802 remainder 1 12345678000 -> 1 +ddrem803 remainder 1234567800 10 -> 0 +ddrem804 remainder 1 1234567800 -> 1 +ddrem805 remainder 1234567890 10 -> 0 +ddrem806 remainder 1 1234567890 -> 1 +ddrem807 remainder 1234567891 10 -> 1 +ddrem808 remainder 1 1234567891 -> 1 +ddrem809 remainder 12345678901 100 -> 1 +ddrem810 remainder 1 12345678901 -> 1 +ddrem811 remainder 1234567896 10 -> 6 +ddrem812 remainder 1 1234567896 -> 1 + +ddrem821 remainder 12345678000 100 -> 0 +ddrem822 remainder 1 12345678000 -> 1 +ddrem823 remainder 1234567800 10 -> 0 +ddrem824 remainder 1 1234567800 -> 1 +ddrem825 remainder 1234567890 10 -> 0 +ddrem826 remainder 1 1234567890 -> 1 +ddrem827 remainder 1234567891 10 -> 1 +ddrem828 remainder 1 1234567891 -> 1 +ddrem829 remainder 12345678901 100 -> 1 +ddrem830 remainder 1 12345678901 -> 1 +ddrem831 remainder 1234567896 10 -> 6 +ddrem832 remainder 1 1234567896 -> 1 + +-- from divideint +ddrem840 remainder 100000000.0 1 -> 0.0 +ddrem841 remainder 100000000.4 1 -> 0.4 +ddrem842 remainder 100000000.5 1 -> 0.5 +ddrem843 remainder 100000000.9 1 -> 0.9 +ddrem844 remainder 100000000.999 1 -> 0.999 +ddrem850 remainder 100000003 5 -> 3 +ddrem851 remainder 10000003 5 -> 3 +ddrem852 remainder 1000003 5 -> 3 +ddrem853 remainder 100003 5 -> 3 +ddrem854 remainder 10003 5 -> 3 +ddrem855 remainder 1003 5 -> 3 +ddrem856 remainder 103 5 -> 3 +ddrem857 remainder 13 5 -> 3 +ddrem858 remainder 1 5 -> 1 + +-- Vladimir's cases 1234567890123456 +ddrem860 remainder 123.0e1 1000000000000000 -> 1230 +ddrem861 remainder 1230 1000000000000000 -> 1230 +ddrem862 remainder 12.3e2 1000000000000000 -> 1230 +ddrem863 remainder 1.23e3 1000000000000000 -> 1230 +ddrem864 remainder 123e1 1000000000000000 -> 1230 +ddrem870 remainder 123e1 1000000000000000 -> 1230 +ddrem871 remainder 123e1 100000000000000 -> 1230 +ddrem872 remainder 123e1 10000000000000 -> 1230 +ddrem873 remainder 123e1 1000000000000 -> 1230 +ddrem874 remainder 123e1 100000000000 -> 1230 +ddrem875 remainder 123e1 10000000000 -> 1230 +ddrem876 remainder 123e1 1000000000 -> 1230 +ddrem877 remainder 123e1 100000000 -> 1230 +ddrem878 remainder 1230 100000000 -> 1230 +ddrem879 remainder 123e1 10000000 -> 1230 +ddrem880 remainder 123e1 1000000 -> 1230 +ddrem881 remainder 123e1 100000 -> 1230 +ddrem882 remainder 123e1 10000 -> 1230 +ddrem883 remainder 123e1 1000 -> 230 +ddrem884 remainder 123e1 100 -> 30 +ddrem885 remainder 123e1 10 -> 0 +ddrem886 remainder 123e1 1 -> 0 + +ddrem890 remainder 123e1 2000000000000000 -> 1230 +ddrem891 remainder 123e1 200000000000000 -> 1230 +ddrem892 remainder 123e1 20000000000000 -> 1230 +ddrem893 remainder 123e1 2000000000000 -> 1230 +ddrem894 remainder 123e1 200000000000 -> 1230 +ddrem895 remainder 123e1 20000000000 -> 1230 +ddrem896 remainder 123e1 2000000000 -> 1230 +ddrem897 remainder 123e1 200000000 -> 1230 +ddrem899 remainder 123e1 20000000 -> 1230 +ddrem900 remainder 123e1 2000000 -> 1230 +ddrem901 remainder 123e1 200000 -> 1230 +ddrem902 remainder 123e1 20000 -> 1230 +ddrem903 remainder 123e1 2000 -> 1230 +ddrem904 remainder 123e1 200 -> 30 +ddrem905 remainder 123e1 20 -> 10 +ddrem906 remainder 123e1 2 -> 0 + +ddrem910 remainder 123e1 5000000000000000 -> 1230 +ddrem911 remainder 123e1 500000000000000 -> 1230 +ddrem912 remainder 123e1 50000000000000 -> 1230 +ddrem913 remainder 123e1 5000000000000 -> 1230 +ddrem914 remainder 123e1 500000000000 -> 1230 +ddrem915 remainder 123e1 50000000000 -> 1230 +ddrem916 remainder 123e1 5000000000 -> 1230 +ddrem917 remainder 123e1 500000000 -> 1230 +ddrem919 remainder 123e1 50000000 -> 1230 +ddrem920 remainder 123e1 5000000 -> 1230 +ddrem921 remainder 123e1 500000 -> 1230 +ddrem922 remainder 123e1 50000 -> 1230 +ddrem923 remainder 123e1 5000 -> 1230 +ddrem924 remainder 123e1 500 -> 230 +ddrem925 remainder 123e1 50 -> 30 +ddrem926 remainder 123e1 5 -> 0 + +ddrem930 remainder 123e1 9000000000000000 -> 1230 +ddrem931 remainder 123e1 900000000000000 -> 1230 +ddrem932 remainder 123e1 90000000000000 -> 1230 +ddrem933 remainder 123e1 9000000000000 -> 1230 +ddrem934 remainder 123e1 900000000000 -> 1230 +ddrem935 remainder 123e1 90000000000 -> 1230 +ddrem936 remainder 123e1 9000000000 -> 1230 +ddrem937 remainder 123e1 900000000 -> 1230 +ddrem939 remainder 123e1 90000000 -> 1230 +ddrem940 remainder 123e1 9000000 -> 1230 +ddrem941 remainder 123e1 900000 -> 1230 +ddrem942 remainder 123e1 90000 -> 1230 +ddrem943 remainder 123e1 9000 -> 1230 +ddrem944 remainder 123e1 900 -> 330 +ddrem945 remainder 123e1 90 -> 60 +ddrem946 remainder 123e1 9 -> 6 + +ddrem950 remainder 123e1 1000000000000000 -> 1230 +ddrem961 remainder 123e1 2999999999999999 -> 1230 +ddrem962 remainder 123e1 3999999999999999 -> 1230 +ddrem963 remainder 123e1 4999999999999999 -> 1230 +ddrem964 remainder 123e1 5999999999999999 -> 1230 +ddrem965 remainder 123e1 6999999999999999 -> 1230 +ddrem966 remainder 123e1 7999999999999999 -> 1230 +ddrem967 remainder 123e1 8999999999999999 -> 1230 +ddrem968 remainder 123e1 9999999999999999 -> 1230 +ddrem969 remainder 123e1 9876543210987654 -> 1230 + +ddrem980 remainder 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally + +-- overflow and underflow tests [from divide] +ddrem1051 remainder 1e+277 1e-311 -> NaN Division_impossible +ddrem1052 remainder 1e+277 -1e-311 -> NaN Division_impossible +ddrem1053 remainder -1e+277 1e-311 -> NaN Division_impossible +ddrem1054 remainder -1e+277 -1e-311 -> NaN Division_impossible +ddrem1055 remainder 1e-277 1e+311 -> 1E-277 +ddrem1056 remainder 1e-277 -1e+311 -> 1E-277 +ddrem1057 remainder -1e-277 1e+311 -> -1E-277 +ddrem1058 remainder -1e-277 -1e+311 -> -1E-277 + +-- destructive subtract +ddrem1101 remainder 1234567890123456 1.000000000000001 -> 0.765432109876546 +ddrem1102 remainder 1234567890123456 1.00000000000001 -> 0.65432109876557 +ddrem1103 remainder 1234567890123456 1.0000000000001 -> 0.5432109876668 +ddrem1104 remainder 1234567890123455 4.000000000000001 -> 2.691358027469137 +ddrem1105 remainder 1234567890123456 4.000000000000001 -> 3.691358027469137 +ddrem1106 remainder 1234567890123456 4.9999999999999 -> 0.6913578024696 +ddrem1107 remainder 1234567890123456 4.99999999999999 -> 3.46913578024691 +ddrem1108 remainder 1234567890123456 4.999999999999999 -> 1.246913578024691 +ddrem1109 remainder 1234567890123456 5.000000000000001 -> 0.753086421975309 +ddrem1110 remainder 1234567890123456 5.00000000000001 -> 3.53086421975310 +ddrem1111 remainder 1234567890123456 5.0000000000001 -> 1.3086421975314 + +-- Null tests +ddrem1000 remainder 10 # -> NaN Invalid_operation +ddrem1001 remainder # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddRemainderNear.decTest b/Lib/test/decimaltestdata/ddRemainderNear.decTest index 6ba64eb..8da9afc 100644 --- a/Lib/test/decimaltestdata/ddRemainderNear.decTest +++ b/Lib/test/decimaltestdata/ddRemainderNear.decTest @@ -1,629 +1,629 @@ ------------------------------------------------------------------------- --- ddRemainderNear.decTest -- decDouble remainder-near -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- sanity checks (as base, above) -ddrmn001 remaindernear 1 1 -> 0 -ddrmn002 remaindernear 2 1 -> 0 -ddrmn003 remaindernear 1 2 -> 1 -ddrmn004 remaindernear 2 2 -> 0 -ddrmn005 remaindernear 0 1 -> 0 -ddrmn006 remaindernear 0 2 -> 0 -ddrmn007 remaindernear 1 3 -> 1 -ddrmn008 remaindernear 2 3 -> -1 -ddrmn009 remaindernear 3 3 -> 0 - -ddrmn010 remaindernear 2.4 1 -> 0.4 -ddrmn011 remaindernear 2.4 -1 -> 0.4 -ddrmn012 remaindernear -2.4 1 -> -0.4 -ddrmn013 remaindernear -2.4 -1 -> -0.4 -ddrmn014 remaindernear 2.40 1 -> 0.40 -ddrmn015 remaindernear 2.400 1 -> 0.400 -ddrmn016 remaindernear 2.4 2 -> 0.4 -ddrmn017 remaindernear 2.400 2 -> 0.400 -ddrmn018 remaindernear 2. 2 -> 0 -ddrmn019 remaindernear 20 20 -> 0 - -ddrmn020 remaindernear 187 187 -> 0 -ddrmn021 remaindernear 5 2 -> 1 -ddrmn022 remaindernear 5 2.0 -> 1.0 -ddrmn023 remaindernear 5 2.000 -> 1.000 -ddrmn024 remaindernear 5 0.200 -> 0.000 -ddrmn025 remaindernear 5 0.200 -> 0.000 - -ddrmn030 remaindernear 1 2 -> 1 -ddrmn031 remaindernear 1 4 -> 1 -ddrmn032 remaindernear 1 8 -> 1 - -ddrmn033 remaindernear 1 16 -> 1 -ddrmn034 remaindernear 1 32 -> 1 -ddrmn035 remaindernear 1 64 -> 1 -ddrmn040 remaindernear 1 -2 -> 1 -ddrmn041 remaindernear 1 -4 -> 1 -ddrmn042 remaindernear 1 -8 -> 1 -ddrmn043 remaindernear 1 -16 -> 1 -ddrmn044 remaindernear 1 -32 -> 1 -ddrmn045 remaindernear 1 -64 -> 1 -ddrmn050 remaindernear -1 2 -> -1 -ddrmn051 remaindernear -1 4 -> -1 -ddrmn052 remaindernear -1 8 -> -1 -ddrmn053 remaindernear -1 16 -> -1 -ddrmn054 remaindernear -1 32 -> -1 -ddrmn055 remaindernear -1 64 -> -1 -ddrmn060 remaindernear -1 -2 -> -1 -ddrmn061 remaindernear -1 -4 -> -1 -ddrmn062 remaindernear -1 -8 -> -1 -ddrmn063 remaindernear -1 -16 -> -1 -ddrmn064 remaindernear -1 -32 -> -1 -ddrmn065 remaindernear -1 -64 -> -1 - -ddrmn066 remaindernear 9.9 1 -> -0.1 -ddrmn067 remaindernear 99.7 1 -> -0.3 -ddrmn068 remaindernear 999999999 1 -> 0 -ddrmn069 remaindernear 999999999.4 1 -> 0.4 -ddrmn070 remaindernear 999999999.5 1 -> -0.5 -ddrmn071 remaindernear 999999999.9 1 -> -0.1 -ddrmn072 remaindernear 999999999.999 1 -> -0.001 -ddrmn073 remaindernear 999999.999999 1 -> -0.000001 -ddrmn074 remaindernear 9 1 -> 0 -ddrmn075 remaindernear 9999999999999999 1 -> 0 -ddrmn076 remaindernear 9999999999999999 2 -> -1 -ddrmn077 remaindernear 9999999999999999 3 -> 0 -ddrmn078 remaindernear 9999999999999999 4 -> -1 - -ddrmn080 remaindernear 0. 1 -> 0 -ddrmn081 remaindernear .0 1 -> 0.0 -ddrmn082 remaindernear 0.00 1 -> 0.00 -ddrmn083 remaindernear 0.00E+9 1 -> 0 -ddrmn084 remaindernear 0.00E+3 1 -> 0 -ddrmn085 remaindernear 0.00E+2 1 -> 0 -ddrmn086 remaindernear 0.00E+1 1 -> 0.0 -ddrmn087 remaindernear 0.00E+0 1 -> 0.00 -ddrmn088 remaindernear 0.00E-0 1 -> 0.00 -ddrmn089 remaindernear 0.00E-1 1 -> 0.000 -ddrmn090 remaindernear 0.00E-2 1 -> 0.0000 -ddrmn091 remaindernear 0.00E-3 1 -> 0.00000 -ddrmn092 remaindernear 0.00E-4 1 -> 0.000000 -ddrmn093 remaindernear 0.00E-5 1 -> 0E-7 -ddrmn094 remaindernear 0.00E-6 1 -> 0E-8 -ddrmn095 remaindernear 0.0000E-50 1 -> 0E-54 - --- Various flavours of remaindernear by 0 -ddrmn101 remaindernear 0 0 -> NaN Division_undefined -ddrmn102 remaindernear 0 -0 -> NaN Division_undefined -ddrmn103 remaindernear -0 0 -> NaN Division_undefined -ddrmn104 remaindernear -0 -0 -> NaN Division_undefined -ddrmn105 remaindernear 0.0E5 0 -> NaN Division_undefined -ddrmn106 remaindernear 0.000 0 -> NaN Division_undefined --- [Some think this next group should be Division_by_zero exception, but --- IEEE 854 is explicit that it is Invalid operation .. for --- remainder-near, anyway] -ddrmn107 remaindernear 0.0001 0 -> NaN Invalid_operation -ddrmn108 remaindernear 0.01 0 -> NaN Invalid_operation -ddrmn109 remaindernear 0.1 0 -> NaN Invalid_operation -ddrmn110 remaindernear 1 0 -> NaN Invalid_operation -ddrmn111 remaindernear 1 0.0 -> NaN Invalid_operation -ddrmn112 remaindernear 10 0.0 -> NaN Invalid_operation -ddrmn113 remaindernear 1E+100 0.0 -> NaN Invalid_operation -ddrmn114 remaindernear 1E+380 0 -> NaN Invalid_operation -ddrmn115 remaindernear 0.0001 -0 -> NaN Invalid_operation -ddrmn116 remaindernear 0.01 -0 -> NaN Invalid_operation -ddrmn119 remaindernear 0.1 -0 -> NaN Invalid_operation -ddrmn120 remaindernear 1 -0 -> NaN Invalid_operation -ddrmn121 remaindernear 1 -0.0 -> NaN Invalid_operation -ddrmn122 remaindernear 10 -0.0 -> NaN Invalid_operation -ddrmn123 remaindernear 1E+100 -0.0 -> NaN Invalid_operation -ddrmn124 remaindernear 1E+384 -0 -> NaN Invalid_operation --- and zeros on left -ddrmn130 remaindernear 0 1 -> 0 -ddrmn131 remaindernear 0 -1 -> 0 -ddrmn132 remaindernear 0.0 1 -> 0.0 -ddrmn133 remaindernear 0.0 -1 -> 0.0 -ddrmn134 remaindernear -0 1 -> -0 -ddrmn135 remaindernear -0 -1 -> -0 -ddrmn136 remaindernear -0.0 1 -> -0.0 -ddrmn137 remaindernear -0.0 -1 -> -0.0 - --- 0.5ers -ddrmn143 remaindernear 0.5 2 -> 0.5 -ddrmn144 remaindernear 0.5 2.1 -> 0.5 -ddrmn145 remaindernear 0.5 2.01 -> 0.50 -ddrmn146 remaindernear 0.5 2.001 -> 0.500 -ddrmn147 remaindernear 0.50 2 -> 0.50 -ddrmn148 remaindernear 0.50 2.01 -> 0.50 -ddrmn149 remaindernear 0.50 2.001 -> 0.500 - --- steadies -ddrmn150 remaindernear 1 1 -> 0 -ddrmn151 remaindernear 1 2 -> 1 -ddrmn152 remaindernear 1 3 -> 1 -ddrmn153 remaindernear 1 4 -> 1 -ddrmn154 remaindernear 1 5 -> 1 -ddrmn155 remaindernear 1 6 -> 1 -ddrmn156 remaindernear 1 7 -> 1 -ddrmn157 remaindernear 1 8 -> 1 -ddrmn158 remaindernear 1 9 -> 1 -ddrmn159 remaindernear 1 10 -> 1 -ddrmn160 remaindernear 1 1 -> 0 -ddrmn161 remaindernear 2 1 -> 0 -ddrmn162 remaindernear 3 1 -> 0 -ddrmn163 remaindernear 4 1 -> 0 -ddrmn164 remaindernear 5 1 -> 0 -ddrmn165 remaindernear 6 1 -> 0 -ddrmn166 remaindernear 7 1 -> 0 -ddrmn167 remaindernear 8 1 -> 0 -ddrmn168 remaindernear 9 1 -> 0 -ddrmn169 remaindernear 10 1 -> 0 - --- some differences from remainder -ddrmn171 remaindernear 0.4 1.020 -> 0.400 -ddrmn172 remaindernear 0.50 1.020 -> 0.500 -ddrmn173 remaindernear 0.51 1.020 -> 0.510 -ddrmn174 remaindernear 0.52 1.020 -> -0.500 -ddrmn175 remaindernear 0.6 1.020 -> -0.420 - --- More flavours of remaindernear by 0 -ddrmn201 remaindernear 0 0 -> NaN Division_undefined -ddrmn202 remaindernear 0.0E5 0 -> NaN Division_undefined -ddrmn203 remaindernear 0.000 0 -> NaN Division_undefined -ddrmn204 remaindernear 0.0001 0 -> NaN Invalid_operation -ddrmn205 remaindernear 0.01 0 -> NaN Invalid_operation -ddrmn206 remaindernear 0.1 0 -> NaN Invalid_operation -ddrmn207 remaindernear 1 0 -> NaN Invalid_operation -ddrmn208 remaindernear 1 0.0 -> NaN Invalid_operation -ddrmn209 remaindernear 10 0.0 -> NaN Invalid_operation -ddrmn210 remaindernear 1E+100 0.0 -> NaN Invalid_operation -ddrmn211 remaindernear 1E+380 0 -> NaN Invalid_operation - --- tests from the extended specification -ddrmn221 remaindernear 2.1 3 -> -0.9 -ddrmn222 remaindernear 10 6 -> -2 -ddrmn223 remaindernear 10 3 -> 1 -ddrmn224 remaindernear -10 3 -> -1 -ddrmn225 remaindernear 10.2 1 -> 0.2 -ddrmn226 remaindernear 10 0.3 -> 0.1 -ddrmn227 remaindernear 3.6 1.3 -> -0.3 - --- some differences from remainder -ddrmn231 remaindernear -0.4 1.020 -> -0.400 -ddrmn232 remaindernear -0.50 1.020 -> -0.500 -ddrmn233 remaindernear -0.51 1.020 -> -0.510 -ddrmn234 remaindernear -0.52 1.020 -> 0.500 -ddrmn235 remaindernear -0.6 1.020 -> 0.420 - --- high Xs -ddrmn240 remaindernear 1E+2 1.00 -> 0.00 - --- ddrmn3xx are from DiagBigDecimal -ddrmn301 remaindernear 1 3 -> 1 -ddrmn302 remaindernear 5 5 -> 0 -ddrmn303 remaindernear 13 10 -> 3 -ddrmn304 remaindernear 13 50 -> 13 -ddrmn305 remaindernear 13 100 -> 13 -ddrmn306 remaindernear 13 1000 -> 13 -ddrmn307 remaindernear .13 1 -> 0.13 -ddrmn308 remaindernear 0.133 1 -> 0.133 -ddrmn309 remaindernear 0.1033 1 -> 0.1033 -ddrmn310 remaindernear 1.033 1 -> 0.033 -ddrmn311 remaindernear 10.33 1 -> 0.33 -ddrmn312 remaindernear 10.33 10 -> 0.33 -ddrmn313 remaindernear 103.3 1 -> 0.3 -ddrmn314 remaindernear 133 10 -> 3 -ddrmn315 remaindernear 1033 10 -> 3 -ddrmn316 remaindernear 1033 50 -> -17 -ddrmn317 remaindernear 101.0 3 -> -1.0 -ddrmn318 remaindernear 102.0 3 -> 0.0 -ddrmn319 remaindernear 103.0 3 -> 1.0 -ddrmn320 remaindernear 2.40 1 -> 0.40 -ddrmn321 remaindernear 2.400 1 -> 0.400 -ddrmn322 remaindernear 2.4 1 -> 0.4 -ddrmn323 remaindernear 2.4 2 -> 0.4 -ddrmn324 remaindernear 2.400 2 -> 0.400 -ddrmn325 remaindernear 1 0.3 -> 0.1 -ddrmn326 remaindernear 1 0.30 -> 0.10 -ddrmn327 remaindernear 1 0.300 -> 0.100 -ddrmn328 remaindernear 1 0.3000 -> 0.1000 -ddrmn329 remaindernear 1.0 0.3 -> 0.1 -ddrmn330 remaindernear 1.00 0.3 -> 0.10 -ddrmn331 remaindernear 1.000 0.3 -> 0.100 -ddrmn332 remaindernear 1.0000 0.3 -> 0.1000 -ddrmn333 remaindernear 0.5 2 -> 0.5 -ddrmn334 remaindernear 0.5 2.1 -> 0.5 -ddrmn335 remaindernear 0.5 2.01 -> 0.50 -ddrmn336 remaindernear 0.5 2.001 -> 0.500 -ddrmn337 remaindernear 0.50 2 -> 0.50 -ddrmn338 remaindernear 0.50 2.01 -> 0.50 -ddrmn339 remaindernear 0.50 2.001 -> 0.500 - -ddrmn340 remaindernear 0.5 0.5000001 -> -1E-7 -ddrmn341 remaindernear 0.5 0.50000001 -> -1E-8 -ddrmn342 remaindernear 0.5 0.500000001 -> -1E-9 -ddrmn343 remaindernear 0.5 0.5000000001 -> -1E-10 -ddrmn344 remaindernear 0.5 0.50000000001 -> -1E-11 -ddrmn345 remaindernear 0.5 0.4999999 -> 1E-7 -ddrmn346 remaindernear 0.5 0.49999999 -> 1E-8 -ddrmn347 remaindernear 0.5 0.499999999 -> 1E-9 -ddrmn348 remaindernear 0.5 0.4999999999 -> 1E-10 -ddrmn349 remaindernear 0.5 0.49999999999 -> 1E-11 -ddrmn350 remaindernear 0.5 0.499999999999 -> 1E-12 - -ddrmn351 remaindernear 0.03 7 -> 0.03 -ddrmn352 remaindernear 5 2 -> 1 -ddrmn353 remaindernear 4.1 2 -> 0.1 -ddrmn354 remaindernear 4.01 2 -> 0.01 -ddrmn355 remaindernear 4.001 2 -> 0.001 -ddrmn356 remaindernear 4.0001 2 -> 0.0001 -ddrmn357 remaindernear 4.00001 2 -> 0.00001 -ddrmn358 remaindernear 4.000001 2 -> 0.000001 -ddrmn359 remaindernear 4.0000001 2 -> 1E-7 - -ddrmn360 remaindernear 1.2 0.7345 -> -0.2690 -ddrmn361 remaindernear 0.8 12 -> 0.8 -ddrmn362 remaindernear 0.8 0.2 -> 0.0 -ddrmn363 remaindernear 0.8 0.3 -> -0.1 -ddrmn364 remaindernear 0.800 12 -> 0.800 -ddrmn365 remaindernear 0.800 1.7 -> 0.800 -ddrmn366 remaindernear 2.400 2 -> 0.400 - --- round to even -ddrmn371 remaindernear 121 2 -> 1 -ddrmn372 remaindernear 122 2 -> 0 -ddrmn373 remaindernear 123 2 -> -1 -ddrmn374 remaindernear 124 2 -> 0 -ddrmn375 remaindernear 125 2 -> 1 -ddrmn376 remaindernear 126 2 -> 0 -ddrmn377 remaindernear 127 2 -> -1 - -ddrmn381 remaindernear 12345 1 -> 0 -ddrmn382 remaindernear 12345 1.0001 -> -0.2344 -ddrmn383 remaindernear 12345 1.001 -> -0.333 -ddrmn384 remaindernear 12345 1.01 -> -0.23 -ddrmn385 remaindernear 12345 1.1 -> -0.3 -ddrmn386 remaindernear 12355 4 -> -1 -ddrmn387 remaindernear 12345 4 -> 1 -ddrmn388 remaindernear 12355 4.0001 -> -1.3089 -ddrmn389 remaindernear 12345 4.0001 -> 0.6914 -ddrmn390 remaindernear 12345 4.9 -> 1.9 -ddrmn391 remaindernear 12345 4.99 -> -0.26 -ddrmn392 remaindernear 12345 4.999 -> 2.469 -ddrmn393 remaindernear 12345 4.9999 -> 0.2469 -ddrmn394 remaindernear 12345 5 -> 0 -ddrmn395 remaindernear 12345 5.0001 -> -0.2469 -ddrmn396 remaindernear 12345 5.001 -> -2.469 -ddrmn397 remaindernear 12345 5.01 -> 0.36 -ddrmn398 remaindernear 12345 5.1 -> -2.1 - --- the nasty division-by-1 cases -ddrmn401 remaindernear 0.4 1 -> 0.4 -ddrmn402 remaindernear 0.45 1 -> 0.45 -ddrmn403 remaindernear 0.455 1 -> 0.455 -ddrmn404 remaindernear 0.4555 1 -> 0.4555 -ddrmn405 remaindernear 0.45555 1 -> 0.45555 -ddrmn406 remaindernear 0.455555 1 -> 0.455555 -ddrmn407 remaindernear 0.4555555 1 -> 0.4555555 -ddrmn408 remaindernear 0.45555555 1 -> 0.45555555 -ddrmn409 remaindernear 0.455555555 1 -> 0.455555555 --- with spill... [412 exercises sticktab loop] -ddrmn411 remaindernear 0.5 1 -> 0.5 -ddrmn412 remaindernear 0.55 1 -> -0.45 -ddrmn413 remaindernear 0.555 1 -> -0.445 -ddrmn414 remaindernear 0.5555 1 -> -0.4445 -ddrmn415 remaindernear 0.55555 1 -> -0.44445 -ddrmn416 remaindernear 0.555555 1 -> -0.444445 -ddrmn417 remaindernear 0.5555555 1 -> -0.4444445 -ddrmn418 remaindernear 0.55555555 1 -> -0.44444445 -ddrmn419 remaindernear 0.555555555 1 -> -0.444444445 - --- folddowns -ddrmn421 remaindernear 1E+384 1 -> NaN Division_impossible -ddrmn422 remaindernear 1E+384 1E+383 -> 0E+369 Clamped -ddrmn423 remaindernear 1E+384 2E+383 -> 0E+369 Clamped -ddrmn424 remaindernear 1E+384 3E+383 -> 1.00000000000000E+383 Clamped -ddrmn425 remaindernear 1E+384 4E+383 -> 2.00000000000000E+383 Clamped -ddrmn426 remaindernear 1E+384 5E+383 -> 0E+369 Clamped -ddrmn427 remaindernear 1E+384 6E+383 -> -2.00000000000000E+383 Clamped -ddrmn428 remaindernear 1E+384 7E+383 -> 3.00000000000000E+383 Clamped -ddrmn429 remaindernear 1E+384 8E+383 -> 2.00000000000000E+383 Clamped -ddrmn430 remaindernear 1E+384 9E+383 -> 1.00000000000000E+383 Clamped --- tinies -ddrmn431 remaindernear 1E-397 1E-398 -> 0E-398 -ddrmn432 remaindernear 1E-397 2E-398 -> 0E-398 -ddrmn433 remaindernear 1E-397 3E-398 -> 1E-398 Subnormal -ddrmn434 remaindernear 1E-397 4E-398 -> 2E-398 Subnormal -ddrmn435 remaindernear 1E-397 5E-398 -> 0E-398 -ddrmn436 remaindernear 1E-397 6E-398 -> -2E-398 Subnormal -ddrmn437 remaindernear 1E-397 7E-398 -> 3E-398 Subnormal -ddrmn438 remaindernear 1E-397 8E-398 -> 2E-398 Subnormal -ddrmn439 remaindernear 1E-397 9E-398 -> 1E-398 Subnormal -ddrmn440 remaindernear 1E-397 10E-398 -> 0E-398 -ddrmn441 remaindernear 1E-397 11E-398 -> -1E-398 Subnormal -ddrmn442 remaindernear 100E-397 11E-398 -> -1E-398 Subnormal -ddrmn443 remaindernear 100E-397 20E-398 -> 0E-398 -ddrmn444 remaindernear 100E-397 21E-398 -> -8E-398 Subnormal -ddrmn445 remaindernear 100E-397 30E-398 -> 1.0E-397 Subnormal - --- zero signs -ddrmn650 remaindernear 1 1 -> 0 -ddrmn651 remaindernear -1 1 -> -0 -ddrmn652 remaindernear 1 -1 -> 0 -ddrmn653 remaindernear -1 -1 -> -0 -ddrmn654 remaindernear 0 1 -> 0 -ddrmn655 remaindernear -0 1 -> -0 -ddrmn656 remaindernear 0 -1 -> 0 -ddrmn657 remaindernear -0 -1 -> -0 -ddrmn658 remaindernear 0.00 1 -> 0.00 -ddrmn659 remaindernear -0.00 1 -> -0.00 - --- Specials -ddrmn680 remaindernear Inf -Inf -> NaN Invalid_operation -ddrmn681 remaindernear Inf -1000 -> NaN Invalid_operation -ddrmn682 remaindernear Inf -1 -> NaN Invalid_operation -ddrmn683 remaindernear Inf 0 -> NaN Invalid_operation -ddrmn684 remaindernear Inf -0 -> NaN Invalid_operation -ddrmn685 remaindernear Inf 1 -> NaN Invalid_operation -ddrmn686 remaindernear Inf 1000 -> NaN Invalid_operation -ddrmn687 remaindernear Inf Inf -> NaN Invalid_operation -ddrmn688 remaindernear -1000 Inf -> -1000 -ddrmn689 remaindernear -Inf Inf -> NaN Invalid_operation -ddrmn691 remaindernear -1 Inf -> -1 -ddrmn692 remaindernear 0 Inf -> 0 -ddrmn693 remaindernear -0 Inf -> -0 -ddrmn694 remaindernear 1 Inf -> 1 -ddrmn695 remaindernear 1000 Inf -> 1000 -ddrmn696 remaindernear Inf Inf -> NaN Invalid_operation - -ddrmn700 remaindernear -Inf -Inf -> NaN Invalid_operation -ddrmn701 remaindernear -Inf -1000 -> NaN Invalid_operation -ddrmn702 remaindernear -Inf -1 -> NaN Invalid_operation -ddrmn703 remaindernear -Inf -0 -> NaN Invalid_operation -ddrmn704 remaindernear -Inf 0 -> NaN Invalid_operation -ddrmn705 remaindernear -Inf 1 -> NaN Invalid_operation -ddrmn706 remaindernear -Inf 1000 -> NaN Invalid_operation -ddrmn707 remaindernear -Inf Inf -> NaN Invalid_operation -ddrmn708 remaindernear -Inf -Inf -> NaN Invalid_operation -ddrmn709 remaindernear -1000 Inf -> -1000 -ddrmn710 remaindernear -1 -Inf -> -1 -ddrmn711 remaindernear -0 -Inf -> -0 -ddrmn712 remaindernear 0 -Inf -> 0 -ddrmn713 remaindernear 1 -Inf -> 1 -ddrmn714 remaindernear 1000 -Inf -> 1000 -ddrmn715 remaindernear Inf -Inf -> NaN Invalid_operation - -ddrmn721 remaindernear NaN -Inf -> NaN -ddrmn722 remaindernear NaN -1000 -> NaN -ddrmn723 remaindernear NaN -1 -> NaN -ddrmn724 remaindernear NaN -0 -> NaN -ddrmn725 remaindernear -NaN 0 -> -NaN -ddrmn726 remaindernear NaN 1 -> NaN -ddrmn727 remaindernear NaN 1000 -> NaN -ddrmn728 remaindernear NaN Inf -> NaN -ddrmn729 remaindernear NaN -NaN -> NaN -ddrmn730 remaindernear -Inf NaN -> NaN -ddrmn731 remaindernear -1000 NaN -> NaN -ddrmn732 remaindernear -1 NaN -> NaN -ddrmn733 remaindernear -0 -NaN -> -NaN -ddrmn734 remaindernear 0 NaN -> NaN -ddrmn735 remaindernear 1 -NaN -> -NaN -ddrmn736 remaindernear 1000 NaN -> NaN -ddrmn737 remaindernear Inf NaN -> NaN - -ddrmn741 remaindernear sNaN -Inf -> NaN Invalid_operation -ddrmn742 remaindernear sNaN -1000 -> NaN Invalid_operation -ddrmn743 remaindernear -sNaN -1 -> -NaN Invalid_operation -ddrmn744 remaindernear sNaN -0 -> NaN Invalid_operation -ddrmn745 remaindernear sNaN 0 -> NaN Invalid_operation -ddrmn746 remaindernear sNaN 1 -> NaN Invalid_operation -ddrmn747 remaindernear sNaN 1000 -> NaN Invalid_operation -ddrmn749 remaindernear sNaN NaN -> NaN Invalid_operation -ddrmn750 remaindernear sNaN sNaN -> NaN Invalid_operation -ddrmn751 remaindernear NaN sNaN -> NaN Invalid_operation -ddrmn752 remaindernear -Inf sNaN -> NaN Invalid_operation -ddrmn753 remaindernear -1000 sNaN -> NaN Invalid_operation -ddrmn754 remaindernear -1 sNaN -> NaN Invalid_operation -ddrmn755 remaindernear -0 sNaN -> NaN Invalid_operation -ddrmn756 remaindernear 0 sNaN -> NaN Invalid_operation -ddrmn757 remaindernear 1 sNaN -> NaN Invalid_operation -ddrmn758 remaindernear 1000 sNaN -> NaN Invalid_operation -ddrmn759 remaindernear Inf -sNaN -> -NaN Invalid_operation - --- propaging NaNs -ddrmn760 remaindernear NaN1 NaN7 -> NaN1 -ddrmn761 remaindernear sNaN2 NaN8 -> NaN2 Invalid_operation -ddrmn762 remaindernear NaN3 sNaN9 -> NaN9 Invalid_operation -ddrmn763 remaindernear sNaN4 sNaN10 -> NaN4 Invalid_operation -ddrmn764 remaindernear 15 NaN11 -> NaN11 -ddrmn765 remaindernear NaN6 NaN12 -> NaN6 -ddrmn766 remaindernear Inf NaN13 -> NaN13 -ddrmn767 remaindernear NaN14 -Inf -> NaN14 -ddrmn768 remaindernear 0 NaN15 -> NaN15 -ddrmn769 remaindernear NaN16 -0 -> NaN16 - --- edge cases of impossible -ddrmn770 remaindernear 1234567890123456 10 -> -4 -ddrmn771 remaindernear 1234567890123456 1 -> 0 -ddrmn772 remaindernear 1234567890123456 0.1 -> NaN Division_impossible -ddrmn773 remaindernear 1234567890123456 0.01 -> NaN Division_impossible - --- long operand checks -ddrmn801 remaindernear 12345678000 100 -> 0 -ddrmn802 remaindernear 1 12345678000 -> 1 -ddrmn803 remaindernear 1234567800 10 -> 0 -ddrmn804 remaindernear 1 1234567800 -> 1 -ddrmn805 remaindernear 1234567890 10 -> 0 -ddrmn806 remaindernear 1 1234567890 -> 1 -ddrmn807 remaindernear 1234567891 10 -> 1 -ddrmn808 remaindernear 1 1234567891 -> 1 -ddrmn809 remaindernear 12345678901 100 -> 1 -ddrmn810 remaindernear 1 12345678901 -> 1 -ddrmn811 remaindernear 1234567896 10 -> -4 -ddrmn812 remaindernear 1 1234567896 -> 1 - -ddrmn821 remaindernear 12345678000 100 -> 0 -ddrmn822 remaindernear 1 12345678000 -> 1 -ddrmn823 remaindernear 1234567800 10 -> 0 -ddrmn824 remaindernear 1 1234567800 -> 1 -ddrmn825 remaindernear 1234567890 10 -> 0 -ddrmn826 remaindernear 1 1234567890 -> 1 -ddrmn827 remaindernear 1234567891 10 -> 1 -ddrmn828 remaindernear 1 1234567891 -> 1 -ddrmn829 remaindernear 12345678901 100 -> 1 -ddrmn830 remaindernear 1 12345678901 -> 1 -ddrmn831 remaindernear 1234567896 10 -> -4 -ddrmn832 remaindernear 1 1234567896 -> 1 - --- from divideint -ddrmn840 remaindernear 100000000.0 1 -> 0.0 -ddrmn841 remaindernear 100000000.4 1 -> 0.4 -ddrmn842 remaindernear 100000000.5 1 -> 0.5 -ddrmn843 remaindernear 100000000.9 1 -> -0.1 -ddrmn844 remaindernear 100000000.999 1 -> -0.001 -ddrmn850 remaindernear 100000003 5 -> -2 -ddrmn851 remaindernear 10000003 5 -> -2 -ddrmn852 remaindernear 1000003 5 -> -2 -ddrmn853 remaindernear 100003 5 -> -2 -ddrmn854 remaindernear 10003 5 -> -2 -ddrmn855 remaindernear 1003 5 -> -2 -ddrmn856 remaindernear 103 5 -> -2 -ddrmn857 remaindernear 13 5 -> -2 -ddrmn858 remaindernear 1 5 -> 1 - --- Vladimir's cases 1234567890123456 -ddrmn860 remaindernear 123.0e1 1000000000000000 -> 1230 -ddrmn861 remaindernear 1230 1000000000000000 -> 1230 -ddrmn862 remaindernear 12.3e2 1000000000000000 -> 1230 -ddrmn863 remaindernear 1.23e3 1000000000000000 -> 1230 -ddrmn864 remaindernear 123e1 1000000000000000 -> 1230 -ddrmn870 remaindernear 123e1 1000000000000000 -> 1230 -ddrmn871 remaindernear 123e1 100000000000000 -> 1230 -ddrmn872 remaindernear 123e1 10000000000000 -> 1230 -ddrmn873 remaindernear 123e1 1000000000000 -> 1230 -ddrmn874 remaindernear 123e1 100000000000 -> 1230 -ddrmn875 remaindernear 123e1 10000000000 -> 1230 -ddrmn876 remaindernear 123e1 1000000000 -> 1230 -ddrmn877 remaindernear 123e1 100000000 -> 1230 -ddrmn878 remaindernear 1230 100000000 -> 1230 -ddrmn879 remaindernear 123e1 10000000 -> 1230 -ddrmn880 remaindernear 123e1 1000000 -> 1230 -ddrmn881 remaindernear 123e1 100000 -> 1230 -ddrmn882 remaindernear 123e1 10000 -> 1230 -ddrmn883 remaindernear 123e1 1000 -> 230 -ddrmn884 remaindernear 123e1 100 -> 30 -ddrmn885 remaindernear 123e1 10 -> 0 -ddrmn886 remaindernear 123e1 1 -> 0 - -ddrmn890 remaindernear 123e1 2000000000000000 -> 1230 -ddrmn891 remaindernear 123e1 200000000000000 -> 1230 -ddrmn892 remaindernear 123e1 20000000000000 -> 1230 -ddrmn893 remaindernear 123e1 2000000000000 -> 1230 -ddrmn894 remaindernear 123e1 200000000000 -> 1230 -ddrmn895 remaindernear 123e1 20000000000 -> 1230 -ddrmn896 remaindernear 123e1 2000000000 -> 1230 -ddrmn897 remaindernear 123e1 200000000 -> 1230 -ddrmn899 remaindernear 123e1 20000000 -> 1230 -ddrmn900 remaindernear 123e1 2000000 -> 1230 -ddrmn901 remaindernear 123e1 200000 -> 1230 -ddrmn902 remaindernear 123e1 20000 -> 1230 -ddrmn903 remaindernear 123e1 2000 -> -770 -ddrmn904 remaindernear 123e1 200 -> 30 -ddrmn905 remaindernear 123e1 20 -> -10 -ddrmn906 remaindernear 123e1 2 -> 0 - -ddrmn910 remaindernear 123e1 5000000000000000 -> 1230 -ddrmn911 remaindernear 123e1 500000000000000 -> 1230 -ddrmn912 remaindernear 123e1 50000000000000 -> 1230 -ddrmn913 remaindernear 123e1 5000000000000 -> 1230 -ddrmn914 remaindernear 123e1 500000000000 -> 1230 -ddrmn915 remaindernear 123e1 50000000000 -> 1230 -ddrmn916 remaindernear 123e1 5000000000 -> 1230 -ddrmn917 remaindernear 123e1 500000000 -> 1230 -ddrmn919 remaindernear 123e1 50000000 -> 1230 -ddrmn920 remaindernear 123e1 5000000 -> 1230 -ddrmn921 remaindernear 123e1 500000 -> 1230 -ddrmn922 remaindernear 123e1 50000 -> 1230 -ddrmn923 remaindernear 123e1 5000 -> 1230 -ddrmn924 remaindernear 123e1 500 -> 230 -ddrmn925 remaindernear 123e1 50 -> -20 -ddrmn926 remaindernear 123e1 5 -> 0 - -ddrmn930 remaindernear 123e1 9000000000000000 -> 1230 -ddrmn931 remaindernear 123e1 900000000000000 -> 1230 -ddrmn932 remaindernear 123e1 90000000000000 -> 1230 -ddrmn933 remaindernear 123e1 9000000000000 -> 1230 -ddrmn934 remaindernear 123e1 900000000000 -> 1230 -ddrmn935 remaindernear 123e1 90000000000 -> 1230 -ddrmn936 remaindernear 123e1 9000000000 -> 1230 -ddrmn937 remaindernear 123e1 900000000 -> 1230 -ddrmn939 remaindernear 123e1 90000000 -> 1230 -ddrmn940 remaindernear 123e1 9000000 -> 1230 -ddrmn941 remaindernear 123e1 900000 -> 1230 -ddrmn942 remaindernear 123e1 90000 -> 1230 -ddrmn943 remaindernear 123e1 9000 -> 1230 -ddrmn944 remaindernear 123e1 900 -> 330 -ddrmn945 remaindernear 123e1 90 -> -30 -ddrmn946 remaindernear 123e1 9 -> -3 - -ddrmn950 remaindernear 123e1 1000000000000000 -> 1230 -ddrmn961 remaindernear 123e1 2999999999999999 -> 1230 -ddrmn962 remaindernear 123e1 3999999999999999 -> 1230 -ddrmn963 remaindernear 123e1 4999999999999999 -> 1230 -ddrmn964 remaindernear 123e1 5999999999999999 -> 1230 -ddrmn965 remaindernear 123e1 6999999999999999 -> 1230 -ddrmn966 remaindernear 123e1 7999999999999999 -> 1230 -ddrmn967 remaindernear 123e1 8999999999999999 -> 1230 -ddrmn968 remaindernear 123e1 9999999999999999 -> 1230 -ddrmn969 remaindernear 123e1 9876543210987654 -> 1230 - -ddrmn980 remaindernear 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally - - --- overflow and underflow tests [from divide] -ddrmn1051 remaindernear 1e+277 1e-311 -> NaN Division_impossible -ddrmn1052 remaindernear 1e+277 -1e-311 -> NaN Division_impossible -ddrmn1053 remaindernear -1e+277 1e-311 -> NaN Division_impossible -ddrmn1054 remaindernear -1e+277 -1e-311 -> NaN Division_impossible -ddrmn1055 remaindernear 1e-277 1e+311 -> 1E-277 -ddrmn1056 remaindernear 1e-277 -1e+311 -> 1E-277 -ddrmn1057 remaindernear -1e-277 1e+311 -> -1E-277 -ddrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277 - --- destructive subtract -ddrmn1100 remainderNear 1234567890123456 1.000000000000001 -> -0.234567890123455 -ddrmn1101 remainderNear 1234567890123456 1.00000000000001 -> -0.34567890123444 -ddrmn1102 remainderNear 1234567890123456 1.0000000000001 -> -0.4567890123333 -ddrmn1103 remainderNear 1234567890123455 4.000000000000001 -> -1.308641972530864 -ddrmn1104 remainderNear 1234567890123456 4.000000000000001 -> -0.308641972530864 -ddrmn1115 remainderNear 1234567890123456 4.9999999999999 -> 0.6913578024696 -ddrmn1116 remainderNear 1234567890123456 4.99999999999999 -> -1.53086421975308 -ddrmn1117 remainderNear 1234567890123456 4.999999999999999 -> 1.246913578024691 -ddrmn1118 remainderNear 1234567890123456 5.000000000000001 -> 0.753086421975309 -ddrmn1119 remainderNear 1234567890123456 5.00000000000001 -> -1.46913578024691 -ddrmn1110 remainderNear 1234567890123456 5.0000000000001 -> 1.3086421975314 - --- Null tests -ddrmn1000 remaindernear 10 # -> NaN Invalid_operation -ddrmn1001 remaindernear # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- ddRemainderNear.decTest -- decDouble remainder-near -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- sanity checks (as base, above) +ddrmn001 remaindernear 1 1 -> 0 +ddrmn002 remaindernear 2 1 -> 0 +ddrmn003 remaindernear 1 2 -> 1 +ddrmn004 remaindernear 2 2 -> 0 +ddrmn005 remaindernear 0 1 -> 0 +ddrmn006 remaindernear 0 2 -> 0 +ddrmn007 remaindernear 1 3 -> 1 +ddrmn008 remaindernear 2 3 -> -1 +ddrmn009 remaindernear 3 3 -> 0 + +ddrmn010 remaindernear 2.4 1 -> 0.4 +ddrmn011 remaindernear 2.4 -1 -> 0.4 +ddrmn012 remaindernear -2.4 1 -> -0.4 +ddrmn013 remaindernear -2.4 -1 -> -0.4 +ddrmn014 remaindernear 2.40 1 -> 0.40 +ddrmn015 remaindernear 2.400 1 -> 0.400 +ddrmn016 remaindernear 2.4 2 -> 0.4 +ddrmn017 remaindernear 2.400 2 -> 0.400 +ddrmn018 remaindernear 2. 2 -> 0 +ddrmn019 remaindernear 20 20 -> 0 + +ddrmn020 remaindernear 187 187 -> 0 +ddrmn021 remaindernear 5 2 -> 1 +ddrmn022 remaindernear 5 2.0 -> 1.0 +ddrmn023 remaindernear 5 2.000 -> 1.000 +ddrmn024 remaindernear 5 0.200 -> 0.000 +ddrmn025 remaindernear 5 0.200 -> 0.000 + +ddrmn030 remaindernear 1 2 -> 1 +ddrmn031 remaindernear 1 4 -> 1 +ddrmn032 remaindernear 1 8 -> 1 + +ddrmn033 remaindernear 1 16 -> 1 +ddrmn034 remaindernear 1 32 -> 1 +ddrmn035 remaindernear 1 64 -> 1 +ddrmn040 remaindernear 1 -2 -> 1 +ddrmn041 remaindernear 1 -4 -> 1 +ddrmn042 remaindernear 1 -8 -> 1 +ddrmn043 remaindernear 1 -16 -> 1 +ddrmn044 remaindernear 1 -32 -> 1 +ddrmn045 remaindernear 1 -64 -> 1 +ddrmn050 remaindernear -1 2 -> -1 +ddrmn051 remaindernear -1 4 -> -1 +ddrmn052 remaindernear -1 8 -> -1 +ddrmn053 remaindernear -1 16 -> -1 +ddrmn054 remaindernear -1 32 -> -1 +ddrmn055 remaindernear -1 64 -> -1 +ddrmn060 remaindernear -1 -2 -> -1 +ddrmn061 remaindernear -1 -4 -> -1 +ddrmn062 remaindernear -1 -8 -> -1 +ddrmn063 remaindernear -1 -16 -> -1 +ddrmn064 remaindernear -1 -32 -> -1 +ddrmn065 remaindernear -1 -64 -> -1 + +ddrmn066 remaindernear 9.9 1 -> -0.1 +ddrmn067 remaindernear 99.7 1 -> -0.3 +ddrmn068 remaindernear 999999999 1 -> 0 +ddrmn069 remaindernear 999999999.4 1 -> 0.4 +ddrmn070 remaindernear 999999999.5 1 -> -0.5 +ddrmn071 remaindernear 999999999.9 1 -> -0.1 +ddrmn072 remaindernear 999999999.999 1 -> -0.001 +ddrmn073 remaindernear 999999.999999 1 -> -0.000001 +ddrmn074 remaindernear 9 1 -> 0 +ddrmn075 remaindernear 9999999999999999 1 -> 0 +ddrmn076 remaindernear 9999999999999999 2 -> -1 +ddrmn077 remaindernear 9999999999999999 3 -> 0 +ddrmn078 remaindernear 9999999999999999 4 -> -1 + +ddrmn080 remaindernear 0. 1 -> 0 +ddrmn081 remaindernear .0 1 -> 0.0 +ddrmn082 remaindernear 0.00 1 -> 0.00 +ddrmn083 remaindernear 0.00E+9 1 -> 0 +ddrmn084 remaindernear 0.00E+3 1 -> 0 +ddrmn085 remaindernear 0.00E+2 1 -> 0 +ddrmn086 remaindernear 0.00E+1 1 -> 0.0 +ddrmn087 remaindernear 0.00E+0 1 -> 0.00 +ddrmn088 remaindernear 0.00E-0 1 -> 0.00 +ddrmn089 remaindernear 0.00E-1 1 -> 0.000 +ddrmn090 remaindernear 0.00E-2 1 -> 0.0000 +ddrmn091 remaindernear 0.00E-3 1 -> 0.00000 +ddrmn092 remaindernear 0.00E-4 1 -> 0.000000 +ddrmn093 remaindernear 0.00E-5 1 -> 0E-7 +ddrmn094 remaindernear 0.00E-6 1 -> 0E-8 +ddrmn095 remaindernear 0.0000E-50 1 -> 0E-54 + +-- Various flavours of remaindernear by 0 +ddrmn101 remaindernear 0 0 -> NaN Division_undefined +ddrmn102 remaindernear 0 -0 -> NaN Division_undefined +ddrmn103 remaindernear -0 0 -> NaN Division_undefined +ddrmn104 remaindernear -0 -0 -> NaN Division_undefined +ddrmn105 remaindernear 0.0E5 0 -> NaN Division_undefined +ddrmn106 remaindernear 0.000 0 -> NaN Division_undefined +-- [Some think this next group should be Division_by_zero exception, but +-- IEEE 854 is explicit that it is Invalid operation .. for +-- remainder-near, anyway] +ddrmn107 remaindernear 0.0001 0 -> NaN Invalid_operation +ddrmn108 remaindernear 0.01 0 -> NaN Invalid_operation +ddrmn109 remaindernear 0.1 0 -> NaN Invalid_operation +ddrmn110 remaindernear 1 0 -> NaN Invalid_operation +ddrmn111 remaindernear 1 0.0 -> NaN Invalid_operation +ddrmn112 remaindernear 10 0.0 -> NaN Invalid_operation +ddrmn113 remaindernear 1E+100 0.0 -> NaN Invalid_operation +ddrmn114 remaindernear 1E+380 0 -> NaN Invalid_operation +ddrmn115 remaindernear 0.0001 -0 -> NaN Invalid_operation +ddrmn116 remaindernear 0.01 -0 -> NaN Invalid_operation +ddrmn119 remaindernear 0.1 -0 -> NaN Invalid_operation +ddrmn120 remaindernear 1 -0 -> NaN Invalid_operation +ddrmn121 remaindernear 1 -0.0 -> NaN Invalid_operation +ddrmn122 remaindernear 10 -0.0 -> NaN Invalid_operation +ddrmn123 remaindernear 1E+100 -0.0 -> NaN Invalid_operation +ddrmn124 remaindernear 1E+384 -0 -> NaN Invalid_operation +-- and zeros on left +ddrmn130 remaindernear 0 1 -> 0 +ddrmn131 remaindernear 0 -1 -> 0 +ddrmn132 remaindernear 0.0 1 -> 0.0 +ddrmn133 remaindernear 0.0 -1 -> 0.0 +ddrmn134 remaindernear -0 1 -> -0 +ddrmn135 remaindernear -0 -1 -> -0 +ddrmn136 remaindernear -0.0 1 -> -0.0 +ddrmn137 remaindernear -0.0 -1 -> -0.0 + +-- 0.5ers +ddrmn143 remaindernear 0.5 2 -> 0.5 +ddrmn144 remaindernear 0.5 2.1 -> 0.5 +ddrmn145 remaindernear 0.5 2.01 -> 0.50 +ddrmn146 remaindernear 0.5 2.001 -> 0.500 +ddrmn147 remaindernear 0.50 2 -> 0.50 +ddrmn148 remaindernear 0.50 2.01 -> 0.50 +ddrmn149 remaindernear 0.50 2.001 -> 0.500 + +-- steadies +ddrmn150 remaindernear 1 1 -> 0 +ddrmn151 remaindernear 1 2 -> 1 +ddrmn152 remaindernear 1 3 -> 1 +ddrmn153 remaindernear 1 4 -> 1 +ddrmn154 remaindernear 1 5 -> 1 +ddrmn155 remaindernear 1 6 -> 1 +ddrmn156 remaindernear 1 7 -> 1 +ddrmn157 remaindernear 1 8 -> 1 +ddrmn158 remaindernear 1 9 -> 1 +ddrmn159 remaindernear 1 10 -> 1 +ddrmn160 remaindernear 1 1 -> 0 +ddrmn161 remaindernear 2 1 -> 0 +ddrmn162 remaindernear 3 1 -> 0 +ddrmn163 remaindernear 4 1 -> 0 +ddrmn164 remaindernear 5 1 -> 0 +ddrmn165 remaindernear 6 1 -> 0 +ddrmn166 remaindernear 7 1 -> 0 +ddrmn167 remaindernear 8 1 -> 0 +ddrmn168 remaindernear 9 1 -> 0 +ddrmn169 remaindernear 10 1 -> 0 + +-- some differences from remainder +ddrmn171 remaindernear 0.4 1.020 -> 0.400 +ddrmn172 remaindernear 0.50 1.020 -> 0.500 +ddrmn173 remaindernear 0.51 1.020 -> 0.510 +ddrmn174 remaindernear 0.52 1.020 -> -0.500 +ddrmn175 remaindernear 0.6 1.020 -> -0.420 + +-- More flavours of remaindernear by 0 +ddrmn201 remaindernear 0 0 -> NaN Division_undefined +ddrmn202 remaindernear 0.0E5 0 -> NaN Division_undefined +ddrmn203 remaindernear 0.000 0 -> NaN Division_undefined +ddrmn204 remaindernear 0.0001 0 -> NaN Invalid_operation +ddrmn205 remaindernear 0.01 0 -> NaN Invalid_operation +ddrmn206 remaindernear 0.1 0 -> NaN Invalid_operation +ddrmn207 remaindernear 1 0 -> NaN Invalid_operation +ddrmn208 remaindernear 1 0.0 -> NaN Invalid_operation +ddrmn209 remaindernear 10 0.0 -> NaN Invalid_operation +ddrmn210 remaindernear 1E+100 0.0 -> NaN Invalid_operation +ddrmn211 remaindernear 1E+380 0 -> NaN Invalid_operation + +-- tests from the extended specification +ddrmn221 remaindernear 2.1 3 -> -0.9 +ddrmn222 remaindernear 10 6 -> -2 +ddrmn223 remaindernear 10 3 -> 1 +ddrmn224 remaindernear -10 3 -> -1 +ddrmn225 remaindernear 10.2 1 -> 0.2 +ddrmn226 remaindernear 10 0.3 -> 0.1 +ddrmn227 remaindernear 3.6 1.3 -> -0.3 + +-- some differences from remainder +ddrmn231 remaindernear -0.4 1.020 -> -0.400 +ddrmn232 remaindernear -0.50 1.020 -> -0.500 +ddrmn233 remaindernear -0.51 1.020 -> -0.510 +ddrmn234 remaindernear -0.52 1.020 -> 0.500 +ddrmn235 remaindernear -0.6 1.020 -> 0.420 + +-- high Xs +ddrmn240 remaindernear 1E+2 1.00 -> 0.00 + +-- ddrmn3xx are from DiagBigDecimal +ddrmn301 remaindernear 1 3 -> 1 +ddrmn302 remaindernear 5 5 -> 0 +ddrmn303 remaindernear 13 10 -> 3 +ddrmn304 remaindernear 13 50 -> 13 +ddrmn305 remaindernear 13 100 -> 13 +ddrmn306 remaindernear 13 1000 -> 13 +ddrmn307 remaindernear .13 1 -> 0.13 +ddrmn308 remaindernear 0.133 1 -> 0.133 +ddrmn309 remaindernear 0.1033 1 -> 0.1033 +ddrmn310 remaindernear 1.033 1 -> 0.033 +ddrmn311 remaindernear 10.33 1 -> 0.33 +ddrmn312 remaindernear 10.33 10 -> 0.33 +ddrmn313 remaindernear 103.3 1 -> 0.3 +ddrmn314 remaindernear 133 10 -> 3 +ddrmn315 remaindernear 1033 10 -> 3 +ddrmn316 remaindernear 1033 50 -> -17 +ddrmn317 remaindernear 101.0 3 -> -1.0 +ddrmn318 remaindernear 102.0 3 -> 0.0 +ddrmn319 remaindernear 103.0 3 -> 1.0 +ddrmn320 remaindernear 2.40 1 -> 0.40 +ddrmn321 remaindernear 2.400 1 -> 0.400 +ddrmn322 remaindernear 2.4 1 -> 0.4 +ddrmn323 remaindernear 2.4 2 -> 0.4 +ddrmn324 remaindernear 2.400 2 -> 0.400 +ddrmn325 remaindernear 1 0.3 -> 0.1 +ddrmn326 remaindernear 1 0.30 -> 0.10 +ddrmn327 remaindernear 1 0.300 -> 0.100 +ddrmn328 remaindernear 1 0.3000 -> 0.1000 +ddrmn329 remaindernear 1.0 0.3 -> 0.1 +ddrmn330 remaindernear 1.00 0.3 -> 0.10 +ddrmn331 remaindernear 1.000 0.3 -> 0.100 +ddrmn332 remaindernear 1.0000 0.3 -> 0.1000 +ddrmn333 remaindernear 0.5 2 -> 0.5 +ddrmn334 remaindernear 0.5 2.1 -> 0.5 +ddrmn335 remaindernear 0.5 2.01 -> 0.50 +ddrmn336 remaindernear 0.5 2.001 -> 0.500 +ddrmn337 remaindernear 0.50 2 -> 0.50 +ddrmn338 remaindernear 0.50 2.01 -> 0.50 +ddrmn339 remaindernear 0.50 2.001 -> 0.500 + +ddrmn340 remaindernear 0.5 0.5000001 -> -1E-7 +ddrmn341 remaindernear 0.5 0.50000001 -> -1E-8 +ddrmn342 remaindernear 0.5 0.500000001 -> -1E-9 +ddrmn343 remaindernear 0.5 0.5000000001 -> -1E-10 +ddrmn344 remaindernear 0.5 0.50000000001 -> -1E-11 +ddrmn345 remaindernear 0.5 0.4999999 -> 1E-7 +ddrmn346 remaindernear 0.5 0.49999999 -> 1E-8 +ddrmn347 remaindernear 0.5 0.499999999 -> 1E-9 +ddrmn348 remaindernear 0.5 0.4999999999 -> 1E-10 +ddrmn349 remaindernear 0.5 0.49999999999 -> 1E-11 +ddrmn350 remaindernear 0.5 0.499999999999 -> 1E-12 + +ddrmn351 remaindernear 0.03 7 -> 0.03 +ddrmn352 remaindernear 5 2 -> 1 +ddrmn353 remaindernear 4.1 2 -> 0.1 +ddrmn354 remaindernear 4.01 2 -> 0.01 +ddrmn355 remaindernear 4.001 2 -> 0.001 +ddrmn356 remaindernear 4.0001 2 -> 0.0001 +ddrmn357 remaindernear 4.00001 2 -> 0.00001 +ddrmn358 remaindernear 4.000001 2 -> 0.000001 +ddrmn359 remaindernear 4.0000001 2 -> 1E-7 + +ddrmn360 remaindernear 1.2 0.7345 -> -0.2690 +ddrmn361 remaindernear 0.8 12 -> 0.8 +ddrmn362 remaindernear 0.8 0.2 -> 0.0 +ddrmn363 remaindernear 0.8 0.3 -> -0.1 +ddrmn364 remaindernear 0.800 12 -> 0.800 +ddrmn365 remaindernear 0.800 1.7 -> 0.800 +ddrmn366 remaindernear 2.400 2 -> 0.400 + +-- round to even +ddrmn371 remaindernear 121 2 -> 1 +ddrmn372 remaindernear 122 2 -> 0 +ddrmn373 remaindernear 123 2 -> -1 +ddrmn374 remaindernear 124 2 -> 0 +ddrmn375 remaindernear 125 2 -> 1 +ddrmn376 remaindernear 126 2 -> 0 +ddrmn377 remaindernear 127 2 -> -1 + +ddrmn381 remaindernear 12345 1 -> 0 +ddrmn382 remaindernear 12345 1.0001 -> -0.2344 +ddrmn383 remaindernear 12345 1.001 -> -0.333 +ddrmn384 remaindernear 12345 1.01 -> -0.23 +ddrmn385 remaindernear 12345 1.1 -> -0.3 +ddrmn386 remaindernear 12355 4 -> -1 +ddrmn387 remaindernear 12345 4 -> 1 +ddrmn388 remaindernear 12355 4.0001 -> -1.3089 +ddrmn389 remaindernear 12345 4.0001 -> 0.6914 +ddrmn390 remaindernear 12345 4.9 -> 1.9 +ddrmn391 remaindernear 12345 4.99 -> -0.26 +ddrmn392 remaindernear 12345 4.999 -> 2.469 +ddrmn393 remaindernear 12345 4.9999 -> 0.2469 +ddrmn394 remaindernear 12345 5 -> 0 +ddrmn395 remaindernear 12345 5.0001 -> -0.2469 +ddrmn396 remaindernear 12345 5.001 -> -2.469 +ddrmn397 remaindernear 12345 5.01 -> 0.36 +ddrmn398 remaindernear 12345 5.1 -> -2.1 + +-- the nasty division-by-1 cases +ddrmn401 remaindernear 0.4 1 -> 0.4 +ddrmn402 remaindernear 0.45 1 -> 0.45 +ddrmn403 remaindernear 0.455 1 -> 0.455 +ddrmn404 remaindernear 0.4555 1 -> 0.4555 +ddrmn405 remaindernear 0.45555 1 -> 0.45555 +ddrmn406 remaindernear 0.455555 1 -> 0.455555 +ddrmn407 remaindernear 0.4555555 1 -> 0.4555555 +ddrmn408 remaindernear 0.45555555 1 -> 0.45555555 +ddrmn409 remaindernear 0.455555555 1 -> 0.455555555 +-- with spill... [412 exercises sticktab loop] +ddrmn411 remaindernear 0.5 1 -> 0.5 +ddrmn412 remaindernear 0.55 1 -> -0.45 +ddrmn413 remaindernear 0.555 1 -> -0.445 +ddrmn414 remaindernear 0.5555 1 -> -0.4445 +ddrmn415 remaindernear 0.55555 1 -> -0.44445 +ddrmn416 remaindernear 0.555555 1 -> -0.444445 +ddrmn417 remaindernear 0.5555555 1 -> -0.4444445 +ddrmn418 remaindernear 0.55555555 1 -> -0.44444445 +ddrmn419 remaindernear 0.555555555 1 -> -0.444444445 + +-- folddowns +ddrmn421 remaindernear 1E+384 1 -> NaN Division_impossible +ddrmn422 remaindernear 1E+384 1E+383 -> 0E+369 Clamped +ddrmn423 remaindernear 1E+384 2E+383 -> 0E+369 Clamped +ddrmn424 remaindernear 1E+384 3E+383 -> 1.00000000000000E+383 Clamped +ddrmn425 remaindernear 1E+384 4E+383 -> 2.00000000000000E+383 Clamped +ddrmn426 remaindernear 1E+384 5E+383 -> 0E+369 Clamped +ddrmn427 remaindernear 1E+384 6E+383 -> -2.00000000000000E+383 Clamped +ddrmn428 remaindernear 1E+384 7E+383 -> 3.00000000000000E+383 Clamped +ddrmn429 remaindernear 1E+384 8E+383 -> 2.00000000000000E+383 Clamped +ddrmn430 remaindernear 1E+384 9E+383 -> 1.00000000000000E+383 Clamped +-- tinies +ddrmn431 remaindernear 1E-397 1E-398 -> 0E-398 +ddrmn432 remaindernear 1E-397 2E-398 -> 0E-398 +ddrmn433 remaindernear 1E-397 3E-398 -> 1E-398 Subnormal +ddrmn434 remaindernear 1E-397 4E-398 -> 2E-398 Subnormal +ddrmn435 remaindernear 1E-397 5E-398 -> 0E-398 +ddrmn436 remaindernear 1E-397 6E-398 -> -2E-398 Subnormal +ddrmn437 remaindernear 1E-397 7E-398 -> 3E-398 Subnormal +ddrmn438 remaindernear 1E-397 8E-398 -> 2E-398 Subnormal +ddrmn439 remaindernear 1E-397 9E-398 -> 1E-398 Subnormal +ddrmn440 remaindernear 1E-397 10E-398 -> 0E-398 +ddrmn441 remaindernear 1E-397 11E-398 -> -1E-398 Subnormal +ddrmn442 remaindernear 100E-397 11E-398 -> -1E-398 Subnormal +ddrmn443 remaindernear 100E-397 20E-398 -> 0E-398 +ddrmn444 remaindernear 100E-397 21E-398 -> -8E-398 Subnormal +ddrmn445 remaindernear 100E-397 30E-398 -> 1.0E-397 Subnormal + +-- zero signs +ddrmn650 remaindernear 1 1 -> 0 +ddrmn651 remaindernear -1 1 -> -0 +ddrmn652 remaindernear 1 -1 -> 0 +ddrmn653 remaindernear -1 -1 -> -0 +ddrmn654 remaindernear 0 1 -> 0 +ddrmn655 remaindernear -0 1 -> -0 +ddrmn656 remaindernear 0 -1 -> 0 +ddrmn657 remaindernear -0 -1 -> -0 +ddrmn658 remaindernear 0.00 1 -> 0.00 +ddrmn659 remaindernear -0.00 1 -> -0.00 + +-- Specials +ddrmn680 remaindernear Inf -Inf -> NaN Invalid_operation +ddrmn681 remaindernear Inf -1000 -> NaN Invalid_operation +ddrmn682 remaindernear Inf -1 -> NaN Invalid_operation +ddrmn683 remaindernear Inf 0 -> NaN Invalid_operation +ddrmn684 remaindernear Inf -0 -> NaN Invalid_operation +ddrmn685 remaindernear Inf 1 -> NaN Invalid_operation +ddrmn686 remaindernear Inf 1000 -> NaN Invalid_operation +ddrmn687 remaindernear Inf Inf -> NaN Invalid_operation +ddrmn688 remaindernear -1000 Inf -> -1000 +ddrmn689 remaindernear -Inf Inf -> NaN Invalid_operation +ddrmn691 remaindernear -1 Inf -> -1 +ddrmn692 remaindernear 0 Inf -> 0 +ddrmn693 remaindernear -0 Inf -> -0 +ddrmn694 remaindernear 1 Inf -> 1 +ddrmn695 remaindernear 1000 Inf -> 1000 +ddrmn696 remaindernear Inf Inf -> NaN Invalid_operation + +ddrmn700 remaindernear -Inf -Inf -> NaN Invalid_operation +ddrmn701 remaindernear -Inf -1000 -> NaN Invalid_operation +ddrmn702 remaindernear -Inf -1 -> NaN Invalid_operation +ddrmn703 remaindernear -Inf -0 -> NaN Invalid_operation +ddrmn704 remaindernear -Inf 0 -> NaN Invalid_operation +ddrmn705 remaindernear -Inf 1 -> NaN Invalid_operation +ddrmn706 remaindernear -Inf 1000 -> NaN Invalid_operation +ddrmn707 remaindernear -Inf Inf -> NaN Invalid_operation +ddrmn708 remaindernear -Inf -Inf -> NaN Invalid_operation +ddrmn709 remaindernear -1000 Inf -> -1000 +ddrmn710 remaindernear -1 -Inf -> -1 +ddrmn711 remaindernear -0 -Inf -> -0 +ddrmn712 remaindernear 0 -Inf -> 0 +ddrmn713 remaindernear 1 -Inf -> 1 +ddrmn714 remaindernear 1000 -Inf -> 1000 +ddrmn715 remaindernear Inf -Inf -> NaN Invalid_operation + +ddrmn721 remaindernear NaN -Inf -> NaN +ddrmn722 remaindernear NaN -1000 -> NaN +ddrmn723 remaindernear NaN -1 -> NaN +ddrmn724 remaindernear NaN -0 -> NaN +ddrmn725 remaindernear -NaN 0 -> -NaN +ddrmn726 remaindernear NaN 1 -> NaN +ddrmn727 remaindernear NaN 1000 -> NaN +ddrmn728 remaindernear NaN Inf -> NaN +ddrmn729 remaindernear NaN -NaN -> NaN +ddrmn730 remaindernear -Inf NaN -> NaN +ddrmn731 remaindernear -1000 NaN -> NaN +ddrmn732 remaindernear -1 NaN -> NaN +ddrmn733 remaindernear -0 -NaN -> -NaN +ddrmn734 remaindernear 0 NaN -> NaN +ddrmn735 remaindernear 1 -NaN -> -NaN +ddrmn736 remaindernear 1000 NaN -> NaN +ddrmn737 remaindernear Inf NaN -> NaN + +ddrmn741 remaindernear sNaN -Inf -> NaN Invalid_operation +ddrmn742 remaindernear sNaN -1000 -> NaN Invalid_operation +ddrmn743 remaindernear -sNaN -1 -> -NaN Invalid_operation +ddrmn744 remaindernear sNaN -0 -> NaN Invalid_operation +ddrmn745 remaindernear sNaN 0 -> NaN Invalid_operation +ddrmn746 remaindernear sNaN 1 -> NaN Invalid_operation +ddrmn747 remaindernear sNaN 1000 -> NaN Invalid_operation +ddrmn749 remaindernear sNaN NaN -> NaN Invalid_operation +ddrmn750 remaindernear sNaN sNaN -> NaN Invalid_operation +ddrmn751 remaindernear NaN sNaN -> NaN Invalid_operation +ddrmn752 remaindernear -Inf sNaN -> NaN Invalid_operation +ddrmn753 remaindernear -1000 sNaN -> NaN Invalid_operation +ddrmn754 remaindernear -1 sNaN -> NaN Invalid_operation +ddrmn755 remaindernear -0 sNaN -> NaN Invalid_operation +ddrmn756 remaindernear 0 sNaN -> NaN Invalid_operation +ddrmn757 remaindernear 1 sNaN -> NaN Invalid_operation +ddrmn758 remaindernear 1000 sNaN -> NaN Invalid_operation +ddrmn759 remaindernear Inf -sNaN -> -NaN Invalid_operation + +-- propaging NaNs +ddrmn760 remaindernear NaN1 NaN7 -> NaN1 +ddrmn761 remaindernear sNaN2 NaN8 -> NaN2 Invalid_operation +ddrmn762 remaindernear NaN3 sNaN9 -> NaN9 Invalid_operation +ddrmn763 remaindernear sNaN4 sNaN10 -> NaN4 Invalid_operation +ddrmn764 remaindernear 15 NaN11 -> NaN11 +ddrmn765 remaindernear NaN6 NaN12 -> NaN6 +ddrmn766 remaindernear Inf NaN13 -> NaN13 +ddrmn767 remaindernear NaN14 -Inf -> NaN14 +ddrmn768 remaindernear 0 NaN15 -> NaN15 +ddrmn769 remaindernear NaN16 -0 -> NaN16 + +-- edge cases of impossible +ddrmn770 remaindernear 1234567890123456 10 -> -4 +ddrmn771 remaindernear 1234567890123456 1 -> 0 +ddrmn772 remaindernear 1234567890123456 0.1 -> NaN Division_impossible +ddrmn773 remaindernear 1234567890123456 0.01 -> NaN Division_impossible + +-- long operand checks +ddrmn801 remaindernear 12345678000 100 -> 0 +ddrmn802 remaindernear 1 12345678000 -> 1 +ddrmn803 remaindernear 1234567800 10 -> 0 +ddrmn804 remaindernear 1 1234567800 -> 1 +ddrmn805 remaindernear 1234567890 10 -> 0 +ddrmn806 remaindernear 1 1234567890 -> 1 +ddrmn807 remaindernear 1234567891 10 -> 1 +ddrmn808 remaindernear 1 1234567891 -> 1 +ddrmn809 remaindernear 12345678901 100 -> 1 +ddrmn810 remaindernear 1 12345678901 -> 1 +ddrmn811 remaindernear 1234567896 10 -> -4 +ddrmn812 remaindernear 1 1234567896 -> 1 + +ddrmn821 remaindernear 12345678000 100 -> 0 +ddrmn822 remaindernear 1 12345678000 -> 1 +ddrmn823 remaindernear 1234567800 10 -> 0 +ddrmn824 remaindernear 1 1234567800 -> 1 +ddrmn825 remaindernear 1234567890 10 -> 0 +ddrmn826 remaindernear 1 1234567890 -> 1 +ddrmn827 remaindernear 1234567891 10 -> 1 +ddrmn828 remaindernear 1 1234567891 -> 1 +ddrmn829 remaindernear 12345678901 100 -> 1 +ddrmn830 remaindernear 1 12345678901 -> 1 +ddrmn831 remaindernear 1234567896 10 -> -4 +ddrmn832 remaindernear 1 1234567896 -> 1 + +-- from divideint +ddrmn840 remaindernear 100000000.0 1 -> 0.0 +ddrmn841 remaindernear 100000000.4 1 -> 0.4 +ddrmn842 remaindernear 100000000.5 1 -> 0.5 +ddrmn843 remaindernear 100000000.9 1 -> -0.1 +ddrmn844 remaindernear 100000000.999 1 -> -0.001 +ddrmn850 remaindernear 100000003 5 -> -2 +ddrmn851 remaindernear 10000003 5 -> -2 +ddrmn852 remaindernear 1000003 5 -> -2 +ddrmn853 remaindernear 100003 5 -> -2 +ddrmn854 remaindernear 10003 5 -> -2 +ddrmn855 remaindernear 1003 5 -> -2 +ddrmn856 remaindernear 103 5 -> -2 +ddrmn857 remaindernear 13 5 -> -2 +ddrmn858 remaindernear 1 5 -> 1 + +-- Vladimir's cases 1234567890123456 +ddrmn860 remaindernear 123.0e1 1000000000000000 -> 1230 +ddrmn861 remaindernear 1230 1000000000000000 -> 1230 +ddrmn862 remaindernear 12.3e2 1000000000000000 -> 1230 +ddrmn863 remaindernear 1.23e3 1000000000000000 -> 1230 +ddrmn864 remaindernear 123e1 1000000000000000 -> 1230 +ddrmn870 remaindernear 123e1 1000000000000000 -> 1230 +ddrmn871 remaindernear 123e1 100000000000000 -> 1230 +ddrmn872 remaindernear 123e1 10000000000000 -> 1230 +ddrmn873 remaindernear 123e1 1000000000000 -> 1230 +ddrmn874 remaindernear 123e1 100000000000 -> 1230 +ddrmn875 remaindernear 123e1 10000000000 -> 1230 +ddrmn876 remaindernear 123e1 1000000000 -> 1230 +ddrmn877 remaindernear 123e1 100000000 -> 1230 +ddrmn878 remaindernear 1230 100000000 -> 1230 +ddrmn879 remaindernear 123e1 10000000 -> 1230 +ddrmn880 remaindernear 123e1 1000000 -> 1230 +ddrmn881 remaindernear 123e1 100000 -> 1230 +ddrmn882 remaindernear 123e1 10000 -> 1230 +ddrmn883 remaindernear 123e1 1000 -> 230 +ddrmn884 remaindernear 123e1 100 -> 30 +ddrmn885 remaindernear 123e1 10 -> 0 +ddrmn886 remaindernear 123e1 1 -> 0 + +ddrmn890 remaindernear 123e1 2000000000000000 -> 1230 +ddrmn891 remaindernear 123e1 200000000000000 -> 1230 +ddrmn892 remaindernear 123e1 20000000000000 -> 1230 +ddrmn893 remaindernear 123e1 2000000000000 -> 1230 +ddrmn894 remaindernear 123e1 200000000000 -> 1230 +ddrmn895 remaindernear 123e1 20000000000 -> 1230 +ddrmn896 remaindernear 123e1 2000000000 -> 1230 +ddrmn897 remaindernear 123e1 200000000 -> 1230 +ddrmn899 remaindernear 123e1 20000000 -> 1230 +ddrmn900 remaindernear 123e1 2000000 -> 1230 +ddrmn901 remaindernear 123e1 200000 -> 1230 +ddrmn902 remaindernear 123e1 20000 -> 1230 +ddrmn903 remaindernear 123e1 2000 -> -770 +ddrmn904 remaindernear 123e1 200 -> 30 +ddrmn905 remaindernear 123e1 20 -> -10 +ddrmn906 remaindernear 123e1 2 -> 0 + +ddrmn910 remaindernear 123e1 5000000000000000 -> 1230 +ddrmn911 remaindernear 123e1 500000000000000 -> 1230 +ddrmn912 remaindernear 123e1 50000000000000 -> 1230 +ddrmn913 remaindernear 123e1 5000000000000 -> 1230 +ddrmn914 remaindernear 123e1 500000000000 -> 1230 +ddrmn915 remaindernear 123e1 50000000000 -> 1230 +ddrmn916 remaindernear 123e1 5000000000 -> 1230 +ddrmn917 remaindernear 123e1 500000000 -> 1230 +ddrmn919 remaindernear 123e1 50000000 -> 1230 +ddrmn920 remaindernear 123e1 5000000 -> 1230 +ddrmn921 remaindernear 123e1 500000 -> 1230 +ddrmn922 remaindernear 123e1 50000 -> 1230 +ddrmn923 remaindernear 123e1 5000 -> 1230 +ddrmn924 remaindernear 123e1 500 -> 230 +ddrmn925 remaindernear 123e1 50 -> -20 +ddrmn926 remaindernear 123e1 5 -> 0 + +ddrmn930 remaindernear 123e1 9000000000000000 -> 1230 +ddrmn931 remaindernear 123e1 900000000000000 -> 1230 +ddrmn932 remaindernear 123e1 90000000000000 -> 1230 +ddrmn933 remaindernear 123e1 9000000000000 -> 1230 +ddrmn934 remaindernear 123e1 900000000000 -> 1230 +ddrmn935 remaindernear 123e1 90000000000 -> 1230 +ddrmn936 remaindernear 123e1 9000000000 -> 1230 +ddrmn937 remaindernear 123e1 900000000 -> 1230 +ddrmn939 remaindernear 123e1 90000000 -> 1230 +ddrmn940 remaindernear 123e1 9000000 -> 1230 +ddrmn941 remaindernear 123e1 900000 -> 1230 +ddrmn942 remaindernear 123e1 90000 -> 1230 +ddrmn943 remaindernear 123e1 9000 -> 1230 +ddrmn944 remaindernear 123e1 900 -> 330 +ddrmn945 remaindernear 123e1 90 -> -30 +ddrmn946 remaindernear 123e1 9 -> -3 + +ddrmn950 remaindernear 123e1 1000000000000000 -> 1230 +ddrmn961 remaindernear 123e1 2999999999999999 -> 1230 +ddrmn962 remaindernear 123e1 3999999999999999 -> 1230 +ddrmn963 remaindernear 123e1 4999999999999999 -> 1230 +ddrmn964 remaindernear 123e1 5999999999999999 -> 1230 +ddrmn965 remaindernear 123e1 6999999999999999 -> 1230 +ddrmn966 remaindernear 123e1 7999999999999999 -> 1230 +ddrmn967 remaindernear 123e1 8999999999999999 -> 1230 +ddrmn968 remaindernear 123e1 9999999999999999 -> 1230 +ddrmn969 remaindernear 123e1 9876543210987654 -> 1230 + +ddrmn980 remaindernear 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally + + +-- overflow and underflow tests [from divide] +ddrmn1051 remaindernear 1e+277 1e-311 -> NaN Division_impossible +ddrmn1052 remaindernear 1e+277 -1e-311 -> NaN Division_impossible +ddrmn1053 remaindernear -1e+277 1e-311 -> NaN Division_impossible +ddrmn1054 remaindernear -1e+277 -1e-311 -> NaN Division_impossible +ddrmn1055 remaindernear 1e-277 1e+311 -> 1E-277 +ddrmn1056 remaindernear 1e-277 -1e+311 -> 1E-277 +ddrmn1057 remaindernear -1e-277 1e+311 -> -1E-277 +ddrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277 + +-- destructive subtract +ddrmn1100 remainderNear 1234567890123456 1.000000000000001 -> -0.234567890123455 +ddrmn1101 remainderNear 1234567890123456 1.00000000000001 -> -0.34567890123444 +ddrmn1102 remainderNear 1234567890123456 1.0000000000001 -> -0.4567890123333 +ddrmn1103 remainderNear 1234567890123455 4.000000000000001 -> -1.308641972530864 +ddrmn1104 remainderNear 1234567890123456 4.000000000000001 -> -0.308641972530864 +ddrmn1115 remainderNear 1234567890123456 4.9999999999999 -> 0.6913578024696 +ddrmn1116 remainderNear 1234567890123456 4.99999999999999 -> -1.53086421975308 +ddrmn1117 remainderNear 1234567890123456 4.999999999999999 -> 1.246913578024691 +ddrmn1118 remainderNear 1234567890123456 5.000000000000001 -> 0.753086421975309 +ddrmn1119 remainderNear 1234567890123456 5.00000000000001 -> -1.46913578024691 +ddrmn1110 remainderNear 1234567890123456 5.0000000000001 -> 1.3086421975314 + +-- Null tests +ddrmn1000 remaindernear 10 # -> NaN Invalid_operation +ddrmn1001 remaindernear # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/ddRotate.decTest b/Lib/test/decimaltestdata/ddRotate.decTest index 87eeb1c..8b0fe26 100644 --- a/Lib/test/decimaltestdata/ddRotate.decTest +++ b/Lib/test/decimaltestdata/ddRotate.decTest @@ -1,262 +1,262 @@ ------------------------------------------------------------------------- --- ddRotate.decTest -- rotate a decDouble coefficient left or right -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check -ddrot001 rotate 0 0 -> 0 -ddrot002 rotate 0 2 -> 0 -ddrot003 rotate 1 2 -> 100 -ddrot004 rotate 1 15 -> 1000000000000000 -ddrot005 rotate 1 16 -> 1 -ddrot006 rotate 1 -1 -> 1000000000000000 -ddrot007 rotate 0 -2 -> 0 -ddrot008 rotate 1234567890123456 -1 -> 6123456789012345 -ddrot009 rotate 1234567890123456 -15 -> 2345678901234561 -ddrot010 rotate 1234567890123456 -16 -> 1234567890123456 -ddrot011 rotate 9934567890123456 -15 -> 9345678901234569 -ddrot012 rotate 9934567890123456 -16 -> 9934567890123456 - --- rhs must be an integer -ddrot015 rotate 1 1.5 -> NaN Invalid_operation -ddrot016 rotate 1 1.0 -> NaN Invalid_operation -ddrot017 rotate 1 0.1 -> NaN Invalid_operation -ddrot018 rotate 1 0.0 -> NaN Invalid_operation -ddrot019 rotate 1 1E+1 -> NaN Invalid_operation -ddrot020 rotate 1 1E+99 -> NaN Invalid_operation -ddrot021 rotate 1 Inf -> NaN Invalid_operation -ddrot022 rotate 1 -Inf -> NaN Invalid_operation --- and |rhs| <= precision -ddrot025 rotate 1 -1000 -> NaN Invalid_operation -ddrot026 rotate 1 -17 -> NaN Invalid_operation -ddrot027 rotate 1 17 -> NaN Invalid_operation -ddrot028 rotate 1 1000 -> NaN Invalid_operation - --- full pattern -ddrot030 rotate 1234567890123456 -16 -> 1234567890123456 -ddrot031 rotate 1234567890123456 -15 -> 2345678901234561 -ddrot032 rotate 1234567890123456 -14 -> 3456789012345612 -ddrot033 rotate 1234567890123456 -13 -> 4567890123456123 -ddrot034 rotate 1234567890123456 -12 -> 5678901234561234 -ddrot035 rotate 1234567890123456 -11 -> 6789012345612345 -ddrot036 rotate 1234567890123456 -10 -> 7890123456123456 -ddrot037 rotate 1234567890123456 -9 -> 8901234561234567 -ddrot038 rotate 1234567890123456 -8 -> 9012345612345678 -ddrot039 rotate 1234567890123456 -7 -> 123456123456789 -ddrot040 rotate 1234567890123456 -6 -> 1234561234567890 -ddrot041 rotate 1234567890123456 -5 -> 2345612345678901 -ddrot042 rotate 1234567890123456 -4 -> 3456123456789012 -ddrot043 rotate 1234567890123456 -3 -> 4561234567890123 -ddrot044 rotate 1234567890123456 -2 -> 5612345678901234 -ddrot045 rotate 1234567890123456 -1 -> 6123456789012345 -ddrot046 rotate 1234567890123456 -0 -> 1234567890123456 - -ddrot047 rotate 1234567890123456 +0 -> 1234567890123456 -ddrot048 rotate 1234567890123456 +1 -> 2345678901234561 -ddrot049 rotate 1234567890123456 +2 -> 3456789012345612 -ddrot050 rotate 1234567890123456 +3 -> 4567890123456123 -ddrot051 rotate 1234567890123456 +4 -> 5678901234561234 -ddrot052 rotate 1234567890123456 +5 -> 6789012345612345 -ddrot053 rotate 1234567890123456 +6 -> 7890123456123456 -ddrot054 rotate 1234567890123456 +7 -> 8901234561234567 -ddrot055 rotate 1234567890123456 +8 -> 9012345612345678 -ddrot056 rotate 1234567890123456 +9 -> 123456123456789 -ddrot057 rotate 1234567890123456 +10 -> 1234561234567890 -ddrot058 rotate 1234567890123456 +11 -> 2345612345678901 -ddrot059 rotate 1234567890123456 +12 -> 3456123456789012 -ddrot060 rotate 1234567890123456 +13 -> 4561234567890123 -ddrot061 rotate 1234567890123456 +14 -> 5612345678901234 -ddrot062 rotate 1234567890123456 +15 -> 6123456789012345 -ddrot063 rotate 1234567890123456 +16 -> 1234567890123456 - --- zeros -ddrot070 rotate 0E-10 +9 -> 0E-10 -ddrot071 rotate 0E-10 -9 -> 0E-10 -ddrot072 rotate 0.000 +9 -> 0.000 -ddrot073 rotate 0.000 -9 -> 0.000 -ddrot074 rotate 0E+10 +9 -> 0E+10 -ddrot075 rotate 0E+10 -9 -> 0E+10 -ddrot076 rotate -0E-10 +9 -> -0E-10 -ddrot077 rotate -0E-10 -9 -> -0E-10 -ddrot078 rotate -0.000 +9 -> -0.000 -ddrot079 rotate -0.000 -9 -> -0.000 -ddrot080 rotate -0E+10 +9 -> -0E+10 -ddrot081 rotate -0E+10 -9 -> -0E+10 - --- Nmax, Nmin, Ntiny -ddrot141 rotate 9.999999999999999E+384 -1 -> 9.999999999999999E+384 -ddrot142 rotate 9.999999999999999E+384 -15 -> 9.999999999999999E+384 -ddrot143 rotate 9.999999999999999E+384 1 -> 9.999999999999999E+384 -ddrot144 rotate 9.999999999999999E+384 15 -> 9.999999999999999E+384 -ddrot145 rotate 1E-383 -1 -> 1.000000000000000E-368 -ddrot146 rotate 1E-383 -15 -> 1.0E-382 -ddrot147 rotate 1E-383 1 -> 1.0E-382 -ddrot148 rotate 1E-383 15 -> 1.000000000000000E-368 -ddrot151 rotate 1.000000000000000E-383 -1 -> 1.00000000000000E-384 -ddrot152 rotate 1.000000000000000E-383 -15 -> 1E-398 -ddrot153 rotate 1.000000000000000E-383 1 -> 1E-398 -ddrot154 rotate 1.000000000000000E-383 15 -> 1.00000000000000E-384 -ddrot155 rotate 9.000000000000000E-383 -1 -> 9.00000000000000E-384 -ddrot156 rotate 9.000000000000000E-383 -15 -> 9E-398 -ddrot157 rotate 9.000000000000000E-383 1 -> 9E-398 -ddrot158 rotate 9.000000000000000E-383 15 -> 9.00000000000000E-384 -ddrot160 rotate 1E-398 -1 -> 1.000000000000000E-383 -ddrot161 rotate 1E-398 -15 -> 1.0E-397 -ddrot162 rotate 1E-398 1 -> 1.0E-397 -ddrot163 rotate 1E-398 15 -> 1.000000000000000E-383 --- negatives -ddrot171 rotate -9.999999999999999E+384 -1 -> -9.999999999999999E+384 -ddrot172 rotate -9.999999999999999E+384 -15 -> -9.999999999999999E+384 -ddrot173 rotate -9.999999999999999E+384 1 -> -9.999999999999999E+384 -ddrot174 rotate -9.999999999999999E+384 15 -> -9.999999999999999E+384 -ddrot175 rotate -1E-383 -1 -> -1.000000000000000E-368 -ddrot176 rotate -1E-383 -15 -> -1.0E-382 -ddrot177 rotate -1E-383 1 -> -1.0E-382 -ddrot178 rotate -1E-383 15 -> -1.000000000000000E-368 -ddrot181 rotate -1.000000000000000E-383 -1 -> -1.00000000000000E-384 -ddrot182 rotate -1.000000000000000E-383 -15 -> -1E-398 -ddrot183 rotate -1.000000000000000E-383 1 -> -1E-398 -ddrot184 rotate -1.000000000000000E-383 15 -> -1.00000000000000E-384 -ddrot185 rotate -9.000000000000000E-383 -1 -> -9.00000000000000E-384 -ddrot186 rotate -9.000000000000000E-383 -15 -> -9E-398 -ddrot187 rotate -9.000000000000000E-383 1 -> -9E-398 -ddrot188 rotate -9.000000000000000E-383 15 -> -9.00000000000000E-384 -ddrot190 rotate -1E-398 -1 -> -1.000000000000000E-383 -ddrot191 rotate -1E-398 -15 -> -1.0E-397 -ddrot192 rotate -1E-398 1 -> -1.0E-397 -ddrot193 rotate -1E-398 15 -> -1.000000000000000E-383 - --- more negatives (of sanities) -ddrot201 rotate -0 0 -> -0 -ddrot202 rotate -0 2 -> -0 -ddrot203 rotate -1 2 -> -100 -ddrot204 rotate -1 15 -> -1000000000000000 -ddrot205 rotate -1 16 -> -1 -ddrot206 rotate -1 -1 -> -1000000000000000 -ddrot207 rotate -0 -2 -> -0 -ddrot208 rotate -1234567890123456 -1 -> -6123456789012345 -ddrot209 rotate -1234567890123456 -15 -> -2345678901234561 -ddrot210 rotate -1234567890123456 -16 -> -1234567890123456 -ddrot211 rotate -9934567890123456 -15 -> -9345678901234569 -ddrot212 rotate -9934567890123456 -16 -> -9934567890123456 - - --- Specials; NaNs are handled as usual -ddrot781 rotate -Inf -8 -> -Infinity -ddrot782 rotate -Inf -1 -> -Infinity -ddrot783 rotate -Inf -0 -> -Infinity -ddrot784 rotate -Inf 0 -> -Infinity -ddrot785 rotate -Inf 1 -> -Infinity -ddrot786 rotate -Inf 8 -> -Infinity -ddrot787 rotate -1000 -Inf -> NaN Invalid_operation -ddrot788 rotate -Inf -Inf -> NaN Invalid_operation -ddrot789 rotate -1 -Inf -> NaN Invalid_operation -ddrot790 rotate -0 -Inf -> NaN Invalid_operation -ddrot791 rotate 0 -Inf -> NaN Invalid_operation -ddrot792 rotate 1 -Inf -> NaN Invalid_operation -ddrot793 rotate 1000 -Inf -> NaN Invalid_operation -ddrot794 rotate Inf -Inf -> NaN Invalid_operation - -ddrot800 rotate Inf -Inf -> NaN Invalid_operation -ddrot801 rotate Inf -8 -> Infinity -ddrot802 rotate Inf -1 -> Infinity -ddrot803 rotate Inf -0 -> Infinity -ddrot804 rotate Inf 0 -> Infinity -ddrot805 rotate Inf 1 -> Infinity -ddrot806 rotate Inf 8 -> Infinity -ddrot807 rotate Inf Inf -> NaN Invalid_operation -ddrot808 rotate -1000 Inf -> NaN Invalid_operation -ddrot809 rotate -Inf Inf -> NaN Invalid_operation -ddrot810 rotate -1 Inf -> NaN Invalid_operation -ddrot811 rotate -0 Inf -> NaN Invalid_operation -ddrot812 rotate 0 Inf -> NaN Invalid_operation -ddrot813 rotate 1 Inf -> NaN Invalid_operation -ddrot814 rotate 1000 Inf -> NaN Invalid_operation -ddrot815 rotate Inf Inf -> NaN Invalid_operation - -ddrot821 rotate NaN -Inf -> NaN -ddrot822 rotate NaN -1000 -> NaN -ddrot823 rotate NaN -1 -> NaN -ddrot824 rotate NaN -0 -> NaN -ddrot825 rotate NaN 0 -> NaN -ddrot826 rotate NaN 1 -> NaN -ddrot827 rotate NaN 1000 -> NaN -ddrot828 rotate NaN Inf -> NaN -ddrot829 rotate NaN NaN -> NaN -ddrot830 rotate -Inf NaN -> NaN -ddrot831 rotate -1000 NaN -> NaN -ddrot832 rotate -1 NaN -> NaN -ddrot833 rotate -0 NaN -> NaN -ddrot834 rotate 0 NaN -> NaN -ddrot835 rotate 1 NaN -> NaN -ddrot836 rotate 1000 NaN -> NaN -ddrot837 rotate Inf NaN -> NaN - -ddrot841 rotate sNaN -Inf -> NaN Invalid_operation -ddrot842 rotate sNaN -1000 -> NaN Invalid_operation -ddrot843 rotate sNaN -1 -> NaN Invalid_operation -ddrot844 rotate sNaN -0 -> NaN Invalid_operation -ddrot845 rotate sNaN 0 -> NaN Invalid_operation -ddrot846 rotate sNaN 1 -> NaN Invalid_operation -ddrot847 rotate sNaN 1000 -> NaN Invalid_operation -ddrot848 rotate sNaN NaN -> NaN Invalid_operation -ddrot849 rotate sNaN sNaN -> NaN Invalid_operation -ddrot850 rotate NaN sNaN -> NaN Invalid_operation -ddrot851 rotate -Inf sNaN -> NaN Invalid_operation -ddrot852 rotate -1000 sNaN -> NaN Invalid_operation -ddrot853 rotate -1 sNaN -> NaN Invalid_operation -ddrot854 rotate -0 sNaN -> NaN Invalid_operation -ddrot855 rotate 0 sNaN -> NaN Invalid_operation -ddrot856 rotate 1 sNaN -> NaN Invalid_operation -ddrot857 rotate 1000 sNaN -> NaN Invalid_operation -ddrot858 rotate Inf sNaN -> NaN Invalid_operation -ddrot859 rotate NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddrot861 rotate NaN1 -Inf -> NaN1 -ddrot862 rotate +NaN2 -1000 -> NaN2 -ddrot863 rotate NaN3 1000 -> NaN3 -ddrot864 rotate NaN4 Inf -> NaN4 -ddrot865 rotate NaN5 +NaN6 -> NaN5 -ddrot866 rotate -Inf NaN7 -> NaN7 -ddrot867 rotate -1000 NaN8 -> NaN8 -ddrot868 rotate 1000 NaN9 -> NaN9 -ddrot869 rotate Inf +NaN10 -> NaN10 -ddrot871 rotate sNaN11 -Inf -> NaN11 Invalid_operation -ddrot872 rotate sNaN12 -1000 -> NaN12 Invalid_operation -ddrot873 rotate sNaN13 1000 -> NaN13 Invalid_operation -ddrot874 rotate sNaN14 NaN17 -> NaN14 Invalid_operation -ddrot875 rotate sNaN15 sNaN18 -> NaN15 Invalid_operation -ddrot876 rotate NaN16 sNaN19 -> NaN19 Invalid_operation -ddrot877 rotate -Inf +sNaN20 -> NaN20 Invalid_operation -ddrot878 rotate -1000 sNaN21 -> NaN21 Invalid_operation -ddrot879 rotate 1000 sNaN22 -> NaN22 Invalid_operation -ddrot880 rotate Inf sNaN23 -> NaN23 Invalid_operation -ddrot881 rotate +NaN25 +sNaN24 -> NaN24 Invalid_operation -ddrot882 rotate -NaN26 NaN28 -> -NaN26 -ddrot883 rotate -sNaN27 sNaN29 -> -NaN27 Invalid_operation -ddrot884 rotate 1000 -NaN30 -> -NaN30 -ddrot885 rotate 1000 -sNaN31 -> -NaN31 Invalid_operation +------------------------------------------------------------------------ +-- ddRotate.decTest -- rotate a decDouble coefficient left or right -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check +ddrot001 rotate 0 0 -> 0 +ddrot002 rotate 0 2 -> 0 +ddrot003 rotate 1 2 -> 100 +ddrot004 rotate 1 15 -> 1000000000000000 +ddrot005 rotate 1 16 -> 1 +ddrot006 rotate 1 -1 -> 1000000000000000 +ddrot007 rotate 0 -2 -> 0 +ddrot008 rotate 1234567890123456 -1 -> 6123456789012345 +ddrot009 rotate 1234567890123456 -15 -> 2345678901234561 +ddrot010 rotate 1234567890123456 -16 -> 1234567890123456 +ddrot011 rotate 9934567890123456 -15 -> 9345678901234569 +ddrot012 rotate 9934567890123456 -16 -> 9934567890123456 + +-- rhs must be an integer +ddrot015 rotate 1 1.5 -> NaN Invalid_operation +ddrot016 rotate 1 1.0 -> NaN Invalid_operation +ddrot017 rotate 1 0.1 -> NaN Invalid_operation +ddrot018 rotate 1 0.0 -> NaN Invalid_operation +ddrot019 rotate 1 1E+1 -> NaN Invalid_operation +ddrot020 rotate 1 1E+99 -> NaN Invalid_operation +ddrot021 rotate 1 Inf -> NaN Invalid_operation +ddrot022 rotate 1 -Inf -> NaN Invalid_operation +-- and |rhs| <= precision +ddrot025 rotate 1 -1000 -> NaN Invalid_operation +ddrot026 rotate 1 -17 -> NaN Invalid_operation +ddrot027 rotate 1 17 -> NaN Invalid_operation +ddrot028 rotate 1 1000 -> NaN Invalid_operation + +-- full pattern +ddrot030 rotate 1234567890123456 -16 -> 1234567890123456 +ddrot031 rotate 1234567890123456 -15 -> 2345678901234561 +ddrot032 rotate 1234567890123456 -14 -> 3456789012345612 +ddrot033 rotate 1234567890123456 -13 -> 4567890123456123 +ddrot034 rotate 1234567890123456 -12 -> 5678901234561234 +ddrot035 rotate 1234567890123456 -11 -> 6789012345612345 +ddrot036 rotate 1234567890123456 -10 -> 7890123456123456 +ddrot037 rotate 1234567890123456 -9 -> 8901234561234567 +ddrot038 rotate 1234567890123456 -8 -> 9012345612345678 +ddrot039 rotate 1234567890123456 -7 -> 123456123456789 +ddrot040 rotate 1234567890123456 -6 -> 1234561234567890 +ddrot041 rotate 1234567890123456 -5 -> 2345612345678901 +ddrot042 rotate 1234567890123456 -4 -> 3456123456789012 +ddrot043 rotate 1234567890123456 -3 -> 4561234567890123 +ddrot044 rotate 1234567890123456 -2 -> 5612345678901234 +ddrot045 rotate 1234567890123456 -1 -> 6123456789012345 +ddrot046 rotate 1234567890123456 -0 -> 1234567890123456 + +ddrot047 rotate 1234567890123456 +0 -> 1234567890123456 +ddrot048 rotate 1234567890123456 +1 -> 2345678901234561 +ddrot049 rotate 1234567890123456 +2 -> 3456789012345612 +ddrot050 rotate 1234567890123456 +3 -> 4567890123456123 +ddrot051 rotate 1234567890123456 +4 -> 5678901234561234 +ddrot052 rotate 1234567890123456 +5 -> 6789012345612345 +ddrot053 rotate 1234567890123456 +6 -> 7890123456123456 +ddrot054 rotate 1234567890123456 +7 -> 8901234561234567 +ddrot055 rotate 1234567890123456 +8 -> 9012345612345678 +ddrot056 rotate 1234567890123456 +9 -> 123456123456789 +ddrot057 rotate 1234567890123456 +10 -> 1234561234567890 +ddrot058 rotate 1234567890123456 +11 -> 2345612345678901 +ddrot059 rotate 1234567890123456 +12 -> 3456123456789012 +ddrot060 rotate 1234567890123456 +13 -> 4561234567890123 +ddrot061 rotate 1234567890123456 +14 -> 5612345678901234 +ddrot062 rotate 1234567890123456 +15 -> 6123456789012345 +ddrot063 rotate 1234567890123456 +16 -> 1234567890123456 + +-- zeros +ddrot070 rotate 0E-10 +9 -> 0E-10 +ddrot071 rotate 0E-10 -9 -> 0E-10 +ddrot072 rotate 0.000 +9 -> 0.000 +ddrot073 rotate 0.000 -9 -> 0.000 +ddrot074 rotate 0E+10 +9 -> 0E+10 +ddrot075 rotate 0E+10 -9 -> 0E+10 +ddrot076 rotate -0E-10 +9 -> -0E-10 +ddrot077 rotate -0E-10 -9 -> -0E-10 +ddrot078 rotate -0.000 +9 -> -0.000 +ddrot079 rotate -0.000 -9 -> -0.000 +ddrot080 rotate -0E+10 +9 -> -0E+10 +ddrot081 rotate -0E+10 -9 -> -0E+10 + +-- Nmax, Nmin, Ntiny +ddrot141 rotate 9.999999999999999E+384 -1 -> 9.999999999999999E+384 +ddrot142 rotate 9.999999999999999E+384 -15 -> 9.999999999999999E+384 +ddrot143 rotate 9.999999999999999E+384 1 -> 9.999999999999999E+384 +ddrot144 rotate 9.999999999999999E+384 15 -> 9.999999999999999E+384 +ddrot145 rotate 1E-383 -1 -> 1.000000000000000E-368 +ddrot146 rotate 1E-383 -15 -> 1.0E-382 +ddrot147 rotate 1E-383 1 -> 1.0E-382 +ddrot148 rotate 1E-383 15 -> 1.000000000000000E-368 +ddrot151 rotate 1.000000000000000E-383 -1 -> 1.00000000000000E-384 +ddrot152 rotate 1.000000000000000E-383 -15 -> 1E-398 +ddrot153 rotate 1.000000000000000E-383 1 -> 1E-398 +ddrot154 rotate 1.000000000000000E-383 15 -> 1.00000000000000E-384 +ddrot155 rotate 9.000000000000000E-383 -1 -> 9.00000000000000E-384 +ddrot156 rotate 9.000000000000000E-383 -15 -> 9E-398 +ddrot157 rotate 9.000000000000000E-383 1 -> 9E-398 +ddrot158 rotate 9.000000000000000E-383 15 -> 9.00000000000000E-384 +ddrot160 rotate 1E-398 -1 -> 1.000000000000000E-383 +ddrot161 rotate 1E-398 -15 -> 1.0E-397 +ddrot162 rotate 1E-398 1 -> 1.0E-397 +ddrot163 rotate 1E-398 15 -> 1.000000000000000E-383 +-- negatives +ddrot171 rotate -9.999999999999999E+384 -1 -> -9.999999999999999E+384 +ddrot172 rotate -9.999999999999999E+384 -15 -> -9.999999999999999E+384 +ddrot173 rotate -9.999999999999999E+384 1 -> -9.999999999999999E+384 +ddrot174 rotate -9.999999999999999E+384 15 -> -9.999999999999999E+384 +ddrot175 rotate -1E-383 -1 -> -1.000000000000000E-368 +ddrot176 rotate -1E-383 -15 -> -1.0E-382 +ddrot177 rotate -1E-383 1 -> -1.0E-382 +ddrot178 rotate -1E-383 15 -> -1.000000000000000E-368 +ddrot181 rotate -1.000000000000000E-383 -1 -> -1.00000000000000E-384 +ddrot182 rotate -1.000000000000000E-383 -15 -> -1E-398 +ddrot183 rotate -1.000000000000000E-383 1 -> -1E-398 +ddrot184 rotate -1.000000000000000E-383 15 -> -1.00000000000000E-384 +ddrot185 rotate -9.000000000000000E-383 -1 -> -9.00000000000000E-384 +ddrot186 rotate -9.000000000000000E-383 -15 -> -9E-398 +ddrot187 rotate -9.000000000000000E-383 1 -> -9E-398 +ddrot188 rotate -9.000000000000000E-383 15 -> -9.00000000000000E-384 +ddrot190 rotate -1E-398 -1 -> -1.000000000000000E-383 +ddrot191 rotate -1E-398 -15 -> -1.0E-397 +ddrot192 rotate -1E-398 1 -> -1.0E-397 +ddrot193 rotate -1E-398 15 -> -1.000000000000000E-383 + +-- more negatives (of sanities) +ddrot201 rotate -0 0 -> -0 +ddrot202 rotate -0 2 -> -0 +ddrot203 rotate -1 2 -> -100 +ddrot204 rotate -1 15 -> -1000000000000000 +ddrot205 rotate -1 16 -> -1 +ddrot206 rotate -1 -1 -> -1000000000000000 +ddrot207 rotate -0 -2 -> -0 +ddrot208 rotate -1234567890123456 -1 -> -6123456789012345 +ddrot209 rotate -1234567890123456 -15 -> -2345678901234561 +ddrot210 rotate -1234567890123456 -16 -> -1234567890123456 +ddrot211 rotate -9934567890123456 -15 -> -9345678901234569 +ddrot212 rotate -9934567890123456 -16 -> -9934567890123456 + + +-- Specials; NaNs are handled as usual +ddrot781 rotate -Inf -8 -> -Infinity +ddrot782 rotate -Inf -1 -> -Infinity +ddrot783 rotate -Inf -0 -> -Infinity +ddrot784 rotate -Inf 0 -> -Infinity +ddrot785 rotate -Inf 1 -> -Infinity +ddrot786 rotate -Inf 8 -> -Infinity +ddrot787 rotate -1000 -Inf -> NaN Invalid_operation +ddrot788 rotate -Inf -Inf -> NaN Invalid_operation +ddrot789 rotate -1 -Inf -> NaN Invalid_operation +ddrot790 rotate -0 -Inf -> NaN Invalid_operation +ddrot791 rotate 0 -Inf -> NaN Invalid_operation +ddrot792 rotate 1 -Inf -> NaN Invalid_operation +ddrot793 rotate 1000 -Inf -> NaN Invalid_operation +ddrot794 rotate Inf -Inf -> NaN Invalid_operation + +ddrot800 rotate Inf -Inf -> NaN Invalid_operation +ddrot801 rotate Inf -8 -> Infinity +ddrot802 rotate Inf -1 -> Infinity +ddrot803 rotate Inf -0 -> Infinity +ddrot804 rotate Inf 0 -> Infinity +ddrot805 rotate Inf 1 -> Infinity +ddrot806 rotate Inf 8 -> Infinity +ddrot807 rotate Inf Inf -> NaN Invalid_operation +ddrot808 rotate -1000 Inf -> NaN Invalid_operation +ddrot809 rotate -Inf Inf -> NaN Invalid_operation +ddrot810 rotate -1 Inf -> NaN Invalid_operation +ddrot811 rotate -0 Inf -> NaN Invalid_operation +ddrot812 rotate 0 Inf -> NaN Invalid_operation +ddrot813 rotate 1 Inf -> NaN Invalid_operation +ddrot814 rotate 1000 Inf -> NaN Invalid_operation +ddrot815 rotate Inf Inf -> NaN Invalid_operation + +ddrot821 rotate NaN -Inf -> NaN +ddrot822 rotate NaN -1000 -> NaN +ddrot823 rotate NaN -1 -> NaN +ddrot824 rotate NaN -0 -> NaN +ddrot825 rotate NaN 0 -> NaN +ddrot826 rotate NaN 1 -> NaN +ddrot827 rotate NaN 1000 -> NaN +ddrot828 rotate NaN Inf -> NaN +ddrot829 rotate NaN NaN -> NaN +ddrot830 rotate -Inf NaN -> NaN +ddrot831 rotate -1000 NaN -> NaN +ddrot832 rotate -1 NaN -> NaN +ddrot833 rotate -0 NaN -> NaN +ddrot834 rotate 0 NaN -> NaN +ddrot835 rotate 1 NaN -> NaN +ddrot836 rotate 1000 NaN -> NaN +ddrot837 rotate Inf NaN -> NaN + +ddrot841 rotate sNaN -Inf -> NaN Invalid_operation +ddrot842 rotate sNaN -1000 -> NaN Invalid_operation +ddrot843 rotate sNaN -1 -> NaN Invalid_operation +ddrot844 rotate sNaN -0 -> NaN Invalid_operation +ddrot845 rotate sNaN 0 -> NaN Invalid_operation +ddrot846 rotate sNaN 1 -> NaN Invalid_operation +ddrot847 rotate sNaN 1000 -> NaN Invalid_operation +ddrot848 rotate sNaN NaN -> NaN Invalid_operation +ddrot849 rotate sNaN sNaN -> NaN Invalid_operation +ddrot850 rotate NaN sNaN -> NaN Invalid_operation +ddrot851 rotate -Inf sNaN -> NaN Invalid_operation +ddrot852 rotate -1000 sNaN -> NaN Invalid_operation +ddrot853 rotate -1 sNaN -> NaN Invalid_operation +ddrot854 rotate -0 sNaN -> NaN Invalid_operation +ddrot855 rotate 0 sNaN -> NaN Invalid_operation +ddrot856 rotate 1 sNaN -> NaN Invalid_operation +ddrot857 rotate 1000 sNaN -> NaN Invalid_operation +ddrot858 rotate Inf sNaN -> NaN Invalid_operation +ddrot859 rotate NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddrot861 rotate NaN1 -Inf -> NaN1 +ddrot862 rotate +NaN2 -1000 -> NaN2 +ddrot863 rotate NaN3 1000 -> NaN3 +ddrot864 rotate NaN4 Inf -> NaN4 +ddrot865 rotate NaN5 +NaN6 -> NaN5 +ddrot866 rotate -Inf NaN7 -> NaN7 +ddrot867 rotate -1000 NaN8 -> NaN8 +ddrot868 rotate 1000 NaN9 -> NaN9 +ddrot869 rotate Inf +NaN10 -> NaN10 +ddrot871 rotate sNaN11 -Inf -> NaN11 Invalid_operation +ddrot872 rotate sNaN12 -1000 -> NaN12 Invalid_operation +ddrot873 rotate sNaN13 1000 -> NaN13 Invalid_operation +ddrot874 rotate sNaN14 NaN17 -> NaN14 Invalid_operation +ddrot875 rotate sNaN15 sNaN18 -> NaN15 Invalid_operation +ddrot876 rotate NaN16 sNaN19 -> NaN19 Invalid_operation +ddrot877 rotate -Inf +sNaN20 -> NaN20 Invalid_operation +ddrot878 rotate -1000 sNaN21 -> NaN21 Invalid_operation +ddrot879 rotate 1000 sNaN22 -> NaN22 Invalid_operation +ddrot880 rotate Inf sNaN23 -> NaN23 Invalid_operation +ddrot881 rotate +NaN25 +sNaN24 -> NaN24 Invalid_operation +ddrot882 rotate -NaN26 NaN28 -> -NaN26 +ddrot883 rotate -sNaN27 sNaN29 -> -NaN27 Invalid_operation +ddrot884 rotate 1000 -NaN30 -> -NaN30 +ddrot885 rotate 1000 -sNaN31 -> -NaN31 Invalid_operation diff --git a/Lib/test/decimaltestdata/ddSameQuantum.decTest b/Lib/test/decimaltestdata/ddSameQuantum.decTest index 54a763c..465b36a 100644 --- a/Lib/test/decimaltestdata/ddSameQuantum.decTest +++ b/Lib/test/decimaltestdata/ddSameQuantum.decTest @@ -1,389 +1,389 @@ ------------------------------------------------------------------------- --- ddSameQuantum.decTest -- check decDouble quantums match -- --- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decDoubles. -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -ddsamq001 samequantum 0 0 -> 1 -ddsamq002 samequantum 0 1 -> 1 -ddsamq003 samequantum 1 0 -> 1 -ddsamq004 samequantum 1 1 -> 1 - -ddsamq011 samequantum 10 1E+1 -> 0 -ddsamq012 samequantum 10E+1 10E+1 -> 1 -ddsamq013 samequantum 100 10E+1 -> 0 -ddsamq014 samequantum 100 1E+2 -> 0 -ddsamq015 samequantum 0.1 1E-2 -> 0 -ddsamq016 samequantum 0.1 1E-1 -> 1 -ddsamq017 samequantum 0.1 1E-0 -> 0 -ddsamq018 samequantum 999 999 -> 1 -ddsamq019 samequantum 999E-1 99.9 -> 1 -ddsamq020 samequantum 111E-1 22.2 -> 1 -ddsamq021 samequantum 111E-1 1234.2 -> 1 - --- zeros -ddsamq030 samequantum 0.0 1.1 -> 1 -ddsamq031 samequantum 0.0 1.11 -> 0 -ddsamq032 samequantum 0.0 0 -> 0 -ddsamq033 samequantum 0.0 0.0 -> 1 -ddsamq034 samequantum 0.0 0.00 -> 0 -ddsamq035 samequantum 0E+1 0E+0 -> 0 -ddsamq036 samequantum 0E+1 0E+1 -> 1 -ddsamq037 samequantum 0E+1 0E+2 -> 0 -ddsamq038 samequantum 0E-17 0E-16 -> 0 -ddsamq039 samequantum 0E-17 0E-17 -> 1 -ddsamq040 samequantum 0E-17 0E-18 -> 0 -ddsamq041 samequantum 0E-17 0.0E-15 -> 0 -ddsamq042 samequantum 0E-17 0.0E-16 -> 1 -ddsamq043 samequantum 0E-17 0.0E-17 -> 0 -ddsamq044 samequantum -0E-17 0.0E-16 -> 1 -ddsamq045 samequantum 0E-17 -0.0E-17 -> 0 -ddsamq046 samequantum 0E-17 -0.0E-16 -> 1 -ddsamq047 samequantum -0E-17 0.0E-17 -> 0 -ddsamq048 samequantum -0E-17 -0.0E-16 -> 1 -ddsamq049 samequantum -0E-17 -0.0E-17 -> 0 - --- Nmax, Nmin, Ntiny -ddsamq051 samequantum 9.999999999999999E+384 9.999999999999999E+384 -> 1 -ddsamq052 samequantum 1E-383 1E-383 -> 1 -ddsamq053 samequantum 1.000000000000000E-383 1.000000000000000E-383 -> 1 -ddsamq054 samequantum 1E-398 1E-398 -> 1 -ddsamq055 samequantum 9.999999999999999E+384 9.999999999999999E+384 -> 1 -ddsamq056 samequantum 1E-383 1E-383 -> 1 -ddsamq057 samequantum 1.000000000000000E-383 1.000000000000000E-383 -> 1 -ddsamq058 samequantum 1E-398 1E-398 -> 1 - -ddsamq061 samequantum -1E-398 -1E-398 -> 1 -ddsamq062 samequantum -1.000000000000000E-383 -1.000000000000000E-383 -> 1 -ddsamq063 samequantum -1E-383 -1E-383 -> 1 -ddsamq064 samequantum -9.999999999999999E+384 -9.999999999999999E+384 -> 1 -ddsamq065 samequantum -1E-398 -1E-398 -> 1 -ddsamq066 samequantum -1.000000000000000E-383 -1.000000000000000E-383 -> 1 -ddsamq067 samequantum -1E-383 -1E-383 -> 1 -ddsamq068 samequantum -9.999999999999999E+384 -9.999999999999999E+384 -> 1 - -ddsamq071 samequantum -4E-398 -1E-398 -> 1 -ddsamq072 samequantum -4.000000000000000E-383 -1.000040000000000E-383 -> 1 -ddsamq073 samequantum -4E-383 -1E-383 -> 1 -ddsamq074 samequantum -4.999999999999999E+384 -9.999999999949999E+384 -> 1 -ddsamq075 samequantum -4E-398 -1E-398 -> 1 -ddsamq076 samequantum -4.000000000000000E-383 -1.004000000000000E-383 -> 1 -ddsamq077 samequantum -4E-383 -1E-383 -> 1 -ddsamq078 samequantum -4.999999999999999E+384 -9.949999999999999E+384 -> 1 - -ddsamq081 samequantum -4E-397 -1E-398 -> 0 -ddsamq082 samequantum -4.000000000000000E-383 -1.000040000000000E-336 -> 0 -ddsamq083 samequantum -4E-346 -1E-383 -> 0 -ddsamq084 samequantum -4.999999999999999E+384 -9.999499999999999E+336 -> 0 -ddsamq085 samequantum -4E-397 -1E-398 -> 0 -ddsamq086 samequantum -4.000000000000000E-383 -1.004000000000000E-336 -> 0 -ddsamq087 samequantum -4E-346 -1E-383 -> 0 -ddsamq088 samequantum -4.999999999999999E+384 -9.949999999999999E+336 -> 0 - --- specials & combinations -ddsamq0110 samequantum -Inf -Inf -> 1 -ddsamq0111 samequantum -Inf Inf -> 1 -ddsamq0112 samequantum -Inf NaN -> 0 -ddsamq0113 samequantum -Inf -7E+3 -> 0 -ddsamq0114 samequantum -Inf -7 -> 0 -ddsamq0115 samequantum -Inf -7E-3 -> 0 -ddsamq0116 samequantum -Inf -0E-3 -> 0 -ddsamq0117 samequantum -Inf -0 -> 0 -ddsamq0118 samequantum -Inf -0E+3 -> 0 -ddsamq0119 samequantum -Inf 0E-3 -> 0 -ddsamq0120 samequantum -Inf 0 -> 0 -ddsamq0121 samequantum -Inf 0E+3 -> 0 -ddsamq0122 samequantum -Inf 7E-3 -> 0 -ddsamq0123 samequantum -Inf 7 -> 0 -ddsamq0124 samequantum -Inf 7E+3 -> 0 -ddsamq0125 samequantum -Inf sNaN -> 0 - -ddsamq0210 samequantum Inf -Inf -> 1 -ddsamq0211 samequantum Inf Inf -> 1 -ddsamq0212 samequantum Inf NaN -> 0 -ddsamq0213 samequantum Inf -7E+3 -> 0 -ddsamq0214 samequantum Inf -7 -> 0 -ddsamq0215 samequantum Inf -7E-3 -> 0 -ddsamq0216 samequantum Inf -0E-3 -> 0 -ddsamq0217 samequantum Inf -0 -> 0 -ddsamq0218 samequantum Inf -0E+3 -> 0 -ddsamq0219 samequantum Inf 0E-3 -> 0 -ddsamq0220 samequantum Inf 0 -> 0 -ddsamq0221 samequantum Inf 0E+3 -> 0 -ddsamq0222 samequantum Inf 7E-3 -> 0 -ddsamq0223 samequantum Inf 7 -> 0 -ddsamq0224 samequantum Inf 7E+3 -> 0 -ddsamq0225 samequantum Inf sNaN -> 0 - -ddsamq0310 samequantum NaN -Inf -> 0 -ddsamq0311 samequantum NaN Inf -> 0 -ddsamq0312 samequantum NaN NaN -> 1 -ddsamq0313 samequantum NaN -7E+3 -> 0 -ddsamq0314 samequantum NaN -7 -> 0 -ddsamq0315 samequantum NaN -7E-3 -> 0 -ddsamq0316 samequantum NaN -0E-3 -> 0 -ddsamq0317 samequantum NaN -0 -> 0 -ddsamq0318 samequantum NaN -0E+3 -> 0 -ddsamq0319 samequantum NaN 0E-3 -> 0 -ddsamq0320 samequantum NaN 0 -> 0 -ddsamq0321 samequantum NaN 0E+3 -> 0 -ddsamq0322 samequantum NaN 7E-3 -> 0 -ddsamq0323 samequantum NaN 7 -> 0 -ddsamq0324 samequantum NaN 7E+3 -> 0 -ddsamq0325 samequantum NaN sNaN -> 1 - -ddsamq0410 samequantum -7E+3 -Inf -> 0 -ddsamq0411 samequantum -7E+3 Inf -> 0 -ddsamq0412 samequantum -7E+3 NaN -> 0 -ddsamq0413 samequantum -7E+3 -7E+3 -> 1 -ddsamq0414 samequantum -7E+3 -7 -> 0 -ddsamq0415 samequantum -7E+3 -7E-3 -> 0 -ddsamq0416 samequantum -7E+3 -0E-3 -> 0 -ddsamq0417 samequantum -7E+3 -0 -> 0 -ddsamq0418 samequantum -7E+3 -0E+3 -> 1 -ddsamq0419 samequantum -7E+3 0E-3 -> 0 -ddsamq0420 samequantum -7E+3 0 -> 0 -ddsamq0421 samequantum -7E+3 0E+3 -> 1 -ddsamq0422 samequantum -7E+3 7E-3 -> 0 -ddsamq0423 samequantum -7E+3 7 -> 0 -ddsamq0424 samequantum -7E+3 7E+3 -> 1 -ddsamq0425 samequantum -7E+3 sNaN -> 0 - -ddsamq0510 samequantum -7 -Inf -> 0 -ddsamq0511 samequantum -7 Inf -> 0 -ddsamq0512 samequantum -7 NaN -> 0 -ddsamq0513 samequantum -7 -7E+3 -> 0 -ddsamq0514 samequantum -7 -7 -> 1 -ddsamq0515 samequantum -7 -7E-3 -> 0 -ddsamq0516 samequantum -7 -0E-3 -> 0 -ddsamq0517 samequantum -7 -0 -> 1 -ddsamq0518 samequantum -7 -0E+3 -> 0 -ddsamq0519 samequantum -7 0E-3 -> 0 -ddsamq0520 samequantum -7 0 -> 1 -ddsamq0521 samequantum -7 0E+3 -> 0 -ddsamq0522 samequantum -7 7E-3 -> 0 -ddsamq0523 samequantum -7 7 -> 1 -ddsamq0524 samequantum -7 7E+3 -> 0 -ddsamq0525 samequantum -7 sNaN -> 0 - -ddsamq0610 samequantum -7E-3 -Inf -> 0 -ddsamq0611 samequantum -7E-3 Inf -> 0 -ddsamq0612 samequantum -7E-3 NaN -> 0 -ddsamq0613 samequantum -7E-3 -7E+3 -> 0 -ddsamq0614 samequantum -7E-3 -7 -> 0 -ddsamq0615 samequantum -7E-3 -7E-3 -> 1 -ddsamq0616 samequantum -7E-3 -0E-3 -> 1 -ddsamq0617 samequantum -7E-3 -0 -> 0 -ddsamq0618 samequantum -7E-3 -0E+3 -> 0 -ddsamq0619 samequantum -7E-3 0E-3 -> 1 -ddsamq0620 samequantum -7E-3 0 -> 0 -ddsamq0621 samequantum -7E-3 0E+3 -> 0 -ddsamq0622 samequantum -7E-3 7E-3 -> 1 -ddsamq0623 samequantum -7E-3 7 -> 0 -ddsamq0624 samequantum -7E-3 7E+3 -> 0 -ddsamq0625 samequantum -7E-3 sNaN -> 0 - -ddsamq0710 samequantum -0E-3 -Inf -> 0 -ddsamq0711 samequantum -0E-3 Inf -> 0 -ddsamq0712 samequantum -0E-3 NaN -> 0 -ddsamq0713 samequantum -0E-3 -7E+3 -> 0 -ddsamq0714 samequantum -0E-3 -7 -> 0 -ddsamq0715 samequantum -0E-3 -7E-3 -> 1 -ddsamq0716 samequantum -0E-3 -0E-3 -> 1 -ddsamq0717 samequantum -0E-3 -0 -> 0 -ddsamq0718 samequantum -0E-3 -0E+3 -> 0 -ddsamq0719 samequantum -0E-3 0E-3 -> 1 -ddsamq0720 samequantum -0E-3 0 -> 0 -ddsamq0721 samequantum -0E-3 0E+3 -> 0 -ddsamq0722 samequantum -0E-3 7E-3 -> 1 -ddsamq0723 samequantum -0E-3 7 -> 0 -ddsamq0724 samequantum -0E-3 7E+3 -> 0 -ddsamq0725 samequantum -0E-3 sNaN -> 0 - -ddsamq0810 samequantum -0 -Inf -> 0 -ddsamq0811 samequantum -0 Inf -> 0 -ddsamq0812 samequantum -0 NaN -> 0 -ddsamq0813 samequantum -0 -7E+3 -> 0 -ddsamq0814 samequantum -0 -7 -> 1 -ddsamq0815 samequantum -0 -7E-3 -> 0 -ddsamq0816 samequantum -0 -0E-3 -> 0 -ddsamq0817 samequantum -0 -0 -> 1 -ddsamq0818 samequantum -0 -0E+3 -> 0 -ddsamq0819 samequantum -0 0E-3 -> 0 -ddsamq0820 samequantum -0 0 -> 1 -ddsamq0821 samequantum -0 0E+3 -> 0 -ddsamq0822 samequantum -0 7E-3 -> 0 -ddsamq0823 samequantum -0 7 -> 1 -ddsamq0824 samequantum -0 7E+3 -> 0 -ddsamq0825 samequantum -0 sNaN -> 0 - -ddsamq0910 samequantum -0E+3 -Inf -> 0 -ddsamq0911 samequantum -0E+3 Inf -> 0 -ddsamq0912 samequantum -0E+3 NaN -> 0 -ddsamq0913 samequantum -0E+3 -7E+3 -> 1 -ddsamq0914 samequantum -0E+3 -7 -> 0 -ddsamq0915 samequantum -0E+3 -7E-3 -> 0 -ddsamq0916 samequantum -0E+3 -0E-3 -> 0 -ddsamq0917 samequantum -0E+3 -0 -> 0 -ddsamq0918 samequantum -0E+3 -0E+3 -> 1 -ddsamq0919 samequantum -0E+3 0E-3 -> 0 -ddsamq0920 samequantum -0E+3 0 -> 0 -ddsamq0921 samequantum -0E+3 0E+3 -> 1 -ddsamq0922 samequantum -0E+3 7E-3 -> 0 -ddsamq0923 samequantum -0E+3 7 -> 0 -ddsamq0924 samequantum -0E+3 7E+3 -> 1 -ddsamq0925 samequantum -0E+3 sNaN -> 0 - -ddsamq1110 samequantum 0E-3 -Inf -> 0 -ddsamq1111 samequantum 0E-3 Inf -> 0 -ddsamq1112 samequantum 0E-3 NaN -> 0 -ddsamq1113 samequantum 0E-3 -7E+3 -> 0 -ddsamq1114 samequantum 0E-3 -7 -> 0 -ddsamq1115 samequantum 0E-3 -7E-3 -> 1 -ddsamq1116 samequantum 0E-3 -0E-3 -> 1 -ddsamq1117 samequantum 0E-3 -0 -> 0 -ddsamq1118 samequantum 0E-3 -0E+3 -> 0 -ddsamq1119 samequantum 0E-3 0E-3 -> 1 -ddsamq1120 samequantum 0E-3 0 -> 0 -ddsamq1121 samequantum 0E-3 0E+3 -> 0 -ddsamq1122 samequantum 0E-3 7E-3 -> 1 -ddsamq1123 samequantum 0E-3 7 -> 0 -ddsamq1124 samequantum 0E-3 7E+3 -> 0 -ddsamq1125 samequantum 0E-3 sNaN -> 0 - -ddsamq1210 samequantum 0 -Inf -> 0 -ddsamq1211 samequantum 0 Inf -> 0 -ddsamq1212 samequantum 0 NaN -> 0 -ddsamq1213 samequantum 0 -7E+3 -> 0 -ddsamq1214 samequantum 0 -7 -> 1 -ddsamq1215 samequantum 0 -7E-3 -> 0 -ddsamq1216 samequantum 0 -0E-3 -> 0 -ddsamq1217 samequantum 0 -0 -> 1 -ddsamq1218 samequantum 0 -0E+3 -> 0 -ddsamq1219 samequantum 0 0E-3 -> 0 -ddsamq1220 samequantum 0 0 -> 1 -ddsamq1221 samequantum 0 0E+3 -> 0 -ddsamq1222 samequantum 0 7E-3 -> 0 -ddsamq1223 samequantum 0 7 -> 1 -ddsamq1224 samequantum 0 7E+3 -> 0 -ddsamq1225 samequantum 0 sNaN -> 0 - -ddsamq1310 samequantum 0E+3 -Inf -> 0 -ddsamq1311 samequantum 0E+3 Inf -> 0 -ddsamq1312 samequantum 0E+3 NaN -> 0 -ddsamq1313 samequantum 0E+3 -7E+3 -> 1 -ddsamq1314 samequantum 0E+3 -7 -> 0 -ddsamq1315 samequantum 0E+3 -7E-3 -> 0 -ddsamq1316 samequantum 0E+3 -0E-3 -> 0 -ddsamq1317 samequantum 0E+3 -0 -> 0 -ddsamq1318 samequantum 0E+3 -0E+3 -> 1 -ddsamq1319 samequantum 0E+3 0E-3 -> 0 -ddsamq1320 samequantum 0E+3 0 -> 0 -ddsamq1321 samequantum 0E+3 0E+3 -> 1 -ddsamq1322 samequantum 0E+3 7E-3 -> 0 -ddsamq1323 samequantum 0E+3 7 -> 0 -ddsamq1324 samequantum 0E+3 7E+3 -> 1 -ddsamq1325 samequantum 0E+3 sNaN -> 0 - -ddsamq1410 samequantum 7E-3 -Inf -> 0 -ddsamq1411 samequantum 7E-3 Inf -> 0 -ddsamq1412 samequantum 7E-3 NaN -> 0 -ddsamq1413 samequantum 7E-3 -7E+3 -> 0 -ddsamq1414 samequantum 7E-3 -7 -> 0 -ddsamq1415 samequantum 7E-3 -7E-3 -> 1 -ddsamq1416 samequantum 7E-3 -0E-3 -> 1 -ddsamq1417 samequantum 7E-3 -0 -> 0 -ddsamq1418 samequantum 7E-3 -0E+3 -> 0 -ddsamq1419 samequantum 7E-3 0E-3 -> 1 -ddsamq1420 samequantum 7E-3 0 -> 0 -ddsamq1421 samequantum 7E-3 0E+3 -> 0 -ddsamq1422 samequantum 7E-3 7E-3 -> 1 -ddsamq1423 samequantum 7E-3 7 -> 0 -ddsamq1424 samequantum 7E-3 7E+3 -> 0 -ddsamq1425 samequantum 7E-3 sNaN -> 0 - -ddsamq1510 samequantum 7 -Inf -> 0 -ddsamq1511 samequantum 7 Inf -> 0 -ddsamq1512 samequantum 7 NaN -> 0 -ddsamq1513 samequantum 7 -7E+3 -> 0 -ddsamq1514 samequantum 7 -7 -> 1 -ddsamq1515 samequantum 7 -7E-3 -> 0 -ddsamq1516 samequantum 7 -0E-3 -> 0 -ddsamq1517 samequantum 7 -0 -> 1 -ddsamq1518 samequantum 7 -0E+3 -> 0 -ddsamq1519 samequantum 7 0E-3 -> 0 -ddsamq1520 samequantum 7 0 -> 1 -ddsamq1521 samequantum 7 0E+3 -> 0 -ddsamq1522 samequantum 7 7E-3 -> 0 -ddsamq1523 samequantum 7 7 -> 1 -ddsamq1524 samequantum 7 7E+3 -> 0 -ddsamq1525 samequantum 7 sNaN -> 0 - -ddsamq1610 samequantum 7E+3 -Inf -> 0 -ddsamq1611 samequantum 7E+3 Inf -> 0 -ddsamq1612 samequantum 7E+3 NaN -> 0 -ddsamq1613 samequantum 7E+3 -7E+3 -> 1 -ddsamq1614 samequantum 7E+3 -7 -> 0 -ddsamq1615 samequantum 7E+3 -7E-3 -> 0 -ddsamq1616 samequantum 7E+3 -0E-3 -> 0 -ddsamq1617 samequantum 7E+3 -0 -> 0 -ddsamq1618 samequantum 7E+3 -0E+3 -> 1 -ddsamq1619 samequantum 7E+3 0E-3 -> 0 -ddsamq1620 samequantum 7E+3 0 -> 0 -ddsamq1621 samequantum 7E+3 0E+3 -> 1 -ddsamq1622 samequantum 7E+3 7E-3 -> 0 -ddsamq1623 samequantum 7E+3 7 -> 0 -ddsamq1624 samequantum 7E+3 7E+3 -> 1 -ddsamq1625 samequantum 7E+3 sNaN -> 0 - -ddsamq1710 samequantum sNaN -Inf -> 0 -ddsamq1711 samequantum sNaN Inf -> 0 -ddsamq1712 samequantum sNaN NaN -> 1 -ddsamq1713 samequantum sNaN -7E+3 -> 0 -ddsamq1714 samequantum sNaN -7 -> 0 -ddsamq1715 samequantum sNaN -7E-3 -> 0 -ddsamq1716 samequantum sNaN -0E-3 -> 0 -ddsamq1717 samequantum sNaN -0 -> 0 -ddsamq1718 samequantum sNaN -0E+3 -> 0 -ddsamq1719 samequantum sNaN 0E-3 -> 0 -ddsamq1720 samequantum sNaN 0 -> 0 -ddsamq1721 samequantum sNaN 0E+3 -> 0 -ddsamq1722 samequantum sNaN 7E-3 -> 0 -ddsamq1723 samequantum sNaN 7 -> 0 -ddsamq1724 samequantum sNaN 7E+3 -> 0 -ddsamq1725 samequantum sNaN sNaN -> 1 --- noisy NaNs -ddsamq1730 samequantum sNaN3 sNaN3 -> 1 -ddsamq1731 samequantum sNaN3 sNaN4 -> 1 -ddsamq1732 samequantum NaN3 NaN3 -> 1 -ddsamq1733 samequantum NaN3 NaN4 -> 1 -ddsamq1734 samequantum sNaN3 3 -> 0 -ddsamq1735 samequantum NaN3 3 -> 0 -ddsamq1736 samequantum 4 sNaN4 -> 0 -ddsamq1737 samequantum 3 NaN3 -> 0 -ddsamq1738 samequantum Inf sNaN4 -> 0 -ddsamq1739 samequantum -Inf NaN3 -> 0 - +------------------------------------------------------------------------ +-- ddSameQuantum.decTest -- check decDouble quantums match -- +-- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decDoubles. +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +ddsamq001 samequantum 0 0 -> 1 +ddsamq002 samequantum 0 1 -> 1 +ddsamq003 samequantum 1 0 -> 1 +ddsamq004 samequantum 1 1 -> 1 + +ddsamq011 samequantum 10 1E+1 -> 0 +ddsamq012 samequantum 10E+1 10E+1 -> 1 +ddsamq013 samequantum 100 10E+1 -> 0 +ddsamq014 samequantum 100 1E+2 -> 0 +ddsamq015 samequantum 0.1 1E-2 -> 0 +ddsamq016 samequantum 0.1 1E-1 -> 1 +ddsamq017 samequantum 0.1 1E-0 -> 0 +ddsamq018 samequantum 999 999 -> 1 +ddsamq019 samequantum 999E-1 99.9 -> 1 +ddsamq020 samequantum 111E-1 22.2 -> 1 +ddsamq021 samequantum 111E-1 1234.2 -> 1 + +-- zeros +ddsamq030 samequantum 0.0 1.1 -> 1 +ddsamq031 samequantum 0.0 1.11 -> 0 +ddsamq032 samequantum 0.0 0 -> 0 +ddsamq033 samequantum 0.0 0.0 -> 1 +ddsamq034 samequantum 0.0 0.00 -> 0 +ddsamq035 samequantum 0E+1 0E+0 -> 0 +ddsamq036 samequantum 0E+1 0E+1 -> 1 +ddsamq037 samequantum 0E+1 0E+2 -> 0 +ddsamq038 samequantum 0E-17 0E-16 -> 0 +ddsamq039 samequantum 0E-17 0E-17 -> 1 +ddsamq040 samequantum 0E-17 0E-18 -> 0 +ddsamq041 samequantum 0E-17 0.0E-15 -> 0 +ddsamq042 samequantum 0E-17 0.0E-16 -> 1 +ddsamq043 samequantum 0E-17 0.0E-17 -> 0 +ddsamq044 samequantum -0E-17 0.0E-16 -> 1 +ddsamq045 samequantum 0E-17 -0.0E-17 -> 0 +ddsamq046 samequantum 0E-17 -0.0E-16 -> 1 +ddsamq047 samequantum -0E-17 0.0E-17 -> 0 +ddsamq048 samequantum -0E-17 -0.0E-16 -> 1 +ddsamq049 samequantum -0E-17 -0.0E-17 -> 0 + +-- Nmax, Nmin, Ntiny +ddsamq051 samequantum 9.999999999999999E+384 9.999999999999999E+384 -> 1 +ddsamq052 samequantum 1E-383 1E-383 -> 1 +ddsamq053 samequantum 1.000000000000000E-383 1.000000000000000E-383 -> 1 +ddsamq054 samequantum 1E-398 1E-398 -> 1 +ddsamq055 samequantum 9.999999999999999E+384 9.999999999999999E+384 -> 1 +ddsamq056 samequantum 1E-383 1E-383 -> 1 +ddsamq057 samequantum 1.000000000000000E-383 1.000000000000000E-383 -> 1 +ddsamq058 samequantum 1E-398 1E-398 -> 1 + +ddsamq061 samequantum -1E-398 -1E-398 -> 1 +ddsamq062 samequantum -1.000000000000000E-383 -1.000000000000000E-383 -> 1 +ddsamq063 samequantum -1E-383 -1E-383 -> 1 +ddsamq064 samequantum -9.999999999999999E+384 -9.999999999999999E+384 -> 1 +ddsamq065 samequantum -1E-398 -1E-398 -> 1 +ddsamq066 samequantum -1.000000000000000E-383 -1.000000000000000E-383 -> 1 +ddsamq067 samequantum -1E-383 -1E-383 -> 1 +ddsamq068 samequantum -9.999999999999999E+384 -9.999999999999999E+384 -> 1 + +ddsamq071 samequantum -4E-398 -1E-398 -> 1 +ddsamq072 samequantum -4.000000000000000E-383 -1.000040000000000E-383 -> 1 +ddsamq073 samequantum -4E-383 -1E-383 -> 1 +ddsamq074 samequantum -4.999999999999999E+384 -9.999999999949999E+384 -> 1 +ddsamq075 samequantum -4E-398 -1E-398 -> 1 +ddsamq076 samequantum -4.000000000000000E-383 -1.004000000000000E-383 -> 1 +ddsamq077 samequantum -4E-383 -1E-383 -> 1 +ddsamq078 samequantum -4.999999999999999E+384 -9.949999999999999E+384 -> 1 + +ddsamq081 samequantum -4E-397 -1E-398 -> 0 +ddsamq082 samequantum -4.000000000000000E-383 -1.000040000000000E-336 -> 0 +ddsamq083 samequantum -4E-346 -1E-383 -> 0 +ddsamq084 samequantum -4.999999999999999E+384 -9.999499999999999E+336 -> 0 +ddsamq085 samequantum -4E-397 -1E-398 -> 0 +ddsamq086 samequantum -4.000000000000000E-383 -1.004000000000000E-336 -> 0 +ddsamq087 samequantum -4E-346 -1E-383 -> 0 +ddsamq088 samequantum -4.999999999999999E+384 -9.949999999999999E+336 -> 0 + +-- specials & combinations +ddsamq0110 samequantum -Inf -Inf -> 1 +ddsamq0111 samequantum -Inf Inf -> 1 +ddsamq0112 samequantum -Inf NaN -> 0 +ddsamq0113 samequantum -Inf -7E+3 -> 0 +ddsamq0114 samequantum -Inf -7 -> 0 +ddsamq0115 samequantum -Inf -7E-3 -> 0 +ddsamq0116 samequantum -Inf -0E-3 -> 0 +ddsamq0117 samequantum -Inf -0 -> 0 +ddsamq0118 samequantum -Inf -0E+3 -> 0 +ddsamq0119 samequantum -Inf 0E-3 -> 0 +ddsamq0120 samequantum -Inf 0 -> 0 +ddsamq0121 samequantum -Inf 0E+3 -> 0 +ddsamq0122 samequantum -Inf 7E-3 -> 0 +ddsamq0123 samequantum -Inf 7 -> 0 +ddsamq0124 samequantum -Inf 7E+3 -> 0 +ddsamq0125 samequantum -Inf sNaN -> 0 + +ddsamq0210 samequantum Inf -Inf -> 1 +ddsamq0211 samequantum Inf Inf -> 1 +ddsamq0212 samequantum Inf NaN -> 0 +ddsamq0213 samequantum Inf -7E+3 -> 0 +ddsamq0214 samequantum Inf -7 -> 0 +ddsamq0215 samequantum Inf -7E-3 -> 0 +ddsamq0216 samequantum Inf -0E-3 -> 0 +ddsamq0217 samequantum Inf -0 -> 0 +ddsamq0218 samequantum Inf -0E+3 -> 0 +ddsamq0219 samequantum Inf 0E-3 -> 0 +ddsamq0220 samequantum Inf 0 -> 0 +ddsamq0221 samequantum Inf 0E+3 -> 0 +ddsamq0222 samequantum Inf 7E-3 -> 0 +ddsamq0223 samequantum Inf 7 -> 0 +ddsamq0224 samequantum Inf 7E+3 -> 0 +ddsamq0225 samequantum Inf sNaN -> 0 + +ddsamq0310 samequantum NaN -Inf -> 0 +ddsamq0311 samequantum NaN Inf -> 0 +ddsamq0312 samequantum NaN NaN -> 1 +ddsamq0313 samequantum NaN -7E+3 -> 0 +ddsamq0314 samequantum NaN -7 -> 0 +ddsamq0315 samequantum NaN -7E-3 -> 0 +ddsamq0316 samequantum NaN -0E-3 -> 0 +ddsamq0317 samequantum NaN -0 -> 0 +ddsamq0318 samequantum NaN -0E+3 -> 0 +ddsamq0319 samequantum NaN 0E-3 -> 0 +ddsamq0320 samequantum NaN 0 -> 0 +ddsamq0321 samequantum NaN 0E+3 -> 0 +ddsamq0322 samequantum NaN 7E-3 -> 0 +ddsamq0323 samequantum NaN 7 -> 0 +ddsamq0324 samequantum NaN 7E+3 -> 0 +ddsamq0325 samequantum NaN sNaN -> 1 + +ddsamq0410 samequantum -7E+3 -Inf -> 0 +ddsamq0411 samequantum -7E+3 Inf -> 0 +ddsamq0412 samequantum -7E+3 NaN -> 0 +ddsamq0413 samequantum -7E+3 -7E+3 -> 1 +ddsamq0414 samequantum -7E+3 -7 -> 0 +ddsamq0415 samequantum -7E+3 -7E-3 -> 0 +ddsamq0416 samequantum -7E+3 -0E-3 -> 0 +ddsamq0417 samequantum -7E+3 -0 -> 0 +ddsamq0418 samequantum -7E+3 -0E+3 -> 1 +ddsamq0419 samequantum -7E+3 0E-3 -> 0 +ddsamq0420 samequantum -7E+3 0 -> 0 +ddsamq0421 samequantum -7E+3 0E+3 -> 1 +ddsamq0422 samequantum -7E+3 7E-3 -> 0 +ddsamq0423 samequantum -7E+3 7 -> 0 +ddsamq0424 samequantum -7E+3 7E+3 -> 1 +ddsamq0425 samequantum -7E+3 sNaN -> 0 + +ddsamq0510 samequantum -7 -Inf -> 0 +ddsamq0511 samequantum -7 Inf -> 0 +ddsamq0512 samequantum -7 NaN -> 0 +ddsamq0513 samequantum -7 -7E+3 -> 0 +ddsamq0514 samequantum -7 -7 -> 1 +ddsamq0515 samequantum -7 -7E-3 -> 0 +ddsamq0516 samequantum -7 -0E-3 -> 0 +ddsamq0517 samequantum -7 -0 -> 1 +ddsamq0518 samequantum -7 -0E+3 -> 0 +ddsamq0519 samequantum -7 0E-3 -> 0 +ddsamq0520 samequantum -7 0 -> 1 +ddsamq0521 samequantum -7 0E+3 -> 0 +ddsamq0522 samequantum -7 7E-3 -> 0 +ddsamq0523 samequantum -7 7 -> 1 +ddsamq0524 samequantum -7 7E+3 -> 0 +ddsamq0525 samequantum -7 sNaN -> 0 + +ddsamq0610 samequantum -7E-3 -Inf -> 0 +ddsamq0611 samequantum -7E-3 Inf -> 0 +ddsamq0612 samequantum -7E-3 NaN -> 0 +ddsamq0613 samequantum -7E-3 -7E+3 -> 0 +ddsamq0614 samequantum -7E-3 -7 -> 0 +ddsamq0615 samequantum -7E-3 -7E-3 -> 1 +ddsamq0616 samequantum -7E-3 -0E-3 -> 1 +ddsamq0617 samequantum -7E-3 -0 -> 0 +ddsamq0618 samequantum -7E-3 -0E+3 -> 0 +ddsamq0619 samequantum -7E-3 0E-3 -> 1 +ddsamq0620 samequantum -7E-3 0 -> 0 +ddsamq0621 samequantum -7E-3 0E+3 -> 0 +ddsamq0622 samequantum -7E-3 7E-3 -> 1 +ddsamq0623 samequantum -7E-3 7 -> 0 +ddsamq0624 samequantum -7E-3 7E+3 -> 0 +ddsamq0625 samequantum -7E-3 sNaN -> 0 + +ddsamq0710 samequantum -0E-3 -Inf -> 0 +ddsamq0711 samequantum -0E-3 Inf -> 0 +ddsamq0712 samequantum -0E-3 NaN -> 0 +ddsamq0713 samequantum -0E-3 -7E+3 -> 0 +ddsamq0714 samequantum -0E-3 -7 -> 0 +ddsamq0715 samequantum -0E-3 -7E-3 -> 1 +ddsamq0716 samequantum -0E-3 -0E-3 -> 1 +ddsamq0717 samequantum -0E-3 -0 -> 0 +ddsamq0718 samequantum -0E-3 -0E+3 -> 0 +ddsamq0719 samequantum -0E-3 0E-3 -> 1 +ddsamq0720 samequantum -0E-3 0 -> 0 +ddsamq0721 samequantum -0E-3 0E+3 -> 0 +ddsamq0722 samequantum -0E-3 7E-3 -> 1 +ddsamq0723 samequantum -0E-3 7 -> 0 +ddsamq0724 samequantum -0E-3 7E+3 -> 0 +ddsamq0725 samequantum -0E-3 sNaN -> 0 + +ddsamq0810 samequantum -0 -Inf -> 0 +ddsamq0811 samequantum -0 Inf -> 0 +ddsamq0812 samequantum -0 NaN -> 0 +ddsamq0813 samequantum -0 -7E+3 -> 0 +ddsamq0814 samequantum -0 -7 -> 1 +ddsamq0815 samequantum -0 -7E-3 -> 0 +ddsamq0816 samequantum -0 -0E-3 -> 0 +ddsamq0817 samequantum -0 -0 -> 1 +ddsamq0818 samequantum -0 -0E+3 -> 0 +ddsamq0819 samequantum -0 0E-3 -> 0 +ddsamq0820 samequantum -0 0 -> 1 +ddsamq0821 samequantum -0 0E+3 -> 0 +ddsamq0822 samequantum -0 7E-3 -> 0 +ddsamq0823 samequantum -0 7 -> 1 +ddsamq0824 samequantum -0 7E+3 -> 0 +ddsamq0825 samequantum -0 sNaN -> 0 + +ddsamq0910 samequantum -0E+3 -Inf -> 0 +ddsamq0911 samequantum -0E+3 Inf -> 0 +ddsamq0912 samequantum -0E+3 NaN -> 0 +ddsamq0913 samequantum -0E+3 -7E+3 -> 1 +ddsamq0914 samequantum -0E+3 -7 -> 0 +ddsamq0915 samequantum -0E+3 -7E-3 -> 0 +ddsamq0916 samequantum -0E+3 -0E-3 -> 0 +ddsamq0917 samequantum -0E+3 -0 -> 0 +ddsamq0918 samequantum -0E+3 -0E+3 -> 1 +ddsamq0919 samequantum -0E+3 0E-3 -> 0 +ddsamq0920 samequantum -0E+3 0 -> 0 +ddsamq0921 samequantum -0E+3 0E+3 -> 1 +ddsamq0922 samequantum -0E+3 7E-3 -> 0 +ddsamq0923 samequantum -0E+3 7 -> 0 +ddsamq0924 samequantum -0E+3 7E+3 -> 1 +ddsamq0925 samequantum -0E+3 sNaN -> 0 + +ddsamq1110 samequantum 0E-3 -Inf -> 0 +ddsamq1111 samequantum 0E-3 Inf -> 0 +ddsamq1112 samequantum 0E-3 NaN -> 0 +ddsamq1113 samequantum 0E-3 -7E+3 -> 0 +ddsamq1114 samequantum 0E-3 -7 -> 0 +ddsamq1115 samequantum 0E-3 -7E-3 -> 1 +ddsamq1116 samequantum 0E-3 -0E-3 -> 1 +ddsamq1117 samequantum 0E-3 -0 -> 0 +ddsamq1118 samequantum 0E-3 -0E+3 -> 0 +ddsamq1119 samequantum 0E-3 0E-3 -> 1 +ddsamq1120 samequantum 0E-3 0 -> 0 +ddsamq1121 samequantum 0E-3 0E+3 -> 0 +ddsamq1122 samequantum 0E-3 7E-3 -> 1 +ddsamq1123 samequantum 0E-3 7 -> 0 +ddsamq1124 samequantum 0E-3 7E+3 -> 0 +ddsamq1125 samequantum 0E-3 sNaN -> 0 + +ddsamq1210 samequantum 0 -Inf -> 0 +ddsamq1211 samequantum 0 Inf -> 0 +ddsamq1212 samequantum 0 NaN -> 0 +ddsamq1213 samequantum 0 -7E+3 -> 0 +ddsamq1214 samequantum 0 -7 -> 1 +ddsamq1215 samequantum 0 -7E-3 -> 0 +ddsamq1216 samequantum 0 -0E-3 -> 0 +ddsamq1217 samequantum 0 -0 -> 1 +ddsamq1218 samequantum 0 -0E+3 -> 0 +ddsamq1219 samequantum 0 0E-3 -> 0 +ddsamq1220 samequantum 0 0 -> 1 +ddsamq1221 samequantum 0 0E+3 -> 0 +ddsamq1222 samequantum 0 7E-3 -> 0 +ddsamq1223 samequantum 0 7 -> 1 +ddsamq1224 samequantum 0 7E+3 -> 0 +ddsamq1225 samequantum 0 sNaN -> 0 + +ddsamq1310 samequantum 0E+3 -Inf -> 0 +ddsamq1311 samequantum 0E+3 Inf -> 0 +ddsamq1312 samequantum 0E+3 NaN -> 0 +ddsamq1313 samequantum 0E+3 -7E+3 -> 1 +ddsamq1314 samequantum 0E+3 -7 -> 0 +ddsamq1315 samequantum 0E+3 -7E-3 -> 0 +ddsamq1316 samequantum 0E+3 -0E-3 -> 0 +ddsamq1317 samequantum 0E+3 -0 -> 0 +ddsamq1318 samequantum 0E+3 -0E+3 -> 1 +ddsamq1319 samequantum 0E+3 0E-3 -> 0 +ddsamq1320 samequantum 0E+3 0 -> 0 +ddsamq1321 samequantum 0E+3 0E+3 -> 1 +ddsamq1322 samequantum 0E+3 7E-3 -> 0 +ddsamq1323 samequantum 0E+3 7 -> 0 +ddsamq1324 samequantum 0E+3 7E+3 -> 1 +ddsamq1325 samequantum 0E+3 sNaN -> 0 + +ddsamq1410 samequantum 7E-3 -Inf -> 0 +ddsamq1411 samequantum 7E-3 Inf -> 0 +ddsamq1412 samequantum 7E-3 NaN -> 0 +ddsamq1413 samequantum 7E-3 -7E+3 -> 0 +ddsamq1414 samequantum 7E-3 -7 -> 0 +ddsamq1415 samequantum 7E-3 -7E-3 -> 1 +ddsamq1416 samequantum 7E-3 -0E-3 -> 1 +ddsamq1417 samequantum 7E-3 -0 -> 0 +ddsamq1418 samequantum 7E-3 -0E+3 -> 0 +ddsamq1419 samequantum 7E-3 0E-3 -> 1 +ddsamq1420 samequantum 7E-3 0 -> 0 +ddsamq1421 samequantum 7E-3 0E+3 -> 0 +ddsamq1422 samequantum 7E-3 7E-3 -> 1 +ddsamq1423 samequantum 7E-3 7 -> 0 +ddsamq1424 samequantum 7E-3 7E+3 -> 0 +ddsamq1425 samequantum 7E-3 sNaN -> 0 + +ddsamq1510 samequantum 7 -Inf -> 0 +ddsamq1511 samequantum 7 Inf -> 0 +ddsamq1512 samequantum 7 NaN -> 0 +ddsamq1513 samequantum 7 -7E+3 -> 0 +ddsamq1514 samequantum 7 -7 -> 1 +ddsamq1515 samequantum 7 -7E-3 -> 0 +ddsamq1516 samequantum 7 -0E-3 -> 0 +ddsamq1517 samequantum 7 -0 -> 1 +ddsamq1518 samequantum 7 -0E+3 -> 0 +ddsamq1519 samequantum 7 0E-3 -> 0 +ddsamq1520 samequantum 7 0 -> 1 +ddsamq1521 samequantum 7 0E+3 -> 0 +ddsamq1522 samequantum 7 7E-3 -> 0 +ddsamq1523 samequantum 7 7 -> 1 +ddsamq1524 samequantum 7 7E+3 -> 0 +ddsamq1525 samequantum 7 sNaN -> 0 + +ddsamq1610 samequantum 7E+3 -Inf -> 0 +ddsamq1611 samequantum 7E+3 Inf -> 0 +ddsamq1612 samequantum 7E+3 NaN -> 0 +ddsamq1613 samequantum 7E+3 -7E+3 -> 1 +ddsamq1614 samequantum 7E+3 -7 -> 0 +ddsamq1615 samequantum 7E+3 -7E-3 -> 0 +ddsamq1616 samequantum 7E+3 -0E-3 -> 0 +ddsamq1617 samequantum 7E+3 -0 -> 0 +ddsamq1618 samequantum 7E+3 -0E+3 -> 1 +ddsamq1619 samequantum 7E+3 0E-3 -> 0 +ddsamq1620 samequantum 7E+3 0 -> 0 +ddsamq1621 samequantum 7E+3 0E+3 -> 1 +ddsamq1622 samequantum 7E+3 7E-3 -> 0 +ddsamq1623 samequantum 7E+3 7 -> 0 +ddsamq1624 samequantum 7E+3 7E+3 -> 1 +ddsamq1625 samequantum 7E+3 sNaN -> 0 + +ddsamq1710 samequantum sNaN -Inf -> 0 +ddsamq1711 samequantum sNaN Inf -> 0 +ddsamq1712 samequantum sNaN NaN -> 1 +ddsamq1713 samequantum sNaN -7E+3 -> 0 +ddsamq1714 samequantum sNaN -7 -> 0 +ddsamq1715 samequantum sNaN -7E-3 -> 0 +ddsamq1716 samequantum sNaN -0E-3 -> 0 +ddsamq1717 samequantum sNaN -0 -> 0 +ddsamq1718 samequantum sNaN -0E+3 -> 0 +ddsamq1719 samequantum sNaN 0E-3 -> 0 +ddsamq1720 samequantum sNaN 0 -> 0 +ddsamq1721 samequantum sNaN 0E+3 -> 0 +ddsamq1722 samequantum sNaN 7E-3 -> 0 +ddsamq1723 samequantum sNaN 7 -> 0 +ddsamq1724 samequantum sNaN 7E+3 -> 0 +ddsamq1725 samequantum sNaN sNaN -> 1 +-- noisy NaNs +ddsamq1730 samequantum sNaN3 sNaN3 -> 1 +ddsamq1731 samequantum sNaN3 sNaN4 -> 1 +ddsamq1732 samequantum NaN3 NaN3 -> 1 +ddsamq1733 samequantum NaN3 NaN4 -> 1 +ddsamq1734 samequantum sNaN3 3 -> 0 +ddsamq1735 samequantum NaN3 3 -> 0 +ddsamq1736 samequantum 4 sNaN4 -> 0 +ddsamq1737 samequantum 3 NaN3 -> 0 +ddsamq1738 samequantum Inf sNaN4 -> 0 +ddsamq1739 samequantum -Inf NaN3 -> 0 + diff --git a/Lib/test/decimaltestdata/ddScaleB.decTest b/Lib/test/decimaltestdata/ddScaleB.decTest index 6ba3e39..edee11b 100644 --- a/Lib/test/decimaltestdata/ddScaleB.decTest +++ b/Lib/test/decimaltestdata/ddScaleB.decTest @@ -1,243 +1,243 @@ ------------------------------------------------------------------------- --- ddScalebB.decTest -- scale a decDouble by powers of 10 -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Max |rhs| is 2*(384+16) = 800 - --- Sanity checks -ddscb001 scaleb 7.50 10 -> 7.50E+10 -ddscb002 scaleb 7.50 3 -> 7.50E+3 -ddscb003 scaleb 7.50 2 -> 750 -ddscb004 scaleb 7.50 1 -> 75.0 -ddscb005 scaleb 7.50 0 -> 7.50 -ddscb006 scaleb 7.50 -1 -> 0.750 -ddscb007 scaleb 7.50 -2 -> 0.0750 -ddscb008 scaleb 7.50 -10 -> 7.50E-10 -ddscb009 scaleb -7.50 3 -> -7.50E+3 -ddscb010 scaleb -7.50 2 -> -750 -ddscb011 scaleb -7.50 1 -> -75.0 -ddscb012 scaleb -7.50 0 -> -7.50 -ddscb013 scaleb -7.50 -1 -> -0.750 - --- Infinities -ddscb014 scaleb Infinity 1 -> Infinity -ddscb015 scaleb -Infinity 2 -> -Infinity -ddscb016 scaleb Infinity -1 -> Infinity -ddscb017 scaleb -Infinity -2 -> -Infinity - --- Next two are somewhat undefined in 754r; treat as non-integer -ddscb018 scaleb 10 Infinity -> NaN Invalid_operation -ddscb019 scaleb 10 -Infinity -> NaN Invalid_operation - --- NaNs are undefined in 754r; assume usual processing --- NaNs, 0 payload -ddscb021 scaleb NaN 1 -> NaN -ddscb022 scaleb -NaN -1 -> -NaN -ddscb023 scaleb sNaN 1 -> NaN Invalid_operation -ddscb024 scaleb -sNaN 1 -> -NaN Invalid_operation -ddscb025 scaleb 4 NaN -> NaN -ddscb026 scaleb -Inf -NaN -> -NaN -ddscb027 scaleb 4 sNaN -> NaN Invalid_operation -ddscb028 scaleb Inf -sNaN -> -NaN Invalid_operation - --- non-integer RHS -ddscb030 scaleb 1.23 1 -> 12.3 -ddscb031 scaleb 1.23 1.00 -> NaN Invalid_operation -ddscb032 scaleb 1.23 1.1 -> NaN Invalid_operation -ddscb033 scaleb 1.23 1.01 -> NaN Invalid_operation -ddscb034 scaleb 1.23 0.01 -> NaN Invalid_operation -ddscb035 scaleb 1.23 0.11 -> NaN Invalid_operation -ddscb036 scaleb 1.23 0.999999999 -> NaN Invalid_operation -ddscb037 scaleb 1.23 -1 -> 0.123 -ddscb038 scaleb 1.23 -1.00 -> NaN Invalid_operation -ddscb039 scaleb 1.23 -1.1 -> NaN Invalid_operation -ddscb040 scaleb 1.23 -1.01 -> NaN Invalid_operation -ddscb041 scaleb 1.23 -0.01 -> NaN Invalid_operation -ddscb042 scaleb 1.23 -0.11 -> NaN Invalid_operation -ddscb043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation -ddscb044 scaleb 1.23 0.1 -> NaN Invalid_operation -ddscb045 scaleb 1.23 1E+1 -> NaN Invalid_operation -ddscb046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation -ddscb047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation - --- out-of range RHS -ddscb120 scaleb 1.23 799 -> Infinity Overflow Inexact Rounded -ddscb121 scaleb 1.23 800 -> Infinity Overflow Inexact Rounded -ddscb122 scaleb 1.23 801 -> NaN Invalid_operation -ddscb123 scaleb 1.23 802 -> NaN Invalid_operation -ddscb124 scaleb 1.23 -799 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddscb125 scaleb 1.23 -800 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddscb126 scaleb 1.23 -801 -> NaN Invalid_operation -ddscb127 scaleb 1.23 -802 -> NaN Invalid_operation - --- NaNs, non-0 payload --- propagating NaNs -ddscb861 scaleb NaN01 -Inf -> NaN1 -ddscb862 scaleb -NaN02 -1000 -> -NaN2 -ddscb863 scaleb NaN03 1000 -> NaN3 -ddscb864 scaleb NaN04 Inf -> NaN4 -ddscb865 scaleb NaN05 NaN61 -> NaN5 -ddscb866 scaleb -Inf -NaN71 -> -NaN71 -ddscb867 scaleb -1000 NaN81 -> NaN81 -ddscb868 scaleb 1000 NaN91 -> NaN91 -ddscb869 scaleb Inf NaN101 -> NaN101 -ddscb871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation -ddscb872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation -ddscb873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation -ddscb874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation -ddscb875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation -ddscb876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation -ddscb877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation -ddscb878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation -ddscb879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation -ddscb880 scaleb Inf sNaN231 -> NaN231 Invalid_operation -ddscb881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation - --- finites -ddscb051 scaleb 7 -2 -> 0.07 -ddscb052 scaleb -7 -2 -> -0.07 -ddscb053 scaleb 75 -2 -> 0.75 -ddscb054 scaleb -75 -2 -> -0.75 -ddscb055 scaleb 7.50 -2 -> 0.0750 -ddscb056 scaleb -7.50 -2 -> -0.0750 -ddscb057 scaleb 7.500 -2 -> 0.07500 -ddscb058 scaleb -7.500 -2 -> -0.07500 -ddscb061 scaleb 7 -1 -> 0.7 -ddscb062 scaleb -7 -1 -> -0.7 -ddscb063 scaleb 75 -1 -> 7.5 -ddscb064 scaleb -75 -1 -> -7.5 -ddscb065 scaleb 7.50 -1 -> 0.750 -ddscb066 scaleb -7.50 -1 -> -0.750 -ddscb067 scaleb 7.500 -1 -> 0.7500 -ddscb068 scaleb -7.500 -1 -> -0.7500 -ddscb071 scaleb 7 0 -> 7 -ddscb072 scaleb -7 0 -> -7 -ddscb073 scaleb 75 0 -> 75 -ddscb074 scaleb -75 0 -> -75 -ddscb075 scaleb 7.50 0 -> 7.50 -ddscb076 scaleb -7.50 0 -> -7.50 -ddscb077 scaleb 7.500 0 -> 7.500 -ddscb078 scaleb -7.500 0 -> -7.500 -ddscb081 scaleb 7 1 -> 7E+1 -ddscb082 scaleb -7 1 -> -7E+1 -ddscb083 scaleb 75 1 -> 7.5E+2 -ddscb084 scaleb -75 1 -> -7.5E+2 -ddscb085 scaleb 7.50 1 -> 75.0 -ddscb086 scaleb -7.50 1 -> -75.0 -ddscb087 scaleb 7.500 1 -> 75.00 -ddscb088 scaleb -7.500 1 -> -75.00 -ddscb091 scaleb 7 2 -> 7E+2 -ddscb092 scaleb -7 2 -> -7E+2 -ddscb093 scaleb 75 2 -> 7.5E+3 -ddscb094 scaleb -75 2 -> -7.5E+3 -ddscb095 scaleb 7.50 2 -> 750 -ddscb096 scaleb -7.50 2 -> -750 -ddscb097 scaleb 7.500 2 -> 750.0 -ddscb098 scaleb -7.500 2 -> -750.0 - --- zeros -ddscb111 scaleb 0 1 -> 0E+1 -ddscb112 scaleb -0 2 -> -0E+2 -ddscb113 scaleb 0E+4 3 -> 0E+7 -ddscb114 scaleb -0E+4 4 -> -0E+8 -ddscb115 scaleb 0.0000 5 -> 0E+1 -ddscb116 scaleb -0.0000 6 -> -0E+2 -ddscb117 scaleb 0E-141 7 -> 0E-134 -ddscb118 scaleb -0E-141 8 -> -0E-133 - --- Nmax, Nmin, Ntiny -ddscb132 scaleb 9.999999999999999E+384 +384 -> Infinity Overflow Inexact Rounded -ddscb133 scaleb 9.999999999999999E+384 +10 -> Infinity Overflow Inexact Rounded -ddscb134 scaleb 9.999999999999999E+384 +1 -> Infinity Overflow Inexact Rounded -ddscb135 scaleb 9.999999999999999E+384 0 -> 9.999999999999999E+384 -ddscb136 scaleb 9.999999999999999E+384 -1 -> 9.999999999999999E+383 -ddscb137 scaleb 1E-383 +1 -> 1E-382 -ddscb138 scaleb 1E-383 -0 -> 1E-383 -ddscb139 scaleb 1E-383 -1 -> 1E-384 Subnormal -ddscb140 scaleb 1.000000000000000E-383 +1 -> 1.000000000000000E-382 -ddscb141 scaleb 1.000000000000000E-383 0 -> 1.000000000000000E-383 -ddscb142 scaleb 1.000000000000000E-383 -1 -> 1.00000000000000E-384 Subnormal Rounded -ddscb143 scaleb 1E-398 +1 -> 1E-397 Subnormal -ddscb144 scaleb 1E-398 -0 -> 1E-398 Subnormal -ddscb145 scaleb 1E-398 -1 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped - -ddscb150 scaleb -1E-398 +1 -> -1E-397 Subnormal -ddscb151 scaleb -1E-398 -0 -> -1E-398 Subnormal -ddscb152 scaleb -1E-398 -1 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped -ddscb153 scaleb -1.000000000000000E-383 +1 -> -1.000000000000000E-382 -ddscb154 scaleb -1.000000000000000E-383 +0 -> -1.000000000000000E-383 -ddscb155 scaleb -1.000000000000000E-383 -1 -> -1.00000000000000E-384 Subnormal Rounded -ddscb156 scaleb -1E-383 +1 -> -1E-382 -ddscb157 scaleb -1E-383 -0 -> -1E-383 -ddscb158 scaleb -1E-383 -1 -> -1E-384 Subnormal -ddscb159 scaleb -9.999999999999999E+384 +1 -> -Infinity Overflow Inexact Rounded -ddscb160 scaleb -9.999999999999999E+384 +0 -> -9.999999999999999E+384 -ddscb161 scaleb -9.999999999999999E+384 -1 -> -9.999999999999999E+383 -ddscb162 scaleb -9E+384 +1 -> -Infinity Overflow Inexact Rounded -ddscb163 scaleb -1E+384 +1 -> -Infinity Overflow Inexact Rounded - --- some Origami --- (these check that overflow is being done correctly) -ddscb171 scaleb 1000E+365 +1 -> 1.000E+369 -ddscb172 scaleb 1000E+366 +1 -> 1.000E+370 -ddscb173 scaleb 1000E+367 +1 -> 1.000E+371 -ddscb174 scaleb 1000E+368 +1 -> 1.000E+372 -ddscb175 scaleb 1000E+369 +1 -> 1.0000E+373 Clamped -ddscb176 scaleb 1000E+370 +1 -> 1.00000E+374 Clamped -ddscb177 scaleb 1000E+371 +1 -> 1.000000E+375 Clamped -ddscb178 scaleb 1000E+372 +1 -> 1.0000000E+376 Clamped -ddscb179 scaleb 1000E+373 +1 -> 1.00000000E+377 Clamped -ddscb180 scaleb 1000E+374 +1 -> 1.000000000E+378 Clamped -ddscb181 scaleb 1000E+375 +1 -> 1.0000000000E+379 Clamped -ddscb182 scaleb 1000E+376 +1 -> 1.00000000000E+380 Clamped -ddscb183 scaleb 1000E+377 +1 -> 1.000000000000E+381 Clamped -ddscb184 scaleb 1000E+378 +1 -> 1.0000000000000E+382 Clamped -ddscb185 scaleb 1000E+379 +1 -> 1.00000000000000E+383 Clamped -ddscb186 scaleb 1000E+380 +1 -> 1.000000000000000E+384 Clamped -ddscb187 scaleb 1000E+381 +1 -> Infinity Overflow Inexact Rounded - --- and a few more subnormal truncations --- (these check that underflow is being done correctly) -ddscb201 scaleb 1.000000000000000E-383 0 -> 1.000000000000000E-383 -ddscb202 scaleb 1.000000000000000E-383 -1 -> 1.00000000000000E-384 Subnormal Rounded -ddscb203 scaleb 1.000000000000000E-383 -2 -> 1.0000000000000E-385 Subnormal Rounded -ddscb204 scaleb 1.000000000000000E-383 -3 -> 1.000000000000E-386 Subnormal Rounded -ddscb205 scaleb 1.000000000000000E-383 -4 -> 1.00000000000E-387 Subnormal Rounded -ddscb206 scaleb 1.000000000000000E-383 -5 -> 1.0000000000E-388 Subnormal Rounded -ddscb207 scaleb 1.000000000000000E-383 -6 -> 1.000000000E-389 Subnormal Rounded -ddscb208 scaleb 1.000000000000000E-383 -7 -> 1.00000000E-390 Subnormal Rounded -ddscb209 scaleb 1.000000000000000E-383 -8 -> 1.0000000E-391 Subnormal Rounded -ddscb210 scaleb 1.000000000000000E-383 -9 -> 1.000000E-392 Subnormal Rounded -ddscb211 scaleb 1.000000000000000E-383 -10 -> 1.00000E-393 Subnormal Rounded -ddscb212 scaleb 1.000000000000000E-383 -11 -> 1.0000E-394 Subnormal Rounded -ddscb213 scaleb 1.000000000000000E-383 -12 -> 1.000E-395 Subnormal Rounded -ddscb214 scaleb 1.000000000000000E-383 -13 -> 1.00E-396 Subnormal Rounded -ddscb215 scaleb 1.000000000000000E-383 -14 -> 1.0E-397 Subnormal Rounded -ddscb216 scaleb 1.000000000000000E-383 -15 -> 1E-398 Subnormal Rounded -ddscb217 scaleb 1.000000000000000E-383 -16 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped -ddscb218 scaleb 1.000000000000000E-383 -17 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped - +------------------------------------------------------------------------ +-- ddScalebB.decTest -- scale a decDouble by powers of 10 -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Max |rhs| is 2*(384+16) = 800 + +-- Sanity checks +ddscb001 scaleb 7.50 10 -> 7.50E+10 +ddscb002 scaleb 7.50 3 -> 7.50E+3 +ddscb003 scaleb 7.50 2 -> 750 +ddscb004 scaleb 7.50 1 -> 75.0 +ddscb005 scaleb 7.50 0 -> 7.50 +ddscb006 scaleb 7.50 -1 -> 0.750 +ddscb007 scaleb 7.50 -2 -> 0.0750 +ddscb008 scaleb 7.50 -10 -> 7.50E-10 +ddscb009 scaleb -7.50 3 -> -7.50E+3 +ddscb010 scaleb -7.50 2 -> -750 +ddscb011 scaleb -7.50 1 -> -75.0 +ddscb012 scaleb -7.50 0 -> -7.50 +ddscb013 scaleb -7.50 -1 -> -0.750 + +-- Infinities +ddscb014 scaleb Infinity 1 -> Infinity +ddscb015 scaleb -Infinity 2 -> -Infinity +ddscb016 scaleb Infinity -1 -> Infinity +ddscb017 scaleb -Infinity -2 -> -Infinity + +-- Next two are somewhat undefined in 754r; treat as non-integer +ddscb018 scaleb 10 Infinity -> NaN Invalid_operation +ddscb019 scaleb 10 -Infinity -> NaN Invalid_operation + +-- NaNs are undefined in 754r; assume usual processing +-- NaNs, 0 payload +ddscb021 scaleb NaN 1 -> NaN +ddscb022 scaleb -NaN -1 -> -NaN +ddscb023 scaleb sNaN 1 -> NaN Invalid_operation +ddscb024 scaleb -sNaN 1 -> -NaN Invalid_operation +ddscb025 scaleb 4 NaN -> NaN +ddscb026 scaleb -Inf -NaN -> -NaN +ddscb027 scaleb 4 sNaN -> NaN Invalid_operation +ddscb028 scaleb Inf -sNaN -> -NaN Invalid_operation + +-- non-integer RHS +ddscb030 scaleb 1.23 1 -> 12.3 +ddscb031 scaleb 1.23 1.00 -> NaN Invalid_operation +ddscb032 scaleb 1.23 1.1 -> NaN Invalid_operation +ddscb033 scaleb 1.23 1.01 -> NaN Invalid_operation +ddscb034 scaleb 1.23 0.01 -> NaN Invalid_operation +ddscb035 scaleb 1.23 0.11 -> NaN Invalid_operation +ddscb036 scaleb 1.23 0.999999999 -> NaN Invalid_operation +ddscb037 scaleb 1.23 -1 -> 0.123 +ddscb038 scaleb 1.23 -1.00 -> NaN Invalid_operation +ddscb039 scaleb 1.23 -1.1 -> NaN Invalid_operation +ddscb040 scaleb 1.23 -1.01 -> NaN Invalid_operation +ddscb041 scaleb 1.23 -0.01 -> NaN Invalid_operation +ddscb042 scaleb 1.23 -0.11 -> NaN Invalid_operation +ddscb043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation +ddscb044 scaleb 1.23 0.1 -> NaN Invalid_operation +ddscb045 scaleb 1.23 1E+1 -> NaN Invalid_operation +ddscb046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation +ddscb047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation + +-- out-of range RHS +ddscb120 scaleb 1.23 799 -> Infinity Overflow Inexact Rounded +ddscb121 scaleb 1.23 800 -> Infinity Overflow Inexact Rounded +ddscb122 scaleb 1.23 801 -> NaN Invalid_operation +ddscb123 scaleb 1.23 802 -> NaN Invalid_operation +ddscb124 scaleb 1.23 -799 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddscb125 scaleb 1.23 -800 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddscb126 scaleb 1.23 -801 -> NaN Invalid_operation +ddscb127 scaleb 1.23 -802 -> NaN Invalid_operation + +-- NaNs, non-0 payload +-- propagating NaNs +ddscb861 scaleb NaN01 -Inf -> NaN1 +ddscb862 scaleb -NaN02 -1000 -> -NaN2 +ddscb863 scaleb NaN03 1000 -> NaN3 +ddscb864 scaleb NaN04 Inf -> NaN4 +ddscb865 scaleb NaN05 NaN61 -> NaN5 +ddscb866 scaleb -Inf -NaN71 -> -NaN71 +ddscb867 scaleb -1000 NaN81 -> NaN81 +ddscb868 scaleb 1000 NaN91 -> NaN91 +ddscb869 scaleb Inf NaN101 -> NaN101 +ddscb871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation +ddscb872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation +ddscb873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation +ddscb874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation +ddscb875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation +ddscb876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation +ddscb877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation +ddscb878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation +ddscb879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation +ddscb880 scaleb Inf sNaN231 -> NaN231 Invalid_operation +ddscb881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation + +-- finites +ddscb051 scaleb 7 -2 -> 0.07 +ddscb052 scaleb -7 -2 -> -0.07 +ddscb053 scaleb 75 -2 -> 0.75 +ddscb054 scaleb -75 -2 -> -0.75 +ddscb055 scaleb 7.50 -2 -> 0.0750 +ddscb056 scaleb -7.50 -2 -> -0.0750 +ddscb057 scaleb 7.500 -2 -> 0.07500 +ddscb058 scaleb -7.500 -2 -> -0.07500 +ddscb061 scaleb 7 -1 -> 0.7 +ddscb062 scaleb -7 -1 -> -0.7 +ddscb063 scaleb 75 -1 -> 7.5 +ddscb064 scaleb -75 -1 -> -7.5 +ddscb065 scaleb 7.50 -1 -> 0.750 +ddscb066 scaleb -7.50 -1 -> -0.750 +ddscb067 scaleb 7.500 -1 -> 0.7500 +ddscb068 scaleb -7.500 -1 -> -0.7500 +ddscb071 scaleb 7 0 -> 7 +ddscb072 scaleb -7 0 -> -7 +ddscb073 scaleb 75 0 -> 75 +ddscb074 scaleb -75 0 -> -75 +ddscb075 scaleb 7.50 0 -> 7.50 +ddscb076 scaleb -7.50 0 -> -7.50 +ddscb077 scaleb 7.500 0 -> 7.500 +ddscb078 scaleb -7.500 0 -> -7.500 +ddscb081 scaleb 7 1 -> 7E+1 +ddscb082 scaleb -7 1 -> -7E+1 +ddscb083 scaleb 75 1 -> 7.5E+2 +ddscb084 scaleb -75 1 -> -7.5E+2 +ddscb085 scaleb 7.50 1 -> 75.0 +ddscb086 scaleb -7.50 1 -> -75.0 +ddscb087 scaleb 7.500 1 -> 75.00 +ddscb088 scaleb -7.500 1 -> -75.00 +ddscb091 scaleb 7 2 -> 7E+2 +ddscb092 scaleb -7 2 -> -7E+2 +ddscb093 scaleb 75 2 -> 7.5E+3 +ddscb094 scaleb -75 2 -> -7.5E+3 +ddscb095 scaleb 7.50 2 -> 750 +ddscb096 scaleb -7.50 2 -> -750 +ddscb097 scaleb 7.500 2 -> 750.0 +ddscb098 scaleb -7.500 2 -> -750.0 + +-- zeros +ddscb111 scaleb 0 1 -> 0E+1 +ddscb112 scaleb -0 2 -> -0E+2 +ddscb113 scaleb 0E+4 3 -> 0E+7 +ddscb114 scaleb -0E+4 4 -> -0E+8 +ddscb115 scaleb 0.0000 5 -> 0E+1 +ddscb116 scaleb -0.0000 6 -> -0E+2 +ddscb117 scaleb 0E-141 7 -> 0E-134 +ddscb118 scaleb -0E-141 8 -> -0E-133 + +-- Nmax, Nmin, Ntiny +ddscb132 scaleb 9.999999999999999E+384 +384 -> Infinity Overflow Inexact Rounded +ddscb133 scaleb 9.999999999999999E+384 +10 -> Infinity Overflow Inexact Rounded +ddscb134 scaleb 9.999999999999999E+384 +1 -> Infinity Overflow Inexact Rounded +ddscb135 scaleb 9.999999999999999E+384 0 -> 9.999999999999999E+384 +ddscb136 scaleb 9.999999999999999E+384 -1 -> 9.999999999999999E+383 +ddscb137 scaleb 1E-383 +1 -> 1E-382 +ddscb138 scaleb 1E-383 -0 -> 1E-383 +ddscb139 scaleb 1E-383 -1 -> 1E-384 Subnormal +ddscb140 scaleb 1.000000000000000E-383 +1 -> 1.000000000000000E-382 +ddscb141 scaleb 1.000000000000000E-383 0 -> 1.000000000000000E-383 +ddscb142 scaleb 1.000000000000000E-383 -1 -> 1.00000000000000E-384 Subnormal Rounded +ddscb143 scaleb 1E-398 +1 -> 1E-397 Subnormal +ddscb144 scaleb 1E-398 -0 -> 1E-398 Subnormal +ddscb145 scaleb 1E-398 -1 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped + +ddscb150 scaleb -1E-398 +1 -> -1E-397 Subnormal +ddscb151 scaleb -1E-398 -0 -> -1E-398 Subnormal +ddscb152 scaleb -1E-398 -1 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped +ddscb153 scaleb -1.000000000000000E-383 +1 -> -1.000000000000000E-382 +ddscb154 scaleb -1.000000000000000E-383 +0 -> -1.000000000000000E-383 +ddscb155 scaleb -1.000000000000000E-383 -1 -> -1.00000000000000E-384 Subnormal Rounded +ddscb156 scaleb -1E-383 +1 -> -1E-382 +ddscb157 scaleb -1E-383 -0 -> -1E-383 +ddscb158 scaleb -1E-383 -1 -> -1E-384 Subnormal +ddscb159 scaleb -9.999999999999999E+384 +1 -> -Infinity Overflow Inexact Rounded +ddscb160 scaleb -9.999999999999999E+384 +0 -> -9.999999999999999E+384 +ddscb161 scaleb -9.999999999999999E+384 -1 -> -9.999999999999999E+383 +ddscb162 scaleb -9E+384 +1 -> -Infinity Overflow Inexact Rounded +ddscb163 scaleb -1E+384 +1 -> -Infinity Overflow Inexact Rounded + +-- some Origami +-- (these check that overflow is being done correctly) +ddscb171 scaleb 1000E+365 +1 -> 1.000E+369 +ddscb172 scaleb 1000E+366 +1 -> 1.000E+370 +ddscb173 scaleb 1000E+367 +1 -> 1.000E+371 +ddscb174 scaleb 1000E+368 +1 -> 1.000E+372 +ddscb175 scaleb 1000E+369 +1 -> 1.0000E+373 Clamped +ddscb176 scaleb 1000E+370 +1 -> 1.00000E+374 Clamped +ddscb177 scaleb 1000E+371 +1 -> 1.000000E+375 Clamped +ddscb178 scaleb 1000E+372 +1 -> 1.0000000E+376 Clamped +ddscb179 scaleb 1000E+373 +1 -> 1.00000000E+377 Clamped +ddscb180 scaleb 1000E+374 +1 -> 1.000000000E+378 Clamped +ddscb181 scaleb 1000E+375 +1 -> 1.0000000000E+379 Clamped +ddscb182 scaleb 1000E+376 +1 -> 1.00000000000E+380 Clamped +ddscb183 scaleb 1000E+377 +1 -> 1.000000000000E+381 Clamped +ddscb184 scaleb 1000E+378 +1 -> 1.0000000000000E+382 Clamped +ddscb185 scaleb 1000E+379 +1 -> 1.00000000000000E+383 Clamped +ddscb186 scaleb 1000E+380 +1 -> 1.000000000000000E+384 Clamped +ddscb187 scaleb 1000E+381 +1 -> Infinity Overflow Inexact Rounded + +-- and a few more subnormal truncations +-- (these check that underflow is being done correctly) +ddscb201 scaleb 1.000000000000000E-383 0 -> 1.000000000000000E-383 +ddscb202 scaleb 1.000000000000000E-383 -1 -> 1.00000000000000E-384 Subnormal Rounded +ddscb203 scaleb 1.000000000000000E-383 -2 -> 1.0000000000000E-385 Subnormal Rounded +ddscb204 scaleb 1.000000000000000E-383 -3 -> 1.000000000000E-386 Subnormal Rounded +ddscb205 scaleb 1.000000000000000E-383 -4 -> 1.00000000000E-387 Subnormal Rounded +ddscb206 scaleb 1.000000000000000E-383 -5 -> 1.0000000000E-388 Subnormal Rounded +ddscb207 scaleb 1.000000000000000E-383 -6 -> 1.000000000E-389 Subnormal Rounded +ddscb208 scaleb 1.000000000000000E-383 -7 -> 1.00000000E-390 Subnormal Rounded +ddscb209 scaleb 1.000000000000000E-383 -8 -> 1.0000000E-391 Subnormal Rounded +ddscb210 scaleb 1.000000000000000E-383 -9 -> 1.000000E-392 Subnormal Rounded +ddscb211 scaleb 1.000000000000000E-383 -10 -> 1.00000E-393 Subnormal Rounded +ddscb212 scaleb 1.000000000000000E-383 -11 -> 1.0000E-394 Subnormal Rounded +ddscb213 scaleb 1.000000000000000E-383 -12 -> 1.000E-395 Subnormal Rounded +ddscb214 scaleb 1.000000000000000E-383 -13 -> 1.00E-396 Subnormal Rounded +ddscb215 scaleb 1.000000000000000E-383 -14 -> 1.0E-397 Subnormal Rounded +ddscb216 scaleb 1.000000000000000E-383 -15 -> 1E-398 Subnormal Rounded +ddscb217 scaleb 1.000000000000000E-383 -16 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped +ddscb218 scaleb 1.000000000000000E-383 -17 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped + diff --git a/Lib/test/decimaltestdata/ddShift.decTest b/Lib/test/decimaltestdata/ddShift.decTest index ec47240..f62a236 100644 --- a/Lib/test/decimaltestdata/ddShift.decTest +++ b/Lib/test/decimaltestdata/ddShift.decTest @@ -1,262 +1,262 @@ ------------------------------------------------------------------------- --- ddShift.decTest -- shift decDouble coefficient left or right -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check -ddshi001 shift 0 0 -> 0 -ddshi002 shift 0 2 -> 0 -ddshi003 shift 1 2 -> 100 -ddshi004 shift 1 15 -> 1000000000000000 -ddshi005 shift 1 16 -> 0 -ddshi006 shift 1 -1 -> 0 -ddshi007 shift 0 -2 -> 0 -ddshi008 shift 1234567890123456 -1 -> 123456789012345 -ddshi009 shift 1234567890123456 -15 -> 1 -ddshi010 shift 1234567890123456 -16 -> 0 -ddshi011 shift 9934567890123456 -15 -> 9 -ddshi012 shift 9934567890123456 -16 -> 0 - --- rhs must be an integer -ddshi015 shift 1 1.5 -> NaN Invalid_operation -ddshi016 shift 1 1.0 -> NaN Invalid_operation -ddshi017 shift 1 0.1 -> NaN Invalid_operation -ddshi018 shift 1 0.0 -> NaN Invalid_operation -ddshi019 shift 1 1E+1 -> NaN Invalid_operation -ddshi020 shift 1 1E+99 -> NaN Invalid_operation -ddshi021 shift 1 Inf -> NaN Invalid_operation -ddshi022 shift 1 -Inf -> NaN Invalid_operation --- and |rhs| <= precision -ddshi025 shift 1 -1000 -> NaN Invalid_operation -ddshi026 shift 1 -17 -> NaN Invalid_operation -ddshi027 shift 1 17 -> NaN Invalid_operation -ddshi028 shift 1 1000 -> NaN Invalid_operation - --- full shifting pattern -ddshi030 shift 1234567890123456 -16 -> 0 -ddshi031 shift 1234567890123456 -15 -> 1 -ddshi032 shift 1234567890123456 -14 -> 12 -ddshi033 shift 1234567890123456 -13 -> 123 -ddshi034 shift 1234567890123456 -12 -> 1234 -ddshi035 shift 1234567890123456 -11 -> 12345 -ddshi036 shift 1234567890123456 -10 -> 123456 -ddshi037 shift 1234567890123456 -9 -> 1234567 -ddshi038 shift 1234567890123456 -8 -> 12345678 -ddshi039 shift 1234567890123456 -7 -> 123456789 -ddshi040 shift 1234567890123456 -6 -> 1234567890 -ddshi041 shift 1234567890123456 -5 -> 12345678901 -ddshi042 shift 1234567890123456 -4 -> 123456789012 -ddshi043 shift 1234567890123456 -3 -> 1234567890123 -ddshi044 shift 1234567890123456 -2 -> 12345678901234 -ddshi045 shift 1234567890123456 -1 -> 123456789012345 -ddshi046 shift 1234567890123456 -0 -> 1234567890123456 - -ddshi047 shift 1234567890123456 +0 -> 1234567890123456 -ddshi048 shift 1234567890123456 +1 -> 2345678901234560 -ddshi049 shift 1234567890123456 +2 -> 3456789012345600 -ddshi050 shift 1234567890123456 +3 -> 4567890123456000 -ddshi051 shift 1234567890123456 +4 -> 5678901234560000 -ddshi052 shift 1234567890123456 +5 -> 6789012345600000 -ddshi053 shift 1234567890123456 +6 -> 7890123456000000 -ddshi054 shift 1234567890123456 +7 -> 8901234560000000 -ddshi055 shift 1234567890123456 +8 -> 9012345600000000 -ddshi056 shift 1234567890123456 +9 -> 123456000000000 -ddshi057 shift 1234567890123456 +10 -> 1234560000000000 -ddshi058 shift 1234567890123456 +11 -> 2345600000000000 -ddshi059 shift 1234567890123456 +12 -> 3456000000000000 -ddshi060 shift 1234567890123456 +13 -> 4560000000000000 -ddshi061 shift 1234567890123456 +14 -> 5600000000000000 -ddshi062 shift 1234567890123456 +15 -> 6000000000000000 -ddshi063 shift 1234567890123456 +16 -> 0 - --- zeros -ddshi070 shift 0E-10 +9 -> 0E-10 -ddshi071 shift 0E-10 -9 -> 0E-10 -ddshi072 shift 0.000 +9 -> 0.000 -ddshi073 shift 0.000 -9 -> 0.000 -ddshi074 shift 0E+10 +9 -> 0E+10 -ddshi075 shift 0E+10 -9 -> 0E+10 -ddshi076 shift -0E-10 +9 -> -0E-10 -ddshi077 shift -0E-10 -9 -> -0E-10 -ddshi078 shift -0.000 +9 -> -0.000 -ddshi079 shift -0.000 -9 -> -0.000 -ddshi080 shift -0E+10 +9 -> -0E+10 -ddshi081 shift -0E+10 -9 -> -0E+10 - --- Nmax, Nmin, Ntiny -ddshi141 shift 9.999999999999999E+384 -1 -> 9.99999999999999E+383 -ddshi142 shift 9.999999999999999E+384 -15 -> 9E+369 -ddshi143 shift 9.999999999999999E+384 1 -> 9.999999999999990E+384 -ddshi144 shift 9.999999999999999E+384 15 -> 9.000000000000000E+384 -ddshi145 shift 1E-383 -1 -> 0E-383 -ddshi146 shift 1E-383 -15 -> 0E-383 -ddshi147 shift 1E-383 1 -> 1.0E-382 -ddshi148 shift 1E-383 15 -> 1.000000000000000E-368 -ddshi151 shift 1.000000000000000E-383 -1 -> 1.00000000000000E-384 -ddshi152 shift 1.000000000000000E-383 -15 -> 1E-398 -ddshi153 shift 1.000000000000000E-383 1 -> 0E-398 -ddshi154 shift 1.000000000000000E-383 15 -> 0E-398 -ddshi155 shift 9.000000000000000E-383 -1 -> 9.00000000000000E-384 -ddshi156 shift 9.000000000000000E-383 -15 -> 9E-398 -ddshi157 shift 9.000000000000000E-383 1 -> 0E-398 -ddshi158 shift 9.000000000000000E-383 15 -> 0E-398 -ddshi160 shift 1E-398 -1 -> 0E-398 -ddshi161 shift 1E-398 -15 -> 0E-398 -ddshi162 shift 1E-398 1 -> 1.0E-397 -ddshi163 shift 1E-398 15 -> 1.000000000000000E-383 --- negatives -ddshi171 shift -9.999999999999999E+384 -1 -> -9.99999999999999E+383 -ddshi172 shift -9.999999999999999E+384 -15 -> -9E+369 -ddshi173 shift -9.999999999999999E+384 1 -> -9.999999999999990E+384 -ddshi174 shift -9.999999999999999E+384 15 -> -9.000000000000000E+384 -ddshi175 shift -1E-383 -1 -> -0E-383 -ddshi176 shift -1E-383 -15 -> -0E-383 -ddshi177 shift -1E-383 1 -> -1.0E-382 -ddshi178 shift -1E-383 15 -> -1.000000000000000E-368 -ddshi181 shift -1.000000000000000E-383 -1 -> -1.00000000000000E-384 -ddshi182 shift -1.000000000000000E-383 -15 -> -1E-398 -ddshi183 shift -1.000000000000000E-383 1 -> -0E-398 -ddshi184 shift -1.000000000000000E-383 15 -> -0E-398 -ddshi185 shift -9.000000000000000E-383 -1 -> -9.00000000000000E-384 -ddshi186 shift -9.000000000000000E-383 -15 -> -9E-398 -ddshi187 shift -9.000000000000000E-383 1 -> -0E-398 -ddshi188 shift -9.000000000000000E-383 15 -> -0E-398 -ddshi190 shift -1E-398 -1 -> -0E-398 -ddshi191 shift -1E-398 -15 -> -0E-398 -ddshi192 shift -1E-398 1 -> -1.0E-397 -ddshi193 shift -1E-398 15 -> -1.000000000000000E-383 - --- more negatives (of sanities) -ddshi201 shift -0 0 -> -0 -ddshi202 shift -0 2 -> -0 -ddshi203 shift -1 2 -> -100 -ddshi204 shift -1 15 -> -1000000000000000 -ddshi205 shift -1 16 -> -0 -ddshi206 shift -1 -1 -> -0 -ddshi207 shift -0 -2 -> -0 -ddshi208 shift -1234567890123456 -1 -> -123456789012345 -ddshi209 shift -1234567890123456 -15 -> -1 -ddshi210 shift -1234567890123456 -16 -> -0 -ddshi211 shift -9934567890123456 -15 -> -9 -ddshi212 shift -9934567890123456 -16 -> -0 - - --- Specials; NaNs are handled as usual -ddshi781 shift -Inf -8 -> -Infinity -ddshi782 shift -Inf -1 -> -Infinity -ddshi783 shift -Inf -0 -> -Infinity -ddshi784 shift -Inf 0 -> -Infinity -ddshi785 shift -Inf 1 -> -Infinity -ddshi786 shift -Inf 8 -> -Infinity -ddshi787 shift -1000 -Inf -> NaN Invalid_operation -ddshi788 shift -Inf -Inf -> NaN Invalid_operation -ddshi789 shift -1 -Inf -> NaN Invalid_operation -ddshi790 shift -0 -Inf -> NaN Invalid_operation -ddshi791 shift 0 -Inf -> NaN Invalid_operation -ddshi792 shift 1 -Inf -> NaN Invalid_operation -ddshi793 shift 1000 -Inf -> NaN Invalid_operation -ddshi794 shift Inf -Inf -> NaN Invalid_operation - -ddshi800 shift Inf -Inf -> NaN Invalid_operation -ddshi801 shift Inf -8 -> Infinity -ddshi802 shift Inf -1 -> Infinity -ddshi803 shift Inf -0 -> Infinity -ddshi804 shift Inf 0 -> Infinity -ddshi805 shift Inf 1 -> Infinity -ddshi806 shift Inf 8 -> Infinity -ddshi807 shift Inf Inf -> NaN Invalid_operation -ddshi808 shift -1000 Inf -> NaN Invalid_operation -ddshi809 shift -Inf Inf -> NaN Invalid_operation -ddshi810 shift -1 Inf -> NaN Invalid_operation -ddshi811 shift -0 Inf -> NaN Invalid_operation -ddshi812 shift 0 Inf -> NaN Invalid_operation -ddshi813 shift 1 Inf -> NaN Invalid_operation -ddshi814 shift 1000 Inf -> NaN Invalid_operation -ddshi815 shift Inf Inf -> NaN Invalid_operation - -ddshi821 shift NaN -Inf -> NaN -ddshi822 shift NaN -1000 -> NaN -ddshi823 shift NaN -1 -> NaN -ddshi824 shift NaN -0 -> NaN -ddshi825 shift NaN 0 -> NaN -ddshi826 shift NaN 1 -> NaN -ddshi827 shift NaN 1000 -> NaN -ddshi828 shift NaN Inf -> NaN -ddshi829 shift NaN NaN -> NaN -ddshi830 shift -Inf NaN -> NaN -ddshi831 shift -1000 NaN -> NaN -ddshi832 shift -1 NaN -> NaN -ddshi833 shift -0 NaN -> NaN -ddshi834 shift 0 NaN -> NaN -ddshi835 shift 1 NaN -> NaN -ddshi836 shift 1000 NaN -> NaN -ddshi837 shift Inf NaN -> NaN - -ddshi841 shift sNaN -Inf -> NaN Invalid_operation -ddshi842 shift sNaN -1000 -> NaN Invalid_operation -ddshi843 shift sNaN -1 -> NaN Invalid_operation -ddshi844 shift sNaN -0 -> NaN Invalid_operation -ddshi845 shift sNaN 0 -> NaN Invalid_operation -ddshi846 shift sNaN 1 -> NaN Invalid_operation -ddshi847 shift sNaN 1000 -> NaN Invalid_operation -ddshi848 shift sNaN NaN -> NaN Invalid_operation -ddshi849 shift sNaN sNaN -> NaN Invalid_operation -ddshi850 shift NaN sNaN -> NaN Invalid_operation -ddshi851 shift -Inf sNaN -> NaN Invalid_operation -ddshi852 shift -1000 sNaN -> NaN Invalid_operation -ddshi853 shift -1 sNaN -> NaN Invalid_operation -ddshi854 shift -0 sNaN -> NaN Invalid_operation -ddshi855 shift 0 sNaN -> NaN Invalid_operation -ddshi856 shift 1 sNaN -> NaN Invalid_operation -ddshi857 shift 1000 sNaN -> NaN Invalid_operation -ddshi858 shift Inf sNaN -> NaN Invalid_operation -ddshi859 shift NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddshi861 shift NaN1 -Inf -> NaN1 -ddshi862 shift +NaN2 -1000 -> NaN2 -ddshi863 shift NaN3 1000 -> NaN3 -ddshi864 shift NaN4 Inf -> NaN4 -ddshi865 shift NaN5 +NaN6 -> NaN5 -ddshi866 shift -Inf NaN7 -> NaN7 -ddshi867 shift -1000 NaN8 -> NaN8 -ddshi868 shift 1000 NaN9 -> NaN9 -ddshi869 shift Inf +NaN10 -> NaN10 -ddshi871 shift sNaN11 -Inf -> NaN11 Invalid_operation -ddshi872 shift sNaN12 -1000 -> NaN12 Invalid_operation -ddshi873 shift sNaN13 1000 -> NaN13 Invalid_operation -ddshi874 shift sNaN14 NaN17 -> NaN14 Invalid_operation -ddshi875 shift sNaN15 sNaN18 -> NaN15 Invalid_operation -ddshi876 shift NaN16 sNaN19 -> NaN19 Invalid_operation -ddshi877 shift -Inf +sNaN20 -> NaN20 Invalid_operation -ddshi878 shift -1000 sNaN21 -> NaN21 Invalid_operation -ddshi879 shift 1000 sNaN22 -> NaN22 Invalid_operation -ddshi880 shift Inf sNaN23 -> NaN23 Invalid_operation -ddshi881 shift +NaN25 +sNaN24 -> NaN24 Invalid_operation -ddshi882 shift -NaN26 NaN28 -> -NaN26 -ddshi883 shift -sNaN27 sNaN29 -> -NaN27 Invalid_operation -ddshi884 shift 1000 -NaN30 -> -NaN30 -ddshi885 shift 1000 -sNaN31 -> -NaN31 Invalid_operation +------------------------------------------------------------------------ +-- ddShift.decTest -- shift decDouble coefficient left or right -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check +ddshi001 shift 0 0 -> 0 +ddshi002 shift 0 2 -> 0 +ddshi003 shift 1 2 -> 100 +ddshi004 shift 1 15 -> 1000000000000000 +ddshi005 shift 1 16 -> 0 +ddshi006 shift 1 -1 -> 0 +ddshi007 shift 0 -2 -> 0 +ddshi008 shift 1234567890123456 -1 -> 123456789012345 +ddshi009 shift 1234567890123456 -15 -> 1 +ddshi010 shift 1234567890123456 -16 -> 0 +ddshi011 shift 9934567890123456 -15 -> 9 +ddshi012 shift 9934567890123456 -16 -> 0 + +-- rhs must be an integer +ddshi015 shift 1 1.5 -> NaN Invalid_operation +ddshi016 shift 1 1.0 -> NaN Invalid_operation +ddshi017 shift 1 0.1 -> NaN Invalid_operation +ddshi018 shift 1 0.0 -> NaN Invalid_operation +ddshi019 shift 1 1E+1 -> NaN Invalid_operation +ddshi020 shift 1 1E+99 -> NaN Invalid_operation +ddshi021 shift 1 Inf -> NaN Invalid_operation +ddshi022 shift 1 -Inf -> NaN Invalid_operation +-- and |rhs| <= precision +ddshi025 shift 1 -1000 -> NaN Invalid_operation +ddshi026 shift 1 -17 -> NaN Invalid_operation +ddshi027 shift 1 17 -> NaN Invalid_operation +ddshi028 shift 1 1000 -> NaN Invalid_operation + +-- full shifting pattern +ddshi030 shift 1234567890123456 -16 -> 0 +ddshi031 shift 1234567890123456 -15 -> 1 +ddshi032 shift 1234567890123456 -14 -> 12 +ddshi033 shift 1234567890123456 -13 -> 123 +ddshi034 shift 1234567890123456 -12 -> 1234 +ddshi035 shift 1234567890123456 -11 -> 12345 +ddshi036 shift 1234567890123456 -10 -> 123456 +ddshi037 shift 1234567890123456 -9 -> 1234567 +ddshi038 shift 1234567890123456 -8 -> 12345678 +ddshi039 shift 1234567890123456 -7 -> 123456789 +ddshi040 shift 1234567890123456 -6 -> 1234567890 +ddshi041 shift 1234567890123456 -5 -> 12345678901 +ddshi042 shift 1234567890123456 -4 -> 123456789012 +ddshi043 shift 1234567890123456 -3 -> 1234567890123 +ddshi044 shift 1234567890123456 -2 -> 12345678901234 +ddshi045 shift 1234567890123456 -1 -> 123456789012345 +ddshi046 shift 1234567890123456 -0 -> 1234567890123456 + +ddshi047 shift 1234567890123456 +0 -> 1234567890123456 +ddshi048 shift 1234567890123456 +1 -> 2345678901234560 +ddshi049 shift 1234567890123456 +2 -> 3456789012345600 +ddshi050 shift 1234567890123456 +3 -> 4567890123456000 +ddshi051 shift 1234567890123456 +4 -> 5678901234560000 +ddshi052 shift 1234567890123456 +5 -> 6789012345600000 +ddshi053 shift 1234567890123456 +6 -> 7890123456000000 +ddshi054 shift 1234567890123456 +7 -> 8901234560000000 +ddshi055 shift 1234567890123456 +8 -> 9012345600000000 +ddshi056 shift 1234567890123456 +9 -> 123456000000000 +ddshi057 shift 1234567890123456 +10 -> 1234560000000000 +ddshi058 shift 1234567890123456 +11 -> 2345600000000000 +ddshi059 shift 1234567890123456 +12 -> 3456000000000000 +ddshi060 shift 1234567890123456 +13 -> 4560000000000000 +ddshi061 shift 1234567890123456 +14 -> 5600000000000000 +ddshi062 shift 1234567890123456 +15 -> 6000000000000000 +ddshi063 shift 1234567890123456 +16 -> 0 + +-- zeros +ddshi070 shift 0E-10 +9 -> 0E-10 +ddshi071 shift 0E-10 -9 -> 0E-10 +ddshi072 shift 0.000 +9 -> 0.000 +ddshi073 shift 0.000 -9 -> 0.000 +ddshi074 shift 0E+10 +9 -> 0E+10 +ddshi075 shift 0E+10 -9 -> 0E+10 +ddshi076 shift -0E-10 +9 -> -0E-10 +ddshi077 shift -0E-10 -9 -> -0E-10 +ddshi078 shift -0.000 +9 -> -0.000 +ddshi079 shift -0.000 -9 -> -0.000 +ddshi080 shift -0E+10 +9 -> -0E+10 +ddshi081 shift -0E+10 -9 -> -0E+10 + +-- Nmax, Nmin, Ntiny +ddshi141 shift 9.999999999999999E+384 -1 -> 9.99999999999999E+383 +ddshi142 shift 9.999999999999999E+384 -15 -> 9E+369 +ddshi143 shift 9.999999999999999E+384 1 -> 9.999999999999990E+384 +ddshi144 shift 9.999999999999999E+384 15 -> 9.000000000000000E+384 +ddshi145 shift 1E-383 -1 -> 0E-383 +ddshi146 shift 1E-383 -15 -> 0E-383 +ddshi147 shift 1E-383 1 -> 1.0E-382 +ddshi148 shift 1E-383 15 -> 1.000000000000000E-368 +ddshi151 shift 1.000000000000000E-383 -1 -> 1.00000000000000E-384 +ddshi152 shift 1.000000000000000E-383 -15 -> 1E-398 +ddshi153 shift 1.000000000000000E-383 1 -> 0E-398 +ddshi154 shift 1.000000000000000E-383 15 -> 0E-398 +ddshi155 shift 9.000000000000000E-383 -1 -> 9.00000000000000E-384 +ddshi156 shift 9.000000000000000E-383 -15 -> 9E-398 +ddshi157 shift 9.000000000000000E-383 1 -> 0E-398 +ddshi158 shift 9.000000000000000E-383 15 -> 0E-398 +ddshi160 shift 1E-398 -1 -> 0E-398 +ddshi161 shift 1E-398 -15 -> 0E-398 +ddshi162 shift 1E-398 1 -> 1.0E-397 +ddshi163 shift 1E-398 15 -> 1.000000000000000E-383 +-- negatives +ddshi171 shift -9.999999999999999E+384 -1 -> -9.99999999999999E+383 +ddshi172 shift -9.999999999999999E+384 -15 -> -9E+369 +ddshi173 shift -9.999999999999999E+384 1 -> -9.999999999999990E+384 +ddshi174 shift -9.999999999999999E+384 15 -> -9.000000000000000E+384 +ddshi175 shift -1E-383 -1 -> -0E-383 +ddshi176 shift -1E-383 -15 -> -0E-383 +ddshi177 shift -1E-383 1 -> -1.0E-382 +ddshi178 shift -1E-383 15 -> -1.000000000000000E-368 +ddshi181 shift -1.000000000000000E-383 -1 -> -1.00000000000000E-384 +ddshi182 shift -1.000000000000000E-383 -15 -> -1E-398 +ddshi183 shift -1.000000000000000E-383 1 -> -0E-398 +ddshi184 shift -1.000000000000000E-383 15 -> -0E-398 +ddshi185 shift -9.000000000000000E-383 -1 -> -9.00000000000000E-384 +ddshi186 shift -9.000000000000000E-383 -15 -> -9E-398 +ddshi187 shift -9.000000000000000E-383 1 -> -0E-398 +ddshi188 shift -9.000000000000000E-383 15 -> -0E-398 +ddshi190 shift -1E-398 -1 -> -0E-398 +ddshi191 shift -1E-398 -15 -> -0E-398 +ddshi192 shift -1E-398 1 -> -1.0E-397 +ddshi193 shift -1E-398 15 -> -1.000000000000000E-383 + +-- more negatives (of sanities) +ddshi201 shift -0 0 -> -0 +ddshi202 shift -0 2 -> -0 +ddshi203 shift -1 2 -> -100 +ddshi204 shift -1 15 -> -1000000000000000 +ddshi205 shift -1 16 -> -0 +ddshi206 shift -1 -1 -> -0 +ddshi207 shift -0 -2 -> -0 +ddshi208 shift -1234567890123456 -1 -> -123456789012345 +ddshi209 shift -1234567890123456 -15 -> -1 +ddshi210 shift -1234567890123456 -16 -> -0 +ddshi211 shift -9934567890123456 -15 -> -9 +ddshi212 shift -9934567890123456 -16 -> -0 + + +-- Specials; NaNs are handled as usual +ddshi781 shift -Inf -8 -> -Infinity +ddshi782 shift -Inf -1 -> -Infinity +ddshi783 shift -Inf -0 -> -Infinity +ddshi784 shift -Inf 0 -> -Infinity +ddshi785 shift -Inf 1 -> -Infinity +ddshi786 shift -Inf 8 -> -Infinity +ddshi787 shift -1000 -Inf -> NaN Invalid_operation +ddshi788 shift -Inf -Inf -> NaN Invalid_operation +ddshi789 shift -1 -Inf -> NaN Invalid_operation +ddshi790 shift -0 -Inf -> NaN Invalid_operation +ddshi791 shift 0 -Inf -> NaN Invalid_operation +ddshi792 shift 1 -Inf -> NaN Invalid_operation +ddshi793 shift 1000 -Inf -> NaN Invalid_operation +ddshi794 shift Inf -Inf -> NaN Invalid_operation + +ddshi800 shift Inf -Inf -> NaN Invalid_operation +ddshi801 shift Inf -8 -> Infinity +ddshi802 shift Inf -1 -> Infinity +ddshi803 shift Inf -0 -> Infinity +ddshi804 shift Inf 0 -> Infinity +ddshi805 shift Inf 1 -> Infinity +ddshi806 shift Inf 8 -> Infinity +ddshi807 shift Inf Inf -> NaN Invalid_operation +ddshi808 shift -1000 Inf -> NaN Invalid_operation +ddshi809 shift -Inf Inf -> NaN Invalid_operation +ddshi810 shift -1 Inf -> NaN Invalid_operation +ddshi811 shift -0 Inf -> NaN Invalid_operation +ddshi812 shift 0 Inf -> NaN Invalid_operation +ddshi813 shift 1 Inf -> NaN Invalid_operation +ddshi814 shift 1000 Inf -> NaN Invalid_operation +ddshi815 shift Inf Inf -> NaN Invalid_operation + +ddshi821 shift NaN -Inf -> NaN +ddshi822 shift NaN -1000 -> NaN +ddshi823 shift NaN -1 -> NaN +ddshi824 shift NaN -0 -> NaN +ddshi825 shift NaN 0 -> NaN +ddshi826 shift NaN 1 -> NaN +ddshi827 shift NaN 1000 -> NaN +ddshi828 shift NaN Inf -> NaN +ddshi829 shift NaN NaN -> NaN +ddshi830 shift -Inf NaN -> NaN +ddshi831 shift -1000 NaN -> NaN +ddshi832 shift -1 NaN -> NaN +ddshi833 shift -0 NaN -> NaN +ddshi834 shift 0 NaN -> NaN +ddshi835 shift 1 NaN -> NaN +ddshi836 shift 1000 NaN -> NaN +ddshi837 shift Inf NaN -> NaN + +ddshi841 shift sNaN -Inf -> NaN Invalid_operation +ddshi842 shift sNaN -1000 -> NaN Invalid_operation +ddshi843 shift sNaN -1 -> NaN Invalid_operation +ddshi844 shift sNaN -0 -> NaN Invalid_operation +ddshi845 shift sNaN 0 -> NaN Invalid_operation +ddshi846 shift sNaN 1 -> NaN Invalid_operation +ddshi847 shift sNaN 1000 -> NaN Invalid_operation +ddshi848 shift sNaN NaN -> NaN Invalid_operation +ddshi849 shift sNaN sNaN -> NaN Invalid_operation +ddshi850 shift NaN sNaN -> NaN Invalid_operation +ddshi851 shift -Inf sNaN -> NaN Invalid_operation +ddshi852 shift -1000 sNaN -> NaN Invalid_operation +ddshi853 shift -1 sNaN -> NaN Invalid_operation +ddshi854 shift -0 sNaN -> NaN Invalid_operation +ddshi855 shift 0 sNaN -> NaN Invalid_operation +ddshi856 shift 1 sNaN -> NaN Invalid_operation +ddshi857 shift 1000 sNaN -> NaN Invalid_operation +ddshi858 shift Inf sNaN -> NaN Invalid_operation +ddshi859 shift NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddshi861 shift NaN1 -Inf -> NaN1 +ddshi862 shift +NaN2 -1000 -> NaN2 +ddshi863 shift NaN3 1000 -> NaN3 +ddshi864 shift NaN4 Inf -> NaN4 +ddshi865 shift NaN5 +NaN6 -> NaN5 +ddshi866 shift -Inf NaN7 -> NaN7 +ddshi867 shift -1000 NaN8 -> NaN8 +ddshi868 shift 1000 NaN9 -> NaN9 +ddshi869 shift Inf +NaN10 -> NaN10 +ddshi871 shift sNaN11 -Inf -> NaN11 Invalid_operation +ddshi872 shift sNaN12 -1000 -> NaN12 Invalid_operation +ddshi873 shift sNaN13 1000 -> NaN13 Invalid_operation +ddshi874 shift sNaN14 NaN17 -> NaN14 Invalid_operation +ddshi875 shift sNaN15 sNaN18 -> NaN15 Invalid_operation +ddshi876 shift NaN16 sNaN19 -> NaN19 Invalid_operation +ddshi877 shift -Inf +sNaN20 -> NaN20 Invalid_operation +ddshi878 shift -1000 sNaN21 -> NaN21 Invalid_operation +ddshi879 shift 1000 sNaN22 -> NaN22 Invalid_operation +ddshi880 shift Inf sNaN23 -> NaN23 Invalid_operation +ddshi881 shift +NaN25 +sNaN24 -> NaN24 Invalid_operation +ddshi882 shift -NaN26 NaN28 -> -NaN26 +ddshi883 shift -sNaN27 sNaN29 -> -NaN27 Invalid_operation +ddshi884 shift 1000 -NaN30 -> -NaN30 +ddshi885 shift 1000 -sNaN31 -> -NaN31 Invalid_operation diff --git a/Lib/test/decimaltestdata/ddSubtract.decTest b/Lib/test/decimaltestdata/ddSubtract.decTest index 15d4777..5ebc487 100644 --- a/Lib/test/decimaltestdata/ddSubtract.decTest +++ b/Lib/test/decimaltestdata/ddSubtract.decTest @@ -1,629 +1,629 @@ ------------------------------------------------------------------------- --- ddSubtract.decTest -- decDouble subtraction -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests are for decDoubles only; all arguments are --- representable in a decDouble -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- [first group are 'quick confidence check'] -ddsub001 subtract 0 0 -> '0' -ddsub002 subtract 1 1 -> '0' -ddsub003 subtract 1 2 -> '-1' -ddsub004 subtract 2 1 -> '1' -ddsub005 subtract 2 2 -> '0' -ddsub006 subtract 3 2 -> '1' -ddsub007 subtract 2 3 -> '-1' - -ddsub011 subtract -0 0 -> '-0' -ddsub012 subtract -1 1 -> '-2' -ddsub013 subtract -1 2 -> '-3' -ddsub014 subtract -2 1 -> '-3' -ddsub015 subtract -2 2 -> '-4' -ddsub016 subtract -3 2 -> '-5' -ddsub017 subtract -2 3 -> '-5' - -ddsub021 subtract 0 -0 -> '0' -ddsub022 subtract 1 -1 -> '2' -ddsub023 subtract 1 -2 -> '3' -ddsub024 subtract 2 -1 -> '3' -ddsub025 subtract 2 -2 -> '4' -ddsub026 subtract 3 -2 -> '5' -ddsub027 subtract 2 -3 -> '5' - -ddsub030 subtract 11 1 -> 10 -ddsub031 subtract 10 1 -> 9 -ddsub032 subtract 9 1 -> 8 -ddsub033 subtract 1 1 -> 0 -ddsub034 subtract 0 1 -> -1 -ddsub035 subtract -1 1 -> -2 -ddsub036 subtract -9 1 -> -10 -ddsub037 subtract -10 1 -> -11 -ddsub038 subtract -11 1 -> -12 - -ddsub040 subtract '5.75' '3.3' -> '2.45' -ddsub041 subtract '5' '-3' -> '8' -ddsub042 subtract '-5' '-3' -> '-2' -ddsub043 subtract '-7' '2.5' -> '-9.5' -ddsub044 subtract '0.7' '0.3' -> '0.4' -ddsub045 subtract '1.3' '0.3' -> '1.0' -ddsub046 subtract '1.25' '1.25' -> '0.00' - -ddsub050 subtract '1.23456789' '1.00000000' -> '0.23456789' -ddsub051 subtract '1.23456789' '1.00000089' -> '0.23456700' - -ddsub060 subtract '70' '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded -ddsub061 subtract '700' '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded -ddsub062 subtract '7000' '10000e+16' -> '-9.999999999999999E+19' Inexact Rounded -ddsub063 subtract '70000' '10000e+16' -> '-9.999999999999993E+19' Rounded -ddsub064 subtract '700000' '10000e+16' -> '-9.999999999999930E+19' Rounded - -- symmetry: -ddsub065 subtract '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded -ddsub066 subtract '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded -ddsub067 subtract '10000e+16' '7000' -> '9.999999999999999E+19' Inexact Rounded -ddsub068 subtract '10000e+16' '70000' -> '9.999999999999993E+19' Rounded -ddsub069 subtract '10000e+16' '700000' -> '9.999999999999930E+19' Rounded - - -- some of the next group are really constructor tests -ddsub090 subtract '00.0' '0.0' -> '0.0' -ddsub091 subtract '00.0' '0.00' -> '0.00' -ddsub092 subtract '0.00' '00.0' -> '0.00' -ddsub093 subtract '00.0' '0.00' -> '0.00' -ddsub094 subtract '0.00' '00.0' -> '0.00' -ddsub095 subtract '3' '.3' -> '2.7' -ddsub096 subtract '3.' '.3' -> '2.7' -ddsub097 subtract '3.0' '.3' -> '2.7' -ddsub098 subtract '3.00' '.3' -> '2.70' -ddsub099 subtract '3' '3' -> '0' -ddsub100 subtract '3' '+3' -> '0' -ddsub101 subtract '3' '-3' -> '6' -ddsub102 subtract '3' '0.3' -> '2.7' -ddsub103 subtract '3.' '0.3' -> '2.7' -ddsub104 subtract '3.0' '0.3' -> '2.7' -ddsub105 subtract '3.00' '0.3' -> '2.70' -ddsub106 subtract '3' '3.0' -> '0.0' -ddsub107 subtract '3' '+3.0' -> '0.0' -ddsub108 subtract '3' '-3.0' -> '6.0' - --- the above all from add; massaged and extended. Now some new ones... --- [particularly important for comparisons] --- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7 --- with input rounding. -ddsub120 subtract '10.23456784' '10.23456789' -> '-5E-8' -ddsub121 subtract '10.23456785' '10.23456789' -> '-4E-8' -ddsub122 subtract '10.23456786' '10.23456789' -> '-3E-8' -ddsub123 subtract '10.23456787' '10.23456789' -> '-2E-8' -ddsub124 subtract '10.23456788' '10.23456789' -> '-1E-8' -ddsub125 subtract '10.23456789' '10.23456789' -> '0E-8' -ddsub126 subtract '10.23456790' '10.23456789' -> '1E-8' -ddsub127 subtract '10.23456791' '10.23456789' -> '2E-8' -ddsub128 subtract '10.23456792' '10.23456789' -> '3E-8' -ddsub129 subtract '10.23456793' '10.23456789' -> '4E-8' -ddsub130 subtract '10.23456794' '10.23456789' -> '5E-8' -ddsub131 subtract '10.23456781' '10.23456786' -> '-5E-8' -ddsub132 subtract '10.23456782' '10.23456786' -> '-4E-8' -ddsub133 subtract '10.23456783' '10.23456786' -> '-3E-8' -ddsub134 subtract '10.23456784' '10.23456786' -> '-2E-8' -ddsub135 subtract '10.23456785' '10.23456786' -> '-1E-8' -ddsub136 subtract '10.23456786' '10.23456786' -> '0E-8' -ddsub137 subtract '10.23456787' '10.23456786' -> '1E-8' -ddsub138 subtract '10.23456788' '10.23456786' -> '2E-8' -ddsub139 subtract '10.23456789' '10.23456786' -> '3E-8' -ddsub140 subtract '10.23456790' '10.23456786' -> '4E-8' -ddsub141 subtract '10.23456791' '10.23456786' -> '5E-8' -ddsub142 subtract '1' '0.999999999' -> '1E-9' -ddsub143 subtract '0.999999999' '1' -> '-1E-9' -ddsub144 subtract '-10.23456780' '-10.23456786' -> '6E-8' -ddsub145 subtract '-10.23456790' '-10.23456786' -> '-4E-8' -ddsub146 subtract '-10.23456791' '-10.23456786' -> '-5E-8' - --- additional scaled arithmetic tests [0.97 problem] -ddsub160 subtract '0' '.1' -> '-0.1' -ddsub161 subtract '00' '.97983' -> '-0.97983' -ddsub162 subtract '0' '.9' -> '-0.9' -ddsub163 subtract '0' '0.102' -> '-0.102' -ddsub164 subtract '0' '.4' -> '-0.4' -ddsub165 subtract '0' '.307' -> '-0.307' -ddsub166 subtract '0' '.43822' -> '-0.43822' -ddsub167 subtract '0' '.911' -> '-0.911' -ddsub168 subtract '.0' '.02' -> '-0.02' -ddsub169 subtract '00' '.392' -> '-0.392' -ddsub170 subtract '0' '.26' -> '-0.26' -ddsub171 subtract '0' '0.51' -> '-0.51' -ddsub172 subtract '0' '.2234' -> '-0.2234' -ddsub173 subtract '0' '.2' -> '-0.2' -ddsub174 subtract '.0' '.0008' -> '-0.0008' --- 0. on left -ddsub180 subtract '0.0' '-.1' -> '0.1' -ddsub181 subtract '0.00' '-.97983' -> '0.97983' -ddsub182 subtract '0.0' '-.9' -> '0.9' -ddsub183 subtract '0.0' '-0.102' -> '0.102' -ddsub184 subtract '0.0' '-.4' -> '0.4' -ddsub185 subtract '0.0' '-.307' -> '0.307' -ddsub186 subtract '0.0' '-.43822' -> '0.43822' -ddsub187 subtract '0.0' '-.911' -> '0.911' -ddsub188 subtract '0.0' '-.02' -> '0.02' -ddsub189 subtract '0.00' '-.392' -> '0.392' -ddsub190 subtract '0.0' '-.26' -> '0.26' -ddsub191 subtract '0.0' '-0.51' -> '0.51' -ddsub192 subtract '0.0' '-.2234' -> '0.2234' -ddsub193 subtract '0.0' '-.2' -> '0.2' -ddsub194 subtract '0.0' '-.0008' -> '0.0008' --- negatives of same -ddsub200 subtract '0' '-.1' -> '0.1' -ddsub201 subtract '00' '-.97983' -> '0.97983' -ddsub202 subtract '0' '-.9' -> '0.9' -ddsub203 subtract '0' '-0.102' -> '0.102' -ddsub204 subtract '0' '-.4' -> '0.4' -ddsub205 subtract '0' '-.307' -> '0.307' -ddsub206 subtract '0' '-.43822' -> '0.43822' -ddsub207 subtract '0' '-.911' -> '0.911' -ddsub208 subtract '.0' '-.02' -> '0.02' -ddsub209 subtract '00' '-.392' -> '0.392' -ddsub210 subtract '0' '-.26' -> '0.26' -ddsub211 subtract '0' '-0.51' -> '0.51' -ddsub212 subtract '0' '-.2234' -> '0.2234' -ddsub213 subtract '0' '-.2' -> '0.2' -ddsub214 subtract '.0' '-.0008' -> '0.0008' - --- more fixed, LHS swaps [really the same as testcases under add] -ddsub220 subtract '-56267E-12' 0 -> '-5.6267E-8' -ddsub221 subtract '-56267E-11' 0 -> '-5.6267E-7' -ddsub222 subtract '-56267E-10' 0 -> '-0.0000056267' -ddsub223 subtract '-56267E-9' 0 -> '-0.000056267' -ddsub224 subtract '-56267E-8' 0 -> '-0.00056267' -ddsub225 subtract '-56267E-7' 0 -> '-0.0056267' -ddsub226 subtract '-56267E-6' 0 -> '-0.056267' -ddsub227 subtract '-56267E-5' 0 -> '-0.56267' -ddsub228 subtract '-56267E-2' 0 -> '-562.67' -ddsub229 subtract '-56267E-1' 0 -> '-5626.7' -ddsub230 subtract '-56267E-0' 0 -> '-56267' --- symmetry ... -ddsub240 subtract 0 '-56267E-12' -> '5.6267E-8' -ddsub241 subtract 0 '-56267E-11' -> '5.6267E-7' -ddsub242 subtract 0 '-56267E-10' -> '0.0000056267' -ddsub243 subtract 0 '-56267E-9' -> '0.000056267' -ddsub244 subtract 0 '-56267E-8' -> '0.00056267' -ddsub245 subtract 0 '-56267E-7' -> '0.0056267' -ddsub246 subtract 0 '-56267E-6' -> '0.056267' -ddsub247 subtract 0 '-56267E-5' -> '0.56267' -ddsub248 subtract 0 '-56267E-2' -> '562.67' -ddsub249 subtract 0 '-56267E-1' -> '5626.7' -ddsub250 subtract 0 '-56267E-0' -> '56267' - --- now some more from the 'new' add -ddsub301 subtract '1.23456789' '1.00000000' -> '0.23456789' -ddsub302 subtract '1.23456789' '1.00000011' -> '0.23456778' - --- some carrying effects -ddsub321 subtract '0.9998' '0.0000' -> '0.9998' -ddsub322 subtract '0.9998' '0.0001' -> '0.9997' -ddsub323 subtract '0.9998' '0.0002' -> '0.9996' -ddsub324 subtract '0.9998' '0.0003' -> '0.9995' -ddsub325 subtract '0.9998' '-0.0000' -> '0.9998' -ddsub326 subtract '0.9998' '-0.0001' -> '0.9999' -ddsub327 subtract '0.9998' '-0.0002' -> '1.0000' -ddsub328 subtract '0.9998' '-0.0003' -> '1.0001' - --- internal boundaries -ddsub346 subtract '10000e+9' '7' -> '9999999999993' -ddsub347 subtract '10000e+9' '70' -> '9999999999930' -ddsub348 subtract '10000e+9' '700' -> '9999999999300' -ddsub349 subtract '10000e+9' '7000' -> '9999999993000' -ddsub350 subtract '10000e+9' '70000' -> '9999999930000' -ddsub351 subtract '10000e+9' '700000' -> '9999999300000' -ddsub352 subtract '7' '10000e+9' -> '-9999999999993' -ddsub353 subtract '70' '10000e+9' -> '-9999999999930' -ddsub354 subtract '700' '10000e+9' -> '-9999999999300' -ddsub355 subtract '7000' '10000e+9' -> '-9999999993000' -ddsub356 subtract '70000' '10000e+9' -> '-9999999930000' -ddsub357 subtract '700000' '10000e+9' -> '-9999999300000' - --- zero preservation -ddsub361 subtract 1 '0.0001' -> '0.9999' -ddsub362 subtract 1 '0.00001' -> '0.99999' -ddsub363 subtract 1 '0.000001' -> '0.999999' -ddsub364 subtract 1 '0.0000000000000001' -> '0.9999999999999999' -ddsub365 subtract 1 '0.00000000000000001' -> '1.000000000000000' Inexact Rounded -ddsub366 subtract 1 '0.000000000000000001' -> '1.000000000000000' Inexact Rounded - --- some funny zeros [in case of bad signum] -ddsub370 subtract 1 0 -> 1 -ddsub371 subtract 1 0. -> 1 -ddsub372 subtract 1 .0 -> 1.0 -ddsub373 subtract 1 0.0 -> 1.0 -ddsub374 subtract 0 1 -> -1 -ddsub375 subtract 0. 1 -> -1 -ddsub376 subtract .0 1 -> -1.0 -ddsub377 subtract 0.0 1 -> -1.0 - --- leading 0 digit before round -ddsub910 subtract -103519362 -51897955.3 -> -51621406.7 -ddsub911 subtract 159579.444 89827.5229 -> 69751.9211 - -ddsub920 subtract 333.0000000123456 33.00000001234566 -> 299.9999999999999 Inexact Rounded -ddsub921 subtract 333.0000000123456 33.00000001234565 -> 300.0000000000000 Inexact Rounded -ddsub922 subtract 133.0000000123456 33.00000001234565 -> 99.99999999999995 -ddsub923 subtract 133.0000000123456 33.00000001234564 -> 99.99999999999996 -ddsub924 subtract 133.0000000123456 33.00000001234540 -> 100.0000000000002 Rounded -ddsub925 subtract 133.0000000123456 43.00000001234560 -> 90.00000000000000 -ddsub926 subtract 133.0000000123456 43.00000001234561 -> 89.99999999999999 -ddsub927 subtract 133.0000000123456 43.00000001234566 -> 89.99999999999994 -ddsub928 subtract 101.0000000123456 91.00000001234566 -> 9.99999999999994 -ddsub929 subtract 101.0000000123456 99.00000001234566 -> 1.99999999999994 - --- more LHS swaps [were fixed] -ddsub390 subtract '-56267E-10' 0 -> '-0.0000056267' -ddsub391 subtract '-56267E-6' 0 -> '-0.056267' -ddsub392 subtract '-56267E-5' 0 -> '-0.56267' -ddsub393 subtract '-56267E-4' 0 -> '-5.6267' -ddsub394 subtract '-56267E-3' 0 -> '-56.267' -ddsub395 subtract '-56267E-2' 0 -> '-562.67' -ddsub396 subtract '-56267E-1' 0 -> '-5626.7' -ddsub397 subtract '-56267E-0' 0 -> '-56267' -ddsub398 subtract '-5E-10' 0 -> '-5E-10' -ddsub399 subtract '-5E-7' 0 -> '-5E-7' -ddsub400 subtract '-5E-6' 0 -> '-0.000005' -ddsub401 subtract '-5E-5' 0 -> '-0.00005' -ddsub402 subtract '-5E-4' 0 -> '-0.0005' -ddsub403 subtract '-5E-1' 0 -> '-0.5' -ddsub404 subtract '-5E0' 0 -> '-5' -ddsub405 subtract '-5E1' 0 -> '-50' -ddsub406 subtract '-5E5' 0 -> '-500000' -ddsub407 subtract '-5E15' 0 -> '-5000000000000000' -ddsub408 subtract '-5E16' 0 -> '-5.000000000000000E+16' Rounded -ddsub409 subtract '-5E17' 0 -> '-5.000000000000000E+17' Rounded -ddsub410 subtract '-5E18' 0 -> '-5.000000000000000E+18' Rounded -ddsub411 subtract '-5E100' 0 -> '-5.000000000000000E+100' Rounded - --- more RHS swaps [were fixed] -ddsub420 subtract 0 '-56267E-10' -> '0.0000056267' -ddsub421 subtract 0 '-56267E-6' -> '0.056267' -ddsub422 subtract 0 '-56267E-5' -> '0.56267' -ddsub423 subtract 0 '-56267E-4' -> '5.6267' -ddsub424 subtract 0 '-56267E-3' -> '56.267' -ddsub425 subtract 0 '-56267E-2' -> '562.67' -ddsub426 subtract 0 '-56267E-1' -> '5626.7' -ddsub427 subtract 0 '-56267E-0' -> '56267' -ddsub428 subtract 0 '-5E-10' -> '5E-10' -ddsub429 subtract 0 '-5E-7' -> '5E-7' -ddsub430 subtract 0 '-5E-6' -> '0.000005' -ddsub431 subtract 0 '-5E-5' -> '0.00005' -ddsub432 subtract 0 '-5E-4' -> '0.0005' -ddsub433 subtract 0 '-5E-1' -> '0.5' -ddsub434 subtract 0 '-5E0' -> '5' -ddsub435 subtract 0 '-5E1' -> '50' -ddsub436 subtract 0 '-5E5' -> '500000' -ddsub437 subtract 0 '-5E15' -> '5000000000000000' -ddsub438 subtract 0 '-5E16' -> '5.000000000000000E+16' Rounded -ddsub439 subtract 0 '-5E17' -> '5.000000000000000E+17' Rounded -ddsub440 subtract 0 '-5E18' -> '5.000000000000000E+18' Rounded -ddsub441 subtract 0 '-5E100' -> '5.000000000000000E+100' Rounded - - --- try borderline precision, with carries, etc. -ddsub461 subtract '1E+16' '1' -> '9999999999999999' -ddsub462 subtract '1E+12' '-1.111' -> '1000000000001.111' -ddsub463 subtract '1.111' '-1E+12' -> '1000000000001.111' -ddsub464 subtract '-1' '-1E+16' -> '9999999999999999' -ddsub465 subtract '7E+15' '1' -> '6999999999999999' -ddsub466 subtract '7E+12' '-1.111' -> '7000000000001.111' -ddsub467 subtract '1.111' '-7E+12' -> '7000000000001.111' -ddsub468 subtract '-1' '-7E+15' -> '6999999999999999' - --- 1234567890123456 1234567890123456 1 23456789012345 -ddsub470 subtract '0.4444444444444444' '-0.5555555555555563' -> '1.000000000000001' Inexact Rounded -ddsub471 subtract '0.4444444444444444' '-0.5555555555555562' -> '1.000000000000001' Inexact Rounded -ddsub472 subtract '0.4444444444444444' '-0.5555555555555561' -> '1.000000000000000' Inexact Rounded -ddsub473 subtract '0.4444444444444444' '-0.5555555555555560' -> '1.000000000000000' Inexact Rounded -ddsub474 subtract '0.4444444444444444' '-0.5555555555555559' -> '1.000000000000000' Inexact Rounded -ddsub475 subtract '0.4444444444444444' '-0.5555555555555558' -> '1.000000000000000' Inexact Rounded -ddsub476 subtract '0.4444444444444444' '-0.5555555555555557' -> '1.000000000000000' Inexact Rounded -ddsub477 subtract '0.4444444444444444' '-0.5555555555555556' -> '1.000000000000000' Rounded -ddsub478 subtract '0.4444444444444444' '-0.5555555555555555' -> '0.9999999999999999' -ddsub479 subtract '0.4444444444444444' '-0.5555555555555554' -> '0.9999999999999998' -ddsub480 subtract '0.4444444444444444' '-0.5555555555555553' -> '0.9999999999999997' -ddsub481 subtract '0.4444444444444444' '-0.5555555555555552' -> '0.9999999999999996' -ddsub482 subtract '0.4444444444444444' '-0.5555555555555551' -> '0.9999999999999995' -ddsub483 subtract '0.4444444444444444' '-0.5555555555555550' -> '0.9999999999999994' - --- and some more, including residue effects and different roundings -rounding: half_up -ddsub500 subtract '1231234567456789' 0 -> '1231234567456789' -ddsub501 subtract '1231234567456789' 0.000000001 -> '1231234567456789' Inexact Rounded -ddsub502 subtract '1231234567456789' 0.000001 -> '1231234567456789' Inexact Rounded -ddsub503 subtract '1231234567456789' 0.1 -> '1231234567456789' Inexact Rounded -ddsub504 subtract '1231234567456789' 0.4 -> '1231234567456789' Inexact Rounded -ddsub505 subtract '1231234567456789' 0.49 -> '1231234567456789' Inexact Rounded -ddsub506 subtract '1231234567456789' 0.499999 -> '1231234567456789' Inexact Rounded -ddsub507 subtract '1231234567456789' 0.499999999 -> '1231234567456789' Inexact Rounded -ddsub508 subtract '1231234567456789' 0.5 -> '1231234567456789' Inexact Rounded -ddsub509 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded -ddsub510 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded -ddsub511 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded -ddsub512 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded -ddsub513 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded -ddsub514 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded -ddsub515 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded -ddsub516 subtract '1231234567456789' 1 -> '1231234567456788' -ddsub517 subtract '1231234567456789' 1.000000001 -> '1231234567456788' Inexact Rounded -ddsub518 subtract '1231234567456789' 1.00001 -> '1231234567456788' Inexact Rounded -ddsub519 subtract '1231234567456789' 1.1 -> '1231234567456788' Inexact Rounded - -rounding: half_even -ddsub520 subtract '1231234567456789' 0 -> '1231234567456789' -ddsub521 subtract '1231234567456789' 0.000000001 -> '1231234567456789' Inexact Rounded -ddsub522 subtract '1231234567456789' 0.000001 -> '1231234567456789' Inexact Rounded -ddsub523 subtract '1231234567456789' 0.1 -> '1231234567456789' Inexact Rounded -ddsub524 subtract '1231234567456789' 0.4 -> '1231234567456789' Inexact Rounded -ddsub525 subtract '1231234567456789' 0.49 -> '1231234567456789' Inexact Rounded -ddsub526 subtract '1231234567456789' 0.499999 -> '1231234567456789' Inexact Rounded -ddsub527 subtract '1231234567456789' 0.499999999 -> '1231234567456789' Inexact Rounded -ddsub528 subtract '1231234567456789' 0.5 -> '1231234567456788' Inexact Rounded -ddsub529 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded -ddsub530 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded -ddsub531 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded -ddsub532 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded -ddsub533 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded -ddsub534 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded -ddsub535 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded -ddsub536 subtract '1231234567456789' 1 -> '1231234567456788' -ddsub537 subtract '1231234567456789' 1.00000001 -> '1231234567456788' Inexact Rounded -ddsub538 subtract '1231234567456789' 1.00001 -> '1231234567456788' Inexact Rounded -ddsub539 subtract '1231234567456789' 1.1 -> '1231234567456788' Inexact Rounded --- critical few with even bottom digit... -ddsub540 subtract '1231234567456788' 0.499999999 -> '1231234567456788' Inexact Rounded -ddsub541 subtract '1231234567456788' 0.5 -> '1231234567456788' Inexact Rounded -ddsub542 subtract '1231234567456788' 0.500000001 -> '1231234567456787' Inexact Rounded - -rounding: down -ddsub550 subtract '1231234567456789' 0 -> '1231234567456789' -ddsub551 subtract '1231234567456789' 0.000000001 -> '1231234567456788' Inexact Rounded -ddsub552 subtract '1231234567456789' 0.000001 -> '1231234567456788' Inexact Rounded -ddsub553 subtract '1231234567456789' 0.1 -> '1231234567456788' Inexact Rounded -ddsub554 subtract '1231234567456789' 0.4 -> '1231234567456788' Inexact Rounded -ddsub555 subtract '1231234567456789' 0.49 -> '1231234567456788' Inexact Rounded -ddsub556 subtract '1231234567456789' 0.499999 -> '1231234567456788' Inexact Rounded -ddsub557 subtract '1231234567456789' 0.499999999 -> '1231234567456788' Inexact Rounded -ddsub558 subtract '1231234567456789' 0.5 -> '1231234567456788' Inexact Rounded -ddsub559 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded -ddsub560 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded -ddsub561 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded -ddsub562 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded -ddsub563 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded -ddsub564 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded -ddsub565 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded -ddsub566 subtract '1231234567456789' 1 -> '1231234567456788' -ddsub567 subtract '1231234567456789' 1.00000001 -> '1231234567456787' Inexact Rounded -ddsub568 subtract '1231234567456789' 1.00001 -> '1231234567456787' Inexact Rounded -ddsub569 subtract '1231234567456789' 1.1 -> '1231234567456787' Inexact Rounded - --- symmetry... -rounding: half_up -ddsub600 subtract 0 '1231234567456789' -> '-1231234567456789' -ddsub601 subtract 0.000000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub602 subtract 0.000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub603 subtract 0.1 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub604 subtract 0.4 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub605 subtract 0.49 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub606 subtract 0.499999 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub607 subtract 0.499999999 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub608 subtract 0.5 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub609 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub610 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub611 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub612 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub613 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub614 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub615 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub616 subtract 1 '1231234567456789' -> '-1231234567456788' -ddsub617 subtract 1.000000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub618 subtract 1.00001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub619 subtract 1.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded - -rounding: half_even -ddsub620 subtract 0 '1231234567456789' -> '-1231234567456789' -ddsub621 subtract 0.000000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub622 subtract 0.000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub623 subtract 0.1 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub624 subtract 0.4 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub625 subtract 0.49 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub626 subtract 0.499999 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub627 subtract 0.499999999 '1231234567456789' -> '-1231234567456789' Inexact Rounded -ddsub628 subtract 0.5 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub629 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub630 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub631 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub632 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub633 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub634 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub635 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub636 subtract 1 '1231234567456789' -> '-1231234567456788' -ddsub637 subtract 1.00000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub638 subtract 1.00001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub639 subtract 1.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded --- critical few with even bottom digit... -ddsub640 subtract 0.499999999 '1231234567456788' -> '-1231234567456788' Inexact Rounded -ddsub641 subtract 0.5 '1231234567456788' -> '-1231234567456788' Inexact Rounded -ddsub642 subtract 0.500000001 '1231234567456788' -> '-1231234567456787' Inexact Rounded - -rounding: down -ddsub650 subtract 0 '1231234567456789' -> '-1231234567456789' -ddsub651 subtract 0.000000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub652 subtract 0.000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub653 subtract 0.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub654 subtract 0.4 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub655 subtract 0.49 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub656 subtract 0.499999 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub657 subtract 0.499999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub658 subtract 0.5 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub659 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub660 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub661 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub662 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub663 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub664 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub665 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded -ddsub666 subtract 1 '1231234567456789' -> '-1231234567456788' -ddsub667 subtract 1.00000001 '1231234567456789' -> '-1231234567456787' Inexact Rounded -ddsub668 subtract 1.00001 '1231234567456789' -> '-1231234567456787' Inexact Rounded -ddsub669 subtract 1.1 '1231234567456789' -> '-1231234567456787' Inexact Rounded - - --- lots of leading zeros in intermediate result, and showing effects of --- input rounding would have affected the following -rounding: half_up -ddsub670 subtract '1234567456789' '1234567456788.1' -> 0.9 -ddsub671 subtract '1234567456789' '1234567456788.9' -> 0.1 -ddsub672 subtract '1234567456789' '1234567456789.1' -> -0.1 -ddsub673 subtract '1234567456789' '1234567456789.5' -> -0.5 -ddsub674 subtract '1234567456789' '1234567456789.9' -> -0.9 - -rounding: half_even -ddsub680 subtract '1234567456789' '1234567456788.1' -> 0.9 -ddsub681 subtract '1234567456789' '1234567456788.9' -> 0.1 -ddsub682 subtract '1234567456789' '1234567456789.1' -> -0.1 -ddsub683 subtract '1234567456789' '1234567456789.5' -> -0.5 -ddsub684 subtract '1234567456789' '1234567456789.9' -> -0.9 - -ddsub685 subtract '1234567456788' '1234567456787.1' -> 0.9 -ddsub686 subtract '1234567456788' '1234567456787.9' -> 0.1 -ddsub687 subtract '1234567456788' '1234567456788.1' -> -0.1 -ddsub688 subtract '1234567456788' '1234567456788.5' -> -0.5 -ddsub689 subtract '1234567456788' '1234567456788.9' -> -0.9 - -rounding: down -ddsub690 subtract '1234567456789' '1234567456788.1' -> 0.9 -ddsub691 subtract '1234567456789' '1234567456788.9' -> 0.1 -ddsub692 subtract '1234567456789' '1234567456789.1' -> -0.1 -ddsub693 subtract '1234567456789' '1234567456789.5' -> -0.5 -ddsub694 subtract '1234567456789' '1234567456789.9' -> -0.9 - --- Specials -ddsub780 subtract -Inf Inf -> -Infinity -ddsub781 subtract -Inf 1000 -> -Infinity -ddsub782 subtract -Inf 1 -> -Infinity -ddsub783 subtract -Inf -0 -> -Infinity -ddsub784 subtract -Inf -1 -> -Infinity -ddsub785 subtract -Inf -1000 -> -Infinity -ddsub787 subtract -1000 Inf -> -Infinity -ddsub788 subtract -Inf Inf -> -Infinity -ddsub789 subtract -1 Inf -> -Infinity -ddsub790 subtract 0 Inf -> -Infinity -ddsub791 subtract 1 Inf -> -Infinity -ddsub792 subtract 1000 Inf -> -Infinity - -ddsub800 subtract Inf Inf -> NaN Invalid_operation -ddsub801 subtract Inf 1000 -> Infinity -ddsub802 subtract Inf 1 -> Infinity -ddsub803 subtract Inf 0 -> Infinity -ddsub804 subtract Inf -0 -> Infinity -ddsub805 subtract Inf -1 -> Infinity -ddsub806 subtract Inf -1000 -> Infinity -ddsub807 subtract Inf -Inf -> Infinity -ddsub808 subtract -1000 -Inf -> Infinity -ddsub809 subtract -Inf -Inf -> NaN Invalid_operation -ddsub810 subtract -1 -Inf -> Infinity -ddsub811 subtract -0 -Inf -> Infinity -ddsub812 subtract 0 -Inf -> Infinity -ddsub813 subtract 1 -Inf -> Infinity -ddsub814 subtract 1000 -Inf -> Infinity -ddsub815 subtract Inf -Inf -> Infinity - -ddsub821 subtract NaN Inf -> NaN -ddsub822 subtract -NaN 1000 -> -NaN -ddsub823 subtract NaN 1 -> NaN -ddsub824 subtract NaN 0 -> NaN -ddsub825 subtract NaN -0 -> NaN -ddsub826 subtract NaN -1 -> NaN -ddsub827 subtract NaN -1000 -> NaN -ddsub828 subtract NaN -Inf -> NaN -ddsub829 subtract -NaN NaN -> -NaN -ddsub830 subtract -Inf NaN -> NaN -ddsub831 subtract -1000 NaN -> NaN -ddsub832 subtract -1 NaN -> NaN -ddsub833 subtract -0 NaN -> NaN -ddsub834 subtract 0 NaN -> NaN -ddsub835 subtract 1 NaN -> NaN -ddsub836 subtract 1000 -NaN -> -NaN -ddsub837 subtract Inf NaN -> NaN - -ddsub841 subtract sNaN Inf -> NaN Invalid_operation -ddsub842 subtract -sNaN 1000 -> -NaN Invalid_operation -ddsub843 subtract sNaN 1 -> NaN Invalid_operation -ddsub844 subtract sNaN 0 -> NaN Invalid_operation -ddsub845 subtract sNaN -0 -> NaN Invalid_operation -ddsub846 subtract sNaN -1 -> NaN Invalid_operation -ddsub847 subtract sNaN -1000 -> NaN Invalid_operation -ddsub848 subtract sNaN NaN -> NaN Invalid_operation -ddsub849 subtract sNaN sNaN -> NaN Invalid_operation -ddsub850 subtract NaN sNaN -> NaN Invalid_operation -ddsub851 subtract -Inf -sNaN -> -NaN Invalid_operation -ddsub852 subtract -1000 sNaN -> NaN Invalid_operation -ddsub853 subtract -1 sNaN -> NaN Invalid_operation -ddsub854 subtract -0 sNaN -> NaN Invalid_operation -ddsub855 subtract 0 sNaN -> NaN Invalid_operation -ddsub856 subtract 1 sNaN -> NaN Invalid_operation -ddsub857 subtract 1000 sNaN -> NaN Invalid_operation -ddsub858 subtract Inf sNaN -> NaN Invalid_operation -ddsub859 subtract NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddsub861 subtract NaN01 -Inf -> NaN1 -ddsub862 subtract -NaN02 -1000 -> -NaN2 -ddsub863 subtract NaN03 1000 -> NaN3 -ddsub864 subtract NaN04 Inf -> NaN4 -ddsub865 subtract NaN05 NaN61 -> NaN5 -ddsub866 subtract -Inf -NaN71 -> -NaN71 -ddsub867 subtract -1000 NaN81 -> NaN81 -ddsub868 subtract 1000 NaN91 -> NaN91 -ddsub869 subtract Inf NaN101 -> NaN101 -ddsub871 subtract sNaN011 -Inf -> NaN11 Invalid_operation -ddsub872 subtract sNaN012 -1000 -> NaN12 Invalid_operation -ddsub873 subtract -sNaN013 1000 -> -NaN13 Invalid_operation -ddsub874 subtract sNaN014 NaN171 -> NaN14 Invalid_operation -ddsub875 subtract sNaN015 sNaN181 -> NaN15 Invalid_operation -ddsub876 subtract NaN016 sNaN191 -> NaN191 Invalid_operation -ddsub877 subtract -Inf sNaN201 -> NaN201 Invalid_operation -ddsub878 subtract -1000 sNaN211 -> NaN211 Invalid_operation -ddsub879 subtract 1000 -sNaN221 -> -NaN221 Invalid_operation -ddsub880 subtract Inf sNaN231 -> NaN231 Invalid_operation -ddsub881 subtract NaN025 sNaN241 -> NaN241 Invalid_operation - --- edge case spills -ddsub901 subtract 2.E-3 1.002 -> -1.000 -ddsub902 subtract 2.0E-3 1.002 -> -1.0000 -ddsub903 subtract 2.00E-3 1.0020 -> -1.00000 -ddsub904 subtract 2.000E-3 1.00200 -> -1.000000 -ddsub905 subtract 2.0000E-3 1.002000 -> -1.0000000 -ddsub906 subtract 2.00000E-3 1.0020000 -> -1.00000000 -ddsub907 subtract 2.000000E-3 1.00200000 -> -1.000000000 -ddsub908 subtract 2.0000000E-3 1.002000000 -> -1.0000000000 - --- subnormals and overflows covered under Add - --- Null tests -ddsub9990 subtract 10 # -> NaN Invalid_operation -ddsub9991 subtract # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddSubtract.decTest -- decDouble subtraction -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests are for decDoubles only; all arguments are +-- representable in a decDouble +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- [first group are 'quick confidence check'] +ddsub001 subtract 0 0 -> '0' +ddsub002 subtract 1 1 -> '0' +ddsub003 subtract 1 2 -> '-1' +ddsub004 subtract 2 1 -> '1' +ddsub005 subtract 2 2 -> '0' +ddsub006 subtract 3 2 -> '1' +ddsub007 subtract 2 3 -> '-1' + +ddsub011 subtract -0 0 -> '-0' +ddsub012 subtract -1 1 -> '-2' +ddsub013 subtract -1 2 -> '-3' +ddsub014 subtract -2 1 -> '-3' +ddsub015 subtract -2 2 -> '-4' +ddsub016 subtract -3 2 -> '-5' +ddsub017 subtract -2 3 -> '-5' + +ddsub021 subtract 0 -0 -> '0' +ddsub022 subtract 1 -1 -> '2' +ddsub023 subtract 1 -2 -> '3' +ddsub024 subtract 2 -1 -> '3' +ddsub025 subtract 2 -2 -> '4' +ddsub026 subtract 3 -2 -> '5' +ddsub027 subtract 2 -3 -> '5' + +ddsub030 subtract 11 1 -> 10 +ddsub031 subtract 10 1 -> 9 +ddsub032 subtract 9 1 -> 8 +ddsub033 subtract 1 1 -> 0 +ddsub034 subtract 0 1 -> -1 +ddsub035 subtract -1 1 -> -2 +ddsub036 subtract -9 1 -> -10 +ddsub037 subtract -10 1 -> -11 +ddsub038 subtract -11 1 -> -12 + +ddsub040 subtract '5.75' '3.3' -> '2.45' +ddsub041 subtract '5' '-3' -> '8' +ddsub042 subtract '-5' '-3' -> '-2' +ddsub043 subtract '-7' '2.5' -> '-9.5' +ddsub044 subtract '0.7' '0.3' -> '0.4' +ddsub045 subtract '1.3' '0.3' -> '1.0' +ddsub046 subtract '1.25' '1.25' -> '0.00' + +ddsub050 subtract '1.23456789' '1.00000000' -> '0.23456789' +ddsub051 subtract '1.23456789' '1.00000089' -> '0.23456700' + +ddsub060 subtract '70' '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded +ddsub061 subtract '700' '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded +ddsub062 subtract '7000' '10000e+16' -> '-9.999999999999999E+19' Inexact Rounded +ddsub063 subtract '70000' '10000e+16' -> '-9.999999999999993E+19' Rounded +ddsub064 subtract '700000' '10000e+16' -> '-9.999999999999930E+19' Rounded + -- symmetry: +ddsub065 subtract '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded +ddsub066 subtract '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded +ddsub067 subtract '10000e+16' '7000' -> '9.999999999999999E+19' Inexact Rounded +ddsub068 subtract '10000e+16' '70000' -> '9.999999999999993E+19' Rounded +ddsub069 subtract '10000e+16' '700000' -> '9.999999999999930E+19' Rounded + + -- some of the next group are really constructor tests +ddsub090 subtract '00.0' '0.0' -> '0.0' +ddsub091 subtract '00.0' '0.00' -> '0.00' +ddsub092 subtract '0.00' '00.0' -> '0.00' +ddsub093 subtract '00.0' '0.00' -> '0.00' +ddsub094 subtract '0.00' '00.0' -> '0.00' +ddsub095 subtract '3' '.3' -> '2.7' +ddsub096 subtract '3.' '.3' -> '2.7' +ddsub097 subtract '3.0' '.3' -> '2.7' +ddsub098 subtract '3.00' '.3' -> '2.70' +ddsub099 subtract '3' '3' -> '0' +ddsub100 subtract '3' '+3' -> '0' +ddsub101 subtract '3' '-3' -> '6' +ddsub102 subtract '3' '0.3' -> '2.7' +ddsub103 subtract '3.' '0.3' -> '2.7' +ddsub104 subtract '3.0' '0.3' -> '2.7' +ddsub105 subtract '3.00' '0.3' -> '2.70' +ddsub106 subtract '3' '3.0' -> '0.0' +ddsub107 subtract '3' '+3.0' -> '0.0' +ddsub108 subtract '3' '-3.0' -> '6.0' + +-- the above all from add; massaged and extended. Now some new ones... +-- [particularly important for comparisons] +-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7 +-- with input rounding. +ddsub120 subtract '10.23456784' '10.23456789' -> '-5E-8' +ddsub121 subtract '10.23456785' '10.23456789' -> '-4E-8' +ddsub122 subtract '10.23456786' '10.23456789' -> '-3E-8' +ddsub123 subtract '10.23456787' '10.23456789' -> '-2E-8' +ddsub124 subtract '10.23456788' '10.23456789' -> '-1E-8' +ddsub125 subtract '10.23456789' '10.23456789' -> '0E-8' +ddsub126 subtract '10.23456790' '10.23456789' -> '1E-8' +ddsub127 subtract '10.23456791' '10.23456789' -> '2E-8' +ddsub128 subtract '10.23456792' '10.23456789' -> '3E-8' +ddsub129 subtract '10.23456793' '10.23456789' -> '4E-8' +ddsub130 subtract '10.23456794' '10.23456789' -> '5E-8' +ddsub131 subtract '10.23456781' '10.23456786' -> '-5E-8' +ddsub132 subtract '10.23456782' '10.23456786' -> '-4E-8' +ddsub133 subtract '10.23456783' '10.23456786' -> '-3E-8' +ddsub134 subtract '10.23456784' '10.23456786' -> '-2E-8' +ddsub135 subtract '10.23456785' '10.23456786' -> '-1E-8' +ddsub136 subtract '10.23456786' '10.23456786' -> '0E-8' +ddsub137 subtract '10.23456787' '10.23456786' -> '1E-8' +ddsub138 subtract '10.23456788' '10.23456786' -> '2E-8' +ddsub139 subtract '10.23456789' '10.23456786' -> '3E-8' +ddsub140 subtract '10.23456790' '10.23456786' -> '4E-8' +ddsub141 subtract '10.23456791' '10.23456786' -> '5E-8' +ddsub142 subtract '1' '0.999999999' -> '1E-9' +ddsub143 subtract '0.999999999' '1' -> '-1E-9' +ddsub144 subtract '-10.23456780' '-10.23456786' -> '6E-8' +ddsub145 subtract '-10.23456790' '-10.23456786' -> '-4E-8' +ddsub146 subtract '-10.23456791' '-10.23456786' -> '-5E-8' + +-- additional scaled arithmetic tests [0.97 problem] +ddsub160 subtract '0' '.1' -> '-0.1' +ddsub161 subtract '00' '.97983' -> '-0.97983' +ddsub162 subtract '0' '.9' -> '-0.9' +ddsub163 subtract '0' '0.102' -> '-0.102' +ddsub164 subtract '0' '.4' -> '-0.4' +ddsub165 subtract '0' '.307' -> '-0.307' +ddsub166 subtract '0' '.43822' -> '-0.43822' +ddsub167 subtract '0' '.911' -> '-0.911' +ddsub168 subtract '.0' '.02' -> '-0.02' +ddsub169 subtract '00' '.392' -> '-0.392' +ddsub170 subtract '0' '.26' -> '-0.26' +ddsub171 subtract '0' '0.51' -> '-0.51' +ddsub172 subtract '0' '.2234' -> '-0.2234' +ddsub173 subtract '0' '.2' -> '-0.2' +ddsub174 subtract '.0' '.0008' -> '-0.0008' +-- 0. on left +ddsub180 subtract '0.0' '-.1' -> '0.1' +ddsub181 subtract '0.00' '-.97983' -> '0.97983' +ddsub182 subtract '0.0' '-.9' -> '0.9' +ddsub183 subtract '0.0' '-0.102' -> '0.102' +ddsub184 subtract '0.0' '-.4' -> '0.4' +ddsub185 subtract '0.0' '-.307' -> '0.307' +ddsub186 subtract '0.0' '-.43822' -> '0.43822' +ddsub187 subtract '0.0' '-.911' -> '0.911' +ddsub188 subtract '0.0' '-.02' -> '0.02' +ddsub189 subtract '0.00' '-.392' -> '0.392' +ddsub190 subtract '0.0' '-.26' -> '0.26' +ddsub191 subtract '0.0' '-0.51' -> '0.51' +ddsub192 subtract '0.0' '-.2234' -> '0.2234' +ddsub193 subtract '0.0' '-.2' -> '0.2' +ddsub194 subtract '0.0' '-.0008' -> '0.0008' +-- negatives of same +ddsub200 subtract '0' '-.1' -> '0.1' +ddsub201 subtract '00' '-.97983' -> '0.97983' +ddsub202 subtract '0' '-.9' -> '0.9' +ddsub203 subtract '0' '-0.102' -> '0.102' +ddsub204 subtract '0' '-.4' -> '0.4' +ddsub205 subtract '0' '-.307' -> '0.307' +ddsub206 subtract '0' '-.43822' -> '0.43822' +ddsub207 subtract '0' '-.911' -> '0.911' +ddsub208 subtract '.0' '-.02' -> '0.02' +ddsub209 subtract '00' '-.392' -> '0.392' +ddsub210 subtract '0' '-.26' -> '0.26' +ddsub211 subtract '0' '-0.51' -> '0.51' +ddsub212 subtract '0' '-.2234' -> '0.2234' +ddsub213 subtract '0' '-.2' -> '0.2' +ddsub214 subtract '.0' '-.0008' -> '0.0008' + +-- more fixed, LHS swaps [really the same as testcases under add] +ddsub220 subtract '-56267E-12' 0 -> '-5.6267E-8' +ddsub221 subtract '-56267E-11' 0 -> '-5.6267E-7' +ddsub222 subtract '-56267E-10' 0 -> '-0.0000056267' +ddsub223 subtract '-56267E-9' 0 -> '-0.000056267' +ddsub224 subtract '-56267E-8' 0 -> '-0.00056267' +ddsub225 subtract '-56267E-7' 0 -> '-0.0056267' +ddsub226 subtract '-56267E-6' 0 -> '-0.056267' +ddsub227 subtract '-56267E-5' 0 -> '-0.56267' +ddsub228 subtract '-56267E-2' 0 -> '-562.67' +ddsub229 subtract '-56267E-1' 0 -> '-5626.7' +ddsub230 subtract '-56267E-0' 0 -> '-56267' +-- symmetry ... +ddsub240 subtract 0 '-56267E-12' -> '5.6267E-8' +ddsub241 subtract 0 '-56267E-11' -> '5.6267E-7' +ddsub242 subtract 0 '-56267E-10' -> '0.0000056267' +ddsub243 subtract 0 '-56267E-9' -> '0.000056267' +ddsub244 subtract 0 '-56267E-8' -> '0.00056267' +ddsub245 subtract 0 '-56267E-7' -> '0.0056267' +ddsub246 subtract 0 '-56267E-6' -> '0.056267' +ddsub247 subtract 0 '-56267E-5' -> '0.56267' +ddsub248 subtract 0 '-56267E-2' -> '562.67' +ddsub249 subtract 0 '-56267E-1' -> '5626.7' +ddsub250 subtract 0 '-56267E-0' -> '56267' + +-- now some more from the 'new' add +ddsub301 subtract '1.23456789' '1.00000000' -> '0.23456789' +ddsub302 subtract '1.23456789' '1.00000011' -> '0.23456778' + +-- some carrying effects +ddsub321 subtract '0.9998' '0.0000' -> '0.9998' +ddsub322 subtract '0.9998' '0.0001' -> '0.9997' +ddsub323 subtract '0.9998' '0.0002' -> '0.9996' +ddsub324 subtract '0.9998' '0.0003' -> '0.9995' +ddsub325 subtract '0.9998' '-0.0000' -> '0.9998' +ddsub326 subtract '0.9998' '-0.0001' -> '0.9999' +ddsub327 subtract '0.9998' '-0.0002' -> '1.0000' +ddsub328 subtract '0.9998' '-0.0003' -> '1.0001' + +-- internal boundaries +ddsub346 subtract '10000e+9' '7' -> '9999999999993' +ddsub347 subtract '10000e+9' '70' -> '9999999999930' +ddsub348 subtract '10000e+9' '700' -> '9999999999300' +ddsub349 subtract '10000e+9' '7000' -> '9999999993000' +ddsub350 subtract '10000e+9' '70000' -> '9999999930000' +ddsub351 subtract '10000e+9' '700000' -> '9999999300000' +ddsub352 subtract '7' '10000e+9' -> '-9999999999993' +ddsub353 subtract '70' '10000e+9' -> '-9999999999930' +ddsub354 subtract '700' '10000e+9' -> '-9999999999300' +ddsub355 subtract '7000' '10000e+9' -> '-9999999993000' +ddsub356 subtract '70000' '10000e+9' -> '-9999999930000' +ddsub357 subtract '700000' '10000e+9' -> '-9999999300000' + +-- zero preservation +ddsub361 subtract 1 '0.0001' -> '0.9999' +ddsub362 subtract 1 '0.00001' -> '0.99999' +ddsub363 subtract 1 '0.000001' -> '0.999999' +ddsub364 subtract 1 '0.0000000000000001' -> '0.9999999999999999' +ddsub365 subtract 1 '0.00000000000000001' -> '1.000000000000000' Inexact Rounded +ddsub366 subtract 1 '0.000000000000000001' -> '1.000000000000000' Inexact Rounded + +-- some funny zeros [in case of bad signum] +ddsub370 subtract 1 0 -> 1 +ddsub371 subtract 1 0. -> 1 +ddsub372 subtract 1 .0 -> 1.0 +ddsub373 subtract 1 0.0 -> 1.0 +ddsub374 subtract 0 1 -> -1 +ddsub375 subtract 0. 1 -> -1 +ddsub376 subtract .0 1 -> -1.0 +ddsub377 subtract 0.0 1 -> -1.0 + +-- leading 0 digit before round +ddsub910 subtract -103519362 -51897955.3 -> -51621406.7 +ddsub911 subtract 159579.444 89827.5229 -> 69751.9211 + +ddsub920 subtract 333.0000000123456 33.00000001234566 -> 299.9999999999999 Inexact Rounded +ddsub921 subtract 333.0000000123456 33.00000001234565 -> 300.0000000000000 Inexact Rounded +ddsub922 subtract 133.0000000123456 33.00000001234565 -> 99.99999999999995 +ddsub923 subtract 133.0000000123456 33.00000001234564 -> 99.99999999999996 +ddsub924 subtract 133.0000000123456 33.00000001234540 -> 100.0000000000002 Rounded +ddsub925 subtract 133.0000000123456 43.00000001234560 -> 90.00000000000000 +ddsub926 subtract 133.0000000123456 43.00000001234561 -> 89.99999999999999 +ddsub927 subtract 133.0000000123456 43.00000001234566 -> 89.99999999999994 +ddsub928 subtract 101.0000000123456 91.00000001234566 -> 9.99999999999994 +ddsub929 subtract 101.0000000123456 99.00000001234566 -> 1.99999999999994 + +-- more LHS swaps [were fixed] +ddsub390 subtract '-56267E-10' 0 -> '-0.0000056267' +ddsub391 subtract '-56267E-6' 0 -> '-0.056267' +ddsub392 subtract '-56267E-5' 0 -> '-0.56267' +ddsub393 subtract '-56267E-4' 0 -> '-5.6267' +ddsub394 subtract '-56267E-3' 0 -> '-56.267' +ddsub395 subtract '-56267E-2' 0 -> '-562.67' +ddsub396 subtract '-56267E-1' 0 -> '-5626.7' +ddsub397 subtract '-56267E-0' 0 -> '-56267' +ddsub398 subtract '-5E-10' 0 -> '-5E-10' +ddsub399 subtract '-5E-7' 0 -> '-5E-7' +ddsub400 subtract '-5E-6' 0 -> '-0.000005' +ddsub401 subtract '-5E-5' 0 -> '-0.00005' +ddsub402 subtract '-5E-4' 0 -> '-0.0005' +ddsub403 subtract '-5E-1' 0 -> '-0.5' +ddsub404 subtract '-5E0' 0 -> '-5' +ddsub405 subtract '-5E1' 0 -> '-50' +ddsub406 subtract '-5E5' 0 -> '-500000' +ddsub407 subtract '-5E15' 0 -> '-5000000000000000' +ddsub408 subtract '-5E16' 0 -> '-5.000000000000000E+16' Rounded +ddsub409 subtract '-5E17' 0 -> '-5.000000000000000E+17' Rounded +ddsub410 subtract '-5E18' 0 -> '-5.000000000000000E+18' Rounded +ddsub411 subtract '-5E100' 0 -> '-5.000000000000000E+100' Rounded + +-- more RHS swaps [were fixed] +ddsub420 subtract 0 '-56267E-10' -> '0.0000056267' +ddsub421 subtract 0 '-56267E-6' -> '0.056267' +ddsub422 subtract 0 '-56267E-5' -> '0.56267' +ddsub423 subtract 0 '-56267E-4' -> '5.6267' +ddsub424 subtract 0 '-56267E-3' -> '56.267' +ddsub425 subtract 0 '-56267E-2' -> '562.67' +ddsub426 subtract 0 '-56267E-1' -> '5626.7' +ddsub427 subtract 0 '-56267E-0' -> '56267' +ddsub428 subtract 0 '-5E-10' -> '5E-10' +ddsub429 subtract 0 '-5E-7' -> '5E-7' +ddsub430 subtract 0 '-5E-6' -> '0.000005' +ddsub431 subtract 0 '-5E-5' -> '0.00005' +ddsub432 subtract 0 '-5E-4' -> '0.0005' +ddsub433 subtract 0 '-5E-1' -> '0.5' +ddsub434 subtract 0 '-5E0' -> '5' +ddsub435 subtract 0 '-5E1' -> '50' +ddsub436 subtract 0 '-5E5' -> '500000' +ddsub437 subtract 0 '-5E15' -> '5000000000000000' +ddsub438 subtract 0 '-5E16' -> '5.000000000000000E+16' Rounded +ddsub439 subtract 0 '-5E17' -> '5.000000000000000E+17' Rounded +ddsub440 subtract 0 '-5E18' -> '5.000000000000000E+18' Rounded +ddsub441 subtract 0 '-5E100' -> '5.000000000000000E+100' Rounded + + +-- try borderline precision, with carries, etc. +ddsub461 subtract '1E+16' '1' -> '9999999999999999' +ddsub462 subtract '1E+12' '-1.111' -> '1000000000001.111' +ddsub463 subtract '1.111' '-1E+12' -> '1000000000001.111' +ddsub464 subtract '-1' '-1E+16' -> '9999999999999999' +ddsub465 subtract '7E+15' '1' -> '6999999999999999' +ddsub466 subtract '7E+12' '-1.111' -> '7000000000001.111' +ddsub467 subtract '1.111' '-7E+12' -> '7000000000001.111' +ddsub468 subtract '-1' '-7E+15' -> '6999999999999999' + +-- 1234567890123456 1234567890123456 1 23456789012345 +ddsub470 subtract '0.4444444444444444' '-0.5555555555555563' -> '1.000000000000001' Inexact Rounded +ddsub471 subtract '0.4444444444444444' '-0.5555555555555562' -> '1.000000000000001' Inexact Rounded +ddsub472 subtract '0.4444444444444444' '-0.5555555555555561' -> '1.000000000000000' Inexact Rounded +ddsub473 subtract '0.4444444444444444' '-0.5555555555555560' -> '1.000000000000000' Inexact Rounded +ddsub474 subtract '0.4444444444444444' '-0.5555555555555559' -> '1.000000000000000' Inexact Rounded +ddsub475 subtract '0.4444444444444444' '-0.5555555555555558' -> '1.000000000000000' Inexact Rounded +ddsub476 subtract '0.4444444444444444' '-0.5555555555555557' -> '1.000000000000000' Inexact Rounded +ddsub477 subtract '0.4444444444444444' '-0.5555555555555556' -> '1.000000000000000' Rounded +ddsub478 subtract '0.4444444444444444' '-0.5555555555555555' -> '0.9999999999999999' +ddsub479 subtract '0.4444444444444444' '-0.5555555555555554' -> '0.9999999999999998' +ddsub480 subtract '0.4444444444444444' '-0.5555555555555553' -> '0.9999999999999997' +ddsub481 subtract '0.4444444444444444' '-0.5555555555555552' -> '0.9999999999999996' +ddsub482 subtract '0.4444444444444444' '-0.5555555555555551' -> '0.9999999999999995' +ddsub483 subtract '0.4444444444444444' '-0.5555555555555550' -> '0.9999999999999994' + +-- and some more, including residue effects and different roundings +rounding: half_up +ddsub500 subtract '1231234567456789' 0 -> '1231234567456789' +ddsub501 subtract '1231234567456789' 0.000000001 -> '1231234567456789' Inexact Rounded +ddsub502 subtract '1231234567456789' 0.000001 -> '1231234567456789' Inexact Rounded +ddsub503 subtract '1231234567456789' 0.1 -> '1231234567456789' Inexact Rounded +ddsub504 subtract '1231234567456789' 0.4 -> '1231234567456789' Inexact Rounded +ddsub505 subtract '1231234567456789' 0.49 -> '1231234567456789' Inexact Rounded +ddsub506 subtract '1231234567456789' 0.499999 -> '1231234567456789' Inexact Rounded +ddsub507 subtract '1231234567456789' 0.499999999 -> '1231234567456789' Inexact Rounded +ddsub508 subtract '1231234567456789' 0.5 -> '1231234567456789' Inexact Rounded +ddsub509 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded +ddsub510 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded +ddsub511 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded +ddsub512 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded +ddsub513 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded +ddsub514 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded +ddsub515 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded +ddsub516 subtract '1231234567456789' 1 -> '1231234567456788' +ddsub517 subtract '1231234567456789' 1.000000001 -> '1231234567456788' Inexact Rounded +ddsub518 subtract '1231234567456789' 1.00001 -> '1231234567456788' Inexact Rounded +ddsub519 subtract '1231234567456789' 1.1 -> '1231234567456788' Inexact Rounded + +rounding: half_even +ddsub520 subtract '1231234567456789' 0 -> '1231234567456789' +ddsub521 subtract '1231234567456789' 0.000000001 -> '1231234567456789' Inexact Rounded +ddsub522 subtract '1231234567456789' 0.000001 -> '1231234567456789' Inexact Rounded +ddsub523 subtract '1231234567456789' 0.1 -> '1231234567456789' Inexact Rounded +ddsub524 subtract '1231234567456789' 0.4 -> '1231234567456789' Inexact Rounded +ddsub525 subtract '1231234567456789' 0.49 -> '1231234567456789' Inexact Rounded +ddsub526 subtract '1231234567456789' 0.499999 -> '1231234567456789' Inexact Rounded +ddsub527 subtract '1231234567456789' 0.499999999 -> '1231234567456789' Inexact Rounded +ddsub528 subtract '1231234567456789' 0.5 -> '1231234567456788' Inexact Rounded +ddsub529 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded +ddsub530 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded +ddsub531 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded +ddsub532 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded +ddsub533 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded +ddsub534 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded +ddsub535 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded +ddsub536 subtract '1231234567456789' 1 -> '1231234567456788' +ddsub537 subtract '1231234567456789' 1.00000001 -> '1231234567456788' Inexact Rounded +ddsub538 subtract '1231234567456789' 1.00001 -> '1231234567456788' Inexact Rounded +ddsub539 subtract '1231234567456789' 1.1 -> '1231234567456788' Inexact Rounded +-- critical few with even bottom digit... +ddsub540 subtract '1231234567456788' 0.499999999 -> '1231234567456788' Inexact Rounded +ddsub541 subtract '1231234567456788' 0.5 -> '1231234567456788' Inexact Rounded +ddsub542 subtract '1231234567456788' 0.500000001 -> '1231234567456787' Inexact Rounded + +rounding: down +ddsub550 subtract '1231234567456789' 0 -> '1231234567456789' +ddsub551 subtract '1231234567456789' 0.000000001 -> '1231234567456788' Inexact Rounded +ddsub552 subtract '1231234567456789' 0.000001 -> '1231234567456788' Inexact Rounded +ddsub553 subtract '1231234567456789' 0.1 -> '1231234567456788' Inexact Rounded +ddsub554 subtract '1231234567456789' 0.4 -> '1231234567456788' Inexact Rounded +ddsub555 subtract '1231234567456789' 0.49 -> '1231234567456788' Inexact Rounded +ddsub556 subtract '1231234567456789' 0.499999 -> '1231234567456788' Inexact Rounded +ddsub557 subtract '1231234567456789' 0.499999999 -> '1231234567456788' Inexact Rounded +ddsub558 subtract '1231234567456789' 0.5 -> '1231234567456788' Inexact Rounded +ddsub559 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded +ddsub560 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded +ddsub561 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded +ddsub562 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded +ddsub563 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded +ddsub564 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded +ddsub565 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded +ddsub566 subtract '1231234567456789' 1 -> '1231234567456788' +ddsub567 subtract '1231234567456789' 1.00000001 -> '1231234567456787' Inexact Rounded +ddsub568 subtract '1231234567456789' 1.00001 -> '1231234567456787' Inexact Rounded +ddsub569 subtract '1231234567456789' 1.1 -> '1231234567456787' Inexact Rounded + +-- symmetry... +rounding: half_up +ddsub600 subtract 0 '1231234567456789' -> '-1231234567456789' +ddsub601 subtract 0.000000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub602 subtract 0.000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub603 subtract 0.1 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub604 subtract 0.4 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub605 subtract 0.49 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub606 subtract 0.499999 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub607 subtract 0.499999999 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub608 subtract 0.5 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub609 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub610 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub611 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub612 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub613 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub614 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub615 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub616 subtract 1 '1231234567456789' -> '-1231234567456788' +ddsub617 subtract 1.000000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub618 subtract 1.00001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub619 subtract 1.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded + +rounding: half_even +ddsub620 subtract 0 '1231234567456789' -> '-1231234567456789' +ddsub621 subtract 0.000000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub622 subtract 0.000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub623 subtract 0.1 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub624 subtract 0.4 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub625 subtract 0.49 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub626 subtract 0.499999 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub627 subtract 0.499999999 '1231234567456789' -> '-1231234567456789' Inexact Rounded +ddsub628 subtract 0.5 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub629 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub630 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub631 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub632 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub633 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub634 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub635 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub636 subtract 1 '1231234567456789' -> '-1231234567456788' +ddsub637 subtract 1.00000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub638 subtract 1.00001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub639 subtract 1.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded +-- critical few with even bottom digit... +ddsub640 subtract 0.499999999 '1231234567456788' -> '-1231234567456788' Inexact Rounded +ddsub641 subtract 0.5 '1231234567456788' -> '-1231234567456788' Inexact Rounded +ddsub642 subtract 0.500000001 '1231234567456788' -> '-1231234567456787' Inexact Rounded + +rounding: down +ddsub650 subtract 0 '1231234567456789' -> '-1231234567456789' +ddsub651 subtract 0.000000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub652 subtract 0.000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub653 subtract 0.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub654 subtract 0.4 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub655 subtract 0.49 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub656 subtract 0.499999 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub657 subtract 0.499999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub658 subtract 0.5 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub659 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub660 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub661 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub662 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub663 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub664 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub665 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded +ddsub666 subtract 1 '1231234567456789' -> '-1231234567456788' +ddsub667 subtract 1.00000001 '1231234567456789' -> '-1231234567456787' Inexact Rounded +ddsub668 subtract 1.00001 '1231234567456789' -> '-1231234567456787' Inexact Rounded +ddsub669 subtract 1.1 '1231234567456789' -> '-1231234567456787' Inexact Rounded + + +-- lots of leading zeros in intermediate result, and showing effects of +-- input rounding would have affected the following +rounding: half_up +ddsub670 subtract '1234567456789' '1234567456788.1' -> 0.9 +ddsub671 subtract '1234567456789' '1234567456788.9' -> 0.1 +ddsub672 subtract '1234567456789' '1234567456789.1' -> -0.1 +ddsub673 subtract '1234567456789' '1234567456789.5' -> -0.5 +ddsub674 subtract '1234567456789' '1234567456789.9' -> -0.9 + +rounding: half_even +ddsub680 subtract '1234567456789' '1234567456788.1' -> 0.9 +ddsub681 subtract '1234567456789' '1234567456788.9' -> 0.1 +ddsub682 subtract '1234567456789' '1234567456789.1' -> -0.1 +ddsub683 subtract '1234567456789' '1234567456789.5' -> -0.5 +ddsub684 subtract '1234567456789' '1234567456789.9' -> -0.9 + +ddsub685 subtract '1234567456788' '1234567456787.1' -> 0.9 +ddsub686 subtract '1234567456788' '1234567456787.9' -> 0.1 +ddsub687 subtract '1234567456788' '1234567456788.1' -> -0.1 +ddsub688 subtract '1234567456788' '1234567456788.5' -> -0.5 +ddsub689 subtract '1234567456788' '1234567456788.9' -> -0.9 + +rounding: down +ddsub690 subtract '1234567456789' '1234567456788.1' -> 0.9 +ddsub691 subtract '1234567456789' '1234567456788.9' -> 0.1 +ddsub692 subtract '1234567456789' '1234567456789.1' -> -0.1 +ddsub693 subtract '1234567456789' '1234567456789.5' -> -0.5 +ddsub694 subtract '1234567456789' '1234567456789.9' -> -0.9 + +-- Specials +ddsub780 subtract -Inf Inf -> -Infinity +ddsub781 subtract -Inf 1000 -> -Infinity +ddsub782 subtract -Inf 1 -> -Infinity +ddsub783 subtract -Inf -0 -> -Infinity +ddsub784 subtract -Inf -1 -> -Infinity +ddsub785 subtract -Inf -1000 -> -Infinity +ddsub787 subtract -1000 Inf -> -Infinity +ddsub788 subtract -Inf Inf -> -Infinity +ddsub789 subtract -1 Inf -> -Infinity +ddsub790 subtract 0 Inf -> -Infinity +ddsub791 subtract 1 Inf -> -Infinity +ddsub792 subtract 1000 Inf -> -Infinity + +ddsub800 subtract Inf Inf -> NaN Invalid_operation +ddsub801 subtract Inf 1000 -> Infinity +ddsub802 subtract Inf 1 -> Infinity +ddsub803 subtract Inf 0 -> Infinity +ddsub804 subtract Inf -0 -> Infinity +ddsub805 subtract Inf -1 -> Infinity +ddsub806 subtract Inf -1000 -> Infinity +ddsub807 subtract Inf -Inf -> Infinity +ddsub808 subtract -1000 -Inf -> Infinity +ddsub809 subtract -Inf -Inf -> NaN Invalid_operation +ddsub810 subtract -1 -Inf -> Infinity +ddsub811 subtract -0 -Inf -> Infinity +ddsub812 subtract 0 -Inf -> Infinity +ddsub813 subtract 1 -Inf -> Infinity +ddsub814 subtract 1000 -Inf -> Infinity +ddsub815 subtract Inf -Inf -> Infinity + +ddsub821 subtract NaN Inf -> NaN +ddsub822 subtract -NaN 1000 -> -NaN +ddsub823 subtract NaN 1 -> NaN +ddsub824 subtract NaN 0 -> NaN +ddsub825 subtract NaN -0 -> NaN +ddsub826 subtract NaN -1 -> NaN +ddsub827 subtract NaN -1000 -> NaN +ddsub828 subtract NaN -Inf -> NaN +ddsub829 subtract -NaN NaN -> -NaN +ddsub830 subtract -Inf NaN -> NaN +ddsub831 subtract -1000 NaN -> NaN +ddsub832 subtract -1 NaN -> NaN +ddsub833 subtract -0 NaN -> NaN +ddsub834 subtract 0 NaN -> NaN +ddsub835 subtract 1 NaN -> NaN +ddsub836 subtract 1000 -NaN -> -NaN +ddsub837 subtract Inf NaN -> NaN + +ddsub841 subtract sNaN Inf -> NaN Invalid_operation +ddsub842 subtract -sNaN 1000 -> -NaN Invalid_operation +ddsub843 subtract sNaN 1 -> NaN Invalid_operation +ddsub844 subtract sNaN 0 -> NaN Invalid_operation +ddsub845 subtract sNaN -0 -> NaN Invalid_operation +ddsub846 subtract sNaN -1 -> NaN Invalid_operation +ddsub847 subtract sNaN -1000 -> NaN Invalid_operation +ddsub848 subtract sNaN NaN -> NaN Invalid_operation +ddsub849 subtract sNaN sNaN -> NaN Invalid_operation +ddsub850 subtract NaN sNaN -> NaN Invalid_operation +ddsub851 subtract -Inf -sNaN -> -NaN Invalid_operation +ddsub852 subtract -1000 sNaN -> NaN Invalid_operation +ddsub853 subtract -1 sNaN -> NaN Invalid_operation +ddsub854 subtract -0 sNaN -> NaN Invalid_operation +ddsub855 subtract 0 sNaN -> NaN Invalid_operation +ddsub856 subtract 1 sNaN -> NaN Invalid_operation +ddsub857 subtract 1000 sNaN -> NaN Invalid_operation +ddsub858 subtract Inf sNaN -> NaN Invalid_operation +ddsub859 subtract NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddsub861 subtract NaN01 -Inf -> NaN1 +ddsub862 subtract -NaN02 -1000 -> -NaN2 +ddsub863 subtract NaN03 1000 -> NaN3 +ddsub864 subtract NaN04 Inf -> NaN4 +ddsub865 subtract NaN05 NaN61 -> NaN5 +ddsub866 subtract -Inf -NaN71 -> -NaN71 +ddsub867 subtract -1000 NaN81 -> NaN81 +ddsub868 subtract 1000 NaN91 -> NaN91 +ddsub869 subtract Inf NaN101 -> NaN101 +ddsub871 subtract sNaN011 -Inf -> NaN11 Invalid_operation +ddsub872 subtract sNaN012 -1000 -> NaN12 Invalid_operation +ddsub873 subtract -sNaN013 1000 -> -NaN13 Invalid_operation +ddsub874 subtract sNaN014 NaN171 -> NaN14 Invalid_operation +ddsub875 subtract sNaN015 sNaN181 -> NaN15 Invalid_operation +ddsub876 subtract NaN016 sNaN191 -> NaN191 Invalid_operation +ddsub877 subtract -Inf sNaN201 -> NaN201 Invalid_operation +ddsub878 subtract -1000 sNaN211 -> NaN211 Invalid_operation +ddsub879 subtract 1000 -sNaN221 -> -NaN221 Invalid_operation +ddsub880 subtract Inf sNaN231 -> NaN231 Invalid_operation +ddsub881 subtract NaN025 sNaN241 -> NaN241 Invalid_operation + +-- edge case spills +ddsub901 subtract 2.E-3 1.002 -> -1.000 +ddsub902 subtract 2.0E-3 1.002 -> -1.0000 +ddsub903 subtract 2.00E-3 1.0020 -> -1.00000 +ddsub904 subtract 2.000E-3 1.00200 -> -1.000000 +ddsub905 subtract 2.0000E-3 1.002000 -> -1.0000000 +ddsub906 subtract 2.00000E-3 1.0020000 -> -1.00000000 +ddsub907 subtract 2.000000E-3 1.00200000 -> -1.000000000 +ddsub908 subtract 2.0000000E-3 1.002000000 -> -1.0000000000 + +-- subnormals and overflows covered under Add + +-- Null tests +ddsub9990 subtract 10 # -> NaN Invalid_operation +ddsub9991 subtract # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ddToIntegral.decTest b/Lib/test/decimaltestdata/ddToIntegral.decTest index 900bd4a..bf6d61f 100644 --- a/Lib/test/decimaltestdata/ddToIntegral.decTest +++ b/Lib/test/decimaltestdata/ddToIntegral.decTest @@ -1,257 +1,257 @@ ------------------------------------------------------------------------- --- ddToIntegral.decTest -- round Double to integral value -- --- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests tests the extended specification 'round-to-integral --- value-exact' operations (from IEEE 854, later modified in 754r). --- All non-zero results are defined as being those from either copy or --- quantize, so those are assumed to have been tested extensively --- elsewhere; the tests here are for integrity, rounding mode, etc. --- Also, it is assumed the test harness will use these tests for both --- ToIntegralExact (which does set Inexact) and the fixed-name --- functions (which do not set Inexact). - --- Note that decNumber implements an earlier definition of toIntegral --- which never sets Inexact; the decTest operator for that is called --- 'tointegral' instead of 'tointegralx'. - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - -ddintx001 tointegralx 0 -> 0 -ddintx002 tointegralx 0.0 -> 0 -ddintx003 tointegralx 0.1 -> 0 Inexact Rounded -ddintx004 tointegralx 0.2 -> 0 Inexact Rounded -ddintx005 tointegralx 0.3 -> 0 Inexact Rounded -ddintx006 tointegralx 0.4 -> 0 Inexact Rounded -ddintx007 tointegralx 0.5 -> 0 Inexact Rounded -ddintx008 tointegralx 0.6 -> 1 Inexact Rounded -ddintx009 tointegralx 0.7 -> 1 Inexact Rounded -ddintx010 tointegralx 0.8 -> 1 Inexact Rounded -ddintx011 tointegralx 0.9 -> 1 Inexact Rounded -ddintx012 tointegralx 1 -> 1 -ddintx013 tointegralx 1.0 -> 1 Rounded -ddintx014 tointegralx 1.1 -> 1 Inexact Rounded -ddintx015 tointegralx 1.2 -> 1 Inexact Rounded -ddintx016 tointegralx 1.3 -> 1 Inexact Rounded -ddintx017 tointegralx 1.4 -> 1 Inexact Rounded -ddintx018 tointegralx 1.5 -> 2 Inexact Rounded -ddintx019 tointegralx 1.6 -> 2 Inexact Rounded -ddintx020 tointegralx 1.7 -> 2 Inexact Rounded -ddintx021 tointegralx 1.8 -> 2 Inexact Rounded -ddintx022 tointegralx 1.9 -> 2 Inexact Rounded --- negatives -ddintx031 tointegralx -0 -> -0 -ddintx032 tointegralx -0.0 -> -0 -ddintx033 tointegralx -0.1 -> -0 Inexact Rounded -ddintx034 tointegralx -0.2 -> -0 Inexact Rounded -ddintx035 tointegralx -0.3 -> -0 Inexact Rounded -ddintx036 tointegralx -0.4 -> -0 Inexact Rounded -ddintx037 tointegralx -0.5 -> -0 Inexact Rounded -ddintx038 tointegralx -0.6 -> -1 Inexact Rounded -ddintx039 tointegralx -0.7 -> -1 Inexact Rounded -ddintx040 tointegralx -0.8 -> -1 Inexact Rounded -ddintx041 tointegralx -0.9 -> -1 Inexact Rounded -ddintx042 tointegralx -1 -> -1 -ddintx043 tointegralx -1.0 -> -1 Rounded -ddintx044 tointegralx -1.1 -> -1 Inexact Rounded -ddintx045 tointegralx -1.2 -> -1 Inexact Rounded -ddintx046 tointegralx -1.3 -> -1 Inexact Rounded -ddintx047 tointegralx -1.4 -> -1 Inexact Rounded -ddintx048 tointegralx -1.5 -> -2 Inexact Rounded -ddintx049 tointegralx -1.6 -> -2 Inexact Rounded -ddintx050 tointegralx -1.7 -> -2 Inexact Rounded -ddintx051 tointegralx -1.8 -> -2 Inexact Rounded -ddintx052 tointegralx -1.9 -> -2 Inexact Rounded --- next two would be NaN using quantize(x, 0) -ddintx053 tointegralx 10E+60 -> 1.0E+61 -ddintx054 tointegralx -10E+60 -> -1.0E+61 - --- numbers around precision -ddintx060 tointegralx '56267E-17' -> '0' Inexact Rounded -ddintx061 tointegralx '56267E-5' -> '1' Inexact Rounded -ddintx062 tointegralx '56267E-2' -> '563' Inexact Rounded -ddintx063 tointegralx '56267E-1' -> '5627' Inexact Rounded -ddintx065 tointegralx '56267E-0' -> '56267' -ddintx066 tointegralx '56267E+0' -> '56267' -ddintx067 tointegralx '56267E+1' -> '5.6267E+5' -ddintx068 tointegralx '56267E+9' -> '5.6267E+13' -ddintx069 tointegralx '56267E+10' -> '5.6267E+14' -ddintx070 tointegralx '56267E+11' -> '5.6267E+15' -ddintx071 tointegralx '56267E+12' -> '5.6267E+16' -ddintx072 tointegralx '56267E+13' -> '5.6267E+17' -ddintx073 tointegralx '1.23E+96' -> '1.23E+96' -ddintx074 tointegralx '1.23E+384' -> #47fd300000000000 Clamped - -ddintx080 tointegralx '-56267E-10' -> '-0' Inexact Rounded -ddintx081 tointegralx '-56267E-5' -> '-1' Inexact Rounded -ddintx082 tointegralx '-56267E-2' -> '-563' Inexact Rounded -ddintx083 tointegralx '-56267E-1' -> '-5627' Inexact Rounded -ddintx085 tointegralx '-56267E-0' -> '-56267' -ddintx086 tointegralx '-56267E+0' -> '-56267' -ddintx087 tointegralx '-56267E+1' -> '-5.6267E+5' -ddintx088 tointegralx '-56267E+9' -> '-5.6267E+13' -ddintx089 tointegralx '-56267E+10' -> '-5.6267E+14' -ddintx090 tointegralx '-56267E+11' -> '-5.6267E+15' -ddintx091 tointegralx '-56267E+12' -> '-5.6267E+16' -ddintx092 tointegralx '-56267E+13' -> '-5.6267E+17' -ddintx093 tointegralx '-1.23E+96' -> '-1.23E+96' -ddintx094 tointegralx '-1.23E+384' -> #c7fd300000000000 Clamped - --- subnormal inputs -ddintx100 tointegralx 1E-299 -> 0 Inexact Rounded -ddintx101 tointegralx 0.1E-299 -> 0 Inexact Rounded -ddintx102 tointegralx 0.01E-299 -> 0 Inexact Rounded -ddintx103 tointegralx 0E-299 -> 0 - --- specials and zeros -ddintx120 tointegralx 'Inf' -> Infinity -ddintx121 tointegralx '-Inf' -> -Infinity -ddintx122 tointegralx NaN -> NaN -ddintx123 tointegralx sNaN -> NaN Invalid_operation -ddintx124 tointegralx 0 -> 0 -ddintx125 tointegralx -0 -> -0 -ddintx126 tointegralx 0.000 -> 0 -ddintx127 tointegralx 0.00 -> 0 -ddintx128 tointegralx 0.0 -> 0 -ddintx129 tointegralx 0 -> 0 -ddintx130 tointegralx 0E-3 -> 0 -ddintx131 tointegralx 0E-2 -> 0 -ddintx132 tointegralx 0E-1 -> 0 -ddintx133 tointegralx 0E-0 -> 0 -ddintx134 tointegralx 0E+1 -> 0E+1 -ddintx135 tointegralx 0E+2 -> 0E+2 -ddintx136 tointegralx 0E+3 -> 0E+3 -ddintx137 tointegralx 0E+4 -> 0E+4 -ddintx138 tointegralx 0E+5 -> 0E+5 -ddintx139 tointegralx -0.000 -> -0 -ddintx140 tointegralx -0.00 -> -0 -ddintx141 tointegralx -0.0 -> -0 -ddintx142 tointegralx -0 -> -0 -ddintx143 tointegralx -0E-3 -> -0 -ddintx144 tointegralx -0E-2 -> -0 -ddintx145 tointegralx -0E-1 -> -0 -ddintx146 tointegralx -0E-0 -> -0 -ddintx147 tointegralx -0E+1 -> -0E+1 -ddintx148 tointegralx -0E+2 -> -0E+2 -ddintx149 tointegralx -0E+3 -> -0E+3 -ddintx150 tointegralx -0E+4 -> -0E+4 -ddintx151 tointegralx -0E+5 -> -0E+5 --- propagating NaNs -ddintx152 tointegralx NaN808 -> NaN808 -ddintx153 tointegralx sNaN080 -> NaN80 Invalid_operation -ddintx154 tointegralx -NaN808 -> -NaN808 -ddintx155 tointegralx -sNaN080 -> -NaN80 Invalid_operation -ddintx156 tointegralx -NaN -> -NaN -ddintx157 tointegralx -sNaN -> -NaN Invalid_operation - --- examples -rounding: half_up -ddintx200 tointegralx 2.1 -> 2 Inexact Rounded -ddintx201 tointegralx 100 -> 100 -ddintx202 tointegralx 100.0 -> 100 Rounded -ddintx203 tointegralx 101.5 -> 102 Inexact Rounded -ddintx204 tointegralx -101.5 -> -102 Inexact Rounded -ddintx205 tointegralx 10E+5 -> 1.0E+6 -ddintx206 tointegralx 7.89E+77 -> 7.89E+77 -ddintx207 tointegralx -Inf -> -Infinity - - --- all rounding modes -rounding: half_even -ddintx210 tointegralx 55.5 -> 56 Inexact Rounded -ddintx211 tointegralx 56.5 -> 56 Inexact Rounded -ddintx212 tointegralx 57.5 -> 58 Inexact Rounded -ddintx213 tointegralx -55.5 -> -56 Inexact Rounded -ddintx214 tointegralx -56.5 -> -56 Inexact Rounded -ddintx215 tointegralx -57.5 -> -58 Inexact Rounded - -rounding: half_up - -ddintx220 tointegralx 55.5 -> 56 Inexact Rounded -ddintx221 tointegralx 56.5 -> 57 Inexact Rounded -ddintx222 tointegralx 57.5 -> 58 Inexact Rounded -ddintx223 tointegralx -55.5 -> -56 Inexact Rounded -ddintx224 tointegralx -56.5 -> -57 Inexact Rounded -ddintx225 tointegralx -57.5 -> -58 Inexact Rounded - -rounding: half_down - -ddintx230 tointegralx 55.5 -> 55 Inexact Rounded -ddintx231 tointegralx 56.5 -> 56 Inexact Rounded -ddintx232 tointegralx 57.5 -> 57 Inexact Rounded -ddintx233 tointegralx -55.5 -> -55 Inexact Rounded -ddintx234 tointegralx -56.5 -> -56 Inexact Rounded -ddintx235 tointegralx -57.5 -> -57 Inexact Rounded - -rounding: up - -ddintx240 tointegralx 55.3 -> 56 Inexact Rounded -ddintx241 tointegralx 56.3 -> 57 Inexact Rounded -ddintx242 tointegralx 57.3 -> 58 Inexact Rounded -ddintx243 tointegralx -55.3 -> -56 Inexact Rounded -ddintx244 tointegralx -56.3 -> -57 Inexact Rounded -ddintx245 tointegralx -57.3 -> -58 Inexact Rounded - -rounding: down - -ddintx250 tointegralx 55.7 -> 55 Inexact Rounded -ddintx251 tointegralx 56.7 -> 56 Inexact Rounded -ddintx252 tointegralx 57.7 -> 57 Inexact Rounded -ddintx253 tointegralx -55.7 -> -55 Inexact Rounded -ddintx254 tointegralx -56.7 -> -56 Inexact Rounded -ddintx255 tointegralx -57.7 -> -57 Inexact Rounded - -rounding: ceiling - -ddintx260 tointegralx 55.3 -> 56 Inexact Rounded -ddintx261 tointegralx 56.3 -> 57 Inexact Rounded -ddintx262 tointegralx 57.3 -> 58 Inexact Rounded -ddintx263 tointegralx -55.3 -> -55 Inexact Rounded -ddintx264 tointegralx -56.3 -> -56 Inexact Rounded -ddintx265 tointegralx -57.3 -> -57 Inexact Rounded - -rounding: floor - -ddintx270 tointegralx 55.7 -> 55 Inexact Rounded -ddintx271 tointegralx 56.7 -> 56 Inexact Rounded -ddintx272 tointegralx 57.7 -> 57 Inexact Rounded -ddintx273 tointegralx -55.7 -> -56 Inexact Rounded -ddintx274 tointegralx -56.7 -> -57 Inexact Rounded -ddintx275 tointegralx -57.7 -> -58 Inexact Rounded - --- Int and uInt32 edge values for testing conversions -ddintx300 tointegralx -2147483646 -> -2147483646 -ddintx301 tointegralx -2147483647 -> -2147483647 -ddintx302 tointegralx -2147483648 -> -2147483648 -ddintx303 tointegralx -2147483649 -> -2147483649 -ddintx304 tointegralx 2147483646 -> 2147483646 -ddintx305 tointegralx 2147483647 -> 2147483647 -ddintx306 tointegralx 2147483648 -> 2147483648 -ddintx307 tointegralx 2147483649 -> 2147483649 -ddintx308 tointegralx 4294967294 -> 4294967294 -ddintx309 tointegralx 4294967295 -> 4294967295 -ddintx310 tointegralx 4294967296 -> 4294967296 -ddintx311 tointegralx 4294967297 -> 4294967297 - +------------------------------------------------------------------------ +-- ddToIntegral.decTest -- round Double to integral value -- +-- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests tests the extended specification 'round-to-integral +-- value-exact' operations (from IEEE 854, later modified in 754r). +-- All non-zero results are defined as being those from either copy or +-- quantize, so those are assumed to have been tested extensively +-- elsewhere; the tests here are for integrity, rounding mode, etc. +-- Also, it is assumed the test harness will use these tests for both +-- ToIntegralExact (which does set Inexact) and the fixed-name +-- functions (which do not set Inexact). + +-- Note that decNumber implements an earlier definition of toIntegral +-- which never sets Inexact; the decTest operator for that is called +-- 'tointegral' instead of 'tointegralx'. + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +ddintx001 tointegralx 0 -> 0 +ddintx002 tointegralx 0.0 -> 0 +ddintx003 tointegralx 0.1 -> 0 Inexact Rounded +ddintx004 tointegralx 0.2 -> 0 Inexact Rounded +ddintx005 tointegralx 0.3 -> 0 Inexact Rounded +ddintx006 tointegralx 0.4 -> 0 Inexact Rounded +ddintx007 tointegralx 0.5 -> 0 Inexact Rounded +ddintx008 tointegralx 0.6 -> 1 Inexact Rounded +ddintx009 tointegralx 0.7 -> 1 Inexact Rounded +ddintx010 tointegralx 0.8 -> 1 Inexact Rounded +ddintx011 tointegralx 0.9 -> 1 Inexact Rounded +ddintx012 tointegralx 1 -> 1 +ddintx013 tointegralx 1.0 -> 1 Rounded +ddintx014 tointegralx 1.1 -> 1 Inexact Rounded +ddintx015 tointegralx 1.2 -> 1 Inexact Rounded +ddintx016 tointegralx 1.3 -> 1 Inexact Rounded +ddintx017 tointegralx 1.4 -> 1 Inexact Rounded +ddintx018 tointegralx 1.5 -> 2 Inexact Rounded +ddintx019 tointegralx 1.6 -> 2 Inexact Rounded +ddintx020 tointegralx 1.7 -> 2 Inexact Rounded +ddintx021 tointegralx 1.8 -> 2 Inexact Rounded +ddintx022 tointegralx 1.9 -> 2 Inexact Rounded +-- negatives +ddintx031 tointegralx -0 -> -0 +ddintx032 tointegralx -0.0 -> -0 +ddintx033 tointegralx -0.1 -> -0 Inexact Rounded +ddintx034 tointegralx -0.2 -> -0 Inexact Rounded +ddintx035 tointegralx -0.3 -> -0 Inexact Rounded +ddintx036 tointegralx -0.4 -> -0 Inexact Rounded +ddintx037 tointegralx -0.5 -> -0 Inexact Rounded +ddintx038 tointegralx -0.6 -> -1 Inexact Rounded +ddintx039 tointegralx -0.7 -> -1 Inexact Rounded +ddintx040 tointegralx -0.8 -> -1 Inexact Rounded +ddintx041 tointegralx -0.9 -> -1 Inexact Rounded +ddintx042 tointegralx -1 -> -1 +ddintx043 tointegralx -1.0 -> -1 Rounded +ddintx044 tointegralx -1.1 -> -1 Inexact Rounded +ddintx045 tointegralx -1.2 -> -1 Inexact Rounded +ddintx046 tointegralx -1.3 -> -1 Inexact Rounded +ddintx047 tointegralx -1.4 -> -1 Inexact Rounded +ddintx048 tointegralx -1.5 -> -2 Inexact Rounded +ddintx049 tointegralx -1.6 -> -2 Inexact Rounded +ddintx050 tointegralx -1.7 -> -2 Inexact Rounded +ddintx051 tointegralx -1.8 -> -2 Inexact Rounded +ddintx052 tointegralx -1.9 -> -2 Inexact Rounded +-- next two would be NaN using quantize(x, 0) +ddintx053 tointegralx 10E+60 -> 1.0E+61 +ddintx054 tointegralx -10E+60 -> -1.0E+61 + +-- numbers around precision +ddintx060 tointegralx '56267E-17' -> '0' Inexact Rounded +ddintx061 tointegralx '56267E-5' -> '1' Inexact Rounded +ddintx062 tointegralx '56267E-2' -> '563' Inexact Rounded +ddintx063 tointegralx '56267E-1' -> '5627' Inexact Rounded +ddintx065 tointegralx '56267E-0' -> '56267' +ddintx066 tointegralx '56267E+0' -> '56267' +ddintx067 tointegralx '56267E+1' -> '5.6267E+5' +ddintx068 tointegralx '56267E+9' -> '5.6267E+13' +ddintx069 tointegralx '56267E+10' -> '5.6267E+14' +ddintx070 tointegralx '56267E+11' -> '5.6267E+15' +ddintx071 tointegralx '56267E+12' -> '5.6267E+16' +ddintx072 tointegralx '56267E+13' -> '5.6267E+17' +ddintx073 tointegralx '1.23E+96' -> '1.23E+96' +ddintx074 tointegralx '1.23E+384' -> #47fd300000000000 Clamped + +ddintx080 tointegralx '-56267E-10' -> '-0' Inexact Rounded +ddintx081 tointegralx '-56267E-5' -> '-1' Inexact Rounded +ddintx082 tointegralx '-56267E-2' -> '-563' Inexact Rounded +ddintx083 tointegralx '-56267E-1' -> '-5627' Inexact Rounded +ddintx085 tointegralx '-56267E-0' -> '-56267' +ddintx086 tointegralx '-56267E+0' -> '-56267' +ddintx087 tointegralx '-56267E+1' -> '-5.6267E+5' +ddintx088 tointegralx '-56267E+9' -> '-5.6267E+13' +ddintx089 tointegralx '-56267E+10' -> '-5.6267E+14' +ddintx090 tointegralx '-56267E+11' -> '-5.6267E+15' +ddintx091 tointegralx '-56267E+12' -> '-5.6267E+16' +ddintx092 tointegralx '-56267E+13' -> '-5.6267E+17' +ddintx093 tointegralx '-1.23E+96' -> '-1.23E+96' +ddintx094 tointegralx '-1.23E+384' -> #c7fd300000000000 Clamped + +-- subnormal inputs +ddintx100 tointegralx 1E-299 -> 0 Inexact Rounded +ddintx101 tointegralx 0.1E-299 -> 0 Inexact Rounded +ddintx102 tointegralx 0.01E-299 -> 0 Inexact Rounded +ddintx103 tointegralx 0E-299 -> 0 + +-- specials and zeros +ddintx120 tointegralx 'Inf' -> Infinity +ddintx121 tointegralx '-Inf' -> -Infinity +ddintx122 tointegralx NaN -> NaN +ddintx123 tointegralx sNaN -> NaN Invalid_operation +ddintx124 tointegralx 0 -> 0 +ddintx125 tointegralx -0 -> -0 +ddintx126 tointegralx 0.000 -> 0 +ddintx127 tointegralx 0.00 -> 0 +ddintx128 tointegralx 0.0 -> 0 +ddintx129 tointegralx 0 -> 0 +ddintx130 tointegralx 0E-3 -> 0 +ddintx131 tointegralx 0E-2 -> 0 +ddintx132 tointegralx 0E-1 -> 0 +ddintx133 tointegralx 0E-0 -> 0 +ddintx134 tointegralx 0E+1 -> 0E+1 +ddintx135 tointegralx 0E+2 -> 0E+2 +ddintx136 tointegralx 0E+3 -> 0E+3 +ddintx137 tointegralx 0E+4 -> 0E+4 +ddintx138 tointegralx 0E+5 -> 0E+5 +ddintx139 tointegralx -0.000 -> -0 +ddintx140 tointegralx -0.00 -> -0 +ddintx141 tointegralx -0.0 -> -0 +ddintx142 tointegralx -0 -> -0 +ddintx143 tointegralx -0E-3 -> -0 +ddintx144 tointegralx -0E-2 -> -0 +ddintx145 tointegralx -0E-1 -> -0 +ddintx146 tointegralx -0E-0 -> -0 +ddintx147 tointegralx -0E+1 -> -0E+1 +ddintx148 tointegralx -0E+2 -> -0E+2 +ddintx149 tointegralx -0E+3 -> -0E+3 +ddintx150 tointegralx -0E+4 -> -0E+4 +ddintx151 tointegralx -0E+5 -> -0E+5 +-- propagating NaNs +ddintx152 tointegralx NaN808 -> NaN808 +ddintx153 tointegralx sNaN080 -> NaN80 Invalid_operation +ddintx154 tointegralx -NaN808 -> -NaN808 +ddintx155 tointegralx -sNaN080 -> -NaN80 Invalid_operation +ddintx156 tointegralx -NaN -> -NaN +ddintx157 tointegralx -sNaN -> -NaN Invalid_operation + +-- examples +rounding: half_up +ddintx200 tointegralx 2.1 -> 2 Inexact Rounded +ddintx201 tointegralx 100 -> 100 +ddintx202 tointegralx 100.0 -> 100 Rounded +ddintx203 tointegralx 101.5 -> 102 Inexact Rounded +ddintx204 tointegralx -101.5 -> -102 Inexact Rounded +ddintx205 tointegralx 10E+5 -> 1.0E+6 +ddintx206 tointegralx 7.89E+77 -> 7.89E+77 +ddintx207 tointegralx -Inf -> -Infinity + + +-- all rounding modes +rounding: half_even +ddintx210 tointegralx 55.5 -> 56 Inexact Rounded +ddintx211 tointegralx 56.5 -> 56 Inexact Rounded +ddintx212 tointegralx 57.5 -> 58 Inexact Rounded +ddintx213 tointegralx -55.5 -> -56 Inexact Rounded +ddintx214 tointegralx -56.5 -> -56 Inexact Rounded +ddintx215 tointegralx -57.5 -> -58 Inexact Rounded + +rounding: half_up + +ddintx220 tointegralx 55.5 -> 56 Inexact Rounded +ddintx221 tointegralx 56.5 -> 57 Inexact Rounded +ddintx222 tointegralx 57.5 -> 58 Inexact Rounded +ddintx223 tointegralx -55.5 -> -56 Inexact Rounded +ddintx224 tointegralx -56.5 -> -57 Inexact Rounded +ddintx225 tointegralx -57.5 -> -58 Inexact Rounded + +rounding: half_down + +ddintx230 tointegralx 55.5 -> 55 Inexact Rounded +ddintx231 tointegralx 56.5 -> 56 Inexact Rounded +ddintx232 tointegralx 57.5 -> 57 Inexact Rounded +ddintx233 tointegralx -55.5 -> -55 Inexact Rounded +ddintx234 tointegralx -56.5 -> -56 Inexact Rounded +ddintx235 tointegralx -57.5 -> -57 Inexact Rounded + +rounding: up + +ddintx240 tointegralx 55.3 -> 56 Inexact Rounded +ddintx241 tointegralx 56.3 -> 57 Inexact Rounded +ddintx242 tointegralx 57.3 -> 58 Inexact Rounded +ddintx243 tointegralx -55.3 -> -56 Inexact Rounded +ddintx244 tointegralx -56.3 -> -57 Inexact Rounded +ddintx245 tointegralx -57.3 -> -58 Inexact Rounded + +rounding: down + +ddintx250 tointegralx 55.7 -> 55 Inexact Rounded +ddintx251 tointegralx 56.7 -> 56 Inexact Rounded +ddintx252 tointegralx 57.7 -> 57 Inexact Rounded +ddintx253 tointegralx -55.7 -> -55 Inexact Rounded +ddintx254 tointegralx -56.7 -> -56 Inexact Rounded +ddintx255 tointegralx -57.7 -> -57 Inexact Rounded + +rounding: ceiling + +ddintx260 tointegralx 55.3 -> 56 Inexact Rounded +ddintx261 tointegralx 56.3 -> 57 Inexact Rounded +ddintx262 tointegralx 57.3 -> 58 Inexact Rounded +ddintx263 tointegralx -55.3 -> -55 Inexact Rounded +ddintx264 tointegralx -56.3 -> -56 Inexact Rounded +ddintx265 tointegralx -57.3 -> -57 Inexact Rounded + +rounding: floor + +ddintx270 tointegralx 55.7 -> 55 Inexact Rounded +ddintx271 tointegralx 56.7 -> 56 Inexact Rounded +ddintx272 tointegralx 57.7 -> 57 Inexact Rounded +ddintx273 tointegralx -55.7 -> -56 Inexact Rounded +ddintx274 tointegralx -56.7 -> -57 Inexact Rounded +ddintx275 tointegralx -57.7 -> -58 Inexact Rounded + +-- Int and uInt32 edge values for testing conversions +ddintx300 tointegralx -2147483646 -> -2147483646 +ddintx301 tointegralx -2147483647 -> -2147483647 +ddintx302 tointegralx -2147483648 -> -2147483648 +ddintx303 tointegralx -2147483649 -> -2147483649 +ddintx304 tointegralx 2147483646 -> 2147483646 +ddintx305 tointegralx 2147483647 -> 2147483647 +ddintx306 tointegralx 2147483648 -> 2147483648 +ddintx307 tointegralx 2147483649 -> 2147483649 +ddintx308 tointegralx 4294967294 -> 4294967294 +ddintx309 tointegralx 4294967295 -> 4294967295 +ddintx310 tointegralx 4294967296 -> 4294967296 +ddintx311 tointegralx 4294967297 -> 4294967297 + diff --git a/Lib/test/decimaltestdata/ddXor.decTest b/Lib/test/decimaltestdata/ddXor.decTest index 3c55548..131c7eb 100644 --- a/Lib/test/decimaltestdata/ddXor.decTest +++ b/Lib/test/decimaltestdata/ddXor.decTest @@ -1,337 +1,337 @@ ------------------------------------------------------------------------- --- ddXor.decTest -- digitwise logical XOR for decDoubles -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -precision: 16 -maxExponent: 384 -minExponent: -383 -extended: 1 -clamp: 1 -rounding: half_even - --- Sanity check (truth table) -ddxor001 xor 0 0 -> 0 -ddxor002 xor 0 1 -> 1 -ddxor003 xor 1 0 -> 1 -ddxor004 xor 1 1 -> 0 -ddxor005 xor 1100 1010 -> 110 --- and at msd and msd-1 -ddxor006 xor 0000000000000000 0000000000000000 -> 0 -ddxor007 xor 0000000000000000 1000000000000000 -> 1000000000000000 -ddxor008 xor 1000000000000000 0000000000000000 -> 1000000000000000 -ddxor009 xor 1000000000000000 1000000000000000 -> 0 -ddxor010 xor 0000000000000000 0000000000000000 -> 0 -ddxor011 xor 0000000000000000 0100000000000000 -> 100000000000000 -ddxor012 xor 0100000000000000 0000000000000000 -> 100000000000000 -ddxor013 xor 0100000000000000 0100000000000000 -> 0 - --- Various lengths --- 1234567890123456 1234567890123456 1234567890123456 -ddxor021 xor 1111111110000000 1111111110000000 -> 0 -ddxor022 xor 111111110000000 111111110000000 -> 0 -ddxor023 xor 11111110000000 11111110000000 -> 0 -ddxor024 xor 1111110000000 1111110000000 -> 0 -ddxor025 xor 111110000000 111110000000 -> 0 -ddxor026 xor 11110000000 11110000000 -> 0 -ddxor027 xor 1110000000 1110000000 -> 0 -ddxor028 xor 110000000 110000000 -> 0 -ddxor029 xor 10000000 10000000 -> 0 -ddxor030 xor 1000000 1000000 -> 0 -ddxor031 xor 100000 100000 -> 0 -ddxor032 xor 10000 10000 -> 0 -ddxor033 xor 1000 1000 -> 0 -ddxor034 xor 100 100 -> 0 -ddxor035 xor 10 10 -> 0 -ddxor036 xor 1 1 -> 0 - -ddxor040 xor 111111111 111111111111 -> 111000000000 -ddxor041 xor 11111111 111111111111 -> 111100000000 -ddxor042 xor 11111111 111111111 -> 100000000 -ddxor043 xor 1111111 100000010 -> 101111101 -ddxor044 xor 111111 100000100 -> 100111011 -ddxor045 xor 11111 100001000 -> 100010111 -ddxor046 xor 1111 100010000 -> 100011111 -ddxor047 xor 111 100100000 -> 100100111 -ddxor048 xor 11 101000000 -> 101000011 -ddxor049 xor 1 110000000 -> 110000001 - -ddxor050 xor 1111111111 1 -> 1111111110 -ddxor051 xor 111111111 1 -> 111111110 -ddxor052 xor 11111111 1 -> 11111110 -ddxor053 xor 1111111 1 -> 1111110 -ddxor054 xor 111111 1 -> 111110 -ddxor055 xor 11111 1 -> 11110 -ddxor056 xor 1111 1 -> 1110 -ddxor057 xor 111 1 -> 110 -ddxor058 xor 11 1 -> 10 -ddxor059 xor 1 1 -> 0 - -ddxor060 xor 1111111111 0 -> 1111111111 -ddxor061 xor 111111111 0 -> 111111111 -ddxor062 xor 11111111 0 -> 11111111 -ddxor063 xor 1111111 0 -> 1111111 -ddxor064 xor 111111 0 -> 111111 -ddxor065 xor 11111 0 -> 11111 -ddxor066 xor 1111 0 -> 1111 -ddxor067 xor 111 0 -> 111 -ddxor068 xor 11 0 -> 11 -ddxor069 xor 1 0 -> 1 - -ddxor070 xor 1 1111111111 -> 1111111110 -ddxor071 xor 1 111111111 -> 111111110 -ddxor072 xor 1 11111111 -> 11111110 -ddxor073 xor 1 1111111 -> 1111110 -ddxor074 xor 1 111111 -> 111110 -ddxor075 xor 1 11111 -> 11110 -ddxor076 xor 1 1111 -> 1110 -ddxor077 xor 1 111 -> 110 -ddxor078 xor 1 11 -> 10 -ddxor079 xor 1 1 -> 0 - -ddxor080 xor 0 1111111111 -> 1111111111 -ddxor081 xor 0 111111111 -> 111111111 -ddxor082 xor 0 11111111 -> 11111111 -ddxor083 xor 0 1111111 -> 1111111 -ddxor084 xor 0 111111 -> 111111 -ddxor085 xor 0 11111 -> 11111 -ddxor086 xor 0 1111 -> 1111 -ddxor087 xor 0 111 -> 111 -ddxor088 xor 0 11 -> 11 -ddxor089 xor 0 1 -> 1 - -ddxor090 xor 011111111 111101111 -> 100010000 -ddxor091 xor 101111111 111101111 -> 10010000 -ddxor092 xor 110111111 111101111 -> 1010000 -ddxor093 xor 111011111 111101111 -> 110000 -ddxor094 xor 111101111 111101111 -> 0 -ddxor095 xor 111110111 111101111 -> 11000 -ddxor096 xor 111111011 111101111 -> 10100 -ddxor097 xor 111111101 111101111 -> 10010 -ddxor098 xor 111111110 111101111 -> 10001 - -ddxor100 xor 111101111 011111111 -> 100010000 -ddxor101 xor 111101111 101111111 -> 10010000 -ddxor102 xor 111101111 110111111 -> 1010000 -ddxor103 xor 111101111 111011111 -> 110000 -ddxor104 xor 111101111 111101111 -> 0 -ddxor105 xor 111101111 111110111 -> 11000 -ddxor106 xor 111101111 111111011 -> 10100 -ddxor107 xor 111101111 111111101 -> 10010 -ddxor108 xor 111101111 111111110 -> 10001 - --- non-0/1 should not be accepted, nor should signs -ddxor220 xor 111111112 111111111 -> NaN Invalid_operation -ddxor221 xor 333333333 333333333 -> NaN Invalid_operation -ddxor222 xor 555555555 555555555 -> NaN Invalid_operation -ddxor223 xor 777777777 777777777 -> NaN Invalid_operation -ddxor224 xor 999999999 999999999 -> NaN Invalid_operation -ddxor225 xor 222222222 999999999 -> NaN Invalid_operation -ddxor226 xor 444444444 999999999 -> NaN Invalid_operation -ddxor227 xor 666666666 999999999 -> NaN Invalid_operation -ddxor228 xor 888888888 999999999 -> NaN Invalid_operation -ddxor229 xor 999999999 222222222 -> NaN Invalid_operation -ddxor230 xor 999999999 444444444 -> NaN Invalid_operation -ddxor231 xor 999999999 666666666 -> NaN Invalid_operation -ddxor232 xor 999999999 888888888 -> NaN Invalid_operation --- a few randoms -ddxor240 xor 567468689 -934981942 -> NaN Invalid_operation -ddxor241 xor 567367689 934981942 -> NaN Invalid_operation -ddxor242 xor -631917772 -706014634 -> NaN Invalid_operation -ddxor243 xor -756253257 138579234 -> NaN Invalid_operation -ddxor244 xor 835590149 567435400 -> NaN Invalid_operation --- test MSD -ddxor250 xor 2000000000000000 1000000000000000 -> NaN Invalid_operation -ddxor251 xor 7000000000000000 1000000000000000 -> NaN Invalid_operation -ddxor252 xor 8000000000000000 1000000000000000 -> NaN Invalid_operation -ddxor253 xor 9000000000000000 1000000000000000 -> NaN Invalid_operation -ddxor254 xor 2000000000000000 0000000000000000 -> NaN Invalid_operation -ddxor255 xor 7000000000000000 0000000000000000 -> NaN Invalid_operation -ddxor256 xor 8000000000000000 0000000000000000 -> NaN Invalid_operation -ddxor257 xor 9000000000000000 0000000000000000 -> NaN Invalid_operation -ddxor258 xor 1000000000000000 2000000000000000 -> NaN Invalid_operation -ddxor259 xor 1000000000000000 7000000000000000 -> NaN Invalid_operation -ddxor260 xor 1000000000000000 8000000000000000 -> NaN Invalid_operation -ddxor261 xor 1000000000000000 9000000000000000 -> NaN Invalid_operation -ddxor262 xor 0000000000000000 2000000000000000 -> NaN Invalid_operation -ddxor263 xor 0000000000000000 7000000000000000 -> NaN Invalid_operation -ddxor264 xor 0000000000000000 8000000000000000 -> NaN Invalid_operation -ddxor265 xor 0000000000000000 9000000000000000 -> NaN Invalid_operation --- test MSD-1 -ddxor270 xor 0200001000000000 1000100000000010 -> NaN Invalid_operation -ddxor271 xor 0700000100000000 1000010000000100 -> NaN Invalid_operation -ddxor272 xor 0800000010000000 1000001000001000 -> NaN Invalid_operation -ddxor273 xor 0900000001000000 1000000100010000 -> NaN Invalid_operation -ddxor274 xor 1000000000100000 0200000010100000 -> NaN Invalid_operation -ddxor275 xor 1000000000010000 0700000001000000 -> NaN Invalid_operation -ddxor276 xor 1000000000001000 0800000010100000 -> NaN Invalid_operation -ddxor277 xor 1000000000000100 0900000000010000 -> NaN Invalid_operation --- test LSD -ddxor280 xor 0010000000000002 1000000100000001 -> NaN Invalid_operation -ddxor281 xor 0001000000000007 1000001000000011 -> NaN Invalid_operation -ddxor282 xor 0000100000000008 1000010000000001 -> NaN Invalid_operation -ddxor283 xor 0000010000000009 1000100000000001 -> NaN Invalid_operation -ddxor284 xor 1000001000000000 0001000000000002 -> NaN Invalid_operation -ddxor285 xor 1000000100000000 0010000000000007 -> NaN Invalid_operation -ddxor286 xor 1000000010000000 0100000000000008 -> NaN Invalid_operation -ddxor287 xor 1000000001000000 1000000000000009 -> NaN Invalid_operation --- test Middie -ddxor288 xor 0010000020000000 1000001000000000 -> NaN Invalid_operation -ddxor289 xor 0001000070000001 1000000100000000 -> NaN Invalid_operation -ddxor290 xor 0000100080000010 1000000010000000 -> NaN Invalid_operation -ddxor291 xor 0000010090000100 1000000001000000 -> NaN Invalid_operation -ddxor292 xor 1000001000001000 0000000020100000 -> NaN Invalid_operation -ddxor293 xor 1000000100010000 0000000070010000 -> NaN Invalid_operation -ddxor294 xor 1000000010100000 0000000080001000 -> NaN Invalid_operation -ddxor295 xor 1000000001000000 0000000090000100 -> NaN Invalid_operation --- signs -ddxor296 xor -1000000001000000 -0000010000000100 -> NaN Invalid_operation -ddxor297 xor -1000000001000000 0000000010000100 -> NaN Invalid_operation -ddxor298 xor 1000000001000000 -0000001000000100 -> NaN Invalid_operation -ddxor299 xor 1000000001000000 0000000011000100 -> 1000000010000100 - --- Nmax, Nmin, Ntiny-like -ddxor331 xor 2 9.99999999E+299 -> NaN Invalid_operation -ddxor332 xor 3 1E-299 -> NaN Invalid_operation -ddxor333 xor 4 1.00000000E-299 -> NaN Invalid_operation -ddxor334 xor 5 1E-200 -> NaN Invalid_operation -ddxor335 xor 6 -1E-200 -> NaN Invalid_operation -ddxor336 xor 7 -1.00000000E-299 -> NaN Invalid_operation -ddxor337 xor 8 -1E-299 -> NaN Invalid_operation -ddxor338 xor 9 -9.99999999E+299 -> NaN Invalid_operation -ddxor341 xor 9.99999999E+299 -18 -> NaN Invalid_operation -ddxor342 xor 1E-299 01 -> NaN Invalid_operation -ddxor343 xor 1.00000000E-299 -18 -> NaN Invalid_operation -ddxor344 xor 1E-208 18 -> NaN Invalid_operation -ddxor345 xor -1E-207 -10 -> NaN Invalid_operation -ddxor346 xor -1.00000000E-299 18 -> NaN Invalid_operation -ddxor347 xor -1E-299 10 -> NaN Invalid_operation -ddxor348 xor -9.99999999E+299 -18 -> NaN Invalid_operation - --- A few other non-integers -ddxor361 xor 1.0 1 -> NaN Invalid_operation -ddxor362 xor 1E+1 1 -> NaN Invalid_operation -ddxor363 xor 0.0 1 -> NaN Invalid_operation -ddxor364 xor 0E+1 1 -> NaN Invalid_operation -ddxor365 xor 9.9 1 -> NaN Invalid_operation -ddxor366 xor 9E+1 1 -> NaN Invalid_operation -ddxor371 xor 0 1.0 -> NaN Invalid_operation -ddxor372 xor 0 1E+1 -> NaN Invalid_operation -ddxor373 xor 0 0.0 -> NaN Invalid_operation -ddxor374 xor 0 0E+1 -> NaN Invalid_operation -ddxor375 xor 0 9.9 -> NaN Invalid_operation -ddxor376 xor 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -ddxor780 xor -Inf -Inf -> NaN Invalid_operation -ddxor781 xor -Inf -1000 -> NaN Invalid_operation -ddxor782 xor -Inf -1 -> NaN Invalid_operation -ddxor783 xor -Inf -0 -> NaN Invalid_operation -ddxor784 xor -Inf 0 -> NaN Invalid_operation -ddxor785 xor -Inf 1 -> NaN Invalid_operation -ddxor786 xor -Inf 1000 -> NaN Invalid_operation -ddxor787 xor -1000 -Inf -> NaN Invalid_operation -ddxor788 xor -Inf -Inf -> NaN Invalid_operation -ddxor789 xor -1 -Inf -> NaN Invalid_operation -ddxor790 xor -0 -Inf -> NaN Invalid_operation -ddxor791 xor 0 -Inf -> NaN Invalid_operation -ddxor792 xor 1 -Inf -> NaN Invalid_operation -ddxor793 xor 1000 -Inf -> NaN Invalid_operation -ddxor794 xor Inf -Inf -> NaN Invalid_operation - -ddxor800 xor Inf -Inf -> NaN Invalid_operation -ddxor801 xor Inf -1000 -> NaN Invalid_operation -ddxor802 xor Inf -1 -> NaN Invalid_operation -ddxor803 xor Inf -0 -> NaN Invalid_operation -ddxor804 xor Inf 0 -> NaN Invalid_operation -ddxor805 xor Inf 1 -> NaN Invalid_operation -ddxor806 xor Inf 1000 -> NaN Invalid_operation -ddxor807 xor Inf Inf -> NaN Invalid_operation -ddxor808 xor -1000 Inf -> NaN Invalid_operation -ddxor809 xor -Inf Inf -> NaN Invalid_operation -ddxor810 xor -1 Inf -> NaN Invalid_operation -ddxor811 xor -0 Inf -> NaN Invalid_operation -ddxor812 xor 0 Inf -> NaN Invalid_operation -ddxor813 xor 1 Inf -> NaN Invalid_operation -ddxor814 xor 1000 Inf -> NaN Invalid_operation -ddxor815 xor Inf Inf -> NaN Invalid_operation - -ddxor821 xor NaN -Inf -> NaN Invalid_operation -ddxor822 xor NaN -1000 -> NaN Invalid_operation -ddxor823 xor NaN -1 -> NaN Invalid_operation -ddxor824 xor NaN -0 -> NaN Invalid_operation -ddxor825 xor NaN 0 -> NaN Invalid_operation -ddxor826 xor NaN 1 -> NaN Invalid_operation -ddxor827 xor NaN 1000 -> NaN Invalid_operation -ddxor828 xor NaN Inf -> NaN Invalid_operation -ddxor829 xor NaN NaN -> NaN Invalid_operation -ddxor830 xor -Inf NaN -> NaN Invalid_operation -ddxor831 xor -1000 NaN -> NaN Invalid_operation -ddxor832 xor -1 NaN -> NaN Invalid_operation -ddxor833 xor -0 NaN -> NaN Invalid_operation -ddxor834 xor 0 NaN -> NaN Invalid_operation -ddxor835 xor 1 NaN -> NaN Invalid_operation -ddxor836 xor 1000 NaN -> NaN Invalid_operation -ddxor837 xor Inf NaN -> NaN Invalid_operation - -ddxor841 xor sNaN -Inf -> NaN Invalid_operation -ddxor842 xor sNaN -1000 -> NaN Invalid_operation -ddxor843 xor sNaN -1 -> NaN Invalid_operation -ddxor844 xor sNaN -0 -> NaN Invalid_operation -ddxor845 xor sNaN 0 -> NaN Invalid_operation -ddxor846 xor sNaN 1 -> NaN Invalid_operation -ddxor847 xor sNaN 1000 -> NaN Invalid_operation -ddxor848 xor sNaN NaN -> NaN Invalid_operation -ddxor849 xor sNaN sNaN -> NaN Invalid_operation -ddxor850 xor NaN sNaN -> NaN Invalid_operation -ddxor851 xor -Inf sNaN -> NaN Invalid_operation -ddxor852 xor -1000 sNaN -> NaN Invalid_operation -ddxor853 xor -1 sNaN -> NaN Invalid_operation -ddxor854 xor -0 sNaN -> NaN Invalid_operation -ddxor855 xor 0 sNaN -> NaN Invalid_operation -ddxor856 xor 1 sNaN -> NaN Invalid_operation -ddxor857 xor 1000 sNaN -> NaN Invalid_operation -ddxor858 xor Inf sNaN -> NaN Invalid_operation -ddxor859 xor NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -ddxor861 xor NaN1 -Inf -> NaN Invalid_operation -ddxor862 xor +NaN2 -1000 -> NaN Invalid_operation -ddxor863 xor NaN3 1000 -> NaN Invalid_operation -ddxor864 xor NaN4 Inf -> NaN Invalid_operation -ddxor865 xor NaN5 +NaN6 -> NaN Invalid_operation -ddxor866 xor -Inf NaN7 -> NaN Invalid_operation -ddxor867 xor -1000 NaN8 -> NaN Invalid_operation -ddxor868 xor 1000 NaN9 -> NaN Invalid_operation -ddxor869 xor Inf +NaN10 -> NaN Invalid_operation -ddxor871 xor sNaN11 -Inf -> NaN Invalid_operation -ddxor872 xor sNaN12 -1000 -> NaN Invalid_operation -ddxor873 xor sNaN13 1000 -> NaN Invalid_operation -ddxor874 xor sNaN14 NaN17 -> NaN Invalid_operation -ddxor875 xor sNaN15 sNaN18 -> NaN Invalid_operation -ddxor876 xor NaN16 sNaN19 -> NaN Invalid_operation -ddxor877 xor -Inf +sNaN20 -> NaN Invalid_operation -ddxor878 xor -1000 sNaN21 -> NaN Invalid_operation -ddxor879 xor 1000 sNaN22 -> NaN Invalid_operation -ddxor880 xor Inf sNaN23 -> NaN Invalid_operation -ddxor881 xor +NaN25 +sNaN24 -> NaN Invalid_operation -ddxor882 xor -NaN26 NaN28 -> NaN Invalid_operation -ddxor883 xor -sNaN27 sNaN29 -> NaN Invalid_operation -ddxor884 xor 1000 -NaN30 -> NaN Invalid_operation -ddxor885 xor 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- ddXor.decTest -- digitwise logical XOR for decDoubles -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +precision: 16 +maxExponent: 384 +minExponent: -383 +extended: 1 +clamp: 1 +rounding: half_even + +-- Sanity check (truth table) +ddxor001 xor 0 0 -> 0 +ddxor002 xor 0 1 -> 1 +ddxor003 xor 1 0 -> 1 +ddxor004 xor 1 1 -> 0 +ddxor005 xor 1100 1010 -> 110 +-- and at msd and msd-1 +ddxor006 xor 0000000000000000 0000000000000000 -> 0 +ddxor007 xor 0000000000000000 1000000000000000 -> 1000000000000000 +ddxor008 xor 1000000000000000 0000000000000000 -> 1000000000000000 +ddxor009 xor 1000000000000000 1000000000000000 -> 0 +ddxor010 xor 0000000000000000 0000000000000000 -> 0 +ddxor011 xor 0000000000000000 0100000000000000 -> 100000000000000 +ddxor012 xor 0100000000000000 0000000000000000 -> 100000000000000 +ddxor013 xor 0100000000000000 0100000000000000 -> 0 + +-- Various lengths +-- 1234567890123456 1234567890123456 1234567890123456 +ddxor021 xor 1111111110000000 1111111110000000 -> 0 +ddxor022 xor 111111110000000 111111110000000 -> 0 +ddxor023 xor 11111110000000 11111110000000 -> 0 +ddxor024 xor 1111110000000 1111110000000 -> 0 +ddxor025 xor 111110000000 111110000000 -> 0 +ddxor026 xor 11110000000 11110000000 -> 0 +ddxor027 xor 1110000000 1110000000 -> 0 +ddxor028 xor 110000000 110000000 -> 0 +ddxor029 xor 10000000 10000000 -> 0 +ddxor030 xor 1000000 1000000 -> 0 +ddxor031 xor 100000 100000 -> 0 +ddxor032 xor 10000 10000 -> 0 +ddxor033 xor 1000 1000 -> 0 +ddxor034 xor 100 100 -> 0 +ddxor035 xor 10 10 -> 0 +ddxor036 xor 1 1 -> 0 + +ddxor040 xor 111111111 111111111111 -> 111000000000 +ddxor041 xor 11111111 111111111111 -> 111100000000 +ddxor042 xor 11111111 111111111 -> 100000000 +ddxor043 xor 1111111 100000010 -> 101111101 +ddxor044 xor 111111 100000100 -> 100111011 +ddxor045 xor 11111 100001000 -> 100010111 +ddxor046 xor 1111 100010000 -> 100011111 +ddxor047 xor 111 100100000 -> 100100111 +ddxor048 xor 11 101000000 -> 101000011 +ddxor049 xor 1 110000000 -> 110000001 + +ddxor050 xor 1111111111 1 -> 1111111110 +ddxor051 xor 111111111 1 -> 111111110 +ddxor052 xor 11111111 1 -> 11111110 +ddxor053 xor 1111111 1 -> 1111110 +ddxor054 xor 111111 1 -> 111110 +ddxor055 xor 11111 1 -> 11110 +ddxor056 xor 1111 1 -> 1110 +ddxor057 xor 111 1 -> 110 +ddxor058 xor 11 1 -> 10 +ddxor059 xor 1 1 -> 0 + +ddxor060 xor 1111111111 0 -> 1111111111 +ddxor061 xor 111111111 0 -> 111111111 +ddxor062 xor 11111111 0 -> 11111111 +ddxor063 xor 1111111 0 -> 1111111 +ddxor064 xor 111111 0 -> 111111 +ddxor065 xor 11111 0 -> 11111 +ddxor066 xor 1111 0 -> 1111 +ddxor067 xor 111 0 -> 111 +ddxor068 xor 11 0 -> 11 +ddxor069 xor 1 0 -> 1 + +ddxor070 xor 1 1111111111 -> 1111111110 +ddxor071 xor 1 111111111 -> 111111110 +ddxor072 xor 1 11111111 -> 11111110 +ddxor073 xor 1 1111111 -> 1111110 +ddxor074 xor 1 111111 -> 111110 +ddxor075 xor 1 11111 -> 11110 +ddxor076 xor 1 1111 -> 1110 +ddxor077 xor 1 111 -> 110 +ddxor078 xor 1 11 -> 10 +ddxor079 xor 1 1 -> 0 + +ddxor080 xor 0 1111111111 -> 1111111111 +ddxor081 xor 0 111111111 -> 111111111 +ddxor082 xor 0 11111111 -> 11111111 +ddxor083 xor 0 1111111 -> 1111111 +ddxor084 xor 0 111111 -> 111111 +ddxor085 xor 0 11111 -> 11111 +ddxor086 xor 0 1111 -> 1111 +ddxor087 xor 0 111 -> 111 +ddxor088 xor 0 11 -> 11 +ddxor089 xor 0 1 -> 1 + +ddxor090 xor 011111111 111101111 -> 100010000 +ddxor091 xor 101111111 111101111 -> 10010000 +ddxor092 xor 110111111 111101111 -> 1010000 +ddxor093 xor 111011111 111101111 -> 110000 +ddxor094 xor 111101111 111101111 -> 0 +ddxor095 xor 111110111 111101111 -> 11000 +ddxor096 xor 111111011 111101111 -> 10100 +ddxor097 xor 111111101 111101111 -> 10010 +ddxor098 xor 111111110 111101111 -> 10001 + +ddxor100 xor 111101111 011111111 -> 100010000 +ddxor101 xor 111101111 101111111 -> 10010000 +ddxor102 xor 111101111 110111111 -> 1010000 +ddxor103 xor 111101111 111011111 -> 110000 +ddxor104 xor 111101111 111101111 -> 0 +ddxor105 xor 111101111 111110111 -> 11000 +ddxor106 xor 111101111 111111011 -> 10100 +ddxor107 xor 111101111 111111101 -> 10010 +ddxor108 xor 111101111 111111110 -> 10001 + +-- non-0/1 should not be accepted, nor should signs +ddxor220 xor 111111112 111111111 -> NaN Invalid_operation +ddxor221 xor 333333333 333333333 -> NaN Invalid_operation +ddxor222 xor 555555555 555555555 -> NaN Invalid_operation +ddxor223 xor 777777777 777777777 -> NaN Invalid_operation +ddxor224 xor 999999999 999999999 -> NaN Invalid_operation +ddxor225 xor 222222222 999999999 -> NaN Invalid_operation +ddxor226 xor 444444444 999999999 -> NaN Invalid_operation +ddxor227 xor 666666666 999999999 -> NaN Invalid_operation +ddxor228 xor 888888888 999999999 -> NaN Invalid_operation +ddxor229 xor 999999999 222222222 -> NaN Invalid_operation +ddxor230 xor 999999999 444444444 -> NaN Invalid_operation +ddxor231 xor 999999999 666666666 -> NaN Invalid_operation +ddxor232 xor 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +ddxor240 xor 567468689 -934981942 -> NaN Invalid_operation +ddxor241 xor 567367689 934981942 -> NaN Invalid_operation +ddxor242 xor -631917772 -706014634 -> NaN Invalid_operation +ddxor243 xor -756253257 138579234 -> NaN Invalid_operation +ddxor244 xor 835590149 567435400 -> NaN Invalid_operation +-- test MSD +ddxor250 xor 2000000000000000 1000000000000000 -> NaN Invalid_operation +ddxor251 xor 7000000000000000 1000000000000000 -> NaN Invalid_operation +ddxor252 xor 8000000000000000 1000000000000000 -> NaN Invalid_operation +ddxor253 xor 9000000000000000 1000000000000000 -> NaN Invalid_operation +ddxor254 xor 2000000000000000 0000000000000000 -> NaN Invalid_operation +ddxor255 xor 7000000000000000 0000000000000000 -> NaN Invalid_operation +ddxor256 xor 8000000000000000 0000000000000000 -> NaN Invalid_operation +ddxor257 xor 9000000000000000 0000000000000000 -> NaN Invalid_operation +ddxor258 xor 1000000000000000 2000000000000000 -> NaN Invalid_operation +ddxor259 xor 1000000000000000 7000000000000000 -> NaN Invalid_operation +ddxor260 xor 1000000000000000 8000000000000000 -> NaN Invalid_operation +ddxor261 xor 1000000000000000 9000000000000000 -> NaN Invalid_operation +ddxor262 xor 0000000000000000 2000000000000000 -> NaN Invalid_operation +ddxor263 xor 0000000000000000 7000000000000000 -> NaN Invalid_operation +ddxor264 xor 0000000000000000 8000000000000000 -> NaN Invalid_operation +ddxor265 xor 0000000000000000 9000000000000000 -> NaN Invalid_operation +-- test MSD-1 +ddxor270 xor 0200001000000000 1000100000000010 -> NaN Invalid_operation +ddxor271 xor 0700000100000000 1000010000000100 -> NaN Invalid_operation +ddxor272 xor 0800000010000000 1000001000001000 -> NaN Invalid_operation +ddxor273 xor 0900000001000000 1000000100010000 -> NaN Invalid_operation +ddxor274 xor 1000000000100000 0200000010100000 -> NaN Invalid_operation +ddxor275 xor 1000000000010000 0700000001000000 -> NaN Invalid_operation +ddxor276 xor 1000000000001000 0800000010100000 -> NaN Invalid_operation +ddxor277 xor 1000000000000100 0900000000010000 -> NaN Invalid_operation +-- test LSD +ddxor280 xor 0010000000000002 1000000100000001 -> NaN Invalid_operation +ddxor281 xor 0001000000000007 1000001000000011 -> NaN Invalid_operation +ddxor282 xor 0000100000000008 1000010000000001 -> NaN Invalid_operation +ddxor283 xor 0000010000000009 1000100000000001 -> NaN Invalid_operation +ddxor284 xor 1000001000000000 0001000000000002 -> NaN Invalid_operation +ddxor285 xor 1000000100000000 0010000000000007 -> NaN Invalid_operation +ddxor286 xor 1000000010000000 0100000000000008 -> NaN Invalid_operation +ddxor287 xor 1000000001000000 1000000000000009 -> NaN Invalid_operation +-- test Middie +ddxor288 xor 0010000020000000 1000001000000000 -> NaN Invalid_operation +ddxor289 xor 0001000070000001 1000000100000000 -> NaN Invalid_operation +ddxor290 xor 0000100080000010 1000000010000000 -> NaN Invalid_operation +ddxor291 xor 0000010090000100 1000000001000000 -> NaN Invalid_operation +ddxor292 xor 1000001000001000 0000000020100000 -> NaN Invalid_operation +ddxor293 xor 1000000100010000 0000000070010000 -> NaN Invalid_operation +ddxor294 xor 1000000010100000 0000000080001000 -> NaN Invalid_operation +ddxor295 xor 1000000001000000 0000000090000100 -> NaN Invalid_operation +-- signs +ddxor296 xor -1000000001000000 -0000010000000100 -> NaN Invalid_operation +ddxor297 xor -1000000001000000 0000000010000100 -> NaN Invalid_operation +ddxor298 xor 1000000001000000 -0000001000000100 -> NaN Invalid_operation +ddxor299 xor 1000000001000000 0000000011000100 -> 1000000010000100 + +-- Nmax, Nmin, Ntiny-like +ddxor331 xor 2 9.99999999E+299 -> NaN Invalid_operation +ddxor332 xor 3 1E-299 -> NaN Invalid_operation +ddxor333 xor 4 1.00000000E-299 -> NaN Invalid_operation +ddxor334 xor 5 1E-200 -> NaN Invalid_operation +ddxor335 xor 6 -1E-200 -> NaN Invalid_operation +ddxor336 xor 7 -1.00000000E-299 -> NaN Invalid_operation +ddxor337 xor 8 -1E-299 -> NaN Invalid_operation +ddxor338 xor 9 -9.99999999E+299 -> NaN Invalid_operation +ddxor341 xor 9.99999999E+299 -18 -> NaN Invalid_operation +ddxor342 xor 1E-299 01 -> NaN Invalid_operation +ddxor343 xor 1.00000000E-299 -18 -> NaN Invalid_operation +ddxor344 xor 1E-208 18 -> NaN Invalid_operation +ddxor345 xor -1E-207 -10 -> NaN Invalid_operation +ddxor346 xor -1.00000000E-299 18 -> NaN Invalid_operation +ddxor347 xor -1E-299 10 -> NaN Invalid_operation +ddxor348 xor -9.99999999E+299 -18 -> NaN Invalid_operation + +-- A few other non-integers +ddxor361 xor 1.0 1 -> NaN Invalid_operation +ddxor362 xor 1E+1 1 -> NaN Invalid_operation +ddxor363 xor 0.0 1 -> NaN Invalid_operation +ddxor364 xor 0E+1 1 -> NaN Invalid_operation +ddxor365 xor 9.9 1 -> NaN Invalid_operation +ddxor366 xor 9E+1 1 -> NaN Invalid_operation +ddxor371 xor 0 1.0 -> NaN Invalid_operation +ddxor372 xor 0 1E+1 -> NaN Invalid_operation +ddxor373 xor 0 0.0 -> NaN Invalid_operation +ddxor374 xor 0 0E+1 -> NaN Invalid_operation +ddxor375 xor 0 9.9 -> NaN Invalid_operation +ddxor376 xor 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +ddxor780 xor -Inf -Inf -> NaN Invalid_operation +ddxor781 xor -Inf -1000 -> NaN Invalid_operation +ddxor782 xor -Inf -1 -> NaN Invalid_operation +ddxor783 xor -Inf -0 -> NaN Invalid_operation +ddxor784 xor -Inf 0 -> NaN Invalid_operation +ddxor785 xor -Inf 1 -> NaN Invalid_operation +ddxor786 xor -Inf 1000 -> NaN Invalid_operation +ddxor787 xor -1000 -Inf -> NaN Invalid_operation +ddxor788 xor -Inf -Inf -> NaN Invalid_operation +ddxor789 xor -1 -Inf -> NaN Invalid_operation +ddxor790 xor -0 -Inf -> NaN Invalid_operation +ddxor791 xor 0 -Inf -> NaN Invalid_operation +ddxor792 xor 1 -Inf -> NaN Invalid_operation +ddxor793 xor 1000 -Inf -> NaN Invalid_operation +ddxor794 xor Inf -Inf -> NaN Invalid_operation + +ddxor800 xor Inf -Inf -> NaN Invalid_operation +ddxor801 xor Inf -1000 -> NaN Invalid_operation +ddxor802 xor Inf -1 -> NaN Invalid_operation +ddxor803 xor Inf -0 -> NaN Invalid_operation +ddxor804 xor Inf 0 -> NaN Invalid_operation +ddxor805 xor Inf 1 -> NaN Invalid_operation +ddxor806 xor Inf 1000 -> NaN Invalid_operation +ddxor807 xor Inf Inf -> NaN Invalid_operation +ddxor808 xor -1000 Inf -> NaN Invalid_operation +ddxor809 xor -Inf Inf -> NaN Invalid_operation +ddxor810 xor -1 Inf -> NaN Invalid_operation +ddxor811 xor -0 Inf -> NaN Invalid_operation +ddxor812 xor 0 Inf -> NaN Invalid_operation +ddxor813 xor 1 Inf -> NaN Invalid_operation +ddxor814 xor 1000 Inf -> NaN Invalid_operation +ddxor815 xor Inf Inf -> NaN Invalid_operation + +ddxor821 xor NaN -Inf -> NaN Invalid_operation +ddxor822 xor NaN -1000 -> NaN Invalid_operation +ddxor823 xor NaN -1 -> NaN Invalid_operation +ddxor824 xor NaN -0 -> NaN Invalid_operation +ddxor825 xor NaN 0 -> NaN Invalid_operation +ddxor826 xor NaN 1 -> NaN Invalid_operation +ddxor827 xor NaN 1000 -> NaN Invalid_operation +ddxor828 xor NaN Inf -> NaN Invalid_operation +ddxor829 xor NaN NaN -> NaN Invalid_operation +ddxor830 xor -Inf NaN -> NaN Invalid_operation +ddxor831 xor -1000 NaN -> NaN Invalid_operation +ddxor832 xor -1 NaN -> NaN Invalid_operation +ddxor833 xor -0 NaN -> NaN Invalid_operation +ddxor834 xor 0 NaN -> NaN Invalid_operation +ddxor835 xor 1 NaN -> NaN Invalid_operation +ddxor836 xor 1000 NaN -> NaN Invalid_operation +ddxor837 xor Inf NaN -> NaN Invalid_operation + +ddxor841 xor sNaN -Inf -> NaN Invalid_operation +ddxor842 xor sNaN -1000 -> NaN Invalid_operation +ddxor843 xor sNaN -1 -> NaN Invalid_operation +ddxor844 xor sNaN -0 -> NaN Invalid_operation +ddxor845 xor sNaN 0 -> NaN Invalid_operation +ddxor846 xor sNaN 1 -> NaN Invalid_operation +ddxor847 xor sNaN 1000 -> NaN Invalid_operation +ddxor848 xor sNaN NaN -> NaN Invalid_operation +ddxor849 xor sNaN sNaN -> NaN Invalid_operation +ddxor850 xor NaN sNaN -> NaN Invalid_operation +ddxor851 xor -Inf sNaN -> NaN Invalid_operation +ddxor852 xor -1000 sNaN -> NaN Invalid_operation +ddxor853 xor -1 sNaN -> NaN Invalid_operation +ddxor854 xor -0 sNaN -> NaN Invalid_operation +ddxor855 xor 0 sNaN -> NaN Invalid_operation +ddxor856 xor 1 sNaN -> NaN Invalid_operation +ddxor857 xor 1000 sNaN -> NaN Invalid_operation +ddxor858 xor Inf sNaN -> NaN Invalid_operation +ddxor859 xor NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +ddxor861 xor NaN1 -Inf -> NaN Invalid_operation +ddxor862 xor +NaN2 -1000 -> NaN Invalid_operation +ddxor863 xor NaN3 1000 -> NaN Invalid_operation +ddxor864 xor NaN4 Inf -> NaN Invalid_operation +ddxor865 xor NaN5 +NaN6 -> NaN Invalid_operation +ddxor866 xor -Inf NaN7 -> NaN Invalid_operation +ddxor867 xor -1000 NaN8 -> NaN Invalid_operation +ddxor868 xor 1000 NaN9 -> NaN Invalid_operation +ddxor869 xor Inf +NaN10 -> NaN Invalid_operation +ddxor871 xor sNaN11 -Inf -> NaN Invalid_operation +ddxor872 xor sNaN12 -1000 -> NaN Invalid_operation +ddxor873 xor sNaN13 1000 -> NaN Invalid_operation +ddxor874 xor sNaN14 NaN17 -> NaN Invalid_operation +ddxor875 xor sNaN15 sNaN18 -> NaN Invalid_operation +ddxor876 xor NaN16 sNaN19 -> NaN Invalid_operation +ddxor877 xor -Inf +sNaN20 -> NaN Invalid_operation +ddxor878 xor -1000 sNaN21 -> NaN Invalid_operation +ddxor879 xor 1000 sNaN22 -> NaN Invalid_operation +ddxor880 xor Inf sNaN23 -> NaN Invalid_operation +ddxor881 xor +NaN25 +sNaN24 -> NaN Invalid_operation +ddxor882 xor -NaN26 NaN28 -> NaN Invalid_operation +ddxor883 xor -sNaN27 sNaN29 -> NaN Invalid_operation +ddxor884 xor 1000 -NaN30 -> NaN Invalid_operation +ddxor885 xor 1000 -sNaN31 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqAbs.decTest b/Lib/test/decimaltestdata/dqAbs.decTest index f9119a9..baaa063 100644 --- a/Lib/test/decimaltestdata/dqAbs.decTest +++ b/Lib/test/decimaltestdata/dqAbs.decTest @@ -1,126 +1,126 @@ ------------------------------------------------------------------------- --- dqAbs.decTest -- decQuad absolute value, heeding sNaN -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - -dqabs001 abs '1' -> '1' -dqabs002 abs '-1' -> '1' -dqabs003 abs '1.00' -> '1.00' -dqabs004 abs '-1.00' -> '1.00' -dqabs005 abs '0' -> '0' -dqabs006 abs '0.00' -> '0.00' -dqabs007 abs '00.0' -> '0.0' -dqabs008 abs '00.00' -> '0.00' -dqabs009 abs '00' -> '0' - -dqabs010 abs '-2' -> '2' -dqabs011 abs '2' -> '2' -dqabs012 abs '-2.00' -> '2.00' -dqabs013 abs '2.00' -> '2.00' -dqabs014 abs '-0' -> '0' -dqabs015 abs '-0.00' -> '0.00' -dqabs016 abs '-00.0' -> '0.0' -dqabs017 abs '-00.00' -> '0.00' -dqabs018 abs '-00' -> '0' - -dqabs020 abs '-2000000' -> '2000000' -dqabs021 abs '2000000' -> '2000000' - -dqabs030 abs '+0.1' -> '0.1' -dqabs031 abs '-0.1' -> '0.1' -dqabs032 abs '+0.01' -> '0.01' -dqabs033 abs '-0.01' -> '0.01' -dqabs034 abs '+0.001' -> '0.001' -dqabs035 abs '-0.001' -> '0.001' -dqabs036 abs '+0.000001' -> '0.000001' -dqabs037 abs '-0.000001' -> '0.000001' -dqabs038 abs '+0.000000000001' -> '1E-12' -dqabs039 abs '-0.000000000001' -> '1E-12' - --- examples from decArith -dqabs040 abs '2.1' -> '2.1' -dqabs041 abs '-100' -> '100' -dqabs042 abs '101.5' -> '101.5' -dqabs043 abs '-101.5' -> '101.5' - --- more fixed, potential LHS swaps/overlays if done by subtract 0 -dqabs060 abs '-56267E-10' -> '0.0000056267' -dqabs061 abs '-56267E-5' -> '0.56267' -dqabs062 abs '-56267E-2' -> '562.67' -dqabs063 abs '-56267E-1' -> '5626.7' -dqabs065 abs '-56267E-0' -> '56267' - --- subnormals and underflow - --- long operand tests -dqabs321 abs 1234567890123456 -> 1234567890123456 -dqabs322 abs 12345678000 -> 12345678000 -dqabs323 abs 1234567800 -> 1234567800 -dqabs324 abs 1234567890 -> 1234567890 -dqabs325 abs 1234567891 -> 1234567891 -dqabs326 abs 12345678901 -> 12345678901 -dqabs327 abs 1234567896 -> 1234567896 - --- zeros -dqabs111 abs 0 -> 0 -dqabs112 abs -0 -> 0 -dqabs113 abs 0E+6 -> 0E+6 -dqabs114 abs -0E+6 -> 0E+6 -dqabs115 abs 0.0000 -> 0.0000 -dqabs116 abs -0.0000 -> 0.0000 -dqabs117 abs 0E-141 -> 0E-141 -dqabs118 abs -0E-141 -> 0E-141 - --- full coefficients, alternating bits -dqabs121 abs 2682682682682682682682682682682682 -> 2682682682682682682682682682682682 -dqabs122 abs -2682682682682682682682682682682682 -> 2682682682682682682682682682682682 -dqabs123 abs 1341341341341341341341341341341341 -> 1341341341341341341341341341341341 -dqabs124 abs -1341341341341341341341341341341341 -> 1341341341341341341341341341341341 - --- Nmax, Nmin, Ntiny -dqabs131 abs 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 -dqabs132 abs 1E-6143 -> 1E-6143 -dqabs133 abs 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqabs134 abs 1E-6176 -> 1E-6176 Subnormal - -dqabs135 abs -1E-6176 -> 1E-6176 Subnormal -dqabs136 abs -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqabs137 abs -1E-6143 -> 1E-6143 -dqabs138 abs -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 - --- specials -dqabs520 abs 'Inf' -> 'Infinity' -dqabs521 abs '-Inf' -> 'Infinity' -dqabs522 abs NaN -> NaN -dqabs523 abs sNaN -> NaN Invalid_operation -dqabs524 abs NaN22 -> NaN22 -dqabs525 abs sNaN33 -> NaN33 Invalid_operation -dqabs526 abs -NaN22 -> -NaN22 -dqabs527 abs -sNaN33 -> -NaN33 Invalid_operation - --- Null tests -dqabs900 abs # -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqAbs.decTest -- decQuad absolute value, heeding sNaN -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +dqabs001 abs '1' -> '1' +dqabs002 abs '-1' -> '1' +dqabs003 abs '1.00' -> '1.00' +dqabs004 abs '-1.00' -> '1.00' +dqabs005 abs '0' -> '0' +dqabs006 abs '0.00' -> '0.00' +dqabs007 abs '00.0' -> '0.0' +dqabs008 abs '00.00' -> '0.00' +dqabs009 abs '00' -> '0' + +dqabs010 abs '-2' -> '2' +dqabs011 abs '2' -> '2' +dqabs012 abs '-2.00' -> '2.00' +dqabs013 abs '2.00' -> '2.00' +dqabs014 abs '-0' -> '0' +dqabs015 abs '-0.00' -> '0.00' +dqabs016 abs '-00.0' -> '0.0' +dqabs017 abs '-00.00' -> '0.00' +dqabs018 abs '-00' -> '0' + +dqabs020 abs '-2000000' -> '2000000' +dqabs021 abs '2000000' -> '2000000' + +dqabs030 abs '+0.1' -> '0.1' +dqabs031 abs '-0.1' -> '0.1' +dqabs032 abs '+0.01' -> '0.01' +dqabs033 abs '-0.01' -> '0.01' +dqabs034 abs '+0.001' -> '0.001' +dqabs035 abs '-0.001' -> '0.001' +dqabs036 abs '+0.000001' -> '0.000001' +dqabs037 abs '-0.000001' -> '0.000001' +dqabs038 abs '+0.000000000001' -> '1E-12' +dqabs039 abs '-0.000000000001' -> '1E-12' + +-- examples from decArith +dqabs040 abs '2.1' -> '2.1' +dqabs041 abs '-100' -> '100' +dqabs042 abs '101.5' -> '101.5' +dqabs043 abs '-101.5' -> '101.5' + +-- more fixed, potential LHS swaps/overlays if done by subtract 0 +dqabs060 abs '-56267E-10' -> '0.0000056267' +dqabs061 abs '-56267E-5' -> '0.56267' +dqabs062 abs '-56267E-2' -> '562.67' +dqabs063 abs '-56267E-1' -> '5626.7' +dqabs065 abs '-56267E-0' -> '56267' + +-- subnormals and underflow + +-- long operand tests +dqabs321 abs 1234567890123456 -> 1234567890123456 +dqabs322 abs 12345678000 -> 12345678000 +dqabs323 abs 1234567800 -> 1234567800 +dqabs324 abs 1234567890 -> 1234567890 +dqabs325 abs 1234567891 -> 1234567891 +dqabs326 abs 12345678901 -> 12345678901 +dqabs327 abs 1234567896 -> 1234567896 + +-- zeros +dqabs111 abs 0 -> 0 +dqabs112 abs -0 -> 0 +dqabs113 abs 0E+6 -> 0E+6 +dqabs114 abs -0E+6 -> 0E+6 +dqabs115 abs 0.0000 -> 0.0000 +dqabs116 abs -0.0000 -> 0.0000 +dqabs117 abs 0E-141 -> 0E-141 +dqabs118 abs -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +dqabs121 abs 2682682682682682682682682682682682 -> 2682682682682682682682682682682682 +dqabs122 abs -2682682682682682682682682682682682 -> 2682682682682682682682682682682682 +dqabs123 abs 1341341341341341341341341341341341 -> 1341341341341341341341341341341341 +dqabs124 abs -1341341341341341341341341341341341 -> 1341341341341341341341341341341341 + +-- Nmax, Nmin, Ntiny +dqabs131 abs 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +dqabs132 abs 1E-6143 -> 1E-6143 +dqabs133 abs 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqabs134 abs 1E-6176 -> 1E-6176 Subnormal + +dqabs135 abs -1E-6176 -> 1E-6176 Subnormal +dqabs136 abs -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqabs137 abs -1E-6143 -> 1E-6143 +dqabs138 abs -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 + +-- specials +dqabs520 abs 'Inf' -> 'Infinity' +dqabs521 abs '-Inf' -> 'Infinity' +dqabs522 abs NaN -> NaN +dqabs523 abs sNaN -> NaN Invalid_operation +dqabs524 abs NaN22 -> NaN22 +dqabs525 abs sNaN33 -> NaN33 Invalid_operation +dqabs526 abs -NaN22 -> -NaN22 +dqabs527 abs -sNaN33 -> -NaN33 Invalid_operation + +-- Null tests +dqabs900 abs # -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqAdd.decTest b/Lib/test/decimaltestdata/dqAdd.decTest index b3ad892..b1df77a 100644 --- a/Lib/test/decimaltestdata/dqAdd.decTest +++ b/Lib/test/decimaltestdata/dqAdd.decTest @@ -1,1215 +1,1215 @@ ------------------------------------------------------------------------- --- dqAdd.decTest -- decQuad addition -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests are for decQuads only; all arguments are --- representable in a decQuad -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- [first group are 'quick confidence check'] -dqadd001 add 1 1 -> 2 -dqadd002 add 2 3 -> 5 -dqadd003 add '5.75' '3.3' -> 9.05 -dqadd004 add '5' '-3' -> 2 -dqadd005 add '-5' '-3' -> -8 -dqadd006 add '-7' '2.5' -> -4.5 -dqadd007 add '0.7' '0.3' -> 1.0 -dqadd008 add '1.25' '1.25' -> 2.50 -dqadd009 add '1.23456789' '1.00000000' -> '2.23456789' -dqadd010 add '1.23456789' '1.00000011' -> '2.23456800' - --- 1234567890123456 1234567890123456 -dqadd011 add '0.4444444444444444444444444444444446' '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Inexact Rounded -dqadd012 add '0.4444444444444444444444444444444445' '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Rounded -dqadd013 add '0.4444444444444444444444444444444444' '0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999' -dqadd014 add '4444444444444444444444444444444444' '0.49' -> '4444444444444444444444444444444444' Inexact Rounded -dqadd015 add '4444444444444444444444444444444444' '0.499' -> '4444444444444444444444444444444444' Inexact Rounded -dqadd016 add '4444444444444444444444444444444444' '0.4999' -> '4444444444444444444444444444444444' Inexact Rounded -dqadd017 add '4444444444444444444444444444444444' '0.5000' -> '4444444444444444444444444444444444' Inexact Rounded -dqadd018 add '4444444444444444444444444444444444' '0.5001' -> '4444444444444444444444444444444445' Inexact Rounded -dqadd019 add '4444444444444444444444444444444444' '0.501' -> '4444444444444444444444444444444445' Inexact Rounded -dqadd020 add '4444444444444444444444444444444444' '0.51' -> '4444444444444444444444444444444445' Inexact Rounded - -dqadd021 add 0 1 -> 1 -dqadd022 add 1 1 -> 2 -dqadd023 add 2 1 -> 3 -dqadd024 add 3 1 -> 4 -dqadd025 add 4 1 -> 5 -dqadd026 add 5 1 -> 6 -dqadd027 add 6 1 -> 7 -dqadd028 add 7 1 -> 8 -dqadd029 add 8 1 -> 9 -dqadd030 add 9 1 -> 10 - --- some carrying effects -dqadd031 add '0.9998' '0.0000' -> '0.9998' -dqadd032 add '0.9998' '0.0001' -> '0.9999' -dqadd033 add '0.9998' '0.0002' -> '1.0000' -dqadd034 add '0.9998' '0.0003' -> '1.0001' - -dqadd035 add '70' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd036 add '700' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd037 add '7000' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd038 add '70000' '10000e+34' -> '1.000000000000000000000000000000001E+38' Inexact Rounded -dqadd039 add '700000' '10000e+34' -> '1.000000000000000000000000000000007E+38' Rounded - --- symmetry: -dqadd040 add '10000e+34' '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd041 add '10000e+34' '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd042 add '10000e+34' '7000' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd044 add '10000e+34' '70000' -> '1.000000000000000000000000000000001E+38' Inexact Rounded -dqadd045 add '10000e+34' '700000' -> '1.000000000000000000000000000000007E+38' Rounded - --- same, without rounding -dqadd046 add '10000e+9' '7' -> '10000000000007' -dqadd047 add '10000e+9' '70' -> '10000000000070' -dqadd048 add '10000e+9' '700' -> '10000000000700' -dqadd049 add '10000e+9' '7000' -> '10000000007000' -dqadd050 add '10000e+9' '70000' -> '10000000070000' -dqadd051 add '10000e+9' '700000' -> '10000000700000' -dqadd052 add '10000e+9' '7000000' -> '10000007000000' - --- examples from decarith -dqadd053 add '12' '7.00' -> '19.00' -dqadd054 add '1.3' '-1.07' -> '0.23' -dqadd055 add '1.3' '-1.30' -> '0.00' -dqadd056 add '1.3' '-2.07' -> '-0.77' -dqadd057 add '1E+2' '1E+4' -> '1.01E+4' - --- leading zero preservation -dqadd061 add 1 '0.0001' -> '1.0001' -dqadd062 add 1 '0.00001' -> '1.00001' -dqadd063 add 1 '0.000001' -> '1.000001' -dqadd064 add 1 '0.0000001' -> '1.0000001' -dqadd065 add 1 '0.00000001' -> '1.00000001' - --- some funny zeros [in case of bad signum] -dqadd070 add 1 0 -> 1 -dqadd071 add 1 0. -> 1 -dqadd072 add 1 .0 -> 1.0 -dqadd073 add 1 0.0 -> 1.0 -dqadd074 add 1 0.00 -> 1.00 -dqadd075 add 0 1 -> 1 -dqadd076 add 0. 1 -> 1 -dqadd077 add .0 1 -> 1.0 -dqadd078 add 0.0 1 -> 1.0 -dqadd079 add 0.00 1 -> 1.00 - --- some carries -dqadd080 add 999999998 1 -> 999999999 -dqadd081 add 999999999 1 -> 1000000000 -dqadd082 add 99999999 1 -> 100000000 -dqadd083 add 9999999 1 -> 10000000 -dqadd084 add 999999 1 -> 1000000 -dqadd085 add 99999 1 -> 100000 -dqadd086 add 9999 1 -> 10000 -dqadd087 add 999 1 -> 1000 -dqadd088 add 99 1 -> 100 -dqadd089 add 9 1 -> 10 - - --- more LHS swaps -dqadd090 add '-56267E-10' 0 -> '-0.0000056267' -dqadd091 add '-56267E-6' 0 -> '-0.056267' -dqadd092 add '-56267E-5' 0 -> '-0.56267' -dqadd093 add '-56267E-4' 0 -> '-5.6267' -dqadd094 add '-56267E-3' 0 -> '-56.267' -dqadd095 add '-56267E-2' 0 -> '-562.67' -dqadd096 add '-56267E-1' 0 -> '-5626.7' -dqadd097 add '-56267E-0' 0 -> '-56267' -dqadd098 add '-5E-10' 0 -> '-5E-10' -dqadd099 add '-5E-7' 0 -> '-5E-7' -dqadd100 add '-5E-6' 0 -> '-0.000005' -dqadd101 add '-5E-5' 0 -> '-0.00005' -dqadd102 add '-5E-4' 0 -> '-0.0005' -dqadd103 add '-5E-1' 0 -> '-0.5' -dqadd104 add '-5E0' 0 -> '-5' -dqadd105 add '-5E1' 0 -> '-50' -dqadd106 add '-5E5' 0 -> '-500000' -dqadd107 add '-5E33' 0 -> '-5000000000000000000000000000000000' -dqadd108 add '-5E34' 0 -> '-5.000000000000000000000000000000000E+34' Rounded -dqadd109 add '-5E35' 0 -> '-5.000000000000000000000000000000000E+35' Rounded -dqadd110 add '-5E36' 0 -> '-5.000000000000000000000000000000000E+36' Rounded -dqadd111 add '-5E100' 0 -> '-5.000000000000000000000000000000000E+100' Rounded - --- more RHS swaps -dqadd113 add 0 '-56267E-10' -> '-0.0000056267' -dqadd114 add 0 '-56267E-6' -> '-0.056267' -dqadd116 add 0 '-56267E-5' -> '-0.56267' -dqadd117 add 0 '-56267E-4' -> '-5.6267' -dqadd119 add 0 '-56267E-3' -> '-56.267' -dqadd120 add 0 '-56267E-2' -> '-562.67' -dqadd121 add 0 '-56267E-1' -> '-5626.7' -dqadd122 add 0 '-56267E-0' -> '-56267' -dqadd123 add 0 '-5E-10' -> '-5E-10' -dqadd124 add 0 '-5E-7' -> '-5E-7' -dqadd125 add 0 '-5E-6' -> '-0.000005' -dqadd126 add 0 '-5E-5' -> '-0.00005' -dqadd127 add 0 '-5E-4' -> '-0.0005' -dqadd128 add 0 '-5E-1' -> '-0.5' -dqadd129 add 0 '-5E0' -> '-5' -dqadd130 add 0 '-5E1' -> '-50' -dqadd131 add 0 '-5E5' -> '-500000' -dqadd132 add 0 '-5E33' -> '-5000000000000000000000000000000000' -dqadd133 add 0 '-5E34' -> '-5.000000000000000000000000000000000E+34' Rounded -dqadd134 add 0 '-5E35' -> '-5.000000000000000000000000000000000E+35' Rounded -dqadd135 add 0 '-5E36' -> '-5.000000000000000000000000000000000E+36' Rounded -dqadd136 add 0 '-5E100' -> '-5.000000000000000000000000000000000E+100' Rounded - --- related -dqadd137 add 1 '0E-39' -> '1.000000000000000000000000000000000' Rounded -dqadd138 add -1 '0E-39' -> '-1.000000000000000000000000000000000' Rounded -dqadd139 add '0E-39' 1 -> '1.000000000000000000000000000000000' Rounded -dqadd140 add '0E-39' -1 -> '-1.000000000000000000000000000000000' Rounded -dqadd141 add 1E+29 0.0000 -> '100000000000000000000000000000.0000' -dqadd142 add 1E+29 0.00000 -> '100000000000000000000000000000.0000' Rounded -dqadd143 add 0.000 1E+30 -> '1000000000000000000000000000000.000' -dqadd144 add 0.0000 1E+30 -> '1000000000000000000000000000000.000' Rounded - --- [some of the next group are really constructor tests] -dqadd146 add '00.0' 0 -> '0.0' -dqadd147 add '0.00' 0 -> '0.00' -dqadd148 add 0 '0.00' -> '0.00' -dqadd149 add 0 '00.0' -> '0.0' -dqadd150 add '00.0' '0.00' -> '0.00' -dqadd151 add '0.00' '00.0' -> '0.00' -dqadd152 add '3' '.3' -> '3.3' -dqadd153 add '3.' '.3' -> '3.3' -dqadd154 add '3.0' '.3' -> '3.3' -dqadd155 add '3.00' '.3' -> '3.30' -dqadd156 add '3' '3' -> '6' -dqadd157 add '3' '+3' -> '6' -dqadd158 add '3' '-3' -> '0' -dqadd159 add '0.3' '-0.3' -> '0.0' -dqadd160 add '0.03' '-0.03' -> '0.00' - --- try borderline precision, with carries, etc. -dqadd161 add '1E+12' '-1' -> '999999999999' -dqadd162 add '1E+12' '1.11' -> '1000000000001.11' -dqadd163 add '1.11' '1E+12' -> '1000000000001.11' -dqadd164 add '-1' '1E+12' -> '999999999999' -dqadd165 add '7E+12' '-1' -> '6999999999999' -dqadd166 add '7E+12' '1.11' -> '7000000000001.11' -dqadd167 add '1.11' '7E+12' -> '7000000000001.11' -dqadd168 add '-1' '7E+12' -> '6999999999999' - -rounding: half_up -dqadd170 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555567' -> '5.000000000000000000000000000000001' Inexact Rounded -dqadd171 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555566' -> '5.000000000000000000000000000000001' Inexact Rounded -dqadd172 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555565' -> '5.000000000000000000000000000000001' Inexact Rounded -dqadd173 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555564' -> '5.000000000000000000000000000000000' Inexact Rounded -dqadd174 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555553' -> '4.999999999999999999999999999999999' Inexact Rounded -dqadd175 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555552' -> '4.999999999999999999999999999999999' Inexact Rounded -dqadd176 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555551' -> '4.999999999999999999999999999999999' Inexact Rounded -dqadd177 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555550' -> '4.999999999999999999999999999999999' Rounded -dqadd178 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555545' -> '4.999999999999999999999999999999999' Inexact Rounded -dqadd179 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555544' -> '4.999999999999999999999999999999998' Inexact Rounded -dqadd180 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555543' -> '4.999999999999999999999999999999998' Inexact Rounded -dqadd181 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555542' -> '4.999999999999999999999999999999998' Inexact Rounded -dqadd182 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555541' -> '4.999999999999999999999999999999998' Inexact Rounded -dqadd183 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555540' -> '4.999999999999999999999999999999998' Rounded - --- and some more, including residue effects and different roundings -rounding: half_up -dqadd200 add '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' -dqadd201 add '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd202 add '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd203 add '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd204 add '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd205 add '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd206 add '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd207 add '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd208 add '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd209 add '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd210 add '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd211 add '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd212 add '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd213 add '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd214 add '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd215 add '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd216 add '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' -dqadd217 add '1231234567890123456784560123456789' 1.000000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd218 add '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd219 add '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded - -rounding: half_even -dqadd220 add '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' -dqadd221 add '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd222 add '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd223 add '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd224 add '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd225 add '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd226 add '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd227 add '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd228 add '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd229 add '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd230 add '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd231 add '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd232 add '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd233 add '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd234 add '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd235 add '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd236 add '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' -dqadd237 add '1231234567890123456784560123456789' 1.00000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd238 add '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd239 add '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded --- critical few with even bottom digit... -dqadd240 add '1231234567890123456784560123456788' 0.499999999 -> '1231234567890123456784560123456788' Inexact Rounded -dqadd241 add '1231234567890123456784560123456788' 0.5 -> '1231234567890123456784560123456788' Inexact Rounded -dqadd242 add '1231234567890123456784560123456788' 0.500000001 -> '1231234567890123456784560123456789' Inexact Rounded - -rounding: down -dqadd250 add '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' -dqadd251 add '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd252 add '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd253 add '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd254 add '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd255 add '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd256 add '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd257 add '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd258 add '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd259 add '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd260 add '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd261 add '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd262 add '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd263 add '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd264 add '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd265 add '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd266 add '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' -dqadd267 add '1231234567890123456784560123456789' 1.00000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd268 add '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd269 add '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded - --- 1 in last place tests -rounding: half_up -dqadd301 add -1 1 -> 0 -dqadd302 add 0 1 -> 1 -dqadd303 add 1 1 -> 2 -dqadd304 add 12 1 -> 13 -dqadd305 add 98 1 -> 99 -dqadd306 add 99 1 -> 100 -dqadd307 add 100 1 -> 101 -dqadd308 add 101 1 -> 102 -dqadd309 add -1 -1 -> -2 -dqadd310 add 0 -1 -> -1 -dqadd311 add 1 -1 -> 0 -dqadd312 add 12 -1 -> 11 -dqadd313 add 98 -1 -> 97 -dqadd314 add 99 -1 -> 98 -dqadd315 add 100 -1 -> 99 -dqadd316 add 101 -1 -> 100 - -dqadd321 add -0.01 0.01 -> 0.00 -dqadd322 add 0.00 0.01 -> 0.01 -dqadd323 add 0.01 0.01 -> 0.02 -dqadd324 add 0.12 0.01 -> 0.13 -dqadd325 add 0.98 0.01 -> 0.99 -dqadd326 add 0.99 0.01 -> 1.00 -dqadd327 add 1.00 0.01 -> 1.01 -dqadd328 add 1.01 0.01 -> 1.02 -dqadd329 add -0.01 -0.01 -> -0.02 -dqadd330 add 0.00 -0.01 -> -0.01 -dqadd331 add 0.01 -0.01 -> 0.00 -dqadd332 add 0.12 -0.01 -> 0.11 -dqadd333 add 0.98 -0.01 -> 0.97 -dqadd334 add 0.99 -0.01 -> 0.98 -dqadd335 add 1.00 -0.01 -> 0.99 -dqadd336 add 1.01 -0.01 -> 1.00 - --- some more cases where adding 0 affects the coefficient -dqadd340 add 1E+3 0 -> 1000 -dqadd341 add 1E+33 0 -> 1000000000000000000000000000000000 -dqadd342 add 1E+34 0 -> 1.000000000000000000000000000000000E+34 Rounded -dqadd343 add 1E+35 0 -> 1.000000000000000000000000000000000E+35 Rounded --- which simply follow from these cases ... -dqadd344 add 1E+3 1 -> 1001 -dqadd345 add 1E+33 1 -> 1000000000000000000000000000000001 -dqadd346 add 1E+34 1 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd347 add 1E+35 1 -> 1.000000000000000000000000000000000E+35 Inexact Rounded -dqadd348 add 1E+3 7 -> 1007 -dqadd349 add 1E+33 7 -> 1000000000000000000000000000000007 -dqadd350 add 1E+34 7 -> 1.000000000000000000000000000000001E+34 Inexact Rounded -dqadd351 add 1E+35 7 -> 1.000000000000000000000000000000000E+35 Inexact Rounded - --- tryzeros cases -rounding: half_up -dqadd360 add 0E+50 10000E+1 -> 1.0000E+5 -dqadd361 add 0E-50 10000E+1 -> 100000.0000000000000000000000000000 Rounded -dqadd362 add 10000E+1 0E-50 -> 100000.0000000000000000000000000000 Rounded -dqadd363 add 10000E+1 10000E-50 -> 100000.0000000000000000000000000000 Rounded Inexact -dqadd364 add 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0E+6111 --- 1 234567890123456789012345678901234 - --- a curiosity from JSR 13 testing -rounding: half_down -dqadd370 add 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 -dqadd371 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact -rounding: half_up -dqadd372 add 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 -dqadd373 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact -rounding: half_even -dqadd374 add 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 -dqadd375 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact - --- ulp replacement tests -dqadd400 add 1 77e-32 -> 1.00000000000000000000000000000077 -dqadd401 add 1 77e-33 -> 1.000000000000000000000000000000077 -dqadd402 add 1 77e-34 -> 1.000000000000000000000000000000008 Inexact Rounded -dqadd403 add 1 77e-35 -> 1.000000000000000000000000000000001 Inexact Rounded -dqadd404 add 1 77e-36 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd405 add 1 77e-37 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd406 add 1 77e-299 -> 1.000000000000000000000000000000000 Inexact Rounded - -dqadd410 add 10 77e-32 -> 10.00000000000000000000000000000077 -dqadd411 add 10 77e-33 -> 10.00000000000000000000000000000008 Inexact Rounded -dqadd412 add 10 77e-34 -> 10.00000000000000000000000000000001 Inexact Rounded -dqadd413 add 10 77e-35 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd414 add 10 77e-36 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd415 add 10 77e-37 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd416 add 10 77e-299 -> 10.00000000000000000000000000000000 Inexact Rounded - -dqadd420 add 77e-32 1 -> 1.00000000000000000000000000000077 -dqadd421 add 77e-33 1 -> 1.000000000000000000000000000000077 -dqadd422 add 77e-34 1 -> 1.000000000000000000000000000000008 Inexact Rounded -dqadd423 add 77e-35 1 -> 1.000000000000000000000000000000001 Inexact Rounded -dqadd424 add 77e-36 1 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd425 add 77e-37 1 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd426 add 77e-299 1 -> 1.000000000000000000000000000000000 Inexact Rounded - -dqadd430 add 77e-32 10 -> 10.00000000000000000000000000000077 -dqadd431 add 77e-33 10 -> 10.00000000000000000000000000000008 Inexact Rounded -dqadd432 add 77e-34 10 -> 10.00000000000000000000000000000001 Inexact Rounded -dqadd433 add 77e-35 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd434 add 77e-36 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd435 add 77e-37 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd436 add 77e-299 10 -> 10.00000000000000000000000000000000 Inexact Rounded - --- fastpath boundaries --- 1234567890123456789012345678901234 -dqadd501 add '4444444444444444444444444444444444' '5555555555555555555555555555555555' -> '9999999999999999999999999999999999' -dqadd502 add '4444444444444444444444444444444444' '4555555555555555555555555555555555' -> '8999999999999999999999999999999999' -dqadd503 add '4444444444444444444444444444444444' '3555555555555555555055555555555555' -> '7999999999999999999499999999999999' -dqadd504 add '4444444444444444444444444444444444' '3955555555555555555555555555555555' -> '8399999999999999999999999999999999' -dqadd505 add '4444444444444444444444444444444444' '4955555555555555555555555555555555' -> '9399999999999999999999999999999999' -dqadd506 add '4444444444444444444444444444444444' '5955555555555555555555555555555555' -> 1.040000000000000000000000000000000E+34 Inexact Rounded -dqadd511 add '344444444444444444444444444444444' '555555555555555555555555555555555' -> '899999999999999999999999999999999' -dqadd512 add '34444444444444444444444444444444' '55555555555555555555555555555555' -> '89999999999999999999999999999999' -dqadd513 add '3444444444444444444444444444444' '5555555555555555555555555555555' -> '8999999999999999999999999999999' -dqadd514 add '344444444444444444444444444444' '555555555555555555555555555555' -> '899999999999999999999999999999' -dqadd515 add '34444444444444444444444444444' '55555555555555555555555555555' -> '89999999999999999999999999999' -dqadd516 add '3444444444444444444444444444' '5555555555555555555555555555' -> '8999999999999999999999999999' -dqadd517 add '344444444444444444444444444' '555555555555555555555555555' -> '899999999999999999999999999' -dqadd518 add '34444444444444444444444444' '55555555555555555555555555' -> '89999999999999999999999999' -dqadd519 add '3444444444444444444444444' '5555555555555555555555555' -> '8999999999999999999999999' -dqadd520 add '344444444444444444444444' '555555555555555555555555' -> '899999999999999999999999' -dqadd521 add '34444444444444444444444' '55555555555555555555555' -> '89999999999999999999999' -dqadd522 add '3444444444444444444444' '5555555555555555555555' -> '8999999999999999999999' -dqadd523 add '4444444444444444444444' '3333333333333333333333' -> '7777777777777777777777' -dqadd524 add '344444444444444444444' '555555555555555555555' -> '899999999999999999999' -dqadd525 add '34444444444444444444' '55555555555555555555' -> '89999999999999999999' -dqadd526 add '3444444444444444444' '5555555555555555555' -> '8999999999999999999' -dqadd527 add '344444444444444444' '555555555555555555' -> '899999999999999999' -dqadd528 add '34444444444444444' '55555555555555555' -> '89999999999999999' -dqadd529 add '3444444444444444' '5555555555555555' -> '8999999999999999' -dqadd530 add '344444444444444' '555555555555555' -> '899999999999999' -dqadd531 add '34444444444444' '55555555555555' -> '89999999999999' -dqadd532 add '3444444444444' '5555555555555' -> '8999999999999' -dqadd533 add '344444444444' '555555555555' -> '899999999999' -dqadd534 add '34444444444' '55555555555' -> '89999999999' -dqadd535 add '3444444444' '5555555555' -> '8999999999' -dqadd536 add '344444444' '555555555' -> '899999999' -dqadd537 add '34444444' '55555555' -> '89999999' -dqadd538 add '3444444' '5555555' -> '8999999' -dqadd539 add '344444' '555555' -> '899999' -dqadd540 add '34444' '55555' -> '89999' -dqadd541 add '3444' '5555' -> '8999' -dqadd542 add '344' '555' -> '899' -dqadd543 add '34' '55' -> '89' -dqadd544 add '3' '5' -> '8' - -dqadd545 add '3000004000000000000000000000000000' '3000000000000040000000000000000000' -> '6000004000000040000000000000000000' -dqadd546 add '3000000400000000000000000000000000' '4000000000000400000000000000000000' -> '7000000400000400000000000000000000' -dqadd547 add '3000000040000000000000000000000000' '5000000000004000000000000000000000' -> '8000000040004000000000000000000000' -dqadd548 add '4000000004000000000000000000000000' '3000000000040000000000000000000000' -> '7000000004040000000000000000000000' -dqadd549 add '4000000000400000000000000000000000' '4000000000400000000000000000000000' -> '8000000000800000000000000000000000' -dqadd550 add '4000000000040000000000000000000000' '5000000004000000000000000000000000' -> '9000000004040000000000000000000000' -dqadd551 add '5000000000004000000000000000000000' '3000000040000000000000000000000000' -> '8000000040004000000000000000000000' -dqadd552 add '5000000000000400000000000000000000' '4000000400000000000000000000000000' -> '9000000400000400000000000000000000' -dqadd553 add '5000000000000040000000000000000000' '5000004000000000000000000000000000' -> 1.000000400000004000000000000000000E+34 Rounded --- check propagation -dqadd554 add '8999999999999999999999999999999999' '0000000000000000000000000000000001' -> 9000000000000000000000000000000000 -dqadd555 add '0000000000000000000000000000000001' '8999999999999999999999999999999999' -> 9000000000000000000000000000000000 -dqadd556 add '4444444444444444444444444444444444' '4555555555555555555555555555555556' -> 9000000000000000000000000000000000 -dqadd557 add '4555555555555555555555555555555556' '4444444444444444444444444444444444' -> 9000000000000000000000000000000000 - --- negative ulps -dqadd6440 add 1 -77e-32 -> 0.99999999999999999999999999999923 -dqadd6441 add 1 -77e-33 -> 0.999999999999999999999999999999923 -dqadd6442 add 1 -77e-34 -> 0.9999999999999999999999999999999923 -dqadd6443 add 1 -77e-35 -> 0.9999999999999999999999999999999992 Inexact Rounded -dqadd6444 add 1 -77e-36 -> 0.9999999999999999999999999999999999 Inexact Rounded -dqadd6445 add 1 -77e-37 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd6446 add 1 -77e-99 -> 1.000000000000000000000000000000000 Inexact Rounded - -dqadd6450 add 10 -77e-32 -> 9.99999999999999999999999999999923 -dqadd6451 add 10 -77e-33 -> 9.999999999999999999999999999999923 -dqadd6452 add 10 -77e-34 -> 9.999999999999999999999999999999992 Inexact Rounded -dqadd6453 add 10 -77e-35 -> 9.999999999999999999999999999999999 Inexact Rounded -dqadd6454 add 10 -77e-36 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd6455 add 10 -77e-37 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd6456 add 10 -77e-99 -> 10.00000000000000000000000000000000 Inexact Rounded - -dqadd6460 add -77e-32 1 -> 0.99999999999999999999999999999923 -dqadd6461 add -77e-33 1 -> 0.999999999999999999999999999999923 -dqadd6462 add -77e-34 1 -> 0.9999999999999999999999999999999923 -dqadd6463 add -77e-35 1 -> 0.9999999999999999999999999999999992 Inexact Rounded -dqadd6464 add -77e-36 1 -> 0.9999999999999999999999999999999999 Inexact Rounded -dqadd6465 add -77e-37 1 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd6466 add -77e-99 1 -> 1.000000000000000000000000000000000 Inexact Rounded - -dqadd6470 add -77e-32 10 -> 9.99999999999999999999999999999923 -dqadd6471 add -77e-33 10 -> 9.999999999999999999999999999999923 -dqadd6472 add -77e-34 10 -> 9.999999999999999999999999999999992 Inexact Rounded -dqadd6473 add -77e-35 10 -> 9.999999999999999999999999999999999 Inexact Rounded -dqadd6474 add -77e-36 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd6475 add -77e-37 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd6476 add -77e-99 10 -> 10.00000000000000000000000000000000 Inexact Rounded - --- negative ulps -dqadd6480 add -1 77e-32 -> -0.99999999999999999999999999999923 -dqadd6481 add -1 77e-33 -> -0.999999999999999999999999999999923 -dqadd6482 add -1 77e-34 -> -0.9999999999999999999999999999999923 -dqadd6483 add -1 77e-35 -> -0.9999999999999999999999999999999992 Inexact Rounded -dqadd6484 add -1 77e-36 -> -0.9999999999999999999999999999999999 Inexact Rounded -dqadd6485 add -1 77e-37 -> -1.000000000000000000000000000000000 Inexact Rounded -dqadd6486 add -1 77e-99 -> -1.000000000000000000000000000000000 Inexact Rounded - -dqadd6490 add -10 77e-32 -> -9.99999999999999999999999999999923 -dqadd6491 add -10 77e-33 -> -9.999999999999999999999999999999923 -dqadd6492 add -10 77e-34 -> -9.999999999999999999999999999999992 Inexact Rounded -dqadd6493 add -10 77e-35 -> -9.999999999999999999999999999999999 Inexact Rounded -dqadd6494 add -10 77e-36 -> -10.00000000000000000000000000000000 Inexact Rounded -dqadd6495 add -10 77e-37 -> -10.00000000000000000000000000000000 Inexact Rounded -dqadd6496 add -10 77e-99 -> -10.00000000000000000000000000000000 Inexact Rounded - -dqadd6500 add 77e-32 -1 -> -0.99999999999999999999999999999923 -dqadd6501 add 77e-33 -1 -> -0.999999999999999999999999999999923 -dqadd6502 add 77e-34 -1 -> -0.9999999999999999999999999999999923 -dqadd6503 add 77e-35 -1 -> -0.9999999999999999999999999999999992 Inexact Rounded -dqadd6504 add 77e-36 -1 -> -0.9999999999999999999999999999999999 Inexact Rounded -dqadd6505 add 77e-37 -1 -> -1.000000000000000000000000000000000 Inexact Rounded -dqadd6506 add 77e-99 -1 -> -1.000000000000000000000000000000000 Inexact Rounded - -dqadd6510 add 77e-32 -10 -> -9.99999999999999999999999999999923 -dqadd6511 add 77e-33 -10 -> -9.999999999999999999999999999999923 -dqadd6512 add 77e-34 -10 -> -9.999999999999999999999999999999992 Inexact Rounded -dqadd6513 add 77e-35 -10 -> -9.999999999999999999999999999999999 Inexact Rounded -dqadd6514 add 77e-36 -10 -> -10.00000000000000000000000000000000 Inexact Rounded -dqadd6515 add 77e-37 -10 -> -10.00000000000000000000000000000000 Inexact Rounded -dqadd6516 add 77e-99 -10 -> -10.00000000000000000000000000000000 Inexact Rounded - --- and some more residue effects and different roundings -rounding: half_up -dqadd6540 add '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' -dqadd6541 add '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6542 add '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6543 add '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6544 add '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6545 add '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6546 add '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6547 add '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6548 add '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6549 add '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6550 add '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6551 add '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6552 add '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6553 add '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6554 add '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6555 add '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6556 add '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' -dqadd6557 add '9876543219876543216543210123456789' 1.000000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6558 add '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6559 add '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded - -rounding: half_even -dqadd6560 add '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' -dqadd6561 add '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6562 add '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6563 add '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6564 add '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6565 add '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6566 add '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6567 add '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd6568 add '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6569 add '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6570 add '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6571 add '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6572 add '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6573 add '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6574 add '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6575 add '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6576 add '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' -dqadd6577 add '9876543219876543216543210123456789' 1.00000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6578 add '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd6579 add '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded - --- critical few with even bottom digit... -dqadd7540 add '9876543219876543216543210123456788' 0.499999999 -> '9876543219876543216543210123456788' Inexact Rounded -dqadd7541 add '9876543219876543216543210123456788' 0.5 -> '9876543219876543216543210123456788' Inexact Rounded -dqadd7542 add '9876543219876543216543210123456788' 0.500000001 -> '9876543219876543216543210123456789' Inexact Rounded - -rounding: down -dqadd7550 add '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' -dqadd7551 add '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7552 add '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7553 add '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7554 add '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7555 add '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7556 add '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7557 add '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7558 add '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7559 add '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7560 add '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7561 add '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7562 add '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7563 add '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7564 add '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7565 add '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd7566 add '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' -dqadd7567 add '9876543219876543216543210123456789' 1.00000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd7568 add '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd7569 add '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded - --- more zeros, etc. -rounding: half_even - -dqadd7701 add 5.00 1.00E-3 -> 5.00100 -dqadd7702 add 00.00 0.000 -> 0.000 -dqadd7703 add 00.00 0E-3 -> 0.000 -dqadd7704 add 0E-3 00.00 -> 0.000 - -dqadd7710 add 0E+3 00.00 -> 0.00 -dqadd7711 add 0E+3 00.0 -> 0.0 -dqadd7712 add 0E+3 00. -> 0 -dqadd7713 add 0E+3 00.E+1 -> 0E+1 -dqadd7714 add 0E+3 00.E+2 -> 0E+2 -dqadd7715 add 0E+3 00.E+3 -> 0E+3 -dqadd7716 add 0E+3 00.E+4 -> 0E+3 -dqadd7717 add 0E+3 00.E+5 -> 0E+3 -dqadd7718 add 0E+3 -00.0 -> 0.0 -dqadd7719 add 0E+3 -00. -> 0 -dqadd7731 add 0E+3 -00.E+1 -> 0E+1 - -dqadd7720 add 00.00 0E+3 -> 0.00 -dqadd7721 add 00.0 0E+3 -> 0.0 -dqadd7722 add 00. 0E+3 -> 0 -dqadd7723 add 00.E+1 0E+3 -> 0E+1 -dqadd7724 add 00.E+2 0E+3 -> 0E+2 -dqadd7725 add 00.E+3 0E+3 -> 0E+3 -dqadd7726 add 00.E+4 0E+3 -> 0E+3 -dqadd7727 add 00.E+5 0E+3 -> 0E+3 -dqadd7728 add -00.00 0E+3 -> 0.00 -dqadd7729 add -00.0 0E+3 -> 0.0 -dqadd7730 add -00. 0E+3 -> 0 - -dqadd7732 add 0 0 -> 0 -dqadd7733 add 0 -0 -> 0 -dqadd7734 add -0 0 -> 0 -dqadd7735 add -0 -0 -> -0 -- IEEE 754 special case - -dqadd7736 add 1 -1 -> 0 -dqadd7737 add -1 -1 -> -2 -dqadd7738 add 1 1 -> 2 -dqadd7739 add -1 1 -> 0 - -dqadd7741 add 0 -1 -> -1 -dqadd7742 add -0 -1 -> -1 -dqadd7743 add 0 1 -> 1 -dqadd7744 add -0 1 -> 1 -dqadd7745 add -1 0 -> -1 -dqadd7746 add -1 -0 -> -1 -dqadd7747 add 1 0 -> 1 -dqadd7748 add 1 -0 -> 1 - -dqadd7751 add 0.0 -1 -> -1.0 -dqadd7752 add -0.0 -1 -> -1.0 -dqadd7753 add 0.0 1 -> 1.0 -dqadd7754 add -0.0 1 -> 1.0 -dqadd7755 add -1.0 0 -> -1.0 -dqadd7756 add -1.0 -0 -> -1.0 -dqadd7757 add 1.0 0 -> 1.0 -dqadd7758 add 1.0 -0 -> 1.0 - -dqadd7761 add 0 -1.0 -> -1.0 -dqadd7762 add -0 -1.0 -> -1.0 -dqadd7763 add 0 1.0 -> 1.0 -dqadd7764 add -0 1.0 -> 1.0 -dqadd7765 add -1 0.0 -> -1.0 -dqadd7766 add -1 -0.0 -> -1.0 -dqadd7767 add 1 0.0 -> 1.0 -dqadd7768 add 1 -0.0 -> 1.0 - -dqadd7771 add 0.0 -1.0 -> -1.0 -dqadd7772 add -0.0 -1.0 -> -1.0 -dqadd7773 add 0.0 1.0 -> 1.0 -dqadd7774 add -0.0 1.0 -> 1.0 -dqadd7775 add -1.0 0.0 -> -1.0 -dqadd7776 add -1.0 -0.0 -> -1.0 -dqadd7777 add 1.0 0.0 -> 1.0 -dqadd7778 add 1.0 -0.0 -> 1.0 - --- Specials -dqadd7780 add -Inf -Inf -> -Infinity -dqadd7781 add -Inf -1000 -> -Infinity -dqadd7782 add -Inf -1 -> -Infinity -dqadd7783 add -Inf -0 -> -Infinity -dqadd7784 add -Inf 0 -> -Infinity -dqadd7785 add -Inf 1 -> -Infinity -dqadd7786 add -Inf 1000 -> -Infinity -dqadd7787 add -1000 -Inf -> -Infinity -dqadd7788 add -Inf -Inf -> -Infinity -dqadd7789 add -1 -Inf -> -Infinity -dqadd7790 add -0 -Inf -> -Infinity -dqadd7791 add 0 -Inf -> -Infinity -dqadd7792 add 1 -Inf -> -Infinity -dqadd7793 add 1000 -Inf -> -Infinity -dqadd7794 add Inf -Inf -> NaN Invalid_operation - -dqadd7800 add Inf -Inf -> NaN Invalid_operation -dqadd7801 add Inf -1000 -> Infinity -dqadd7802 add Inf -1 -> Infinity -dqadd7803 add Inf -0 -> Infinity -dqadd7804 add Inf 0 -> Infinity -dqadd7805 add Inf 1 -> Infinity -dqadd7806 add Inf 1000 -> Infinity -dqadd7807 add Inf Inf -> Infinity -dqadd7808 add -1000 Inf -> Infinity -dqadd7809 add -Inf Inf -> NaN Invalid_operation -dqadd7810 add -1 Inf -> Infinity -dqadd7811 add -0 Inf -> Infinity -dqadd7812 add 0 Inf -> Infinity -dqadd7813 add 1 Inf -> Infinity -dqadd7814 add 1000 Inf -> Infinity -dqadd7815 add Inf Inf -> Infinity - -dqadd7821 add NaN -Inf -> NaN -dqadd7822 add NaN -1000 -> NaN -dqadd7823 add NaN -1 -> NaN -dqadd7824 add NaN -0 -> NaN -dqadd7825 add NaN 0 -> NaN -dqadd7826 add NaN 1 -> NaN -dqadd7827 add NaN 1000 -> NaN -dqadd7828 add NaN Inf -> NaN -dqadd7829 add NaN NaN -> NaN -dqadd7830 add -Inf NaN -> NaN -dqadd7831 add -1000 NaN -> NaN -dqadd7832 add -1 NaN -> NaN -dqadd7833 add -0 NaN -> NaN -dqadd7834 add 0 NaN -> NaN -dqadd7835 add 1 NaN -> NaN -dqadd7836 add 1000 NaN -> NaN -dqadd7837 add Inf NaN -> NaN - -dqadd7841 add sNaN -Inf -> NaN Invalid_operation -dqadd7842 add sNaN -1000 -> NaN Invalid_operation -dqadd7843 add sNaN -1 -> NaN Invalid_operation -dqadd7844 add sNaN -0 -> NaN Invalid_operation -dqadd7845 add sNaN 0 -> NaN Invalid_operation -dqadd7846 add sNaN 1 -> NaN Invalid_operation -dqadd7847 add sNaN 1000 -> NaN Invalid_operation -dqadd7848 add sNaN NaN -> NaN Invalid_operation -dqadd7849 add sNaN sNaN -> NaN Invalid_operation -dqadd7850 add NaN sNaN -> NaN Invalid_operation -dqadd7851 add -Inf sNaN -> NaN Invalid_operation -dqadd7852 add -1000 sNaN -> NaN Invalid_operation -dqadd7853 add -1 sNaN -> NaN Invalid_operation -dqadd7854 add -0 sNaN -> NaN Invalid_operation -dqadd7855 add 0 sNaN -> NaN Invalid_operation -dqadd7856 add 1 sNaN -> NaN Invalid_operation -dqadd7857 add 1000 sNaN -> NaN Invalid_operation -dqadd7858 add Inf sNaN -> NaN Invalid_operation -dqadd7859 add NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqadd7861 add NaN1 -Inf -> NaN1 -dqadd7862 add +NaN2 -1000 -> NaN2 -dqadd7863 add NaN3 1000 -> NaN3 -dqadd7864 add NaN4 Inf -> NaN4 -dqadd7865 add NaN5 +NaN6 -> NaN5 -dqadd7866 add -Inf NaN7 -> NaN7 -dqadd7867 add -1000 NaN8 -> NaN8 -dqadd7868 add 1000 NaN9 -> NaN9 -dqadd7869 add Inf +NaN10 -> NaN10 -dqadd7871 add sNaN11 -Inf -> NaN11 Invalid_operation -dqadd7872 add sNaN12 -1000 -> NaN12 Invalid_operation -dqadd7873 add sNaN13 1000 -> NaN13 Invalid_operation -dqadd7874 add sNaN14 NaN17 -> NaN14 Invalid_operation -dqadd7875 add sNaN15 sNaN18 -> NaN15 Invalid_operation -dqadd7876 add NaN16 sNaN19 -> NaN19 Invalid_operation -dqadd7877 add -Inf +sNaN20 -> NaN20 Invalid_operation -dqadd7878 add -1000 sNaN21 -> NaN21 Invalid_operation -dqadd7879 add 1000 sNaN22 -> NaN22 Invalid_operation -dqadd7880 add Inf sNaN23 -> NaN23 Invalid_operation -dqadd7881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation -dqadd7882 add -NaN26 NaN28 -> -NaN26 -dqadd7883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation -dqadd7884 add 1000 -NaN30 -> -NaN30 -dqadd7885 add 1000 -sNaN31 -> -NaN31 Invalid_operation - --- Here we explore near the boundary of rounding a subnormal to Nmin -dqadd7575 add 1E-6143 -1E-6176 -> 9.99999999999999999999999999999999E-6144 Subnormal -dqadd7576 add -1E-6143 +1E-6176 -> -9.99999999999999999999999999999999E-6144 Subnormal - --- check overflow edge case --- 1234567890123456 -dqadd7972 apply 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 -dqadd7973 add 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7974 add 9999999999999999999999999999999999E+6111 1 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7975 add 9999999999999999999999999999999999E+6111 1E+6111 -> Infinity Overflow Inexact Rounded -dqadd7976 add 9999999999999999999999999999999999E+6111 9E+6110 -> Infinity Overflow Inexact Rounded -dqadd7977 add 9999999999999999999999999999999999E+6111 8E+6110 -> Infinity Overflow Inexact Rounded -dqadd7978 add 9999999999999999999999999999999999E+6111 7E+6110 -> Infinity Overflow Inexact Rounded -dqadd7979 add 9999999999999999999999999999999999E+6111 6E+6110 -> Infinity Overflow Inexact Rounded -dqadd7980 add 9999999999999999999999999999999999E+6111 5E+6110 -> Infinity Overflow Inexact Rounded -dqadd7981 add 9999999999999999999999999999999999E+6111 4E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7982 add 9999999999999999999999999999999999E+6111 3E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7983 add 9999999999999999999999999999999999E+6111 2E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7984 add 9999999999999999999999999999999999E+6111 1E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded - -dqadd7985 apply -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 -dqadd7986 add -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7987 add -9999999999999999999999999999999999E+6111 -1 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7988 add -9999999999999999999999999999999999E+6111 -1E+6111 -> -Infinity Overflow Inexact Rounded -dqadd7989 add -9999999999999999999999999999999999E+6111 -9E+6110 -> -Infinity Overflow Inexact Rounded -dqadd7990 add -9999999999999999999999999999999999E+6111 -8E+6110 -> -Infinity Overflow Inexact Rounded -dqadd7991 add -9999999999999999999999999999999999E+6111 -7E+6110 -> -Infinity Overflow Inexact Rounded -dqadd7992 add -9999999999999999999999999999999999E+6111 -6E+6110 -> -Infinity Overflow Inexact Rounded -dqadd7993 add -9999999999999999999999999999999999E+6111 -5E+6110 -> -Infinity Overflow Inexact Rounded -dqadd7994 add -9999999999999999999999999999999999E+6111 -4E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7995 add -9999999999999999999999999999999999E+6111 -3E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7996 add -9999999999999999999999999999999999E+6111 -2E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd7997 add -9999999999999999999999999999999999E+6111 -1E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded - --- And for round down full and subnormal results -rounding: down -dqadd71100 add 1e+2 -1e-6143 -> 99.99999999999999999999999999999999 Rounded Inexact -dqadd71101 add 1e+1 -1e-6143 -> 9.999999999999999999999999999999999 Rounded Inexact -dqadd71103 add +1 -1e-6143 -> 0.9999999999999999999999999999999999 Rounded Inexact -dqadd71104 add 1e-1 -1e-6143 -> 0.09999999999999999999999999999999999 Rounded Inexact -dqadd71105 add 1e-2 -1e-6143 -> 0.009999999999999999999999999999999999 Rounded Inexact -dqadd71106 add 1e-3 -1e-6143 -> 0.0009999999999999999999999999999999999 Rounded Inexact -dqadd71107 add 1e-4 -1e-6143 -> 0.00009999999999999999999999999999999999 Rounded Inexact -dqadd71108 add 1e-5 -1e-6143 -> 0.000009999999999999999999999999999999999 Rounded Inexact -dqadd71109 add 1e-6 -1e-6143 -> 9.999999999999999999999999999999999E-7 Rounded Inexact - -rounding: ceiling -dqadd71110 add -1e+2 +1e-6143 -> -99.99999999999999999999999999999999 Rounded Inexact -dqadd71111 add -1e+1 +1e-6143 -> -9.999999999999999999999999999999999 Rounded Inexact -dqadd71113 add -1 +1e-6143 -> -0.9999999999999999999999999999999999 Rounded Inexact -dqadd71114 add -1e-1 +1e-6143 -> -0.09999999999999999999999999999999999 Rounded Inexact -dqadd71115 add -1e-2 +1e-6143 -> -0.009999999999999999999999999999999999 Rounded Inexact -dqadd71116 add -1e-3 +1e-6143 -> -0.0009999999999999999999999999999999999 Rounded Inexact -dqadd71117 add -1e-4 +1e-6143 -> -0.00009999999999999999999999999999999999 Rounded Inexact -dqadd71118 add -1e-5 +1e-6143 -> -0.000009999999999999999999999999999999999 Rounded Inexact -dqadd71119 add -1e-6 +1e-6143 -> -9.999999999999999999999999999999999E-7 Rounded Inexact - --- tests based on Gunnar Degnbol's edge case -rounding: half_even - -dqadd71300 add 1E34 -0.5 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71310 add 1E34 -0.51 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71311 add 1E34 -0.501 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71312 add 1E34 -0.5001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71313 add 1E34 -0.50001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71314 add 1E34 -0.500001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71315 add 1E34 -0.5000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71316 add 1E34 -0.50000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71317 add 1E34 -0.500000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71318 add 1E34 -0.5000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71319 add 1E34 -0.50000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71320 add 1E34 -0.500000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71321 add 1E34 -0.5000000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71322 add 1E34 -0.50000000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71323 add 1E34 -0.500000000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71324 add 1E34 -0.5000000000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71325 add 1E34 -0.5000000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71326 add 1E34 -0.500000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71327 add 1E34 -0.50000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71328 add 1E34 -0.5000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71329 add 1E34 -0.500000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71330 add 1E34 -0.50000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71331 add 1E34 -0.5000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71332 add 1E34 -0.500000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71333 add 1E34 -0.50000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71334 add 1E34 -0.5000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71335 add 1E34 -0.500000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71336 add 1E34 -0.50000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71337 add 1E34 -0.5000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71338 add 1E34 -0.500 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71339 add 1E34 -0.50 -> 1.000000000000000000000000000000000E+34 Inexact Rounded - -dqadd71340 add 1E34 -5000000.000010001 -> 9999999999999999999999999995000000 Inexact Rounded -dqadd71341 add 1E34 -5000000.000000001 -> 9999999999999999999999999995000000 Inexact Rounded - -dqadd71349 add 9999999999999999999999999999999999 0.4 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71350 add 9999999999999999999999999999999999 0.49 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71351 add 9999999999999999999999999999999999 0.499 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71352 add 9999999999999999999999999999999999 0.4999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71353 add 9999999999999999999999999999999999 0.49999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71354 add 9999999999999999999999999999999999 0.499999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71355 add 9999999999999999999999999999999999 0.4999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71356 add 9999999999999999999999999999999999 0.49999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71357 add 9999999999999999999999999999999999 0.499999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71358 add 9999999999999999999999999999999999 0.4999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71359 add 9999999999999999999999999999999999 0.49999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71360 add 9999999999999999999999999999999999 0.499999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71361 add 9999999999999999999999999999999999 0.4999999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71362 add 9999999999999999999999999999999999 0.49999999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71363 add 9999999999999999999999999999999999 0.499999999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71364 add 9999999999999999999999999999999999 0.4999999999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd71365 add 9999999999999999999999999999999999 0.5000000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71367 add 9999999999999999999999999999999999 0.500000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71368 add 9999999999999999999999999999999999 0.50000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71369 add 9999999999999999999999999999999999 0.5000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71370 add 9999999999999999999999999999999999 0.500000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71371 add 9999999999999999999999999999999999 0.50000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71372 add 9999999999999999999999999999999999 0.5000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71373 add 9999999999999999999999999999999999 0.500000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71374 add 9999999999999999999999999999999999 0.50000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71375 add 9999999999999999999999999999999999 0.5000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71376 add 9999999999999999999999999999999999 0.500000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71377 add 9999999999999999999999999999999999 0.50000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71378 add 9999999999999999999999999999999999 0.5000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71379 add 9999999999999999999999999999999999 0.500 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71380 add 9999999999999999999999999999999999 0.50 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71381 add 9999999999999999999999999999999999 0.5 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71382 add 9999999999999999999999999999999999 0.5000000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71383 add 9999999999999999999999999999999999 0.500000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71384 add 9999999999999999999999999999999999 0.50000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71385 add 9999999999999999999999999999999999 0.5000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71386 add 9999999999999999999999999999999999 0.500000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71387 add 9999999999999999999999999999999999 0.50000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71388 add 9999999999999999999999999999999999 0.5000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71389 add 9999999999999999999999999999999999 0.500000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71390 add 9999999999999999999999999999999999 0.50000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71391 add 9999999999999999999999999999999999 0.5000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71392 add 9999999999999999999999999999999999 0.500001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71393 add 9999999999999999999999999999999999 0.50001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71394 add 9999999999999999999999999999999999 0.5001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71395 add 9999999999999999999999999999999999 0.501 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd71396 add 9999999999999999999999999999999999 0.51 -> 1.000000000000000000000000000000000E+34 Inexact Rounded - --- More GD edge cases, where difference between the unadjusted --- exponents is larger than the maximum precision and one side is 0 -dqadd71420 add 0 1.123456789987654321123456789012345 -> 1.123456789987654321123456789012345 -dqadd71421 add 0 1.123456789987654321123456789012345E-1 -> 0.1123456789987654321123456789012345 -dqadd71422 add 0 1.123456789987654321123456789012345E-2 -> 0.01123456789987654321123456789012345 -dqadd71423 add 0 1.123456789987654321123456789012345E-3 -> 0.001123456789987654321123456789012345 -dqadd71424 add 0 1.123456789987654321123456789012345E-4 -> 0.0001123456789987654321123456789012345 -dqadd71425 add 0 1.123456789987654321123456789012345E-5 -> 0.00001123456789987654321123456789012345 -dqadd71426 add 0 1.123456789987654321123456789012345E-6 -> 0.000001123456789987654321123456789012345 -dqadd71427 add 0 1.123456789987654321123456789012345E-7 -> 1.123456789987654321123456789012345E-7 -dqadd71428 add 0 1.123456789987654321123456789012345E-8 -> 1.123456789987654321123456789012345E-8 -dqadd71429 add 0 1.123456789987654321123456789012345E-9 -> 1.123456789987654321123456789012345E-9 -dqadd71430 add 0 1.123456789987654321123456789012345E-10 -> 1.123456789987654321123456789012345E-10 -dqadd71431 add 0 1.123456789987654321123456789012345E-11 -> 1.123456789987654321123456789012345E-11 -dqadd71432 add 0 1.123456789987654321123456789012345E-12 -> 1.123456789987654321123456789012345E-12 -dqadd71433 add 0 1.123456789987654321123456789012345E-13 -> 1.123456789987654321123456789012345E-13 -dqadd71434 add 0 1.123456789987654321123456789012345E-14 -> 1.123456789987654321123456789012345E-14 -dqadd71435 add 0 1.123456789987654321123456789012345E-15 -> 1.123456789987654321123456789012345E-15 -dqadd71436 add 0 1.123456789987654321123456789012345E-16 -> 1.123456789987654321123456789012345E-16 -dqadd71437 add 0 1.123456789987654321123456789012345E-17 -> 1.123456789987654321123456789012345E-17 -dqadd71438 add 0 1.123456789987654321123456789012345E-18 -> 1.123456789987654321123456789012345E-18 -dqadd71439 add 0 1.123456789987654321123456789012345E-19 -> 1.123456789987654321123456789012345E-19 -dqadd71440 add 0 1.123456789987654321123456789012345E-20 -> 1.123456789987654321123456789012345E-20 -dqadd71441 add 0 1.123456789987654321123456789012345E-21 -> 1.123456789987654321123456789012345E-21 -dqadd71442 add 0 1.123456789987654321123456789012345E-22 -> 1.123456789987654321123456789012345E-22 -dqadd71443 add 0 1.123456789987654321123456789012345E-23 -> 1.123456789987654321123456789012345E-23 -dqadd71444 add 0 1.123456789987654321123456789012345E-24 -> 1.123456789987654321123456789012345E-24 -dqadd71445 add 0 1.123456789987654321123456789012345E-25 -> 1.123456789987654321123456789012345E-25 -dqadd71446 add 0 1.123456789987654321123456789012345E-26 -> 1.123456789987654321123456789012345E-26 -dqadd71447 add 0 1.123456789987654321123456789012345E-27 -> 1.123456789987654321123456789012345E-27 -dqadd71448 add 0 1.123456789987654321123456789012345E-28 -> 1.123456789987654321123456789012345E-28 -dqadd71449 add 0 1.123456789987654321123456789012345E-29 -> 1.123456789987654321123456789012345E-29 -dqadd71450 add 0 1.123456789987654321123456789012345E-30 -> 1.123456789987654321123456789012345E-30 -dqadd71451 add 0 1.123456789987654321123456789012345E-31 -> 1.123456789987654321123456789012345E-31 -dqadd71452 add 0 1.123456789987654321123456789012345E-32 -> 1.123456789987654321123456789012345E-32 -dqadd71453 add 0 1.123456789987654321123456789012345E-33 -> 1.123456789987654321123456789012345E-33 -dqadd71454 add 0 1.123456789987654321123456789012345E-34 -> 1.123456789987654321123456789012345E-34 -dqadd71455 add 0 1.123456789987654321123456789012345E-35 -> 1.123456789987654321123456789012345E-35 -dqadd71456 add 0 1.123456789987654321123456789012345E-36 -> 1.123456789987654321123456789012345E-36 - --- same, reversed 0 -dqadd71460 add 1.123456789987654321123456789012345 0 -> 1.123456789987654321123456789012345 -dqadd71461 add 1.123456789987654321123456789012345E-1 0 -> 0.1123456789987654321123456789012345 -dqadd71462 add 1.123456789987654321123456789012345E-2 0 -> 0.01123456789987654321123456789012345 -dqadd71463 add 1.123456789987654321123456789012345E-3 0 -> 0.001123456789987654321123456789012345 -dqadd71464 add 1.123456789987654321123456789012345E-4 0 -> 0.0001123456789987654321123456789012345 -dqadd71465 add 1.123456789987654321123456789012345E-5 0 -> 0.00001123456789987654321123456789012345 -dqadd71466 add 1.123456789987654321123456789012345E-6 0 -> 0.000001123456789987654321123456789012345 -dqadd71467 add 1.123456789987654321123456789012345E-7 0 -> 1.123456789987654321123456789012345E-7 -dqadd71468 add 1.123456789987654321123456789012345E-8 0 -> 1.123456789987654321123456789012345E-8 -dqadd71469 add 1.123456789987654321123456789012345E-9 0 -> 1.123456789987654321123456789012345E-9 -dqadd71470 add 1.123456789987654321123456789012345E-10 0 -> 1.123456789987654321123456789012345E-10 -dqadd71471 add 1.123456789987654321123456789012345E-11 0 -> 1.123456789987654321123456789012345E-11 -dqadd71472 add 1.123456789987654321123456789012345E-12 0 -> 1.123456789987654321123456789012345E-12 -dqadd71473 add 1.123456789987654321123456789012345E-13 0 -> 1.123456789987654321123456789012345E-13 -dqadd71474 add 1.123456789987654321123456789012345E-14 0 -> 1.123456789987654321123456789012345E-14 -dqadd71475 add 1.123456789987654321123456789012345E-15 0 -> 1.123456789987654321123456789012345E-15 -dqadd71476 add 1.123456789987654321123456789012345E-16 0 -> 1.123456789987654321123456789012345E-16 -dqadd71477 add 1.123456789987654321123456789012345E-17 0 -> 1.123456789987654321123456789012345E-17 -dqadd71478 add 1.123456789987654321123456789012345E-18 0 -> 1.123456789987654321123456789012345E-18 -dqadd71479 add 1.123456789987654321123456789012345E-19 0 -> 1.123456789987654321123456789012345E-19 -dqadd71480 add 1.123456789987654321123456789012345E-20 0 -> 1.123456789987654321123456789012345E-20 -dqadd71481 add 1.123456789987654321123456789012345E-21 0 -> 1.123456789987654321123456789012345E-21 -dqadd71482 add 1.123456789987654321123456789012345E-22 0 -> 1.123456789987654321123456789012345E-22 -dqadd71483 add 1.123456789987654321123456789012345E-23 0 -> 1.123456789987654321123456789012345E-23 -dqadd71484 add 1.123456789987654321123456789012345E-24 0 -> 1.123456789987654321123456789012345E-24 -dqadd71485 add 1.123456789987654321123456789012345E-25 0 -> 1.123456789987654321123456789012345E-25 -dqadd71486 add 1.123456789987654321123456789012345E-26 0 -> 1.123456789987654321123456789012345E-26 -dqadd71487 add 1.123456789987654321123456789012345E-27 0 -> 1.123456789987654321123456789012345E-27 -dqadd71488 add 1.123456789987654321123456789012345E-28 0 -> 1.123456789987654321123456789012345E-28 -dqadd71489 add 1.123456789987654321123456789012345E-29 0 -> 1.123456789987654321123456789012345E-29 -dqadd71490 add 1.123456789987654321123456789012345E-30 0 -> 1.123456789987654321123456789012345E-30 -dqadd71491 add 1.123456789987654321123456789012345E-31 0 -> 1.123456789987654321123456789012345E-31 -dqadd71492 add 1.123456789987654321123456789012345E-32 0 -> 1.123456789987654321123456789012345E-32 -dqadd71493 add 1.123456789987654321123456789012345E-33 0 -> 1.123456789987654321123456789012345E-33 -dqadd71494 add 1.123456789987654321123456789012345E-34 0 -> 1.123456789987654321123456789012345E-34 -dqadd71495 add 1.123456789987654321123456789012345E-35 0 -> 1.123456789987654321123456789012345E-35 -dqadd71496 add 1.123456789987654321123456789012345E-36 0 -> 1.123456789987654321123456789012345E-36 - --- same, Es on the 0 -dqadd71500 add 1.123456789987654321123456789012345 0E-0 -> 1.123456789987654321123456789012345 -dqadd71501 add 1.123456789987654321123456789012345 0E-1 -> 1.123456789987654321123456789012345 -dqadd71502 add 1.123456789987654321123456789012345 0E-2 -> 1.123456789987654321123456789012345 -dqadd71503 add 1.123456789987654321123456789012345 0E-3 -> 1.123456789987654321123456789012345 -dqadd71504 add 1.123456789987654321123456789012345 0E-4 -> 1.123456789987654321123456789012345 -dqadd71505 add 1.123456789987654321123456789012345 0E-5 -> 1.123456789987654321123456789012345 -dqadd71506 add 1.123456789987654321123456789012345 0E-6 -> 1.123456789987654321123456789012345 -dqadd71507 add 1.123456789987654321123456789012345 0E-7 -> 1.123456789987654321123456789012345 -dqadd71508 add 1.123456789987654321123456789012345 0E-8 -> 1.123456789987654321123456789012345 -dqadd71509 add 1.123456789987654321123456789012345 0E-9 -> 1.123456789987654321123456789012345 -dqadd71510 add 1.123456789987654321123456789012345 0E-10 -> 1.123456789987654321123456789012345 -dqadd71511 add 1.123456789987654321123456789012345 0E-11 -> 1.123456789987654321123456789012345 -dqadd71512 add 1.123456789987654321123456789012345 0E-12 -> 1.123456789987654321123456789012345 -dqadd71513 add 1.123456789987654321123456789012345 0E-13 -> 1.123456789987654321123456789012345 -dqadd71514 add 1.123456789987654321123456789012345 0E-14 -> 1.123456789987654321123456789012345 -dqadd71515 add 1.123456789987654321123456789012345 0E-15 -> 1.123456789987654321123456789012345 -dqadd71516 add 1.123456789987654321123456789012345 0E-16 -> 1.123456789987654321123456789012345 -dqadd71517 add 1.123456789987654321123456789012345 0E-17 -> 1.123456789987654321123456789012345 -dqadd71518 add 1.123456789987654321123456789012345 0E-18 -> 1.123456789987654321123456789012345 -dqadd71519 add 1.123456789987654321123456789012345 0E-19 -> 1.123456789987654321123456789012345 -dqadd71520 add 1.123456789987654321123456789012345 0E-20 -> 1.123456789987654321123456789012345 -dqadd71521 add 1.123456789987654321123456789012345 0E-21 -> 1.123456789987654321123456789012345 -dqadd71522 add 1.123456789987654321123456789012345 0E-22 -> 1.123456789987654321123456789012345 -dqadd71523 add 1.123456789987654321123456789012345 0E-23 -> 1.123456789987654321123456789012345 -dqadd71524 add 1.123456789987654321123456789012345 0E-24 -> 1.123456789987654321123456789012345 -dqadd71525 add 1.123456789987654321123456789012345 0E-25 -> 1.123456789987654321123456789012345 -dqadd71526 add 1.123456789987654321123456789012345 0E-26 -> 1.123456789987654321123456789012345 -dqadd71527 add 1.123456789987654321123456789012345 0E-27 -> 1.123456789987654321123456789012345 -dqadd71528 add 1.123456789987654321123456789012345 0E-28 -> 1.123456789987654321123456789012345 -dqadd71529 add 1.123456789987654321123456789012345 0E-29 -> 1.123456789987654321123456789012345 -dqadd71530 add 1.123456789987654321123456789012345 0E-30 -> 1.123456789987654321123456789012345 -dqadd71531 add 1.123456789987654321123456789012345 0E-31 -> 1.123456789987654321123456789012345 -dqadd71532 add 1.123456789987654321123456789012345 0E-32 -> 1.123456789987654321123456789012345 -dqadd71533 add 1.123456789987654321123456789012345 0E-33 -> 1.123456789987654321123456789012345 --- next four flag Rounded because the 0 extends the result -dqadd71534 add 1.123456789987654321123456789012345 0E-34 -> 1.123456789987654321123456789012345 Rounded -dqadd71535 add 1.123456789987654321123456789012345 0E-35 -> 1.123456789987654321123456789012345 Rounded -dqadd71536 add 1.123456789987654321123456789012345 0E-36 -> 1.123456789987654321123456789012345 Rounded -dqadd71537 add 1.123456789987654321123456789012345 0E-37 -> 1.123456789987654321123456789012345 Rounded - --- sum of two opposite-sign operands is exactly 0 and floor => -0 -rounding: half_up --- exact zeros from zeros -dqadd71600 add 0 0E-19 -> 0E-19 -dqadd71601 add -0 0E-19 -> 0E-19 -dqadd71602 add 0 -0E-19 -> 0E-19 -dqadd71603 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd71611 add -11 11 -> 0 -dqadd71612 add 11 -11 -> 0 - -rounding: half_down --- exact zeros from zeros -dqadd71620 add 0 0E-19 -> 0E-19 -dqadd71621 add -0 0E-19 -> 0E-19 -dqadd71622 add 0 -0E-19 -> 0E-19 -dqadd71623 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd71631 add -11 11 -> 0 -dqadd71632 add 11 -11 -> 0 - -rounding: half_even --- exact zeros from zeros -dqadd71640 add 0 0E-19 -> 0E-19 -dqadd71641 add -0 0E-19 -> 0E-19 -dqadd71642 add 0 -0E-19 -> 0E-19 -dqadd71643 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd71651 add -11 11 -> 0 -dqadd71652 add 11 -11 -> 0 - -rounding: up --- exact zeros from zeros -dqadd71660 add 0 0E-19 -> 0E-19 -dqadd71661 add -0 0E-19 -> 0E-19 -dqadd71662 add 0 -0E-19 -> 0E-19 -dqadd71663 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd71671 add -11 11 -> 0 -dqadd71672 add 11 -11 -> 0 - -rounding: down --- exact zeros from zeros -dqadd71680 add 0 0E-19 -> 0E-19 -dqadd71681 add -0 0E-19 -> 0E-19 -dqadd71682 add 0 -0E-19 -> 0E-19 -dqadd71683 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd71691 add -11 11 -> 0 -dqadd71692 add 11 -11 -> 0 - -rounding: ceiling --- exact zeros from zeros -dqadd71700 add 0 0E-19 -> 0E-19 -dqadd71701 add -0 0E-19 -> 0E-19 -dqadd71702 add 0 -0E-19 -> 0E-19 -dqadd71703 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd71711 add -11 11 -> 0 -dqadd71712 add 11 -11 -> 0 - --- and the extra-special ugly case; unusual minuses marked by -- * -rounding: floor --- exact zeros from zeros -dqadd71720 add 0 0E-19 -> 0E-19 -dqadd71721 add -0 0E-19 -> -0E-19 -- * -dqadd71722 add 0 -0E-19 -> -0E-19 -- * -dqadd71723 add -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd71731 add -11 11 -> -0 -- * -dqadd71732 add 11 -11 -> -0 -- * - --- Examples from SQL proposal (Krishna Kulkarni) -dqadd71741 add 130E-2 120E-2 -> 2.50 -dqadd71742 add 130E-2 12E-1 -> 2.50 -dqadd71743 add 130E-2 1E0 -> 2.30 -dqadd71744 add 1E2 1E4 -> 1.01E+4 -dqadd71745 add 130E-2 -120E-2 -> 0.10 -dqadd71746 add 130E-2 -12E-1 -> 0.10 -dqadd71747 add 130E-2 -1E0 -> 0.30 -dqadd71748 add 1E2 -1E4 -> -9.9E+3 - --- Gappy coefficients; check residue handling even with full coefficient gap -rounding: half_even - -dqadd75001 add 1239876543211234567894567890123456 1 -> 1239876543211234567894567890123457 -dqadd75002 add 1239876543211234567894567890123456 0.6 -> 1239876543211234567894567890123457 Inexact Rounded -dqadd75003 add 1239876543211234567894567890123456 0.06 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75004 add 1239876543211234567894567890123456 6E-3 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75005 add 1239876543211234567894567890123456 6E-4 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75006 add 1239876543211234567894567890123456 6E-5 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75007 add 1239876543211234567894567890123456 6E-6 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75008 add 1239876543211234567894567890123456 6E-7 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75009 add 1239876543211234567894567890123456 6E-8 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75010 add 1239876543211234567894567890123456 6E-9 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75011 add 1239876543211234567894567890123456 6E-10 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75012 add 1239876543211234567894567890123456 6E-11 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75013 add 1239876543211234567894567890123456 6E-12 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75014 add 1239876543211234567894567890123456 6E-13 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75015 add 1239876543211234567894567890123456 6E-14 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75016 add 1239876543211234567894567890123456 6E-15 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75017 add 1239876543211234567894567890123456 6E-16 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75018 add 1239876543211234567894567890123456 6E-17 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75019 add 1239876543211234567894567890123456 6E-18 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75020 add 1239876543211234567894567890123456 6E-19 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd75021 add 1239876543211234567894567890123456 6E-20 -> 1239876543211234567894567890123456 Inexact Rounded - --- widening second argument at gap -dqadd75030 add 12398765432112345678945678 1 -> 12398765432112345678945679 -dqadd75031 add 12398765432112345678945678 0.1 -> 12398765432112345678945678.1 -dqadd75032 add 12398765432112345678945678 0.12 -> 12398765432112345678945678.12 -dqadd75033 add 12398765432112345678945678 0.123 -> 12398765432112345678945678.123 -dqadd75034 add 12398765432112345678945678 0.1234 -> 12398765432112345678945678.1234 -dqadd75035 add 12398765432112345678945678 0.12345 -> 12398765432112345678945678.12345 -dqadd75036 add 12398765432112345678945678 0.123456 -> 12398765432112345678945678.123456 -dqadd75037 add 12398765432112345678945678 0.1234567 -> 12398765432112345678945678.1234567 -dqadd75038 add 12398765432112345678945678 0.12345678 -> 12398765432112345678945678.12345678 -dqadd75039 add 12398765432112345678945678 0.123456789 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd75040 add 12398765432112345678945678 0.123456785 -> 12398765432112345678945678.12345678 Inexact Rounded -dqadd75041 add 12398765432112345678945678 0.1234567850 -> 12398765432112345678945678.12345678 Inexact Rounded -dqadd75042 add 12398765432112345678945678 0.1234567851 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd75043 add 12398765432112345678945678 0.12345678501 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd75044 add 12398765432112345678945678 0.123456785001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd75045 add 12398765432112345678945678 0.1234567850001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd75046 add 12398765432112345678945678 0.12345678500001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd75047 add 12398765432112345678945678 0.123456785000001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd75048 add 12398765432112345678945678 0.1234567850000001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd75049 add 12398765432112345678945678 0.1234567850000000 -> 12398765432112345678945678.12345678 Inexact Rounded --- 90123456 -rounding: half_even -dqadd75050 add 12398765432112345678945678 0.0234567750000000 -> 12398765432112345678945678.02345678 Inexact Rounded -dqadd75051 add 12398765432112345678945678 0.0034567750000000 -> 12398765432112345678945678.00345678 Inexact Rounded -dqadd75052 add 12398765432112345678945678 0.0004567750000000 -> 12398765432112345678945678.00045678 Inexact Rounded -dqadd75053 add 12398765432112345678945678 0.0000567750000000 -> 12398765432112345678945678.00005678 Inexact Rounded -dqadd75054 add 12398765432112345678945678 0.0000067750000000 -> 12398765432112345678945678.00000678 Inexact Rounded -dqadd75055 add 12398765432112345678945678 0.0000007750000000 -> 12398765432112345678945678.00000078 Inexact Rounded -dqadd75056 add 12398765432112345678945678 0.0000000750000000 -> 12398765432112345678945678.00000008 Inexact Rounded -dqadd75057 add 12398765432112345678945678 0.0000000050000000 -> 12398765432112345678945678.00000000 Inexact Rounded -dqadd75060 add 12398765432112345678945678 0.0234567750000001 -> 12398765432112345678945678.02345678 Inexact Rounded -dqadd75061 add 12398765432112345678945678 0.0034567750000001 -> 12398765432112345678945678.00345678 Inexact Rounded -dqadd75062 add 12398765432112345678945678 0.0004567750000001 -> 12398765432112345678945678.00045678 Inexact Rounded -dqadd75063 add 12398765432112345678945678 0.0000567750000001 -> 12398765432112345678945678.00005678 Inexact Rounded -dqadd75064 add 12398765432112345678945678 0.0000067750000001 -> 12398765432112345678945678.00000678 Inexact Rounded -dqadd75065 add 12398765432112345678945678 0.0000007750000001 -> 12398765432112345678945678.00000078 Inexact Rounded -dqadd75066 add 12398765432112345678945678 0.0000000750000001 -> 12398765432112345678945678.00000008 Inexact Rounded -dqadd75067 add 12398765432112345678945678 0.0000000050000001 -> 12398765432112345678945678.00000001 Inexact Rounded --- far-out residues (full coefficient gap is 16+15 digits) -rounding: up -dqadd75070 add 12398765432112345678945678 1E-8 -> 12398765432112345678945678.00000001 -dqadd75071 add 12398765432112345678945678 1E-9 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75072 add 12398765432112345678945678 1E-10 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75073 add 12398765432112345678945678 1E-11 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75074 add 12398765432112345678945678 1E-12 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75075 add 12398765432112345678945678 1E-13 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75076 add 12398765432112345678945678 1E-14 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75077 add 12398765432112345678945678 1E-15 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75078 add 12398765432112345678945678 1E-16 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75079 add 12398765432112345678945678 1E-17 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75080 add 12398765432112345678945678 1E-18 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75081 add 12398765432112345678945678 1E-19 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75082 add 12398765432112345678945678 1E-20 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75083 add 12398765432112345678945678 1E-25 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75084 add 12398765432112345678945678 1E-30 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75085 add 12398765432112345678945678 1E-31 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75086 add 12398765432112345678945678 1E-32 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75087 add 12398765432112345678945678 1E-33 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75088 add 12398765432112345678945678 1E-34 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd75089 add 12398765432112345678945678 1E-35 -> 12398765432112345678945678.00000001 Inexact Rounded - --- Null tests -dqadd9990 add 10 # -> NaN Invalid_operation -dqadd9991 add # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqAdd.decTest -- decQuad addition -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests are for decQuads only; all arguments are +-- representable in a decQuad +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- [first group are 'quick confidence check'] +dqadd001 add 1 1 -> 2 +dqadd002 add 2 3 -> 5 +dqadd003 add '5.75' '3.3' -> 9.05 +dqadd004 add '5' '-3' -> 2 +dqadd005 add '-5' '-3' -> -8 +dqadd006 add '-7' '2.5' -> -4.5 +dqadd007 add '0.7' '0.3' -> 1.0 +dqadd008 add '1.25' '1.25' -> 2.50 +dqadd009 add '1.23456789' '1.00000000' -> '2.23456789' +dqadd010 add '1.23456789' '1.00000011' -> '2.23456800' + +-- 1234567890123456 1234567890123456 +dqadd011 add '0.4444444444444444444444444444444446' '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Inexact Rounded +dqadd012 add '0.4444444444444444444444444444444445' '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Rounded +dqadd013 add '0.4444444444444444444444444444444444' '0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999' +dqadd014 add '4444444444444444444444444444444444' '0.49' -> '4444444444444444444444444444444444' Inexact Rounded +dqadd015 add '4444444444444444444444444444444444' '0.499' -> '4444444444444444444444444444444444' Inexact Rounded +dqadd016 add '4444444444444444444444444444444444' '0.4999' -> '4444444444444444444444444444444444' Inexact Rounded +dqadd017 add '4444444444444444444444444444444444' '0.5000' -> '4444444444444444444444444444444444' Inexact Rounded +dqadd018 add '4444444444444444444444444444444444' '0.5001' -> '4444444444444444444444444444444445' Inexact Rounded +dqadd019 add '4444444444444444444444444444444444' '0.501' -> '4444444444444444444444444444444445' Inexact Rounded +dqadd020 add '4444444444444444444444444444444444' '0.51' -> '4444444444444444444444444444444445' Inexact Rounded + +dqadd021 add 0 1 -> 1 +dqadd022 add 1 1 -> 2 +dqadd023 add 2 1 -> 3 +dqadd024 add 3 1 -> 4 +dqadd025 add 4 1 -> 5 +dqadd026 add 5 1 -> 6 +dqadd027 add 6 1 -> 7 +dqadd028 add 7 1 -> 8 +dqadd029 add 8 1 -> 9 +dqadd030 add 9 1 -> 10 + +-- some carrying effects +dqadd031 add '0.9998' '0.0000' -> '0.9998' +dqadd032 add '0.9998' '0.0001' -> '0.9999' +dqadd033 add '0.9998' '0.0002' -> '1.0000' +dqadd034 add '0.9998' '0.0003' -> '1.0001' + +dqadd035 add '70' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd036 add '700' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd037 add '7000' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd038 add '70000' '10000e+34' -> '1.000000000000000000000000000000001E+38' Inexact Rounded +dqadd039 add '700000' '10000e+34' -> '1.000000000000000000000000000000007E+38' Rounded + +-- symmetry: +dqadd040 add '10000e+34' '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd041 add '10000e+34' '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd042 add '10000e+34' '7000' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd044 add '10000e+34' '70000' -> '1.000000000000000000000000000000001E+38' Inexact Rounded +dqadd045 add '10000e+34' '700000' -> '1.000000000000000000000000000000007E+38' Rounded + +-- same, without rounding +dqadd046 add '10000e+9' '7' -> '10000000000007' +dqadd047 add '10000e+9' '70' -> '10000000000070' +dqadd048 add '10000e+9' '700' -> '10000000000700' +dqadd049 add '10000e+9' '7000' -> '10000000007000' +dqadd050 add '10000e+9' '70000' -> '10000000070000' +dqadd051 add '10000e+9' '700000' -> '10000000700000' +dqadd052 add '10000e+9' '7000000' -> '10000007000000' + +-- examples from decarith +dqadd053 add '12' '7.00' -> '19.00' +dqadd054 add '1.3' '-1.07' -> '0.23' +dqadd055 add '1.3' '-1.30' -> '0.00' +dqadd056 add '1.3' '-2.07' -> '-0.77' +dqadd057 add '1E+2' '1E+4' -> '1.01E+4' + +-- leading zero preservation +dqadd061 add 1 '0.0001' -> '1.0001' +dqadd062 add 1 '0.00001' -> '1.00001' +dqadd063 add 1 '0.000001' -> '1.000001' +dqadd064 add 1 '0.0000001' -> '1.0000001' +dqadd065 add 1 '0.00000001' -> '1.00000001' + +-- some funny zeros [in case of bad signum] +dqadd070 add 1 0 -> 1 +dqadd071 add 1 0. -> 1 +dqadd072 add 1 .0 -> 1.0 +dqadd073 add 1 0.0 -> 1.0 +dqadd074 add 1 0.00 -> 1.00 +dqadd075 add 0 1 -> 1 +dqadd076 add 0. 1 -> 1 +dqadd077 add .0 1 -> 1.0 +dqadd078 add 0.0 1 -> 1.0 +dqadd079 add 0.00 1 -> 1.00 + +-- some carries +dqadd080 add 999999998 1 -> 999999999 +dqadd081 add 999999999 1 -> 1000000000 +dqadd082 add 99999999 1 -> 100000000 +dqadd083 add 9999999 1 -> 10000000 +dqadd084 add 999999 1 -> 1000000 +dqadd085 add 99999 1 -> 100000 +dqadd086 add 9999 1 -> 10000 +dqadd087 add 999 1 -> 1000 +dqadd088 add 99 1 -> 100 +dqadd089 add 9 1 -> 10 + + +-- more LHS swaps +dqadd090 add '-56267E-10' 0 -> '-0.0000056267' +dqadd091 add '-56267E-6' 0 -> '-0.056267' +dqadd092 add '-56267E-5' 0 -> '-0.56267' +dqadd093 add '-56267E-4' 0 -> '-5.6267' +dqadd094 add '-56267E-3' 0 -> '-56.267' +dqadd095 add '-56267E-2' 0 -> '-562.67' +dqadd096 add '-56267E-1' 0 -> '-5626.7' +dqadd097 add '-56267E-0' 0 -> '-56267' +dqadd098 add '-5E-10' 0 -> '-5E-10' +dqadd099 add '-5E-7' 0 -> '-5E-7' +dqadd100 add '-5E-6' 0 -> '-0.000005' +dqadd101 add '-5E-5' 0 -> '-0.00005' +dqadd102 add '-5E-4' 0 -> '-0.0005' +dqadd103 add '-5E-1' 0 -> '-0.5' +dqadd104 add '-5E0' 0 -> '-5' +dqadd105 add '-5E1' 0 -> '-50' +dqadd106 add '-5E5' 0 -> '-500000' +dqadd107 add '-5E33' 0 -> '-5000000000000000000000000000000000' +dqadd108 add '-5E34' 0 -> '-5.000000000000000000000000000000000E+34' Rounded +dqadd109 add '-5E35' 0 -> '-5.000000000000000000000000000000000E+35' Rounded +dqadd110 add '-5E36' 0 -> '-5.000000000000000000000000000000000E+36' Rounded +dqadd111 add '-5E100' 0 -> '-5.000000000000000000000000000000000E+100' Rounded + +-- more RHS swaps +dqadd113 add 0 '-56267E-10' -> '-0.0000056267' +dqadd114 add 0 '-56267E-6' -> '-0.056267' +dqadd116 add 0 '-56267E-5' -> '-0.56267' +dqadd117 add 0 '-56267E-4' -> '-5.6267' +dqadd119 add 0 '-56267E-3' -> '-56.267' +dqadd120 add 0 '-56267E-2' -> '-562.67' +dqadd121 add 0 '-56267E-1' -> '-5626.7' +dqadd122 add 0 '-56267E-0' -> '-56267' +dqadd123 add 0 '-5E-10' -> '-5E-10' +dqadd124 add 0 '-5E-7' -> '-5E-7' +dqadd125 add 0 '-5E-6' -> '-0.000005' +dqadd126 add 0 '-5E-5' -> '-0.00005' +dqadd127 add 0 '-5E-4' -> '-0.0005' +dqadd128 add 0 '-5E-1' -> '-0.5' +dqadd129 add 0 '-5E0' -> '-5' +dqadd130 add 0 '-5E1' -> '-50' +dqadd131 add 0 '-5E5' -> '-500000' +dqadd132 add 0 '-5E33' -> '-5000000000000000000000000000000000' +dqadd133 add 0 '-5E34' -> '-5.000000000000000000000000000000000E+34' Rounded +dqadd134 add 0 '-5E35' -> '-5.000000000000000000000000000000000E+35' Rounded +dqadd135 add 0 '-5E36' -> '-5.000000000000000000000000000000000E+36' Rounded +dqadd136 add 0 '-5E100' -> '-5.000000000000000000000000000000000E+100' Rounded + +-- related +dqadd137 add 1 '0E-39' -> '1.000000000000000000000000000000000' Rounded +dqadd138 add -1 '0E-39' -> '-1.000000000000000000000000000000000' Rounded +dqadd139 add '0E-39' 1 -> '1.000000000000000000000000000000000' Rounded +dqadd140 add '0E-39' -1 -> '-1.000000000000000000000000000000000' Rounded +dqadd141 add 1E+29 0.0000 -> '100000000000000000000000000000.0000' +dqadd142 add 1E+29 0.00000 -> '100000000000000000000000000000.0000' Rounded +dqadd143 add 0.000 1E+30 -> '1000000000000000000000000000000.000' +dqadd144 add 0.0000 1E+30 -> '1000000000000000000000000000000.000' Rounded + +-- [some of the next group are really constructor tests] +dqadd146 add '00.0' 0 -> '0.0' +dqadd147 add '0.00' 0 -> '0.00' +dqadd148 add 0 '0.00' -> '0.00' +dqadd149 add 0 '00.0' -> '0.0' +dqadd150 add '00.0' '0.00' -> '0.00' +dqadd151 add '0.00' '00.0' -> '0.00' +dqadd152 add '3' '.3' -> '3.3' +dqadd153 add '3.' '.3' -> '3.3' +dqadd154 add '3.0' '.3' -> '3.3' +dqadd155 add '3.00' '.3' -> '3.30' +dqadd156 add '3' '3' -> '6' +dqadd157 add '3' '+3' -> '6' +dqadd158 add '3' '-3' -> '0' +dqadd159 add '0.3' '-0.3' -> '0.0' +dqadd160 add '0.03' '-0.03' -> '0.00' + +-- try borderline precision, with carries, etc. +dqadd161 add '1E+12' '-1' -> '999999999999' +dqadd162 add '1E+12' '1.11' -> '1000000000001.11' +dqadd163 add '1.11' '1E+12' -> '1000000000001.11' +dqadd164 add '-1' '1E+12' -> '999999999999' +dqadd165 add '7E+12' '-1' -> '6999999999999' +dqadd166 add '7E+12' '1.11' -> '7000000000001.11' +dqadd167 add '1.11' '7E+12' -> '7000000000001.11' +dqadd168 add '-1' '7E+12' -> '6999999999999' + +rounding: half_up +dqadd170 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555567' -> '5.000000000000000000000000000000001' Inexact Rounded +dqadd171 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555566' -> '5.000000000000000000000000000000001' Inexact Rounded +dqadd172 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555565' -> '5.000000000000000000000000000000001' Inexact Rounded +dqadd173 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555564' -> '5.000000000000000000000000000000000' Inexact Rounded +dqadd174 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555553' -> '4.999999999999999999999999999999999' Inexact Rounded +dqadd175 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555552' -> '4.999999999999999999999999999999999' Inexact Rounded +dqadd176 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555551' -> '4.999999999999999999999999999999999' Inexact Rounded +dqadd177 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555550' -> '4.999999999999999999999999999999999' Rounded +dqadd178 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555545' -> '4.999999999999999999999999999999999' Inexact Rounded +dqadd179 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555544' -> '4.999999999999999999999999999999998' Inexact Rounded +dqadd180 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555543' -> '4.999999999999999999999999999999998' Inexact Rounded +dqadd181 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555542' -> '4.999999999999999999999999999999998' Inexact Rounded +dqadd182 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555541' -> '4.999999999999999999999999999999998' Inexact Rounded +dqadd183 add '4.444444444444444444444444444444444' '0.5555555555555555555555555555555540' -> '4.999999999999999999999999999999998' Rounded + +-- and some more, including residue effects and different roundings +rounding: half_up +dqadd200 add '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' +dqadd201 add '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd202 add '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd203 add '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd204 add '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd205 add '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd206 add '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd207 add '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd208 add '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd209 add '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd210 add '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd211 add '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd212 add '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd213 add '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd214 add '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd215 add '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd216 add '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' +dqadd217 add '1231234567890123456784560123456789' 1.000000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd218 add '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd219 add '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded + +rounding: half_even +dqadd220 add '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' +dqadd221 add '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd222 add '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd223 add '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd224 add '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd225 add '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd226 add '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd227 add '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd228 add '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd229 add '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd230 add '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd231 add '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd232 add '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd233 add '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd234 add '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd235 add '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd236 add '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' +dqadd237 add '1231234567890123456784560123456789' 1.00000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd238 add '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd239 add '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded +-- critical few with even bottom digit... +dqadd240 add '1231234567890123456784560123456788' 0.499999999 -> '1231234567890123456784560123456788' Inexact Rounded +dqadd241 add '1231234567890123456784560123456788' 0.5 -> '1231234567890123456784560123456788' Inexact Rounded +dqadd242 add '1231234567890123456784560123456788' 0.500000001 -> '1231234567890123456784560123456789' Inexact Rounded + +rounding: down +dqadd250 add '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' +dqadd251 add '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd252 add '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd253 add '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd254 add '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd255 add '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd256 add '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd257 add '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd258 add '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd259 add '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd260 add '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd261 add '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd262 add '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd263 add '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd264 add '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd265 add '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd266 add '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' +dqadd267 add '1231234567890123456784560123456789' 1.00000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd268 add '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd269 add '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded + +-- 1 in last place tests +rounding: half_up +dqadd301 add -1 1 -> 0 +dqadd302 add 0 1 -> 1 +dqadd303 add 1 1 -> 2 +dqadd304 add 12 1 -> 13 +dqadd305 add 98 1 -> 99 +dqadd306 add 99 1 -> 100 +dqadd307 add 100 1 -> 101 +dqadd308 add 101 1 -> 102 +dqadd309 add -1 -1 -> -2 +dqadd310 add 0 -1 -> -1 +dqadd311 add 1 -1 -> 0 +dqadd312 add 12 -1 -> 11 +dqadd313 add 98 -1 -> 97 +dqadd314 add 99 -1 -> 98 +dqadd315 add 100 -1 -> 99 +dqadd316 add 101 -1 -> 100 + +dqadd321 add -0.01 0.01 -> 0.00 +dqadd322 add 0.00 0.01 -> 0.01 +dqadd323 add 0.01 0.01 -> 0.02 +dqadd324 add 0.12 0.01 -> 0.13 +dqadd325 add 0.98 0.01 -> 0.99 +dqadd326 add 0.99 0.01 -> 1.00 +dqadd327 add 1.00 0.01 -> 1.01 +dqadd328 add 1.01 0.01 -> 1.02 +dqadd329 add -0.01 -0.01 -> -0.02 +dqadd330 add 0.00 -0.01 -> -0.01 +dqadd331 add 0.01 -0.01 -> 0.00 +dqadd332 add 0.12 -0.01 -> 0.11 +dqadd333 add 0.98 -0.01 -> 0.97 +dqadd334 add 0.99 -0.01 -> 0.98 +dqadd335 add 1.00 -0.01 -> 0.99 +dqadd336 add 1.01 -0.01 -> 1.00 + +-- some more cases where adding 0 affects the coefficient +dqadd340 add 1E+3 0 -> 1000 +dqadd341 add 1E+33 0 -> 1000000000000000000000000000000000 +dqadd342 add 1E+34 0 -> 1.000000000000000000000000000000000E+34 Rounded +dqadd343 add 1E+35 0 -> 1.000000000000000000000000000000000E+35 Rounded +-- which simply follow from these cases ... +dqadd344 add 1E+3 1 -> 1001 +dqadd345 add 1E+33 1 -> 1000000000000000000000000000000001 +dqadd346 add 1E+34 1 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd347 add 1E+35 1 -> 1.000000000000000000000000000000000E+35 Inexact Rounded +dqadd348 add 1E+3 7 -> 1007 +dqadd349 add 1E+33 7 -> 1000000000000000000000000000000007 +dqadd350 add 1E+34 7 -> 1.000000000000000000000000000000001E+34 Inexact Rounded +dqadd351 add 1E+35 7 -> 1.000000000000000000000000000000000E+35 Inexact Rounded + +-- tryzeros cases +rounding: half_up +dqadd360 add 0E+50 10000E+1 -> 1.0000E+5 +dqadd361 add 0E-50 10000E+1 -> 100000.0000000000000000000000000000 Rounded +dqadd362 add 10000E+1 0E-50 -> 100000.0000000000000000000000000000 Rounded +dqadd363 add 10000E+1 10000E-50 -> 100000.0000000000000000000000000000 Rounded Inexact +dqadd364 add 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0E+6111 +-- 1 234567890123456789012345678901234 + +-- a curiosity from JSR 13 testing +rounding: half_down +dqadd370 add 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 +dqadd371 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact +rounding: half_up +dqadd372 add 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 +dqadd373 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact +rounding: half_even +dqadd374 add 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 +dqadd375 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact + +-- ulp replacement tests +dqadd400 add 1 77e-32 -> 1.00000000000000000000000000000077 +dqadd401 add 1 77e-33 -> 1.000000000000000000000000000000077 +dqadd402 add 1 77e-34 -> 1.000000000000000000000000000000008 Inexact Rounded +dqadd403 add 1 77e-35 -> 1.000000000000000000000000000000001 Inexact Rounded +dqadd404 add 1 77e-36 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd405 add 1 77e-37 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd406 add 1 77e-299 -> 1.000000000000000000000000000000000 Inexact Rounded + +dqadd410 add 10 77e-32 -> 10.00000000000000000000000000000077 +dqadd411 add 10 77e-33 -> 10.00000000000000000000000000000008 Inexact Rounded +dqadd412 add 10 77e-34 -> 10.00000000000000000000000000000001 Inexact Rounded +dqadd413 add 10 77e-35 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd414 add 10 77e-36 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd415 add 10 77e-37 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd416 add 10 77e-299 -> 10.00000000000000000000000000000000 Inexact Rounded + +dqadd420 add 77e-32 1 -> 1.00000000000000000000000000000077 +dqadd421 add 77e-33 1 -> 1.000000000000000000000000000000077 +dqadd422 add 77e-34 1 -> 1.000000000000000000000000000000008 Inexact Rounded +dqadd423 add 77e-35 1 -> 1.000000000000000000000000000000001 Inexact Rounded +dqadd424 add 77e-36 1 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd425 add 77e-37 1 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd426 add 77e-299 1 -> 1.000000000000000000000000000000000 Inexact Rounded + +dqadd430 add 77e-32 10 -> 10.00000000000000000000000000000077 +dqadd431 add 77e-33 10 -> 10.00000000000000000000000000000008 Inexact Rounded +dqadd432 add 77e-34 10 -> 10.00000000000000000000000000000001 Inexact Rounded +dqadd433 add 77e-35 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd434 add 77e-36 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd435 add 77e-37 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd436 add 77e-299 10 -> 10.00000000000000000000000000000000 Inexact Rounded + +-- fastpath boundaries +-- 1234567890123456789012345678901234 +dqadd501 add '4444444444444444444444444444444444' '5555555555555555555555555555555555' -> '9999999999999999999999999999999999' +dqadd502 add '4444444444444444444444444444444444' '4555555555555555555555555555555555' -> '8999999999999999999999999999999999' +dqadd503 add '4444444444444444444444444444444444' '3555555555555555555055555555555555' -> '7999999999999999999499999999999999' +dqadd504 add '4444444444444444444444444444444444' '3955555555555555555555555555555555' -> '8399999999999999999999999999999999' +dqadd505 add '4444444444444444444444444444444444' '4955555555555555555555555555555555' -> '9399999999999999999999999999999999' +dqadd506 add '4444444444444444444444444444444444' '5955555555555555555555555555555555' -> 1.040000000000000000000000000000000E+34 Inexact Rounded +dqadd511 add '344444444444444444444444444444444' '555555555555555555555555555555555' -> '899999999999999999999999999999999' +dqadd512 add '34444444444444444444444444444444' '55555555555555555555555555555555' -> '89999999999999999999999999999999' +dqadd513 add '3444444444444444444444444444444' '5555555555555555555555555555555' -> '8999999999999999999999999999999' +dqadd514 add '344444444444444444444444444444' '555555555555555555555555555555' -> '899999999999999999999999999999' +dqadd515 add '34444444444444444444444444444' '55555555555555555555555555555' -> '89999999999999999999999999999' +dqadd516 add '3444444444444444444444444444' '5555555555555555555555555555' -> '8999999999999999999999999999' +dqadd517 add '344444444444444444444444444' '555555555555555555555555555' -> '899999999999999999999999999' +dqadd518 add '34444444444444444444444444' '55555555555555555555555555' -> '89999999999999999999999999' +dqadd519 add '3444444444444444444444444' '5555555555555555555555555' -> '8999999999999999999999999' +dqadd520 add '344444444444444444444444' '555555555555555555555555' -> '899999999999999999999999' +dqadd521 add '34444444444444444444444' '55555555555555555555555' -> '89999999999999999999999' +dqadd522 add '3444444444444444444444' '5555555555555555555555' -> '8999999999999999999999' +dqadd523 add '4444444444444444444444' '3333333333333333333333' -> '7777777777777777777777' +dqadd524 add '344444444444444444444' '555555555555555555555' -> '899999999999999999999' +dqadd525 add '34444444444444444444' '55555555555555555555' -> '89999999999999999999' +dqadd526 add '3444444444444444444' '5555555555555555555' -> '8999999999999999999' +dqadd527 add '344444444444444444' '555555555555555555' -> '899999999999999999' +dqadd528 add '34444444444444444' '55555555555555555' -> '89999999999999999' +dqadd529 add '3444444444444444' '5555555555555555' -> '8999999999999999' +dqadd530 add '344444444444444' '555555555555555' -> '899999999999999' +dqadd531 add '34444444444444' '55555555555555' -> '89999999999999' +dqadd532 add '3444444444444' '5555555555555' -> '8999999999999' +dqadd533 add '344444444444' '555555555555' -> '899999999999' +dqadd534 add '34444444444' '55555555555' -> '89999999999' +dqadd535 add '3444444444' '5555555555' -> '8999999999' +dqadd536 add '344444444' '555555555' -> '899999999' +dqadd537 add '34444444' '55555555' -> '89999999' +dqadd538 add '3444444' '5555555' -> '8999999' +dqadd539 add '344444' '555555' -> '899999' +dqadd540 add '34444' '55555' -> '89999' +dqadd541 add '3444' '5555' -> '8999' +dqadd542 add '344' '555' -> '899' +dqadd543 add '34' '55' -> '89' +dqadd544 add '3' '5' -> '8' + +dqadd545 add '3000004000000000000000000000000000' '3000000000000040000000000000000000' -> '6000004000000040000000000000000000' +dqadd546 add '3000000400000000000000000000000000' '4000000000000400000000000000000000' -> '7000000400000400000000000000000000' +dqadd547 add '3000000040000000000000000000000000' '5000000000004000000000000000000000' -> '8000000040004000000000000000000000' +dqadd548 add '4000000004000000000000000000000000' '3000000000040000000000000000000000' -> '7000000004040000000000000000000000' +dqadd549 add '4000000000400000000000000000000000' '4000000000400000000000000000000000' -> '8000000000800000000000000000000000' +dqadd550 add '4000000000040000000000000000000000' '5000000004000000000000000000000000' -> '9000000004040000000000000000000000' +dqadd551 add '5000000000004000000000000000000000' '3000000040000000000000000000000000' -> '8000000040004000000000000000000000' +dqadd552 add '5000000000000400000000000000000000' '4000000400000000000000000000000000' -> '9000000400000400000000000000000000' +dqadd553 add '5000000000000040000000000000000000' '5000004000000000000000000000000000' -> 1.000000400000004000000000000000000E+34 Rounded +-- check propagation +dqadd554 add '8999999999999999999999999999999999' '0000000000000000000000000000000001' -> 9000000000000000000000000000000000 +dqadd555 add '0000000000000000000000000000000001' '8999999999999999999999999999999999' -> 9000000000000000000000000000000000 +dqadd556 add '4444444444444444444444444444444444' '4555555555555555555555555555555556' -> 9000000000000000000000000000000000 +dqadd557 add '4555555555555555555555555555555556' '4444444444444444444444444444444444' -> 9000000000000000000000000000000000 + +-- negative ulps +dqadd6440 add 1 -77e-32 -> 0.99999999999999999999999999999923 +dqadd6441 add 1 -77e-33 -> 0.999999999999999999999999999999923 +dqadd6442 add 1 -77e-34 -> 0.9999999999999999999999999999999923 +dqadd6443 add 1 -77e-35 -> 0.9999999999999999999999999999999992 Inexact Rounded +dqadd6444 add 1 -77e-36 -> 0.9999999999999999999999999999999999 Inexact Rounded +dqadd6445 add 1 -77e-37 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd6446 add 1 -77e-99 -> 1.000000000000000000000000000000000 Inexact Rounded + +dqadd6450 add 10 -77e-32 -> 9.99999999999999999999999999999923 +dqadd6451 add 10 -77e-33 -> 9.999999999999999999999999999999923 +dqadd6452 add 10 -77e-34 -> 9.999999999999999999999999999999992 Inexact Rounded +dqadd6453 add 10 -77e-35 -> 9.999999999999999999999999999999999 Inexact Rounded +dqadd6454 add 10 -77e-36 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd6455 add 10 -77e-37 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd6456 add 10 -77e-99 -> 10.00000000000000000000000000000000 Inexact Rounded + +dqadd6460 add -77e-32 1 -> 0.99999999999999999999999999999923 +dqadd6461 add -77e-33 1 -> 0.999999999999999999999999999999923 +dqadd6462 add -77e-34 1 -> 0.9999999999999999999999999999999923 +dqadd6463 add -77e-35 1 -> 0.9999999999999999999999999999999992 Inexact Rounded +dqadd6464 add -77e-36 1 -> 0.9999999999999999999999999999999999 Inexact Rounded +dqadd6465 add -77e-37 1 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd6466 add -77e-99 1 -> 1.000000000000000000000000000000000 Inexact Rounded + +dqadd6470 add -77e-32 10 -> 9.99999999999999999999999999999923 +dqadd6471 add -77e-33 10 -> 9.999999999999999999999999999999923 +dqadd6472 add -77e-34 10 -> 9.999999999999999999999999999999992 Inexact Rounded +dqadd6473 add -77e-35 10 -> 9.999999999999999999999999999999999 Inexact Rounded +dqadd6474 add -77e-36 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd6475 add -77e-37 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd6476 add -77e-99 10 -> 10.00000000000000000000000000000000 Inexact Rounded + +-- negative ulps +dqadd6480 add -1 77e-32 -> -0.99999999999999999999999999999923 +dqadd6481 add -1 77e-33 -> -0.999999999999999999999999999999923 +dqadd6482 add -1 77e-34 -> -0.9999999999999999999999999999999923 +dqadd6483 add -1 77e-35 -> -0.9999999999999999999999999999999992 Inexact Rounded +dqadd6484 add -1 77e-36 -> -0.9999999999999999999999999999999999 Inexact Rounded +dqadd6485 add -1 77e-37 -> -1.000000000000000000000000000000000 Inexact Rounded +dqadd6486 add -1 77e-99 -> -1.000000000000000000000000000000000 Inexact Rounded + +dqadd6490 add -10 77e-32 -> -9.99999999999999999999999999999923 +dqadd6491 add -10 77e-33 -> -9.999999999999999999999999999999923 +dqadd6492 add -10 77e-34 -> -9.999999999999999999999999999999992 Inexact Rounded +dqadd6493 add -10 77e-35 -> -9.999999999999999999999999999999999 Inexact Rounded +dqadd6494 add -10 77e-36 -> -10.00000000000000000000000000000000 Inexact Rounded +dqadd6495 add -10 77e-37 -> -10.00000000000000000000000000000000 Inexact Rounded +dqadd6496 add -10 77e-99 -> -10.00000000000000000000000000000000 Inexact Rounded + +dqadd6500 add 77e-32 -1 -> -0.99999999999999999999999999999923 +dqadd6501 add 77e-33 -1 -> -0.999999999999999999999999999999923 +dqadd6502 add 77e-34 -1 -> -0.9999999999999999999999999999999923 +dqadd6503 add 77e-35 -1 -> -0.9999999999999999999999999999999992 Inexact Rounded +dqadd6504 add 77e-36 -1 -> -0.9999999999999999999999999999999999 Inexact Rounded +dqadd6505 add 77e-37 -1 -> -1.000000000000000000000000000000000 Inexact Rounded +dqadd6506 add 77e-99 -1 -> -1.000000000000000000000000000000000 Inexact Rounded + +dqadd6510 add 77e-32 -10 -> -9.99999999999999999999999999999923 +dqadd6511 add 77e-33 -10 -> -9.999999999999999999999999999999923 +dqadd6512 add 77e-34 -10 -> -9.999999999999999999999999999999992 Inexact Rounded +dqadd6513 add 77e-35 -10 -> -9.999999999999999999999999999999999 Inexact Rounded +dqadd6514 add 77e-36 -10 -> -10.00000000000000000000000000000000 Inexact Rounded +dqadd6515 add 77e-37 -10 -> -10.00000000000000000000000000000000 Inexact Rounded +dqadd6516 add 77e-99 -10 -> -10.00000000000000000000000000000000 Inexact Rounded + +-- and some more residue effects and different roundings +rounding: half_up +dqadd6540 add '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' +dqadd6541 add '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6542 add '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6543 add '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6544 add '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6545 add '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6546 add '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6547 add '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6548 add '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6549 add '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6550 add '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6551 add '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6552 add '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6553 add '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6554 add '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6555 add '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6556 add '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' +dqadd6557 add '9876543219876543216543210123456789' 1.000000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6558 add '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6559 add '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded + +rounding: half_even +dqadd6560 add '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' +dqadd6561 add '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6562 add '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6563 add '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6564 add '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6565 add '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6566 add '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6567 add '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd6568 add '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6569 add '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6570 add '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6571 add '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6572 add '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6573 add '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6574 add '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6575 add '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6576 add '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' +dqadd6577 add '9876543219876543216543210123456789' 1.00000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6578 add '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd6579 add '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded + +-- critical few with even bottom digit... +dqadd7540 add '9876543219876543216543210123456788' 0.499999999 -> '9876543219876543216543210123456788' Inexact Rounded +dqadd7541 add '9876543219876543216543210123456788' 0.5 -> '9876543219876543216543210123456788' Inexact Rounded +dqadd7542 add '9876543219876543216543210123456788' 0.500000001 -> '9876543219876543216543210123456789' Inexact Rounded + +rounding: down +dqadd7550 add '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' +dqadd7551 add '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7552 add '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7553 add '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7554 add '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7555 add '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7556 add '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7557 add '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7558 add '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7559 add '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7560 add '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7561 add '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7562 add '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7563 add '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7564 add '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7565 add '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd7566 add '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' +dqadd7567 add '9876543219876543216543210123456789' 1.00000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd7568 add '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd7569 add '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded + +-- more zeros, etc. +rounding: half_even + +dqadd7701 add 5.00 1.00E-3 -> 5.00100 +dqadd7702 add 00.00 0.000 -> 0.000 +dqadd7703 add 00.00 0E-3 -> 0.000 +dqadd7704 add 0E-3 00.00 -> 0.000 + +dqadd7710 add 0E+3 00.00 -> 0.00 +dqadd7711 add 0E+3 00.0 -> 0.0 +dqadd7712 add 0E+3 00. -> 0 +dqadd7713 add 0E+3 00.E+1 -> 0E+1 +dqadd7714 add 0E+3 00.E+2 -> 0E+2 +dqadd7715 add 0E+3 00.E+3 -> 0E+3 +dqadd7716 add 0E+3 00.E+4 -> 0E+3 +dqadd7717 add 0E+3 00.E+5 -> 0E+3 +dqadd7718 add 0E+3 -00.0 -> 0.0 +dqadd7719 add 0E+3 -00. -> 0 +dqadd7731 add 0E+3 -00.E+1 -> 0E+1 + +dqadd7720 add 00.00 0E+3 -> 0.00 +dqadd7721 add 00.0 0E+3 -> 0.0 +dqadd7722 add 00. 0E+3 -> 0 +dqadd7723 add 00.E+1 0E+3 -> 0E+1 +dqadd7724 add 00.E+2 0E+3 -> 0E+2 +dqadd7725 add 00.E+3 0E+3 -> 0E+3 +dqadd7726 add 00.E+4 0E+3 -> 0E+3 +dqadd7727 add 00.E+5 0E+3 -> 0E+3 +dqadd7728 add -00.00 0E+3 -> 0.00 +dqadd7729 add -00.0 0E+3 -> 0.0 +dqadd7730 add -00. 0E+3 -> 0 + +dqadd7732 add 0 0 -> 0 +dqadd7733 add 0 -0 -> 0 +dqadd7734 add -0 0 -> 0 +dqadd7735 add -0 -0 -> -0 -- IEEE 754 special case + +dqadd7736 add 1 -1 -> 0 +dqadd7737 add -1 -1 -> -2 +dqadd7738 add 1 1 -> 2 +dqadd7739 add -1 1 -> 0 + +dqadd7741 add 0 -1 -> -1 +dqadd7742 add -0 -1 -> -1 +dqadd7743 add 0 1 -> 1 +dqadd7744 add -0 1 -> 1 +dqadd7745 add -1 0 -> -1 +dqadd7746 add -1 -0 -> -1 +dqadd7747 add 1 0 -> 1 +dqadd7748 add 1 -0 -> 1 + +dqadd7751 add 0.0 -1 -> -1.0 +dqadd7752 add -0.0 -1 -> -1.0 +dqadd7753 add 0.0 1 -> 1.0 +dqadd7754 add -0.0 1 -> 1.0 +dqadd7755 add -1.0 0 -> -1.0 +dqadd7756 add -1.0 -0 -> -1.0 +dqadd7757 add 1.0 0 -> 1.0 +dqadd7758 add 1.0 -0 -> 1.0 + +dqadd7761 add 0 -1.0 -> -1.0 +dqadd7762 add -0 -1.0 -> -1.0 +dqadd7763 add 0 1.0 -> 1.0 +dqadd7764 add -0 1.0 -> 1.0 +dqadd7765 add -1 0.0 -> -1.0 +dqadd7766 add -1 -0.0 -> -1.0 +dqadd7767 add 1 0.0 -> 1.0 +dqadd7768 add 1 -0.0 -> 1.0 + +dqadd7771 add 0.0 -1.0 -> -1.0 +dqadd7772 add -0.0 -1.0 -> -1.0 +dqadd7773 add 0.0 1.0 -> 1.0 +dqadd7774 add -0.0 1.0 -> 1.0 +dqadd7775 add -1.0 0.0 -> -1.0 +dqadd7776 add -1.0 -0.0 -> -1.0 +dqadd7777 add 1.0 0.0 -> 1.0 +dqadd7778 add 1.0 -0.0 -> 1.0 + +-- Specials +dqadd7780 add -Inf -Inf -> -Infinity +dqadd7781 add -Inf -1000 -> -Infinity +dqadd7782 add -Inf -1 -> -Infinity +dqadd7783 add -Inf -0 -> -Infinity +dqadd7784 add -Inf 0 -> -Infinity +dqadd7785 add -Inf 1 -> -Infinity +dqadd7786 add -Inf 1000 -> -Infinity +dqadd7787 add -1000 -Inf -> -Infinity +dqadd7788 add -Inf -Inf -> -Infinity +dqadd7789 add -1 -Inf -> -Infinity +dqadd7790 add -0 -Inf -> -Infinity +dqadd7791 add 0 -Inf -> -Infinity +dqadd7792 add 1 -Inf -> -Infinity +dqadd7793 add 1000 -Inf -> -Infinity +dqadd7794 add Inf -Inf -> NaN Invalid_operation + +dqadd7800 add Inf -Inf -> NaN Invalid_operation +dqadd7801 add Inf -1000 -> Infinity +dqadd7802 add Inf -1 -> Infinity +dqadd7803 add Inf -0 -> Infinity +dqadd7804 add Inf 0 -> Infinity +dqadd7805 add Inf 1 -> Infinity +dqadd7806 add Inf 1000 -> Infinity +dqadd7807 add Inf Inf -> Infinity +dqadd7808 add -1000 Inf -> Infinity +dqadd7809 add -Inf Inf -> NaN Invalid_operation +dqadd7810 add -1 Inf -> Infinity +dqadd7811 add -0 Inf -> Infinity +dqadd7812 add 0 Inf -> Infinity +dqadd7813 add 1 Inf -> Infinity +dqadd7814 add 1000 Inf -> Infinity +dqadd7815 add Inf Inf -> Infinity + +dqadd7821 add NaN -Inf -> NaN +dqadd7822 add NaN -1000 -> NaN +dqadd7823 add NaN -1 -> NaN +dqadd7824 add NaN -0 -> NaN +dqadd7825 add NaN 0 -> NaN +dqadd7826 add NaN 1 -> NaN +dqadd7827 add NaN 1000 -> NaN +dqadd7828 add NaN Inf -> NaN +dqadd7829 add NaN NaN -> NaN +dqadd7830 add -Inf NaN -> NaN +dqadd7831 add -1000 NaN -> NaN +dqadd7832 add -1 NaN -> NaN +dqadd7833 add -0 NaN -> NaN +dqadd7834 add 0 NaN -> NaN +dqadd7835 add 1 NaN -> NaN +dqadd7836 add 1000 NaN -> NaN +dqadd7837 add Inf NaN -> NaN + +dqadd7841 add sNaN -Inf -> NaN Invalid_operation +dqadd7842 add sNaN -1000 -> NaN Invalid_operation +dqadd7843 add sNaN -1 -> NaN Invalid_operation +dqadd7844 add sNaN -0 -> NaN Invalid_operation +dqadd7845 add sNaN 0 -> NaN Invalid_operation +dqadd7846 add sNaN 1 -> NaN Invalid_operation +dqadd7847 add sNaN 1000 -> NaN Invalid_operation +dqadd7848 add sNaN NaN -> NaN Invalid_operation +dqadd7849 add sNaN sNaN -> NaN Invalid_operation +dqadd7850 add NaN sNaN -> NaN Invalid_operation +dqadd7851 add -Inf sNaN -> NaN Invalid_operation +dqadd7852 add -1000 sNaN -> NaN Invalid_operation +dqadd7853 add -1 sNaN -> NaN Invalid_operation +dqadd7854 add -0 sNaN -> NaN Invalid_operation +dqadd7855 add 0 sNaN -> NaN Invalid_operation +dqadd7856 add 1 sNaN -> NaN Invalid_operation +dqadd7857 add 1000 sNaN -> NaN Invalid_operation +dqadd7858 add Inf sNaN -> NaN Invalid_operation +dqadd7859 add NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqadd7861 add NaN1 -Inf -> NaN1 +dqadd7862 add +NaN2 -1000 -> NaN2 +dqadd7863 add NaN3 1000 -> NaN3 +dqadd7864 add NaN4 Inf -> NaN4 +dqadd7865 add NaN5 +NaN6 -> NaN5 +dqadd7866 add -Inf NaN7 -> NaN7 +dqadd7867 add -1000 NaN8 -> NaN8 +dqadd7868 add 1000 NaN9 -> NaN9 +dqadd7869 add Inf +NaN10 -> NaN10 +dqadd7871 add sNaN11 -Inf -> NaN11 Invalid_operation +dqadd7872 add sNaN12 -1000 -> NaN12 Invalid_operation +dqadd7873 add sNaN13 1000 -> NaN13 Invalid_operation +dqadd7874 add sNaN14 NaN17 -> NaN14 Invalid_operation +dqadd7875 add sNaN15 sNaN18 -> NaN15 Invalid_operation +dqadd7876 add NaN16 sNaN19 -> NaN19 Invalid_operation +dqadd7877 add -Inf +sNaN20 -> NaN20 Invalid_operation +dqadd7878 add -1000 sNaN21 -> NaN21 Invalid_operation +dqadd7879 add 1000 sNaN22 -> NaN22 Invalid_operation +dqadd7880 add Inf sNaN23 -> NaN23 Invalid_operation +dqadd7881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation +dqadd7882 add -NaN26 NaN28 -> -NaN26 +dqadd7883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation +dqadd7884 add 1000 -NaN30 -> -NaN30 +dqadd7885 add 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- Here we explore near the boundary of rounding a subnormal to Nmin +dqadd7575 add 1E-6143 -1E-6176 -> 9.99999999999999999999999999999999E-6144 Subnormal +dqadd7576 add -1E-6143 +1E-6176 -> -9.99999999999999999999999999999999E-6144 Subnormal + +-- check overflow edge case +-- 1234567890123456 +dqadd7972 apply 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +dqadd7973 add 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7974 add 9999999999999999999999999999999999E+6111 1 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7975 add 9999999999999999999999999999999999E+6111 1E+6111 -> Infinity Overflow Inexact Rounded +dqadd7976 add 9999999999999999999999999999999999E+6111 9E+6110 -> Infinity Overflow Inexact Rounded +dqadd7977 add 9999999999999999999999999999999999E+6111 8E+6110 -> Infinity Overflow Inexact Rounded +dqadd7978 add 9999999999999999999999999999999999E+6111 7E+6110 -> Infinity Overflow Inexact Rounded +dqadd7979 add 9999999999999999999999999999999999E+6111 6E+6110 -> Infinity Overflow Inexact Rounded +dqadd7980 add 9999999999999999999999999999999999E+6111 5E+6110 -> Infinity Overflow Inexact Rounded +dqadd7981 add 9999999999999999999999999999999999E+6111 4E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7982 add 9999999999999999999999999999999999E+6111 3E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7983 add 9999999999999999999999999999999999E+6111 2E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7984 add 9999999999999999999999999999999999E+6111 1E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded + +dqadd7985 apply -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 +dqadd7986 add -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7987 add -9999999999999999999999999999999999E+6111 -1 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7988 add -9999999999999999999999999999999999E+6111 -1E+6111 -> -Infinity Overflow Inexact Rounded +dqadd7989 add -9999999999999999999999999999999999E+6111 -9E+6110 -> -Infinity Overflow Inexact Rounded +dqadd7990 add -9999999999999999999999999999999999E+6111 -8E+6110 -> -Infinity Overflow Inexact Rounded +dqadd7991 add -9999999999999999999999999999999999E+6111 -7E+6110 -> -Infinity Overflow Inexact Rounded +dqadd7992 add -9999999999999999999999999999999999E+6111 -6E+6110 -> -Infinity Overflow Inexact Rounded +dqadd7993 add -9999999999999999999999999999999999E+6111 -5E+6110 -> -Infinity Overflow Inexact Rounded +dqadd7994 add -9999999999999999999999999999999999E+6111 -4E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7995 add -9999999999999999999999999999999999E+6111 -3E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7996 add -9999999999999999999999999999999999E+6111 -2E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd7997 add -9999999999999999999999999999999999E+6111 -1E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded + +-- And for round down full and subnormal results +rounding: down +dqadd71100 add 1e+2 -1e-6143 -> 99.99999999999999999999999999999999 Rounded Inexact +dqadd71101 add 1e+1 -1e-6143 -> 9.999999999999999999999999999999999 Rounded Inexact +dqadd71103 add +1 -1e-6143 -> 0.9999999999999999999999999999999999 Rounded Inexact +dqadd71104 add 1e-1 -1e-6143 -> 0.09999999999999999999999999999999999 Rounded Inexact +dqadd71105 add 1e-2 -1e-6143 -> 0.009999999999999999999999999999999999 Rounded Inexact +dqadd71106 add 1e-3 -1e-6143 -> 0.0009999999999999999999999999999999999 Rounded Inexact +dqadd71107 add 1e-4 -1e-6143 -> 0.00009999999999999999999999999999999999 Rounded Inexact +dqadd71108 add 1e-5 -1e-6143 -> 0.000009999999999999999999999999999999999 Rounded Inexact +dqadd71109 add 1e-6 -1e-6143 -> 9.999999999999999999999999999999999E-7 Rounded Inexact + +rounding: ceiling +dqadd71110 add -1e+2 +1e-6143 -> -99.99999999999999999999999999999999 Rounded Inexact +dqadd71111 add -1e+1 +1e-6143 -> -9.999999999999999999999999999999999 Rounded Inexact +dqadd71113 add -1 +1e-6143 -> -0.9999999999999999999999999999999999 Rounded Inexact +dqadd71114 add -1e-1 +1e-6143 -> -0.09999999999999999999999999999999999 Rounded Inexact +dqadd71115 add -1e-2 +1e-6143 -> -0.009999999999999999999999999999999999 Rounded Inexact +dqadd71116 add -1e-3 +1e-6143 -> -0.0009999999999999999999999999999999999 Rounded Inexact +dqadd71117 add -1e-4 +1e-6143 -> -0.00009999999999999999999999999999999999 Rounded Inexact +dqadd71118 add -1e-5 +1e-6143 -> -0.000009999999999999999999999999999999999 Rounded Inexact +dqadd71119 add -1e-6 +1e-6143 -> -9.999999999999999999999999999999999E-7 Rounded Inexact + +-- tests based on Gunnar Degnbol's edge case +rounding: half_even + +dqadd71300 add 1E34 -0.5 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71310 add 1E34 -0.51 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71311 add 1E34 -0.501 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71312 add 1E34 -0.5001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71313 add 1E34 -0.50001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71314 add 1E34 -0.500001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71315 add 1E34 -0.5000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71316 add 1E34 -0.50000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71317 add 1E34 -0.500000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71318 add 1E34 -0.5000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71319 add 1E34 -0.50000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71320 add 1E34 -0.500000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71321 add 1E34 -0.5000000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71322 add 1E34 -0.50000000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71323 add 1E34 -0.500000000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71324 add 1E34 -0.5000000000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71325 add 1E34 -0.5000000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71326 add 1E34 -0.500000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71327 add 1E34 -0.50000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71328 add 1E34 -0.5000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71329 add 1E34 -0.500000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71330 add 1E34 -0.50000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71331 add 1E34 -0.5000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71332 add 1E34 -0.500000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71333 add 1E34 -0.50000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71334 add 1E34 -0.5000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71335 add 1E34 -0.500000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71336 add 1E34 -0.50000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71337 add 1E34 -0.5000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71338 add 1E34 -0.500 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71339 add 1E34 -0.50 -> 1.000000000000000000000000000000000E+34 Inexact Rounded + +dqadd71340 add 1E34 -5000000.000010001 -> 9999999999999999999999999995000000 Inexact Rounded +dqadd71341 add 1E34 -5000000.000000001 -> 9999999999999999999999999995000000 Inexact Rounded + +dqadd71349 add 9999999999999999999999999999999999 0.4 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71350 add 9999999999999999999999999999999999 0.49 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71351 add 9999999999999999999999999999999999 0.499 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71352 add 9999999999999999999999999999999999 0.4999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71353 add 9999999999999999999999999999999999 0.49999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71354 add 9999999999999999999999999999999999 0.499999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71355 add 9999999999999999999999999999999999 0.4999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71356 add 9999999999999999999999999999999999 0.49999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71357 add 9999999999999999999999999999999999 0.499999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71358 add 9999999999999999999999999999999999 0.4999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71359 add 9999999999999999999999999999999999 0.49999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71360 add 9999999999999999999999999999999999 0.499999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71361 add 9999999999999999999999999999999999 0.4999999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71362 add 9999999999999999999999999999999999 0.49999999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71363 add 9999999999999999999999999999999999 0.499999999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71364 add 9999999999999999999999999999999999 0.4999999999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd71365 add 9999999999999999999999999999999999 0.5000000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71367 add 9999999999999999999999999999999999 0.500000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71368 add 9999999999999999999999999999999999 0.50000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71369 add 9999999999999999999999999999999999 0.5000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71370 add 9999999999999999999999999999999999 0.500000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71371 add 9999999999999999999999999999999999 0.50000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71372 add 9999999999999999999999999999999999 0.5000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71373 add 9999999999999999999999999999999999 0.500000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71374 add 9999999999999999999999999999999999 0.50000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71375 add 9999999999999999999999999999999999 0.5000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71376 add 9999999999999999999999999999999999 0.500000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71377 add 9999999999999999999999999999999999 0.50000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71378 add 9999999999999999999999999999999999 0.5000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71379 add 9999999999999999999999999999999999 0.500 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71380 add 9999999999999999999999999999999999 0.50 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71381 add 9999999999999999999999999999999999 0.5 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71382 add 9999999999999999999999999999999999 0.5000000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71383 add 9999999999999999999999999999999999 0.500000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71384 add 9999999999999999999999999999999999 0.50000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71385 add 9999999999999999999999999999999999 0.5000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71386 add 9999999999999999999999999999999999 0.500000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71387 add 9999999999999999999999999999999999 0.50000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71388 add 9999999999999999999999999999999999 0.5000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71389 add 9999999999999999999999999999999999 0.500000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71390 add 9999999999999999999999999999999999 0.50000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71391 add 9999999999999999999999999999999999 0.5000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71392 add 9999999999999999999999999999999999 0.500001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71393 add 9999999999999999999999999999999999 0.50001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71394 add 9999999999999999999999999999999999 0.5001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71395 add 9999999999999999999999999999999999 0.501 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd71396 add 9999999999999999999999999999999999 0.51 -> 1.000000000000000000000000000000000E+34 Inexact Rounded + +-- More GD edge cases, where difference between the unadjusted +-- exponents is larger than the maximum precision and one side is 0 +dqadd71420 add 0 1.123456789987654321123456789012345 -> 1.123456789987654321123456789012345 +dqadd71421 add 0 1.123456789987654321123456789012345E-1 -> 0.1123456789987654321123456789012345 +dqadd71422 add 0 1.123456789987654321123456789012345E-2 -> 0.01123456789987654321123456789012345 +dqadd71423 add 0 1.123456789987654321123456789012345E-3 -> 0.001123456789987654321123456789012345 +dqadd71424 add 0 1.123456789987654321123456789012345E-4 -> 0.0001123456789987654321123456789012345 +dqadd71425 add 0 1.123456789987654321123456789012345E-5 -> 0.00001123456789987654321123456789012345 +dqadd71426 add 0 1.123456789987654321123456789012345E-6 -> 0.000001123456789987654321123456789012345 +dqadd71427 add 0 1.123456789987654321123456789012345E-7 -> 1.123456789987654321123456789012345E-7 +dqadd71428 add 0 1.123456789987654321123456789012345E-8 -> 1.123456789987654321123456789012345E-8 +dqadd71429 add 0 1.123456789987654321123456789012345E-9 -> 1.123456789987654321123456789012345E-9 +dqadd71430 add 0 1.123456789987654321123456789012345E-10 -> 1.123456789987654321123456789012345E-10 +dqadd71431 add 0 1.123456789987654321123456789012345E-11 -> 1.123456789987654321123456789012345E-11 +dqadd71432 add 0 1.123456789987654321123456789012345E-12 -> 1.123456789987654321123456789012345E-12 +dqadd71433 add 0 1.123456789987654321123456789012345E-13 -> 1.123456789987654321123456789012345E-13 +dqadd71434 add 0 1.123456789987654321123456789012345E-14 -> 1.123456789987654321123456789012345E-14 +dqadd71435 add 0 1.123456789987654321123456789012345E-15 -> 1.123456789987654321123456789012345E-15 +dqadd71436 add 0 1.123456789987654321123456789012345E-16 -> 1.123456789987654321123456789012345E-16 +dqadd71437 add 0 1.123456789987654321123456789012345E-17 -> 1.123456789987654321123456789012345E-17 +dqadd71438 add 0 1.123456789987654321123456789012345E-18 -> 1.123456789987654321123456789012345E-18 +dqadd71439 add 0 1.123456789987654321123456789012345E-19 -> 1.123456789987654321123456789012345E-19 +dqadd71440 add 0 1.123456789987654321123456789012345E-20 -> 1.123456789987654321123456789012345E-20 +dqadd71441 add 0 1.123456789987654321123456789012345E-21 -> 1.123456789987654321123456789012345E-21 +dqadd71442 add 0 1.123456789987654321123456789012345E-22 -> 1.123456789987654321123456789012345E-22 +dqadd71443 add 0 1.123456789987654321123456789012345E-23 -> 1.123456789987654321123456789012345E-23 +dqadd71444 add 0 1.123456789987654321123456789012345E-24 -> 1.123456789987654321123456789012345E-24 +dqadd71445 add 0 1.123456789987654321123456789012345E-25 -> 1.123456789987654321123456789012345E-25 +dqadd71446 add 0 1.123456789987654321123456789012345E-26 -> 1.123456789987654321123456789012345E-26 +dqadd71447 add 0 1.123456789987654321123456789012345E-27 -> 1.123456789987654321123456789012345E-27 +dqadd71448 add 0 1.123456789987654321123456789012345E-28 -> 1.123456789987654321123456789012345E-28 +dqadd71449 add 0 1.123456789987654321123456789012345E-29 -> 1.123456789987654321123456789012345E-29 +dqadd71450 add 0 1.123456789987654321123456789012345E-30 -> 1.123456789987654321123456789012345E-30 +dqadd71451 add 0 1.123456789987654321123456789012345E-31 -> 1.123456789987654321123456789012345E-31 +dqadd71452 add 0 1.123456789987654321123456789012345E-32 -> 1.123456789987654321123456789012345E-32 +dqadd71453 add 0 1.123456789987654321123456789012345E-33 -> 1.123456789987654321123456789012345E-33 +dqadd71454 add 0 1.123456789987654321123456789012345E-34 -> 1.123456789987654321123456789012345E-34 +dqadd71455 add 0 1.123456789987654321123456789012345E-35 -> 1.123456789987654321123456789012345E-35 +dqadd71456 add 0 1.123456789987654321123456789012345E-36 -> 1.123456789987654321123456789012345E-36 + +-- same, reversed 0 +dqadd71460 add 1.123456789987654321123456789012345 0 -> 1.123456789987654321123456789012345 +dqadd71461 add 1.123456789987654321123456789012345E-1 0 -> 0.1123456789987654321123456789012345 +dqadd71462 add 1.123456789987654321123456789012345E-2 0 -> 0.01123456789987654321123456789012345 +dqadd71463 add 1.123456789987654321123456789012345E-3 0 -> 0.001123456789987654321123456789012345 +dqadd71464 add 1.123456789987654321123456789012345E-4 0 -> 0.0001123456789987654321123456789012345 +dqadd71465 add 1.123456789987654321123456789012345E-5 0 -> 0.00001123456789987654321123456789012345 +dqadd71466 add 1.123456789987654321123456789012345E-6 0 -> 0.000001123456789987654321123456789012345 +dqadd71467 add 1.123456789987654321123456789012345E-7 0 -> 1.123456789987654321123456789012345E-7 +dqadd71468 add 1.123456789987654321123456789012345E-8 0 -> 1.123456789987654321123456789012345E-8 +dqadd71469 add 1.123456789987654321123456789012345E-9 0 -> 1.123456789987654321123456789012345E-9 +dqadd71470 add 1.123456789987654321123456789012345E-10 0 -> 1.123456789987654321123456789012345E-10 +dqadd71471 add 1.123456789987654321123456789012345E-11 0 -> 1.123456789987654321123456789012345E-11 +dqadd71472 add 1.123456789987654321123456789012345E-12 0 -> 1.123456789987654321123456789012345E-12 +dqadd71473 add 1.123456789987654321123456789012345E-13 0 -> 1.123456789987654321123456789012345E-13 +dqadd71474 add 1.123456789987654321123456789012345E-14 0 -> 1.123456789987654321123456789012345E-14 +dqadd71475 add 1.123456789987654321123456789012345E-15 0 -> 1.123456789987654321123456789012345E-15 +dqadd71476 add 1.123456789987654321123456789012345E-16 0 -> 1.123456789987654321123456789012345E-16 +dqadd71477 add 1.123456789987654321123456789012345E-17 0 -> 1.123456789987654321123456789012345E-17 +dqadd71478 add 1.123456789987654321123456789012345E-18 0 -> 1.123456789987654321123456789012345E-18 +dqadd71479 add 1.123456789987654321123456789012345E-19 0 -> 1.123456789987654321123456789012345E-19 +dqadd71480 add 1.123456789987654321123456789012345E-20 0 -> 1.123456789987654321123456789012345E-20 +dqadd71481 add 1.123456789987654321123456789012345E-21 0 -> 1.123456789987654321123456789012345E-21 +dqadd71482 add 1.123456789987654321123456789012345E-22 0 -> 1.123456789987654321123456789012345E-22 +dqadd71483 add 1.123456789987654321123456789012345E-23 0 -> 1.123456789987654321123456789012345E-23 +dqadd71484 add 1.123456789987654321123456789012345E-24 0 -> 1.123456789987654321123456789012345E-24 +dqadd71485 add 1.123456789987654321123456789012345E-25 0 -> 1.123456789987654321123456789012345E-25 +dqadd71486 add 1.123456789987654321123456789012345E-26 0 -> 1.123456789987654321123456789012345E-26 +dqadd71487 add 1.123456789987654321123456789012345E-27 0 -> 1.123456789987654321123456789012345E-27 +dqadd71488 add 1.123456789987654321123456789012345E-28 0 -> 1.123456789987654321123456789012345E-28 +dqadd71489 add 1.123456789987654321123456789012345E-29 0 -> 1.123456789987654321123456789012345E-29 +dqadd71490 add 1.123456789987654321123456789012345E-30 0 -> 1.123456789987654321123456789012345E-30 +dqadd71491 add 1.123456789987654321123456789012345E-31 0 -> 1.123456789987654321123456789012345E-31 +dqadd71492 add 1.123456789987654321123456789012345E-32 0 -> 1.123456789987654321123456789012345E-32 +dqadd71493 add 1.123456789987654321123456789012345E-33 0 -> 1.123456789987654321123456789012345E-33 +dqadd71494 add 1.123456789987654321123456789012345E-34 0 -> 1.123456789987654321123456789012345E-34 +dqadd71495 add 1.123456789987654321123456789012345E-35 0 -> 1.123456789987654321123456789012345E-35 +dqadd71496 add 1.123456789987654321123456789012345E-36 0 -> 1.123456789987654321123456789012345E-36 + +-- same, Es on the 0 +dqadd71500 add 1.123456789987654321123456789012345 0E-0 -> 1.123456789987654321123456789012345 +dqadd71501 add 1.123456789987654321123456789012345 0E-1 -> 1.123456789987654321123456789012345 +dqadd71502 add 1.123456789987654321123456789012345 0E-2 -> 1.123456789987654321123456789012345 +dqadd71503 add 1.123456789987654321123456789012345 0E-3 -> 1.123456789987654321123456789012345 +dqadd71504 add 1.123456789987654321123456789012345 0E-4 -> 1.123456789987654321123456789012345 +dqadd71505 add 1.123456789987654321123456789012345 0E-5 -> 1.123456789987654321123456789012345 +dqadd71506 add 1.123456789987654321123456789012345 0E-6 -> 1.123456789987654321123456789012345 +dqadd71507 add 1.123456789987654321123456789012345 0E-7 -> 1.123456789987654321123456789012345 +dqadd71508 add 1.123456789987654321123456789012345 0E-8 -> 1.123456789987654321123456789012345 +dqadd71509 add 1.123456789987654321123456789012345 0E-9 -> 1.123456789987654321123456789012345 +dqadd71510 add 1.123456789987654321123456789012345 0E-10 -> 1.123456789987654321123456789012345 +dqadd71511 add 1.123456789987654321123456789012345 0E-11 -> 1.123456789987654321123456789012345 +dqadd71512 add 1.123456789987654321123456789012345 0E-12 -> 1.123456789987654321123456789012345 +dqadd71513 add 1.123456789987654321123456789012345 0E-13 -> 1.123456789987654321123456789012345 +dqadd71514 add 1.123456789987654321123456789012345 0E-14 -> 1.123456789987654321123456789012345 +dqadd71515 add 1.123456789987654321123456789012345 0E-15 -> 1.123456789987654321123456789012345 +dqadd71516 add 1.123456789987654321123456789012345 0E-16 -> 1.123456789987654321123456789012345 +dqadd71517 add 1.123456789987654321123456789012345 0E-17 -> 1.123456789987654321123456789012345 +dqadd71518 add 1.123456789987654321123456789012345 0E-18 -> 1.123456789987654321123456789012345 +dqadd71519 add 1.123456789987654321123456789012345 0E-19 -> 1.123456789987654321123456789012345 +dqadd71520 add 1.123456789987654321123456789012345 0E-20 -> 1.123456789987654321123456789012345 +dqadd71521 add 1.123456789987654321123456789012345 0E-21 -> 1.123456789987654321123456789012345 +dqadd71522 add 1.123456789987654321123456789012345 0E-22 -> 1.123456789987654321123456789012345 +dqadd71523 add 1.123456789987654321123456789012345 0E-23 -> 1.123456789987654321123456789012345 +dqadd71524 add 1.123456789987654321123456789012345 0E-24 -> 1.123456789987654321123456789012345 +dqadd71525 add 1.123456789987654321123456789012345 0E-25 -> 1.123456789987654321123456789012345 +dqadd71526 add 1.123456789987654321123456789012345 0E-26 -> 1.123456789987654321123456789012345 +dqadd71527 add 1.123456789987654321123456789012345 0E-27 -> 1.123456789987654321123456789012345 +dqadd71528 add 1.123456789987654321123456789012345 0E-28 -> 1.123456789987654321123456789012345 +dqadd71529 add 1.123456789987654321123456789012345 0E-29 -> 1.123456789987654321123456789012345 +dqadd71530 add 1.123456789987654321123456789012345 0E-30 -> 1.123456789987654321123456789012345 +dqadd71531 add 1.123456789987654321123456789012345 0E-31 -> 1.123456789987654321123456789012345 +dqadd71532 add 1.123456789987654321123456789012345 0E-32 -> 1.123456789987654321123456789012345 +dqadd71533 add 1.123456789987654321123456789012345 0E-33 -> 1.123456789987654321123456789012345 +-- next four flag Rounded because the 0 extends the result +dqadd71534 add 1.123456789987654321123456789012345 0E-34 -> 1.123456789987654321123456789012345 Rounded +dqadd71535 add 1.123456789987654321123456789012345 0E-35 -> 1.123456789987654321123456789012345 Rounded +dqadd71536 add 1.123456789987654321123456789012345 0E-36 -> 1.123456789987654321123456789012345 Rounded +dqadd71537 add 1.123456789987654321123456789012345 0E-37 -> 1.123456789987654321123456789012345 Rounded + +-- sum of two opposite-sign operands is exactly 0 and floor => -0 +rounding: half_up +-- exact zeros from zeros +dqadd71600 add 0 0E-19 -> 0E-19 +dqadd71601 add -0 0E-19 -> 0E-19 +dqadd71602 add 0 -0E-19 -> 0E-19 +dqadd71603 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd71611 add -11 11 -> 0 +dqadd71612 add 11 -11 -> 0 + +rounding: half_down +-- exact zeros from zeros +dqadd71620 add 0 0E-19 -> 0E-19 +dqadd71621 add -0 0E-19 -> 0E-19 +dqadd71622 add 0 -0E-19 -> 0E-19 +dqadd71623 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd71631 add -11 11 -> 0 +dqadd71632 add 11 -11 -> 0 + +rounding: half_even +-- exact zeros from zeros +dqadd71640 add 0 0E-19 -> 0E-19 +dqadd71641 add -0 0E-19 -> 0E-19 +dqadd71642 add 0 -0E-19 -> 0E-19 +dqadd71643 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd71651 add -11 11 -> 0 +dqadd71652 add 11 -11 -> 0 + +rounding: up +-- exact zeros from zeros +dqadd71660 add 0 0E-19 -> 0E-19 +dqadd71661 add -0 0E-19 -> 0E-19 +dqadd71662 add 0 -0E-19 -> 0E-19 +dqadd71663 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd71671 add -11 11 -> 0 +dqadd71672 add 11 -11 -> 0 + +rounding: down +-- exact zeros from zeros +dqadd71680 add 0 0E-19 -> 0E-19 +dqadd71681 add -0 0E-19 -> 0E-19 +dqadd71682 add 0 -0E-19 -> 0E-19 +dqadd71683 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd71691 add -11 11 -> 0 +dqadd71692 add 11 -11 -> 0 + +rounding: ceiling +-- exact zeros from zeros +dqadd71700 add 0 0E-19 -> 0E-19 +dqadd71701 add -0 0E-19 -> 0E-19 +dqadd71702 add 0 -0E-19 -> 0E-19 +dqadd71703 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd71711 add -11 11 -> 0 +dqadd71712 add 11 -11 -> 0 + +-- and the extra-special ugly case; unusual minuses marked by -- * +rounding: floor +-- exact zeros from zeros +dqadd71720 add 0 0E-19 -> 0E-19 +dqadd71721 add -0 0E-19 -> -0E-19 -- * +dqadd71722 add 0 -0E-19 -> -0E-19 -- * +dqadd71723 add -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd71731 add -11 11 -> -0 -- * +dqadd71732 add 11 -11 -> -0 -- * + +-- Examples from SQL proposal (Krishna Kulkarni) +dqadd71741 add 130E-2 120E-2 -> 2.50 +dqadd71742 add 130E-2 12E-1 -> 2.50 +dqadd71743 add 130E-2 1E0 -> 2.30 +dqadd71744 add 1E2 1E4 -> 1.01E+4 +dqadd71745 add 130E-2 -120E-2 -> 0.10 +dqadd71746 add 130E-2 -12E-1 -> 0.10 +dqadd71747 add 130E-2 -1E0 -> 0.30 +dqadd71748 add 1E2 -1E4 -> -9.9E+3 + +-- Gappy coefficients; check residue handling even with full coefficient gap +rounding: half_even + +dqadd75001 add 1239876543211234567894567890123456 1 -> 1239876543211234567894567890123457 +dqadd75002 add 1239876543211234567894567890123456 0.6 -> 1239876543211234567894567890123457 Inexact Rounded +dqadd75003 add 1239876543211234567894567890123456 0.06 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75004 add 1239876543211234567894567890123456 6E-3 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75005 add 1239876543211234567894567890123456 6E-4 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75006 add 1239876543211234567894567890123456 6E-5 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75007 add 1239876543211234567894567890123456 6E-6 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75008 add 1239876543211234567894567890123456 6E-7 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75009 add 1239876543211234567894567890123456 6E-8 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75010 add 1239876543211234567894567890123456 6E-9 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75011 add 1239876543211234567894567890123456 6E-10 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75012 add 1239876543211234567894567890123456 6E-11 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75013 add 1239876543211234567894567890123456 6E-12 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75014 add 1239876543211234567894567890123456 6E-13 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75015 add 1239876543211234567894567890123456 6E-14 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75016 add 1239876543211234567894567890123456 6E-15 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75017 add 1239876543211234567894567890123456 6E-16 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75018 add 1239876543211234567894567890123456 6E-17 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75019 add 1239876543211234567894567890123456 6E-18 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75020 add 1239876543211234567894567890123456 6E-19 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd75021 add 1239876543211234567894567890123456 6E-20 -> 1239876543211234567894567890123456 Inexact Rounded + +-- widening second argument at gap +dqadd75030 add 12398765432112345678945678 1 -> 12398765432112345678945679 +dqadd75031 add 12398765432112345678945678 0.1 -> 12398765432112345678945678.1 +dqadd75032 add 12398765432112345678945678 0.12 -> 12398765432112345678945678.12 +dqadd75033 add 12398765432112345678945678 0.123 -> 12398765432112345678945678.123 +dqadd75034 add 12398765432112345678945678 0.1234 -> 12398765432112345678945678.1234 +dqadd75035 add 12398765432112345678945678 0.12345 -> 12398765432112345678945678.12345 +dqadd75036 add 12398765432112345678945678 0.123456 -> 12398765432112345678945678.123456 +dqadd75037 add 12398765432112345678945678 0.1234567 -> 12398765432112345678945678.1234567 +dqadd75038 add 12398765432112345678945678 0.12345678 -> 12398765432112345678945678.12345678 +dqadd75039 add 12398765432112345678945678 0.123456789 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd75040 add 12398765432112345678945678 0.123456785 -> 12398765432112345678945678.12345678 Inexact Rounded +dqadd75041 add 12398765432112345678945678 0.1234567850 -> 12398765432112345678945678.12345678 Inexact Rounded +dqadd75042 add 12398765432112345678945678 0.1234567851 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd75043 add 12398765432112345678945678 0.12345678501 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd75044 add 12398765432112345678945678 0.123456785001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd75045 add 12398765432112345678945678 0.1234567850001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd75046 add 12398765432112345678945678 0.12345678500001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd75047 add 12398765432112345678945678 0.123456785000001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd75048 add 12398765432112345678945678 0.1234567850000001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd75049 add 12398765432112345678945678 0.1234567850000000 -> 12398765432112345678945678.12345678 Inexact Rounded +-- 90123456 +rounding: half_even +dqadd75050 add 12398765432112345678945678 0.0234567750000000 -> 12398765432112345678945678.02345678 Inexact Rounded +dqadd75051 add 12398765432112345678945678 0.0034567750000000 -> 12398765432112345678945678.00345678 Inexact Rounded +dqadd75052 add 12398765432112345678945678 0.0004567750000000 -> 12398765432112345678945678.00045678 Inexact Rounded +dqadd75053 add 12398765432112345678945678 0.0000567750000000 -> 12398765432112345678945678.00005678 Inexact Rounded +dqadd75054 add 12398765432112345678945678 0.0000067750000000 -> 12398765432112345678945678.00000678 Inexact Rounded +dqadd75055 add 12398765432112345678945678 0.0000007750000000 -> 12398765432112345678945678.00000078 Inexact Rounded +dqadd75056 add 12398765432112345678945678 0.0000000750000000 -> 12398765432112345678945678.00000008 Inexact Rounded +dqadd75057 add 12398765432112345678945678 0.0000000050000000 -> 12398765432112345678945678.00000000 Inexact Rounded +dqadd75060 add 12398765432112345678945678 0.0234567750000001 -> 12398765432112345678945678.02345678 Inexact Rounded +dqadd75061 add 12398765432112345678945678 0.0034567750000001 -> 12398765432112345678945678.00345678 Inexact Rounded +dqadd75062 add 12398765432112345678945678 0.0004567750000001 -> 12398765432112345678945678.00045678 Inexact Rounded +dqadd75063 add 12398765432112345678945678 0.0000567750000001 -> 12398765432112345678945678.00005678 Inexact Rounded +dqadd75064 add 12398765432112345678945678 0.0000067750000001 -> 12398765432112345678945678.00000678 Inexact Rounded +dqadd75065 add 12398765432112345678945678 0.0000007750000001 -> 12398765432112345678945678.00000078 Inexact Rounded +dqadd75066 add 12398765432112345678945678 0.0000000750000001 -> 12398765432112345678945678.00000008 Inexact Rounded +dqadd75067 add 12398765432112345678945678 0.0000000050000001 -> 12398765432112345678945678.00000001 Inexact Rounded +-- far-out residues (full coefficient gap is 16+15 digits) +rounding: up +dqadd75070 add 12398765432112345678945678 1E-8 -> 12398765432112345678945678.00000001 +dqadd75071 add 12398765432112345678945678 1E-9 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75072 add 12398765432112345678945678 1E-10 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75073 add 12398765432112345678945678 1E-11 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75074 add 12398765432112345678945678 1E-12 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75075 add 12398765432112345678945678 1E-13 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75076 add 12398765432112345678945678 1E-14 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75077 add 12398765432112345678945678 1E-15 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75078 add 12398765432112345678945678 1E-16 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75079 add 12398765432112345678945678 1E-17 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75080 add 12398765432112345678945678 1E-18 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75081 add 12398765432112345678945678 1E-19 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75082 add 12398765432112345678945678 1E-20 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75083 add 12398765432112345678945678 1E-25 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75084 add 12398765432112345678945678 1E-30 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75085 add 12398765432112345678945678 1E-31 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75086 add 12398765432112345678945678 1E-32 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75087 add 12398765432112345678945678 1E-33 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75088 add 12398765432112345678945678 1E-34 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd75089 add 12398765432112345678945678 1E-35 -> 12398765432112345678945678.00000001 Inexact Rounded + +-- Null tests +dqadd9990 add 10 # -> NaN Invalid_operation +dqadd9991 add # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqAnd.decTest b/Lib/test/decimaltestdata/dqAnd.decTest index 57c416b..d609bc1 100644 --- a/Lib/test/decimaltestdata/dqAnd.decTest +++ b/Lib/test/decimaltestdata/dqAnd.decTest @@ -1,420 +1,420 @@ ------------------------------------------------------------------------- --- dqAnd.decTest -- digitwise logical AND for decQuads -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check (truth table) -dqand001 and 0 0 -> 0 -dqand002 and 0 1 -> 0 -dqand003 and 1 0 -> 0 -dqand004 and 1 1 -> 1 -dqand005 and 1100 1010 -> 1000 --- and at msd and msd-1 --- 1234567890123456789012345678901234 -dqand006 and 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 -dqand007 and 0000000000000000000000000000000000 1000000000000000000000000000000000 -> 0 -dqand008 and 1000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 -dqand009 and 1000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 -dqand010 and 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 -dqand011 and 0000000000000000000000000000000000 0100000000000000000000000000000000 -> 0 -dqand012 and 0100000000000000000000000000000000 0000000000000000000000000000000000 -> 0 -dqand013 and 0100000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000 - --- Various lengths --- 1234567890123456789012345678901234 - -dqand601 and 0111111111111111111111111111111111 1111111111111111111111111111111111 -> 111111111111111111111111111111111 -dqand602 and 1011111111111111111111111111111111 1111111111111111111111111111111111 -> 1011111111111111111111111111111111 -dqand603 and 1101111111111111111111111111111111 1111111111111111111111111111111111 -> 1101111111111111111111111111111111 -dqand604 and 1110111111111111111111111111111111 1111111111111111111111111111111111 -> 1110111111111111111111111111111111 -dqand605 and 1111011111111111111111111111111111 1111111111111111111111111111111111 -> 1111011111111111111111111111111111 -dqand606 and 1111101111111111111111111111111111 1111111111111111111111111111111111 -> 1111101111111111111111111111111111 -dqand607 and 1111110111111111111111111111111111 1111111111111111111111111111111111 -> 1111110111111111111111111111111111 -dqand608 and 1111111011111111111111111111111111 1111111111111111111111111111111111 -> 1111111011111111111111111111111111 -dqand609 and 1111111101111111111111111111111111 1111111111111111111111111111111111 -> 1111111101111111111111111111111111 -dqand610 and 1111111110111111111111111111111111 1111111111111111111111111111111111 -> 1111111110111111111111111111111111 -dqand611 and 1111111111011111111111111111111111 1111111111111111111111111111111111 -> 1111111111011111111111111111111111 -dqand612 and 1111111111101111111111111111111111 1111111111111111111111111111111111 -> 1111111111101111111111111111111111 -dqand613 and 1111111111110111111111111111111111 1111111111111111111111111111111111 -> 1111111111110111111111111111111111 -dqand614 and 1111111111111011111111111111111111 1111111111111111111111111111111111 -> 1111111111111011111111111111111111 -dqand615 and 1111111111111101111111111111111111 1111111111111111111111111111111111 -> 1111111111111101111111111111111111 -dqand616 and 1111111111111110111111111111111111 1111111111111111111111111111111111 -> 1111111111111110111111111111111111 -dqand617 and 1111111111111111011111111111111111 1111111111111111111111111111111111 -> 1111111111111111011111111111111111 -dqand618 and 1111111111111111101111111111111111 1111111111111111111111111111111111 -> 1111111111111111101111111111111111 -dqand619 and 1111111111111111110111111111111111 1111111111111111111111111111111111 -> 1111111111111111110111111111111111 -dqand620 and 1111111111111111111011111111111111 1111111111111111111111111111111111 -> 1111111111111111111011111111111111 -dqand621 and 1111111111111111111101111111111111 1111111111111111111111111111111111 -> 1111111111111111111101111111111111 -dqand622 and 1111111111111111111110111111111111 1111111111111111111111111111111111 -> 1111111111111111111110111111111111 -dqand623 and 1111111111111111111111011111111111 1111111111111111111111111111111111 -> 1111111111111111111111011111111111 -dqand624 and 1111111111111111111111101111111111 1111111111111111111111111111111111 -> 1111111111111111111111101111111111 -dqand625 and 1111111111111111111111110111111111 1111111111111111111111111111111111 -> 1111111111111111111111110111111111 -dqand626 and 1111111111111111111111111011111111 1111111111111111111111111111111111 -> 1111111111111111111111111011111111 -dqand627 and 1111111111111111111111111101111111 1111111111111111111111111111111111 -> 1111111111111111111111111101111111 -dqand628 and 1111111111111111111111111110111111 1111111111111111111111111111111111 -> 1111111111111111111111111110111111 -dqand629 and 1111111111111111111111111111011111 1111111111111111111111111111111111 -> 1111111111111111111111111111011111 -dqand630 and 1111111111111111111111111111101111 1111111111111111111111111111111111 -> 1111111111111111111111111111101111 -dqand631 and 1111111111111111111111111111110111 1111111111111111111111111111111111 -> 1111111111111111111111111111110111 -dqand632 and 1111111111111111111111111111111011 1111111111111111111111111111111111 -> 1111111111111111111111111111111011 -dqand633 and 1111111111111111111111111111111101 1111111111111111111111111111111111 -> 1111111111111111111111111111111101 -dqand634 and 1111111111111111111111111111111110 1111111111111111111111111111111111 -> 1111111111111111111111111111111110 - -dqand641 and 1111111111111111111111111111111111 0111111111111111111111111111111111 -> 111111111111111111111111111111111 -dqand642 and 1111111111111111111111111111111111 1011111111111111111111111111111111 -> 1011111111111111111111111111111111 -dqand643 and 1111111111111111111111111111111111 1101111111111111111111111111111111 -> 1101111111111111111111111111111111 -dqand644 and 1111111111111111111111111111111111 1110111111111111111111111111111111 -> 1110111111111111111111111111111111 -dqand645 and 1111111111111111111111111111111111 1111011111111111111111111111111111 -> 1111011111111111111111111111111111 -dqand646 and 1111111111111111111111111111111111 1111101111111111111111111111111111 -> 1111101111111111111111111111111111 -dqand647 and 1111111111111111111111111111111111 1111110111111111111111111111111111 -> 1111110111111111111111111111111111 -dqand648 and 1111111111111111111111111111111111 1111111011111111111111111111111111 -> 1111111011111111111111111111111111 -dqand649 and 1111111111111111111111111111111111 1111111101111111111111111111111111 -> 1111111101111111111111111111111111 -dqand650 and 1111111111111111111111111111111111 1111111110111111111111111111111111 -> 1111111110111111111111111111111111 -dqand651 and 1111111111111111111111111111111111 1111111111011111111111111111111111 -> 1111111111011111111111111111111111 -dqand652 and 1111111111111111111111111111111111 1111111111101111111111111111111111 -> 1111111111101111111111111111111111 -dqand653 and 1111111111111111111111111111111111 1111111111110111111111111111111111 -> 1111111111110111111111111111111111 -dqand654 and 1111111111111111111111111111111111 1111111111111011111111111111111111 -> 1111111111111011111111111111111111 -dqand655 and 1111111111111111111111111111111111 1111111111111101111111111111111111 -> 1111111111111101111111111111111111 -dqand656 and 1111111111111111111111111111111111 1111111111111110111111111111111111 -> 1111111111111110111111111111111111 -dqand657 and 1111111111111111111111111111111111 1111111111111111011111111111111111 -> 1111111111111111011111111111111111 -dqand658 and 1111111111111111111111111111111111 1111111111111111101111111111111111 -> 1111111111111111101111111111111111 -dqand659 and 1111111111111111111111111111111111 1111111111111111110111111111111111 -> 1111111111111111110111111111111111 -dqand660 and 1111111111111111111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111011111111111111 -dqand661 and 1111111111111111111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111101111111111111 -dqand662 and 1111111111111111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111110111111111111 -dqand663 and 1111111111111111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111011111111111 -dqand664 and 1111111111111111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111101111111111 -dqand665 and 1111111111111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111110111111111 -dqand666 and 1111111111111111111111111111111111 1111111111111111111111111011111111 -> 1111111111111111111111111011111111 -dqand667 and 1111111111111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111101111111 -dqand668 and 1111111111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111110111111 -dqand669 and 1111111111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111011111 -dqand670 and 1111111111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111101111 -dqand671 and 1111111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111110111 -dqand672 and 1111111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111011 -dqand673 and 1111111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111101 -dqand674 and 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111110 -dqand675 and 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 111111111111111111111111111111110 -dqand676 and 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111110 - -dqand021 and 1111111111111111 1111111111111111 -> 1111111111111111 -dqand024 and 1111111111111111 111111111111111 -> 111111111111111 -dqand025 and 1111111111111111 11111111111111 -> 11111111111111 -dqand026 and 1111111111111111 1111111111111 -> 1111111111111 -dqand027 and 1111111111111111 111111111111 -> 111111111111 -dqand028 and 1111111111111111 11111111111 -> 11111111111 -dqand029 and 1111111111111111 1111111111 -> 1111111111 -dqand030 and 1111111111111111 111111111 -> 111111111 -dqand031 and 1111111111111111 11111111 -> 11111111 -dqand032 and 1111111111111111 1111111 -> 1111111 -dqand033 and 1111111111111111 111111 -> 111111 -dqand034 and 1111111111111111 11111 -> 11111 -dqand035 and 1111111111111111 1111 -> 1111 -dqand036 and 1111111111111111 111 -> 111 -dqand037 and 1111111111111111 11 -> 11 -dqand038 and 1111111111111111 1 -> 1 -dqand039 and 1111111111111111 0 -> 0 - -dqand040 and 1111111111111111 1111111111111111 -> 1111111111111111 -dqand041 and 111111111111111 1111111111111111 -> 111111111111111 -dqand042 and 111111111111111 1111111111111111 -> 111111111111111 -dqand043 and 11111111111111 1111111111111111 -> 11111111111111 -dqand044 and 1111111111111 1111111111111111 -> 1111111111111 -dqand045 and 111111111111 1111111111111111 -> 111111111111 -dqand046 and 11111111111 1111111111111111 -> 11111111111 -dqand047 and 1111111111 1111111111111111 -> 1111111111 -dqand048 and 111111111 1111111111111111 -> 111111111 -dqand049 and 11111111 1111111111111111 -> 11111111 -dqand050 and 1111111 1111111111111111 -> 1111111 -dqand051 and 111111 1111111111111111 -> 111111 -dqand052 and 11111 1111111111111111 -> 11111 -dqand053 and 1111 1111111111111111 -> 1111 -dqand054 and 111 1111111111111111 -> 111 -dqand055 and 11 1111111111111111 -> 11 -dqand056 and 1 1111111111111111 -> 1 -dqand057 and 0 1111111111111111 -> 0 - -dqand150 and 1111111111 1 -> 1 -dqand151 and 111111111 1 -> 1 -dqand152 and 11111111 1 -> 1 -dqand153 and 1111111 1 -> 1 -dqand154 and 111111 1 -> 1 -dqand155 and 11111 1 -> 1 -dqand156 and 1111 1 -> 1 -dqand157 and 111 1 -> 1 -dqand158 and 11 1 -> 1 -dqand159 and 1 1 -> 1 - -dqand160 and 1111111111 0 -> 0 -dqand161 and 111111111 0 -> 0 -dqand162 and 11111111 0 -> 0 -dqand163 and 1111111 0 -> 0 -dqand164 and 111111 0 -> 0 -dqand165 and 11111 0 -> 0 -dqand166 and 1111 0 -> 0 -dqand167 and 111 0 -> 0 -dqand168 and 11 0 -> 0 -dqand169 and 1 0 -> 0 - -dqand170 and 1 1111111111 -> 1 -dqand171 and 1 111111111 -> 1 -dqand172 and 1 11111111 -> 1 -dqand173 and 1 1111111 -> 1 -dqand174 and 1 111111 -> 1 -dqand175 and 1 11111 -> 1 -dqand176 and 1 1111 -> 1 -dqand177 and 1 111 -> 1 -dqand178 and 1 11 -> 1 -dqand179 and 1 1 -> 1 - -dqand180 and 0 1111111111 -> 0 -dqand181 and 0 111111111 -> 0 -dqand182 and 0 11111111 -> 0 -dqand183 and 0 1111111 -> 0 -dqand184 and 0 111111 -> 0 -dqand185 and 0 11111 -> 0 -dqand186 and 0 1111 -> 0 -dqand187 and 0 111 -> 0 -dqand188 and 0 11 -> 0 -dqand189 and 0 1 -> 0 - -dqand090 and 011111111 111111111 -> 11111111 -dqand091 and 101111111 111111111 -> 101111111 -dqand092 and 110111111 111111111 -> 110111111 -dqand093 and 111011111 111111111 -> 111011111 -dqand094 and 111101111 111111111 -> 111101111 -dqand095 and 111110111 111111111 -> 111110111 -dqand096 and 111111011 111111111 -> 111111011 -dqand097 and 111111101 111111111 -> 111111101 -dqand098 and 111111110 111111111 -> 111111110 - -dqand100 and 111111111 011111111 -> 11111111 -dqand101 and 111111111 101111111 -> 101111111 -dqand102 and 111111111 110111111 -> 110111111 -dqand103 and 111111111 111011111 -> 111011111 -dqand104 and 111111111 111101111 -> 111101111 -dqand105 and 111111111 111110111 -> 111110111 -dqand106 and 111111111 111111011 -> 111111011 -dqand107 and 111111111 111111101 -> 111111101 -dqand108 and 111111111 111111110 -> 111111110 - --- non-0/1 should not be accepted, nor should signs -dqand220 and 111111112 111111111 -> NaN Invalid_operation -dqand221 and 333333333 333333333 -> NaN Invalid_operation -dqand222 and 555555555 555555555 -> NaN Invalid_operation -dqand223 and 777777777 777777777 -> NaN Invalid_operation -dqand224 and 999999999 999999999 -> NaN Invalid_operation -dqand225 and 222222222 999999999 -> NaN Invalid_operation -dqand226 and 444444444 999999999 -> NaN Invalid_operation -dqand227 and 666666666 999999999 -> NaN Invalid_operation -dqand228 and 888888888 999999999 -> NaN Invalid_operation -dqand229 and 999999999 222222222 -> NaN Invalid_operation -dqand230 and 999999999 444444444 -> NaN Invalid_operation -dqand231 and 999999999 666666666 -> NaN Invalid_operation -dqand232 and 999999999 888888888 -> NaN Invalid_operation --- a few randoms -dqand240 and 567468689 -934981942 -> NaN Invalid_operation -dqand241 and 567367689 934981942 -> NaN Invalid_operation -dqand242 and -631917772 -706014634 -> NaN Invalid_operation -dqand243 and -756253257 138579234 -> NaN Invalid_operation -dqand244 and 835590149 567435400 -> NaN Invalid_operation --- test MSD -dqand250 and 2000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqand251 and 7000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqand252 and 8000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqand253 and 9000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqand254 and 2000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqand255 and 7000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqand256 and 8000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqand257 and 9000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqand258 and 1000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation -dqand259 and 1000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation -dqand260 and 1000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation -dqand261 and 1000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation -dqand262 and 0000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation -dqand263 and 0000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation -dqand264 and 0000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation -dqand265 and 0000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation --- test MSD-1 -dqand270 and 0200000111000111000111001000000000 1000000111000111000111100000000010 -> NaN Invalid_operation -dqand271 and 0700000111000111000111000100000000 1000000111000111000111010000000100 -> NaN Invalid_operation -dqand272 and 0800000111000111000111000010000000 1000000111000111000111001000001000 -> NaN Invalid_operation -dqand273 and 0900000111000111000111000001000000 1000000111000111000111000100010000 -> NaN Invalid_operation -dqand274 and 1000000111000111000111000000100000 0200000111000111000111000010100000 -> NaN Invalid_operation -dqand275 and 1000000111000111000111000000010000 0700000111000111000111000001000000 -> NaN Invalid_operation -dqand276 and 1000000111000111000111000000001000 0800000111000111000111000010100000 -> NaN Invalid_operation -dqand277 and 1000000111000111000111000000000100 0900000111000111000111000000010000 -> NaN Invalid_operation --- test LSD -dqand280 and 0010000111000111000111000000000002 1000000111000111000111000100000001 -> NaN Invalid_operation -dqand281 and 0001000111000111000111000000000007 1000000111000111000111001000000011 -> NaN Invalid_operation -dqand282 and 0000000111000111000111100000000008 1000000111000111000111010000000001 -> NaN Invalid_operation -dqand283 and 0000000111000111000111010000000009 1000000111000111000111100000000001 -> NaN Invalid_operation -dqand284 and 1000000111000111000111001000000000 0001000111000111000111000000000002 -> NaN Invalid_operation -dqand285 and 1000000111000111000111000100000000 0010000111000111000111000000000007 -> NaN Invalid_operation -dqand286 and 1000000111000111000111000010000000 0100000111000111000111000000000008 -> NaN Invalid_operation -dqand287 and 1000000111000111000111000001000000 1000000111000111000111000000000009 -> NaN Invalid_operation --- test Middie -dqand288 and 0010000111000111000111000020000000 1000000111000111000111001000000000 -> NaN Invalid_operation -dqand289 and 0001000111000111000111000070000001 1000000111000111000111000100000000 -> NaN Invalid_operation -dqand290 and 0000000111000111000111100080000010 1000000111000111000111000010000000 -> NaN Invalid_operation -dqand291 and 0000000111000111000111010090000100 1000000111000111000111000001000000 -> NaN Invalid_operation -dqand292 and 1000000111000111000111001000001000 0000000111000111000111000020100000 -> NaN Invalid_operation -dqand293 and 1000000111000111000111000100010000 0000000111000111000111000070010000 -> NaN Invalid_operation -dqand294 and 1000000111000111000111000010100000 0000000111000111000111000080001000 -> NaN Invalid_operation -dqand295 and 1000000111000111000111000001000000 0000000111000111000111000090000100 -> NaN Invalid_operation --- signs -dqand296 and -1000000111000111000111000001000000 -0000001110001110001110010000000100 -> NaN Invalid_operation -dqand297 and -1000000111000111000111000001000000 0000001110001110001110000010000100 -> NaN Invalid_operation -dqand298 and 1000000111000111000111000001000000 -0000001110001110001110001000000100 -> NaN Invalid_operation -dqand299 and 1000000111000111000111000001000000 0000001110001110001110000011000100 -> 110000110000110000001000000 - --- Nmax, Nmin, Ntiny-like -dqand331 and 2 9.99999999E+999 -> NaN Invalid_operation -dqand332 and 3 1E-999 -> NaN Invalid_operation -dqand333 and 4 1.00000000E-999 -> NaN Invalid_operation -dqand334 and 5 1E-900 -> NaN Invalid_operation -dqand335 and 6 -1E-900 -> NaN Invalid_operation -dqand336 and 7 -1.00000000E-999 -> NaN Invalid_operation -dqand337 and 8 -1E-999 -> NaN Invalid_operation -dqand338 and 9 -9.99999999E+999 -> NaN Invalid_operation -dqand341 and 9.99999999E+999 -18 -> NaN Invalid_operation -dqand342 and 1E-999 01 -> NaN Invalid_operation -dqand343 and 1.00000000E-999 -18 -> NaN Invalid_operation -dqand344 and 1E-900 18 -> NaN Invalid_operation -dqand345 and -1E-900 -10 -> NaN Invalid_operation -dqand346 and -1.00000000E-999 18 -> NaN Invalid_operation -dqand347 and -1E-999 10 -> NaN Invalid_operation -dqand348 and -9.99999999E+999 -18 -> NaN Invalid_operation - --- A few other non-integers -dqand361 and 1.0 1 -> NaN Invalid_operation -dqand362 and 1E+1 1 -> NaN Invalid_operation -dqand363 and 0.0 1 -> NaN Invalid_operation -dqand364 and 0E+1 1 -> NaN Invalid_operation -dqand365 and 9.9 1 -> NaN Invalid_operation -dqand366 and 9E+1 1 -> NaN Invalid_operation -dqand371 and 0 1.0 -> NaN Invalid_operation -dqand372 and 0 1E+1 -> NaN Invalid_operation -dqand373 and 0 0.0 -> NaN Invalid_operation -dqand374 and 0 0E+1 -> NaN Invalid_operation -dqand375 and 0 9.9 -> NaN Invalid_operation -dqand376 and 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -dqand780 and -Inf -Inf -> NaN Invalid_operation -dqand781 and -Inf -1000 -> NaN Invalid_operation -dqand782 and -Inf -1 -> NaN Invalid_operation -dqand783 and -Inf -0 -> NaN Invalid_operation -dqand784 and -Inf 0 -> NaN Invalid_operation -dqand785 and -Inf 1 -> NaN Invalid_operation -dqand786 and -Inf 1000 -> NaN Invalid_operation -dqand787 and -1000 -Inf -> NaN Invalid_operation -dqand788 and -Inf -Inf -> NaN Invalid_operation -dqand789 and -1 -Inf -> NaN Invalid_operation -dqand790 and -0 -Inf -> NaN Invalid_operation -dqand791 and 0 -Inf -> NaN Invalid_operation -dqand792 and 1 -Inf -> NaN Invalid_operation -dqand793 and 1000 -Inf -> NaN Invalid_operation -dqand794 and Inf -Inf -> NaN Invalid_operation - -dqand800 and Inf -Inf -> NaN Invalid_operation -dqand801 and Inf -1000 -> NaN Invalid_operation -dqand802 and Inf -1 -> NaN Invalid_operation -dqand803 and Inf -0 -> NaN Invalid_operation -dqand804 and Inf 0 -> NaN Invalid_operation -dqand805 and Inf 1 -> NaN Invalid_operation -dqand806 and Inf 1000 -> NaN Invalid_operation -dqand807 and Inf Inf -> NaN Invalid_operation -dqand808 and -1000 Inf -> NaN Invalid_operation -dqand809 and -Inf Inf -> NaN Invalid_operation -dqand810 and -1 Inf -> NaN Invalid_operation -dqand811 and -0 Inf -> NaN Invalid_operation -dqand812 and 0 Inf -> NaN Invalid_operation -dqand813 and 1 Inf -> NaN Invalid_operation -dqand814 and 1000 Inf -> NaN Invalid_operation -dqand815 and Inf Inf -> NaN Invalid_operation - -dqand821 and NaN -Inf -> NaN Invalid_operation -dqand822 and NaN -1000 -> NaN Invalid_operation -dqand823 and NaN -1 -> NaN Invalid_operation -dqand824 and NaN -0 -> NaN Invalid_operation -dqand825 and NaN 0 -> NaN Invalid_operation -dqand826 and NaN 1 -> NaN Invalid_operation -dqand827 and NaN 1000 -> NaN Invalid_operation -dqand828 and NaN Inf -> NaN Invalid_operation -dqand829 and NaN NaN -> NaN Invalid_operation -dqand830 and -Inf NaN -> NaN Invalid_operation -dqand831 and -1000 NaN -> NaN Invalid_operation -dqand832 and -1 NaN -> NaN Invalid_operation -dqand833 and -0 NaN -> NaN Invalid_operation -dqand834 and 0 NaN -> NaN Invalid_operation -dqand835 and 1 NaN -> NaN Invalid_operation -dqand836 and 1000 NaN -> NaN Invalid_operation -dqand837 and Inf NaN -> NaN Invalid_operation - -dqand841 and sNaN -Inf -> NaN Invalid_operation -dqand842 and sNaN -1000 -> NaN Invalid_operation -dqand843 and sNaN -1 -> NaN Invalid_operation -dqand844 and sNaN -0 -> NaN Invalid_operation -dqand845 and sNaN 0 -> NaN Invalid_operation -dqand846 and sNaN 1 -> NaN Invalid_operation -dqand847 and sNaN 1000 -> NaN Invalid_operation -dqand848 and sNaN NaN -> NaN Invalid_operation -dqand849 and sNaN sNaN -> NaN Invalid_operation -dqand850 and NaN sNaN -> NaN Invalid_operation -dqand851 and -Inf sNaN -> NaN Invalid_operation -dqand852 and -1000 sNaN -> NaN Invalid_operation -dqand853 and -1 sNaN -> NaN Invalid_operation -dqand854 and -0 sNaN -> NaN Invalid_operation -dqand855 and 0 sNaN -> NaN Invalid_operation -dqand856 and 1 sNaN -> NaN Invalid_operation -dqand857 and 1000 sNaN -> NaN Invalid_operation -dqand858 and Inf sNaN -> NaN Invalid_operation -dqand859 and NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqand861 and NaN1 -Inf -> NaN Invalid_operation -dqand862 and +NaN2 -1000 -> NaN Invalid_operation -dqand863 and NaN3 1000 -> NaN Invalid_operation -dqand864 and NaN4 Inf -> NaN Invalid_operation -dqand865 and NaN5 +NaN6 -> NaN Invalid_operation -dqand866 and -Inf NaN7 -> NaN Invalid_operation -dqand867 and -1000 NaN8 -> NaN Invalid_operation -dqand868 and 1000 NaN9 -> NaN Invalid_operation -dqand869 and Inf +NaN10 -> NaN Invalid_operation -dqand871 and sNaN11 -Inf -> NaN Invalid_operation -dqand872 and sNaN12 -1000 -> NaN Invalid_operation -dqand873 and sNaN13 1000 -> NaN Invalid_operation -dqand874 and sNaN14 NaN17 -> NaN Invalid_operation -dqand875 and sNaN15 sNaN18 -> NaN Invalid_operation -dqand876 and NaN16 sNaN19 -> NaN Invalid_operation -dqand877 and -Inf +sNaN20 -> NaN Invalid_operation -dqand878 and -1000 sNaN21 -> NaN Invalid_operation -dqand879 and 1000 sNaN22 -> NaN Invalid_operation -dqand880 and Inf sNaN23 -> NaN Invalid_operation -dqand881 and +NaN25 +sNaN24 -> NaN Invalid_operation -dqand882 and -NaN26 NaN28 -> NaN Invalid_operation -dqand883 and -sNaN27 sNaN29 -> NaN Invalid_operation -dqand884 and 1000 -NaN30 -> NaN Invalid_operation -dqand885 and 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqAnd.decTest -- digitwise logical AND for decQuads -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check (truth table) +dqand001 and 0 0 -> 0 +dqand002 and 0 1 -> 0 +dqand003 and 1 0 -> 0 +dqand004 and 1 1 -> 1 +dqand005 and 1100 1010 -> 1000 +-- and at msd and msd-1 +-- 1234567890123456789012345678901234 +dqand006 and 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 +dqand007 and 0000000000000000000000000000000000 1000000000000000000000000000000000 -> 0 +dqand008 and 1000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 +dqand009 and 1000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 +dqand010 and 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 +dqand011 and 0000000000000000000000000000000000 0100000000000000000000000000000000 -> 0 +dqand012 and 0100000000000000000000000000000000 0000000000000000000000000000000000 -> 0 +dqand013 and 0100000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000 + +-- Various lengths +-- 1234567890123456789012345678901234 + +dqand601 and 0111111111111111111111111111111111 1111111111111111111111111111111111 -> 111111111111111111111111111111111 +dqand602 and 1011111111111111111111111111111111 1111111111111111111111111111111111 -> 1011111111111111111111111111111111 +dqand603 and 1101111111111111111111111111111111 1111111111111111111111111111111111 -> 1101111111111111111111111111111111 +dqand604 and 1110111111111111111111111111111111 1111111111111111111111111111111111 -> 1110111111111111111111111111111111 +dqand605 and 1111011111111111111111111111111111 1111111111111111111111111111111111 -> 1111011111111111111111111111111111 +dqand606 and 1111101111111111111111111111111111 1111111111111111111111111111111111 -> 1111101111111111111111111111111111 +dqand607 and 1111110111111111111111111111111111 1111111111111111111111111111111111 -> 1111110111111111111111111111111111 +dqand608 and 1111111011111111111111111111111111 1111111111111111111111111111111111 -> 1111111011111111111111111111111111 +dqand609 and 1111111101111111111111111111111111 1111111111111111111111111111111111 -> 1111111101111111111111111111111111 +dqand610 and 1111111110111111111111111111111111 1111111111111111111111111111111111 -> 1111111110111111111111111111111111 +dqand611 and 1111111111011111111111111111111111 1111111111111111111111111111111111 -> 1111111111011111111111111111111111 +dqand612 and 1111111111101111111111111111111111 1111111111111111111111111111111111 -> 1111111111101111111111111111111111 +dqand613 and 1111111111110111111111111111111111 1111111111111111111111111111111111 -> 1111111111110111111111111111111111 +dqand614 and 1111111111111011111111111111111111 1111111111111111111111111111111111 -> 1111111111111011111111111111111111 +dqand615 and 1111111111111101111111111111111111 1111111111111111111111111111111111 -> 1111111111111101111111111111111111 +dqand616 and 1111111111111110111111111111111111 1111111111111111111111111111111111 -> 1111111111111110111111111111111111 +dqand617 and 1111111111111111011111111111111111 1111111111111111111111111111111111 -> 1111111111111111011111111111111111 +dqand618 and 1111111111111111101111111111111111 1111111111111111111111111111111111 -> 1111111111111111101111111111111111 +dqand619 and 1111111111111111110111111111111111 1111111111111111111111111111111111 -> 1111111111111111110111111111111111 +dqand620 and 1111111111111111111011111111111111 1111111111111111111111111111111111 -> 1111111111111111111011111111111111 +dqand621 and 1111111111111111111101111111111111 1111111111111111111111111111111111 -> 1111111111111111111101111111111111 +dqand622 and 1111111111111111111110111111111111 1111111111111111111111111111111111 -> 1111111111111111111110111111111111 +dqand623 and 1111111111111111111111011111111111 1111111111111111111111111111111111 -> 1111111111111111111111011111111111 +dqand624 and 1111111111111111111111101111111111 1111111111111111111111111111111111 -> 1111111111111111111111101111111111 +dqand625 and 1111111111111111111111110111111111 1111111111111111111111111111111111 -> 1111111111111111111111110111111111 +dqand626 and 1111111111111111111111111011111111 1111111111111111111111111111111111 -> 1111111111111111111111111011111111 +dqand627 and 1111111111111111111111111101111111 1111111111111111111111111111111111 -> 1111111111111111111111111101111111 +dqand628 and 1111111111111111111111111110111111 1111111111111111111111111111111111 -> 1111111111111111111111111110111111 +dqand629 and 1111111111111111111111111111011111 1111111111111111111111111111111111 -> 1111111111111111111111111111011111 +dqand630 and 1111111111111111111111111111101111 1111111111111111111111111111111111 -> 1111111111111111111111111111101111 +dqand631 and 1111111111111111111111111111110111 1111111111111111111111111111111111 -> 1111111111111111111111111111110111 +dqand632 and 1111111111111111111111111111111011 1111111111111111111111111111111111 -> 1111111111111111111111111111111011 +dqand633 and 1111111111111111111111111111111101 1111111111111111111111111111111111 -> 1111111111111111111111111111111101 +dqand634 and 1111111111111111111111111111111110 1111111111111111111111111111111111 -> 1111111111111111111111111111111110 + +dqand641 and 1111111111111111111111111111111111 0111111111111111111111111111111111 -> 111111111111111111111111111111111 +dqand642 and 1111111111111111111111111111111111 1011111111111111111111111111111111 -> 1011111111111111111111111111111111 +dqand643 and 1111111111111111111111111111111111 1101111111111111111111111111111111 -> 1101111111111111111111111111111111 +dqand644 and 1111111111111111111111111111111111 1110111111111111111111111111111111 -> 1110111111111111111111111111111111 +dqand645 and 1111111111111111111111111111111111 1111011111111111111111111111111111 -> 1111011111111111111111111111111111 +dqand646 and 1111111111111111111111111111111111 1111101111111111111111111111111111 -> 1111101111111111111111111111111111 +dqand647 and 1111111111111111111111111111111111 1111110111111111111111111111111111 -> 1111110111111111111111111111111111 +dqand648 and 1111111111111111111111111111111111 1111111011111111111111111111111111 -> 1111111011111111111111111111111111 +dqand649 and 1111111111111111111111111111111111 1111111101111111111111111111111111 -> 1111111101111111111111111111111111 +dqand650 and 1111111111111111111111111111111111 1111111110111111111111111111111111 -> 1111111110111111111111111111111111 +dqand651 and 1111111111111111111111111111111111 1111111111011111111111111111111111 -> 1111111111011111111111111111111111 +dqand652 and 1111111111111111111111111111111111 1111111111101111111111111111111111 -> 1111111111101111111111111111111111 +dqand653 and 1111111111111111111111111111111111 1111111111110111111111111111111111 -> 1111111111110111111111111111111111 +dqand654 and 1111111111111111111111111111111111 1111111111111011111111111111111111 -> 1111111111111011111111111111111111 +dqand655 and 1111111111111111111111111111111111 1111111111111101111111111111111111 -> 1111111111111101111111111111111111 +dqand656 and 1111111111111111111111111111111111 1111111111111110111111111111111111 -> 1111111111111110111111111111111111 +dqand657 and 1111111111111111111111111111111111 1111111111111111011111111111111111 -> 1111111111111111011111111111111111 +dqand658 and 1111111111111111111111111111111111 1111111111111111101111111111111111 -> 1111111111111111101111111111111111 +dqand659 and 1111111111111111111111111111111111 1111111111111111110111111111111111 -> 1111111111111111110111111111111111 +dqand660 and 1111111111111111111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111011111111111111 +dqand661 and 1111111111111111111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111101111111111111 +dqand662 and 1111111111111111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111110111111111111 +dqand663 and 1111111111111111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111011111111111 +dqand664 and 1111111111111111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111101111111111 +dqand665 and 1111111111111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111110111111111 +dqand666 and 1111111111111111111111111111111111 1111111111111111111111111011111111 -> 1111111111111111111111111011111111 +dqand667 and 1111111111111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111101111111 +dqand668 and 1111111111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111110111111 +dqand669 and 1111111111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111011111 +dqand670 and 1111111111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111101111 +dqand671 and 1111111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111110111 +dqand672 and 1111111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111011 +dqand673 and 1111111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111101 +dqand674 and 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111110 +dqand675 and 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 111111111111111111111111111111110 +dqand676 and 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111110 + +dqand021 and 1111111111111111 1111111111111111 -> 1111111111111111 +dqand024 and 1111111111111111 111111111111111 -> 111111111111111 +dqand025 and 1111111111111111 11111111111111 -> 11111111111111 +dqand026 and 1111111111111111 1111111111111 -> 1111111111111 +dqand027 and 1111111111111111 111111111111 -> 111111111111 +dqand028 and 1111111111111111 11111111111 -> 11111111111 +dqand029 and 1111111111111111 1111111111 -> 1111111111 +dqand030 and 1111111111111111 111111111 -> 111111111 +dqand031 and 1111111111111111 11111111 -> 11111111 +dqand032 and 1111111111111111 1111111 -> 1111111 +dqand033 and 1111111111111111 111111 -> 111111 +dqand034 and 1111111111111111 11111 -> 11111 +dqand035 and 1111111111111111 1111 -> 1111 +dqand036 and 1111111111111111 111 -> 111 +dqand037 and 1111111111111111 11 -> 11 +dqand038 and 1111111111111111 1 -> 1 +dqand039 and 1111111111111111 0 -> 0 + +dqand040 and 1111111111111111 1111111111111111 -> 1111111111111111 +dqand041 and 111111111111111 1111111111111111 -> 111111111111111 +dqand042 and 111111111111111 1111111111111111 -> 111111111111111 +dqand043 and 11111111111111 1111111111111111 -> 11111111111111 +dqand044 and 1111111111111 1111111111111111 -> 1111111111111 +dqand045 and 111111111111 1111111111111111 -> 111111111111 +dqand046 and 11111111111 1111111111111111 -> 11111111111 +dqand047 and 1111111111 1111111111111111 -> 1111111111 +dqand048 and 111111111 1111111111111111 -> 111111111 +dqand049 and 11111111 1111111111111111 -> 11111111 +dqand050 and 1111111 1111111111111111 -> 1111111 +dqand051 and 111111 1111111111111111 -> 111111 +dqand052 and 11111 1111111111111111 -> 11111 +dqand053 and 1111 1111111111111111 -> 1111 +dqand054 and 111 1111111111111111 -> 111 +dqand055 and 11 1111111111111111 -> 11 +dqand056 and 1 1111111111111111 -> 1 +dqand057 and 0 1111111111111111 -> 0 + +dqand150 and 1111111111 1 -> 1 +dqand151 and 111111111 1 -> 1 +dqand152 and 11111111 1 -> 1 +dqand153 and 1111111 1 -> 1 +dqand154 and 111111 1 -> 1 +dqand155 and 11111 1 -> 1 +dqand156 and 1111 1 -> 1 +dqand157 and 111 1 -> 1 +dqand158 and 11 1 -> 1 +dqand159 and 1 1 -> 1 + +dqand160 and 1111111111 0 -> 0 +dqand161 and 111111111 0 -> 0 +dqand162 and 11111111 0 -> 0 +dqand163 and 1111111 0 -> 0 +dqand164 and 111111 0 -> 0 +dqand165 and 11111 0 -> 0 +dqand166 and 1111 0 -> 0 +dqand167 and 111 0 -> 0 +dqand168 and 11 0 -> 0 +dqand169 and 1 0 -> 0 + +dqand170 and 1 1111111111 -> 1 +dqand171 and 1 111111111 -> 1 +dqand172 and 1 11111111 -> 1 +dqand173 and 1 1111111 -> 1 +dqand174 and 1 111111 -> 1 +dqand175 and 1 11111 -> 1 +dqand176 and 1 1111 -> 1 +dqand177 and 1 111 -> 1 +dqand178 and 1 11 -> 1 +dqand179 and 1 1 -> 1 + +dqand180 and 0 1111111111 -> 0 +dqand181 and 0 111111111 -> 0 +dqand182 and 0 11111111 -> 0 +dqand183 and 0 1111111 -> 0 +dqand184 and 0 111111 -> 0 +dqand185 and 0 11111 -> 0 +dqand186 and 0 1111 -> 0 +dqand187 and 0 111 -> 0 +dqand188 and 0 11 -> 0 +dqand189 and 0 1 -> 0 + +dqand090 and 011111111 111111111 -> 11111111 +dqand091 and 101111111 111111111 -> 101111111 +dqand092 and 110111111 111111111 -> 110111111 +dqand093 and 111011111 111111111 -> 111011111 +dqand094 and 111101111 111111111 -> 111101111 +dqand095 and 111110111 111111111 -> 111110111 +dqand096 and 111111011 111111111 -> 111111011 +dqand097 and 111111101 111111111 -> 111111101 +dqand098 and 111111110 111111111 -> 111111110 + +dqand100 and 111111111 011111111 -> 11111111 +dqand101 and 111111111 101111111 -> 101111111 +dqand102 and 111111111 110111111 -> 110111111 +dqand103 and 111111111 111011111 -> 111011111 +dqand104 and 111111111 111101111 -> 111101111 +dqand105 and 111111111 111110111 -> 111110111 +dqand106 and 111111111 111111011 -> 111111011 +dqand107 and 111111111 111111101 -> 111111101 +dqand108 and 111111111 111111110 -> 111111110 + +-- non-0/1 should not be accepted, nor should signs +dqand220 and 111111112 111111111 -> NaN Invalid_operation +dqand221 and 333333333 333333333 -> NaN Invalid_operation +dqand222 and 555555555 555555555 -> NaN Invalid_operation +dqand223 and 777777777 777777777 -> NaN Invalid_operation +dqand224 and 999999999 999999999 -> NaN Invalid_operation +dqand225 and 222222222 999999999 -> NaN Invalid_operation +dqand226 and 444444444 999999999 -> NaN Invalid_operation +dqand227 and 666666666 999999999 -> NaN Invalid_operation +dqand228 and 888888888 999999999 -> NaN Invalid_operation +dqand229 and 999999999 222222222 -> NaN Invalid_operation +dqand230 and 999999999 444444444 -> NaN Invalid_operation +dqand231 and 999999999 666666666 -> NaN Invalid_operation +dqand232 and 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +dqand240 and 567468689 -934981942 -> NaN Invalid_operation +dqand241 and 567367689 934981942 -> NaN Invalid_operation +dqand242 and -631917772 -706014634 -> NaN Invalid_operation +dqand243 and -756253257 138579234 -> NaN Invalid_operation +dqand244 and 835590149 567435400 -> NaN Invalid_operation +-- test MSD +dqand250 and 2000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqand251 and 7000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqand252 and 8000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqand253 and 9000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqand254 and 2000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqand255 and 7000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqand256 and 8000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqand257 and 9000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqand258 and 1000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation +dqand259 and 1000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation +dqand260 and 1000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation +dqand261 and 1000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation +dqand262 and 0000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation +dqand263 and 0000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation +dqand264 and 0000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation +dqand265 and 0000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation +-- test MSD-1 +dqand270 and 0200000111000111000111001000000000 1000000111000111000111100000000010 -> NaN Invalid_operation +dqand271 and 0700000111000111000111000100000000 1000000111000111000111010000000100 -> NaN Invalid_operation +dqand272 and 0800000111000111000111000010000000 1000000111000111000111001000001000 -> NaN Invalid_operation +dqand273 and 0900000111000111000111000001000000 1000000111000111000111000100010000 -> NaN Invalid_operation +dqand274 and 1000000111000111000111000000100000 0200000111000111000111000010100000 -> NaN Invalid_operation +dqand275 and 1000000111000111000111000000010000 0700000111000111000111000001000000 -> NaN Invalid_operation +dqand276 and 1000000111000111000111000000001000 0800000111000111000111000010100000 -> NaN Invalid_operation +dqand277 and 1000000111000111000111000000000100 0900000111000111000111000000010000 -> NaN Invalid_operation +-- test LSD +dqand280 and 0010000111000111000111000000000002 1000000111000111000111000100000001 -> NaN Invalid_operation +dqand281 and 0001000111000111000111000000000007 1000000111000111000111001000000011 -> NaN Invalid_operation +dqand282 and 0000000111000111000111100000000008 1000000111000111000111010000000001 -> NaN Invalid_operation +dqand283 and 0000000111000111000111010000000009 1000000111000111000111100000000001 -> NaN Invalid_operation +dqand284 and 1000000111000111000111001000000000 0001000111000111000111000000000002 -> NaN Invalid_operation +dqand285 and 1000000111000111000111000100000000 0010000111000111000111000000000007 -> NaN Invalid_operation +dqand286 and 1000000111000111000111000010000000 0100000111000111000111000000000008 -> NaN Invalid_operation +dqand287 and 1000000111000111000111000001000000 1000000111000111000111000000000009 -> NaN Invalid_operation +-- test Middie +dqand288 and 0010000111000111000111000020000000 1000000111000111000111001000000000 -> NaN Invalid_operation +dqand289 and 0001000111000111000111000070000001 1000000111000111000111000100000000 -> NaN Invalid_operation +dqand290 and 0000000111000111000111100080000010 1000000111000111000111000010000000 -> NaN Invalid_operation +dqand291 and 0000000111000111000111010090000100 1000000111000111000111000001000000 -> NaN Invalid_operation +dqand292 and 1000000111000111000111001000001000 0000000111000111000111000020100000 -> NaN Invalid_operation +dqand293 and 1000000111000111000111000100010000 0000000111000111000111000070010000 -> NaN Invalid_operation +dqand294 and 1000000111000111000111000010100000 0000000111000111000111000080001000 -> NaN Invalid_operation +dqand295 and 1000000111000111000111000001000000 0000000111000111000111000090000100 -> NaN Invalid_operation +-- signs +dqand296 and -1000000111000111000111000001000000 -0000001110001110001110010000000100 -> NaN Invalid_operation +dqand297 and -1000000111000111000111000001000000 0000001110001110001110000010000100 -> NaN Invalid_operation +dqand298 and 1000000111000111000111000001000000 -0000001110001110001110001000000100 -> NaN Invalid_operation +dqand299 and 1000000111000111000111000001000000 0000001110001110001110000011000100 -> 110000110000110000001000000 + +-- Nmax, Nmin, Ntiny-like +dqand331 and 2 9.99999999E+999 -> NaN Invalid_operation +dqand332 and 3 1E-999 -> NaN Invalid_operation +dqand333 and 4 1.00000000E-999 -> NaN Invalid_operation +dqand334 and 5 1E-900 -> NaN Invalid_operation +dqand335 and 6 -1E-900 -> NaN Invalid_operation +dqand336 and 7 -1.00000000E-999 -> NaN Invalid_operation +dqand337 and 8 -1E-999 -> NaN Invalid_operation +dqand338 and 9 -9.99999999E+999 -> NaN Invalid_operation +dqand341 and 9.99999999E+999 -18 -> NaN Invalid_operation +dqand342 and 1E-999 01 -> NaN Invalid_operation +dqand343 and 1.00000000E-999 -18 -> NaN Invalid_operation +dqand344 and 1E-900 18 -> NaN Invalid_operation +dqand345 and -1E-900 -10 -> NaN Invalid_operation +dqand346 and -1.00000000E-999 18 -> NaN Invalid_operation +dqand347 and -1E-999 10 -> NaN Invalid_operation +dqand348 and -9.99999999E+999 -18 -> NaN Invalid_operation + +-- A few other non-integers +dqand361 and 1.0 1 -> NaN Invalid_operation +dqand362 and 1E+1 1 -> NaN Invalid_operation +dqand363 and 0.0 1 -> NaN Invalid_operation +dqand364 and 0E+1 1 -> NaN Invalid_operation +dqand365 and 9.9 1 -> NaN Invalid_operation +dqand366 and 9E+1 1 -> NaN Invalid_operation +dqand371 and 0 1.0 -> NaN Invalid_operation +dqand372 and 0 1E+1 -> NaN Invalid_operation +dqand373 and 0 0.0 -> NaN Invalid_operation +dqand374 and 0 0E+1 -> NaN Invalid_operation +dqand375 and 0 9.9 -> NaN Invalid_operation +dqand376 and 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +dqand780 and -Inf -Inf -> NaN Invalid_operation +dqand781 and -Inf -1000 -> NaN Invalid_operation +dqand782 and -Inf -1 -> NaN Invalid_operation +dqand783 and -Inf -0 -> NaN Invalid_operation +dqand784 and -Inf 0 -> NaN Invalid_operation +dqand785 and -Inf 1 -> NaN Invalid_operation +dqand786 and -Inf 1000 -> NaN Invalid_operation +dqand787 and -1000 -Inf -> NaN Invalid_operation +dqand788 and -Inf -Inf -> NaN Invalid_operation +dqand789 and -1 -Inf -> NaN Invalid_operation +dqand790 and -0 -Inf -> NaN Invalid_operation +dqand791 and 0 -Inf -> NaN Invalid_operation +dqand792 and 1 -Inf -> NaN Invalid_operation +dqand793 and 1000 -Inf -> NaN Invalid_operation +dqand794 and Inf -Inf -> NaN Invalid_operation + +dqand800 and Inf -Inf -> NaN Invalid_operation +dqand801 and Inf -1000 -> NaN Invalid_operation +dqand802 and Inf -1 -> NaN Invalid_operation +dqand803 and Inf -0 -> NaN Invalid_operation +dqand804 and Inf 0 -> NaN Invalid_operation +dqand805 and Inf 1 -> NaN Invalid_operation +dqand806 and Inf 1000 -> NaN Invalid_operation +dqand807 and Inf Inf -> NaN Invalid_operation +dqand808 and -1000 Inf -> NaN Invalid_operation +dqand809 and -Inf Inf -> NaN Invalid_operation +dqand810 and -1 Inf -> NaN Invalid_operation +dqand811 and -0 Inf -> NaN Invalid_operation +dqand812 and 0 Inf -> NaN Invalid_operation +dqand813 and 1 Inf -> NaN Invalid_operation +dqand814 and 1000 Inf -> NaN Invalid_operation +dqand815 and Inf Inf -> NaN Invalid_operation + +dqand821 and NaN -Inf -> NaN Invalid_operation +dqand822 and NaN -1000 -> NaN Invalid_operation +dqand823 and NaN -1 -> NaN Invalid_operation +dqand824 and NaN -0 -> NaN Invalid_operation +dqand825 and NaN 0 -> NaN Invalid_operation +dqand826 and NaN 1 -> NaN Invalid_operation +dqand827 and NaN 1000 -> NaN Invalid_operation +dqand828 and NaN Inf -> NaN Invalid_operation +dqand829 and NaN NaN -> NaN Invalid_operation +dqand830 and -Inf NaN -> NaN Invalid_operation +dqand831 and -1000 NaN -> NaN Invalid_operation +dqand832 and -1 NaN -> NaN Invalid_operation +dqand833 and -0 NaN -> NaN Invalid_operation +dqand834 and 0 NaN -> NaN Invalid_operation +dqand835 and 1 NaN -> NaN Invalid_operation +dqand836 and 1000 NaN -> NaN Invalid_operation +dqand837 and Inf NaN -> NaN Invalid_operation + +dqand841 and sNaN -Inf -> NaN Invalid_operation +dqand842 and sNaN -1000 -> NaN Invalid_operation +dqand843 and sNaN -1 -> NaN Invalid_operation +dqand844 and sNaN -0 -> NaN Invalid_operation +dqand845 and sNaN 0 -> NaN Invalid_operation +dqand846 and sNaN 1 -> NaN Invalid_operation +dqand847 and sNaN 1000 -> NaN Invalid_operation +dqand848 and sNaN NaN -> NaN Invalid_operation +dqand849 and sNaN sNaN -> NaN Invalid_operation +dqand850 and NaN sNaN -> NaN Invalid_operation +dqand851 and -Inf sNaN -> NaN Invalid_operation +dqand852 and -1000 sNaN -> NaN Invalid_operation +dqand853 and -1 sNaN -> NaN Invalid_operation +dqand854 and -0 sNaN -> NaN Invalid_operation +dqand855 and 0 sNaN -> NaN Invalid_operation +dqand856 and 1 sNaN -> NaN Invalid_operation +dqand857 and 1000 sNaN -> NaN Invalid_operation +dqand858 and Inf sNaN -> NaN Invalid_operation +dqand859 and NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqand861 and NaN1 -Inf -> NaN Invalid_operation +dqand862 and +NaN2 -1000 -> NaN Invalid_operation +dqand863 and NaN3 1000 -> NaN Invalid_operation +dqand864 and NaN4 Inf -> NaN Invalid_operation +dqand865 and NaN5 +NaN6 -> NaN Invalid_operation +dqand866 and -Inf NaN7 -> NaN Invalid_operation +dqand867 and -1000 NaN8 -> NaN Invalid_operation +dqand868 and 1000 NaN9 -> NaN Invalid_operation +dqand869 and Inf +NaN10 -> NaN Invalid_operation +dqand871 and sNaN11 -Inf -> NaN Invalid_operation +dqand872 and sNaN12 -1000 -> NaN Invalid_operation +dqand873 and sNaN13 1000 -> NaN Invalid_operation +dqand874 and sNaN14 NaN17 -> NaN Invalid_operation +dqand875 and sNaN15 sNaN18 -> NaN Invalid_operation +dqand876 and NaN16 sNaN19 -> NaN Invalid_operation +dqand877 and -Inf +sNaN20 -> NaN Invalid_operation +dqand878 and -1000 sNaN21 -> NaN Invalid_operation +dqand879 and 1000 sNaN22 -> NaN Invalid_operation +dqand880 and Inf sNaN23 -> NaN Invalid_operation +dqand881 and +NaN25 +sNaN24 -> NaN Invalid_operation +dqand882 and -NaN26 NaN28 -> NaN Invalid_operation +dqand883 and -sNaN27 sNaN29 -> NaN Invalid_operation +dqand884 and 1000 -NaN30 -> NaN Invalid_operation +dqand885 and 1000 -sNaN31 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqBase.decTest b/Lib/test/decimaltestdata/dqBase.decTest index 6bb4633..d09c6bf 100644 --- a/Lib/test/decimaltestdata/dqBase.decTest +++ b/Lib/test/decimaltestdata/dqBase.decTest @@ -1,1081 +1,1081 @@ ------------------------------------------------------------------------- --- dqBase.decTest -- base decQuad <--> string conversions -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This file tests base conversions from string to a decimal number --- and back to a string (in Scientific form) - --- Note that unlike other operations the operand is subject to rounding --- to conform to emax and precision settings (that is, numbers will --- conform to rules and exponent will be in permitted range). The --- 'left hand side', therefore, may have numbers that cannot be --- represented in a decQuad. Some testcases go to the limit of the --- next-wider format, and hence these testcases may also be used to --- test narrowing and widening operations. - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - -dqbas001 toSci 0 -> 0 -dqbas002 toSci 1 -> 1 -dqbas003 toSci 1.0 -> 1.0 -dqbas004 toSci 1.00 -> 1.00 -dqbas005 toSci 10 -> 10 -dqbas006 toSci 1000 -> 1000 -dqbas007 toSci 10.0 -> 10.0 -dqbas008 toSci 10.1 -> 10.1 -dqbas009 toSci 10.4 -> 10.4 -dqbas010 toSci 10.5 -> 10.5 -dqbas011 toSci 10.6 -> 10.6 -dqbas012 toSci 10.9 -> 10.9 -dqbas013 toSci 11.0 -> 11.0 -dqbas014 toSci 1.234 -> 1.234 -dqbas015 toSci 0.123 -> 0.123 -dqbas016 toSci 0.012 -> 0.012 -dqbas017 toSci -0 -> -0 -dqbas018 toSci -0.0 -> -0.0 -dqbas019 toSci -00.00 -> -0.00 - -dqbas021 toSci -1 -> -1 -dqbas022 toSci -1.0 -> -1.0 -dqbas023 toSci -0.1 -> -0.1 -dqbas024 toSci -9.1 -> -9.1 -dqbas025 toSci -9.11 -> -9.11 -dqbas026 toSci -9.119 -> -9.119 -dqbas027 toSci -9.999 -> -9.999 - -dqbas030 toSci '123456789.123456' -> '123456789.123456' -dqbas031 toSci '123456789.000000' -> '123456789.000000' -dqbas032 toSci '123456789123456' -> '123456789123456' -dqbas033 toSci '0.0000123456789' -> '0.0000123456789' -dqbas034 toSci '0.00000123456789' -> '0.00000123456789' -dqbas035 toSci '0.000000123456789' -> '1.23456789E-7' -dqbas036 toSci '0.0000000123456789' -> '1.23456789E-8' - -dqbas037 toSci '0.123456789012344' -> '0.123456789012344' -dqbas038 toSci '0.123456789012345' -> '0.123456789012345' - --- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax) -dqbsn001 toSci -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 -dqbsn002 toSci -1E-6143 -> -1E-6143 -dqbsn003 toSci -1E-6176 -> -1E-6176 Subnormal -dqbsn004 toSci -0 -> -0 -dqbsn005 toSci +0 -> 0 -dqbsn006 toSci +1E-6176 -> 1E-6176 Subnormal -dqbsn007 toSci +1E-6143 -> 1E-6143 -dqbsn008 toSci +9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 - --- String [many more examples are implicitly tested elsewhere] --- strings without E cannot generate E in result -dqbas040 toSci "12" -> '12' -dqbas041 toSci "-76" -> '-76' -dqbas042 toSci "12.76" -> '12.76' -dqbas043 toSci "+12.76" -> '12.76' -dqbas044 toSci "012.76" -> '12.76' -dqbas045 toSci "+0.003" -> '0.003' -dqbas046 toSci "17." -> '17' -dqbas047 toSci ".5" -> '0.5' -dqbas048 toSci "044" -> '44' -dqbas049 toSci "0044" -> '44' -dqbas050 toSci "0.0005" -> '0.0005' -dqbas051 toSci "00.00005" -> '0.00005' -dqbas052 toSci "0.000005" -> '0.000005' -dqbas053 toSci "0.0000050" -> '0.0000050' -dqbas054 toSci "0.0000005" -> '5E-7' -dqbas055 toSci "0.00000005" -> '5E-8' -dqbas056 toSci "12345678.543210" -> '12345678.543210' -dqbas057 toSci "2345678.543210" -> '2345678.543210' -dqbas058 toSci "345678.543210" -> '345678.543210' -dqbas059 toSci "0345678.54321" -> '345678.54321' -dqbas060 toSci "345678.5432" -> '345678.5432' -dqbas061 toSci "+345678.5432" -> '345678.5432' -dqbas062 toSci "+0345678.5432" -> '345678.5432' -dqbas063 toSci "+00345678.5432" -> '345678.5432' -dqbas064 toSci "-345678.5432" -> '-345678.5432' -dqbas065 toSci "-0345678.5432" -> '-345678.5432' -dqbas066 toSci "-00345678.5432" -> '-345678.5432' --- examples -dqbas067 toSci "5E-6" -> '0.000005' -dqbas068 toSci "50E-7" -> '0.0000050' -dqbas069 toSci "5E-7" -> '5E-7' - --- [No exotics as no Unicode] - --- rounded with dots in all (including edge) places -dqbas071 toSci .1234567891234567890123456780123456123 -> 0.1234567891234567890123456780123456 Inexact Rounded -dqbas072 toSci 1.234567891234567890123456780123456123 -> 1.234567891234567890123456780123456 Inexact Rounded -dqbas073 toSci 12.34567891234567890123456780123456123 -> 12.34567891234567890123456780123456 Inexact Rounded -dqbas074 toSci 123.4567891234567890123456780123456123 -> 123.4567891234567890123456780123456 Inexact Rounded -dqbas075 toSci 1234.567891234567890123456780123456123 -> 1234.567891234567890123456780123456 Inexact Rounded -dqbas076 toSci 12345.67891234567890123456780123456123 -> 12345.67891234567890123456780123456 Inexact Rounded -dqbas077 toSci 123456.7891234567890123456780123456123 -> 123456.7891234567890123456780123456 Inexact Rounded -dqbas078 toSci 1234567.891234567890123456780123456123 -> 1234567.891234567890123456780123456 Inexact Rounded -dqbas079 toSci 12345678.91234567890123456780123456123 -> 12345678.91234567890123456780123456 Inexact Rounded -dqbas080 toSci 123456789.1234567890123456780123456123 -> 123456789.1234567890123456780123456 Inexact Rounded -dqbas081 toSci 1234567891.234567890123456780123456123 -> 1234567891.234567890123456780123456 Inexact Rounded -dqbas082 toSci 12345678912.34567890123456780123456123 -> 12345678912.34567890123456780123456 Inexact Rounded -dqbas083 toSci 123456789123.4567890123456780123456123 -> 123456789123.4567890123456780123456 Inexact Rounded -dqbas084 toSci 1234567891234.567890123456780123456123 -> 1234567891234.567890123456780123456 Inexact Rounded -dqbas085 toSci 12345678912345.67890123456780123456123 -> 12345678912345.67890123456780123456 Inexact Rounded -dqbas086 toSci 123456789123456.7890123456780123456123 -> 123456789123456.7890123456780123456 Inexact Rounded -dqbas087 toSci 1234567891234567.890123456780123456123 -> 1234567891234567.890123456780123456 Inexact Rounded -dqbas088 toSci 12345678912345678.90123456780123456123 -> 12345678912345678.90123456780123456 Inexact Rounded -dqbas089 toSci 123456789123456789.0123456780123456123 -> 123456789123456789.0123456780123456 Inexact Rounded -dqbas090 toSci 1234567891234567890.123456780123456123 -> 1234567891234567890.123456780123456 Inexact Rounded -dqbas091 toSci 12345678912345678901.23456780123456123 -> 12345678912345678901.23456780123456 Inexact Rounded -dqbas092 toSci 123456789123456789012.3456780123456123 -> 123456789123456789012.3456780123456 Inexact Rounded -dqbas093 toSci 1234567891234567890123.456780123456123 -> 1234567891234567890123.456780123456 Inexact Rounded -dqbas094 toSci 12345678912345678901234.56780123456123 -> 12345678912345678901234.56780123456 Inexact Rounded -dqbas095 toSci 123456789123456789012345.6780123456123 -> 123456789123456789012345.6780123456 Inexact Rounded -dqbas096 toSci 1234567891234567890123456.780123456123 -> 1234567891234567890123456.780123456 Inexact Rounded -dqbas097 toSci 12345678912345678901234567.80123456123 -> 12345678912345678901234567.80123456 Inexact Rounded -dqbas098 toSci 123456789123456789012345678.0123456123 -> 123456789123456789012345678.0123456 Inexact Rounded -dqbas099 toSci 1234567891234567890123456780.123456123 -> 1234567891234567890123456780.123456 Inexact Rounded -dqbas100 toSci 12345678912345678901234567801.23456123 -> 12345678912345678901234567801.23456 Inexact Rounded -dqbas101 toSci 123456789123456789012345678012.3456123 -> 123456789123456789012345678012.3456 Inexact Rounded -dqbas102 toSci 1234567891234567890123456780123.456123 -> 1234567891234567890123456780123.456 Inexact Rounded -dqbas103 toSci 12345678912345678901234567801234.56123 -> 12345678912345678901234567801234.56 Inexact Rounded -dqbas104 toSci 123456789123456789012345678012345.6123 -> 123456789123456789012345678012345.6 Inexact Rounded -dqbas105 toSci 1234567891234567890123456780123456.123 -> 1234567891234567890123456780123456 Inexact Rounded -dqbas106 toSci 12345678912345678901234567801234561.23 -> 1.234567891234567890123456780123456E+34 Inexact Rounded -dqbas107 toSci 123456789123456789012345678012345612.3 -> 1.234567891234567890123456780123456E+35 Inexact Rounded -dqbas108 toSci 1234567891234567890123456780123456123. -> 1.234567891234567890123456780123456E+36 Inexact Rounded --- 123456789012345678 - --- Numbers with E -dqbas130 toSci "0.000E-1" -> '0.0000' -dqbas131 toSci "0.000E-2" -> '0.00000' -dqbas132 toSci "0.000E-3" -> '0.000000' -dqbas133 toSci "0.000E-4" -> '0E-7' -dqbas134 toSci "0.00E-2" -> '0.0000' -dqbas135 toSci "0.00E-3" -> '0.00000' -dqbas136 toSci "0.00E-4" -> '0.000000' -dqbas137 toSci "0.00E-5" -> '0E-7' -dqbas138 toSci "+0E+9" -> '0E+9' -dqbas139 toSci "-0E+9" -> '-0E+9' -dqbas140 toSci "1E+9" -> '1E+9' -dqbas141 toSci "1e+09" -> '1E+9' -dqbas142 toSci "1E+90" -> '1E+90' -dqbas143 toSci "+1E+009" -> '1E+9' -dqbas144 toSci "0E+9" -> '0E+9' -dqbas145 toSci "1E+9" -> '1E+9' -dqbas146 toSci "1E+09" -> '1E+9' -dqbas147 toSci "1e+90" -> '1E+90' -dqbas148 toSci "1E+009" -> '1E+9' -dqbas149 toSci "000E+9" -> '0E+9' -dqbas150 toSci "1E9" -> '1E+9' -dqbas151 toSci "1e09" -> '1E+9' -dqbas152 toSci "1E90" -> '1E+90' -dqbas153 toSci "1E009" -> '1E+9' -dqbas154 toSci "0E9" -> '0E+9' -dqbas155 toSci "0.000e+0" -> '0.000' -dqbas156 toSci "0.000E-1" -> '0.0000' -dqbas157 toSci "4E+9" -> '4E+9' -dqbas158 toSci "44E+9" -> '4.4E+10' -dqbas159 toSci "0.73e-7" -> '7.3E-8' -dqbas160 toSci "00E+9" -> '0E+9' -dqbas161 toSci "00E-9" -> '0E-9' -dqbas162 toSci "10E+9" -> '1.0E+10' -dqbas163 toSci "10E+09" -> '1.0E+10' -dqbas164 toSci "10e+90" -> '1.0E+91' -dqbas165 toSci "10E+009" -> '1.0E+10' -dqbas166 toSci "100e+9" -> '1.00E+11' -dqbas167 toSci "100e+09" -> '1.00E+11' -dqbas168 toSci "100E+90" -> '1.00E+92' -dqbas169 toSci "100e+009" -> '1.00E+11' - -dqbas170 toSci "1.265" -> '1.265' -dqbas171 toSci "1.265E-20" -> '1.265E-20' -dqbas172 toSci "1.265E-8" -> '1.265E-8' -dqbas173 toSci "1.265E-4" -> '0.0001265' -dqbas174 toSci "1.265E-3" -> '0.001265' -dqbas175 toSci "1.265E-2" -> '0.01265' -dqbas176 toSci "1.265E-1" -> '0.1265' -dqbas177 toSci "1.265E-0" -> '1.265' -dqbas178 toSci "1.265E+1" -> '12.65' -dqbas179 toSci "1.265E+2" -> '126.5' -dqbas180 toSci "1.265E+3" -> '1265' -dqbas181 toSci "1.265E+4" -> '1.265E+4' -dqbas182 toSci "1.265E+8" -> '1.265E+8' -dqbas183 toSci "1.265E+20" -> '1.265E+20' - -dqbas190 toSci "12.65" -> '12.65' -dqbas191 toSci "12.65E-20" -> '1.265E-19' -dqbas192 toSci "12.65E-8" -> '1.265E-7' -dqbas193 toSci "12.65E-4" -> '0.001265' -dqbas194 toSci "12.65E-3" -> '0.01265' -dqbas195 toSci "12.65E-2" -> '0.1265' -dqbas196 toSci "12.65E-1" -> '1.265' -dqbas197 toSci "12.65E-0" -> '12.65' -dqbas198 toSci "12.65E+1" -> '126.5' -dqbas199 toSci "12.65E+2" -> '1265' -dqbas200 toSci "12.65E+3" -> '1.265E+4' -dqbas201 toSci "12.65E+4" -> '1.265E+5' -dqbas202 toSci "12.65E+8" -> '1.265E+9' -dqbas203 toSci "12.65E+20" -> '1.265E+21' - -dqbas210 toSci "126.5" -> '126.5' -dqbas211 toSci "126.5E-20" -> '1.265E-18' -dqbas212 toSci "126.5E-8" -> '0.000001265' -dqbas213 toSci "126.5E-4" -> '0.01265' -dqbas214 toSci "126.5E-3" -> '0.1265' -dqbas215 toSci "126.5E-2" -> '1.265' -dqbas216 toSci "126.5E-1" -> '12.65' -dqbas217 toSci "126.5E-0" -> '126.5' -dqbas218 toSci "126.5E+1" -> '1265' -dqbas219 toSci "126.5E+2" -> '1.265E+4' -dqbas220 toSci "126.5E+3" -> '1.265E+5' -dqbas221 toSci "126.5E+4" -> '1.265E+6' -dqbas222 toSci "126.5E+8" -> '1.265E+10' -dqbas223 toSci "126.5E+20" -> '1.265E+22' - -dqbas230 toSci "1265" -> '1265' -dqbas231 toSci "1265E-20" -> '1.265E-17' -dqbas232 toSci "1265E-8" -> '0.00001265' -dqbas233 toSci "1265E-4" -> '0.1265' -dqbas234 toSci "1265E-3" -> '1.265' -dqbas235 toSci "1265E-2" -> '12.65' -dqbas236 toSci "1265E-1" -> '126.5' -dqbas237 toSci "1265E-0" -> '1265' -dqbas238 toSci "1265E+1" -> '1.265E+4' -dqbas239 toSci "1265E+2" -> '1.265E+5' -dqbas240 toSci "1265E+3" -> '1.265E+6' -dqbas241 toSci "1265E+4" -> '1.265E+7' -dqbas242 toSci "1265E+8" -> '1.265E+11' -dqbas243 toSci "1265E+20" -> '1.265E+23' - -dqbas250 toSci "0.1265" -> '0.1265' -dqbas251 toSci "0.1265E-20" -> '1.265E-21' -dqbas252 toSci "0.1265E-8" -> '1.265E-9' -dqbas253 toSci "0.1265E-4" -> '0.00001265' -dqbas254 toSci "0.1265E-3" -> '0.0001265' -dqbas255 toSci "0.1265E-2" -> '0.001265' -dqbas256 toSci "0.1265E-1" -> '0.01265' -dqbas257 toSci "0.1265E-0" -> '0.1265' -dqbas258 toSci "0.1265E+1" -> '1.265' -dqbas259 toSci "0.1265E+2" -> '12.65' -dqbas260 toSci "0.1265E+3" -> '126.5' -dqbas261 toSci "0.1265E+4" -> '1265' -dqbas262 toSci "0.1265E+8" -> '1.265E+7' -dqbas263 toSci "0.1265E+20" -> '1.265E+19' - --- some more negative zeros [systematic tests below] -dqbas290 toSci "-0.000E-1" -> '-0.0000' -dqbas291 toSci "-0.000E-2" -> '-0.00000' -dqbas292 toSci "-0.000E-3" -> '-0.000000' -dqbas293 toSci "-0.000E-4" -> '-0E-7' -dqbas294 toSci "-0.00E-2" -> '-0.0000' -dqbas295 toSci "-0.00E-3" -> '-0.00000' -dqbas296 toSci "-0.0E-2" -> '-0.000' -dqbas297 toSci "-0.0E-3" -> '-0.0000' -dqbas298 toSci "-0E-2" -> '-0.00' -dqbas299 toSci "-0E-3" -> '-0.000' - --- Engineering notation tests -dqbas301 toSci 10e12 -> 1.0E+13 -dqbas302 toEng 10e12 -> 10E+12 -dqbas303 toSci 10e11 -> 1.0E+12 -dqbas304 toEng 10e11 -> 1.0E+12 -dqbas305 toSci 10e10 -> 1.0E+11 -dqbas306 toEng 10e10 -> 100E+9 -dqbas307 toSci 10e9 -> 1.0E+10 -dqbas308 toEng 10e9 -> 10E+9 -dqbas309 toSci 10e8 -> 1.0E+9 -dqbas310 toEng 10e8 -> 1.0E+9 -dqbas311 toSci 10e7 -> 1.0E+8 -dqbas312 toEng 10e7 -> 100E+6 -dqbas313 toSci 10e6 -> 1.0E+7 -dqbas314 toEng 10e6 -> 10E+6 -dqbas315 toSci 10e5 -> 1.0E+6 -dqbas316 toEng 10e5 -> 1.0E+6 -dqbas317 toSci 10e4 -> 1.0E+5 -dqbas318 toEng 10e4 -> 100E+3 -dqbas319 toSci 10e3 -> 1.0E+4 -dqbas320 toEng 10e3 -> 10E+3 -dqbas321 toSci 10e2 -> 1.0E+3 -dqbas322 toEng 10e2 -> 1.0E+3 -dqbas323 toSci 10e1 -> 1.0E+2 -dqbas324 toEng 10e1 -> 100 -dqbas325 toSci 10e0 -> 10 -dqbas326 toEng 10e0 -> 10 -dqbas327 toSci 10e-1 -> 1.0 -dqbas328 toEng 10e-1 -> 1.0 -dqbas329 toSci 10e-2 -> 0.10 -dqbas330 toEng 10e-2 -> 0.10 -dqbas331 toSci 10e-3 -> 0.010 -dqbas332 toEng 10e-3 -> 0.010 -dqbas333 toSci 10e-4 -> 0.0010 -dqbas334 toEng 10e-4 -> 0.0010 -dqbas335 toSci 10e-5 -> 0.00010 -dqbas336 toEng 10e-5 -> 0.00010 -dqbas337 toSci 10e-6 -> 0.000010 -dqbas338 toEng 10e-6 -> 0.000010 -dqbas339 toSci 10e-7 -> 0.0000010 -dqbas340 toEng 10e-7 -> 0.0000010 -dqbas341 toSci 10e-8 -> 1.0E-7 -dqbas342 toEng 10e-8 -> 100E-9 -dqbas343 toSci 10e-9 -> 1.0E-8 -dqbas344 toEng 10e-9 -> 10E-9 -dqbas345 toSci 10e-10 -> 1.0E-9 -dqbas346 toEng 10e-10 -> 1.0E-9 -dqbas347 toSci 10e-11 -> 1.0E-10 -dqbas348 toEng 10e-11 -> 100E-12 -dqbas349 toSci 10e-12 -> 1.0E-11 -dqbas350 toEng 10e-12 -> 10E-12 -dqbas351 toSci 10e-13 -> 1.0E-12 -dqbas352 toEng 10e-13 -> 1.0E-12 - -dqbas361 toSci 7E12 -> 7E+12 -dqbas362 toEng 7E12 -> 7E+12 -dqbas363 toSci 7E11 -> 7E+11 -dqbas364 toEng 7E11 -> 700E+9 -dqbas365 toSci 7E10 -> 7E+10 -dqbas366 toEng 7E10 -> 70E+9 -dqbas367 toSci 7E9 -> 7E+9 -dqbas368 toEng 7E9 -> 7E+9 -dqbas369 toSci 7E8 -> 7E+8 -dqbas370 toEng 7E8 -> 700E+6 -dqbas371 toSci 7E7 -> 7E+7 -dqbas372 toEng 7E7 -> 70E+6 -dqbas373 toSci 7E6 -> 7E+6 -dqbas374 toEng 7E6 -> 7E+6 -dqbas375 toSci 7E5 -> 7E+5 -dqbas376 toEng 7E5 -> 700E+3 -dqbas377 toSci 7E4 -> 7E+4 -dqbas378 toEng 7E4 -> 70E+3 -dqbas379 toSci 7E3 -> 7E+3 -dqbas380 toEng 7E3 -> 7E+3 -dqbas381 toSci 7E2 -> 7E+2 -dqbas382 toEng 7E2 -> 700 -dqbas383 toSci 7E1 -> 7E+1 -dqbas384 toEng 7E1 -> 70 -dqbas385 toSci 7E0 -> 7 -dqbas386 toEng 7E0 -> 7 -dqbas387 toSci 7E-1 -> 0.7 -dqbas388 toEng 7E-1 -> 0.7 -dqbas389 toSci 7E-2 -> 0.07 -dqbas390 toEng 7E-2 -> 0.07 -dqbas391 toSci 7E-3 -> 0.007 -dqbas392 toEng 7E-3 -> 0.007 -dqbas393 toSci 7E-4 -> 0.0007 -dqbas394 toEng 7E-4 -> 0.0007 -dqbas395 toSci 7E-5 -> 0.00007 -dqbas396 toEng 7E-5 -> 0.00007 -dqbas397 toSci 7E-6 -> 0.000007 -dqbas398 toEng 7E-6 -> 0.000007 -dqbas399 toSci 7E-7 -> 7E-7 -dqbas400 toEng 7E-7 -> 700E-9 -dqbas401 toSci 7E-8 -> 7E-8 -dqbas402 toEng 7E-8 -> 70E-9 -dqbas403 toSci 7E-9 -> 7E-9 -dqbas404 toEng 7E-9 -> 7E-9 -dqbas405 toSci 7E-10 -> 7E-10 -dqbas406 toEng 7E-10 -> 700E-12 -dqbas407 toSci 7E-11 -> 7E-11 -dqbas408 toEng 7E-11 -> 70E-12 -dqbas409 toSci 7E-12 -> 7E-12 -dqbas410 toEng 7E-12 -> 7E-12 -dqbas411 toSci 7E-13 -> 7E-13 -dqbas412 toEng 7E-13 -> 700E-15 - --- Exacts remain exact up to precision .. -dqbas420 toSci 100 -> 100 -dqbas422 toSci 1000 -> 1000 -dqbas424 toSci 999.9 -> 999.9 -dqbas426 toSci 1000.0 -> 1000.0 -dqbas428 toSci 1000.1 -> 1000.1 -dqbas430 toSci 10000 -> 10000 -dqbas432 toSci 1000000000000000000000000000000 -> 1000000000000000000000000000000 -dqbas434 toSci 10000000000000000000000000000000 -> 10000000000000000000000000000000 -dqbas436 toSci 100000000000000000000000000000000 -> 100000000000000000000000000000000 -dqbas438 toSci 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 -dqbas440 toSci 10000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+34 Rounded -dqbas442 toSci 10000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+34 Rounded -dqbas444 toSci 10000000000000000000000000000000003 -> 1.000000000000000000000000000000000E+34 Rounded Inexact -dqbas446 toSci 10000000000000000000000000000000005 -> 1.000000000000000000000000000000000E+34 Rounded Inexact -dqbas448 toSci 100000000000000000000000000000000050 -> 1.000000000000000000000000000000000E+35 Rounded Inexact -dqbas450 toSci 10000000000000000000000000000000009 -> 1.000000000000000000000000000000001E+34 Rounded Inexact -dqbas452 toSci 100000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+35 Rounded -dqbas454 toSci 100000000000000000000000000000000003 -> 1.000000000000000000000000000000000E+35 Rounded Inexact -dqbas456 toSci 100000000000000000000000000000000005 -> 1.000000000000000000000000000000000E+35 Rounded Inexact -dqbas458 toSci 100000000000000000000000000000000009 -> 1.000000000000000000000000000000000E+35 Rounded Inexact -dqbas460 toSci 1000000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+36 Rounded -dqbas462 toSci 1000000000000000000000000000000000300 -> 1.000000000000000000000000000000000E+36 Rounded Inexact -dqbas464 toSci 1000000000000000000000000000000000500 -> 1.000000000000000000000000000000000E+36 Rounded Inexact -dqbas466 toSci 1000000000000000000000000000000000900 -> 1.000000000000000000000000000000001E+36 Rounded Inexact -dqbas468 toSci 10000000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+37 Rounded -dqbas470 toSci 10000000000000000000000000000000003000 -> 1.000000000000000000000000000000000E+37 Rounded Inexact -dqbas472 toSci 10000000000000000000000000000000005000 -> 1.000000000000000000000000000000000E+37 Rounded Inexact -dqbas474 toSci 10000000000000000000000000000000009000 -> 1.000000000000000000000000000000001E+37 Rounded Inexact - --- check rounding modes heeded -rounding: ceiling -dqbsr401 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded -dqbsr402 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112346 Rounded Inexact -dqbsr403 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112346 Rounded Inexact -dqbsr404 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact -rounding: up -dqbsr405 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded -dqbsr406 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112346 Rounded Inexact -dqbsr407 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112346 Rounded Inexact -dqbsr408 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact -rounding: floor -dqbsr410 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded -dqbsr411 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact -dqbsr412 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112345 Rounded Inexact -dqbsr413 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112345 Rounded Inexact -rounding: half_down -dqbsr415 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded -dqbsr416 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact -dqbsr417 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112345 Rounded Inexact -dqbsr418 toSci 1.11111111111111111111111111111234650 -> 1.111111111111111111111111111112346 Rounded Inexact -dqbsr419 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact -rounding: half_even -dqbsr421 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded -dqbsr422 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact -dqbsr423 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112346 Rounded Inexact -dqbsr424 toSci 1.11111111111111111111111111111234650 -> 1.111111111111111111111111111112346 Rounded Inexact -dqbsr425 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact -rounding: down -dqbsr426 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded -dqbsr427 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact -dqbsr428 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112345 Rounded Inexact -dqbsr429 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112345 Rounded Inexact -rounding: half_up -dqbsr431 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded -dqbsr432 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact -dqbsr433 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112346 Rounded Inexact -dqbsr434 toSci 1.11111111111111111111111111111234650 -> 1.111111111111111111111111111112347 Rounded Inexact -dqbsr435 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact --- negatives -rounding: ceiling -dqbsr501 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded -dqbsr502 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact -dqbsr503 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112345 Rounded Inexact -dqbsr504 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112345 Rounded Inexact -rounding: up -dqbsr505 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded -dqbsr506 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112346 Rounded Inexact -dqbsr507 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112346 Rounded Inexact -dqbsr508 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact -rounding: floor -dqbsr510 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded -dqbsr511 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112346 Rounded Inexact -dqbsr512 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112346 Rounded Inexact -dqbsr513 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact -rounding: half_down -dqbsr515 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded -dqbsr516 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact -dqbsr517 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112345 Rounded Inexact -dqbsr518 toSci -1.11111111111111111111111111111234650 -> -1.111111111111111111111111111112346 Rounded Inexact -dqbsr519 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact -rounding: half_even -dqbsr521 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded -dqbsr522 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact -dqbsr523 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112346 Rounded Inexact -dqbsr524 toSci -1.11111111111111111111111111111234650 -> -1.111111111111111111111111111112346 Rounded Inexact -dqbsr525 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact -rounding: down -dqbsr526 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded -dqbsr527 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact -dqbsr528 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112345 Rounded Inexact -dqbsr529 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112345 Rounded Inexact -rounding: half_up -dqbsr531 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded -dqbsr532 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact -dqbsr533 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112346 Rounded Inexact -dqbsr534 toSci -1.11111111111111111111111111111234650 -> -1.111111111111111111111111111112347 Rounded Inexact -dqbsr535 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact - -rounding: half_even - --- The 'baddies' tests from DiagBigDecimal, plus some new ones -dqbas500 toSci '1..2' -> NaN Conversion_syntax -dqbas501 toSci '.' -> NaN Conversion_syntax -dqbas502 toSci '..' -> NaN Conversion_syntax -dqbas503 toSci '++1' -> NaN Conversion_syntax -dqbas504 toSci '--1' -> NaN Conversion_syntax -dqbas505 toSci '-+1' -> NaN Conversion_syntax -dqbas506 toSci '+-1' -> NaN Conversion_syntax -dqbas507 toSci '12e' -> NaN Conversion_syntax -dqbas508 toSci '12e++' -> NaN Conversion_syntax -dqbas509 toSci '12f4' -> NaN Conversion_syntax -dqbas510 toSci ' +1' -> NaN Conversion_syntax -dqbas511 toSci '+ 1' -> NaN Conversion_syntax -dqbas512 toSci '12 ' -> NaN Conversion_syntax -dqbas513 toSci ' + 1' -> NaN Conversion_syntax -dqbas514 toSci ' - 1 ' -> NaN Conversion_syntax -dqbas515 toSci 'x' -> NaN Conversion_syntax -dqbas516 toSci '-1-' -> NaN Conversion_syntax -dqbas517 toSci '12-' -> NaN Conversion_syntax -dqbas518 toSci '3+' -> NaN Conversion_syntax -dqbas519 toSci '' -> NaN Conversion_syntax -dqbas520 toSci '1e-' -> NaN Conversion_syntax -dqbas521 toSci '7e99999a' -> NaN Conversion_syntax -dqbas522 toSci '7e123567890x' -> NaN Conversion_syntax -dqbas523 toSci '7e12356789012x' -> NaN Conversion_syntax -dqbas524 toSci '' -> NaN Conversion_syntax -dqbas525 toSci 'e100' -> NaN Conversion_syntax -dqbas526 toSci '\u0e5a' -> NaN Conversion_syntax -dqbas527 toSci '\u0b65' -> NaN Conversion_syntax -dqbas528 toSci '123,65' -> NaN Conversion_syntax -dqbas529 toSci '1.34.5' -> NaN Conversion_syntax -dqbas530 toSci '.123.5' -> NaN Conversion_syntax -dqbas531 toSci '01.35.' -> NaN Conversion_syntax -dqbas532 toSci '01.35-' -> NaN Conversion_syntax -dqbas533 toSci '0000..' -> NaN Conversion_syntax -dqbas534 toSci '.0000.' -> NaN Conversion_syntax -dqbas535 toSci '00..00' -> NaN Conversion_syntax -dqbas536 toSci '111e*123' -> NaN Conversion_syntax -dqbas537 toSci '111e123-' -> NaN Conversion_syntax -dqbas538 toSci '111e+12+' -> NaN Conversion_syntax -dqbas539 toSci '111e1-3-' -> NaN Conversion_syntax -dqbas540 toSci '111e1*23' -> NaN Conversion_syntax -dqbas541 toSci '111e1e+3' -> NaN Conversion_syntax -dqbas542 toSci '1e1.0' -> NaN Conversion_syntax -dqbas543 toSci '1e123e' -> NaN Conversion_syntax -dqbas544 toSci 'ten' -> NaN Conversion_syntax -dqbas545 toSci 'ONE' -> NaN Conversion_syntax -dqbas546 toSci '1e.1' -> NaN Conversion_syntax -dqbas547 toSci '1e1.' -> NaN Conversion_syntax -dqbas548 toSci '1ee' -> NaN Conversion_syntax -dqbas549 toSci 'e+1' -> NaN Conversion_syntax -dqbas550 toSci '1.23.4' -> NaN Conversion_syntax -dqbas551 toSci '1.2.1' -> NaN Conversion_syntax -dqbas552 toSci '1E+1.2' -> NaN Conversion_syntax -dqbas553 toSci '1E+1.2.3' -> NaN Conversion_syntax -dqbas554 toSci '1E++1' -> NaN Conversion_syntax -dqbas555 toSci '1E--1' -> NaN Conversion_syntax -dqbas556 toSci '1E+-1' -> NaN Conversion_syntax -dqbas557 toSci '1E-+1' -> NaN Conversion_syntax -dqbas558 toSci '1E''1' -> NaN Conversion_syntax -dqbas559 toSci "1E""1" -> NaN Conversion_syntax -dqbas560 toSci "1E""""" -> NaN Conversion_syntax --- Near-specials -dqbas561 toSci "qNaN" -> NaN Conversion_syntax -dqbas562 toSci "NaNq" -> NaN Conversion_syntax -dqbas563 toSci "NaNs" -> NaN Conversion_syntax -dqbas564 toSci "Infi" -> NaN Conversion_syntax -dqbas565 toSci "Infin" -> NaN Conversion_syntax -dqbas566 toSci "Infini" -> NaN Conversion_syntax -dqbas567 toSci "Infinit" -> NaN Conversion_syntax -dqbas568 toSci "-Infinit" -> NaN Conversion_syntax -dqbas569 toSci "0Inf" -> NaN Conversion_syntax -dqbas570 toSci "9Inf" -> NaN Conversion_syntax -dqbas571 toSci "-0Inf" -> NaN Conversion_syntax -dqbas572 toSci "-9Inf" -> NaN Conversion_syntax -dqbas573 toSci "-sNa" -> NaN Conversion_syntax -dqbas574 toSci "xNaN" -> NaN Conversion_syntax -dqbas575 toSci "0sNaN" -> NaN Conversion_syntax - --- some baddies with dots and Es and dots and specials -dqbas576 toSci 'e+1' -> NaN Conversion_syntax -dqbas577 toSci '.e+1' -> NaN Conversion_syntax -dqbas578 toSci '+.e+1' -> NaN Conversion_syntax -dqbas579 toSci '-.e+' -> NaN Conversion_syntax -dqbas580 toSci '-.e' -> NaN Conversion_syntax -dqbas581 toSci 'E+1' -> NaN Conversion_syntax -dqbas582 toSci '.E+1' -> NaN Conversion_syntax -dqbas583 toSci '+.E+1' -> NaN Conversion_syntax -dqbas584 toSci '-.E+' -> NaN Conversion_syntax -dqbas585 toSci '-.E' -> NaN Conversion_syntax - -dqbas586 toSci '.NaN' -> NaN Conversion_syntax -dqbas587 toSci '-.NaN' -> NaN Conversion_syntax -dqbas588 toSci '+.sNaN' -> NaN Conversion_syntax -dqbas589 toSci '+.Inf' -> NaN Conversion_syntax -dqbas590 toSci '.Infinity' -> NaN Conversion_syntax - --- Zeros -dqbas601 toSci 0.000000000 -> 0E-9 -dqbas602 toSci 0.00000000 -> 0E-8 -dqbas603 toSci 0.0000000 -> 0E-7 -dqbas604 toSci 0.000000 -> 0.000000 -dqbas605 toSci 0.00000 -> 0.00000 -dqbas606 toSci 0.0000 -> 0.0000 -dqbas607 toSci 0.000 -> 0.000 -dqbas608 toSci 0.00 -> 0.00 -dqbas609 toSci 0.0 -> 0.0 -dqbas610 toSci .0 -> 0.0 -dqbas611 toSci 0. -> 0 -dqbas612 toSci -.0 -> -0.0 -dqbas613 toSci -0. -> -0 -dqbas614 toSci -0.0 -> -0.0 -dqbas615 toSci -0.00 -> -0.00 -dqbas616 toSci -0.000 -> -0.000 -dqbas617 toSci -0.0000 -> -0.0000 -dqbas618 toSci -0.00000 -> -0.00000 -dqbas619 toSci -0.000000 -> -0.000000 -dqbas620 toSci -0.0000000 -> -0E-7 -dqbas621 toSci -0.00000000 -> -0E-8 -dqbas622 toSci -0.000000000 -> -0E-9 - -dqbas630 toSci 0.00E+0 -> 0.00 -dqbas631 toSci 0.00E+1 -> 0.0 -dqbas632 toSci 0.00E+2 -> 0 -dqbas633 toSci 0.00E+3 -> 0E+1 -dqbas634 toSci 0.00E+4 -> 0E+2 -dqbas635 toSci 0.00E+5 -> 0E+3 -dqbas636 toSci 0.00E+6 -> 0E+4 -dqbas637 toSci 0.00E+7 -> 0E+5 -dqbas638 toSci 0.00E+8 -> 0E+6 -dqbas639 toSci 0.00E+9 -> 0E+7 - -dqbas640 toSci 0.0E+0 -> 0.0 -dqbas641 toSci 0.0E+1 -> 0 -dqbas642 toSci 0.0E+2 -> 0E+1 -dqbas643 toSci 0.0E+3 -> 0E+2 -dqbas644 toSci 0.0E+4 -> 0E+3 -dqbas645 toSci 0.0E+5 -> 0E+4 -dqbas646 toSci 0.0E+6 -> 0E+5 -dqbas647 toSci 0.0E+7 -> 0E+6 -dqbas648 toSci 0.0E+8 -> 0E+7 -dqbas649 toSci 0.0E+9 -> 0E+8 - -dqbas650 toSci 0E+0 -> 0 -dqbas651 toSci 0E+1 -> 0E+1 -dqbas652 toSci 0E+2 -> 0E+2 -dqbas653 toSci 0E+3 -> 0E+3 -dqbas654 toSci 0E+4 -> 0E+4 -dqbas655 toSci 0E+5 -> 0E+5 -dqbas656 toSci 0E+6 -> 0E+6 -dqbas657 toSci 0E+7 -> 0E+7 -dqbas658 toSci 0E+8 -> 0E+8 -dqbas659 toSci 0E+9 -> 0E+9 - -dqbas660 toSci 0.0E-0 -> 0.0 -dqbas661 toSci 0.0E-1 -> 0.00 -dqbas662 toSci 0.0E-2 -> 0.000 -dqbas663 toSci 0.0E-3 -> 0.0000 -dqbas664 toSci 0.0E-4 -> 0.00000 -dqbas665 toSci 0.0E-5 -> 0.000000 -dqbas666 toSci 0.0E-6 -> 0E-7 -dqbas667 toSci 0.0E-7 -> 0E-8 -dqbas668 toSci 0.0E-8 -> 0E-9 -dqbas669 toSci 0.0E-9 -> 0E-10 - -dqbas670 toSci 0.00E-0 -> 0.00 -dqbas671 toSci 0.00E-1 -> 0.000 -dqbas672 toSci 0.00E-2 -> 0.0000 -dqbas673 toSci 0.00E-3 -> 0.00000 -dqbas674 toSci 0.00E-4 -> 0.000000 -dqbas675 toSci 0.00E-5 -> 0E-7 -dqbas676 toSci 0.00E-6 -> 0E-8 -dqbas677 toSci 0.00E-7 -> 0E-9 -dqbas678 toSci 0.00E-8 -> 0E-10 -dqbas679 toSci 0.00E-9 -> 0E-11 - -dqbas680 toSci 000000. -> 0 -dqbas681 toSci 00000. -> 0 -dqbas682 toSci 0000. -> 0 -dqbas683 toSci 000. -> 0 -dqbas684 toSci 00. -> 0 -dqbas685 toSci 0. -> 0 -dqbas686 toSci +00000. -> 0 -dqbas687 toSci -00000. -> -0 -dqbas688 toSci +0. -> 0 -dqbas689 toSci -0. -> -0 - --- Specials -dqbas700 toSci "NaN" -> NaN -dqbas701 toSci "nan" -> NaN -dqbas702 toSci "nAn" -> NaN -dqbas703 toSci "NAN" -> NaN -dqbas704 toSci "+NaN" -> NaN -dqbas705 toSci "+nan" -> NaN -dqbas706 toSci "+nAn" -> NaN -dqbas707 toSci "+NAN" -> NaN -dqbas708 toSci "-NaN" -> -NaN -dqbas709 toSci "-nan" -> -NaN -dqbas710 toSci "-nAn" -> -NaN -dqbas711 toSci "-NAN" -> -NaN -dqbas712 toSci 'NaN0' -> NaN -dqbas713 toSci 'NaN1' -> NaN1 -dqbas714 toSci 'NaN12' -> NaN12 -dqbas715 toSci 'NaN123' -> NaN123 -dqbas716 toSci 'NaN1234' -> NaN1234 -dqbas717 toSci 'NaN01' -> NaN1 -dqbas718 toSci 'NaN012' -> NaN12 -dqbas719 toSci 'NaN0123' -> NaN123 -dqbas720 toSci 'NaN01234' -> NaN1234 -dqbas721 toSci 'NaN001' -> NaN1 -dqbas722 toSci 'NaN0012' -> NaN12 -dqbas723 toSci 'NaN00123' -> NaN123 -dqbas724 toSci 'NaN001234' -> NaN1234 -dqbas725 toSci 'NaN1234567890123456781234567890123456' -> NaN Conversion_syntax -dqbas726 toSci 'NaN123e+1' -> NaN Conversion_syntax -dqbas727 toSci 'NaN12.45' -> NaN Conversion_syntax -dqbas728 toSci 'NaN-12' -> NaN Conversion_syntax -dqbas729 toSci 'NaN+12' -> NaN Conversion_syntax - -dqbas730 toSci "sNaN" -> sNaN -dqbas731 toSci "snan" -> sNaN -dqbas732 toSci "SnAn" -> sNaN -dqbas733 toSci "SNAN" -> sNaN -dqbas734 toSci "+sNaN" -> sNaN -dqbas735 toSci "+snan" -> sNaN -dqbas736 toSci "+SnAn" -> sNaN -dqbas737 toSci "+SNAN" -> sNaN -dqbas738 toSci "-sNaN" -> -sNaN -dqbas739 toSci "-snan" -> -sNaN -dqbas740 toSci "-SnAn" -> -sNaN -dqbas741 toSci "-SNAN" -> -sNaN -dqbas742 toSci 'sNaN0000' -> sNaN -dqbas743 toSci 'sNaN7' -> sNaN7 -dqbas744 toSci 'sNaN007234' -> sNaN7234 -dqbas745 toSci 'sNaN1234567890123456787234561234567890' -> NaN Conversion_syntax -dqbas746 toSci 'sNaN72.45' -> NaN Conversion_syntax -dqbas747 toSci 'sNaN-72' -> NaN Conversion_syntax - -dqbas748 toSci "Inf" -> Infinity -dqbas749 toSci "inf" -> Infinity -dqbas750 toSci "iNf" -> Infinity -dqbas751 toSci "INF" -> Infinity -dqbas752 toSci "+Inf" -> Infinity -dqbas753 toSci "+inf" -> Infinity -dqbas754 toSci "+iNf" -> Infinity -dqbas755 toSci "+INF" -> Infinity -dqbas756 toSci "-Inf" -> -Infinity -dqbas757 toSci "-inf" -> -Infinity -dqbas758 toSci "-iNf" -> -Infinity -dqbas759 toSci "-INF" -> -Infinity - -dqbas760 toSci "Infinity" -> Infinity -dqbas761 toSci "infinity" -> Infinity -dqbas762 toSci "iNfInItY" -> Infinity -dqbas763 toSci "INFINITY" -> Infinity -dqbas764 toSci "+Infinity" -> Infinity -dqbas765 toSci "+infinity" -> Infinity -dqbas766 toSci "+iNfInItY" -> Infinity -dqbas767 toSci "+INFINITY" -> Infinity -dqbas768 toSci "-Infinity" -> -Infinity -dqbas769 toSci "-infinity" -> -Infinity -dqbas770 toSci "-iNfInItY" -> -Infinity -dqbas771 toSci "-INFINITY" -> -Infinity - --- Specials and zeros for toEng -dqbast772 toEng "NaN" -> NaN -dqbast773 toEng "-Infinity" -> -Infinity -dqbast774 toEng "-sNaN" -> -sNaN -dqbast775 toEng "-NaN" -> -NaN -dqbast776 toEng "+Infinity" -> Infinity -dqbast778 toEng "+sNaN" -> sNaN -dqbast779 toEng "+NaN" -> NaN -dqbast780 toEng "INFINITY" -> Infinity -dqbast781 toEng "SNAN" -> sNaN -dqbast782 toEng "NAN" -> NaN -dqbast783 toEng "infinity" -> Infinity -dqbast784 toEng "snan" -> sNaN -dqbast785 toEng "nan" -> NaN -dqbast786 toEng "InFINITY" -> Infinity -dqbast787 toEng "SnAN" -> sNaN -dqbast788 toEng "nAN" -> NaN -dqbast789 toEng "iNfinity" -> Infinity -dqbast790 toEng "sNan" -> sNaN -dqbast791 toEng "Nan" -> NaN -dqbast792 toEng "Infinity" -> Infinity -dqbast793 toEng "sNaN" -> sNaN - --- Zero toEng, etc. -dqbast800 toEng 0e+1 -> "0.00E+3" -- doc example - -dqbast801 toEng 0.000000000 -> 0E-9 -dqbast802 toEng 0.00000000 -> 0.00E-6 -dqbast803 toEng 0.0000000 -> 0.0E-6 -dqbast804 toEng 0.000000 -> 0.000000 -dqbast805 toEng 0.00000 -> 0.00000 -dqbast806 toEng 0.0000 -> 0.0000 -dqbast807 toEng 0.000 -> 0.000 -dqbast808 toEng 0.00 -> 0.00 -dqbast809 toEng 0.0 -> 0.0 -dqbast810 toEng .0 -> 0.0 -dqbast811 toEng 0. -> 0 -dqbast812 toEng -.0 -> -0.0 -dqbast813 toEng -0. -> -0 -dqbast814 toEng -0.0 -> -0.0 -dqbast815 toEng -0.00 -> -0.00 -dqbast816 toEng -0.000 -> -0.000 -dqbast817 toEng -0.0000 -> -0.0000 -dqbast818 toEng -0.00000 -> -0.00000 -dqbast819 toEng -0.000000 -> -0.000000 -dqbast820 toEng -0.0000000 -> -0.0E-6 -dqbast821 toEng -0.00000000 -> -0.00E-6 -dqbast822 toEng -0.000000000 -> -0E-9 - -dqbast830 toEng 0.00E+0 -> 0.00 -dqbast831 toEng 0.00E+1 -> 0.0 -dqbast832 toEng 0.00E+2 -> 0 -dqbast833 toEng 0.00E+3 -> 0.00E+3 -dqbast834 toEng 0.00E+4 -> 0.0E+3 -dqbast835 toEng 0.00E+5 -> 0E+3 -dqbast836 toEng 0.00E+6 -> 0.00E+6 -dqbast837 toEng 0.00E+7 -> 0.0E+6 -dqbast838 toEng 0.00E+8 -> 0E+6 -dqbast839 toEng 0.00E+9 -> 0.00E+9 - -dqbast840 toEng 0.0E+0 -> 0.0 -dqbast841 toEng 0.0E+1 -> 0 -dqbast842 toEng 0.0E+2 -> 0.00E+3 -dqbast843 toEng 0.0E+3 -> 0.0E+3 -dqbast844 toEng 0.0E+4 -> 0E+3 -dqbast845 toEng 0.0E+5 -> 0.00E+6 -dqbast846 toEng 0.0E+6 -> 0.0E+6 -dqbast847 toEng 0.0E+7 -> 0E+6 -dqbast848 toEng 0.0E+8 -> 0.00E+9 -dqbast849 toEng 0.0E+9 -> 0.0E+9 - -dqbast850 toEng 0E+0 -> 0 -dqbast851 toEng 0E+1 -> 0.00E+3 -dqbast852 toEng 0E+2 -> 0.0E+3 -dqbast853 toEng 0E+3 -> 0E+3 -dqbast854 toEng 0E+4 -> 0.00E+6 -dqbast855 toEng 0E+5 -> 0.0E+6 -dqbast856 toEng 0E+6 -> 0E+6 -dqbast857 toEng 0E+7 -> 0.00E+9 -dqbast858 toEng 0E+8 -> 0.0E+9 -dqbast859 toEng 0E+9 -> 0E+9 - -dqbast860 toEng 0.0E-0 -> 0.0 -dqbast861 toEng 0.0E-1 -> 0.00 -dqbast862 toEng 0.0E-2 -> 0.000 -dqbast863 toEng 0.0E-3 -> 0.0000 -dqbast864 toEng 0.0E-4 -> 0.00000 -dqbast865 toEng 0.0E-5 -> 0.000000 -dqbast866 toEng 0.0E-6 -> 0.0E-6 -dqbast867 toEng 0.0E-7 -> 0.00E-6 -dqbast868 toEng 0.0E-8 -> 0E-9 -dqbast869 toEng 0.0E-9 -> 0.0E-9 - -dqbast870 toEng 0.00E-0 -> 0.00 -dqbast871 toEng 0.00E-1 -> 0.000 -dqbast872 toEng 0.00E-2 -> 0.0000 -dqbast873 toEng 0.00E-3 -> 0.00000 -dqbast874 toEng 0.00E-4 -> 0.000000 -dqbast875 toEng 0.00E-5 -> 0.0E-6 -dqbast876 toEng 0.00E-6 -> 0.00E-6 -dqbast877 toEng 0.00E-7 -> 0E-9 -dqbast878 toEng 0.00E-8 -> 0.0E-9 -dqbast879 toEng 0.00E-9 -> 0.00E-9 - --- long input strings -dqbas801 tosci '01234567890123456' -> 1234567890123456 -dqbas802 tosci '001234567890123456' -> 1234567890123456 -dqbas803 tosci '0001234567890123456' -> 1234567890123456 -dqbas804 tosci '00001234567890123456' -> 1234567890123456 -dqbas805 tosci '000001234567890123456' -> 1234567890123456 -dqbas806 tosci '0000001234567890123456' -> 1234567890123456 -dqbas807 tosci '00000001234567890123456' -> 1234567890123456 -dqbas808 tosci '000000001234567890123456' -> 1234567890123456 -dqbas809 tosci '0000000001234567890123456' -> 1234567890123456 -dqbas810 tosci '00000000001234567890123456' -> 1234567890123456 - -dqbas811 tosci '0.1234567890123456' -> 0.1234567890123456 -dqbas812 tosci '0.01234567890123456' -> 0.01234567890123456 -dqbas813 tosci '0.001234567890123456' -> 0.001234567890123456 -dqbas814 tosci '0.0001234567890123456' -> 0.0001234567890123456 -dqbas815 tosci '0.00001234567890123456' -> 0.00001234567890123456 -dqbas816 tosci '0.000001234567890123456' -> 0.000001234567890123456 -dqbas817 tosci '0.0000001234567890123456' -> 1.234567890123456E-7 -dqbas818 tosci '0.00000001234567890123456' -> 1.234567890123456E-8 -dqbas819 tosci '0.000000001234567890123456' -> 1.234567890123456E-9 -dqbas820 tosci '0.0000000001234567890123456' -> 1.234567890123456E-10 - -dqbas821 tosci '12345678912345678901234567801234567890' -> 1.234567891234567890123456780123457E+37 Inexact Rounded -dqbas822 tosci '123456789123456789012345678012345678901' -> 1.234567891234567890123456780123457E+38 Inexact Rounded -dqbas823 tosci '1234567891234567890123456780123456789012' -> 1.234567891234567890123456780123457E+39 Inexact Rounded -dqbas824 tosci '12345678912345678901234567801234567890123' -> 1.234567891234567890123456780123457E+40 Inexact Rounded -dqbas825 tosci '123456789123456789012345678012345678901234' -> 1.234567891234567890123456780123457E+41 Inexact Rounded -dqbas826 tosci '1234567891234567890123456780123456789012345' -> 1.234567891234567890123456780123457E+42 Inexact Rounded -dqbas827 tosci '12345678912345678901234567801234567890123456' -> 1.234567891234567890123456780123457E+43 Inexact Rounded -dqbas828 tosci '123456789123456789012345678012345678901234567' -> 1.234567891234567890123456780123457E+44 Inexact Rounded -dqbas829 tosci '1234567891234567890123456780123456789012345678' -> 1.234567891234567890123456780123457E+45 Inexact Rounded - --- subnormals and overflows -dqbas906 toSci '99e999999999' -> Infinity Overflow Inexact Rounded -dqbas907 toSci '999e999999999' -> Infinity Overflow Inexact Rounded -dqbas908 toSci '0.9e-999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas909 toSci '0.09e-999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas910 toSci '0.1e1000000000' -> Infinity Overflow Inexact Rounded -dqbas911 toSci '10e-1000000000' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas912 toSci '0.9e9999999999' -> Infinity Overflow Inexact Rounded -dqbas913 toSci '99e-9999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas914 toSci '111e9999999999' -> Infinity Overflow Inexact Rounded -dqbas915 toSci '1111e-9999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas916 toSci '1111e-99999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas917 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded --- negatives the same -dqbas918 toSci '-99e999999999' -> -Infinity Overflow Inexact Rounded -dqbas919 toSci '-999e999999999' -> -Infinity Overflow Inexact Rounded -dqbas920 toSci '-0.9e-999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas921 toSci '-0.09e-999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas922 toSci '-0.1e1000000000' -> -Infinity Overflow Inexact Rounded -dqbas923 toSci '-10e-1000000000' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas924 toSci '-0.9e9999999999' -> -Infinity Overflow Inexact Rounded -dqbas925 toSci '-99e-9999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas926 toSci '-111e9999999999' -> -Infinity Overflow Inexact Rounded -dqbas927 toSci '-1111e-9999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas928 toSci '-1111e-99999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas929 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded - --- overflow results at different rounding modes -rounding: ceiling -dqbas930 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dqbas931 toSci '-7e10000' -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -rounding: up -dqbas932 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dqbas933 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: down -dqbas934 toSci '7e10000' -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -dqbas935 toSci '-7e10000' -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -rounding: floor -dqbas936 toSci '7e10000' -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -dqbas937 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded - -rounding: half_up -dqbas938 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dqbas939 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: half_even -dqbas940 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dqbas941 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: half_down -dqbas942 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dqbas943 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded - -rounding: half_even - --- Now check 854/754r some subnormals and underflow to 0 -dqbem400 toSci 1.0000E-383 -> 1.0000E-383 -dqbem401 toSci 0.1E-6172 -> 1E-6173 Subnormal -dqbem402 toSci 0.1000E-6172 -> 1.000E-6173 Subnormal -dqbem403 toSci 0.0100E-6172 -> 1.00E-6174 Subnormal -dqbem404 toSci 0.0010E-6172 -> 1.0E-6175 Subnormal -dqbem405 toSci 0.0001E-6172 -> 1E-6176 Subnormal -dqbem406 toSci 0.00010E-6172 -> 1E-6176 Subnormal Rounded -dqbem407 toSci 0.00013E-6172 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqbem408 toSci 0.00015E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqbem409 toSci 0.00017E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqbem410 toSci 0.00023E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqbem411 toSci 0.00025E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqbem412 toSci 0.00027E-6172 -> 3E-6176 Underflow Subnormal Inexact Rounded -dqbem413 toSci 0.000149E-6172 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqbem414 toSci 0.000150E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqbem415 toSci 0.000151E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqbem416 toSci 0.000249E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqbem417 toSci 0.000250E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqbem418 toSci 0.000251E-6172 -> 3E-6176 Underflow Subnormal Inexact Rounded -dqbem419 toSci 0.00009E-6172 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqbem420 toSci 0.00005E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbem421 toSci 0.00003E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbem422 toSci 0.000009E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbem423 toSci 0.000005E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbem424 toSci 0.000003E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped - -dqbem425 toSci 0.001049E-6172 -> 1.0E-6175 Underflow Subnormal Inexact Rounded -dqbem426 toSci 0.001050E-6172 -> 1.0E-6175 Underflow Subnormal Inexact Rounded -dqbem427 toSci 0.001051E-6172 -> 1.1E-6175 Underflow Subnormal Inexact Rounded -dqbem428 toSci 0.001149E-6172 -> 1.1E-6175 Underflow Subnormal Inexact Rounded -dqbem429 toSci 0.001150E-6172 -> 1.2E-6175 Underflow Subnormal Inexact Rounded -dqbem430 toSci 0.001151E-6172 -> 1.2E-6175 Underflow Subnormal Inexact Rounded - -dqbem432 toSci 0.010049E-6172 -> 1.00E-6174 Underflow Subnormal Inexact Rounded -dqbem433 toSci 0.010050E-6172 -> 1.00E-6174 Underflow Subnormal Inexact Rounded -dqbem434 toSci 0.010051E-6172 -> 1.01E-6174 Underflow Subnormal Inexact Rounded -dqbem435 toSci 0.010149E-6172 -> 1.01E-6174 Underflow Subnormal Inexact Rounded -dqbem436 toSci 0.010150E-6172 -> 1.02E-6174 Underflow Subnormal Inexact Rounded -dqbem437 toSci 0.010151E-6172 -> 1.02E-6174 Underflow Subnormal Inexact Rounded - -dqbem440 toSci 0.10103E-6172 -> 1.010E-6173 Underflow Subnormal Inexact Rounded -dqbem441 toSci 0.10105E-6172 -> 1.010E-6173 Underflow Subnormal Inexact Rounded -dqbem442 toSci 0.10107E-6172 -> 1.011E-6173 Underflow Subnormal Inexact Rounded -dqbem443 toSci 0.10113E-6172 -> 1.011E-6173 Underflow Subnormal Inexact Rounded -dqbem444 toSci 0.10115E-6172 -> 1.012E-6173 Underflow Subnormal Inexact Rounded -dqbem445 toSci 0.10117E-6172 -> 1.012E-6173 Underflow Subnormal Inexact Rounded - -dqbem450 toSci 1.10730E-6173 -> 1.107E-6173 Underflow Subnormal Inexact Rounded -dqbem451 toSci 1.10750E-6173 -> 1.108E-6173 Underflow Subnormal Inexact Rounded -dqbem452 toSci 1.10770E-6173 -> 1.108E-6173 Underflow Subnormal Inexact Rounded -dqbem453 toSci 1.10830E-6173 -> 1.108E-6173 Underflow Subnormal Inexact Rounded -dqbem454 toSci 1.10850E-6173 -> 1.108E-6173 Underflow Subnormal Inexact Rounded -dqbem455 toSci 1.10870E-6173 -> 1.109E-6173 Underflow Subnormal Inexact Rounded - --- make sure sign OK -dqbem456 toSci -0.10103E-6172 -> -1.010E-6173 Underflow Subnormal Inexact Rounded -dqbem457 toSci -0.10105E-6172 -> -1.010E-6173 Underflow Subnormal Inexact Rounded -dqbem458 toSci -0.10107E-6172 -> -1.011E-6173 Underflow Subnormal Inexact Rounded -dqbem459 toSci -0.10113E-6172 -> -1.011E-6173 Underflow Subnormal Inexact Rounded -dqbem460 toSci -0.10115E-6172 -> -1.012E-6173 Underflow Subnormal Inexact Rounded -dqbem461 toSci -0.10117E-6172 -> -1.012E-6173 Underflow Subnormal Inexact Rounded - --- '999s' cases -dqbem464 toSci 999999E-6173 -> 9.99999E-6168 Subnormal -dqbem465 toSci 99999.0E-6172 -> 9.99990E-6168 Subnormal -dqbem466 toSci 99999.E-6172 -> 9.9999E-6168 Subnormal -dqbem467 toSci 9999.9E-6172 -> 9.9999E-6169 Subnormal -dqbem468 toSci 999.99E-6172 -> 9.9999E-6170 Subnormal -dqbem469 toSci 99.999E-6172 -> 9.9999E-6171 Subnormal -dqbem470 toSci 9.9999E-6172 -> 9.9999E-6172 Subnormal -dqbem471 toSci 0.99999E-6172 -> 1.0000E-6172 Underflow Subnormal Inexact Rounded -dqbem472 toSci 0.099999E-6172 -> 1.000E-6173 Underflow Subnormal Inexact Rounded -dqbem473 toSci 0.0099999E-6172 -> 1.00E-6174 Underflow Subnormal Inexact Rounded -dqbem474 toSci 0.00099999E-6172 -> 1.0E-6175 Underflow Subnormal Inexact Rounded -dqbem475 toSci 0.000099999E-6172 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqbem476 toSci 0.0000099999E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbem477 toSci 0.00000099999E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbem478 toSci 0.000000099999E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped - --- Exponents with insignificant leading zeros -dqbas1001 toSci 1e999999999 -> Infinity Overflow Inexact Rounded -dqbas1002 toSci 1e0999999999 -> Infinity Overflow Inexact Rounded -dqbas1003 toSci 1e00999999999 -> Infinity Overflow Inexact Rounded -dqbas1004 toSci 1e000999999999 -> Infinity Overflow Inexact Rounded -dqbas1005 toSci 1e000000000000999999999 -> Infinity Overflow Inexact Rounded -dqbas1006 toSci 1e000000000001000000007 -> Infinity Overflow Inexact Rounded -dqbas1007 toSci 1e-999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas1008 toSci 1e-0999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas1009 toSci 1e-00999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas1010 toSci 1e-000999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas1011 toSci 1e-000000000000999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqbas1012 toSci 1e-000000000001000000007 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped - --- check for double-rounded subnormals -dqbas1041 toSci 1.1111111111111111111111111111152444E-6144 -> 1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow -dqbas1042 toSci 1.1111111111111111111111111111152445E-6144 -> 1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow -dqbas1043 toSci 1.1111111111111111111111111111152446E-6144 -> 1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow - --- clamped zeros [see also clamp.decTest] -dqbas1075 toSci 0e+10000 -> 0E+6111 Clamped -dqbas1076 toSci 0e-10000 -> 0E-6176 Clamped -dqbas1077 toSci -0e+10000 -> -0E+6111 Clamped -dqbas1078 toSci -0e-10000 -> -0E-6176 Clamped - --- extreme values from next-wider -dqbas1101 toSci -9.9999999999999999999999999999999999999999999999999999999999999999999E+1572864 -> -Infinity Overflow Inexact Rounded -dqbas1102 toSci -1E-1572863 -> -0E-6176 Inexact Rounded Subnormal Underflow Clamped -dqbas1103 toSci -1E-1572932 -> -0E-6176 Inexact Rounded Subnormal Underflow Clamped -dqbas1104 toSci -0 -> -0 -dqbas1105 toSci +0 -> 0 -dqbas1106 toSci +1E-1572932 -> 0E-6176 Inexact Rounded Subnormal Underflow Clamped -dqbas1107 toSci +1E-1572863 -> 0E-6176 Inexact Rounded Subnormal Underflow Clamped -dqbas1108 toSci +9.9999999999999999999999999999999999999999999999999999999999999999999E+1572864 -> Infinity Overflow Inexact Rounded - +------------------------------------------------------------------------ +-- dqBase.decTest -- base decQuad <--> string conversions -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This file tests base conversions from string to a decimal number +-- and back to a string (in Scientific form) + +-- Note that unlike other operations the operand is subject to rounding +-- to conform to emax and precision settings (that is, numbers will +-- conform to rules and exponent will be in permitted range). The +-- 'left hand side', therefore, may have numbers that cannot be +-- represented in a decQuad. Some testcases go to the limit of the +-- next-wider format, and hence these testcases may also be used to +-- test narrowing and widening operations. + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +dqbas001 toSci 0 -> 0 +dqbas002 toSci 1 -> 1 +dqbas003 toSci 1.0 -> 1.0 +dqbas004 toSci 1.00 -> 1.00 +dqbas005 toSci 10 -> 10 +dqbas006 toSci 1000 -> 1000 +dqbas007 toSci 10.0 -> 10.0 +dqbas008 toSci 10.1 -> 10.1 +dqbas009 toSci 10.4 -> 10.4 +dqbas010 toSci 10.5 -> 10.5 +dqbas011 toSci 10.6 -> 10.6 +dqbas012 toSci 10.9 -> 10.9 +dqbas013 toSci 11.0 -> 11.0 +dqbas014 toSci 1.234 -> 1.234 +dqbas015 toSci 0.123 -> 0.123 +dqbas016 toSci 0.012 -> 0.012 +dqbas017 toSci -0 -> -0 +dqbas018 toSci -0.0 -> -0.0 +dqbas019 toSci -00.00 -> -0.00 + +dqbas021 toSci -1 -> -1 +dqbas022 toSci -1.0 -> -1.0 +dqbas023 toSci -0.1 -> -0.1 +dqbas024 toSci -9.1 -> -9.1 +dqbas025 toSci -9.11 -> -9.11 +dqbas026 toSci -9.119 -> -9.119 +dqbas027 toSci -9.999 -> -9.999 + +dqbas030 toSci '123456789.123456' -> '123456789.123456' +dqbas031 toSci '123456789.000000' -> '123456789.000000' +dqbas032 toSci '123456789123456' -> '123456789123456' +dqbas033 toSci '0.0000123456789' -> '0.0000123456789' +dqbas034 toSci '0.00000123456789' -> '0.00000123456789' +dqbas035 toSci '0.000000123456789' -> '1.23456789E-7' +dqbas036 toSci '0.0000000123456789' -> '1.23456789E-8' + +dqbas037 toSci '0.123456789012344' -> '0.123456789012344' +dqbas038 toSci '0.123456789012345' -> '0.123456789012345' + +-- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax) +dqbsn001 toSci -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 +dqbsn002 toSci -1E-6143 -> -1E-6143 +dqbsn003 toSci -1E-6176 -> -1E-6176 Subnormal +dqbsn004 toSci -0 -> -0 +dqbsn005 toSci +0 -> 0 +dqbsn006 toSci +1E-6176 -> 1E-6176 Subnormal +dqbsn007 toSci +1E-6143 -> 1E-6143 +dqbsn008 toSci +9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 + +-- String [many more examples are implicitly tested elsewhere] +-- strings without E cannot generate E in result +dqbas040 toSci "12" -> '12' +dqbas041 toSci "-76" -> '-76' +dqbas042 toSci "12.76" -> '12.76' +dqbas043 toSci "+12.76" -> '12.76' +dqbas044 toSci "012.76" -> '12.76' +dqbas045 toSci "+0.003" -> '0.003' +dqbas046 toSci "17." -> '17' +dqbas047 toSci ".5" -> '0.5' +dqbas048 toSci "044" -> '44' +dqbas049 toSci "0044" -> '44' +dqbas050 toSci "0.0005" -> '0.0005' +dqbas051 toSci "00.00005" -> '0.00005' +dqbas052 toSci "0.000005" -> '0.000005' +dqbas053 toSci "0.0000050" -> '0.0000050' +dqbas054 toSci "0.0000005" -> '5E-7' +dqbas055 toSci "0.00000005" -> '5E-8' +dqbas056 toSci "12345678.543210" -> '12345678.543210' +dqbas057 toSci "2345678.543210" -> '2345678.543210' +dqbas058 toSci "345678.543210" -> '345678.543210' +dqbas059 toSci "0345678.54321" -> '345678.54321' +dqbas060 toSci "345678.5432" -> '345678.5432' +dqbas061 toSci "+345678.5432" -> '345678.5432' +dqbas062 toSci "+0345678.5432" -> '345678.5432' +dqbas063 toSci "+00345678.5432" -> '345678.5432' +dqbas064 toSci "-345678.5432" -> '-345678.5432' +dqbas065 toSci "-0345678.5432" -> '-345678.5432' +dqbas066 toSci "-00345678.5432" -> '-345678.5432' +-- examples +dqbas067 toSci "5E-6" -> '0.000005' +dqbas068 toSci "50E-7" -> '0.0000050' +dqbas069 toSci "5E-7" -> '5E-7' + +-- [No exotics as no Unicode] + +-- rounded with dots in all (including edge) places +dqbas071 toSci .1234567891234567890123456780123456123 -> 0.1234567891234567890123456780123456 Inexact Rounded +dqbas072 toSci 1.234567891234567890123456780123456123 -> 1.234567891234567890123456780123456 Inexact Rounded +dqbas073 toSci 12.34567891234567890123456780123456123 -> 12.34567891234567890123456780123456 Inexact Rounded +dqbas074 toSci 123.4567891234567890123456780123456123 -> 123.4567891234567890123456780123456 Inexact Rounded +dqbas075 toSci 1234.567891234567890123456780123456123 -> 1234.567891234567890123456780123456 Inexact Rounded +dqbas076 toSci 12345.67891234567890123456780123456123 -> 12345.67891234567890123456780123456 Inexact Rounded +dqbas077 toSci 123456.7891234567890123456780123456123 -> 123456.7891234567890123456780123456 Inexact Rounded +dqbas078 toSci 1234567.891234567890123456780123456123 -> 1234567.891234567890123456780123456 Inexact Rounded +dqbas079 toSci 12345678.91234567890123456780123456123 -> 12345678.91234567890123456780123456 Inexact Rounded +dqbas080 toSci 123456789.1234567890123456780123456123 -> 123456789.1234567890123456780123456 Inexact Rounded +dqbas081 toSci 1234567891.234567890123456780123456123 -> 1234567891.234567890123456780123456 Inexact Rounded +dqbas082 toSci 12345678912.34567890123456780123456123 -> 12345678912.34567890123456780123456 Inexact Rounded +dqbas083 toSci 123456789123.4567890123456780123456123 -> 123456789123.4567890123456780123456 Inexact Rounded +dqbas084 toSci 1234567891234.567890123456780123456123 -> 1234567891234.567890123456780123456 Inexact Rounded +dqbas085 toSci 12345678912345.67890123456780123456123 -> 12345678912345.67890123456780123456 Inexact Rounded +dqbas086 toSci 123456789123456.7890123456780123456123 -> 123456789123456.7890123456780123456 Inexact Rounded +dqbas087 toSci 1234567891234567.890123456780123456123 -> 1234567891234567.890123456780123456 Inexact Rounded +dqbas088 toSci 12345678912345678.90123456780123456123 -> 12345678912345678.90123456780123456 Inexact Rounded +dqbas089 toSci 123456789123456789.0123456780123456123 -> 123456789123456789.0123456780123456 Inexact Rounded +dqbas090 toSci 1234567891234567890.123456780123456123 -> 1234567891234567890.123456780123456 Inexact Rounded +dqbas091 toSci 12345678912345678901.23456780123456123 -> 12345678912345678901.23456780123456 Inexact Rounded +dqbas092 toSci 123456789123456789012.3456780123456123 -> 123456789123456789012.3456780123456 Inexact Rounded +dqbas093 toSci 1234567891234567890123.456780123456123 -> 1234567891234567890123.456780123456 Inexact Rounded +dqbas094 toSci 12345678912345678901234.56780123456123 -> 12345678912345678901234.56780123456 Inexact Rounded +dqbas095 toSci 123456789123456789012345.6780123456123 -> 123456789123456789012345.6780123456 Inexact Rounded +dqbas096 toSci 1234567891234567890123456.780123456123 -> 1234567891234567890123456.780123456 Inexact Rounded +dqbas097 toSci 12345678912345678901234567.80123456123 -> 12345678912345678901234567.80123456 Inexact Rounded +dqbas098 toSci 123456789123456789012345678.0123456123 -> 123456789123456789012345678.0123456 Inexact Rounded +dqbas099 toSci 1234567891234567890123456780.123456123 -> 1234567891234567890123456780.123456 Inexact Rounded +dqbas100 toSci 12345678912345678901234567801.23456123 -> 12345678912345678901234567801.23456 Inexact Rounded +dqbas101 toSci 123456789123456789012345678012.3456123 -> 123456789123456789012345678012.3456 Inexact Rounded +dqbas102 toSci 1234567891234567890123456780123.456123 -> 1234567891234567890123456780123.456 Inexact Rounded +dqbas103 toSci 12345678912345678901234567801234.56123 -> 12345678912345678901234567801234.56 Inexact Rounded +dqbas104 toSci 123456789123456789012345678012345.6123 -> 123456789123456789012345678012345.6 Inexact Rounded +dqbas105 toSci 1234567891234567890123456780123456.123 -> 1234567891234567890123456780123456 Inexact Rounded +dqbas106 toSci 12345678912345678901234567801234561.23 -> 1.234567891234567890123456780123456E+34 Inexact Rounded +dqbas107 toSci 123456789123456789012345678012345612.3 -> 1.234567891234567890123456780123456E+35 Inexact Rounded +dqbas108 toSci 1234567891234567890123456780123456123. -> 1.234567891234567890123456780123456E+36 Inexact Rounded +-- 123456789012345678 + +-- Numbers with E +dqbas130 toSci "0.000E-1" -> '0.0000' +dqbas131 toSci "0.000E-2" -> '0.00000' +dqbas132 toSci "0.000E-3" -> '0.000000' +dqbas133 toSci "0.000E-4" -> '0E-7' +dqbas134 toSci "0.00E-2" -> '0.0000' +dqbas135 toSci "0.00E-3" -> '0.00000' +dqbas136 toSci "0.00E-4" -> '0.000000' +dqbas137 toSci "0.00E-5" -> '0E-7' +dqbas138 toSci "+0E+9" -> '0E+9' +dqbas139 toSci "-0E+9" -> '-0E+9' +dqbas140 toSci "1E+9" -> '1E+9' +dqbas141 toSci "1e+09" -> '1E+9' +dqbas142 toSci "1E+90" -> '1E+90' +dqbas143 toSci "+1E+009" -> '1E+9' +dqbas144 toSci "0E+9" -> '0E+9' +dqbas145 toSci "1E+9" -> '1E+9' +dqbas146 toSci "1E+09" -> '1E+9' +dqbas147 toSci "1e+90" -> '1E+90' +dqbas148 toSci "1E+009" -> '1E+9' +dqbas149 toSci "000E+9" -> '0E+9' +dqbas150 toSci "1E9" -> '1E+9' +dqbas151 toSci "1e09" -> '1E+9' +dqbas152 toSci "1E90" -> '1E+90' +dqbas153 toSci "1E009" -> '1E+9' +dqbas154 toSci "0E9" -> '0E+9' +dqbas155 toSci "0.000e+0" -> '0.000' +dqbas156 toSci "0.000E-1" -> '0.0000' +dqbas157 toSci "4E+9" -> '4E+9' +dqbas158 toSci "44E+9" -> '4.4E+10' +dqbas159 toSci "0.73e-7" -> '7.3E-8' +dqbas160 toSci "00E+9" -> '0E+9' +dqbas161 toSci "00E-9" -> '0E-9' +dqbas162 toSci "10E+9" -> '1.0E+10' +dqbas163 toSci "10E+09" -> '1.0E+10' +dqbas164 toSci "10e+90" -> '1.0E+91' +dqbas165 toSci "10E+009" -> '1.0E+10' +dqbas166 toSci "100e+9" -> '1.00E+11' +dqbas167 toSci "100e+09" -> '1.00E+11' +dqbas168 toSci "100E+90" -> '1.00E+92' +dqbas169 toSci "100e+009" -> '1.00E+11' + +dqbas170 toSci "1.265" -> '1.265' +dqbas171 toSci "1.265E-20" -> '1.265E-20' +dqbas172 toSci "1.265E-8" -> '1.265E-8' +dqbas173 toSci "1.265E-4" -> '0.0001265' +dqbas174 toSci "1.265E-3" -> '0.001265' +dqbas175 toSci "1.265E-2" -> '0.01265' +dqbas176 toSci "1.265E-1" -> '0.1265' +dqbas177 toSci "1.265E-0" -> '1.265' +dqbas178 toSci "1.265E+1" -> '12.65' +dqbas179 toSci "1.265E+2" -> '126.5' +dqbas180 toSci "1.265E+3" -> '1265' +dqbas181 toSci "1.265E+4" -> '1.265E+4' +dqbas182 toSci "1.265E+8" -> '1.265E+8' +dqbas183 toSci "1.265E+20" -> '1.265E+20' + +dqbas190 toSci "12.65" -> '12.65' +dqbas191 toSci "12.65E-20" -> '1.265E-19' +dqbas192 toSci "12.65E-8" -> '1.265E-7' +dqbas193 toSci "12.65E-4" -> '0.001265' +dqbas194 toSci "12.65E-3" -> '0.01265' +dqbas195 toSci "12.65E-2" -> '0.1265' +dqbas196 toSci "12.65E-1" -> '1.265' +dqbas197 toSci "12.65E-0" -> '12.65' +dqbas198 toSci "12.65E+1" -> '126.5' +dqbas199 toSci "12.65E+2" -> '1265' +dqbas200 toSci "12.65E+3" -> '1.265E+4' +dqbas201 toSci "12.65E+4" -> '1.265E+5' +dqbas202 toSci "12.65E+8" -> '1.265E+9' +dqbas203 toSci "12.65E+20" -> '1.265E+21' + +dqbas210 toSci "126.5" -> '126.5' +dqbas211 toSci "126.5E-20" -> '1.265E-18' +dqbas212 toSci "126.5E-8" -> '0.000001265' +dqbas213 toSci "126.5E-4" -> '0.01265' +dqbas214 toSci "126.5E-3" -> '0.1265' +dqbas215 toSci "126.5E-2" -> '1.265' +dqbas216 toSci "126.5E-1" -> '12.65' +dqbas217 toSci "126.5E-0" -> '126.5' +dqbas218 toSci "126.5E+1" -> '1265' +dqbas219 toSci "126.5E+2" -> '1.265E+4' +dqbas220 toSci "126.5E+3" -> '1.265E+5' +dqbas221 toSci "126.5E+4" -> '1.265E+6' +dqbas222 toSci "126.5E+8" -> '1.265E+10' +dqbas223 toSci "126.5E+20" -> '1.265E+22' + +dqbas230 toSci "1265" -> '1265' +dqbas231 toSci "1265E-20" -> '1.265E-17' +dqbas232 toSci "1265E-8" -> '0.00001265' +dqbas233 toSci "1265E-4" -> '0.1265' +dqbas234 toSci "1265E-3" -> '1.265' +dqbas235 toSci "1265E-2" -> '12.65' +dqbas236 toSci "1265E-1" -> '126.5' +dqbas237 toSci "1265E-0" -> '1265' +dqbas238 toSci "1265E+1" -> '1.265E+4' +dqbas239 toSci "1265E+2" -> '1.265E+5' +dqbas240 toSci "1265E+3" -> '1.265E+6' +dqbas241 toSci "1265E+4" -> '1.265E+7' +dqbas242 toSci "1265E+8" -> '1.265E+11' +dqbas243 toSci "1265E+20" -> '1.265E+23' + +dqbas250 toSci "0.1265" -> '0.1265' +dqbas251 toSci "0.1265E-20" -> '1.265E-21' +dqbas252 toSci "0.1265E-8" -> '1.265E-9' +dqbas253 toSci "0.1265E-4" -> '0.00001265' +dqbas254 toSci "0.1265E-3" -> '0.0001265' +dqbas255 toSci "0.1265E-2" -> '0.001265' +dqbas256 toSci "0.1265E-1" -> '0.01265' +dqbas257 toSci "0.1265E-0" -> '0.1265' +dqbas258 toSci "0.1265E+1" -> '1.265' +dqbas259 toSci "0.1265E+2" -> '12.65' +dqbas260 toSci "0.1265E+3" -> '126.5' +dqbas261 toSci "0.1265E+4" -> '1265' +dqbas262 toSci "0.1265E+8" -> '1.265E+7' +dqbas263 toSci "0.1265E+20" -> '1.265E+19' + +-- some more negative zeros [systematic tests below] +dqbas290 toSci "-0.000E-1" -> '-0.0000' +dqbas291 toSci "-0.000E-2" -> '-0.00000' +dqbas292 toSci "-0.000E-3" -> '-0.000000' +dqbas293 toSci "-0.000E-4" -> '-0E-7' +dqbas294 toSci "-0.00E-2" -> '-0.0000' +dqbas295 toSci "-0.00E-3" -> '-0.00000' +dqbas296 toSci "-0.0E-2" -> '-0.000' +dqbas297 toSci "-0.0E-3" -> '-0.0000' +dqbas298 toSci "-0E-2" -> '-0.00' +dqbas299 toSci "-0E-3" -> '-0.000' + +-- Engineering notation tests +dqbas301 toSci 10e12 -> 1.0E+13 +dqbas302 toEng 10e12 -> 10E+12 +dqbas303 toSci 10e11 -> 1.0E+12 +dqbas304 toEng 10e11 -> 1.0E+12 +dqbas305 toSci 10e10 -> 1.0E+11 +dqbas306 toEng 10e10 -> 100E+9 +dqbas307 toSci 10e9 -> 1.0E+10 +dqbas308 toEng 10e9 -> 10E+9 +dqbas309 toSci 10e8 -> 1.0E+9 +dqbas310 toEng 10e8 -> 1.0E+9 +dqbas311 toSci 10e7 -> 1.0E+8 +dqbas312 toEng 10e7 -> 100E+6 +dqbas313 toSci 10e6 -> 1.0E+7 +dqbas314 toEng 10e6 -> 10E+6 +dqbas315 toSci 10e5 -> 1.0E+6 +dqbas316 toEng 10e5 -> 1.0E+6 +dqbas317 toSci 10e4 -> 1.0E+5 +dqbas318 toEng 10e4 -> 100E+3 +dqbas319 toSci 10e3 -> 1.0E+4 +dqbas320 toEng 10e3 -> 10E+3 +dqbas321 toSci 10e2 -> 1.0E+3 +dqbas322 toEng 10e2 -> 1.0E+3 +dqbas323 toSci 10e1 -> 1.0E+2 +dqbas324 toEng 10e1 -> 100 +dqbas325 toSci 10e0 -> 10 +dqbas326 toEng 10e0 -> 10 +dqbas327 toSci 10e-1 -> 1.0 +dqbas328 toEng 10e-1 -> 1.0 +dqbas329 toSci 10e-2 -> 0.10 +dqbas330 toEng 10e-2 -> 0.10 +dqbas331 toSci 10e-3 -> 0.010 +dqbas332 toEng 10e-3 -> 0.010 +dqbas333 toSci 10e-4 -> 0.0010 +dqbas334 toEng 10e-4 -> 0.0010 +dqbas335 toSci 10e-5 -> 0.00010 +dqbas336 toEng 10e-5 -> 0.00010 +dqbas337 toSci 10e-6 -> 0.000010 +dqbas338 toEng 10e-6 -> 0.000010 +dqbas339 toSci 10e-7 -> 0.0000010 +dqbas340 toEng 10e-7 -> 0.0000010 +dqbas341 toSci 10e-8 -> 1.0E-7 +dqbas342 toEng 10e-8 -> 100E-9 +dqbas343 toSci 10e-9 -> 1.0E-8 +dqbas344 toEng 10e-9 -> 10E-9 +dqbas345 toSci 10e-10 -> 1.0E-9 +dqbas346 toEng 10e-10 -> 1.0E-9 +dqbas347 toSci 10e-11 -> 1.0E-10 +dqbas348 toEng 10e-11 -> 100E-12 +dqbas349 toSci 10e-12 -> 1.0E-11 +dqbas350 toEng 10e-12 -> 10E-12 +dqbas351 toSci 10e-13 -> 1.0E-12 +dqbas352 toEng 10e-13 -> 1.0E-12 + +dqbas361 toSci 7E12 -> 7E+12 +dqbas362 toEng 7E12 -> 7E+12 +dqbas363 toSci 7E11 -> 7E+11 +dqbas364 toEng 7E11 -> 700E+9 +dqbas365 toSci 7E10 -> 7E+10 +dqbas366 toEng 7E10 -> 70E+9 +dqbas367 toSci 7E9 -> 7E+9 +dqbas368 toEng 7E9 -> 7E+9 +dqbas369 toSci 7E8 -> 7E+8 +dqbas370 toEng 7E8 -> 700E+6 +dqbas371 toSci 7E7 -> 7E+7 +dqbas372 toEng 7E7 -> 70E+6 +dqbas373 toSci 7E6 -> 7E+6 +dqbas374 toEng 7E6 -> 7E+6 +dqbas375 toSci 7E5 -> 7E+5 +dqbas376 toEng 7E5 -> 700E+3 +dqbas377 toSci 7E4 -> 7E+4 +dqbas378 toEng 7E4 -> 70E+3 +dqbas379 toSci 7E3 -> 7E+3 +dqbas380 toEng 7E3 -> 7E+3 +dqbas381 toSci 7E2 -> 7E+2 +dqbas382 toEng 7E2 -> 700 +dqbas383 toSci 7E1 -> 7E+1 +dqbas384 toEng 7E1 -> 70 +dqbas385 toSci 7E0 -> 7 +dqbas386 toEng 7E0 -> 7 +dqbas387 toSci 7E-1 -> 0.7 +dqbas388 toEng 7E-1 -> 0.7 +dqbas389 toSci 7E-2 -> 0.07 +dqbas390 toEng 7E-2 -> 0.07 +dqbas391 toSci 7E-3 -> 0.007 +dqbas392 toEng 7E-3 -> 0.007 +dqbas393 toSci 7E-4 -> 0.0007 +dqbas394 toEng 7E-4 -> 0.0007 +dqbas395 toSci 7E-5 -> 0.00007 +dqbas396 toEng 7E-5 -> 0.00007 +dqbas397 toSci 7E-6 -> 0.000007 +dqbas398 toEng 7E-6 -> 0.000007 +dqbas399 toSci 7E-7 -> 7E-7 +dqbas400 toEng 7E-7 -> 700E-9 +dqbas401 toSci 7E-8 -> 7E-8 +dqbas402 toEng 7E-8 -> 70E-9 +dqbas403 toSci 7E-9 -> 7E-9 +dqbas404 toEng 7E-9 -> 7E-9 +dqbas405 toSci 7E-10 -> 7E-10 +dqbas406 toEng 7E-10 -> 700E-12 +dqbas407 toSci 7E-11 -> 7E-11 +dqbas408 toEng 7E-11 -> 70E-12 +dqbas409 toSci 7E-12 -> 7E-12 +dqbas410 toEng 7E-12 -> 7E-12 +dqbas411 toSci 7E-13 -> 7E-13 +dqbas412 toEng 7E-13 -> 700E-15 + +-- Exacts remain exact up to precision .. +dqbas420 toSci 100 -> 100 +dqbas422 toSci 1000 -> 1000 +dqbas424 toSci 999.9 -> 999.9 +dqbas426 toSci 1000.0 -> 1000.0 +dqbas428 toSci 1000.1 -> 1000.1 +dqbas430 toSci 10000 -> 10000 +dqbas432 toSci 1000000000000000000000000000000 -> 1000000000000000000000000000000 +dqbas434 toSci 10000000000000000000000000000000 -> 10000000000000000000000000000000 +dqbas436 toSci 100000000000000000000000000000000 -> 100000000000000000000000000000000 +dqbas438 toSci 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 +dqbas440 toSci 10000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+34 Rounded +dqbas442 toSci 10000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+34 Rounded +dqbas444 toSci 10000000000000000000000000000000003 -> 1.000000000000000000000000000000000E+34 Rounded Inexact +dqbas446 toSci 10000000000000000000000000000000005 -> 1.000000000000000000000000000000000E+34 Rounded Inexact +dqbas448 toSci 100000000000000000000000000000000050 -> 1.000000000000000000000000000000000E+35 Rounded Inexact +dqbas450 toSci 10000000000000000000000000000000009 -> 1.000000000000000000000000000000001E+34 Rounded Inexact +dqbas452 toSci 100000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+35 Rounded +dqbas454 toSci 100000000000000000000000000000000003 -> 1.000000000000000000000000000000000E+35 Rounded Inexact +dqbas456 toSci 100000000000000000000000000000000005 -> 1.000000000000000000000000000000000E+35 Rounded Inexact +dqbas458 toSci 100000000000000000000000000000000009 -> 1.000000000000000000000000000000000E+35 Rounded Inexact +dqbas460 toSci 1000000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+36 Rounded +dqbas462 toSci 1000000000000000000000000000000000300 -> 1.000000000000000000000000000000000E+36 Rounded Inexact +dqbas464 toSci 1000000000000000000000000000000000500 -> 1.000000000000000000000000000000000E+36 Rounded Inexact +dqbas466 toSci 1000000000000000000000000000000000900 -> 1.000000000000000000000000000000001E+36 Rounded Inexact +dqbas468 toSci 10000000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+37 Rounded +dqbas470 toSci 10000000000000000000000000000000003000 -> 1.000000000000000000000000000000000E+37 Rounded Inexact +dqbas472 toSci 10000000000000000000000000000000005000 -> 1.000000000000000000000000000000000E+37 Rounded Inexact +dqbas474 toSci 10000000000000000000000000000000009000 -> 1.000000000000000000000000000000001E+37 Rounded Inexact + +-- check rounding modes heeded +rounding: ceiling +dqbsr401 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded +dqbsr402 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112346 Rounded Inexact +dqbsr403 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112346 Rounded Inexact +dqbsr404 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact +rounding: up +dqbsr405 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded +dqbsr406 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112346 Rounded Inexact +dqbsr407 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112346 Rounded Inexact +dqbsr408 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact +rounding: floor +dqbsr410 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded +dqbsr411 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact +dqbsr412 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112345 Rounded Inexact +dqbsr413 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112345 Rounded Inexact +rounding: half_down +dqbsr415 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded +dqbsr416 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact +dqbsr417 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112345 Rounded Inexact +dqbsr418 toSci 1.11111111111111111111111111111234650 -> 1.111111111111111111111111111112346 Rounded Inexact +dqbsr419 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact +rounding: half_even +dqbsr421 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded +dqbsr422 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact +dqbsr423 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112346 Rounded Inexact +dqbsr424 toSci 1.11111111111111111111111111111234650 -> 1.111111111111111111111111111112346 Rounded Inexact +dqbsr425 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact +rounding: down +dqbsr426 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded +dqbsr427 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact +dqbsr428 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112345 Rounded Inexact +dqbsr429 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112345 Rounded Inexact +rounding: half_up +dqbsr431 toSci 1.1111111111111111111111111111123450 -> 1.111111111111111111111111111112345 Rounded +dqbsr432 toSci 1.11111111111111111111111111111234549 -> 1.111111111111111111111111111112345 Rounded Inexact +dqbsr433 toSci 1.11111111111111111111111111111234550 -> 1.111111111111111111111111111112346 Rounded Inexact +dqbsr434 toSci 1.11111111111111111111111111111234650 -> 1.111111111111111111111111111112347 Rounded Inexact +dqbsr435 toSci 1.11111111111111111111111111111234551 -> 1.111111111111111111111111111112346 Rounded Inexact +-- negatives +rounding: ceiling +dqbsr501 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded +dqbsr502 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact +dqbsr503 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112345 Rounded Inexact +dqbsr504 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112345 Rounded Inexact +rounding: up +dqbsr505 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded +dqbsr506 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112346 Rounded Inexact +dqbsr507 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112346 Rounded Inexact +dqbsr508 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact +rounding: floor +dqbsr510 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded +dqbsr511 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112346 Rounded Inexact +dqbsr512 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112346 Rounded Inexact +dqbsr513 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact +rounding: half_down +dqbsr515 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded +dqbsr516 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact +dqbsr517 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112345 Rounded Inexact +dqbsr518 toSci -1.11111111111111111111111111111234650 -> -1.111111111111111111111111111112346 Rounded Inexact +dqbsr519 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact +rounding: half_even +dqbsr521 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded +dqbsr522 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact +dqbsr523 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112346 Rounded Inexact +dqbsr524 toSci -1.11111111111111111111111111111234650 -> -1.111111111111111111111111111112346 Rounded Inexact +dqbsr525 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact +rounding: down +dqbsr526 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded +dqbsr527 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact +dqbsr528 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112345 Rounded Inexact +dqbsr529 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112345 Rounded Inexact +rounding: half_up +dqbsr531 toSci -1.1111111111111111111111111111123450 -> -1.111111111111111111111111111112345 Rounded +dqbsr532 toSci -1.11111111111111111111111111111234549 -> -1.111111111111111111111111111112345 Rounded Inexact +dqbsr533 toSci -1.11111111111111111111111111111234550 -> -1.111111111111111111111111111112346 Rounded Inexact +dqbsr534 toSci -1.11111111111111111111111111111234650 -> -1.111111111111111111111111111112347 Rounded Inexact +dqbsr535 toSci -1.11111111111111111111111111111234551 -> -1.111111111111111111111111111112346 Rounded Inexact + +rounding: half_even + +-- The 'baddies' tests from DiagBigDecimal, plus some new ones +dqbas500 toSci '1..2' -> NaN Conversion_syntax +dqbas501 toSci '.' -> NaN Conversion_syntax +dqbas502 toSci '..' -> NaN Conversion_syntax +dqbas503 toSci '++1' -> NaN Conversion_syntax +dqbas504 toSci '--1' -> NaN Conversion_syntax +dqbas505 toSci '-+1' -> NaN Conversion_syntax +dqbas506 toSci '+-1' -> NaN Conversion_syntax +dqbas507 toSci '12e' -> NaN Conversion_syntax +dqbas508 toSci '12e++' -> NaN Conversion_syntax +dqbas509 toSci '12f4' -> NaN Conversion_syntax +dqbas510 toSci ' +1' -> NaN Conversion_syntax +dqbas511 toSci '+ 1' -> NaN Conversion_syntax +dqbas512 toSci '12 ' -> NaN Conversion_syntax +dqbas513 toSci ' + 1' -> NaN Conversion_syntax +dqbas514 toSci ' - 1 ' -> NaN Conversion_syntax +dqbas515 toSci 'x' -> NaN Conversion_syntax +dqbas516 toSci '-1-' -> NaN Conversion_syntax +dqbas517 toSci '12-' -> NaN Conversion_syntax +dqbas518 toSci '3+' -> NaN Conversion_syntax +dqbas519 toSci '' -> NaN Conversion_syntax +dqbas520 toSci '1e-' -> NaN Conversion_syntax +dqbas521 toSci '7e99999a' -> NaN Conversion_syntax +dqbas522 toSci '7e123567890x' -> NaN Conversion_syntax +dqbas523 toSci '7e12356789012x' -> NaN Conversion_syntax +dqbas524 toSci '' -> NaN Conversion_syntax +dqbas525 toSci 'e100' -> NaN Conversion_syntax +dqbas526 toSci '\u0e5a' -> NaN Conversion_syntax +dqbas527 toSci '\u0b65' -> NaN Conversion_syntax +dqbas528 toSci '123,65' -> NaN Conversion_syntax +dqbas529 toSci '1.34.5' -> NaN Conversion_syntax +dqbas530 toSci '.123.5' -> NaN Conversion_syntax +dqbas531 toSci '01.35.' -> NaN Conversion_syntax +dqbas532 toSci '01.35-' -> NaN Conversion_syntax +dqbas533 toSci '0000..' -> NaN Conversion_syntax +dqbas534 toSci '.0000.' -> NaN Conversion_syntax +dqbas535 toSci '00..00' -> NaN Conversion_syntax +dqbas536 toSci '111e*123' -> NaN Conversion_syntax +dqbas537 toSci '111e123-' -> NaN Conversion_syntax +dqbas538 toSci '111e+12+' -> NaN Conversion_syntax +dqbas539 toSci '111e1-3-' -> NaN Conversion_syntax +dqbas540 toSci '111e1*23' -> NaN Conversion_syntax +dqbas541 toSci '111e1e+3' -> NaN Conversion_syntax +dqbas542 toSci '1e1.0' -> NaN Conversion_syntax +dqbas543 toSci '1e123e' -> NaN Conversion_syntax +dqbas544 toSci 'ten' -> NaN Conversion_syntax +dqbas545 toSci 'ONE' -> NaN Conversion_syntax +dqbas546 toSci '1e.1' -> NaN Conversion_syntax +dqbas547 toSci '1e1.' -> NaN Conversion_syntax +dqbas548 toSci '1ee' -> NaN Conversion_syntax +dqbas549 toSci 'e+1' -> NaN Conversion_syntax +dqbas550 toSci '1.23.4' -> NaN Conversion_syntax +dqbas551 toSci '1.2.1' -> NaN Conversion_syntax +dqbas552 toSci '1E+1.2' -> NaN Conversion_syntax +dqbas553 toSci '1E+1.2.3' -> NaN Conversion_syntax +dqbas554 toSci '1E++1' -> NaN Conversion_syntax +dqbas555 toSci '1E--1' -> NaN Conversion_syntax +dqbas556 toSci '1E+-1' -> NaN Conversion_syntax +dqbas557 toSci '1E-+1' -> NaN Conversion_syntax +dqbas558 toSci '1E''1' -> NaN Conversion_syntax +dqbas559 toSci "1E""1" -> NaN Conversion_syntax +dqbas560 toSci "1E""""" -> NaN Conversion_syntax +-- Near-specials +dqbas561 toSci "qNaN" -> NaN Conversion_syntax +dqbas562 toSci "NaNq" -> NaN Conversion_syntax +dqbas563 toSci "NaNs" -> NaN Conversion_syntax +dqbas564 toSci "Infi" -> NaN Conversion_syntax +dqbas565 toSci "Infin" -> NaN Conversion_syntax +dqbas566 toSci "Infini" -> NaN Conversion_syntax +dqbas567 toSci "Infinit" -> NaN Conversion_syntax +dqbas568 toSci "-Infinit" -> NaN Conversion_syntax +dqbas569 toSci "0Inf" -> NaN Conversion_syntax +dqbas570 toSci "9Inf" -> NaN Conversion_syntax +dqbas571 toSci "-0Inf" -> NaN Conversion_syntax +dqbas572 toSci "-9Inf" -> NaN Conversion_syntax +dqbas573 toSci "-sNa" -> NaN Conversion_syntax +dqbas574 toSci "xNaN" -> NaN Conversion_syntax +dqbas575 toSci "0sNaN" -> NaN Conversion_syntax + +-- some baddies with dots and Es and dots and specials +dqbas576 toSci 'e+1' -> NaN Conversion_syntax +dqbas577 toSci '.e+1' -> NaN Conversion_syntax +dqbas578 toSci '+.e+1' -> NaN Conversion_syntax +dqbas579 toSci '-.e+' -> NaN Conversion_syntax +dqbas580 toSci '-.e' -> NaN Conversion_syntax +dqbas581 toSci 'E+1' -> NaN Conversion_syntax +dqbas582 toSci '.E+1' -> NaN Conversion_syntax +dqbas583 toSci '+.E+1' -> NaN Conversion_syntax +dqbas584 toSci '-.E+' -> NaN Conversion_syntax +dqbas585 toSci '-.E' -> NaN Conversion_syntax + +dqbas586 toSci '.NaN' -> NaN Conversion_syntax +dqbas587 toSci '-.NaN' -> NaN Conversion_syntax +dqbas588 toSci '+.sNaN' -> NaN Conversion_syntax +dqbas589 toSci '+.Inf' -> NaN Conversion_syntax +dqbas590 toSci '.Infinity' -> NaN Conversion_syntax + +-- Zeros +dqbas601 toSci 0.000000000 -> 0E-9 +dqbas602 toSci 0.00000000 -> 0E-8 +dqbas603 toSci 0.0000000 -> 0E-7 +dqbas604 toSci 0.000000 -> 0.000000 +dqbas605 toSci 0.00000 -> 0.00000 +dqbas606 toSci 0.0000 -> 0.0000 +dqbas607 toSci 0.000 -> 0.000 +dqbas608 toSci 0.00 -> 0.00 +dqbas609 toSci 0.0 -> 0.0 +dqbas610 toSci .0 -> 0.0 +dqbas611 toSci 0. -> 0 +dqbas612 toSci -.0 -> -0.0 +dqbas613 toSci -0. -> -0 +dqbas614 toSci -0.0 -> -0.0 +dqbas615 toSci -0.00 -> -0.00 +dqbas616 toSci -0.000 -> -0.000 +dqbas617 toSci -0.0000 -> -0.0000 +dqbas618 toSci -0.00000 -> -0.00000 +dqbas619 toSci -0.000000 -> -0.000000 +dqbas620 toSci -0.0000000 -> -0E-7 +dqbas621 toSci -0.00000000 -> -0E-8 +dqbas622 toSci -0.000000000 -> -0E-9 + +dqbas630 toSci 0.00E+0 -> 0.00 +dqbas631 toSci 0.00E+1 -> 0.0 +dqbas632 toSci 0.00E+2 -> 0 +dqbas633 toSci 0.00E+3 -> 0E+1 +dqbas634 toSci 0.00E+4 -> 0E+2 +dqbas635 toSci 0.00E+5 -> 0E+3 +dqbas636 toSci 0.00E+6 -> 0E+4 +dqbas637 toSci 0.00E+7 -> 0E+5 +dqbas638 toSci 0.00E+8 -> 0E+6 +dqbas639 toSci 0.00E+9 -> 0E+7 + +dqbas640 toSci 0.0E+0 -> 0.0 +dqbas641 toSci 0.0E+1 -> 0 +dqbas642 toSci 0.0E+2 -> 0E+1 +dqbas643 toSci 0.0E+3 -> 0E+2 +dqbas644 toSci 0.0E+4 -> 0E+3 +dqbas645 toSci 0.0E+5 -> 0E+4 +dqbas646 toSci 0.0E+6 -> 0E+5 +dqbas647 toSci 0.0E+7 -> 0E+6 +dqbas648 toSci 0.0E+8 -> 0E+7 +dqbas649 toSci 0.0E+9 -> 0E+8 + +dqbas650 toSci 0E+0 -> 0 +dqbas651 toSci 0E+1 -> 0E+1 +dqbas652 toSci 0E+2 -> 0E+2 +dqbas653 toSci 0E+3 -> 0E+3 +dqbas654 toSci 0E+4 -> 0E+4 +dqbas655 toSci 0E+5 -> 0E+5 +dqbas656 toSci 0E+6 -> 0E+6 +dqbas657 toSci 0E+7 -> 0E+7 +dqbas658 toSci 0E+8 -> 0E+8 +dqbas659 toSci 0E+9 -> 0E+9 + +dqbas660 toSci 0.0E-0 -> 0.0 +dqbas661 toSci 0.0E-1 -> 0.00 +dqbas662 toSci 0.0E-2 -> 0.000 +dqbas663 toSci 0.0E-3 -> 0.0000 +dqbas664 toSci 0.0E-4 -> 0.00000 +dqbas665 toSci 0.0E-5 -> 0.000000 +dqbas666 toSci 0.0E-6 -> 0E-7 +dqbas667 toSci 0.0E-7 -> 0E-8 +dqbas668 toSci 0.0E-8 -> 0E-9 +dqbas669 toSci 0.0E-9 -> 0E-10 + +dqbas670 toSci 0.00E-0 -> 0.00 +dqbas671 toSci 0.00E-1 -> 0.000 +dqbas672 toSci 0.00E-2 -> 0.0000 +dqbas673 toSci 0.00E-3 -> 0.00000 +dqbas674 toSci 0.00E-4 -> 0.000000 +dqbas675 toSci 0.00E-5 -> 0E-7 +dqbas676 toSci 0.00E-6 -> 0E-8 +dqbas677 toSci 0.00E-7 -> 0E-9 +dqbas678 toSci 0.00E-8 -> 0E-10 +dqbas679 toSci 0.00E-9 -> 0E-11 + +dqbas680 toSci 000000. -> 0 +dqbas681 toSci 00000. -> 0 +dqbas682 toSci 0000. -> 0 +dqbas683 toSci 000. -> 0 +dqbas684 toSci 00. -> 0 +dqbas685 toSci 0. -> 0 +dqbas686 toSci +00000. -> 0 +dqbas687 toSci -00000. -> -0 +dqbas688 toSci +0. -> 0 +dqbas689 toSci -0. -> -0 + +-- Specials +dqbas700 toSci "NaN" -> NaN +dqbas701 toSci "nan" -> NaN +dqbas702 toSci "nAn" -> NaN +dqbas703 toSci "NAN" -> NaN +dqbas704 toSci "+NaN" -> NaN +dqbas705 toSci "+nan" -> NaN +dqbas706 toSci "+nAn" -> NaN +dqbas707 toSci "+NAN" -> NaN +dqbas708 toSci "-NaN" -> -NaN +dqbas709 toSci "-nan" -> -NaN +dqbas710 toSci "-nAn" -> -NaN +dqbas711 toSci "-NAN" -> -NaN +dqbas712 toSci 'NaN0' -> NaN +dqbas713 toSci 'NaN1' -> NaN1 +dqbas714 toSci 'NaN12' -> NaN12 +dqbas715 toSci 'NaN123' -> NaN123 +dqbas716 toSci 'NaN1234' -> NaN1234 +dqbas717 toSci 'NaN01' -> NaN1 +dqbas718 toSci 'NaN012' -> NaN12 +dqbas719 toSci 'NaN0123' -> NaN123 +dqbas720 toSci 'NaN01234' -> NaN1234 +dqbas721 toSci 'NaN001' -> NaN1 +dqbas722 toSci 'NaN0012' -> NaN12 +dqbas723 toSci 'NaN00123' -> NaN123 +dqbas724 toSci 'NaN001234' -> NaN1234 +dqbas725 toSci 'NaN1234567890123456781234567890123456' -> NaN Conversion_syntax +dqbas726 toSci 'NaN123e+1' -> NaN Conversion_syntax +dqbas727 toSci 'NaN12.45' -> NaN Conversion_syntax +dqbas728 toSci 'NaN-12' -> NaN Conversion_syntax +dqbas729 toSci 'NaN+12' -> NaN Conversion_syntax + +dqbas730 toSci "sNaN" -> sNaN +dqbas731 toSci "snan" -> sNaN +dqbas732 toSci "SnAn" -> sNaN +dqbas733 toSci "SNAN" -> sNaN +dqbas734 toSci "+sNaN" -> sNaN +dqbas735 toSci "+snan" -> sNaN +dqbas736 toSci "+SnAn" -> sNaN +dqbas737 toSci "+SNAN" -> sNaN +dqbas738 toSci "-sNaN" -> -sNaN +dqbas739 toSci "-snan" -> -sNaN +dqbas740 toSci "-SnAn" -> -sNaN +dqbas741 toSci "-SNAN" -> -sNaN +dqbas742 toSci 'sNaN0000' -> sNaN +dqbas743 toSci 'sNaN7' -> sNaN7 +dqbas744 toSci 'sNaN007234' -> sNaN7234 +dqbas745 toSci 'sNaN1234567890123456787234561234567890' -> NaN Conversion_syntax +dqbas746 toSci 'sNaN72.45' -> NaN Conversion_syntax +dqbas747 toSci 'sNaN-72' -> NaN Conversion_syntax + +dqbas748 toSci "Inf" -> Infinity +dqbas749 toSci "inf" -> Infinity +dqbas750 toSci "iNf" -> Infinity +dqbas751 toSci "INF" -> Infinity +dqbas752 toSci "+Inf" -> Infinity +dqbas753 toSci "+inf" -> Infinity +dqbas754 toSci "+iNf" -> Infinity +dqbas755 toSci "+INF" -> Infinity +dqbas756 toSci "-Inf" -> -Infinity +dqbas757 toSci "-inf" -> -Infinity +dqbas758 toSci "-iNf" -> -Infinity +dqbas759 toSci "-INF" -> -Infinity + +dqbas760 toSci "Infinity" -> Infinity +dqbas761 toSci "infinity" -> Infinity +dqbas762 toSci "iNfInItY" -> Infinity +dqbas763 toSci "INFINITY" -> Infinity +dqbas764 toSci "+Infinity" -> Infinity +dqbas765 toSci "+infinity" -> Infinity +dqbas766 toSci "+iNfInItY" -> Infinity +dqbas767 toSci "+INFINITY" -> Infinity +dqbas768 toSci "-Infinity" -> -Infinity +dqbas769 toSci "-infinity" -> -Infinity +dqbas770 toSci "-iNfInItY" -> -Infinity +dqbas771 toSci "-INFINITY" -> -Infinity + +-- Specials and zeros for toEng +dqbast772 toEng "NaN" -> NaN +dqbast773 toEng "-Infinity" -> -Infinity +dqbast774 toEng "-sNaN" -> -sNaN +dqbast775 toEng "-NaN" -> -NaN +dqbast776 toEng "+Infinity" -> Infinity +dqbast778 toEng "+sNaN" -> sNaN +dqbast779 toEng "+NaN" -> NaN +dqbast780 toEng "INFINITY" -> Infinity +dqbast781 toEng "SNAN" -> sNaN +dqbast782 toEng "NAN" -> NaN +dqbast783 toEng "infinity" -> Infinity +dqbast784 toEng "snan" -> sNaN +dqbast785 toEng "nan" -> NaN +dqbast786 toEng "InFINITY" -> Infinity +dqbast787 toEng "SnAN" -> sNaN +dqbast788 toEng "nAN" -> NaN +dqbast789 toEng "iNfinity" -> Infinity +dqbast790 toEng "sNan" -> sNaN +dqbast791 toEng "Nan" -> NaN +dqbast792 toEng "Infinity" -> Infinity +dqbast793 toEng "sNaN" -> sNaN + +-- Zero toEng, etc. +dqbast800 toEng 0e+1 -> "0.00E+3" -- doc example + +dqbast801 toEng 0.000000000 -> 0E-9 +dqbast802 toEng 0.00000000 -> 0.00E-6 +dqbast803 toEng 0.0000000 -> 0.0E-6 +dqbast804 toEng 0.000000 -> 0.000000 +dqbast805 toEng 0.00000 -> 0.00000 +dqbast806 toEng 0.0000 -> 0.0000 +dqbast807 toEng 0.000 -> 0.000 +dqbast808 toEng 0.00 -> 0.00 +dqbast809 toEng 0.0 -> 0.0 +dqbast810 toEng .0 -> 0.0 +dqbast811 toEng 0. -> 0 +dqbast812 toEng -.0 -> -0.0 +dqbast813 toEng -0. -> -0 +dqbast814 toEng -0.0 -> -0.0 +dqbast815 toEng -0.00 -> -0.00 +dqbast816 toEng -0.000 -> -0.000 +dqbast817 toEng -0.0000 -> -0.0000 +dqbast818 toEng -0.00000 -> -0.00000 +dqbast819 toEng -0.000000 -> -0.000000 +dqbast820 toEng -0.0000000 -> -0.0E-6 +dqbast821 toEng -0.00000000 -> -0.00E-6 +dqbast822 toEng -0.000000000 -> -0E-9 + +dqbast830 toEng 0.00E+0 -> 0.00 +dqbast831 toEng 0.00E+1 -> 0.0 +dqbast832 toEng 0.00E+2 -> 0 +dqbast833 toEng 0.00E+3 -> 0.00E+3 +dqbast834 toEng 0.00E+4 -> 0.0E+3 +dqbast835 toEng 0.00E+5 -> 0E+3 +dqbast836 toEng 0.00E+6 -> 0.00E+6 +dqbast837 toEng 0.00E+7 -> 0.0E+6 +dqbast838 toEng 0.00E+8 -> 0E+6 +dqbast839 toEng 0.00E+9 -> 0.00E+9 + +dqbast840 toEng 0.0E+0 -> 0.0 +dqbast841 toEng 0.0E+1 -> 0 +dqbast842 toEng 0.0E+2 -> 0.00E+3 +dqbast843 toEng 0.0E+3 -> 0.0E+3 +dqbast844 toEng 0.0E+4 -> 0E+3 +dqbast845 toEng 0.0E+5 -> 0.00E+6 +dqbast846 toEng 0.0E+6 -> 0.0E+6 +dqbast847 toEng 0.0E+7 -> 0E+6 +dqbast848 toEng 0.0E+8 -> 0.00E+9 +dqbast849 toEng 0.0E+9 -> 0.0E+9 + +dqbast850 toEng 0E+0 -> 0 +dqbast851 toEng 0E+1 -> 0.00E+3 +dqbast852 toEng 0E+2 -> 0.0E+3 +dqbast853 toEng 0E+3 -> 0E+3 +dqbast854 toEng 0E+4 -> 0.00E+6 +dqbast855 toEng 0E+5 -> 0.0E+6 +dqbast856 toEng 0E+6 -> 0E+6 +dqbast857 toEng 0E+7 -> 0.00E+9 +dqbast858 toEng 0E+8 -> 0.0E+9 +dqbast859 toEng 0E+9 -> 0E+9 + +dqbast860 toEng 0.0E-0 -> 0.0 +dqbast861 toEng 0.0E-1 -> 0.00 +dqbast862 toEng 0.0E-2 -> 0.000 +dqbast863 toEng 0.0E-3 -> 0.0000 +dqbast864 toEng 0.0E-4 -> 0.00000 +dqbast865 toEng 0.0E-5 -> 0.000000 +dqbast866 toEng 0.0E-6 -> 0.0E-6 +dqbast867 toEng 0.0E-7 -> 0.00E-6 +dqbast868 toEng 0.0E-8 -> 0E-9 +dqbast869 toEng 0.0E-9 -> 0.0E-9 + +dqbast870 toEng 0.00E-0 -> 0.00 +dqbast871 toEng 0.00E-1 -> 0.000 +dqbast872 toEng 0.00E-2 -> 0.0000 +dqbast873 toEng 0.00E-3 -> 0.00000 +dqbast874 toEng 0.00E-4 -> 0.000000 +dqbast875 toEng 0.00E-5 -> 0.0E-6 +dqbast876 toEng 0.00E-6 -> 0.00E-6 +dqbast877 toEng 0.00E-7 -> 0E-9 +dqbast878 toEng 0.00E-8 -> 0.0E-9 +dqbast879 toEng 0.00E-9 -> 0.00E-9 + +-- long input strings +dqbas801 tosci '01234567890123456' -> 1234567890123456 +dqbas802 tosci '001234567890123456' -> 1234567890123456 +dqbas803 tosci '0001234567890123456' -> 1234567890123456 +dqbas804 tosci '00001234567890123456' -> 1234567890123456 +dqbas805 tosci '000001234567890123456' -> 1234567890123456 +dqbas806 tosci '0000001234567890123456' -> 1234567890123456 +dqbas807 tosci '00000001234567890123456' -> 1234567890123456 +dqbas808 tosci '000000001234567890123456' -> 1234567890123456 +dqbas809 tosci '0000000001234567890123456' -> 1234567890123456 +dqbas810 tosci '00000000001234567890123456' -> 1234567890123456 + +dqbas811 tosci '0.1234567890123456' -> 0.1234567890123456 +dqbas812 tosci '0.01234567890123456' -> 0.01234567890123456 +dqbas813 tosci '0.001234567890123456' -> 0.001234567890123456 +dqbas814 tosci '0.0001234567890123456' -> 0.0001234567890123456 +dqbas815 tosci '0.00001234567890123456' -> 0.00001234567890123456 +dqbas816 tosci '0.000001234567890123456' -> 0.000001234567890123456 +dqbas817 tosci '0.0000001234567890123456' -> 1.234567890123456E-7 +dqbas818 tosci '0.00000001234567890123456' -> 1.234567890123456E-8 +dqbas819 tosci '0.000000001234567890123456' -> 1.234567890123456E-9 +dqbas820 tosci '0.0000000001234567890123456' -> 1.234567890123456E-10 + +dqbas821 tosci '12345678912345678901234567801234567890' -> 1.234567891234567890123456780123457E+37 Inexact Rounded +dqbas822 tosci '123456789123456789012345678012345678901' -> 1.234567891234567890123456780123457E+38 Inexact Rounded +dqbas823 tosci '1234567891234567890123456780123456789012' -> 1.234567891234567890123456780123457E+39 Inexact Rounded +dqbas824 tosci '12345678912345678901234567801234567890123' -> 1.234567891234567890123456780123457E+40 Inexact Rounded +dqbas825 tosci '123456789123456789012345678012345678901234' -> 1.234567891234567890123456780123457E+41 Inexact Rounded +dqbas826 tosci '1234567891234567890123456780123456789012345' -> 1.234567891234567890123456780123457E+42 Inexact Rounded +dqbas827 tosci '12345678912345678901234567801234567890123456' -> 1.234567891234567890123456780123457E+43 Inexact Rounded +dqbas828 tosci '123456789123456789012345678012345678901234567' -> 1.234567891234567890123456780123457E+44 Inexact Rounded +dqbas829 tosci '1234567891234567890123456780123456789012345678' -> 1.234567891234567890123456780123457E+45 Inexact Rounded + +-- subnormals and overflows +dqbas906 toSci '99e999999999' -> Infinity Overflow Inexact Rounded +dqbas907 toSci '999e999999999' -> Infinity Overflow Inexact Rounded +dqbas908 toSci '0.9e-999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas909 toSci '0.09e-999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas910 toSci '0.1e1000000000' -> Infinity Overflow Inexact Rounded +dqbas911 toSci '10e-1000000000' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas912 toSci '0.9e9999999999' -> Infinity Overflow Inexact Rounded +dqbas913 toSci '99e-9999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas914 toSci '111e9999999999' -> Infinity Overflow Inexact Rounded +dqbas915 toSci '1111e-9999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas916 toSci '1111e-99999999999' -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas917 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +-- negatives the same +dqbas918 toSci '-99e999999999' -> -Infinity Overflow Inexact Rounded +dqbas919 toSci '-999e999999999' -> -Infinity Overflow Inexact Rounded +dqbas920 toSci '-0.9e-999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas921 toSci '-0.09e-999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas922 toSci '-0.1e1000000000' -> -Infinity Overflow Inexact Rounded +dqbas923 toSci '-10e-1000000000' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas924 toSci '-0.9e9999999999' -> -Infinity Overflow Inexact Rounded +dqbas925 toSci '-99e-9999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas926 toSci '-111e9999999999' -> -Infinity Overflow Inexact Rounded +dqbas927 toSci '-1111e-9999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas928 toSci '-1111e-99999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas929 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded + +-- overflow results at different rounding modes +rounding: ceiling +dqbas930 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dqbas931 toSci '-7e10000' -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +rounding: up +dqbas932 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dqbas933 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: down +dqbas934 toSci '7e10000' -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +dqbas935 toSci '-7e10000' -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +rounding: floor +dqbas936 toSci '7e10000' -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +dqbas937 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded + +rounding: half_up +dqbas938 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dqbas939 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: half_even +dqbas940 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dqbas941 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: half_down +dqbas942 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dqbas943 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded + +rounding: half_even + +-- Now check 854/754r some subnormals and underflow to 0 +dqbem400 toSci 1.0000E-383 -> 1.0000E-383 +dqbem401 toSci 0.1E-6172 -> 1E-6173 Subnormal +dqbem402 toSci 0.1000E-6172 -> 1.000E-6173 Subnormal +dqbem403 toSci 0.0100E-6172 -> 1.00E-6174 Subnormal +dqbem404 toSci 0.0010E-6172 -> 1.0E-6175 Subnormal +dqbem405 toSci 0.0001E-6172 -> 1E-6176 Subnormal +dqbem406 toSci 0.00010E-6172 -> 1E-6176 Subnormal Rounded +dqbem407 toSci 0.00013E-6172 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqbem408 toSci 0.00015E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqbem409 toSci 0.00017E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqbem410 toSci 0.00023E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqbem411 toSci 0.00025E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqbem412 toSci 0.00027E-6172 -> 3E-6176 Underflow Subnormal Inexact Rounded +dqbem413 toSci 0.000149E-6172 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqbem414 toSci 0.000150E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqbem415 toSci 0.000151E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqbem416 toSci 0.000249E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqbem417 toSci 0.000250E-6172 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqbem418 toSci 0.000251E-6172 -> 3E-6176 Underflow Subnormal Inexact Rounded +dqbem419 toSci 0.00009E-6172 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqbem420 toSci 0.00005E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbem421 toSci 0.00003E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbem422 toSci 0.000009E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbem423 toSci 0.000005E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbem424 toSci 0.000003E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped + +dqbem425 toSci 0.001049E-6172 -> 1.0E-6175 Underflow Subnormal Inexact Rounded +dqbem426 toSci 0.001050E-6172 -> 1.0E-6175 Underflow Subnormal Inexact Rounded +dqbem427 toSci 0.001051E-6172 -> 1.1E-6175 Underflow Subnormal Inexact Rounded +dqbem428 toSci 0.001149E-6172 -> 1.1E-6175 Underflow Subnormal Inexact Rounded +dqbem429 toSci 0.001150E-6172 -> 1.2E-6175 Underflow Subnormal Inexact Rounded +dqbem430 toSci 0.001151E-6172 -> 1.2E-6175 Underflow Subnormal Inexact Rounded + +dqbem432 toSci 0.010049E-6172 -> 1.00E-6174 Underflow Subnormal Inexact Rounded +dqbem433 toSci 0.010050E-6172 -> 1.00E-6174 Underflow Subnormal Inexact Rounded +dqbem434 toSci 0.010051E-6172 -> 1.01E-6174 Underflow Subnormal Inexact Rounded +dqbem435 toSci 0.010149E-6172 -> 1.01E-6174 Underflow Subnormal Inexact Rounded +dqbem436 toSci 0.010150E-6172 -> 1.02E-6174 Underflow Subnormal Inexact Rounded +dqbem437 toSci 0.010151E-6172 -> 1.02E-6174 Underflow Subnormal Inexact Rounded + +dqbem440 toSci 0.10103E-6172 -> 1.010E-6173 Underflow Subnormal Inexact Rounded +dqbem441 toSci 0.10105E-6172 -> 1.010E-6173 Underflow Subnormal Inexact Rounded +dqbem442 toSci 0.10107E-6172 -> 1.011E-6173 Underflow Subnormal Inexact Rounded +dqbem443 toSci 0.10113E-6172 -> 1.011E-6173 Underflow Subnormal Inexact Rounded +dqbem444 toSci 0.10115E-6172 -> 1.012E-6173 Underflow Subnormal Inexact Rounded +dqbem445 toSci 0.10117E-6172 -> 1.012E-6173 Underflow Subnormal Inexact Rounded + +dqbem450 toSci 1.10730E-6173 -> 1.107E-6173 Underflow Subnormal Inexact Rounded +dqbem451 toSci 1.10750E-6173 -> 1.108E-6173 Underflow Subnormal Inexact Rounded +dqbem452 toSci 1.10770E-6173 -> 1.108E-6173 Underflow Subnormal Inexact Rounded +dqbem453 toSci 1.10830E-6173 -> 1.108E-6173 Underflow Subnormal Inexact Rounded +dqbem454 toSci 1.10850E-6173 -> 1.108E-6173 Underflow Subnormal Inexact Rounded +dqbem455 toSci 1.10870E-6173 -> 1.109E-6173 Underflow Subnormal Inexact Rounded + +-- make sure sign OK +dqbem456 toSci -0.10103E-6172 -> -1.010E-6173 Underflow Subnormal Inexact Rounded +dqbem457 toSci -0.10105E-6172 -> -1.010E-6173 Underflow Subnormal Inexact Rounded +dqbem458 toSci -0.10107E-6172 -> -1.011E-6173 Underflow Subnormal Inexact Rounded +dqbem459 toSci -0.10113E-6172 -> -1.011E-6173 Underflow Subnormal Inexact Rounded +dqbem460 toSci -0.10115E-6172 -> -1.012E-6173 Underflow Subnormal Inexact Rounded +dqbem461 toSci -0.10117E-6172 -> -1.012E-6173 Underflow Subnormal Inexact Rounded + +-- '999s' cases +dqbem464 toSci 999999E-6173 -> 9.99999E-6168 Subnormal +dqbem465 toSci 99999.0E-6172 -> 9.99990E-6168 Subnormal +dqbem466 toSci 99999.E-6172 -> 9.9999E-6168 Subnormal +dqbem467 toSci 9999.9E-6172 -> 9.9999E-6169 Subnormal +dqbem468 toSci 999.99E-6172 -> 9.9999E-6170 Subnormal +dqbem469 toSci 99.999E-6172 -> 9.9999E-6171 Subnormal +dqbem470 toSci 9.9999E-6172 -> 9.9999E-6172 Subnormal +dqbem471 toSci 0.99999E-6172 -> 1.0000E-6172 Underflow Subnormal Inexact Rounded +dqbem472 toSci 0.099999E-6172 -> 1.000E-6173 Underflow Subnormal Inexact Rounded +dqbem473 toSci 0.0099999E-6172 -> 1.00E-6174 Underflow Subnormal Inexact Rounded +dqbem474 toSci 0.00099999E-6172 -> 1.0E-6175 Underflow Subnormal Inexact Rounded +dqbem475 toSci 0.000099999E-6172 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqbem476 toSci 0.0000099999E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbem477 toSci 0.00000099999E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbem478 toSci 0.000000099999E-6172 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped + +-- Exponents with insignificant leading zeros +dqbas1001 toSci 1e999999999 -> Infinity Overflow Inexact Rounded +dqbas1002 toSci 1e0999999999 -> Infinity Overflow Inexact Rounded +dqbas1003 toSci 1e00999999999 -> Infinity Overflow Inexact Rounded +dqbas1004 toSci 1e000999999999 -> Infinity Overflow Inexact Rounded +dqbas1005 toSci 1e000000000000999999999 -> Infinity Overflow Inexact Rounded +dqbas1006 toSci 1e000000000001000000007 -> Infinity Overflow Inexact Rounded +dqbas1007 toSci 1e-999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas1008 toSci 1e-0999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas1009 toSci 1e-00999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas1010 toSci 1e-000999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas1011 toSci 1e-000000000000999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqbas1012 toSci 1e-000000000001000000007 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped + +-- check for double-rounded subnormals +dqbas1041 toSci 1.1111111111111111111111111111152444E-6144 -> 1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow +dqbas1042 toSci 1.1111111111111111111111111111152445E-6144 -> 1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow +dqbas1043 toSci 1.1111111111111111111111111111152446E-6144 -> 1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow + +-- clamped zeros [see also clamp.decTest] +dqbas1075 toSci 0e+10000 -> 0E+6111 Clamped +dqbas1076 toSci 0e-10000 -> 0E-6176 Clamped +dqbas1077 toSci -0e+10000 -> -0E+6111 Clamped +dqbas1078 toSci -0e-10000 -> -0E-6176 Clamped + +-- extreme values from next-wider +dqbas1101 toSci -9.9999999999999999999999999999999999999999999999999999999999999999999E+1572864 -> -Infinity Overflow Inexact Rounded +dqbas1102 toSci -1E-1572863 -> -0E-6176 Inexact Rounded Subnormal Underflow Clamped +dqbas1103 toSci -1E-1572932 -> -0E-6176 Inexact Rounded Subnormal Underflow Clamped +dqbas1104 toSci -0 -> -0 +dqbas1105 toSci +0 -> 0 +dqbas1106 toSci +1E-1572932 -> 0E-6176 Inexact Rounded Subnormal Underflow Clamped +dqbas1107 toSci +1E-1572863 -> 0E-6176 Inexact Rounded Subnormal Underflow Clamped +dqbas1108 toSci +9.9999999999999999999999999999999999999999999999999999999999999999999E+1572864 -> Infinity Overflow Inexact Rounded + diff --git a/Lib/test/decimaltestdata/dqCanonical.decTest b/Lib/test/decimaltestdata/dqCanonical.decTest index 3ddf6ea..006db85 100644 --- a/Lib/test/decimaltestdata/dqCanonical.decTest +++ b/Lib/test/decimaltestdata/dqCanonical.decTest @@ -1,372 +1,372 @@ ------------------------------------------------------------------------- --- dqCanonical.decTest -- test decQuad canonical results -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This file tests that copy operations leave uncanonical operands --- unchanged, and vice versa - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Uncanonical declets are: abc, where: --- a=1,2,3 --- b=6,7,e,f --- c=e,f - --- assert some standard (canonical) values; this tests that FromString --- produces canonical results (many more in decimalNN) -dqcan001 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan002 apply 0 -> #22080000000000000000000000000000 -dqcan003 apply 1 -> #22080000000000000000000000000001 -dqcan004 apply -1 -> #a2080000000000000000000000000001 -dqcan005 apply Infinity -> #78000000000000000000000000000000 -dqcan006 apply -Infinity -> #f8000000000000000000000000000000 -dqcan007 apply -NaN -> #fc000000000000000000000000000000 -dqcan008 apply -sNaN -> #fe000000000000000000000000000000 -dqcan009 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan010 apply sNaN999999999999999999999999999999999 -> #7e000ff3fcff3fcff3fcff3fcff3fcff -decan011 apply 9999999999999999999999999999999999 -> #6e080ff3fcff3fcff3fcff3fcff3fcff -dqcan012 apply 7.50 -> #220780000000000000000000000003d0 -dqcan013 apply 9.99 -> #220780000000000000000000000000ff - --- Base tests for canonical encodings (individual operator --- propagation is tested later) - --- Finites: declets in coefficient -dqcan021 canonical #77ffcff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan022 canonical #77fffff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan023 canonical #77ffcffffcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan024 canonical #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan025 canonical #77ffcff3fcffffcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan026 canonical #77ffcff3fcff3ffff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan027 canonical #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan028 canonical #77ffcff3fcff3fcff3ffff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan029 canonical #77ffcff3fcff3fcff3fcffffcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan030 canonical #77ffcff3fcff3fcff3fcff3ffff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan031 canonical #77ffcff3fcff3fcff3fcff3fcffffcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan032 canonical #77ffcff3fcff3fcff3fcff3fcff3ffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff - --- NaN: declets in payload -dqcan061 canonical #7c000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan062 canonical #7c000ffffcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan063 canonical #7c000ff3ffff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan064 canonical #7c000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan065 canonical #7c000ff3fcff3ffff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan066 canonical #7c000ff3fcff3fcffffcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan067 canonical #7c000ff3fcff3fcff3ffff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan068 canonical #7c000ff3fcff3fcff3fcffffcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan069 canonical #7c000ff3fcff3fcff3fcff3ffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan070 canonical #7c000ff3fcff3fcff3fcff3fcffffcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan071 canonical #7c000ff3fcff3fcff3fcff3fcff3ffff -> #7c000ff3fcff3fcff3fcff3fcff3fcff --- NaN: exponent continuation bits [excluding sNaN selector] -dqcan081 canonical #7d000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan082 canonical #7c800ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan083 canonical #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan084 canonical #7c200ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan085 canonical #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan086 canonical #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan087 canonical #7c040ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan088 canonical #7c020ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan089 canonical #7c010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan090 canonical #7c008ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan091 canonical #7c004ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff - --- sNaN: declets in payload -dqcan101 canonical #7e000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan102 canonical #7e000ffffcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan103 canonical #7e000ff3ffff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan104 canonical #7e000ff3fcffffcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan105 canonical #7e000ff3fcff3ffff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan106 canonical #7e000ff3fcff3fcffffcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan107 canonical #7e000ff3fcff3fcff3ffff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan108 canonical #7e000ff3fcff3fcff3fcffffcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan109 canonical #7e000ff3fcff3fcff3fcff3ffff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan100 canonical #7e000ff3fcff3fcff3fcff3fcffffcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan111 canonical #7e000ff3fcff3fcff3fcff3fcff3ffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff --- sNaN: exponent continuation bits [excluding sNaN selector] -dqcan121 canonical #7f000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan122 canonical #7e800ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan123 canonical #7e400ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan124 canonical #7e200ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan125 canonical #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan126 canonical #7e080ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan127 canonical #7e040ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan128 canonical #7e020ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan129 canonical #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan130 canonical #7e008ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -dqcan131 canonical #7e004ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff - --- Inf: exponent continuation bits -dqcan137 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan138 canonical #79000000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan139 canonical #7a000000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan140 canonical #78800000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan141 canonical #78400000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan142 canonical #78200000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan143 canonical #78100000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan144 canonical #78080000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan145 canonical #78040000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan146 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan147 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan148 canonical #78008000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan149 canonical #78004000000000000000000000000000 -> #78000000000000000000000000000000 - --- Inf: coefficient continuation bits (first, last, and a few others) -dqcan150 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan151 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan152 canonical #78000000000000000000000000000001 -> #78000000000000000000000000000000 -dqcan153 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan154 canonical #78002000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan155 canonical #78000800000000000000000000000000 -> #78000000000000000000000000000000 -dqcan156 canonical #78000020000000000000000000000000 -> #78000000000000000000000000000000 -dqcan157 canonical #78000004000000000000000000000000 -> #78000000000000000000000000000000 -dqcan158 canonical #78000000400000000000000000000000 -> #78000000000000000000000000000000 -dqcan159 canonical #78000000080000000000000000000000 -> #78000000000000000000000000000000 -dqcan160 canonical #78000000004000000000000000000000 -> #78000000000000000000000000000000 -dqcan161 canonical #78000000000200000000000000000000 -> #78000000000000000000000000000000 -dqcan162 canonical #78000000000080000000000000000000 -> #78000000000000000000000000000000 -dqcan163 canonical #78000000000002000000000000000000 -> #78000000000000000000000000000000 -dqcan164 canonical #78000000000000400000000000000000 -> #78000000000000000000000000000000 -dqcan165 canonical #78000000000000080000000000000000 -> #78000000000000000000000000000000 -dqcan166 canonical #78000000000000001000000000000000 -> #78000000000000000000000000000000 -dqcan167 canonical #78000000000000000200000000000000 -> #78000000000000000000000000000000 -dqcan168 canonical #78000000000000000080000000000000 -> #78000000000000000000000000000000 -dqcan169 canonical #78000000000000000004000000000000 -> #78000000000000000000000000000000 -dqcan170 canonical #78000000000000000000400000000000 -> #78000000000000000000000000000000 -dqcan171 canonical #78000000000000000000010000000000 -> #78000000000000000000000000000000 -dqcan172 canonical #78000000000000000000002000000000 -> #78000000000000000000000000000000 -dqcan173 canonical #78000000000000000000000400000000 -> #78000000000000000000000000000000 -dqcan174 canonical #78000000000000000000000080000000 -> #78000000000000000000000000000000 -dqcan175 canonical #78000000000000000000000002000000 -> #78000000000000000000000000000000 -dqcan176 canonical #78000000000000000000000000400000 -> #78000000000000000000000000000000 -dqcan177 canonical #78000000000000000000000000020000 -> #78000000000000000000000000000000 -dqcan178 canonical #78000000000000000000000000001000 -> #78000000000000000000000000000000 -dqcan179 canonical #78000000000000000000000000000400 -> #78000000000000000000000000000000 -dqcan180 canonical #78000000000000000000000000000020 -> #78000000000000000000000000000000 -dqcan181 canonical #78000000000000000000000000000008 -> #78000000000000000000000000000000 - - --- Now the operators -- trying to check paths that might fail to --- canonicalize propagated operands - ------ Add: --- Finites: neutral 0 -dqcan202 add 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -dqcan203 add #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff --- tiny zero -dqcan204 add 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded -dqcan205 add #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded --- tiny non zero -dqcan206 add -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded -dqcan207 add #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded --- NaN: declets in payload -dqcan211 add 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan212 add #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff --- NaN: exponent continuation bits [excluding sNaN selector] -dqcan213 add 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan214 add #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff --- sNaN: declets in payload -dqcan215 add 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -dqcan216 add #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation --- sNaN: exponent continuation bits [excluding sNaN selector] -dqcan217 add 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -dqcan218 add #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation --- Inf: exponent continuation bits -dqcan220 add 0 #78010000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan221 add #78680000000000000000000000000000 0 -> #78000000000000000000000000000000 --- Inf: coefficient continuation bits -dqcan222 add 0 #78002000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan223 add #78000000000000000000000000000001 0 -> #78000000000000000000000000000000 -dqcan224 add 0 #78000002000000000000000000000000 -> #78000000000000000000000000000000 -dqcan225 add #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000 -dqcan226 add 0 #78000000000000000005000000000000 -> #78000000000000000000000000000000 -dqcan227 add #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000 - ------ Class: [does not return encoded] - ------ Compare: -dqcan231 compare -Inf 1 -> #a2080000000000000000000000000001 -dqcan232 compare -Inf -Inf -> #22080000000000000000000000000000 -dqcan233 compare 1 -Inf -> #22080000000000000000000000000001 -dqcan234 compare #7c010ff3fcff3fcff3fcff3ffffffcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan235 compare #7e004ff3fcff3fcff3ffffffcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation - ------ CompareSig: -dqcan241 comparesig -Inf 1 -> #a2080000000000000000000000000001 -dqcan242 comparesig -Inf -Inf -> #22080000000000000000000000000000 -dqcan243 comparesig 1 -Inf -> #22080000000000000000000000000001 -dqcan244 comparesig #7c400ff3ffff3fcff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -dqcan245 comparesig #7e050ff3fcfffffff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation - ------ Copy: [does not usually canonicalize] --- finites -dqcan250 copy #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff -dqcan251 copy #ee080ff3fcff3ffff3fcff3ffff3fcff -> #ee080ff3fcff3ffff3fcff3ffff3fcff --- NaNs -dqcan252 copy #7c000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff -dqcan253 copy #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff --- sNaN -dqcan254 copy #7e003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff -dqcan255 copy #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff --- Inf -dqcan258 copy #78002000000000000000000000000000 -> #78002000000000000000000000000000 -dqcan259 copy #78000000000010000000000000100000 -> #78000000000010000000000000100000 - ------ CopyAbs: [does not usually canonicalize] --- finites -dqcan260 copyabs #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff -dqcan261 copyabs #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff --- NaNs -dqcan262 copyabs #fc000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff -dqcan263 copyabs #fc080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff --- sNaN -dqcan264 copyabs #fe003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff -dqcan265 copyabs #fe100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff --- Inf -dqcan268 copyabs #f8002000000000000000000000000000 -> #78002000000000000000000000000000 -dqcan269 copyabs #f8000000000000700700700000000000 -> #78000000000000700700700000000000 - ------ CopyNegate: [does not usually canonicalize] --- finites -dqcan270 copynegate #6e080ff3fcff3fcfffffff3fcfffffff -> #ee080ff3fcff3fcfffffff3fcfffffff -dqcan271 copynegate #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff --- NaNs -dqcan272 copynegate #7c000ff3fcffffffffffff3fcff3fcff -> #fc000ff3fcffffffffffff3fcff3fcff -dqcan273 copynegate #7c080ff3fcff3fcff3fcff3fcff3fcff -> #fc080ff3fcff3fcff3fcff3fcff3fcff --- sNaN -dqcan274 copynegate #7e003ff3fcffffffffffffffcff3fcff -> #fe003ff3fcffffffffffffffcff3fcff -dqcan275 copynegate #7e100ff3fcff3fcff3fcff3fcff3fcff -> #fe100ff3fcff3fcff3fcff3fcff3fcff --- Inf -dqcan278 copynegate #78002000000000000000000000000000 -> #f8002000000000000000000000000000 -dqcan279 copynegate #78000000000010000000000000100000 -> #f8000000000010000000000000100000 - ------ CopySign: [does not usually canonicalize] --- finites -dqcan280 copysign #6e080ff3fcff3fcfffffff3fcfffffff -1 -> #ee080ff3fcff3fcfffffff3fcfffffff -dqcan281 copysign #ee080ff3fcff3ffff3fcff3ffff3fcff 1 -> #6e080ff3fcff3ffff3fcff3ffff3fcff --- NaNs -dqcan282 copysign #7c000ff3fcffffffffffffffcff3fcff -1 -> #fc000ff3fcffffffffffffffcff3fcff -dqcan283 copysign #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c080ff3fcff3fcff3fcff3fcff3fcff --- sNaN -dqcan284 copysign #7e003ff3fcffffffffffffffcff3fcff -1 -> #fe003ff3fcffffffffffffffcff3fcff -dqcan285 copysign #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7e100ff3fcff3fcff3fcff3fcff3fcff --- Inf -dqcan288 copysign #78002000000000000000000000000000 -1 -> #f8002000000000000000000000000000 -dqcan289 copysign #78000000000010000000000000100000 1 -> #78000000000010000000000000100000 - ------ Multiply: --- Finites: neutral 0 -dqcan302 multiply 1 #77ffff3fcff3fcff0000000000000000 -> #77ffff3fcff3fcff0000000000000000 -dqcan303 multiply #77fcffffcff3fcff0000000000000000 1 -> #77fccfffcff3fcff0000000000000000 --- negative -dqcan306 multiply -1 #77ffff3fcff3fcff0000000000000000 -> #f7ffff3fcff3fcff0000000000000000 -dqcan307 multiply #77fcffffcff3fcff0000000000000000 -1 -> #f7fccfffcff3fcff0000000000000000 --- NaN: declets in payload -dqcan311 multiply 1 #7c03ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 -dqcan312 multiply #7c03ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 --- NaN: exponent continuation bits [excluding sNaN selector] -dqcan313 multiply 1 #7c40ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 -dqcan314 multiply #7c40ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 --- sNaN: declets in payload -dqcan315 multiply 1 #7e00ffffcff3fcff0000000000000000 -> #7c000fffcff3fcff0000000000000000 Invalid_operation -dqcan316 multiply #7e00ffffcff3fcff0000000000000000 1 -> #7c000fffcff3fcff0000000000000000 Invalid_operation --- sNaN: exponent continuation bits [excluding sNaN selector] -dqcan317 multiply 1 #7e80ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation -dqcan318 multiply #7e80ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation --- Inf: exponent continuation bits -dqcan320 multiply 1 #78800000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan321 multiply #78800000000000000000000000000000 1 -> #78000000000000000000000000000000 --- Inf: coefficient continuation bits -dqcan322 multiply 1 #78020000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan323 multiply #78020000000000000000000000000000 1 -> #78000000000000000000000000000000 -dqcan324 multiply 1 #78000000000000010000000000000000 -> #78000000000000000000000000000000 -dqcan325 multiply #78000000000000010000000000000000 1 -> #78000000000000000000000000000000 -dqcan326 multiply 1 #78000020000000000000000000000000 -> #78000000000000000000000000000000 -dqcan327 multiply #78000020000000000000000000000000 1 -> #78000000000000000000000000000000 - ------ Quantize: -dqcan401 quantize #ee080ff3fcff3fcff3fffffffff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff -dqcan402 quantize #ee080ff3fffffffffffcff3fcff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff -dqcan403 quantize #78800000000000000000000000000000 Inf -> #78000000000000000000000000000000 -dqcan404 quantize #78020000000000000000000000000000 -Inf -> #78000000000000000000000000000000 -dqcan410 quantize #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan411 quantize #fc000ff3fcfffffff3fcff3fcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff -dqcan412 quantize #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -dqcan413 quantize #fe000ff3fcff3fcff3ffffffcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation - ------ Subtract: --- Finites: neutral 0 -dqcan502 subtract 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff -dqcan503 subtract #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff --- tiny zero -dqcan504 subtract 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Rounded -dqcan505 subtract #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded --- tiny non zero -dqcan506 subtract -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded -dqcan507 subtract #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded --- NaN: declets in payload -dqcan511 subtract 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan512 subtract #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff --- NaN: exponent continuation bits [excluding sNaN selector] -dqcan513 subtract 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan514 subtract #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff --- sNaN: declets in payload -dqcan515 subtract 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -dqcan516 subtract #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation --- sNaN: exponent continuation bits [excluding sNaN selector] -dqcan517 subtract 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -dqcan518 subtract #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation --- Inf: exponent continuation bits -dqcan520 subtract 0 #78010000000000000000000000000000 -> #f8000000000000000000000000000000 -dqcan521 subtract #78680000000000000000000000000000 0 -> #78000000000000000000000000000000 --- Inf: coefficient continuation bits -dqcan522 subtract 0 #78002000000000000000000000000000 -> #f8000000000000000000000000000000 -dqcan523 subtract #78000000000000000000000000000001 0 -> #78000000000000000000000000000000 -dqcan524 subtract 0 #78000002000000000000000000000000 -> #f8000000000000000000000000000000 -dqcan525 subtract #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000 -dqcan526 subtract 0 #78000000000000000005000000000000 -> #f8000000000000000000000000000000 -dqcan527 subtract #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000 - ------ ToIntegral: -dqcan601 tointegralx #6e080ff3fdff3fcff3fcff3fcff3fcff -> #6e080ff3fcff3fcff3fcff3fcff3fcff -dqcan602 tointegralx #ee080ff3fcff3ffff3fcff3fcff3fcff -> #ee080ff3fcff3fcff3fcff3fcff3fcff -dqcan603 tointegralx #78800000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan604 tointegralx #78020000000000000000000000000000 -> #78000000000000000000000000000000 -dqcan614 tointegralx #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -dqcan615 tointegralx #fc000ff3fcff3fcff3fcffffcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff -dqcan616 tointegralx #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -dqcan617 tointegralx #fe000ff3fcff3fcff3fdff3fcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation --- uncanonical 3999, 39.99, 3.99, 0.399, and negatives -dqcan618 tointegralx #22080000000000000000000000000fff -> #22080000000000000000000000000cff -dqcan619 tointegralx #22078000000000000000000000000fff -> #22080000000000000000000000000040 Inexact Rounded -dqcan620 tointegralx #22074000000000000000000000000fff -> #22080000000000000000000000000004 Inexact Rounded -dqcan621 tointegralx #22070000000000000000000000000fff -> #22080000000000000000000000000000 Inexact Rounded -dqcan622 tointegralx #a2080000000000000000000000000fff -> #a2080000000000000000000000000cff -dqcan623 tointegralx #a2078000000000000000000000000fff -> #a2080000000000000000000000000040 Inexact Rounded -dqcan624 tointegralx #a2074000000000000000000000000fff -> #a2080000000000000000000000000004 Inexact Rounded -dqcan625 tointegralx #a2070000000000000000000000000fff -> #a2080000000000000000000000000000 Inexact Rounded - - - +------------------------------------------------------------------------ +-- dqCanonical.decTest -- test decQuad canonical results -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This file tests that copy operations leave uncanonical operands +-- unchanged, and vice versa + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Uncanonical declets are: abc, where: +-- a=1,2,3 +-- b=6,7,e,f +-- c=e,f + +-- assert some standard (canonical) values; this tests that FromString +-- produces canonical results (many more in decimalNN) +dqcan001 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan002 apply 0 -> #22080000000000000000000000000000 +dqcan003 apply 1 -> #22080000000000000000000000000001 +dqcan004 apply -1 -> #a2080000000000000000000000000001 +dqcan005 apply Infinity -> #78000000000000000000000000000000 +dqcan006 apply -Infinity -> #f8000000000000000000000000000000 +dqcan007 apply -NaN -> #fc000000000000000000000000000000 +dqcan008 apply -sNaN -> #fe000000000000000000000000000000 +dqcan009 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan010 apply sNaN999999999999999999999999999999999 -> #7e000ff3fcff3fcff3fcff3fcff3fcff +decan011 apply 9999999999999999999999999999999999 -> #6e080ff3fcff3fcff3fcff3fcff3fcff +dqcan012 apply 7.50 -> #220780000000000000000000000003d0 +dqcan013 apply 9.99 -> #220780000000000000000000000000ff + +-- Base tests for canonical encodings (individual operator +-- propagation is tested later) + +-- Finites: declets in coefficient +dqcan021 canonical #77ffcff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan022 canonical #77fffff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan023 canonical #77ffcffffcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan024 canonical #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan025 canonical #77ffcff3fcffffcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan026 canonical #77ffcff3fcff3ffff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan027 canonical #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan028 canonical #77ffcff3fcff3fcff3ffff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan029 canonical #77ffcff3fcff3fcff3fcffffcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan030 canonical #77ffcff3fcff3fcff3fcff3ffff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan031 canonical #77ffcff3fcff3fcff3fcff3fcffffcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan032 canonical #77ffcff3fcff3fcff3fcff3fcff3ffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff + +-- NaN: declets in payload +dqcan061 canonical #7c000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan062 canonical #7c000ffffcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan063 canonical #7c000ff3ffff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan064 canonical #7c000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan065 canonical #7c000ff3fcff3ffff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan066 canonical #7c000ff3fcff3fcffffcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan067 canonical #7c000ff3fcff3fcff3ffff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan068 canonical #7c000ff3fcff3fcff3fcffffcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan069 canonical #7c000ff3fcff3fcff3fcff3ffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan070 canonical #7c000ff3fcff3fcff3fcff3fcffffcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan071 canonical #7c000ff3fcff3fcff3fcff3fcff3ffff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +-- NaN: exponent continuation bits [excluding sNaN selector] +dqcan081 canonical #7d000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan082 canonical #7c800ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan083 canonical #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan084 canonical #7c200ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan085 canonical #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan086 canonical #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan087 canonical #7c040ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan088 canonical #7c020ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan089 canonical #7c010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan090 canonical #7c008ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan091 canonical #7c004ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff + +-- sNaN: declets in payload +dqcan101 canonical #7e000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan102 canonical #7e000ffffcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan103 canonical #7e000ff3ffff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan104 canonical #7e000ff3fcffffcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan105 canonical #7e000ff3fcff3ffff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan106 canonical #7e000ff3fcff3fcffffcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan107 canonical #7e000ff3fcff3fcff3ffff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan108 canonical #7e000ff3fcff3fcff3fcffffcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan109 canonical #7e000ff3fcff3fcff3fcff3ffff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan100 canonical #7e000ff3fcff3fcff3fcff3fcffffcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan111 canonical #7e000ff3fcff3fcff3fcff3fcff3ffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +-- sNaN: exponent continuation bits [excluding sNaN selector] +dqcan121 canonical #7f000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan122 canonical #7e800ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan123 canonical #7e400ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan124 canonical #7e200ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan125 canonical #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan126 canonical #7e080ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan127 canonical #7e040ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan128 canonical #7e020ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan129 canonical #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan130 canonical #7e008ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan131 canonical #7e004ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff + +-- Inf: exponent continuation bits +dqcan137 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan138 canonical #79000000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan139 canonical #7a000000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan140 canonical #78800000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan141 canonical #78400000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan142 canonical #78200000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan143 canonical #78100000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan144 canonical #78080000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan145 canonical #78040000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan146 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan147 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan148 canonical #78008000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan149 canonical #78004000000000000000000000000000 -> #78000000000000000000000000000000 + +-- Inf: coefficient continuation bits (first, last, and a few others) +dqcan150 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan151 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan152 canonical #78000000000000000000000000000001 -> #78000000000000000000000000000000 +dqcan153 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan154 canonical #78002000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan155 canonical #78000800000000000000000000000000 -> #78000000000000000000000000000000 +dqcan156 canonical #78000020000000000000000000000000 -> #78000000000000000000000000000000 +dqcan157 canonical #78000004000000000000000000000000 -> #78000000000000000000000000000000 +dqcan158 canonical #78000000400000000000000000000000 -> #78000000000000000000000000000000 +dqcan159 canonical #78000000080000000000000000000000 -> #78000000000000000000000000000000 +dqcan160 canonical #78000000004000000000000000000000 -> #78000000000000000000000000000000 +dqcan161 canonical #78000000000200000000000000000000 -> #78000000000000000000000000000000 +dqcan162 canonical #78000000000080000000000000000000 -> #78000000000000000000000000000000 +dqcan163 canonical #78000000000002000000000000000000 -> #78000000000000000000000000000000 +dqcan164 canonical #78000000000000400000000000000000 -> #78000000000000000000000000000000 +dqcan165 canonical #78000000000000080000000000000000 -> #78000000000000000000000000000000 +dqcan166 canonical #78000000000000001000000000000000 -> #78000000000000000000000000000000 +dqcan167 canonical #78000000000000000200000000000000 -> #78000000000000000000000000000000 +dqcan168 canonical #78000000000000000080000000000000 -> #78000000000000000000000000000000 +dqcan169 canonical #78000000000000000004000000000000 -> #78000000000000000000000000000000 +dqcan170 canonical #78000000000000000000400000000000 -> #78000000000000000000000000000000 +dqcan171 canonical #78000000000000000000010000000000 -> #78000000000000000000000000000000 +dqcan172 canonical #78000000000000000000002000000000 -> #78000000000000000000000000000000 +dqcan173 canonical #78000000000000000000000400000000 -> #78000000000000000000000000000000 +dqcan174 canonical #78000000000000000000000080000000 -> #78000000000000000000000000000000 +dqcan175 canonical #78000000000000000000000002000000 -> #78000000000000000000000000000000 +dqcan176 canonical #78000000000000000000000000400000 -> #78000000000000000000000000000000 +dqcan177 canonical #78000000000000000000000000020000 -> #78000000000000000000000000000000 +dqcan178 canonical #78000000000000000000000000001000 -> #78000000000000000000000000000000 +dqcan179 canonical #78000000000000000000000000000400 -> #78000000000000000000000000000000 +dqcan180 canonical #78000000000000000000000000000020 -> #78000000000000000000000000000000 +dqcan181 canonical #78000000000000000000000000000008 -> #78000000000000000000000000000000 + + +-- Now the operators -- trying to check paths that might fail to +-- canonicalize propagated operands + +----- Add: +-- Finites: neutral 0 +dqcan202 add 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan203 add #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff +-- tiny zero +dqcan204 add 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded +dqcan205 add #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded +-- tiny non zero +dqcan206 add -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded +dqcan207 add #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded +-- NaN: declets in payload +dqcan211 add 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan212 add #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +-- NaN: exponent continuation bits [excluding sNaN selector] +dqcan213 add 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan214 add #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +-- sNaN: declets in payload +dqcan215 add 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan216 add #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +-- sNaN: exponent continuation bits [excluding sNaN selector] +dqcan217 add 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan218 add #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +-- Inf: exponent continuation bits +dqcan220 add 0 #78010000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan221 add #78680000000000000000000000000000 0 -> #78000000000000000000000000000000 +-- Inf: coefficient continuation bits +dqcan222 add 0 #78002000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan223 add #78000000000000000000000000000001 0 -> #78000000000000000000000000000000 +dqcan224 add 0 #78000002000000000000000000000000 -> #78000000000000000000000000000000 +dqcan225 add #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000 +dqcan226 add 0 #78000000000000000005000000000000 -> #78000000000000000000000000000000 +dqcan227 add #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000 + +----- Class: [does not return encoded] + +----- Compare: +dqcan231 compare -Inf 1 -> #a2080000000000000000000000000001 +dqcan232 compare -Inf -Inf -> #22080000000000000000000000000000 +dqcan233 compare 1 -Inf -> #22080000000000000000000000000001 +dqcan234 compare #7c010ff3fcff3fcff3fcff3ffffffcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan235 compare #7e004ff3fcff3fcff3ffffffcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation + +----- CompareSig: +dqcan241 comparesig -Inf 1 -> #a2080000000000000000000000000001 +dqcan242 comparesig -Inf -Inf -> #22080000000000000000000000000000 +dqcan243 comparesig 1 -Inf -> #22080000000000000000000000000001 +dqcan244 comparesig #7c400ff3ffff3fcff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan245 comparesig #7e050ff3fcfffffff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation + +----- Copy: [does not usually canonicalize] +-- finites +dqcan250 copy #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff +dqcan251 copy #ee080ff3fcff3ffff3fcff3ffff3fcff -> #ee080ff3fcff3ffff3fcff3ffff3fcff +-- NaNs +dqcan252 copy #7c000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff +dqcan253 copy #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff +-- sNaN +dqcan254 copy #7e003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff +dqcan255 copy #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff +-- Inf +dqcan258 copy #78002000000000000000000000000000 -> #78002000000000000000000000000000 +dqcan259 copy #78000000000010000000000000100000 -> #78000000000010000000000000100000 + +----- CopyAbs: [does not usually canonicalize] +-- finites +dqcan260 copyabs #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff +dqcan261 copyabs #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff +-- NaNs +dqcan262 copyabs #fc000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff +dqcan263 copyabs #fc080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff +-- sNaN +dqcan264 copyabs #fe003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff +dqcan265 copyabs #fe100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff +-- Inf +dqcan268 copyabs #f8002000000000000000000000000000 -> #78002000000000000000000000000000 +dqcan269 copyabs #f8000000000000700700700000000000 -> #78000000000000700700700000000000 + +----- CopyNegate: [does not usually canonicalize] +-- finites +dqcan270 copynegate #6e080ff3fcff3fcfffffff3fcfffffff -> #ee080ff3fcff3fcfffffff3fcfffffff +dqcan271 copynegate #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff +-- NaNs +dqcan272 copynegate #7c000ff3fcffffffffffff3fcff3fcff -> #fc000ff3fcffffffffffff3fcff3fcff +dqcan273 copynegate #7c080ff3fcff3fcff3fcff3fcff3fcff -> #fc080ff3fcff3fcff3fcff3fcff3fcff +-- sNaN +dqcan274 copynegate #7e003ff3fcffffffffffffffcff3fcff -> #fe003ff3fcffffffffffffffcff3fcff +dqcan275 copynegate #7e100ff3fcff3fcff3fcff3fcff3fcff -> #fe100ff3fcff3fcff3fcff3fcff3fcff +-- Inf +dqcan278 copynegate #78002000000000000000000000000000 -> #f8002000000000000000000000000000 +dqcan279 copynegate #78000000000010000000000000100000 -> #f8000000000010000000000000100000 + +----- CopySign: [does not usually canonicalize] +-- finites +dqcan280 copysign #6e080ff3fcff3fcfffffff3fcfffffff -1 -> #ee080ff3fcff3fcfffffff3fcfffffff +dqcan281 copysign #ee080ff3fcff3ffff3fcff3ffff3fcff 1 -> #6e080ff3fcff3ffff3fcff3ffff3fcff +-- NaNs +dqcan282 copysign #7c000ff3fcffffffffffffffcff3fcff -1 -> #fc000ff3fcffffffffffffffcff3fcff +dqcan283 copysign #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c080ff3fcff3fcff3fcff3fcff3fcff +-- sNaN +dqcan284 copysign #7e003ff3fcffffffffffffffcff3fcff -1 -> #fe003ff3fcffffffffffffffcff3fcff +dqcan285 copysign #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7e100ff3fcff3fcff3fcff3fcff3fcff +-- Inf +dqcan288 copysign #78002000000000000000000000000000 -1 -> #f8002000000000000000000000000000 +dqcan289 copysign #78000000000010000000000000100000 1 -> #78000000000010000000000000100000 + +----- Multiply: +-- Finites: neutral 0 +dqcan302 multiply 1 #77ffff3fcff3fcff0000000000000000 -> #77ffff3fcff3fcff0000000000000000 +dqcan303 multiply #77fcffffcff3fcff0000000000000000 1 -> #77fccfffcff3fcff0000000000000000 +-- negative +dqcan306 multiply -1 #77ffff3fcff3fcff0000000000000000 -> #f7ffff3fcff3fcff0000000000000000 +dqcan307 multiply #77fcffffcff3fcff0000000000000000 -1 -> #f7fccfffcff3fcff0000000000000000 +-- NaN: declets in payload +dqcan311 multiply 1 #7c03ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 +dqcan312 multiply #7c03ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 +-- NaN: exponent continuation bits [excluding sNaN selector] +dqcan313 multiply 1 #7c40ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 +dqcan314 multiply #7c40ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 +-- sNaN: declets in payload +dqcan315 multiply 1 #7e00ffffcff3fcff0000000000000000 -> #7c000fffcff3fcff0000000000000000 Invalid_operation +dqcan316 multiply #7e00ffffcff3fcff0000000000000000 1 -> #7c000fffcff3fcff0000000000000000 Invalid_operation +-- sNaN: exponent continuation bits [excluding sNaN selector] +dqcan317 multiply 1 #7e80ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation +dqcan318 multiply #7e80ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation +-- Inf: exponent continuation bits +dqcan320 multiply 1 #78800000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan321 multiply #78800000000000000000000000000000 1 -> #78000000000000000000000000000000 +-- Inf: coefficient continuation bits +dqcan322 multiply 1 #78020000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan323 multiply #78020000000000000000000000000000 1 -> #78000000000000000000000000000000 +dqcan324 multiply 1 #78000000000000010000000000000000 -> #78000000000000000000000000000000 +dqcan325 multiply #78000000000000010000000000000000 1 -> #78000000000000000000000000000000 +dqcan326 multiply 1 #78000020000000000000000000000000 -> #78000000000000000000000000000000 +dqcan327 multiply #78000020000000000000000000000000 1 -> #78000000000000000000000000000000 + +----- Quantize: +dqcan401 quantize #ee080ff3fcff3fcff3fffffffff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff +dqcan402 quantize #ee080ff3fffffffffffcff3fcff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff +dqcan403 quantize #78800000000000000000000000000000 Inf -> #78000000000000000000000000000000 +dqcan404 quantize #78020000000000000000000000000000 -Inf -> #78000000000000000000000000000000 +dqcan410 quantize #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan411 quantize #fc000ff3fcfffffff3fcff3fcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff +dqcan412 quantize #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan413 quantize #fe000ff3fcff3fcff3ffffffcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation + +----- Subtract: +-- Finites: neutral 0 +dqcan502 subtract 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff +dqcan503 subtract #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff +-- tiny zero +dqcan504 subtract 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Rounded +dqcan505 subtract #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded +-- tiny non zero +dqcan506 subtract -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded +dqcan507 subtract #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded +-- NaN: declets in payload +dqcan511 subtract 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan512 subtract #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +-- NaN: exponent continuation bits [excluding sNaN selector] +dqcan513 subtract 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan514 subtract #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +-- sNaN: declets in payload +dqcan515 subtract 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan516 subtract #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +-- sNaN: exponent continuation bits [excluding sNaN selector] +dqcan517 subtract 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan518 subtract #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +-- Inf: exponent continuation bits +dqcan520 subtract 0 #78010000000000000000000000000000 -> #f8000000000000000000000000000000 +dqcan521 subtract #78680000000000000000000000000000 0 -> #78000000000000000000000000000000 +-- Inf: coefficient continuation bits +dqcan522 subtract 0 #78002000000000000000000000000000 -> #f8000000000000000000000000000000 +dqcan523 subtract #78000000000000000000000000000001 0 -> #78000000000000000000000000000000 +dqcan524 subtract 0 #78000002000000000000000000000000 -> #f8000000000000000000000000000000 +dqcan525 subtract #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000 +dqcan526 subtract 0 #78000000000000000005000000000000 -> #f8000000000000000000000000000000 +dqcan527 subtract #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000 + +----- ToIntegral: +dqcan601 tointegralx #6e080ff3fdff3fcff3fcff3fcff3fcff -> #6e080ff3fcff3fcff3fcff3fcff3fcff +dqcan602 tointegralx #ee080ff3fcff3ffff3fcff3fcff3fcff -> #ee080ff3fcff3fcff3fcff3fcff3fcff +dqcan603 tointegralx #78800000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan604 tointegralx #78020000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan614 tointegralx #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan615 tointegralx #fc000ff3fcff3fcff3fcffffcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff +dqcan616 tointegralx #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan617 tointegralx #fe000ff3fcff3fcff3fdff3fcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +-- uncanonical 3999, 39.99, 3.99, 0.399, and negatives +dqcan618 tointegralx #22080000000000000000000000000fff -> #22080000000000000000000000000cff +dqcan619 tointegralx #22078000000000000000000000000fff -> #22080000000000000000000000000040 Inexact Rounded +dqcan620 tointegralx #22074000000000000000000000000fff -> #22080000000000000000000000000004 Inexact Rounded +dqcan621 tointegralx #22070000000000000000000000000fff -> #22080000000000000000000000000000 Inexact Rounded +dqcan622 tointegralx #a2080000000000000000000000000fff -> #a2080000000000000000000000000cff +dqcan623 tointegralx #a2078000000000000000000000000fff -> #a2080000000000000000000000000040 Inexact Rounded +dqcan624 tointegralx #a2074000000000000000000000000fff -> #a2080000000000000000000000000004 Inexact Rounded +dqcan625 tointegralx #a2070000000000000000000000000fff -> #a2080000000000000000000000000000 Inexact Rounded + + + diff --git a/Lib/test/decimaltestdata/dqClass.decTest b/Lib/test/decimaltestdata/dqClass.decTest index f341933..d7e19b3 100644 --- a/Lib/test/decimaltestdata/dqClass.decTest +++ b/Lib/test/decimaltestdata/dqClass.decTest @@ -1,77 +1,77 @@ ------------------------------------------------------------------------- --- dqClass.decTest -- decQuad Class operations -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- [New 2006.11.27] - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - -dqcla001 class 0 -> +Zero -dqcla002 class 0.00 -> +Zero -dqcla003 class 0E+5 -> +Zero -dqcla004 class 1E-6176 -> +Subnormal -dqcla005 class 0.1E-6143 -> +Subnormal -dqcla006 class 0.99999999999999999999999999999999E-6143 -> +Subnormal -dqcla007 class 1.00000000000000000000000000000000E-6143 -> +Normal -dqcla008 class 1E-6143 -> +Normal -dqcla009 class 1E-100 -> +Normal -dqcla010 class 1E-10 -> +Normal -dqcla012 class 1E-1 -> +Normal -dqcla013 class 1 -> +Normal -dqcla014 class 2.50 -> +Normal -dqcla015 class 100.100 -> +Normal -dqcla016 class 1E+30 -> +Normal -dqcla017 class 1E+6144 -> +Normal -dqcla018 class 9.99999999999999999999999999999999E+6144 -> +Normal -dqcla019 class Inf -> +Infinity - -dqcla021 class -0 -> -Zero -dqcla022 class -0.00 -> -Zero -dqcla023 class -0E+5 -> -Zero -dqcla024 class -1E-6176 -> -Subnormal -dqcla025 class -0.1E-6143 -> -Subnormal -dqcla026 class -0.99999999999999999999999999999999E-6143 -> -Subnormal -dqcla027 class -1.00000000000000000000000000000000E-6143 -> -Normal -dqcla028 class -1E-6143 -> -Normal -dqcla029 class -1E-100 -> -Normal -dqcla030 class -1E-10 -> -Normal -dqcla032 class -1E-1 -> -Normal -dqcla033 class -1 -> -Normal -dqcla034 class -2.50 -> -Normal -dqcla035 class -100.100 -> -Normal -dqcla036 class -1E+30 -> -Normal -dqcla037 class -1E+6144 -> -Normal -dqcla0614 class -9.99999999999999999999999999999999E+6144 -> -Normal -dqcla039 class -Inf -> -Infinity - -dqcla041 class NaN -> NaN -dqcla042 class -NaN -> NaN -dqcla043 class +NaN12345 -> NaN -dqcla044 class sNaN -> sNaN -dqcla045 class -sNaN -> sNaN -dqcla046 class +sNaN12345 -> sNaN - - - +------------------------------------------------------------------------ +-- dqClass.decTest -- decQuad Class operations -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- [New 2006.11.27] + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +dqcla001 class 0 -> +Zero +dqcla002 class 0.00 -> +Zero +dqcla003 class 0E+5 -> +Zero +dqcla004 class 1E-6176 -> +Subnormal +dqcla005 class 0.1E-6143 -> +Subnormal +dqcla006 class 0.99999999999999999999999999999999E-6143 -> +Subnormal +dqcla007 class 1.00000000000000000000000000000000E-6143 -> +Normal +dqcla008 class 1E-6143 -> +Normal +dqcla009 class 1E-100 -> +Normal +dqcla010 class 1E-10 -> +Normal +dqcla012 class 1E-1 -> +Normal +dqcla013 class 1 -> +Normal +dqcla014 class 2.50 -> +Normal +dqcla015 class 100.100 -> +Normal +dqcla016 class 1E+30 -> +Normal +dqcla017 class 1E+6144 -> +Normal +dqcla018 class 9.99999999999999999999999999999999E+6144 -> +Normal +dqcla019 class Inf -> +Infinity + +dqcla021 class -0 -> -Zero +dqcla022 class -0.00 -> -Zero +dqcla023 class -0E+5 -> -Zero +dqcla024 class -1E-6176 -> -Subnormal +dqcla025 class -0.1E-6143 -> -Subnormal +dqcla026 class -0.99999999999999999999999999999999E-6143 -> -Subnormal +dqcla027 class -1.00000000000000000000000000000000E-6143 -> -Normal +dqcla028 class -1E-6143 -> -Normal +dqcla029 class -1E-100 -> -Normal +dqcla030 class -1E-10 -> -Normal +dqcla032 class -1E-1 -> -Normal +dqcla033 class -1 -> -Normal +dqcla034 class -2.50 -> -Normal +dqcla035 class -100.100 -> -Normal +dqcla036 class -1E+30 -> -Normal +dqcla037 class -1E+6144 -> -Normal +dqcla0614 class -9.99999999999999999999999999999999E+6144 -> -Normal +dqcla039 class -Inf -> -Infinity + +dqcla041 class NaN -> NaN +dqcla042 class -NaN -> NaN +dqcla043 class +NaN12345 -> NaN +dqcla044 class sNaN -> sNaN +dqcla045 class -sNaN -> sNaN +dqcla046 class +sNaN12345 -> sNaN + + + diff --git a/Lib/test/decimaltestdata/dqCompare.decTest b/Lib/test/decimaltestdata/dqCompare.decTest index a617ad1..b7b5ee6 100644 --- a/Lib/test/decimaltestdata/dqCompare.decTest +++ b/Lib/test/decimaltestdata/dqCompare.decTest @@ -1,753 +1,753 @@ ------------------------------------------------------------------------- --- dqCompare.decTest -- decQuad comparison that allows quiet NaNs -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqcom001 compare -2 -2 -> 0 -dqcom002 compare -2 -1 -> -1 -dqcom003 compare -2 0 -> -1 -dqcom004 compare -2 1 -> -1 -dqcom005 compare -2 2 -> -1 -dqcom006 compare -1 -2 -> 1 -dqcom007 compare -1 -1 -> 0 -dqcom008 compare -1 0 -> -1 -dqcom009 compare -1 1 -> -1 -dqcom010 compare -1 2 -> -1 -dqcom011 compare 0 -2 -> 1 -dqcom012 compare 0 -1 -> 1 -dqcom013 compare 0 0 -> 0 -dqcom014 compare 0 1 -> -1 -dqcom015 compare 0 2 -> -1 -dqcom016 compare 1 -2 -> 1 -dqcom017 compare 1 -1 -> 1 -dqcom018 compare 1 0 -> 1 -dqcom019 compare 1 1 -> 0 -dqcom020 compare 1 2 -> -1 -dqcom021 compare 2 -2 -> 1 -dqcom022 compare 2 -1 -> 1 -dqcom023 compare 2 0 -> 1 -dqcom025 compare 2 1 -> 1 -dqcom026 compare 2 2 -> 0 - -dqcom031 compare -20 -20 -> 0 -dqcom032 compare -20 -10 -> -1 -dqcom033 compare -20 00 -> -1 -dqcom034 compare -20 10 -> -1 -dqcom035 compare -20 20 -> -1 -dqcom036 compare -10 -20 -> 1 -dqcom037 compare -10 -10 -> 0 -dqcom038 compare -10 00 -> -1 -dqcom039 compare -10 10 -> -1 -dqcom040 compare -10 20 -> -1 -dqcom041 compare 00 -20 -> 1 -dqcom042 compare 00 -10 -> 1 -dqcom043 compare 00 00 -> 0 -dqcom044 compare 00 10 -> -1 -dqcom045 compare 00 20 -> -1 -dqcom046 compare 10 -20 -> 1 -dqcom047 compare 10 -10 -> 1 -dqcom048 compare 10 00 -> 1 -dqcom049 compare 10 10 -> 0 -dqcom050 compare 10 20 -> -1 -dqcom051 compare 20 -20 -> 1 -dqcom052 compare 20 -10 -> 1 -dqcom053 compare 20 00 -> 1 -dqcom055 compare 20 10 -> 1 -dqcom056 compare 20 20 -> 0 - -dqcom061 compare -2.0 -2.0 -> 0 -dqcom062 compare -2.0 -1.0 -> -1 -dqcom063 compare -2.0 0.0 -> -1 -dqcom064 compare -2.0 1.0 -> -1 -dqcom065 compare -2.0 2.0 -> -1 -dqcom066 compare -1.0 -2.0 -> 1 -dqcom067 compare -1.0 -1.0 -> 0 -dqcom068 compare -1.0 0.0 -> -1 -dqcom069 compare -1.0 1.0 -> -1 -dqcom070 compare -1.0 2.0 -> -1 -dqcom071 compare 0.0 -2.0 -> 1 -dqcom072 compare 0.0 -1.0 -> 1 -dqcom073 compare 0.0 0.0 -> 0 -dqcom074 compare 0.0 1.0 -> -1 -dqcom075 compare 0.0 2.0 -> -1 -dqcom076 compare 1.0 -2.0 -> 1 -dqcom077 compare 1.0 -1.0 -> 1 -dqcom078 compare 1.0 0.0 -> 1 -dqcom079 compare 1.0 1.0 -> 0 -dqcom080 compare 1.0 2.0 -> -1 -dqcom081 compare 2.0 -2.0 -> 1 -dqcom082 compare 2.0 -1.0 -> 1 -dqcom083 compare 2.0 0.0 -> 1 -dqcom085 compare 2.0 1.0 -> 1 -dqcom086 compare 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -dqcom090 compare 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 0 -dqcom091 compare -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> -1 -dqcom092 compare 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1 -dqcom093 compare -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0 - --- some differing length/exponent cases -dqcom100 compare 7.0 7.0 -> 0 -dqcom101 compare 7.0 7 -> 0 -dqcom102 compare 7 7.0 -> 0 -dqcom103 compare 7E+0 7.0 -> 0 -dqcom104 compare 70E-1 7.0 -> 0 -dqcom105 compare 0.7E+1 7 -> 0 -dqcom106 compare 70E-1 7 -> 0 -dqcom107 compare 7.0 7E+0 -> 0 -dqcom108 compare 7.0 70E-1 -> 0 -dqcom109 compare 7 0.7E+1 -> 0 -dqcom110 compare 7 70E-1 -> 0 - -dqcom120 compare 8.0 7.0 -> 1 -dqcom121 compare 8.0 7 -> 1 -dqcom122 compare 8 7.0 -> 1 -dqcom123 compare 8E+0 7.0 -> 1 -dqcom124 compare 80E-1 7.0 -> 1 -dqcom125 compare 0.8E+1 7 -> 1 -dqcom126 compare 80E-1 7 -> 1 -dqcom127 compare 8.0 7E+0 -> 1 -dqcom128 compare 8.0 70E-1 -> 1 -dqcom129 compare 8 0.7E+1 -> 1 -dqcom130 compare 8 70E-1 -> 1 - -dqcom140 compare 8.0 9.0 -> -1 -dqcom141 compare 8.0 9 -> -1 -dqcom142 compare 8 9.0 -> -1 -dqcom143 compare 8E+0 9.0 -> -1 -dqcom144 compare 80E-1 9.0 -> -1 -dqcom145 compare 0.8E+1 9 -> -1 -dqcom146 compare 80E-1 9 -> -1 -dqcom147 compare 8.0 9E+0 -> -1 -dqcom148 compare 8.0 90E-1 -> -1 -dqcom149 compare 8 0.9E+1 -> -1 -dqcom150 compare 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -dqcom200 compare -7.0 7.0 -> -1 -dqcom201 compare -7.0 7 -> -1 -dqcom202 compare -7 7.0 -> -1 -dqcom203 compare -7E+0 7.0 -> -1 -dqcom204 compare -70E-1 7.0 -> -1 -dqcom205 compare -0.7E+1 7 -> -1 -dqcom206 compare -70E-1 7 -> -1 -dqcom207 compare -7.0 7E+0 -> -1 -dqcom208 compare -7.0 70E-1 -> -1 -dqcom209 compare -7 0.7E+1 -> -1 -dqcom210 compare -7 70E-1 -> -1 - -dqcom220 compare -8.0 7.0 -> -1 -dqcom221 compare -8.0 7 -> -1 -dqcom222 compare -8 7.0 -> -1 -dqcom223 compare -8E+0 7.0 -> -1 -dqcom224 compare -80E-1 7.0 -> -1 -dqcom225 compare -0.8E+1 7 -> -1 -dqcom226 compare -80E-1 7 -> -1 -dqcom227 compare -8.0 7E+0 -> -1 -dqcom228 compare -8.0 70E-1 -> -1 -dqcom229 compare -8 0.7E+1 -> -1 -dqcom230 compare -8 70E-1 -> -1 - -dqcom240 compare -8.0 9.0 -> -1 -dqcom241 compare -8.0 9 -> -1 -dqcom242 compare -8 9.0 -> -1 -dqcom243 compare -8E+0 9.0 -> -1 -dqcom244 compare -80E-1 9.0 -> -1 -dqcom245 compare -0.8E+1 9 -> -1 -dqcom246 compare -80E-1 9 -> -1 -dqcom247 compare -8.0 9E+0 -> -1 -dqcom248 compare -8.0 90E-1 -> -1 -dqcom249 compare -8 0.9E+1 -> -1 -dqcom250 compare -8 90E-1 -> -1 - --- and again, with sign changes +- .. -dqcom300 compare 7.0 -7.0 -> 1 -dqcom301 compare 7.0 -7 -> 1 -dqcom302 compare 7 -7.0 -> 1 -dqcom303 compare 7E+0 -7.0 -> 1 -dqcom304 compare 70E-1 -7.0 -> 1 -dqcom305 compare .7E+1 -7 -> 1 -dqcom306 compare 70E-1 -7 -> 1 -dqcom307 compare 7.0 -7E+0 -> 1 -dqcom308 compare 7.0 -70E-1 -> 1 -dqcom309 compare 7 -.7E+1 -> 1 -dqcom310 compare 7 -70E-1 -> 1 - -dqcom320 compare 8.0 -7.0 -> 1 -dqcom321 compare 8.0 -7 -> 1 -dqcom322 compare 8 -7.0 -> 1 -dqcom323 compare 8E+0 -7.0 -> 1 -dqcom324 compare 80E-1 -7.0 -> 1 -dqcom325 compare .8E+1 -7 -> 1 -dqcom326 compare 80E-1 -7 -> 1 -dqcom327 compare 8.0 -7E+0 -> 1 -dqcom328 compare 8.0 -70E-1 -> 1 -dqcom329 compare 8 -.7E+1 -> 1 -dqcom330 compare 8 -70E-1 -> 1 - -dqcom340 compare 8.0 -9.0 -> 1 -dqcom341 compare 8.0 -9 -> 1 -dqcom342 compare 8 -9.0 -> 1 -dqcom343 compare 8E+0 -9.0 -> 1 -dqcom344 compare 80E-1 -9.0 -> 1 -dqcom345 compare .8E+1 -9 -> 1 -dqcom346 compare 80E-1 -9 -> 1 -dqcom347 compare 8.0 -9E+0 -> 1 -dqcom348 compare 8.0 -90E-1 -> 1 -dqcom349 compare 8 -.9E+1 -> 1 -dqcom350 compare 8 -90E-1 -> 1 - --- and again, with sign changes -- .. -dqcom400 compare -7.0 -7.0 -> 0 -dqcom401 compare -7.0 -7 -> 0 -dqcom402 compare -7 -7.0 -> 0 -dqcom403 compare -7E+0 -7.0 -> 0 -dqcom404 compare -70E-1 -7.0 -> 0 -dqcom405 compare -.7E+1 -7 -> 0 -dqcom406 compare -70E-1 -7 -> 0 -dqcom407 compare -7.0 -7E+0 -> 0 -dqcom408 compare -7.0 -70E-1 -> 0 -dqcom409 compare -7 -.7E+1 -> 0 -dqcom410 compare -7 -70E-1 -> 0 - -dqcom420 compare -8.0 -7.0 -> -1 -dqcom421 compare -8.0 -7 -> -1 -dqcom422 compare -8 -7.0 -> -1 -dqcom423 compare -8E+0 -7.0 -> -1 -dqcom424 compare -80E-1 -7.0 -> -1 -dqcom425 compare -.8E+1 -7 -> -1 -dqcom426 compare -80E-1 -7 -> -1 -dqcom427 compare -8.0 -7E+0 -> -1 -dqcom428 compare -8.0 -70E-1 -> -1 -dqcom429 compare -8 -.7E+1 -> -1 -dqcom430 compare -8 -70E-1 -> -1 - -dqcom440 compare -8.0 -9.0 -> 1 -dqcom441 compare -8.0 -9 -> 1 -dqcom442 compare -8 -9.0 -> 1 -dqcom443 compare -8E+0 -9.0 -> 1 -dqcom444 compare -80E-1 -9.0 -> 1 -dqcom445 compare -.8E+1 -9 -> 1 -dqcom446 compare -80E-1 -9 -> 1 -dqcom447 compare -8.0 -9E+0 -> 1 -dqcom448 compare -8.0 -90E-1 -> 1 -dqcom449 compare -8 -.9E+1 -> 1 -dqcom450 compare -8 -90E-1 -> 1 - --- misalignment traps for little-endian -dqcom451 compare 1.0 0.1 -> 1 -dqcom452 compare 0.1 1.0 -> -1 -dqcom453 compare 10.0 0.1 -> 1 -dqcom454 compare 0.1 10.0 -> -1 -dqcom455 compare 100 1.0 -> 1 -dqcom456 compare 1.0 100 -> -1 -dqcom457 compare 1000 10.0 -> 1 -dqcom458 compare 10.0 1000 -> -1 -dqcom459 compare 10000 100.0 -> 1 -dqcom460 compare 100.0 10000 -> -1 -dqcom461 compare 100000 1000.0 -> 1 -dqcom462 compare 1000.0 100000 -> -1 -dqcom463 compare 1000000 10000.0 -> 1 -dqcom464 compare 10000.0 1000000 -> -1 - --- testcases that subtract to lots of zeros at boundaries [pgr] -dqcom473 compare 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0 -dqcom474 compare 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0 -dqcom475 compare 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0 -dqcom476 compare 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0 -dqcom477 compare 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0 -dqcom478 compare 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0 -dqcom479 compare 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0 -dqcom480 compare 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0 -dqcom481 compare 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0 -dqcom482 compare 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0 -dqcom483 compare 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0 -dqcom487 compare 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0 -dqcom488 compare 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0 -dqcom489 compare 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0 -dqcom490 compare 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0 -dqcom491 compare 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0 -dqcom492 compare 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0 -dqcom493 compare 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0 -dqcom494 compare 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0 -dqcom495 compare 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0 -dqcom496 compare 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0 -dqcom497 compare 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0 - --- wide-ranging, around precision; signs equal -dqcom500 compare 1 1E-15 -> 1 -dqcom501 compare 1 1E-14 -> 1 -dqcom502 compare 1 1E-13 -> 1 -dqcom503 compare 1 1E-12 -> 1 -dqcom504 compare 1 1E-11 -> 1 -dqcom505 compare 1 1E-10 -> 1 -dqcom506 compare 1 1E-9 -> 1 -dqcom507 compare 1 1E-8 -> 1 -dqcom508 compare 1 1E-7 -> 1 -dqcom509 compare 1 1E-6 -> 1 -dqcom510 compare 1 1E-5 -> 1 -dqcom511 compare 1 1E-4 -> 1 -dqcom512 compare 1 1E-3 -> 1 -dqcom513 compare 1 1E-2 -> 1 -dqcom514 compare 1 1E-1 -> 1 -dqcom515 compare 1 1E-0 -> 0 -dqcom516 compare 1 1E+1 -> -1 -dqcom517 compare 1 1E+2 -> -1 -dqcom518 compare 1 1E+3 -> -1 -dqcom519 compare 1 1E+4 -> -1 -dqcom521 compare 1 1E+5 -> -1 -dqcom522 compare 1 1E+6 -> -1 -dqcom523 compare 1 1E+7 -> -1 -dqcom524 compare 1 1E+8 -> -1 -dqcom525 compare 1 1E+9 -> -1 -dqcom526 compare 1 1E+10 -> -1 -dqcom527 compare 1 1E+11 -> -1 -dqcom528 compare 1 1E+12 -> -1 -dqcom529 compare 1 1E+13 -> -1 -dqcom530 compare 1 1E+14 -> -1 -dqcom531 compare 1 1E+15 -> -1 --- LR swap -dqcom540 compare 1E-15 1 -> -1 -dqcom541 compare 1E-14 1 -> -1 -dqcom542 compare 1E-13 1 -> -1 -dqcom543 compare 1E-12 1 -> -1 -dqcom544 compare 1E-11 1 -> -1 -dqcom545 compare 1E-10 1 -> -1 -dqcom546 compare 1E-9 1 -> -1 -dqcom547 compare 1E-8 1 -> -1 -dqcom548 compare 1E-7 1 -> -1 -dqcom549 compare 1E-6 1 -> -1 -dqcom550 compare 1E-5 1 -> -1 -dqcom551 compare 1E-4 1 -> -1 -dqcom552 compare 1E-3 1 -> -1 -dqcom553 compare 1E-2 1 -> -1 -dqcom554 compare 1E-1 1 -> -1 -dqcom555 compare 1E-0 1 -> 0 -dqcom556 compare 1E+1 1 -> 1 -dqcom557 compare 1E+2 1 -> 1 -dqcom558 compare 1E+3 1 -> 1 -dqcom559 compare 1E+4 1 -> 1 -dqcom561 compare 1E+5 1 -> 1 -dqcom562 compare 1E+6 1 -> 1 -dqcom563 compare 1E+7 1 -> 1 -dqcom564 compare 1E+8 1 -> 1 -dqcom565 compare 1E+9 1 -> 1 -dqcom566 compare 1E+10 1 -> 1 -dqcom567 compare 1E+11 1 -> 1 -dqcom568 compare 1E+12 1 -> 1 -dqcom569 compare 1E+13 1 -> 1 -dqcom570 compare 1E+14 1 -> 1 -dqcom571 compare 1E+15 1 -> 1 --- similar with a useful coefficient, one side only -dqcom580 compare 0.000000987654321 1E-15 -> 1 -dqcom581 compare 0.000000987654321 1E-14 -> 1 -dqcom582 compare 0.000000987654321 1E-13 -> 1 -dqcom583 compare 0.000000987654321 1E-12 -> 1 -dqcom584 compare 0.000000987654321 1E-11 -> 1 -dqcom585 compare 0.000000987654321 1E-10 -> 1 -dqcom586 compare 0.000000987654321 1E-9 -> 1 -dqcom587 compare 0.000000987654321 1E-8 -> 1 -dqcom588 compare 0.000000987654321 1E-7 -> 1 -dqcom589 compare 0.000000987654321 1E-6 -> -1 -dqcom590 compare 0.000000987654321 1E-5 -> -1 -dqcom591 compare 0.000000987654321 1E-4 -> -1 -dqcom592 compare 0.000000987654321 1E-3 -> -1 -dqcom593 compare 0.000000987654321 1E-2 -> -1 -dqcom594 compare 0.000000987654321 1E-1 -> -1 -dqcom595 compare 0.000000987654321 1E-0 -> -1 -dqcom596 compare 0.000000987654321 1E+1 -> -1 -dqcom597 compare 0.000000987654321 1E+2 -> -1 -dqcom598 compare 0.000000987654321 1E+3 -> -1 -dqcom599 compare 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -dqcom600 compare 12 12.2345 -> -1 -dqcom601 compare 12.0 12.2345 -> -1 -dqcom602 compare 12.00 12.2345 -> -1 -dqcom603 compare 12.000 12.2345 -> -1 -dqcom604 compare 12.0000 12.2345 -> -1 -dqcom605 compare 12.00000 12.2345 -> -1 -dqcom606 compare 12.000000 12.2345 -> -1 -dqcom607 compare 12.0000000 12.2345 -> -1 -dqcom608 compare 12.00000000 12.2345 -> -1 -dqcom609 compare 12.000000000 12.2345 -> -1 -dqcom610 compare 12.1234 12 -> 1 -dqcom611 compare 12.1234 12.0 -> 1 -dqcom612 compare 12.1234 12.00 -> 1 -dqcom613 compare 12.1234 12.000 -> 1 -dqcom614 compare 12.1234 12.0000 -> 1 -dqcom615 compare 12.1234 12.00000 -> 1 -dqcom616 compare 12.1234 12.000000 -> 1 -dqcom617 compare 12.1234 12.0000000 -> 1 -dqcom618 compare 12.1234 12.00000000 -> 1 -dqcom619 compare 12.1234 12.000000000 -> 1 -dqcom620 compare -12 -12.2345 -> 1 -dqcom621 compare -12.0 -12.2345 -> 1 -dqcom622 compare -12.00 -12.2345 -> 1 -dqcom623 compare -12.000 -12.2345 -> 1 -dqcom624 compare -12.0000 -12.2345 -> 1 -dqcom625 compare -12.00000 -12.2345 -> 1 -dqcom626 compare -12.000000 -12.2345 -> 1 -dqcom627 compare -12.0000000 -12.2345 -> 1 -dqcom628 compare -12.00000000 -12.2345 -> 1 -dqcom629 compare -12.000000000 -12.2345 -> 1 -dqcom630 compare -12.1234 -12 -> -1 -dqcom631 compare -12.1234 -12.0 -> -1 -dqcom632 compare -12.1234 -12.00 -> -1 -dqcom633 compare -12.1234 -12.000 -> -1 -dqcom634 compare -12.1234 -12.0000 -> -1 -dqcom635 compare -12.1234 -12.00000 -> -1 -dqcom636 compare -12.1234 -12.000000 -> -1 -dqcom637 compare -12.1234 -12.0000000 -> -1 -dqcom638 compare -12.1234 -12.00000000 -> -1 -dqcom639 compare -12.1234 -12.000000000 -> -1 - --- extended zeros -dqcom640 compare 0 0 -> 0 -dqcom641 compare 0 -0 -> 0 -dqcom642 compare 0 -0.0 -> 0 -dqcom643 compare 0 0.0 -> 0 -dqcom644 compare -0 0 -> 0 -dqcom645 compare -0 -0 -> 0 -dqcom646 compare -0 -0.0 -> 0 -dqcom647 compare -0 0.0 -> 0 -dqcom648 compare 0.0 0 -> 0 -dqcom649 compare 0.0 -0 -> 0 -dqcom650 compare 0.0 -0.0 -> 0 -dqcom651 compare 0.0 0.0 -> 0 -dqcom652 compare -0.0 0 -> 0 -dqcom653 compare -0.0 -0 -> 0 -dqcom654 compare -0.0 -0.0 -> 0 -dqcom655 compare -0.0 0.0 -> 0 - -dqcom656 compare -0E1 0.0 -> 0 -dqcom657 compare -0E2 0.0 -> 0 -dqcom658 compare 0E1 0.0 -> 0 -dqcom659 compare 0E2 0.0 -> 0 -dqcom660 compare -0E1 0 -> 0 -dqcom661 compare -0E2 0 -> 0 -dqcom662 compare 0E1 0 -> 0 -dqcom663 compare 0E2 0 -> 0 -dqcom664 compare -0E1 -0E1 -> 0 -dqcom665 compare -0E2 -0E1 -> 0 -dqcom666 compare 0E1 -0E1 -> 0 -dqcom667 compare 0E2 -0E1 -> 0 -dqcom668 compare -0E1 -0E2 -> 0 -dqcom669 compare -0E2 -0E2 -> 0 -dqcom670 compare 0E1 -0E2 -> 0 -dqcom671 compare 0E2 -0E2 -> 0 -dqcom672 compare -0E1 0E1 -> 0 -dqcom673 compare -0E2 0E1 -> 0 -dqcom674 compare 0E1 0E1 -> 0 -dqcom675 compare 0E2 0E1 -> 0 -dqcom676 compare -0E1 0E2 -> 0 -dqcom677 compare -0E2 0E2 -> 0 -dqcom678 compare 0E1 0E2 -> 0 -dqcom679 compare 0E2 0E2 -> 0 - --- trailing zeros; unit-y -dqcom680 compare 12 12 -> 0 -dqcom681 compare 12 12.0 -> 0 -dqcom682 compare 12 12.00 -> 0 -dqcom683 compare 12 12.000 -> 0 -dqcom684 compare 12 12.0000 -> 0 -dqcom685 compare 12 12.00000 -> 0 -dqcom686 compare 12 12.000000 -> 0 -dqcom687 compare 12 12.0000000 -> 0 -dqcom688 compare 12 12.00000000 -> 0 -dqcom689 compare 12 12.000000000 -> 0 -dqcom690 compare 12 12 -> 0 -dqcom691 compare 12.0 12 -> 0 -dqcom692 compare 12.00 12 -> 0 -dqcom693 compare 12.000 12 -> 0 -dqcom694 compare 12.0000 12 -> 0 -dqcom695 compare 12.00000 12 -> 0 -dqcom696 compare 12.000000 12 -> 0 -dqcom697 compare 12.0000000 12 -> 0 -dqcom698 compare 12.00000000 12 -> 0 -dqcom699 compare 12.000000000 12 -> 0 - --- first, second, & last digit -dqcom700 compare 1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1 -dqcom701 compare 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0 -dqcom702 compare 1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1 -dqcom703 compare 1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1 -dqcom704 compare 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0 -dqcom705 compare 1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1 -dqcom706 compare 1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1 -dqcom707 compare 1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0 -dqcom708 compare 1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1 - --- miscellaneous -dqcom721 compare 12345678000 1 -> 1 -dqcom722 compare 1 12345678000 -> -1 -dqcom723 compare 1234567800 1 -> 1 -dqcom724 compare 1 1234567800 -> -1 -dqcom725 compare 1234567890 1 -> 1 -dqcom726 compare 1 1234567890 -> -1 -dqcom727 compare 1234567891 1 -> 1 -dqcom728 compare 1 1234567891 -> -1 -dqcom729 compare 12345678901 1 -> 1 -dqcom730 compare 1 12345678901 -> -1 -dqcom731 compare 1234567896 1 -> 1 -dqcom732 compare 1 1234567896 -> -1 - --- residue cases at lower precision -dqcom740 compare 1 0.9999999 -> 1 -dqcom741 compare 1 0.999999 -> 1 -dqcom742 compare 1 0.99999 -> 1 -dqcom743 compare 1 1.0000 -> 0 -dqcom744 compare 1 1.00001 -> -1 -dqcom745 compare 1 1.000001 -> -1 -dqcom746 compare 1 1.0000001 -> -1 -dqcom750 compare 0.9999999 1 -> -1 -dqcom751 compare 0.999999 1 -> -1 -dqcom752 compare 0.99999 1 -> -1 -dqcom753 compare 1.0000 1 -> 0 -dqcom754 compare 1.00001 1 -> 1 -dqcom755 compare 1.000001 1 -> 1 -dqcom756 compare 1.0000001 1 -> 1 - --- Specials -dqcom780 compare Inf -Inf -> 1 -dqcom781 compare Inf -1000 -> 1 -dqcom782 compare Inf -1 -> 1 -dqcom783 compare Inf -0 -> 1 -dqcom784 compare Inf 0 -> 1 -dqcom785 compare Inf 1 -> 1 -dqcom786 compare Inf 1000 -> 1 -dqcom787 compare Inf Inf -> 0 -dqcom788 compare -1000 Inf -> -1 -dqcom789 compare -Inf Inf -> -1 -dqcom790 compare -1 Inf -> -1 -dqcom791 compare -0 Inf -> -1 -dqcom792 compare 0 Inf -> -1 -dqcom793 compare 1 Inf -> -1 -dqcom794 compare 1000 Inf -> -1 -dqcom795 compare Inf Inf -> 0 - -dqcom800 compare -Inf -Inf -> 0 -dqcom801 compare -Inf -1000 -> -1 -dqcom802 compare -Inf -1 -> -1 -dqcom803 compare -Inf -0 -> -1 -dqcom804 compare -Inf 0 -> -1 -dqcom805 compare -Inf 1 -> -1 -dqcom806 compare -Inf 1000 -> -1 -dqcom807 compare -Inf Inf -> -1 -dqcom808 compare -Inf -Inf -> 0 -dqcom809 compare -1000 -Inf -> 1 -dqcom810 compare -1 -Inf -> 1 -dqcom811 compare -0 -Inf -> 1 -dqcom812 compare 0 -Inf -> 1 -dqcom813 compare 1 -Inf -> 1 -dqcom814 compare 1000 -Inf -> 1 -dqcom815 compare Inf -Inf -> 1 - -dqcom821 compare NaN -Inf -> NaN -dqcom822 compare NaN -1000 -> NaN -dqcom823 compare NaN -1 -> NaN -dqcom824 compare NaN -0 -> NaN -dqcom825 compare NaN 0 -> NaN -dqcom826 compare NaN 1 -> NaN -dqcom827 compare NaN 1000 -> NaN -dqcom828 compare NaN Inf -> NaN -dqcom829 compare NaN NaN -> NaN -dqcom830 compare -Inf NaN -> NaN -dqcom831 compare -1000 NaN -> NaN -dqcom832 compare -1 NaN -> NaN -dqcom833 compare -0 NaN -> NaN -dqcom834 compare 0 NaN -> NaN -dqcom835 compare 1 NaN -> NaN -dqcom836 compare 1000 NaN -> NaN -dqcom837 compare Inf NaN -> NaN -dqcom838 compare -NaN -NaN -> -NaN -dqcom839 compare +NaN -NaN -> NaN -dqcom840 compare -NaN +NaN -> -NaN - -dqcom841 compare sNaN -Inf -> NaN Invalid_operation -dqcom842 compare sNaN -1000 -> NaN Invalid_operation -dqcom843 compare sNaN -1 -> NaN Invalid_operation -dqcom844 compare sNaN -0 -> NaN Invalid_operation -dqcom845 compare sNaN 0 -> NaN Invalid_operation -dqcom846 compare sNaN 1 -> NaN Invalid_operation -dqcom847 compare sNaN 1000 -> NaN Invalid_operation -dqcom848 compare sNaN NaN -> NaN Invalid_operation -dqcom849 compare sNaN sNaN -> NaN Invalid_operation -dqcom850 compare NaN sNaN -> NaN Invalid_operation -dqcom851 compare -Inf sNaN -> NaN Invalid_operation -dqcom852 compare -1000 sNaN -> NaN Invalid_operation -dqcom853 compare -1 sNaN -> NaN Invalid_operation -dqcom854 compare -0 sNaN -> NaN Invalid_operation -dqcom855 compare 0 sNaN -> NaN Invalid_operation -dqcom856 compare 1 sNaN -> NaN Invalid_operation -dqcom857 compare 1000 sNaN -> NaN Invalid_operation -dqcom858 compare Inf sNaN -> NaN Invalid_operation -dqcom859 compare NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqcom860 compare NaN9 -Inf -> NaN9 -dqcom861 compare NaN8 999 -> NaN8 -dqcom862 compare NaN77 Inf -> NaN77 -dqcom863 compare -NaN67 NaN5 -> -NaN67 -dqcom864 compare -Inf -NaN4 -> -NaN4 -dqcom865 compare -999 -NaN33 -> -NaN33 -dqcom866 compare Inf NaN2 -> NaN2 -dqcom867 compare -NaN41 -NaN42 -> -NaN41 -dqcom868 compare +NaN41 -NaN42 -> NaN41 -dqcom869 compare -NaN41 +NaN42 -> -NaN41 -dqcom870 compare +NaN41 +NaN42 -> NaN41 - -dqcom871 compare -sNaN99 -Inf -> -NaN99 Invalid_operation -dqcom872 compare sNaN98 -11 -> NaN98 Invalid_operation -dqcom873 compare sNaN97 NaN -> NaN97 Invalid_operation -dqcom874 compare sNaN16 sNaN94 -> NaN16 Invalid_operation -dqcom875 compare NaN85 sNaN83 -> NaN83 Invalid_operation -dqcom876 compare -Inf sNaN92 -> NaN92 Invalid_operation -dqcom877 compare 088 sNaN81 -> NaN81 Invalid_operation -dqcom878 compare Inf sNaN90 -> NaN90 Invalid_operation -dqcom879 compare NaN -sNaN89 -> -NaN89 Invalid_operation - --- wide range -dqcom880 compare +1.23456789012345E-0 9E+6144 -> -1 -dqcom881 compare 9E+6144 +1.23456789012345E-0 -> 1 -dqcom882 compare +0.100 9E-6143 -> 1 -dqcom883 compare 9E-6143 +0.100 -> -1 -dqcom885 compare -1.23456789012345E-0 9E+6144 -> -1 -dqcom886 compare 9E+6144 -1.23456789012345E-0 -> 1 -dqcom887 compare -0.100 9E-6143 -> -1 -dqcom888 compare 9E-6143 -0.100 -> 1 - --- signs -dqcom901 compare 1e+77 1e+11 -> 1 -dqcom902 compare 1e+77 -1e+11 -> 1 -dqcom903 compare -1e+77 1e+11 -> -1 -dqcom904 compare -1e+77 -1e+11 -> -1 -dqcom905 compare 1e-77 1e-11 -> -1 -dqcom906 compare 1e-77 -1e-11 -> 1 -dqcom907 compare -1e-77 1e-11 -> -1 -dqcom908 compare -1e-77 -1e-11 -> 1 - --- full alignment range, both ways -dqcomp1001 compare 1 1.000000000000000000000000000000000 -> 0 -dqcomp1002 compare 1 1.00000000000000000000000000000000 -> 0 -dqcomp1003 compare 1 1.0000000000000000000000000000000 -> 0 -dqcomp1004 compare 1 1.000000000000000000000000000000 -> 0 -dqcomp1005 compare 1 1.00000000000000000000000000000 -> 0 -dqcomp1006 compare 1 1.0000000000000000000000000000 -> 0 -dqcomp1007 compare 1 1.000000000000000000000000000 -> 0 -dqcomp1008 compare 1 1.00000000000000000000000000 -> 0 -dqcomp1009 compare 1 1.0000000000000000000000000 -> 0 -dqcomp1010 compare 1 1.000000000000000000000000 -> 0 -dqcomp1011 compare 1 1.00000000000000000000000 -> 0 -dqcomp1012 compare 1 1.0000000000000000000000 -> 0 -dqcomp1013 compare 1 1.000000000000000000000 -> 0 -dqcomp1014 compare 1 1.00000000000000000000 -> 0 -dqcomp1015 compare 1 1.0000000000000000000 -> 0 -dqcomp1016 compare 1 1.000000000000000000 -> 0 -dqcomp1017 compare 1 1.00000000000000000 -> 0 -dqcomp1018 compare 1 1.0000000000000000 -> 0 -dqcomp1019 compare 1 1.000000000000000 -> 0 -dqcomp1020 compare 1 1.00000000000000 -> 0 -dqcomp1021 compare 1 1.0000000000000 -> 0 -dqcomp1022 compare 1 1.000000000000 -> 0 -dqcomp1023 compare 1 1.00000000000 -> 0 -dqcomp1024 compare 1 1.0000000000 -> 0 -dqcomp1025 compare 1 1.000000000 -> 0 -dqcomp1026 compare 1 1.00000000 -> 0 -dqcomp1027 compare 1 1.0000000 -> 0 -dqcomp1028 compare 1 1.000000 -> 0 -dqcomp1029 compare 1 1.00000 -> 0 -dqcomp1030 compare 1 1.0000 -> 0 -dqcomp1031 compare 1 1.000 -> 0 -dqcomp1032 compare 1 1.00 -> 0 -dqcomp1033 compare 1 1.0 -> 0 - -dqcomp1041 compare 1.000000000000000000000000000000000 1 -> 0 -dqcomp1042 compare 1.00000000000000000000000000000000 1 -> 0 -dqcomp1043 compare 1.0000000000000000000000000000000 1 -> 0 -dqcomp1044 compare 1.000000000000000000000000000000 1 -> 0 -dqcomp1045 compare 1.00000000000000000000000000000 1 -> 0 -dqcomp1046 compare 1.0000000000000000000000000000 1 -> 0 -dqcomp1047 compare 1.000000000000000000000000000 1 -> 0 -dqcomp1048 compare 1.00000000000000000000000000 1 -> 0 -dqcomp1049 compare 1.0000000000000000000000000 1 -> 0 -dqcomp1050 compare 1.000000000000000000000000 1 -> 0 -dqcomp1051 compare 1.00000000000000000000000 1 -> 0 -dqcomp1052 compare 1.0000000000000000000000 1 -> 0 -dqcomp1053 compare 1.000000000000000000000 1 -> 0 -dqcomp1054 compare 1.00000000000000000000 1 -> 0 -dqcomp1055 compare 1.0000000000000000000 1 -> 0 -dqcomp1056 compare 1.000000000000000000 1 -> 0 -dqcomp1057 compare 1.00000000000000000 1 -> 0 -dqcomp1058 compare 1.0000000000000000 1 -> 0 -dqcomp1059 compare 1.000000000000000 1 -> 0 -dqcomp1060 compare 1.00000000000000 1 -> 0 -dqcomp1061 compare 1.0000000000000 1 -> 0 -dqcomp1062 compare 1.000000000000 1 -> 0 -dqcomp1063 compare 1.00000000000 1 -> 0 -dqcomp1064 compare 1.0000000000 1 -> 0 -dqcomp1065 compare 1.000000000 1 -> 0 -dqcomp1066 compare 1.00000000 1 -> 0 -dqcomp1067 compare 1.0000000 1 -> 0 -dqcomp1068 compare 1.000000 1 -> 0 -dqcomp1069 compare 1.00000 1 -> 0 -dqcomp1070 compare 1.0000 1 -> 0 -dqcomp1071 compare 1.000 1 -> 0 -dqcomp1072 compare 1.00 1 -> 0 -dqcomp1073 compare 1.0 1 -> 0 - --- check MSD always detected non-zero -dqcomp1080 compare 0 0.000000000000000000000000000000000 -> 0 -dqcomp1081 compare 0 1.000000000000000000000000000000000 -> -1 -dqcomp1082 compare 0 2.000000000000000000000000000000000 -> -1 -dqcomp1083 compare 0 3.000000000000000000000000000000000 -> -1 -dqcomp1084 compare 0 4.000000000000000000000000000000000 -> -1 -dqcomp1085 compare 0 5.000000000000000000000000000000000 -> -1 -dqcomp1086 compare 0 6.000000000000000000000000000000000 -> -1 -dqcomp1087 compare 0 7.000000000000000000000000000000000 -> -1 -dqcomp1088 compare 0 8.000000000000000000000000000000000 -> -1 -dqcomp1089 compare 0 9.000000000000000000000000000000000 -> -1 -dqcomp1090 compare 0.000000000000000000000000000000000 0 -> 0 -dqcomp1091 compare 1.000000000000000000000000000000000 0 -> 1 -dqcomp1092 compare 2.000000000000000000000000000000000 0 -> 1 -dqcomp1093 compare 3.000000000000000000000000000000000 0 -> 1 -dqcomp1094 compare 4.000000000000000000000000000000000 0 -> 1 -dqcomp1095 compare 5.000000000000000000000000000000000 0 -> 1 -dqcomp1096 compare 6.000000000000000000000000000000000 0 -> 1 -dqcomp1097 compare 7.000000000000000000000000000000000 0 -> 1 -dqcomp1098 compare 8.000000000000000000000000000000000 0 -> 1 -dqcomp1099 compare 9.000000000000000000000000000000000 0 -> 1 - --- Null tests -dqcom990 compare 10 # -> NaN Invalid_operation -dqcom991 compare # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqCompare.decTest -- decQuad comparison that allows quiet NaNs -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqcom001 compare -2 -2 -> 0 +dqcom002 compare -2 -1 -> -1 +dqcom003 compare -2 0 -> -1 +dqcom004 compare -2 1 -> -1 +dqcom005 compare -2 2 -> -1 +dqcom006 compare -1 -2 -> 1 +dqcom007 compare -1 -1 -> 0 +dqcom008 compare -1 0 -> -1 +dqcom009 compare -1 1 -> -1 +dqcom010 compare -1 2 -> -1 +dqcom011 compare 0 -2 -> 1 +dqcom012 compare 0 -1 -> 1 +dqcom013 compare 0 0 -> 0 +dqcom014 compare 0 1 -> -1 +dqcom015 compare 0 2 -> -1 +dqcom016 compare 1 -2 -> 1 +dqcom017 compare 1 -1 -> 1 +dqcom018 compare 1 0 -> 1 +dqcom019 compare 1 1 -> 0 +dqcom020 compare 1 2 -> -1 +dqcom021 compare 2 -2 -> 1 +dqcom022 compare 2 -1 -> 1 +dqcom023 compare 2 0 -> 1 +dqcom025 compare 2 1 -> 1 +dqcom026 compare 2 2 -> 0 + +dqcom031 compare -20 -20 -> 0 +dqcom032 compare -20 -10 -> -1 +dqcom033 compare -20 00 -> -1 +dqcom034 compare -20 10 -> -1 +dqcom035 compare -20 20 -> -1 +dqcom036 compare -10 -20 -> 1 +dqcom037 compare -10 -10 -> 0 +dqcom038 compare -10 00 -> -1 +dqcom039 compare -10 10 -> -1 +dqcom040 compare -10 20 -> -1 +dqcom041 compare 00 -20 -> 1 +dqcom042 compare 00 -10 -> 1 +dqcom043 compare 00 00 -> 0 +dqcom044 compare 00 10 -> -1 +dqcom045 compare 00 20 -> -1 +dqcom046 compare 10 -20 -> 1 +dqcom047 compare 10 -10 -> 1 +dqcom048 compare 10 00 -> 1 +dqcom049 compare 10 10 -> 0 +dqcom050 compare 10 20 -> -1 +dqcom051 compare 20 -20 -> 1 +dqcom052 compare 20 -10 -> 1 +dqcom053 compare 20 00 -> 1 +dqcom055 compare 20 10 -> 1 +dqcom056 compare 20 20 -> 0 + +dqcom061 compare -2.0 -2.0 -> 0 +dqcom062 compare -2.0 -1.0 -> -1 +dqcom063 compare -2.0 0.0 -> -1 +dqcom064 compare -2.0 1.0 -> -1 +dqcom065 compare -2.0 2.0 -> -1 +dqcom066 compare -1.0 -2.0 -> 1 +dqcom067 compare -1.0 -1.0 -> 0 +dqcom068 compare -1.0 0.0 -> -1 +dqcom069 compare -1.0 1.0 -> -1 +dqcom070 compare -1.0 2.0 -> -1 +dqcom071 compare 0.0 -2.0 -> 1 +dqcom072 compare 0.0 -1.0 -> 1 +dqcom073 compare 0.0 0.0 -> 0 +dqcom074 compare 0.0 1.0 -> -1 +dqcom075 compare 0.0 2.0 -> -1 +dqcom076 compare 1.0 -2.0 -> 1 +dqcom077 compare 1.0 -1.0 -> 1 +dqcom078 compare 1.0 0.0 -> 1 +dqcom079 compare 1.0 1.0 -> 0 +dqcom080 compare 1.0 2.0 -> -1 +dqcom081 compare 2.0 -2.0 -> 1 +dqcom082 compare 2.0 -1.0 -> 1 +dqcom083 compare 2.0 0.0 -> 1 +dqcom085 compare 2.0 1.0 -> 1 +dqcom086 compare 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +dqcom090 compare 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 0 +dqcom091 compare -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> -1 +dqcom092 compare 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1 +dqcom093 compare -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0 + +-- some differing length/exponent cases +dqcom100 compare 7.0 7.0 -> 0 +dqcom101 compare 7.0 7 -> 0 +dqcom102 compare 7 7.0 -> 0 +dqcom103 compare 7E+0 7.0 -> 0 +dqcom104 compare 70E-1 7.0 -> 0 +dqcom105 compare 0.7E+1 7 -> 0 +dqcom106 compare 70E-1 7 -> 0 +dqcom107 compare 7.0 7E+0 -> 0 +dqcom108 compare 7.0 70E-1 -> 0 +dqcom109 compare 7 0.7E+1 -> 0 +dqcom110 compare 7 70E-1 -> 0 + +dqcom120 compare 8.0 7.0 -> 1 +dqcom121 compare 8.0 7 -> 1 +dqcom122 compare 8 7.0 -> 1 +dqcom123 compare 8E+0 7.0 -> 1 +dqcom124 compare 80E-1 7.0 -> 1 +dqcom125 compare 0.8E+1 7 -> 1 +dqcom126 compare 80E-1 7 -> 1 +dqcom127 compare 8.0 7E+0 -> 1 +dqcom128 compare 8.0 70E-1 -> 1 +dqcom129 compare 8 0.7E+1 -> 1 +dqcom130 compare 8 70E-1 -> 1 + +dqcom140 compare 8.0 9.0 -> -1 +dqcom141 compare 8.0 9 -> -1 +dqcom142 compare 8 9.0 -> -1 +dqcom143 compare 8E+0 9.0 -> -1 +dqcom144 compare 80E-1 9.0 -> -1 +dqcom145 compare 0.8E+1 9 -> -1 +dqcom146 compare 80E-1 9 -> -1 +dqcom147 compare 8.0 9E+0 -> -1 +dqcom148 compare 8.0 90E-1 -> -1 +dqcom149 compare 8 0.9E+1 -> -1 +dqcom150 compare 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +dqcom200 compare -7.0 7.0 -> -1 +dqcom201 compare -7.0 7 -> -1 +dqcom202 compare -7 7.0 -> -1 +dqcom203 compare -7E+0 7.0 -> -1 +dqcom204 compare -70E-1 7.0 -> -1 +dqcom205 compare -0.7E+1 7 -> -1 +dqcom206 compare -70E-1 7 -> -1 +dqcom207 compare -7.0 7E+0 -> -1 +dqcom208 compare -7.0 70E-1 -> -1 +dqcom209 compare -7 0.7E+1 -> -1 +dqcom210 compare -7 70E-1 -> -1 + +dqcom220 compare -8.0 7.0 -> -1 +dqcom221 compare -8.0 7 -> -1 +dqcom222 compare -8 7.0 -> -1 +dqcom223 compare -8E+0 7.0 -> -1 +dqcom224 compare -80E-1 7.0 -> -1 +dqcom225 compare -0.8E+1 7 -> -1 +dqcom226 compare -80E-1 7 -> -1 +dqcom227 compare -8.0 7E+0 -> -1 +dqcom228 compare -8.0 70E-1 -> -1 +dqcom229 compare -8 0.7E+1 -> -1 +dqcom230 compare -8 70E-1 -> -1 + +dqcom240 compare -8.0 9.0 -> -1 +dqcom241 compare -8.0 9 -> -1 +dqcom242 compare -8 9.0 -> -1 +dqcom243 compare -8E+0 9.0 -> -1 +dqcom244 compare -80E-1 9.0 -> -1 +dqcom245 compare -0.8E+1 9 -> -1 +dqcom246 compare -80E-1 9 -> -1 +dqcom247 compare -8.0 9E+0 -> -1 +dqcom248 compare -8.0 90E-1 -> -1 +dqcom249 compare -8 0.9E+1 -> -1 +dqcom250 compare -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +dqcom300 compare 7.0 -7.0 -> 1 +dqcom301 compare 7.0 -7 -> 1 +dqcom302 compare 7 -7.0 -> 1 +dqcom303 compare 7E+0 -7.0 -> 1 +dqcom304 compare 70E-1 -7.0 -> 1 +dqcom305 compare .7E+1 -7 -> 1 +dqcom306 compare 70E-1 -7 -> 1 +dqcom307 compare 7.0 -7E+0 -> 1 +dqcom308 compare 7.0 -70E-1 -> 1 +dqcom309 compare 7 -.7E+1 -> 1 +dqcom310 compare 7 -70E-1 -> 1 + +dqcom320 compare 8.0 -7.0 -> 1 +dqcom321 compare 8.0 -7 -> 1 +dqcom322 compare 8 -7.0 -> 1 +dqcom323 compare 8E+0 -7.0 -> 1 +dqcom324 compare 80E-1 -7.0 -> 1 +dqcom325 compare .8E+1 -7 -> 1 +dqcom326 compare 80E-1 -7 -> 1 +dqcom327 compare 8.0 -7E+0 -> 1 +dqcom328 compare 8.0 -70E-1 -> 1 +dqcom329 compare 8 -.7E+1 -> 1 +dqcom330 compare 8 -70E-1 -> 1 + +dqcom340 compare 8.0 -9.0 -> 1 +dqcom341 compare 8.0 -9 -> 1 +dqcom342 compare 8 -9.0 -> 1 +dqcom343 compare 8E+0 -9.0 -> 1 +dqcom344 compare 80E-1 -9.0 -> 1 +dqcom345 compare .8E+1 -9 -> 1 +dqcom346 compare 80E-1 -9 -> 1 +dqcom347 compare 8.0 -9E+0 -> 1 +dqcom348 compare 8.0 -90E-1 -> 1 +dqcom349 compare 8 -.9E+1 -> 1 +dqcom350 compare 8 -90E-1 -> 1 + +-- and again, with sign changes -- .. +dqcom400 compare -7.0 -7.0 -> 0 +dqcom401 compare -7.0 -7 -> 0 +dqcom402 compare -7 -7.0 -> 0 +dqcom403 compare -7E+0 -7.0 -> 0 +dqcom404 compare -70E-1 -7.0 -> 0 +dqcom405 compare -.7E+1 -7 -> 0 +dqcom406 compare -70E-1 -7 -> 0 +dqcom407 compare -7.0 -7E+0 -> 0 +dqcom408 compare -7.0 -70E-1 -> 0 +dqcom409 compare -7 -.7E+1 -> 0 +dqcom410 compare -7 -70E-1 -> 0 + +dqcom420 compare -8.0 -7.0 -> -1 +dqcom421 compare -8.0 -7 -> -1 +dqcom422 compare -8 -7.0 -> -1 +dqcom423 compare -8E+0 -7.0 -> -1 +dqcom424 compare -80E-1 -7.0 -> -1 +dqcom425 compare -.8E+1 -7 -> -1 +dqcom426 compare -80E-1 -7 -> -1 +dqcom427 compare -8.0 -7E+0 -> -1 +dqcom428 compare -8.0 -70E-1 -> -1 +dqcom429 compare -8 -.7E+1 -> -1 +dqcom430 compare -8 -70E-1 -> -1 + +dqcom440 compare -8.0 -9.0 -> 1 +dqcom441 compare -8.0 -9 -> 1 +dqcom442 compare -8 -9.0 -> 1 +dqcom443 compare -8E+0 -9.0 -> 1 +dqcom444 compare -80E-1 -9.0 -> 1 +dqcom445 compare -.8E+1 -9 -> 1 +dqcom446 compare -80E-1 -9 -> 1 +dqcom447 compare -8.0 -9E+0 -> 1 +dqcom448 compare -8.0 -90E-1 -> 1 +dqcom449 compare -8 -.9E+1 -> 1 +dqcom450 compare -8 -90E-1 -> 1 + +-- misalignment traps for little-endian +dqcom451 compare 1.0 0.1 -> 1 +dqcom452 compare 0.1 1.0 -> -1 +dqcom453 compare 10.0 0.1 -> 1 +dqcom454 compare 0.1 10.0 -> -1 +dqcom455 compare 100 1.0 -> 1 +dqcom456 compare 1.0 100 -> -1 +dqcom457 compare 1000 10.0 -> 1 +dqcom458 compare 10.0 1000 -> -1 +dqcom459 compare 10000 100.0 -> 1 +dqcom460 compare 100.0 10000 -> -1 +dqcom461 compare 100000 1000.0 -> 1 +dqcom462 compare 1000.0 100000 -> -1 +dqcom463 compare 1000000 10000.0 -> 1 +dqcom464 compare 10000.0 1000000 -> -1 + +-- testcases that subtract to lots of zeros at boundaries [pgr] +dqcom473 compare 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0 +dqcom474 compare 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0 +dqcom475 compare 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0 +dqcom476 compare 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0 +dqcom477 compare 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0 +dqcom478 compare 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0 +dqcom479 compare 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0 +dqcom480 compare 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0 +dqcom481 compare 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0 +dqcom482 compare 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0 +dqcom483 compare 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0 +dqcom487 compare 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0 +dqcom488 compare 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0 +dqcom489 compare 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0 +dqcom490 compare 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0 +dqcom491 compare 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0 +dqcom492 compare 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0 +dqcom493 compare 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0 +dqcom494 compare 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0 +dqcom495 compare 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0 +dqcom496 compare 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0 +dqcom497 compare 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0 + +-- wide-ranging, around precision; signs equal +dqcom500 compare 1 1E-15 -> 1 +dqcom501 compare 1 1E-14 -> 1 +dqcom502 compare 1 1E-13 -> 1 +dqcom503 compare 1 1E-12 -> 1 +dqcom504 compare 1 1E-11 -> 1 +dqcom505 compare 1 1E-10 -> 1 +dqcom506 compare 1 1E-9 -> 1 +dqcom507 compare 1 1E-8 -> 1 +dqcom508 compare 1 1E-7 -> 1 +dqcom509 compare 1 1E-6 -> 1 +dqcom510 compare 1 1E-5 -> 1 +dqcom511 compare 1 1E-4 -> 1 +dqcom512 compare 1 1E-3 -> 1 +dqcom513 compare 1 1E-2 -> 1 +dqcom514 compare 1 1E-1 -> 1 +dqcom515 compare 1 1E-0 -> 0 +dqcom516 compare 1 1E+1 -> -1 +dqcom517 compare 1 1E+2 -> -1 +dqcom518 compare 1 1E+3 -> -1 +dqcom519 compare 1 1E+4 -> -1 +dqcom521 compare 1 1E+5 -> -1 +dqcom522 compare 1 1E+6 -> -1 +dqcom523 compare 1 1E+7 -> -1 +dqcom524 compare 1 1E+8 -> -1 +dqcom525 compare 1 1E+9 -> -1 +dqcom526 compare 1 1E+10 -> -1 +dqcom527 compare 1 1E+11 -> -1 +dqcom528 compare 1 1E+12 -> -1 +dqcom529 compare 1 1E+13 -> -1 +dqcom530 compare 1 1E+14 -> -1 +dqcom531 compare 1 1E+15 -> -1 +-- LR swap +dqcom540 compare 1E-15 1 -> -1 +dqcom541 compare 1E-14 1 -> -1 +dqcom542 compare 1E-13 1 -> -1 +dqcom543 compare 1E-12 1 -> -1 +dqcom544 compare 1E-11 1 -> -1 +dqcom545 compare 1E-10 1 -> -1 +dqcom546 compare 1E-9 1 -> -1 +dqcom547 compare 1E-8 1 -> -1 +dqcom548 compare 1E-7 1 -> -1 +dqcom549 compare 1E-6 1 -> -1 +dqcom550 compare 1E-5 1 -> -1 +dqcom551 compare 1E-4 1 -> -1 +dqcom552 compare 1E-3 1 -> -1 +dqcom553 compare 1E-2 1 -> -1 +dqcom554 compare 1E-1 1 -> -1 +dqcom555 compare 1E-0 1 -> 0 +dqcom556 compare 1E+1 1 -> 1 +dqcom557 compare 1E+2 1 -> 1 +dqcom558 compare 1E+3 1 -> 1 +dqcom559 compare 1E+4 1 -> 1 +dqcom561 compare 1E+5 1 -> 1 +dqcom562 compare 1E+6 1 -> 1 +dqcom563 compare 1E+7 1 -> 1 +dqcom564 compare 1E+8 1 -> 1 +dqcom565 compare 1E+9 1 -> 1 +dqcom566 compare 1E+10 1 -> 1 +dqcom567 compare 1E+11 1 -> 1 +dqcom568 compare 1E+12 1 -> 1 +dqcom569 compare 1E+13 1 -> 1 +dqcom570 compare 1E+14 1 -> 1 +dqcom571 compare 1E+15 1 -> 1 +-- similar with a useful coefficient, one side only +dqcom580 compare 0.000000987654321 1E-15 -> 1 +dqcom581 compare 0.000000987654321 1E-14 -> 1 +dqcom582 compare 0.000000987654321 1E-13 -> 1 +dqcom583 compare 0.000000987654321 1E-12 -> 1 +dqcom584 compare 0.000000987654321 1E-11 -> 1 +dqcom585 compare 0.000000987654321 1E-10 -> 1 +dqcom586 compare 0.000000987654321 1E-9 -> 1 +dqcom587 compare 0.000000987654321 1E-8 -> 1 +dqcom588 compare 0.000000987654321 1E-7 -> 1 +dqcom589 compare 0.000000987654321 1E-6 -> -1 +dqcom590 compare 0.000000987654321 1E-5 -> -1 +dqcom591 compare 0.000000987654321 1E-4 -> -1 +dqcom592 compare 0.000000987654321 1E-3 -> -1 +dqcom593 compare 0.000000987654321 1E-2 -> -1 +dqcom594 compare 0.000000987654321 1E-1 -> -1 +dqcom595 compare 0.000000987654321 1E-0 -> -1 +dqcom596 compare 0.000000987654321 1E+1 -> -1 +dqcom597 compare 0.000000987654321 1E+2 -> -1 +dqcom598 compare 0.000000987654321 1E+3 -> -1 +dqcom599 compare 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +dqcom600 compare 12 12.2345 -> -1 +dqcom601 compare 12.0 12.2345 -> -1 +dqcom602 compare 12.00 12.2345 -> -1 +dqcom603 compare 12.000 12.2345 -> -1 +dqcom604 compare 12.0000 12.2345 -> -1 +dqcom605 compare 12.00000 12.2345 -> -1 +dqcom606 compare 12.000000 12.2345 -> -1 +dqcom607 compare 12.0000000 12.2345 -> -1 +dqcom608 compare 12.00000000 12.2345 -> -1 +dqcom609 compare 12.000000000 12.2345 -> -1 +dqcom610 compare 12.1234 12 -> 1 +dqcom611 compare 12.1234 12.0 -> 1 +dqcom612 compare 12.1234 12.00 -> 1 +dqcom613 compare 12.1234 12.000 -> 1 +dqcom614 compare 12.1234 12.0000 -> 1 +dqcom615 compare 12.1234 12.00000 -> 1 +dqcom616 compare 12.1234 12.000000 -> 1 +dqcom617 compare 12.1234 12.0000000 -> 1 +dqcom618 compare 12.1234 12.00000000 -> 1 +dqcom619 compare 12.1234 12.000000000 -> 1 +dqcom620 compare -12 -12.2345 -> 1 +dqcom621 compare -12.0 -12.2345 -> 1 +dqcom622 compare -12.00 -12.2345 -> 1 +dqcom623 compare -12.000 -12.2345 -> 1 +dqcom624 compare -12.0000 -12.2345 -> 1 +dqcom625 compare -12.00000 -12.2345 -> 1 +dqcom626 compare -12.000000 -12.2345 -> 1 +dqcom627 compare -12.0000000 -12.2345 -> 1 +dqcom628 compare -12.00000000 -12.2345 -> 1 +dqcom629 compare -12.000000000 -12.2345 -> 1 +dqcom630 compare -12.1234 -12 -> -1 +dqcom631 compare -12.1234 -12.0 -> -1 +dqcom632 compare -12.1234 -12.00 -> -1 +dqcom633 compare -12.1234 -12.000 -> -1 +dqcom634 compare -12.1234 -12.0000 -> -1 +dqcom635 compare -12.1234 -12.00000 -> -1 +dqcom636 compare -12.1234 -12.000000 -> -1 +dqcom637 compare -12.1234 -12.0000000 -> -1 +dqcom638 compare -12.1234 -12.00000000 -> -1 +dqcom639 compare -12.1234 -12.000000000 -> -1 + +-- extended zeros +dqcom640 compare 0 0 -> 0 +dqcom641 compare 0 -0 -> 0 +dqcom642 compare 0 -0.0 -> 0 +dqcom643 compare 0 0.0 -> 0 +dqcom644 compare -0 0 -> 0 +dqcom645 compare -0 -0 -> 0 +dqcom646 compare -0 -0.0 -> 0 +dqcom647 compare -0 0.0 -> 0 +dqcom648 compare 0.0 0 -> 0 +dqcom649 compare 0.0 -0 -> 0 +dqcom650 compare 0.0 -0.0 -> 0 +dqcom651 compare 0.0 0.0 -> 0 +dqcom652 compare -0.0 0 -> 0 +dqcom653 compare -0.0 -0 -> 0 +dqcom654 compare -0.0 -0.0 -> 0 +dqcom655 compare -0.0 0.0 -> 0 + +dqcom656 compare -0E1 0.0 -> 0 +dqcom657 compare -0E2 0.0 -> 0 +dqcom658 compare 0E1 0.0 -> 0 +dqcom659 compare 0E2 0.0 -> 0 +dqcom660 compare -0E1 0 -> 0 +dqcom661 compare -0E2 0 -> 0 +dqcom662 compare 0E1 0 -> 0 +dqcom663 compare 0E2 0 -> 0 +dqcom664 compare -0E1 -0E1 -> 0 +dqcom665 compare -0E2 -0E1 -> 0 +dqcom666 compare 0E1 -0E1 -> 0 +dqcom667 compare 0E2 -0E1 -> 0 +dqcom668 compare -0E1 -0E2 -> 0 +dqcom669 compare -0E2 -0E2 -> 0 +dqcom670 compare 0E1 -0E2 -> 0 +dqcom671 compare 0E2 -0E2 -> 0 +dqcom672 compare -0E1 0E1 -> 0 +dqcom673 compare -0E2 0E1 -> 0 +dqcom674 compare 0E1 0E1 -> 0 +dqcom675 compare 0E2 0E1 -> 0 +dqcom676 compare -0E1 0E2 -> 0 +dqcom677 compare -0E2 0E2 -> 0 +dqcom678 compare 0E1 0E2 -> 0 +dqcom679 compare 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +dqcom680 compare 12 12 -> 0 +dqcom681 compare 12 12.0 -> 0 +dqcom682 compare 12 12.00 -> 0 +dqcom683 compare 12 12.000 -> 0 +dqcom684 compare 12 12.0000 -> 0 +dqcom685 compare 12 12.00000 -> 0 +dqcom686 compare 12 12.000000 -> 0 +dqcom687 compare 12 12.0000000 -> 0 +dqcom688 compare 12 12.00000000 -> 0 +dqcom689 compare 12 12.000000000 -> 0 +dqcom690 compare 12 12 -> 0 +dqcom691 compare 12.0 12 -> 0 +dqcom692 compare 12.00 12 -> 0 +dqcom693 compare 12.000 12 -> 0 +dqcom694 compare 12.0000 12 -> 0 +dqcom695 compare 12.00000 12 -> 0 +dqcom696 compare 12.000000 12 -> 0 +dqcom697 compare 12.0000000 12 -> 0 +dqcom698 compare 12.00000000 12 -> 0 +dqcom699 compare 12.000000000 12 -> 0 + +-- first, second, & last digit +dqcom700 compare 1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1 +dqcom701 compare 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0 +dqcom702 compare 1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1 +dqcom703 compare 1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1 +dqcom704 compare 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0 +dqcom705 compare 1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1 +dqcom706 compare 1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1 +dqcom707 compare 1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0 +dqcom708 compare 1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1 + +-- miscellaneous +dqcom721 compare 12345678000 1 -> 1 +dqcom722 compare 1 12345678000 -> -1 +dqcom723 compare 1234567800 1 -> 1 +dqcom724 compare 1 1234567800 -> -1 +dqcom725 compare 1234567890 1 -> 1 +dqcom726 compare 1 1234567890 -> -1 +dqcom727 compare 1234567891 1 -> 1 +dqcom728 compare 1 1234567891 -> -1 +dqcom729 compare 12345678901 1 -> 1 +dqcom730 compare 1 12345678901 -> -1 +dqcom731 compare 1234567896 1 -> 1 +dqcom732 compare 1 1234567896 -> -1 + +-- residue cases at lower precision +dqcom740 compare 1 0.9999999 -> 1 +dqcom741 compare 1 0.999999 -> 1 +dqcom742 compare 1 0.99999 -> 1 +dqcom743 compare 1 1.0000 -> 0 +dqcom744 compare 1 1.00001 -> -1 +dqcom745 compare 1 1.000001 -> -1 +dqcom746 compare 1 1.0000001 -> -1 +dqcom750 compare 0.9999999 1 -> -1 +dqcom751 compare 0.999999 1 -> -1 +dqcom752 compare 0.99999 1 -> -1 +dqcom753 compare 1.0000 1 -> 0 +dqcom754 compare 1.00001 1 -> 1 +dqcom755 compare 1.000001 1 -> 1 +dqcom756 compare 1.0000001 1 -> 1 + +-- Specials +dqcom780 compare Inf -Inf -> 1 +dqcom781 compare Inf -1000 -> 1 +dqcom782 compare Inf -1 -> 1 +dqcom783 compare Inf -0 -> 1 +dqcom784 compare Inf 0 -> 1 +dqcom785 compare Inf 1 -> 1 +dqcom786 compare Inf 1000 -> 1 +dqcom787 compare Inf Inf -> 0 +dqcom788 compare -1000 Inf -> -1 +dqcom789 compare -Inf Inf -> -1 +dqcom790 compare -1 Inf -> -1 +dqcom791 compare -0 Inf -> -1 +dqcom792 compare 0 Inf -> -1 +dqcom793 compare 1 Inf -> -1 +dqcom794 compare 1000 Inf -> -1 +dqcom795 compare Inf Inf -> 0 + +dqcom800 compare -Inf -Inf -> 0 +dqcom801 compare -Inf -1000 -> -1 +dqcom802 compare -Inf -1 -> -1 +dqcom803 compare -Inf -0 -> -1 +dqcom804 compare -Inf 0 -> -1 +dqcom805 compare -Inf 1 -> -1 +dqcom806 compare -Inf 1000 -> -1 +dqcom807 compare -Inf Inf -> -1 +dqcom808 compare -Inf -Inf -> 0 +dqcom809 compare -1000 -Inf -> 1 +dqcom810 compare -1 -Inf -> 1 +dqcom811 compare -0 -Inf -> 1 +dqcom812 compare 0 -Inf -> 1 +dqcom813 compare 1 -Inf -> 1 +dqcom814 compare 1000 -Inf -> 1 +dqcom815 compare Inf -Inf -> 1 + +dqcom821 compare NaN -Inf -> NaN +dqcom822 compare NaN -1000 -> NaN +dqcom823 compare NaN -1 -> NaN +dqcom824 compare NaN -0 -> NaN +dqcom825 compare NaN 0 -> NaN +dqcom826 compare NaN 1 -> NaN +dqcom827 compare NaN 1000 -> NaN +dqcom828 compare NaN Inf -> NaN +dqcom829 compare NaN NaN -> NaN +dqcom830 compare -Inf NaN -> NaN +dqcom831 compare -1000 NaN -> NaN +dqcom832 compare -1 NaN -> NaN +dqcom833 compare -0 NaN -> NaN +dqcom834 compare 0 NaN -> NaN +dqcom835 compare 1 NaN -> NaN +dqcom836 compare 1000 NaN -> NaN +dqcom837 compare Inf NaN -> NaN +dqcom838 compare -NaN -NaN -> -NaN +dqcom839 compare +NaN -NaN -> NaN +dqcom840 compare -NaN +NaN -> -NaN + +dqcom841 compare sNaN -Inf -> NaN Invalid_operation +dqcom842 compare sNaN -1000 -> NaN Invalid_operation +dqcom843 compare sNaN -1 -> NaN Invalid_operation +dqcom844 compare sNaN -0 -> NaN Invalid_operation +dqcom845 compare sNaN 0 -> NaN Invalid_operation +dqcom846 compare sNaN 1 -> NaN Invalid_operation +dqcom847 compare sNaN 1000 -> NaN Invalid_operation +dqcom848 compare sNaN NaN -> NaN Invalid_operation +dqcom849 compare sNaN sNaN -> NaN Invalid_operation +dqcom850 compare NaN sNaN -> NaN Invalid_operation +dqcom851 compare -Inf sNaN -> NaN Invalid_operation +dqcom852 compare -1000 sNaN -> NaN Invalid_operation +dqcom853 compare -1 sNaN -> NaN Invalid_operation +dqcom854 compare -0 sNaN -> NaN Invalid_operation +dqcom855 compare 0 sNaN -> NaN Invalid_operation +dqcom856 compare 1 sNaN -> NaN Invalid_operation +dqcom857 compare 1000 sNaN -> NaN Invalid_operation +dqcom858 compare Inf sNaN -> NaN Invalid_operation +dqcom859 compare NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqcom860 compare NaN9 -Inf -> NaN9 +dqcom861 compare NaN8 999 -> NaN8 +dqcom862 compare NaN77 Inf -> NaN77 +dqcom863 compare -NaN67 NaN5 -> -NaN67 +dqcom864 compare -Inf -NaN4 -> -NaN4 +dqcom865 compare -999 -NaN33 -> -NaN33 +dqcom866 compare Inf NaN2 -> NaN2 +dqcom867 compare -NaN41 -NaN42 -> -NaN41 +dqcom868 compare +NaN41 -NaN42 -> NaN41 +dqcom869 compare -NaN41 +NaN42 -> -NaN41 +dqcom870 compare +NaN41 +NaN42 -> NaN41 + +dqcom871 compare -sNaN99 -Inf -> -NaN99 Invalid_operation +dqcom872 compare sNaN98 -11 -> NaN98 Invalid_operation +dqcom873 compare sNaN97 NaN -> NaN97 Invalid_operation +dqcom874 compare sNaN16 sNaN94 -> NaN16 Invalid_operation +dqcom875 compare NaN85 sNaN83 -> NaN83 Invalid_operation +dqcom876 compare -Inf sNaN92 -> NaN92 Invalid_operation +dqcom877 compare 088 sNaN81 -> NaN81 Invalid_operation +dqcom878 compare Inf sNaN90 -> NaN90 Invalid_operation +dqcom879 compare NaN -sNaN89 -> -NaN89 Invalid_operation + +-- wide range +dqcom880 compare +1.23456789012345E-0 9E+6144 -> -1 +dqcom881 compare 9E+6144 +1.23456789012345E-0 -> 1 +dqcom882 compare +0.100 9E-6143 -> 1 +dqcom883 compare 9E-6143 +0.100 -> -1 +dqcom885 compare -1.23456789012345E-0 9E+6144 -> -1 +dqcom886 compare 9E+6144 -1.23456789012345E-0 -> 1 +dqcom887 compare -0.100 9E-6143 -> -1 +dqcom888 compare 9E-6143 -0.100 -> 1 + +-- signs +dqcom901 compare 1e+77 1e+11 -> 1 +dqcom902 compare 1e+77 -1e+11 -> 1 +dqcom903 compare -1e+77 1e+11 -> -1 +dqcom904 compare -1e+77 -1e+11 -> -1 +dqcom905 compare 1e-77 1e-11 -> -1 +dqcom906 compare 1e-77 -1e-11 -> 1 +dqcom907 compare -1e-77 1e-11 -> -1 +dqcom908 compare -1e-77 -1e-11 -> 1 + +-- full alignment range, both ways +dqcomp1001 compare 1 1.000000000000000000000000000000000 -> 0 +dqcomp1002 compare 1 1.00000000000000000000000000000000 -> 0 +dqcomp1003 compare 1 1.0000000000000000000000000000000 -> 0 +dqcomp1004 compare 1 1.000000000000000000000000000000 -> 0 +dqcomp1005 compare 1 1.00000000000000000000000000000 -> 0 +dqcomp1006 compare 1 1.0000000000000000000000000000 -> 0 +dqcomp1007 compare 1 1.000000000000000000000000000 -> 0 +dqcomp1008 compare 1 1.00000000000000000000000000 -> 0 +dqcomp1009 compare 1 1.0000000000000000000000000 -> 0 +dqcomp1010 compare 1 1.000000000000000000000000 -> 0 +dqcomp1011 compare 1 1.00000000000000000000000 -> 0 +dqcomp1012 compare 1 1.0000000000000000000000 -> 0 +dqcomp1013 compare 1 1.000000000000000000000 -> 0 +dqcomp1014 compare 1 1.00000000000000000000 -> 0 +dqcomp1015 compare 1 1.0000000000000000000 -> 0 +dqcomp1016 compare 1 1.000000000000000000 -> 0 +dqcomp1017 compare 1 1.00000000000000000 -> 0 +dqcomp1018 compare 1 1.0000000000000000 -> 0 +dqcomp1019 compare 1 1.000000000000000 -> 0 +dqcomp1020 compare 1 1.00000000000000 -> 0 +dqcomp1021 compare 1 1.0000000000000 -> 0 +dqcomp1022 compare 1 1.000000000000 -> 0 +dqcomp1023 compare 1 1.00000000000 -> 0 +dqcomp1024 compare 1 1.0000000000 -> 0 +dqcomp1025 compare 1 1.000000000 -> 0 +dqcomp1026 compare 1 1.00000000 -> 0 +dqcomp1027 compare 1 1.0000000 -> 0 +dqcomp1028 compare 1 1.000000 -> 0 +dqcomp1029 compare 1 1.00000 -> 0 +dqcomp1030 compare 1 1.0000 -> 0 +dqcomp1031 compare 1 1.000 -> 0 +dqcomp1032 compare 1 1.00 -> 0 +dqcomp1033 compare 1 1.0 -> 0 + +dqcomp1041 compare 1.000000000000000000000000000000000 1 -> 0 +dqcomp1042 compare 1.00000000000000000000000000000000 1 -> 0 +dqcomp1043 compare 1.0000000000000000000000000000000 1 -> 0 +dqcomp1044 compare 1.000000000000000000000000000000 1 -> 0 +dqcomp1045 compare 1.00000000000000000000000000000 1 -> 0 +dqcomp1046 compare 1.0000000000000000000000000000 1 -> 0 +dqcomp1047 compare 1.000000000000000000000000000 1 -> 0 +dqcomp1048 compare 1.00000000000000000000000000 1 -> 0 +dqcomp1049 compare 1.0000000000000000000000000 1 -> 0 +dqcomp1050 compare 1.000000000000000000000000 1 -> 0 +dqcomp1051 compare 1.00000000000000000000000 1 -> 0 +dqcomp1052 compare 1.0000000000000000000000 1 -> 0 +dqcomp1053 compare 1.000000000000000000000 1 -> 0 +dqcomp1054 compare 1.00000000000000000000 1 -> 0 +dqcomp1055 compare 1.0000000000000000000 1 -> 0 +dqcomp1056 compare 1.000000000000000000 1 -> 0 +dqcomp1057 compare 1.00000000000000000 1 -> 0 +dqcomp1058 compare 1.0000000000000000 1 -> 0 +dqcomp1059 compare 1.000000000000000 1 -> 0 +dqcomp1060 compare 1.00000000000000 1 -> 0 +dqcomp1061 compare 1.0000000000000 1 -> 0 +dqcomp1062 compare 1.000000000000 1 -> 0 +dqcomp1063 compare 1.00000000000 1 -> 0 +dqcomp1064 compare 1.0000000000 1 -> 0 +dqcomp1065 compare 1.000000000 1 -> 0 +dqcomp1066 compare 1.00000000 1 -> 0 +dqcomp1067 compare 1.0000000 1 -> 0 +dqcomp1068 compare 1.000000 1 -> 0 +dqcomp1069 compare 1.00000 1 -> 0 +dqcomp1070 compare 1.0000 1 -> 0 +dqcomp1071 compare 1.000 1 -> 0 +dqcomp1072 compare 1.00 1 -> 0 +dqcomp1073 compare 1.0 1 -> 0 + +-- check MSD always detected non-zero +dqcomp1080 compare 0 0.000000000000000000000000000000000 -> 0 +dqcomp1081 compare 0 1.000000000000000000000000000000000 -> -1 +dqcomp1082 compare 0 2.000000000000000000000000000000000 -> -1 +dqcomp1083 compare 0 3.000000000000000000000000000000000 -> -1 +dqcomp1084 compare 0 4.000000000000000000000000000000000 -> -1 +dqcomp1085 compare 0 5.000000000000000000000000000000000 -> -1 +dqcomp1086 compare 0 6.000000000000000000000000000000000 -> -1 +dqcomp1087 compare 0 7.000000000000000000000000000000000 -> -1 +dqcomp1088 compare 0 8.000000000000000000000000000000000 -> -1 +dqcomp1089 compare 0 9.000000000000000000000000000000000 -> -1 +dqcomp1090 compare 0.000000000000000000000000000000000 0 -> 0 +dqcomp1091 compare 1.000000000000000000000000000000000 0 -> 1 +dqcomp1092 compare 2.000000000000000000000000000000000 0 -> 1 +dqcomp1093 compare 3.000000000000000000000000000000000 0 -> 1 +dqcomp1094 compare 4.000000000000000000000000000000000 0 -> 1 +dqcomp1095 compare 5.000000000000000000000000000000000 0 -> 1 +dqcomp1096 compare 6.000000000000000000000000000000000 0 -> 1 +dqcomp1097 compare 7.000000000000000000000000000000000 0 -> 1 +dqcomp1098 compare 8.000000000000000000000000000000000 0 -> 1 +dqcomp1099 compare 9.000000000000000000000000000000000 0 -> 1 + +-- Null tests +dqcom990 compare 10 # -> NaN Invalid_operation +dqcom991 compare # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqCompareSig.decTest b/Lib/test/decimaltestdata/dqCompareSig.decTest index c068d47..795f091 100644 --- a/Lib/test/decimaltestdata/dqCompareSig.decTest +++ b/Lib/test/decimaltestdata/dqCompareSig.decTest @@ -1,647 +1,647 @@ ------------------------------------------------------------------------- --- dqCompareSig.decTest -- decQuad comparison; all NaNs signal -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqcms001 comparesig -2 -2 -> 0 -dqcms002 comparesig -2 -1 -> -1 -dqcms003 comparesig -2 0 -> -1 -dqcms004 comparesig -2 1 -> -1 -dqcms005 comparesig -2 2 -> -1 -dqcms006 comparesig -1 -2 -> 1 -dqcms007 comparesig -1 -1 -> 0 -dqcms008 comparesig -1 0 -> -1 -dqcms009 comparesig -1 1 -> -1 -dqcms010 comparesig -1 2 -> -1 -dqcms011 comparesig 0 -2 -> 1 -dqcms012 comparesig 0 -1 -> 1 -dqcms013 comparesig 0 0 -> 0 -dqcms014 comparesig 0 1 -> -1 -dqcms015 comparesig 0 2 -> -1 -dqcms016 comparesig 1 -2 -> 1 -dqcms017 comparesig 1 -1 -> 1 -dqcms018 comparesig 1 0 -> 1 -dqcms019 comparesig 1 1 -> 0 -dqcms020 comparesig 1 2 -> -1 -dqcms021 comparesig 2 -2 -> 1 -dqcms022 comparesig 2 -1 -> 1 -dqcms023 comparesig 2 0 -> 1 -dqcms025 comparesig 2 1 -> 1 -dqcms026 comparesig 2 2 -> 0 - -dqcms031 comparesig -20 -20 -> 0 -dqcms032 comparesig -20 -10 -> -1 -dqcms033 comparesig -20 00 -> -1 -dqcms034 comparesig -20 10 -> -1 -dqcms035 comparesig -20 20 -> -1 -dqcms036 comparesig -10 -20 -> 1 -dqcms037 comparesig -10 -10 -> 0 -dqcms038 comparesig -10 00 -> -1 -dqcms039 comparesig -10 10 -> -1 -dqcms040 comparesig -10 20 -> -1 -dqcms041 comparesig 00 -20 -> 1 -dqcms042 comparesig 00 -10 -> 1 -dqcms043 comparesig 00 00 -> 0 -dqcms044 comparesig 00 10 -> -1 -dqcms045 comparesig 00 20 -> -1 -dqcms046 comparesig 10 -20 -> 1 -dqcms047 comparesig 10 -10 -> 1 -dqcms048 comparesig 10 00 -> 1 -dqcms049 comparesig 10 10 -> 0 -dqcms050 comparesig 10 20 -> -1 -dqcms051 comparesig 20 -20 -> 1 -dqcms052 comparesig 20 -10 -> 1 -dqcms053 comparesig 20 00 -> 1 -dqcms055 comparesig 20 10 -> 1 -dqcms056 comparesig 20 20 -> 0 - -dqcms061 comparesig -2.0 -2.0 -> 0 -dqcms062 comparesig -2.0 -1.0 -> -1 -dqcms063 comparesig -2.0 0.0 -> -1 -dqcms064 comparesig -2.0 1.0 -> -1 -dqcms065 comparesig -2.0 2.0 -> -1 -dqcms066 comparesig -1.0 -2.0 -> 1 -dqcms067 comparesig -1.0 -1.0 -> 0 -dqcms068 comparesig -1.0 0.0 -> -1 -dqcms069 comparesig -1.0 1.0 -> -1 -dqcms070 comparesig -1.0 2.0 -> -1 -dqcms071 comparesig 0.0 -2.0 -> 1 -dqcms072 comparesig 0.0 -1.0 -> 1 -dqcms073 comparesig 0.0 0.0 -> 0 -dqcms074 comparesig 0.0 1.0 -> -1 -dqcms075 comparesig 0.0 2.0 -> -1 -dqcms076 comparesig 1.0 -2.0 -> 1 -dqcms077 comparesig 1.0 -1.0 -> 1 -dqcms078 comparesig 1.0 0.0 -> 1 -dqcms079 comparesig 1.0 1.0 -> 0 -dqcms080 comparesig 1.0 2.0 -> -1 -dqcms081 comparesig 2.0 -2.0 -> 1 -dqcms082 comparesig 2.0 -1.0 -> 1 -dqcms083 comparesig 2.0 0.0 -> 1 -dqcms085 comparesig 2.0 1.0 -> 1 -dqcms086 comparesig 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -dqcms090 comparesig 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 0 -dqcms091 comparesig -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> -1 -dqcms092 comparesig 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1 -dqcms093 comparesig -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0 - --- some differing length/exponent cases -dqcms100 comparesig 7.0 7.0 -> 0 -dqcms101 comparesig 7.0 7 -> 0 -dqcms102 comparesig 7 7.0 -> 0 -dqcms103 comparesig 7E+0 7.0 -> 0 -dqcms104 comparesig 70E-1 7.0 -> 0 -dqcms105 comparesig 0.7E+1 7 -> 0 -dqcms106 comparesig 70E-1 7 -> 0 -dqcms107 comparesig 7.0 7E+0 -> 0 -dqcms108 comparesig 7.0 70E-1 -> 0 -dqcms109 comparesig 7 0.7E+1 -> 0 -dqcms110 comparesig 7 70E-1 -> 0 - -dqcms120 comparesig 8.0 7.0 -> 1 -dqcms121 comparesig 8.0 7 -> 1 -dqcms122 comparesig 8 7.0 -> 1 -dqcms123 comparesig 8E+0 7.0 -> 1 -dqcms124 comparesig 80E-1 7.0 -> 1 -dqcms125 comparesig 0.8E+1 7 -> 1 -dqcms126 comparesig 80E-1 7 -> 1 -dqcms127 comparesig 8.0 7E+0 -> 1 -dqcms128 comparesig 8.0 70E-1 -> 1 -dqcms129 comparesig 8 0.7E+1 -> 1 -dqcms130 comparesig 8 70E-1 -> 1 - -dqcms140 comparesig 8.0 9.0 -> -1 -dqcms141 comparesig 8.0 9 -> -1 -dqcms142 comparesig 8 9.0 -> -1 -dqcms143 comparesig 8E+0 9.0 -> -1 -dqcms144 comparesig 80E-1 9.0 -> -1 -dqcms145 comparesig 0.8E+1 9 -> -1 -dqcms146 comparesig 80E-1 9 -> -1 -dqcms147 comparesig 8.0 9E+0 -> -1 -dqcms148 comparesig 8.0 90E-1 -> -1 -dqcms149 comparesig 8 0.9E+1 -> -1 -dqcms150 comparesig 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -dqcms200 comparesig -7.0 7.0 -> -1 -dqcms201 comparesig -7.0 7 -> -1 -dqcms202 comparesig -7 7.0 -> -1 -dqcms203 comparesig -7E+0 7.0 -> -1 -dqcms204 comparesig -70E-1 7.0 -> -1 -dqcms205 comparesig -0.7E+1 7 -> -1 -dqcms206 comparesig -70E-1 7 -> -1 -dqcms207 comparesig -7.0 7E+0 -> -1 -dqcms208 comparesig -7.0 70E-1 -> -1 -dqcms209 comparesig -7 0.7E+1 -> -1 -dqcms210 comparesig -7 70E-1 -> -1 - -dqcms220 comparesig -8.0 7.0 -> -1 -dqcms221 comparesig -8.0 7 -> -1 -dqcms222 comparesig -8 7.0 -> -1 -dqcms223 comparesig -8E+0 7.0 -> -1 -dqcms224 comparesig -80E-1 7.0 -> -1 -dqcms225 comparesig -0.8E+1 7 -> -1 -dqcms226 comparesig -80E-1 7 -> -1 -dqcms227 comparesig -8.0 7E+0 -> -1 -dqcms228 comparesig -8.0 70E-1 -> -1 -dqcms229 comparesig -8 0.7E+1 -> -1 -dqcms230 comparesig -8 70E-1 -> -1 - -dqcms240 comparesig -8.0 9.0 -> -1 -dqcms241 comparesig -8.0 9 -> -1 -dqcms242 comparesig -8 9.0 -> -1 -dqcms243 comparesig -8E+0 9.0 -> -1 -dqcms244 comparesig -80E-1 9.0 -> -1 -dqcms245 comparesig -0.8E+1 9 -> -1 -dqcms246 comparesig -80E-1 9 -> -1 -dqcms247 comparesig -8.0 9E+0 -> -1 -dqcms248 comparesig -8.0 90E-1 -> -1 -dqcms249 comparesig -8 0.9E+1 -> -1 -dqcms250 comparesig -8 90E-1 -> -1 - --- and again, with sign changes +- .. -dqcms300 comparesig 7.0 -7.0 -> 1 -dqcms301 comparesig 7.0 -7 -> 1 -dqcms302 comparesig 7 -7.0 -> 1 -dqcms303 comparesig 7E+0 -7.0 -> 1 -dqcms304 comparesig 70E-1 -7.0 -> 1 -dqcms305 comparesig .7E+1 -7 -> 1 -dqcms306 comparesig 70E-1 -7 -> 1 -dqcms307 comparesig 7.0 -7E+0 -> 1 -dqcms308 comparesig 7.0 -70E-1 -> 1 -dqcms309 comparesig 7 -.7E+1 -> 1 -dqcms310 comparesig 7 -70E-1 -> 1 - -dqcms320 comparesig 8.0 -7.0 -> 1 -dqcms321 comparesig 8.0 -7 -> 1 -dqcms322 comparesig 8 -7.0 -> 1 -dqcms323 comparesig 8E+0 -7.0 -> 1 -dqcms324 comparesig 80E-1 -7.0 -> 1 -dqcms325 comparesig .8E+1 -7 -> 1 -dqcms326 comparesig 80E-1 -7 -> 1 -dqcms327 comparesig 8.0 -7E+0 -> 1 -dqcms328 comparesig 8.0 -70E-1 -> 1 -dqcms329 comparesig 8 -.7E+1 -> 1 -dqcms330 comparesig 8 -70E-1 -> 1 - -dqcms340 comparesig 8.0 -9.0 -> 1 -dqcms341 comparesig 8.0 -9 -> 1 -dqcms342 comparesig 8 -9.0 -> 1 -dqcms343 comparesig 8E+0 -9.0 -> 1 -dqcms344 comparesig 80E-1 -9.0 -> 1 -dqcms345 comparesig .8E+1 -9 -> 1 -dqcms346 comparesig 80E-1 -9 -> 1 -dqcms347 comparesig 8.0 -9E+0 -> 1 -dqcms348 comparesig 8.0 -90E-1 -> 1 -dqcms349 comparesig 8 -.9E+1 -> 1 -dqcms350 comparesig 8 -90E-1 -> 1 - --- and again, with sign changes -- .. -dqcms400 comparesig -7.0 -7.0 -> 0 -dqcms401 comparesig -7.0 -7 -> 0 -dqcms402 comparesig -7 -7.0 -> 0 -dqcms403 comparesig -7E+0 -7.0 -> 0 -dqcms404 comparesig -70E-1 -7.0 -> 0 -dqcms405 comparesig -.7E+1 -7 -> 0 -dqcms406 comparesig -70E-1 -7 -> 0 -dqcms407 comparesig -7.0 -7E+0 -> 0 -dqcms408 comparesig -7.0 -70E-1 -> 0 -dqcms409 comparesig -7 -.7E+1 -> 0 -dqcms410 comparesig -7 -70E-1 -> 0 - -dqcms420 comparesig -8.0 -7.0 -> -1 -dqcms421 comparesig -8.0 -7 -> -1 -dqcms422 comparesig -8 -7.0 -> -1 -dqcms423 comparesig -8E+0 -7.0 -> -1 -dqcms424 comparesig -80E-1 -7.0 -> -1 -dqcms425 comparesig -.8E+1 -7 -> -1 -dqcms426 comparesig -80E-1 -7 -> -1 -dqcms427 comparesig -8.0 -7E+0 -> -1 -dqcms428 comparesig -8.0 -70E-1 -> -1 -dqcms429 comparesig -8 -.7E+1 -> -1 -dqcms430 comparesig -8 -70E-1 -> -1 - -dqcms440 comparesig -8.0 -9.0 -> 1 -dqcms441 comparesig -8.0 -9 -> 1 -dqcms442 comparesig -8 -9.0 -> 1 -dqcms443 comparesig -8E+0 -9.0 -> 1 -dqcms444 comparesig -80E-1 -9.0 -> 1 -dqcms445 comparesig -.8E+1 -9 -> 1 -dqcms446 comparesig -80E-1 -9 -> 1 -dqcms447 comparesig -8.0 -9E+0 -> 1 -dqcms448 comparesig -8.0 -90E-1 -> 1 -dqcms449 comparesig -8 -.9E+1 -> 1 -dqcms450 comparesig -8 -90E-1 -> 1 - - --- testcases that subtract to lots of zeros at boundaries [pgr] -dqcms473 comparesig 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0 -dqcms474 comparesig 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0 -dqcms475 comparesig 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0 -dqcms476 comparesig 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0 -dqcms477 comparesig 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0 -dqcms478 comparesig 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0 -dqcms479 comparesig 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0 -dqcms480 comparesig 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0 -dqcms481 comparesig 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0 -dqcms482 comparesig 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0 -dqcms483 comparesig 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0 -dqcms487 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0 -dqcms488 comparesig 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0 -dqcms489 comparesig 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0 -dqcms490 comparesig 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0 -dqcms491 comparesig 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0 -dqcms492 comparesig 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0 -dqcms493 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0 -dqcms494 comparesig 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0 -dqcms495 comparesig 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0 -dqcms496 comparesig 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0 -dqcms497 comparesig 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0 - --- wide-ranging, around precision; signs equal -dqcms500 comparesig 1 1E-15 -> 1 -dqcms501 comparesig 1 1E-14 -> 1 -dqcms502 comparesig 1 1E-13 -> 1 -dqcms503 comparesig 1 1E-12 -> 1 -dqcms504 comparesig 1 1E-11 -> 1 -dqcms505 comparesig 1 1E-10 -> 1 -dqcms506 comparesig 1 1E-9 -> 1 -dqcms507 comparesig 1 1E-8 -> 1 -dqcms508 comparesig 1 1E-7 -> 1 -dqcms509 comparesig 1 1E-6 -> 1 -dqcms510 comparesig 1 1E-5 -> 1 -dqcms511 comparesig 1 1E-4 -> 1 -dqcms512 comparesig 1 1E-3 -> 1 -dqcms513 comparesig 1 1E-2 -> 1 -dqcms514 comparesig 1 1E-1 -> 1 -dqcms515 comparesig 1 1E-0 -> 0 -dqcms516 comparesig 1 1E+1 -> -1 -dqcms517 comparesig 1 1E+2 -> -1 -dqcms518 comparesig 1 1E+3 -> -1 -dqcms519 comparesig 1 1E+4 -> -1 -dqcms521 comparesig 1 1E+5 -> -1 -dqcms522 comparesig 1 1E+6 -> -1 -dqcms523 comparesig 1 1E+7 -> -1 -dqcms524 comparesig 1 1E+8 -> -1 -dqcms525 comparesig 1 1E+9 -> -1 -dqcms526 comparesig 1 1E+10 -> -1 -dqcms527 comparesig 1 1E+11 -> -1 -dqcms528 comparesig 1 1E+12 -> -1 -dqcms529 comparesig 1 1E+13 -> -1 -dqcms530 comparesig 1 1E+14 -> -1 -dqcms531 comparesig 1 1E+15 -> -1 --- LR swap -dqcms540 comparesig 1E-15 1 -> -1 -dqcms541 comparesig 1E-14 1 -> -1 -dqcms542 comparesig 1E-13 1 -> -1 -dqcms543 comparesig 1E-12 1 -> -1 -dqcms544 comparesig 1E-11 1 -> -1 -dqcms545 comparesig 1E-10 1 -> -1 -dqcms546 comparesig 1E-9 1 -> -1 -dqcms547 comparesig 1E-8 1 -> -1 -dqcms548 comparesig 1E-7 1 -> -1 -dqcms549 comparesig 1E-6 1 -> -1 -dqcms550 comparesig 1E-5 1 -> -1 -dqcms551 comparesig 1E-4 1 -> -1 -dqcms552 comparesig 1E-3 1 -> -1 -dqcms553 comparesig 1E-2 1 -> -1 -dqcms554 comparesig 1E-1 1 -> -1 -dqcms555 comparesig 1E-0 1 -> 0 -dqcms556 comparesig 1E+1 1 -> 1 -dqcms557 comparesig 1E+2 1 -> 1 -dqcms558 comparesig 1E+3 1 -> 1 -dqcms559 comparesig 1E+4 1 -> 1 -dqcms561 comparesig 1E+5 1 -> 1 -dqcms562 comparesig 1E+6 1 -> 1 -dqcms563 comparesig 1E+7 1 -> 1 -dqcms564 comparesig 1E+8 1 -> 1 -dqcms565 comparesig 1E+9 1 -> 1 -dqcms566 comparesig 1E+10 1 -> 1 -dqcms567 comparesig 1E+11 1 -> 1 -dqcms568 comparesig 1E+12 1 -> 1 -dqcms569 comparesig 1E+13 1 -> 1 -dqcms570 comparesig 1E+14 1 -> 1 -dqcms571 comparesig 1E+15 1 -> 1 --- similar with a useful coefficient, one side only -dqcms580 comparesig 0.000000987654321 1E-15 -> 1 -dqcms581 comparesig 0.000000987654321 1E-14 -> 1 -dqcms582 comparesig 0.000000987654321 1E-13 -> 1 -dqcms583 comparesig 0.000000987654321 1E-12 -> 1 -dqcms584 comparesig 0.000000987654321 1E-11 -> 1 -dqcms585 comparesig 0.000000987654321 1E-10 -> 1 -dqcms586 comparesig 0.000000987654321 1E-9 -> 1 -dqcms587 comparesig 0.000000987654321 1E-8 -> 1 -dqcms588 comparesig 0.000000987654321 1E-7 -> 1 -dqcms589 comparesig 0.000000987654321 1E-6 -> -1 -dqcms590 comparesig 0.000000987654321 1E-5 -> -1 -dqcms591 comparesig 0.000000987654321 1E-4 -> -1 -dqcms592 comparesig 0.000000987654321 1E-3 -> -1 -dqcms593 comparesig 0.000000987654321 1E-2 -> -1 -dqcms594 comparesig 0.000000987654321 1E-1 -> -1 -dqcms595 comparesig 0.000000987654321 1E-0 -> -1 -dqcms596 comparesig 0.000000987654321 1E+1 -> -1 -dqcms597 comparesig 0.000000987654321 1E+2 -> -1 -dqcms598 comparesig 0.000000987654321 1E+3 -> -1 -dqcms599 comparesig 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -dqcms600 comparesig 12 12.2345 -> -1 -dqcms601 comparesig 12.0 12.2345 -> -1 -dqcms602 comparesig 12.00 12.2345 -> -1 -dqcms603 comparesig 12.000 12.2345 -> -1 -dqcms604 comparesig 12.0000 12.2345 -> -1 -dqcms605 comparesig 12.00000 12.2345 -> -1 -dqcms606 comparesig 12.000000 12.2345 -> -1 -dqcms607 comparesig 12.0000000 12.2345 -> -1 -dqcms608 comparesig 12.00000000 12.2345 -> -1 -dqcms609 comparesig 12.000000000 12.2345 -> -1 -dqcms610 comparesig 12.1234 12 -> 1 -dqcms611 comparesig 12.1234 12.0 -> 1 -dqcms612 comparesig 12.1234 12.00 -> 1 -dqcms613 comparesig 12.1234 12.000 -> 1 -dqcms614 comparesig 12.1234 12.0000 -> 1 -dqcms615 comparesig 12.1234 12.00000 -> 1 -dqcms616 comparesig 12.1234 12.000000 -> 1 -dqcms617 comparesig 12.1234 12.0000000 -> 1 -dqcms618 comparesig 12.1234 12.00000000 -> 1 -dqcms619 comparesig 12.1234 12.000000000 -> 1 -dqcms620 comparesig -12 -12.2345 -> 1 -dqcms621 comparesig -12.0 -12.2345 -> 1 -dqcms622 comparesig -12.00 -12.2345 -> 1 -dqcms623 comparesig -12.000 -12.2345 -> 1 -dqcms624 comparesig -12.0000 -12.2345 -> 1 -dqcms625 comparesig -12.00000 -12.2345 -> 1 -dqcms626 comparesig -12.000000 -12.2345 -> 1 -dqcms627 comparesig -12.0000000 -12.2345 -> 1 -dqcms628 comparesig -12.00000000 -12.2345 -> 1 -dqcms629 comparesig -12.000000000 -12.2345 -> 1 -dqcms630 comparesig -12.1234 -12 -> -1 -dqcms631 comparesig -12.1234 -12.0 -> -1 -dqcms632 comparesig -12.1234 -12.00 -> -1 -dqcms633 comparesig -12.1234 -12.000 -> -1 -dqcms634 comparesig -12.1234 -12.0000 -> -1 -dqcms635 comparesig -12.1234 -12.00000 -> -1 -dqcms636 comparesig -12.1234 -12.000000 -> -1 -dqcms637 comparesig -12.1234 -12.0000000 -> -1 -dqcms638 comparesig -12.1234 -12.00000000 -> -1 -dqcms639 comparesig -12.1234 -12.000000000 -> -1 - --- extended zeros -dqcms640 comparesig 0 0 -> 0 -dqcms641 comparesig 0 -0 -> 0 -dqcms642 comparesig 0 -0.0 -> 0 -dqcms643 comparesig 0 0.0 -> 0 -dqcms644 comparesig -0 0 -> 0 -dqcms645 comparesig -0 -0 -> 0 -dqcms646 comparesig -0 -0.0 -> 0 -dqcms647 comparesig -0 0.0 -> 0 -dqcms648 comparesig 0.0 0 -> 0 -dqcms649 comparesig 0.0 -0 -> 0 -dqcms650 comparesig 0.0 -0.0 -> 0 -dqcms651 comparesig 0.0 0.0 -> 0 -dqcms652 comparesig -0.0 0 -> 0 -dqcms653 comparesig -0.0 -0 -> 0 -dqcms654 comparesig -0.0 -0.0 -> 0 -dqcms655 comparesig -0.0 0.0 -> 0 - -dqcms656 comparesig -0E1 0.0 -> 0 -dqcms657 comparesig -0E2 0.0 -> 0 -dqcms658 comparesig 0E1 0.0 -> 0 -dqcms659 comparesig 0E2 0.0 -> 0 -dqcms660 comparesig -0E1 0 -> 0 -dqcms661 comparesig -0E2 0 -> 0 -dqcms662 comparesig 0E1 0 -> 0 -dqcms663 comparesig 0E2 0 -> 0 -dqcms664 comparesig -0E1 -0E1 -> 0 -dqcms665 comparesig -0E2 -0E1 -> 0 -dqcms666 comparesig 0E1 -0E1 -> 0 -dqcms667 comparesig 0E2 -0E1 -> 0 -dqcms668 comparesig -0E1 -0E2 -> 0 -dqcms669 comparesig -0E2 -0E2 -> 0 -dqcms670 comparesig 0E1 -0E2 -> 0 -dqcms671 comparesig 0E2 -0E2 -> 0 -dqcms672 comparesig -0E1 0E1 -> 0 -dqcms673 comparesig -0E2 0E1 -> 0 -dqcms674 comparesig 0E1 0E1 -> 0 -dqcms675 comparesig 0E2 0E1 -> 0 -dqcms676 comparesig -0E1 0E2 -> 0 -dqcms677 comparesig -0E2 0E2 -> 0 -dqcms678 comparesig 0E1 0E2 -> 0 -dqcms679 comparesig 0E2 0E2 -> 0 - --- trailing zeros; unit-y -dqcms680 comparesig 12 12 -> 0 -dqcms681 comparesig 12 12.0 -> 0 -dqcms682 comparesig 12 12.00 -> 0 -dqcms683 comparesig 12 12.000 -> 0 -dqcms684 comparesig 12 12.0000 -> 0 -dqcms685 comparesig 12 12.00000 -> 0 -dqcms686 comparesig 12 12.000000 -> 0 -dqcms687 comparesig 12 12.0000000 -> 0 -dqcms688 comparesig 12 12.00000000 -> 0 -dqcms689 comparesig 12 12.000000000 -> 0 -dqcms690 comparesig 12 12 -> 0 -dqcms691 comparesig 12.0 12 -> 0 -dqcms692 comparesig 12.00 12 -> 0 -dqcms693 comparesig 12.000 12 -> 0 -dqcms694 comparesig 12.0000 12 -> 0 -dqcms695 comparesig 12.00000 12 -> 0 -dqcms696 comparesig 12.000000 12 -> 0 -dqcms697 comparesig 12.0000000 12 -> 0 -dqcms698 comparesig 12.00000000 12 -> 0 -dqcms699 comparesig 12.000000000 12 -> 0 - --- first, second, & last digit -dqcms700 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1 -dqcms701 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0 -dqcms702 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1 -dqcms703 comparesig 1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1 -dqcms704 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0 -dqcms705 comparesig 1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1 -dqcms706 comparesig 1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1 -dqcms707 comparesig 1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0 -dqcms708 comparesig 1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1 - --- miscellaneous -dqcms721 comparesig 12345678000 1 -> 1 -dqcms722 comparesig 1 12345678000 -> -1 -dqcms723 comparesig 1234567800 1 -> 1 -dqcms724 comparesig 1 1234567800 -> -1 -dqcms725 comparesig 1234567890 1 -> 1 -dqcms726 comparesig 1 1234567890 -> -1 -dqcms727 comparesig 1234567891 1 -> 1 -dqcms728 comparesig 1 1234567891 -> -1 -dqcms729 comparesig 12345678901 1 -> 1 -dqcms730 comparesig 1 12345678901 -> -1 -dqcms731 comparesig 1234567896 1 -> 1 -dqcms732 comparesig 1 1234567896 -> -1 - --- residue cases at lower precision -dqcms740 comparesig 1 0.9999999 -> 1 -dqcms741 comparesig 1 0.999999 -> 1 -dqcms742 comparesig 1 0.99999 -> 1 -dqcms743 comparesig 1 1.0000 -> 0 -dqcms744 comparesig 1 1.00001 -> -1 -dqcms745 comparesig 1 1.000001 -> -1 -dqcms746 comparesig 1 1.0000001 -> -1 -dqcms750 comparesig 0.9999999 1 -> -1 -dqcms751 comparesig 0.999999 1 -> -1 -dqcms752 comparesig 0.99999 1 -> -1 -dqcms753 comparesig 1.0000 1 -> 0 -dqcms754 comparesig 1.00001 1 -> 1 -dqcms755 comparesig 1.000001 1 -> 1 -dqcms756 comparesig 1.0000001 1 -> 1 - --- Specials -dqcms780 comparesig Inf -Inf -> 1 -dqcms781 comparesig Inf -1000 -> 1 -dqcms782 comparesig Inf -1 -> 1 -dqcms783 comparesig Inf -0 -> 1 -dqcms784 comparesig Inf 0 -> 1 -dqcms785 comparesig Inf 1 -> 1 -dqcms786 comparesig Inf 1000 -> 1 -dqcms787 comparesig Inf Inf -> 0 -dqcms788 comparesig -1000 Inf -> -1 -dqcms789 comparesig -Inf Inf -> -1 -dqcms790 comparesig -1 Inf -> -1 -dqcms791 comparesig -0 Inf -> -1 -dqcms792 comparesig 0 Inf -> -1 -dqcms793 comparesig 1 Inf -> -1 -dqcms794 comparesig 1000 Inf -> -1 -dqcms795 comparesig Inf Inf -> 0 - -dqcms800 comparesig -Inf -Inf -> 0 -dqcms801 comparesig -Inf -1000 -> -1 -dqcms802 comparesig -Inf -1 -> -1 -dqcms803 comparesig -Inf -0 -> -1 -dqcms804 comparesig -Inf 0 -> -1 -dqcms805 comparesig -Inf 1 -> -1 -dqcms806 comparesig -Inf 1000 -> -1 -dqcms807 comparesig -Inf Inf -> -1 -dqcms808 comparesig -Inf -Inf -> 0 -dqcms809 comparesig -1000 -Inf -> 1 -dqcms810 comparesig -1 -Inf -> 1 -dqcms811 comparesig -0 -Inf -> 1 -dqcms812 comparesig 0 -Inf -> 1 -dqcms813 comparesig 1 -Inf -> 1 -dqcms814 comparesig 1000 -Inf -> 1 -dqcms815 comparesig Inf -Inf -> 1 - -dqcms821 comparesig NaN -Inf -> NaN Invalid_operation -dqcms822 comparesig NaN -1000 -> NaN Invalid_operation -dqcms823 comparesig NaN -1 -> NaN Invalid_operation -dqcms824 comparesig NaN -0 -> NaN Invalid_operation -dqcms825 comparesig NaN 0 -> NaN Invalid_operation -dqcms826 comparesig NaN 1 -> NaN Invalid_operation -dqcms827 comparesig NaN 1000 -> NaN Invalid_operation -dqcms828 comparesig NaN Inf -> NaN Invalid_operation -dqcms829 comparesig NaN NaN -> NaN Invalid_operation -dqcms830 comparesig -Inf NaN -> NaN Invalid_operation -dqcms831 comparesig -1000 NaN -> NaN Invalid_operation -dqcms832 comparesig -1 NaN -> NaN Invalid_operation -dqcms833 comparesig -0 NaN -> NaN Invalid_operation -dqcms834 comparesig 0 NaN -> NaN Invalid_operation -dqcms835 comparesig 1 NaN -> NaN Invalid_operation -dqcms836 comparesig 1000 NaN -> NaN Invalid_operation -dqcms837 comparesig Inf NaN -> NaN Invalid_operation -dqcms838 comparesig -NaN -NaN -> -NaN Invalid_operation -dqcms839 comparesig +NaN -NaN -> NaN Invalid_operation -dqcms840 comparesig -NaN +NaN -> -NaN Invalid_operation - -dqcms841 comparesig sNaN -Inf -> NaN Invalid_operation -dqcms842 comparesig sNaN -1000 -> NaN Invalid_operation -dqcms843 comparesig sNaN -1 -> NaN Invalid_operation -dqcms844 comparesig sNaN -0 -> NaN Invalid_operation -dqcms845 comparesig sNaN 0 -> NaN Invalid_operation -dqcms846 comparesig sNaN 1 -> NaN Invalid_operation -dqcms847 comparesig sNaN 1000 -> NaN Invalid_operation -dqcms848 comparesig sNaN NaN -> NaN Invalid_operation -dqcms849 comparesig sNaN sNaN -> NaN Invalid_operation -dqcms850 comparesig NaN sNaN -> NaN Invalid_operation -dqcms851 comparesig -Inf sNaN -> NaN Invalid_operation -dqcms852 comparesig -1000 sNaN -> NaN Invalid_operation -dqcms853 comparesig -1 sNaN -> NaN Invalid_operation -dqcms854 comparesig -0 sNaN -> NaN Invalid_operation -dqcms855 comparesig 0 sNaN -> NaN Invalid_operation -dqcms856 comparesig 1 sNaN -> NaN Invalid_operation -dqcms857 comparesig 1000 sNaN -> NaN Invalid_operation -dqcms858 comparesig Inf sNaN -> NaN Invalid_operation -dqcms859 comparesig NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqcms860 comparesig NaN9 -Inf -> NaN9 Invalid_operation -dqcms861 comparesig NaN8 999 -> NaN8 Invalid_operation -dqcms862 comparesig NaN77 Inf -> NaN77 Invalid_operation -dqcms863 comparesig -NaN67 NaN5 -> -NaN67 Invalid_operation -dqcms864 comparesig -Inf -NaN4 -> -NaN4 Invalid_operation -dqcms865 comparesig -999 -NaN33 -> -NaN33 Invalid_operation -dqcms866 comparesig Inf NaN2 -> NaN2 Invalid_operation -dqcms867 comparesig -NaN41 -NaN42 -> -NaN41 Invalid_operation -dqcms868 comparesig +NaN41 -NaN42 -> NaN41 Invalid_operation -dqcms869 comparesig -NaN41 +NaN42 -> -NaN41 Invalid_operation -dqcms870 comparesig +NaN41 +NaN42 -> NaN41 Invalid_operation - -dqcms871 comparesig -sNaN99 -Inf -> -NaN99 Invalid_operation -dqcms872 comparesig sNaN98 -11 -> NaN98 Invalid_operation -dqcms873 comparesig sNaN97 NaN -> NaN97 Invalid_operation -dqcms874 comparesig sNaN16 sNaN94 -> NaN16 Invalid_operation -dqcms875 comparesig NaN85 sNaN83 -> NaN83 Invalid_operation -dqcms876 comparesig -Inf sNaN92 -> NaN92 Invalid_operation -dqcms877 comparesig 088 sNaN81 -> NaN81 Invalid_operation -dqcms878 comparesig Inf sNaN90 -> NaN90 Invalid_operation -dqcms879 comparesig NaN -sNaN89 -> -NaN89 Invalid_operation - --- wide range -dqcms880 comparesig +1.23456789012345E-0 9E+6144 -> -1 -dqcms881 comparesig 9E+6144 +1.23456789012345E-0 -> 1 -dqcms882 comparesig +0.100 9E-6143 -> 1 -dqcms883 comparesig 9E-6143 +0.100 -> -1 -dqcms885 comparesig -1.23456789012345E-0 9E+6144 -> -1 -dqcms886 comparesig 9E+6144 -1.23456789012345E-0 -> 1 -dqcms887 comparesig -0.100 9E-6143 -> -1 -dqcms888 comparesig 9E-6143 -0.100 -> 1 - --- signs -dqcms901 comparesig 1e+77 1e+11 -> 1 -dqcms902 comparesig 1e+77 -1e+11 -> 1 -dqcms903 comparesig -1e+77 1e+11 -> -1 -dqcms904 comparesig -1e+77 -1e+11 -> -1 -dqcms905 comparesig 1e-77 1e-11 -> -1 -dqcms906 comparesig 1e-77 -1e-11 -> 1 -dqcms907 comparesig -1e-77 1e-11 -> -1 -dqcms908 comparesig -1e-77 -1e-11 -> 1 - --- Null tests -dqcms990 comparesig 10 # -> NaN Invalid_operation -dqcms991 comparesig # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqCompareSig.decTest -- decQuad comparison; all NaNs signal -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqcms001 comparesig -2 -2 -> 0 +dqcms002 comparesig -2 -1 -> -1 +dqcms003 comparesig -2 0 -> -1 +dqcms004 comparesig -2 1 -> -1 +dqcms005 comparesig -2 2 -> -1 +dqcms006 comparesig -1 -2 -> 1 +dqcms007 comparesig -1 -1 -> 0 +dqcms008 comparesig -1 0 -> -1 +dqcms009 comparesig -1 1 -> -1 +dqcms010 comparesig -1 2 -> -1 +dqcms011 comparesig 0 -2 -> 1 +dqcms012 comparesig 0 -1 -> 1 +dqcms013 comparesig 0 0 -> 0 +dqcms014 comparesig 0 1 -> -1 +dqcms015 comparesig 0 2 -> -1 +dqcms016 comparesig 1 -2 -> 1 +dqcms017 comparesig 1 -1 -> 1 +dqcms018 comparesig 1 0 -> 1 +dqcms019 comparesig 1 1 -> 0 +dqcms020 comparesig 1 2 -> -1 +dqcms021 comparesig 2 -2 -> 1 +dqcms022 comparesig 2 -1 -> 1 +dqcms023 comparesig 2 0 -> 1 +dqcms025 comparesig 2 1 -> 1 +dqcms026 comparesig 2 2 -> 0 + +dqcms031 comparesig -20 -20 -> 0 +dqcms032 comparesig -20 -10 -> -1 +dqcms033 comparesig -20 00 -> -1 +dqcms034 comparesig -20 10 -> -1 +dqcms035 comparesig -20 20 -> -1 +dqcms036 comparesig -10 -20 -> 1 +dqcms037 comparesig -10 -10 -> 0 +dqcms038 comparesig -10 00 -> -1 +dqcms039 comparesig -10 10 -> -1 +dqcms040 comparesig -10 20 -> -1 +dqcms041 comparesig 00 -20 -> 1 +dqcms042 comparesig 00 -10 -> 1 +dqcms043 comparesig 00 00 -> 0 +dqcms044 comparesig 00 10 -> -1 +dqcms045 comparesig 00 20 -> -1 +dqcms046 comparesig 10 -20 -> 1 +dqcms047 comparesig 10 -10 -> 1 +dqcms048 comparesig 10 00 -> 1 +dqcms049 comparesig 10 10 -> 0 +dqcms050 comparesig 10 20 -> -1 +dqcms051 comparesig 20 -20 -> 1 +dqcms052 comparesig 20 -10 -> 1 +dqcms053 comparesig 20 00 -> 1 +dqcms055 comparesig 20 10 -> 1 +dqcms056 comparesig 20 20 -> 0 + +dqcms061 comparesig -2.0 -2.0 -> 0 +dqcms062 comparesig -2.0 -1.0 -> -1 +dqcms063 comparesig -2.0 0.0 -> -1 +dqcms064 comparesig -2.0 1.0 -> -1 +dqcms065 comparesig -2.0 2.0 -> -1 +dqcms066 comparesig -1.0 -2.0 -> 1 +dqcms067 comparesig -1.0 -1.0 -> 0 +dqcms068 comparesig -1.0 0.0 -> -1 +dqcms069 comparesig -1.0 1.0 -> -1 +dqcms070 comparesig -1.0 2.0 -> -1 +dqcms071 comparesig 0.0 -2.0 -> 1 +dqcms072 comparesig 0.0 -1.0 -> 1 +dqcms073 comparesig 0.0 0.0 -> 0 +dqcms074 comparesig 0.0 1.0 -> -1 +dqcms075 comparesig 0.0 2.0 -> -1 +dqcms076 comparesig 1.0 -2.0 -> 1 +dqcms077 comparesig 1.0 -1.0 -> 1 +dqcms078 comparesig 1.0 0.0 -> 1 +dqcms079 comparesig 1.0 1.0 -> 0 +dqcms080 comparesig 1.0 2.0 -> -1 +dqcms081 comparesig 2.0 -2.0 -> 1 +dqcms082 comparesig 2.0 -1.0 -> 1 +dqcms083 comparesig 2.0 0.0 -> 1 +dqcms085 comparesig 2.0 1.0 -> 1 +dqcms086 comparesig 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +dqcms090 comparesig 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 0 +dqcms091 comparesig -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> -1 +dqcms092 comparesig 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1 +dqcms093 comparesig -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0 + +-- some differing length/exponent cases +dqcms100 comparesig 7.0 7.0 -> 0 +dqcms101 comparesig 7.0 7 -> 0 +dqcms102 comparesig 7 7.0 -> 0 +dqcms103 comparesig 7E+0 7.0 -> 0 +dqcms104 comparesig 70E-1 7.0 -> 0 +dqcms105 comparesig 0.7E+1 7 -> 0 +dqcms106 comparesig 70E-1 7 -> 0 +dqcms107 comparesig 7.0 7E+0 -> 0 +dqcms108 comparesig 7.0 70E-1 -> 0 +dqcms109 comparesig 7 0.7E+1 -> 0 +dqcms110 comparesig 7 70E-1 -> 0 + +dqcms120 comparesig 8.0 7.0 -> 1 +dqcms121 comparesig 8.0 7 -> 1 +dqcms122 comparesig 8 7.0 -> 1 +dqcms123 comparesig 8E+0 7.0 -> 1 +dqcms124 comparesig 80E-1 7.0 -> 1 +dqcms125 comparesig 0.8E+1 7 -> 1 +dqcms126 comparesig 80E-1 7 -> 1 +dqcms127 comparesig 8.0 7E+0 -> 1 +dqcms128 comparesig 8.0 70E-1 -> 1 +dqcms129 comparesig 8 0.7E+1 -> 1 +dqcms130 comparesig 8 70E-1 -> 1 + +dqcms140 comparesig 8.0 9.0 -> -1 +dqcms141 comparesig 8.0 9 -> -1 +dqcms142 comparesig 8 9.0 -> -1 +dqcms143 comparesig 8E+0 9.0 -> -1 +dqcms144 comparesig 80E-1 9.0 -> -1 +dqcms145 comparesig 0.8E+1 9 -> -1 +dqcms146 comparesig 80E-1 9 -> -1 +dqcms147 comparesig 8.0 9E+0 -> -1 +dqcms148 comparesig 8.0 90E-1 -> -1 +dqcms149 comparesig 8 0.9E+1 -> -1 +dqcms150 comparesig 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +dqcms200 comparesig -7.0 7.0 -> -1 +dqcms201 comparesig -7.0 7 -> -1 +dqcms202 comparesig -7 7.0 -> -1 +dqcms203 comparesig -7E+0 7.0 -> -1 +dqcms204 comparesig -70E-1 7.0 -> -1 +dqcms205 comparesig -0.7E+1 7 -> -1 +dqcms206 comparesig -70E-1 7 -> -1 +dqcms207 comparesig -7.0 7E+0 -> -1 +dqcms208 comparesig -7.0 70E-1 -> -1 +dqcms209 comparesig -7 0.7E+1 -> -1 +dqcms210 comparesig -7 70E-1 -> -1 + +dqcms220 comparesig -8.0 7.0 -> -1 +dqcms221 comparesig -8.0 7 -> -1 +dqcms222 comparesig -8 7.0 -> -1 +dqcms223 comparesig -8E+0 7.0 -> -1 +dqcms224 comparesig -80E-1 7.0 -> -1 +dqcms225 comparesig -0.8E+1 7 -> -1 +dqcms226 comparesig -80E-1 7 -> -1 +dqcms227 comparesig -8.0 7E+0 -> -1 +dqcms228 comparesig -8.0 70E-1 -> -1 +dqcms229 comparesig -8 0.7E+1 -> -1 +dqcms230 comparesig -8 70E-1 -> -1 + +dqcms240 comparesig -8.0 9.0 -> -1 +dqcms241 comparesig -8.0 9 -> -1 +dqcms242 comparesig -8 9.0 -> -1 +dqcms243 comparesig -8E+0 9.0 -> -1 +dqcms244 comparesig -80E-1 9.0 -> -1 +dqcms245 comparesig -0.8E+1 9 -> -1 +dqcms246 comparesig -80E-1 9 -> -1 +dqcms247 comparesig -8.0 9E+0 -> -1 +dqcms248 comparesig -8.0 90E-1 -> -1 +dqcms249 comparesig -8 0.9E+1 -> -1 +dqcms250 comparesig -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +dqcms300 comparesig 7.0 -7.0 -> 1 +dqcms301 comparesig 7.0 -7 -> 1 +dqcms302 comparesig 7 -7.0 -> 1 +dqcms303 comparesig 7E+0 -7.0 -> 1 +dqcms304 comparesig 70E-1 -7.0 -> 1 +dqcms305 comparesig .7E+1 -7 -> 1 +dqcms306 comparesig 70E-1 -7 -> 1 +dqcms307 comparesig 7.0 -7E+0 -> 1 +dqcms308 comparesig 7.0 -70E-1 -> 1 +dqcms309 comparesig 7 -.7E+1 -> 1 +dqcms310 comparesig 7 -70E-1 -> 1 + +dqcms320 comparesig 8.0 -7.0 -> 1 +dqcms321 comparesig 8.0 -7 -> 1 +dqcms322 comparesig 8 -7.0 -> 1 +dqcms323 comparesig 8E+0 -7.0 -> 1 +dqcms324 comparesig 80E-1 -7.0 -> 1 +dqcms325 comparesig .8E+1 -7 -> 1 +dqcms326 comparesig 80E-1 -7 -> 1 +dqcms327 comparesig 8.0 -7E+0 -> 1 +dqcms328 comparesig 8.0 -70E-1 -> 1 +dqcms329 comparesig 8 -.7E+1 -> 1 +dqcms330 comparesig 8 -70E-1 -> 1 + +dqcms340 comparesig 8.0 -9.0 -> 1 +dqcms341 comparesig 8.0 -9 -> 1 +dqcms342 comparesig 8 -9.0 -> 1 +dqcms343 comparesig 8E+0 -9.0 -> 1 +dqcms344 comparesig 80E-1 -9.0 -> 1 +dqcms345 comparesig .8E+1 -9 -> 1 +dqcms346 comparesig 80E-1 -9 -> 1 +dqcms347 comparesig 8.0 -9E+0 -> 1 +dqcms348 comparesig 8.0 -90E-1 -> 1 +dqcms349 comparesig 8 -.9E+1 -> 1 +dqcms350 comparesig 8 -90E-1 -> 1 + +-- and again, with sign changes -- .. +dqcms400 comparesig -7.0 -7.0 -> 0 +dqcms401 comparesig -7.0 -7 -> 0 +dqcms402 comparesig -7 -7.0 -> 0 +dqcms403 comparesig -7E+0 -7.0 -> 0 +dqcms404 comparesig -70E-1 -7.0 -> 0 +dqcms405 comparesig -.7E+1 -7 -> 0 +dqcms406 comparesig -70E-1 -7 -> 0 +dqcms407 comparesig -7.0 -7E+0 -> 0 +dqcms408 comparesig -7.0 -70E-1 -> 0 +dqcms409 comparesig -7 -.7E+1 -> 0 +dqcms410 comparesig -7 -70E-1 -> 0 + +dqcms420 comparesig -8.0 -7.0 -> -1 +dqcms421 comparesig -8.0 -7 -> -1 +dqcms422 comparesig -8 -7.0 -> -1 +dqcms423 comparesig -8E+0 -7.0 -> -1 +dqcms424 comparesig -80E-1 -7.0 -> -1 +dqcms425 comparesig -.8E+1 -7 -> -1 +dqcms426 comparesig -80E-1 -7 -> -1 +dqcms427 comparesig -8.0 -7E+0 -> -1 +dqcms428 comparesig -8.0 -70E-1 -> -1 +dqcms429 comparesig -8 -.7E+1 -> -1 +dqcms430 comparesig -8 -70E-1 -> -1 + +dqcms440 comparesig -8.0 -9.0 -> 1 +dqcms441 comparesig -8.0 -9 -> 1 +dqcms442 comparesig -8 -9.0 -> 1 +dqcms443 comparesig -8E+0 -9.0 -> 1 +dqcms444 comparesig -80E-1 -9.0 -> 1 +dqcms445 comparesig -.8E+1 -9 -> 1 +dqcms446 comparesig -80E-1 -9 -> 1 +dqcms447 comparesig -8.0 -9E+0 -> 1 +dqcms448 comparesig -8.0 -90E-1 -> 1 +dqcms449 comparesig -8 -.9E+1 -> 1 +dqcms450 comparesig -8 -90E-1 -> 1 + + +-- testcases that subtract to lots of zeros at boundaries [pgr] +dqcms473 comparesig 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0 +dqcms474 comparesig 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0 +dqcms475 comparesig 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0 +dqcms476 comparesig 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0 +dqcms477 comparesig 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0 +dqcms478 comparesig 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0 +dqcms479 comparesig 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0 +dqcms480 comparesig 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0 +dqcms481 comparesig 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0 +dqcms482 comparesig 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0 +dqcms483 comparesig 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0 +dqcms487 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0 +dqcms488 comparesig 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0 +dqcms489 comparesig 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0 +dqcms490 comparesig 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0 +dqcms491 comparesig 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0 +dqcms492 comparesig 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0 +dqcms493 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0 +dqcms494 comparesig 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0 +dqcms495 comparesig 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0 +dqcms496 comparesig 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0 +dqcms497 comparesig 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0 + +-- wide-ranging, around precision; signs equal +dqcms500 comparesig 1 1E-15 -> 1 +dqcms501 comparesig 1 1E-14 -> 1 +dqcms502 comparesig 1 1E-13 -> 1 +dqcms503 comparesig 1 1E-12 -> 1 +dqcms504 comparesig 1 1E-11 -> 1 +dqcms505 comparesig 1 1E-10 -> 1 +dqcms506 comparesig 1 1E-9 -> 1 +dqcms507 comparesig 1 1E-8 -> 1 +dqcms508 comparesig 1 1E-7 -> 1 +dqcms509 comparesig 1 1E-6 -> 1 +dqcms510 comparesig 1 1E-5 -> 1 +dqcms511 comparesig 1 1E-4 -> 1 +dqcms512 comparesig 1 1E-3 -> 1 +dqcms513 comparesig 1 1E-2 -> 1 +dqcms514 comparesig 1 1E-1 -> 1 +dqcms515 comparesig 1 1E-0 -> 0 +dqcms516 comparesig 1 1E+1 -> -1 +dqcms517 comparesig 1 1E+2 -> -1 +dqcms518 comparesig 1 1E+3 -> -1 +dqcms519 comparesig 1 1E+4 -> -1 +dqcms521 comparesig 1 1E+5 -> -1 +dqcms522 comparesig 1 1E+6 -> -1 +dqcms523 comparesig 1 1E+7 -> -1 +dqcms524 comparesig 1 1E+8 -> -1 +dqcms525 comparesig 1 1E+9 -> -1 +dqcms526 comparesig 1 1E+10 -> -1 +dqcms527 comparesig 1 1E+11 -> -1 +dqcms528 comparesig 1 1E+12 -> -1 +dqcms529 comparesig 1 1E+13 -> -1 +dqcms530 comparesig 1 1E+14 -> -1 +dqcms531 comparesig 1 1E+15 -> -1 +-- LR swap +dqcms540 comparesig 1E-15 1 -> -1 +dqcms541 comparesig 1E-14 1 -> -1 +dqcms542 comparesig 1E-13 1 -> -1 +dqcms543 comparesig 1E-12 1 -> -1 +dqcms544 comparesig 1E-11 1 -> -1 +dqcms545 comparesig 1E-10 1 -> -1 +dqcms546 comparesig 1E-9 1 -> -1 +dqcms547 comparesig 1E-8 1 -> -1 +dqcms548 comparesig 1E-7 1 -> -1 +dqcms549 comparesig 1E-6 1 -> -1 +dqcms550 comparesig 1E-5 1 -> -1 +dqcms551 comparesig 1E-4 1 -> -1 +dqcms552 comparesig 1E-3 1 -> -1 +dqcms553 comparesig 1E-2 1 -> -1 +dqcms554 comparesig 1E-1 1 -> -1 +dqcms555 comparesig 1E-0 1 -> 0 +dqcms556 comparesig 1E+1 1 -> 1 +dqcms557 comparesig 1E+2 1 -> 1 +dqcms558 comparesig 1E+3 1 -> 1 +dqcms559 comparesig 1E+4 1 -> 1 +dqcms561 comparesig 1E+5 1 -> 1 +dqcms562 comparesig 1E+6 1 -> 1 +dqcms563 comparesig 1E+7 1 -> 1 +dqcms564 comparesig 1E+8 1 -> 1 +dqcms565 comparesig 1E+9 1 -> 1 +dqcms566 comparesig 1E+10 1 -> 1 +dqcms567 comparesig 1E+11 1 -> 1 +dqcms568 comparesig 1E+12 1 -> 1 +dqcms569 comparesig 1E+13 1 -> 1 +dqcms570 comparesig 1E+14 1 -> 1 +dqcms571 comparesig 1E+15 1 -> 1 +-- similar with a useful coefficient, one side only +dqcms580 comparesig 0.000000987654321 1E-15 -> 1 +dqcms581 comparesig 0.000000987654321 1E-14 -> 1 +dqcms582 comparesig 0.000000987654321 1E-13 -> 1 +dqcms583 comparesig 0.000000987654321 1E-12 -> 1 +dqcms584 comparesig 0.000000987654321 1E-11 -> 1 +dqcms585 comparesig 0.000000987654321 1E-10 -> 1 +dqcms586 comparesig 0.000000987654321 1E-9 -> 1 +dqcms587 comparesig 0.000000987654321 1E-8 -> 1 +dqcms588 comparesig 0.000000987654321 1E-7 -> 1 +dqcms589 comparesig 0.000000987654321 1E-6 -> -1 +dqcms590 comparesig 0.000000987654321 1E-5 -> -1 +dqcms591 comparesig 0.000000987654321 1E-4 -> -1 +dqcms592 comparesig 0.000000987654321 1E-3 -> -1 +dqcms593 comparesig 0.000000987654321 1E-2 -> -1 +dqcms594 comparesig 0.000000987654321 1E-1 -> -1 +dqcms595 comparesig 0.000000987654321 1E-0 -> -1 +dqcms596 comparesig 0.000000987654321 1E+1 -> -1 +dqcms597 comparesig 0.000000987654321 1E+2 -> -1 +dqcms598 comparesig 0.000000987654321 1E+3 -> -1 +dqcms599 comparesig 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +dqcms600 comparesig 12 12.2345 -> -1 +dqcms601 comparesig 12.0 12.2345 -> -1 +dqcms602 comparesig 12.00 12.2345 -> -1 +dqcms603 comparesig 12.000 12.2345 -> -1 +dqcms604 comparesig 12.0000 12.2345 -> -1 +dqcms605 comparesig 12.00000 12.2345 -> -1 +dqcms606 comparesig 12.000000 12.2345 -> -1 +dqcms607 comparesig 12.0000000 12.2345 -> -1 +dqcms608 comparesig 12.00000000 12.2345 -> -1 +dqcms609 comparesig 12.000000000 12.2345 -> -1 +dqcms610 comparesig 12.1234 12 -> 1 +dqcms611 comparesig 12.1234 12.0 -> 1 +dqcms612 comparesig 12.1234 12.00 -> 1 +dqcms613 comparesig 12.1234 12.000 -> 1 +dqcms614 comparesig 12.1234 12.0000 -> 1 +dqcms615 comparesig 12.1234 12.00000 -> 1 +dqcms616 comparesig 12.1234 12.000000 -> 1 +dqcms617 comparesig 12.1234 12.0000000 -> 1 +dqcms618 comparesig 12.1234 12.00000000 -> 1 +dqcms619 comparesig 12.1234 12.000000000 -> 1 +dqcms620 comparesig -12 -12.2345 -> 1 +dqcms621 comparesig -12.0 -12.2345 -> 1 +dqcms622 comparesig -12.00 -12.2345 -> 1 +dqcms623 comparesig -12.000 -12.2345 -> 1 +dqcms624 comparesig -12.0000 -12.2345 -> 1 +dqcms625 comparesig -12.00000 -12.2345 -> 1 +dqcms626 comparesig -12.000000 -12.2345 -> 1 +dqcms627 comparesig -12.0000000 -12.2345 -> 1 +dqcms628 comparesig -12.00000000 -12.2345 -> 1 +dqcms629 comparesig -12.000000000 -12.2345 -> 1 +dqcms630 comparesig -12.1234 -12 -> -1 +dqcms631 comparesig -12.1234 -12.0 -> -1 +dqcms632 comparesig -12.1234 -12.00 -> -1 +dqcms633 comparesig -12.1234 -12.000 -> -1 +dqcms634 comparesig -12.1234 -12.0000 -> -1 +dqcms635 comparesig -12.1234 -12.00000 -> -1 +dqcms636 comparesig -12.1234 -12.000000 -> -1 +dqcms637 comparesig -12.1234 -12.0000000 -> -1 +dqcms638 comparesig -12.1234 -12.00000000 -> -1 +dqcms639 comparesig -12.1234 -12.000000000 -> -1 + +-- extended zeros +dqcms640 comparesig 0 0 -> 0 +dqcms641 comparesig 0 -0 -> 0 +dqcms642 comparesig 0 -0.0 -> 0 +dqcms643 comparesig 0 0.0 -> 0 +dqcms644 comparesig -0 0 -> 0 +dqcms645 comparesig -0 -0 -> 0 +dqcms646 comparesig -0 -0.0 -> 0 +dqcms647 comparesig -0 0.0 -> 0 +dqcms648 comparesig 0.0 0 -> 0 +dqcms649 comparesig 0.0 -0 -> 0 +dqcms650 comparesig 0.0 -0.0 -> 0 +dqcms651 comparesig 0.0 0.0 -> 0 +dqcms652 comparesig -0.0 0 -> 0 +dqcms653 comparesig -0.0 -0 -> 0 +dqcms654 comparesig -0.0 -0.0 -> 0 +dqcms655 comparesig -0.0 0.0 -> 0 + +dqcms656 comparesig -0E1 0.0 -> 0 +dqcms657 comparesig -0E2 0.0 -> 0 +dqcms658 comparesig 0E1 0.0 -> 0 +dqcms659 comparesig 0E2 0.0 -> 0 +dqcms660 comparesig -0E1 0 -> 0 +dqcms661 comparesig -0E2 0 -> 0 +dqcms662 comparesig 0E1 0 -> 0 +dqcms663 comparesig 0E2 0 -> 0 +dqcms664 comparesig -0E1 -0E1 -> 0 +dqcms665 comparesig -0E2 -0E1 -> 0 +dqcms666 comparesig 0E1 -0E1 -> 0 +dqcms667 comparesig 0E2 -0E1 -> 0 +dqcms668 comparesig -0E1 -0E2 -> 0 +dqcms669 comparesig -0E2 -0E2 -> 0 +dqcms670 comparesig 0E1 -0E2 -> 0 +dqcms671 comparesig 0E2 -0E2 -> 0 +dqcms672 comparesig -0E1 0E1 -> 0 +dqcms673 comparesig -0E2 0E1 -> 0 +dqcms674 comparesig 0E1 0E1 -> 0 +dqcms675 comparesig 0E2 0E1 -> 0 +dqcms676 comparesig -0E1 0E2 -> 0 +dqcms677 comparesig -0E2 0E2 -> 0 +dqcms678 comparesig 0E1 0E2 -> 0 +dqcms679 comparesig 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +dqcms680 comparesig 12 12 -> 0 +dqcms681 comparesig 12 12.0 -> 0 +dqcms682 comparesig 12 12.00 -> 0 +dqcms683 comparesig 12 12.000 -> 0 +dqcms684 comparesig 12 12.0000 -> 0 +dqcms685 comparesig 12 12.00000 -> 0 +dqcms686 comparesig 12 12.000000 -> 0 +dqcms687 comparesig 12 12.0000000 -> 0 +dqcms688 comparesig 12 12.00000000 -> 0 +dqcms689 comparesig 12 12.000000000 -> 0 +dqcms690 comparesig 12 12 -> 0 +dqcms691 comparesig 12.0 12 -> 0 +dqcms692 comparesig 12.00 12 -> 0 +dqcms693 comparesig 12.000 12 -> 0 +dqcms694 comparesig 12.0000 12 -> 0 +dqcms695 comparesig 12.00000 12 -> 0 +dqcms696 comparesig 12.000000 12 -> 0 +dqcms697 comparesig 12.0000000 12 -> 0 +dqcms698 comparesig 12.00000000 12 -> 0 +dqcms699 comparesig 12.000000000 12 -> 0 + +-- first, second, & last digit +dqcms700 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1 +dqcms701 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0 +dqcms702 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1 +dqcms703 comparesig 1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1 +dqcms704 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0 +dqcms705 comparesig 1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1 +dqcms706 comparesig 1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1 +dqcms707 comparesig 1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0 +dqcms708 comparesig 1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1 + +-- miscellaneous +dqcms721 comparesig 12345678000 1 -> 1 +dqcms722 comparesig 1 12345678000 -> -1 +dqcms723 comparesig 1234567800 1 -> 1 +dqcms724 comparesig 1 1234567800 -> -1 +dqcms725 comparesig 1234567890 1 -> 1 +dqcms726 comparesig 1 1234567890 -> -1 +dqcms727 comparesig 1234567891 1 -> 1 +dqcms728 comparesig 1 1234567891 -> -1 +dqcms729 comparesig 12345678901 1 -> 1 +dqcms730 comparesig 1 12345678901 -> -1 +dqcms731 comparesig 1234567896 1 -> 1 +dqcms732 comparesig 1 1234567896 -> -1 + +-- residue cases at lower precision +dqcms740 comparesig 1 0.9999999 -> 1 +dqcms741 comparesig 1 0.999999 -> 1 +dqcms742 comparesig 1 0.99999 -> 1 +dqcms743 comparesig 1 1.0000 -> 0 +dqcms744 comparesig 1 1.00001 -> -1 +dqcms745 comparesig 1 1.000001 -> -1 +dqcms746 comparesig 1 1.0000001 -> -1 +dqcms750 comparesig 0.9999999 1 -> -1 +dqcms751 comparesig 0.999999 1 -> -1 +dqcms752 comparesig 0.99999 1 -> -1 +dqcms753 comparesig 1.0000 1 -> 0 +dqcms754 comparesig 1.00001 1 -> 1 +dqcms755 comparesig 1.000001 1 -> 1 +dqcms756 comparesig 1.0000001 1 -> 1 + +-- Specials +dqcms780 comparesig Inf -Inf -> 1 +dqcms781 comparesig Inf -1000 -> 1 +dqcms782 comparesig Inf -1 -> 1 +dqcms783 comparesig Inf -0 -> 1 +dqcms784 comparesig Inf 0 -> 1 +dqcms785 comparesig Inf 1 -> 1 +dqcms786 comparesig Inf 1000 -> 1 +dqcms787 comparesig Inf Inf -> 0 +dqcms788 comparesig -1000 Inf -> -1 +dqcms789 comparesig -Inf Inf -> -1 +dqcms790 comparesig -1 Inf -> -1 +dqcms791 comparesig -0 Inf -> -1 +dqcms792 comparesig 0 Inf -> -1 +dqcms793 comparesig 1 Inf -> -1 +dqcms794 comparesig 1000 Inf -> -1 +dqcms795 comparesig Inf Inf -> 0 + +dqcms800 comparesig -Inf -Inf -> 0 +dqcms801 comparesig -Inf -1000 -> -1 +dqcms802 comparesig -Inf -1 -> -1 +dqcms803 comparesig -Inf -0 -> -1 +dqcms804 comparesig -Inf 0 -> -1 +dqcms805 comparesig -Inf 1 -> -1 +dqcms806 comparesig -Inf 1000 -> -1 +dqcms807 comparesig -Inf Inf -> -1 +dqcms808 comparesig -Inf -Inf -> 0 +dqcms809 comparesig -1000 -Inf -> 1 +dqcms810 comparesig -1 -Inf -> 1 +dqcms811 comparesig -0 -Inf -> 1 +dqcms812 comparesig 0 -Inf -> 1 +dqcms813 comparesig 1 -Inf -> 1 +dqcms814 comparesig 1000 -Inf -> 1 +dqcms815 comparesig Inf -Inf -> 1 + +dqcms821 comparesig NaN -Inf -> NaN Invalid_operation +dqcms822 comparesig NaN -1000 -> NaN Invalid_operation +dqcms823 comparesig NaN -1 -> NaN Invalid_operation +dqcms824 comparesig NaN -0 -> NaN Invalid_operation +dqcms825 comparesig NaN 0 -> NaN Invalid_operation +dqcms826 comparesig NaN 1 -> NaN Invalid_operation +dqcms827 comparesig NaN 1000 -> NaN Invalid_operation +dqcms828 comparesig NaN Inf -> NaN Invalid_operation +dqcms829 comparesig NaN NaN -> NaN Invalid_operation +dqcms830 comparesig -Inf NaN -> NaN Invalid_operation +dqcms831 comparesig -1000 NaN -> NaN Invalid_operation +dqcms832 comparesig -1 NaN -> NaN Invalid_operation +dqcms833 comparesig -0 NaN -> NaN Invalid_operation +dqcms834 comparesig 0 NaN -> NaN Invalid_operation +dqcms835 comparesig 1 NaN -> NaN Invalid_operation +dqcms836 comparesig 1000 NaN -> NaN Invalid_operation +dqcms837 comparesig Inf NaN -> NaN Invalid_operation +dqcms838 comparesig -NaN -NaN -> -NaN Invalid_operation +dqcms839 comparesig +NaN -NaN -> NaN Invalid_operation +dqcms840 comparesig -NaN +NaN -> -NaN Invalid_operation + +dqcms841 comparesig sNaN -Inf -> NaN Invalid_operation +dqcms842 comparesig sNaN -1000 -> NaN Invalid_operation +dqcms843 comparesig sNaN -1 -> NaN Invalid_operation +dqcms844 comparesig sNaN -0 -> NaN Invalid_operation +dqcms845 comparesig sNaN 0 -> NaN Invalid_operation +dqcms846 comparesig sNaN 1 -> NaN Invalid_operation +dqcms847 comparesig sNaN 1000 -> NaN Invalid_operation +dqcms848 comparesig sNaN NaN -> NaN Invalid_operation +dqcms849 comparesig sNaN sNaN -> NaN Invalid_operation +dqcms850 comparesig NaN sNaN -> NaN Invalid_operation +dqcms851 comparesig -Inf sNaN -> NaN Invalid_operation +dqcms852 comparesig -1000 sNaN -> NaN Invalid_operation +dqcms853 comparesig -1 sNaN -> NaN Invalid_operation +dqcms854 comparesig -0 sNaN -> NaN Invalid_operation +dqcms855 comparesig 0 sNaN -> NaN Invalid_operation +dqcms856 comparesig 1 sNaN -> NaN Invalid_operation +dqcms857 comparesig 1000 sNaN -> NaN Invalid_operation +dqcms858 comparesig Inf sNaN -> NaN Invalid_operation +dqcms859 comparesig NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqcms860 comparesig NaN9 -Inf -> NaN9 Invalid_operation +dqcms861 comparesig NaN8 999 -> NaN8 Invalid_operation +dqcms862 comparesig NaN77 Inf -> NaN77 Invalid_operation +dqcms863 comparesig -NaN67 NaN5 -> -NaN67 Invalid_operation +dqcms864 comparesig -Inf -NaN4 -> -NaN4 Invalid_operation +dqcms865 comparesig -999 -NaN33 -> -NaN33 Invalid_operation +dqcms866 comparesig Inf NaN2 -> NaN2 Invalid_operation +dqcms867 comparesig -NaN41 -NaN42 -> -NaN41 Invalid_operation +dqcms868 comparesig +NaN41 -NaN42 -> NaN41 Invalid_operation +dqcms869 comparesig -NaN41 +NaN42 -> -NaN41 Invalid_operation +dqcms870 comparesig +NaN41 +NaN42 -> NaN41 Invalid_operation + +dqcms871 comparesig -sNaN99 -Inf -> -NaN99 Invalid_operation +dqcms872 comparesig sNaN98 -11 -> NaN98 Invalid_operation +dqcms873 comparesig sNaN97 NaN -> NaN97 Invalid_operation +dqcms874 comparesig sNaN16 sNaN94 -> NaN16 Invalid_operation +dqcms875 comparesig NaN85 sNaN83 -> NaN83 Invalid_operation +dqcms876 comparesig -Inf sNaN92 -> NaN92 Invalid_operation +dqcms877 comparesig 088 sNaN81 -> NaN81 Invalid_operation +dqcms878 comparesig Inf sNaN90 -> NaN90 Invalid_operation +dqcms879 comparesig NaN -sNaN89 -> -NaN89 Invalid_operation + +-- wide range +dqcms880 comparesig +1.23456789012345E-0 9E+6144 -> -1 +dqcms881 comparesig 9E+6144 +1.23456789012345E-0 -> 1 +dqcms882 comparesig +0.100 9E-6143 -> 1 +dqcms883 comparesig 9E-6143 +0.100 -> -1 +dqcms885 comparesig -1.23456789012345E-0 9E+6144 -> -1 +dqcms886 comparesig 9E+6144 -1.23456789012345E-0 -> 1 +dqcms887 comparesig -0.100 9E-6143 -> -1 +dqcms888 comparesig 9E-6143 -0.100 -> 1 + +-- signs +dqcms901 comparesig 1e+77 1e+11 -> 1 +dqcms902 comparesig 1e+77 -1e+11 -> 1 +dqcms903 comparesig -1e+77 1e+11 -> -1 +dqcms904 comparesig -1e+77 -1e+11 -> -1 +dqcms905 comparesig 1e-77 1e-11 -> -1 +dqcms906 comparesig 1e-77 -1e-11 -> 1 +dqcms907 comparesig -1e-77 1e-11 -> -1 +dqcms908 comparesig -1e-77 -1e-11 -> 1 + +-- Null tests +dqcms990 comparesig 10 # -> NaN Invalid_operation +dqcms991 comparesig # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqCompareTotal.decTest b/Lib/test/decimaltestdata/dqCompareTotal.decTest index bae3761..13701cc 100644 --- a/Lib/test/decimaltestdata/dqCompareTotal.decTest +++ b/Lib/test/decimaltestdata/dqCompareTotal.decTest @@ -1,706 +1,706 @@ ------------------------------------------------------------------------- --- dqCompareTotal.decTest -- decQuad comparison using total ordering -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). --- Similarly, comparetotal will have some radically different paths --- than compare. - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqcot001 comparetotal -2 -2 -> 0 -dqcot002 comparetotal -2 -1 -> -1 -dqcot003 comparetotal -2 0 -> -1 -dqcot004 comparetotal -2 1 -> -1 -dqcot005 comparetotal -2 2 -> -1 -dqcot006 comparetotal -1 -2 -> 1 -dqcot007 comparetotal -1 -1 -> 0 -dqcot008 comparetotal -1 0 -> -1 -dqcot009 comparetotal -1 1 -> -1 -dqcot010 comparetotal -1 2 -> -1 -dqcot011 comparetotal 0 -2 -> 1 -dqcot012 comparetotal 0 -1 -> 1 -dqcot013 comparetotal 0 0 -> 0 -dqcot014 comparetotal 0 1 -> -1 -dqcot015 comparetotal 0 2 -> -1 -dqcot016 comparetotal 1 -2 -> 1 -dqcot017 comparetotal 1 -1 -> 1 -dqcot018 comparetotal 1 0 -> 1 -dqcot019 comparetotal 1 1 -> 0 -dqcot020 comparetotal 1 2 -> -1 -dqcot021 comparetotal 2 -2 -> 1 -dqcot022 comparetotal 2 -1 -> 1 -dqcot023 comparetotal 2 0 -> 1 -dqcot025 comparetotal 2 1 -> 1 -dqcot026 comparetotal 2 2 -> 0 - -dqcot031 comparetotal -20 -20 -> 0 -dqcot032 comparetotal -20 -10 -> -1 -dqcot033 comparetotal -20 00 -> -1 -dqcot034 comparetotal -20 10 -> -1 -dqcot035 comparetotal -20 20 -> -1 -dqcot036 comparetotal -10 -20 -> 1 -dqcot037 comparetotal -10 -10 -> 0 -dqcot038 comparetotal -10 00 -> -1 -dqcot039 comparetotal -10 10 -> -1 -dqcot040 comparetotal -10 20 -> -1 -dqcot041 comparetotal 00 -20 -> 1 -dqcot042 comparetotal 00 -10 -> 1 -dqcot043 comparetotal 00 00 -> 0 -dqcot044 comparetotal 00 10 -> -1 -dqcot045 comparetotal 00 20 -> -1 -dqcot046 comparetotal 10 -20 -> 1 -dqcot047 comparetotal 10 -10 -> 1 -dqcot048 comparetotal 10 00 -> 1 -dqcot049 comparetotal 10 10 -> 0 -dqcot050 comparetotal 10 20 -> -1 -dqcot051 comparetotal 20 -20 -> 1 -dqcot052 comparetotal 20 -10 -> 1 -dqcot053 comparetotal 20 00 -> 1 -dqcot055 comparetotal 20 10 -> 1 -dqcot056 comparetotal 20 20 -> 0 - -dqcot061 comparetotal -2.0 -2.0 -> 0 -dqcot062 comparetotal -2.0 -1.0 -> -1 -dqcot063 comparetotal -2.0 0.0 -> -1 -dqcot064 comparetotal -2.0 1.0 -> -1 -dqcot065 comparetotal -2.0 2.0 -> -1 -dqcot066 comparetotal -1.0 -2.0 -> 1 -dqcot067 comparetotal -1.0 -1.0 -> 0 -dqcot068 comparetotal -1.0 0.0 -> -1 -dqcot069 comparetotal -1.0 1.0 -> -1 -dqcot070 comparetotal -1.0 2.0 -> -1 -dqcot071 comparetotal 0.0 -2.0 -> 1 -dqcot072 comparetotal 0.0 -1.0 -> 1 -dqcot073 comparetotal 0.0 0.0 -> 0 -dqcot074 comparetotal 0.0 1.0 -> -1 -dqcot075 comparetotal 0.0 2.0 -> -1 -dqcot076 comparetotal 1.0 -2.0 -> 1 -dqcot077 comparetotal 1.0 -1.0 -> 1 -dqcot078 comparetotal 1.0 0.0 -> 1 -dqcot079 comparetotal 1.0 1.0 -> 0 -dqcot080 comparetotal 1.0 2.0 -> -1 -dqcot081 comparetotal 2.0 -2.0 -> 1 -dqcot082 comparetotal 2.0 -1.0 -> 1 -dqcot083 comparetotal 2.0 0.0 -> 1 -dqcot085 comparetotal 2.0 1.0 -> 1 -dqcot086 comparetotal 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -dqcot090 comparetotal 9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0 -dqcot091 comparetotal -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> -1 -dqcot092 comparetotal 9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 1 -dqcot093 comparetotal -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0 - --- some differing length/exponent cases --- in this first group, compare would compare all equal -dqcot100 comparetotal 7.0 7.0 -> 0 -dqcot101 comparetotal 7.0 7 -> -1 -dqcot102 comparetotal 7 7.0 -> 1 -dqcot103 comparetotal 7E+0 7.0 -> 1 -dqcot104 comparetotal 70E-1 7.0 -> 0 -dqcot105 comparetotal 0.7E+1 7 -> 0 -dqcot106 comparetotal 70E-1 7 -> -1 -dqcot107 comparetotal 7.0 7E+0 -> -1 -dqcot108 comparetotal 7.0 70E-1 -> 0 -dqcot109 comparetotal 7 0.7E+1 -> 0 -dqcot110 comparetotal 7 70E-1 -> 1 - -dqcot120 comparetotal 8.0 7.0 -> 1 -dqcot121 comparetotal 8.0 7 -> 1 -dqcot122 comparetotal 8 7.0 -> 1 -dqcot123 comparetotal 8E+0 7.0 -> 1 -dqcot124 comparetotal 80E-1 7.0 -> 1 -dqcot125 comparetotal 0.8E+1 7 -> 1 -dqcot126 comparetotal 80E-1 7 -> 1 -dqcot127 comparetotal 8.0 7E+0 -> 1 -dqcot128 comparetotal 8.0 70E-1 -> 1 -dqcot129 comparetotal 8 0.7E+1 -> 1 -dqcot130 comparetotal 8 70E-1 -> 1 - -dqcot140 comparetotal 8.0 9.0 -> -1 -dqcot141 comparetotal 8.0 9 -> -1 -dqcot142 comparetotal 8 9.0 -> -1 -dqcot143 comparetotal 8E+0 9.0 -> -1 -dqcot144 comparetotal 80E-1 9.0 -> -1 -dqcot145 comparetotal 0.8E+1 9 -> -1 -dqcot146 comparetotal 80E-1 9 -> -1 -dqcot147 comparetotal 8.0 9E+0 -> -1 -dqcot148 comparetotal 8.0 90E-1 -> -1 -dqcot149 comparetotal 8 0.9E+1 -> -1 -dqcot150 comparetotal 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -dqcot200 comparetotal -7.0 7.0 -> -1 -dqcot201 comparetotal -7.0 7 -> -1 -dqcot202 comparetotal -7 7.0 -> -1 -dqcot203 comparetotal -7E+0 7.0 -> -1 -dqcot204 comparetotal -70E-1 7.0 -> -1 -dqcot205 comparetotal -0.7E+1 7 -> -1 -dqcot206 comparetotal -70E-1 7 -> -1 -dqcot207 comparetotal -7.0 7E+0 -> -1 -dqcot208 comparetotal -7.0 70E-1 -> -1 -dqcot209 comparetotal -7 0.7E+1 -> -1 -dqcot210 comparetotal -7 70E-1 -> -1 - -dqcot220 comparetotal -8.0 7.0 -> -1 -dqcot221 comparetotal -8.0 7 -> -1 -dqcot222 comparetotal -8 7.0 -> -1 -dqcot223 comparetotal -8E+0 7.0 -> -1 -dqcot224 comparetotal -80E-1 7.0 -> -1 -dqcot225 comparetotal -0.8E+1 7 -> -1 -dqcot226 comparetotal -80E-1 7 -> -1 -dqcot227 comparetotal -8.0 7E+0 -> -1 -dqcot228 comparetotal -8.0 70E-1 -> -1 -dqcot229 comparetotal -8 0.7E+1 -> -1 -dqcot230 comparetotal -8 70E-1 -> -1 - -dqcot240 comparetotal -8.0 9.0 -> -1 -dqcot241 comparetotal -8.0 9 -> -1 -dqcot242 comparetotal -8 9.0 -> -1 -dqcot243 comparetotal -8E+0 9.0 -> -1 -dqcot244 comparetotal -80E-1 9.0 -> -1 -dqcot245 comparetotal -0.8E+1 9 -> -1 -dqcot246 comparetotal -80E-1 9 -> -1 -dqcot247 comparetotal -8.0 9E+0 -> -1 -dqcot248 comparetotal -8.0 90E-1 -> -1 -dqcot249 comparetotal -8 0.9E+1 -> -1 -dqcot250 comparetotal -8 90E-1 -> -1 - --- and again, with sign changes +- .. -dqcot300 comparetotal 7.0 -7.0 -> 1 -dqcot301 comparetotal 7.0 -7 -> 1 -dqcot302 comparetotal 7 -7.0 -> 1 -dqcot303 comparetotal 7E+0 -7.0 -> 1 -dqcot304 comparetotal 70E-1 -7.0 -> 1 -dqcot305 comparetotal .7E+1 -7 -> 1 -dqcot306 comparetotal 70E-1 -7 -> 1 -dqcot307 comparetotal 7.0 -7E+0 -> 1 -dqcot308 comparetotal 7.0 -70E-1 -> 1 -dqcot309 comparetotal 7 -.7E+1 -> 1 -dqcot310 comparetotal 7 -70E-1 -> 1 - -dqcot320 comparetotal 8.0 -7.0 -> 1 -dqcot321 comparetotal 8.0 -7 -> 1 -dqcot322 comparetotal 8 -7.0 -> 1 -dqcot323 comparetotal 8E+0 -7.0 -> 1 -dqcot324 comparetotal 80E-1 -7.0 -> 1 -dqcot325 comparetotal .8E+1 -7 -> 1 -dqcot326 comparetotal 80E-1 -7 -> 1 -dqcot327 comparetotal 8.0 -7E+0 -> 1 -dqcot328 comparetotal 8.0 -70E-1 -> 1 -dqcot329 comparetotal 8 -.7E+1 -> 1 -dqcot330 comparetotal 8 -70E-1 -> 1 - -dqcot340 comparetotal 8.0 -9.0 -> 1 -dqcot341 comparetotal 8.0 -9 -> 1 -dqcot342 comparetotal 8 -9.0 -> 1 -dqcot343 comparetotal 8E+0 -9.0 -> 1 -dqcot344 comparetotal 80E-1 -9.0 -> 1 -dqcot345 comparetotal .8E+1 -9 -> 1 -dqcot346 comparetotal 80E-1 -9 -> 1 -dqcot347 comparetotal 8.0 -9E+0 -> 1 -dqcot348 comparetotal 8.0 -90E-1 -> 1 -dqcot349 comparetotal 8 -.9E+1 -> 1 -dqcot350 comparetotal 8 -90E-1 -> 1 - --- and again, with sign changes -- .. -dqcot400 comparetotal -7.0 -7.0 -> 0 -dqcot401 comparetotal -7.0 -7 -> 1 -dqcot402 comparetotal -7 -7.0 -> -1 -dqcot403 comparetotal -7E+0 -7.0 -> -1 -dqcot404 comparetotal -70E-1 -7.0 -> 0 -dqcot405 comparetotal -.7E+1 -7 -> 0 -dqcot406 comparetotal -70E-1 -7 -> 1 -dqcot407 comparetotal -7.0 -7E+0 -> 1 -dqcot408 comparetotal -7.0 -70E-1 -> 0 -dqcot409 comparetotal -7 -.7E+1 -> 0 -dqcot410 comparetotal -7 -70E-1 -> -1 - -dqcot420 comparetotal -8.0 -7.0 -> -1 -dqcot421 comparetotal -8.0 -7 -> -1 -dqcot422 comparetotal -8 -7.0 -> -1 -dqcot423 comparetotal -8E+0 -7.0 -> -1 -dqcot424 comparetotal -80E-1 -7.0 -> -1 -dqcot425 comparetotal -.8E+1 -7 -> -1 -dqcot426 comparetotal -80E-1 -7 -> -1 -dqcot427 comparetotal -8.0 -7E+0 -> -1 -dqcot428 comparetotal -8.0 -70E-1 -> -1 -dqcot429 comparetotal -8 -.7E+1 -> -1 -dqcot430 comparetotal -8 -70E-1 -> -1 - -dqcot440 comparetotal -8.0 -9.0 -> 1 -dqcot441 comparetotal -8.0 -9 -> 1 -dqcot442 comparetotal -8 -9.0 -> 1 -dqcot443 comparetotal -8E+0 -9.0 -> 1 -dqcot444 comparetotal -80E-1 -9.0 -> 1 -dqcot445 comparetotal -.8E+1 -9 -> 1 -dqcot446 comparetotal -80E-1 -9 -> 1 -dqcot447 comparetotal -8.0 -9E+0 -> 1 -dqcot448 comparetotal -8.0 -90E-1 -> 1 -dqcot449 comparetotal -8 -.9E+1 -> 1 -dqcot450 comparetotal -8 -90E-1 -> 1 - - --- testcases that subtract to lots of zeros at boundaries [pgr] -dqcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1 -dqcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1 -dqcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1 -dqcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1 -dqcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1 -dqcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1 -dqcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1 -dqcot480 comparetotal 123.456000E+89 123.456E+89 -> -1 -dqcot481 comparetotal 123.45600E-89 123.456E-89 -> -1 -dqcot482 comparetotal 123.4560E+89 123.456E+89 -> -1 -dqcot483 comparetotal 123.456E-89 123.456E-89 -> 0 -dqcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1 -dqcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1 -dqcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1 -dqcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1 -dqcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1 -dqcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1 -dqcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1 -dqcot494 comparetotal 123.456E-89 123.456000E-89 -> 1 -dqcot495 comparetotal 123.456E+89 123.45600E+89 -> 1 -dqcot496 comparetotal 123.456E-89 123.4560E-89 -> 1 -dqcot497 comparetotal 123.456E+89 123.456E+89 -> 0 - --- wide-ranging, around precision; signs equal -dqcot498 comparetotal 1 1E-17 -> 1 -dqcot499 comparetotal 1 1E-16 -> 1 -dqcot500 comparetotal 1 1E-15 -> 1 -dqcot501 comparetotal 1 1E-14 -> 1 -dqcot502 comparetotal 1 1E-13 -> 1 -dqcot503 comparetotal 1 1E-12 -> 1 -dqcot504 comparetotal 1 1E-11 -> 1 -dqcot505 comparetotal 1 1E-10 -> 1 -dqcot506 comparetotal 1 1E-9 -> 1 -dqcot507 comparetotal 1 1E-8 -> 1 -dqcot508 comparetotal 1 1E-7 -> 1 -dqcot509 comparetotal 1 1E-6 -> 1 -dqcot510 comparetotal 1 1E-5 -> 1 -dqcot511 comparetotal 1 1E-4 -> 1 -dqcot512 comparetotal 1 1E-3 -> 1 -dqcot513 comparetotal 1 1E-2 -> 1 -dqcot514 comparetotal 1 1E-1 -> 1 -dqcot515 comparetotal 1 1E-0 -> 0 -dqcot516 comparetotal 1 1E+1 -> -1 -dqcot517 comparetotal 1 1E+2 -> -1 -dqcot518 comparetotal 1 1E+3 -> -1 -dqcot519 comparetotal 1 1E+4 -> -1 -dqcot521 comparetotal 1 1E+5 -> -1 -dqcot522 comparetotal 1 1E+6 -> -1 -dqcot523 comparetotal 1 1E+7 -> -1 -dqcot524 comparetotal 1 1E+8 -> -1 -dqcot525 comparetotal 1 1E+9 -> -1 -dqcot526 comparetotal 1 1E+10 -> -1 -dqcot527 comparetotal 1 1E+11 -> -1 -dqcot528 comparetotal 1 1E+12 -> -1 -dqcot529 comparetotal 1 1E+13 -> -1 -dqcot530 comparetotal 1 1E+14 -> -1 -dqcot531 comparetotal 1 1E+15 -> -1 -dqcot532 comparetotal 1 1E+16 -> -1 -dqcot533 comparetotal 1 1E+17 -> -1 --- LR swap -dqcot538 comparetotal 1E-17 1 -> -1 -dqcot539 comparetotal 1E-16 1 -> -1 -dqcot540 comparetotal 1E-15 1 -> -1 -dqcot541 comparetotal 1E-14 1 -> -1 -dqcot542 comparetotal 1E-13 1 -> -1 -dqcot543 comparetotal 1E-12 1 -> -1 -dqcot544 comparetotal 1E-11 1 -> -1 -dqcot545 comparetotal 1E-10 1 -> -1 -dqcot546 comparetotal 1E-9 1 -> -1 -dqcot547 comparetotal 1E-8 1 -> -1 -dqcot548 comparetotal 1E-7 1 -> -1 -dqcot549 comparetotal 1E-6 1 -> -1 -dqcot550 comparetotal 1E-5 1 -> -1 -dqcot551 comparetotal 1E-4 1 -> -1 -dqcot552 comparetotal 1E-3 1 -> -1 -dqcot553 comparetotal 1E-2 1 -> -1 -dqcot554 comparetotal 1E-1 1 -> -1 -dqcot555 comparetotal 1E-0 1 -> 0 -dqcot556 comparetotal 1E+1 1 -> 1 -dqcot557 comparetotal 1E+2 1 -> 1 -dqcot558 comparetotal 1E+3 1 -> 1 -dqcot559 comparetotal 1E+4 1 -> 1 -dqcot561 comparetotal 1E+5 1 -> 1 -dqcot562 comparetotal 1E+6 1 -> 1 -dqcot563 comparetotal 1E+7 1 -> 1 -dqcot564 comparetotal 1E+8 1 -> 1 -dqcot565 comparetotal 1E+9 1 -> 1 -dqcot566 comparetotal 1E+10 1 -> 1 -dqcot567 comparetotal 1E+11 1 -> 1 -dqcot568 comparetotal 1E+12 1 -> 1 -dqcot569 comparetotal 1E+13 1 -> 1 -dqcot570 comparetotal 1E+14 1 -> 1 -dqcot571 comparetotal 1E+15 1 -> 1 -dqcot572 comparetotal 1E+16 1 -> 1 -dqcot573 comparetotal 1E+17 1 -> 1 --- similar with a useful coefficient, one side only -dqcot578 comparetotal 0.000000987654321 1E-17 -> 1 -dqcot579 comparetotal 0.000000987654321 1E-16 -> 1 -dqcot580 comparetotal 0.000000987654321 1E-15 -> 1 -dqcot581 comparetotal 0.000000987654321 1E-14 -> 1 -dqcot582 comparetotal 0.000000987654321 1E-13 -> 1 -dqcot583 comparetotal 0.000000987654321 1E-12 -> 1 -dqcot584 comparetotal 0.000000987654321 1E-11 -> 1 -dqcot585 comparetotal 0.000000987654321 1E-10 -> 1 -dqcot586 comparetotal 0.000000987654321 1E-9 -> 1 -dqcot587 comparetotal 0.000000987654321 1E-8 -> 1 -dqcot588 comparetotal 0.000000987654321 1E-7 -> 1 -dqcot589 comparetotal 0.000000987654321 1E-6 -> -1 -dqcot590 comparetotal 0.000000987654321 1E-5 -> -1 -dqcot591 comparetotal 0.000000987654321 1E-4 -> -1 -dqcot592 comparetotal 0.000000987654321 1E-3 -> -1 -dqcot593 comparetotal 0.000000987654321 1E-2 -> -1 -dqcot594 comparetotal 0.000000987654321 1E-1 -> -1 -dqcot595 comparetotal 0.000000987654321 1E-0 -> -1 -dqcot596 comparetotal 0.000000987654321 1E+1 -> -1 -dqcot597 comparetotal 0.000000987654321 1E+2 -> -1 -dqcot598 comparetotal 0.000000987654321 1E+3 -> -1 -dqcot599 comparetotal 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -dqcot600 comparetotal 12 12.2345 -> -1 -dqcot601 comparetotal 12.0 12.2345 -> -1 -dqcot602 comparetotal 12.00 12.2345 -> -1 -dqcot603 comparetotal 12.000 12.2345 -> -1 -dqcot604 comparetotal 12.0000 12.2345 -> -1 -dqcot605 comparetotal 12.00000 12.2345 -> -1 -dqcot606 comparetotal 12.000000 12.2345 -> -1 -dqcot607 comparetotal 12.0000000 12.2345 -> -1 -dqcot608 comparetotal 12.00000000 12.2345 -> -1 -dqcot609 comparetotal 12.000000000 12.2345 -> -1 -dqcot610 comparetotal 12.1234 12 -> 1 -dqcot611 comparetotal 12.1234 12.0 -> 1 -dqcot612 comparetotal 12.1234 12.00 -> 1 -dqcot613 comparetotal 12.1234 12.000 -> 1 -dqcot614 comparetotal 12.1234 12.0000 -> 1 -dqcot615 comparetotal 12.1234 12.00000 -> 1 -dqcot616 comparetotal 12.1234 12.000000 -> 1 -dqcot617 comparetotal 12.1234 12.0000000 -> 1 -dqcot618 comparetotal 12.1234 12.00000000 -> 1 -dqcot619 comparetotal 12.1234 12.000000000 -> 1 -dqcot620 comparetotal -12 -12.2345 -> 1 -dqcot621 comparetotal -12.0 -12.2345 -> 1 -dqcot622 comparetotal -12.00 -12.2345 -> 1 -dqcot623 comparetotal -12.000 -12.2345 -> 1 -dqcot624 comparetotal -12.0000 -12.2345 -> 1 -dqcot625 comparetotal -12.00000 -12.2345 -> 1 -dqcot626 comparetotal -12.000000 -12.2345 -> 1 -dqcot627 comparetotal -12.0000000 -12.2345 -> 1 -dqcot628 comparetotal -12.00000000 -12.2345 -> 1 -dqcot629 comparetotal -12.000000000 -12.2345 -> 1 -dqcot630 comparetotal -12.1234 -12 -> -1 -dqcot631 comparetotal -12.1234 -12.0 -> -1 -dqcot632 comparetotal -12.1234 -12.00 -> -1 -dqcot633 comparetotal -12.1234 -12.000 -> -1 -dqcot634 comparetotal -12.1234 -12.0000 -> -1 -dqcot635 comparetotal -12.1234 -12.00000 -> -1 -dqcot636 comparetotal -12.1234 -12.000000 -> -1 -dqcot637 comparetotal -12.1234 -12.0000000 -> -1 -dqcot638 comparetotal -12.1234 -12.00000000 -> -1 -dqcot639 comparetotal -12.1234 -12.000000000 -> -1 - --- extended zeros -dqcot640 comparetotal 0 0 -> 0 -dqcot641 comparetotal 0 -0 -> 1 -dqcot642 comparetotal 0 -0.0 -> 1 -dqcot643 comparetotal 0 0.0 -> 1 -dqcot644 comparetotal -0 0 -> -1 -dqcot645 comparetotal -0 -0 -> 0 -dqcot646 comparetotal -0 -0.0 -> -1 -dqcot647 comparetotal -0 0.0 -> -1 -dqcot648 comparetotal 0.0 0 -> -1 -dqcot649 comparetotal 0.0 -0 -> 1 -dqcot650 comparetotal 0.0 -0.0 -> 1 -dqcot651 comparetotal 0.0 0.0 -> 0 -dqcot652 comparetotal -0.0 0 -> -1 -dqcot653 comparetotal -0.0 -0 -> 1 -dqcot654 comparetotal -0.0 -0.0 -> 0 -dqcot655 comparetotal -0.0 0.0 -> -1 - -dqcot656 comparetotal -0E1 0.0 -> -1 -dqcot657 comparetotal -0E2 0.0 -> -1 -dqcot658 comparetotal 0E1 0.0 -> 1 -dqcot659 comparetotal 0E2 0.0 -> 1 -dqcot660 comparetotal -0E1 0 -> -1 -dqcot661 comparetotal -0E2 0 -> -1 -dqcot662 comparetotal 0E1 0 -> 1 -dqcot663 comparetotal 0E2 0 -> 1 -dqcot664 comparetotal -0E1 -0E1 -> 0 -dqcot665 comparetotal -0E2 -0E1 -> -1 -dqcot666 comparetotal 0E1 -0E1 -> 1 -dqcot667 comparetotal 0E2 -0E1 -> 1 -dqcot668 comparetotal -0E1 -0E2 -> 1 -dqcot669 comparetotal -0E2 -0E2 -> 0 -dqcot670 comparetotal 0E1 -0E2 -> 1 -dqcot671 comparetotal 0E2 -0E2 -> 1 -dqcot672 comparetotal -0E1 0E1 -> -1 -dqcot673 comparetotal -0E2 0E1 -> -1 -dqcot674 comparetotal 0E1 0E1 -> 0 -dqcot675 comparetotal 0E2 0E1 -> 1 -dqcot676 comparetotal -0E1 0E2 -> -1 -dqcot677 comparetotal -0E2 0E2 -> -1 -dqcot678 comparetotal 0E1 0E2 -> -1 -dqcot679 comparetotal 0E2 0E2 -> 0 - --- trailing zeros; unit-y -dqcot680 comparetotal 12 12 -> 0 -dqcot681 comparetotal 12 12.0 -> 1 -dqcot682 comparetotal 12 12.00 -> 1 -dqcot683 comparetotal 12 12.000 -> 1 -dqcot684 comparetotal 12 12.0000 -> 1 -dqcot685 comparetotal 12 12.00000 -> 1 -dqcot686 comparetotal 12 12.000000 -> 1 -dqcot687 comparetotal 12 12.0000000 -> 1 -dqcot688 comparetotal 12 12.00000000 -> 1 -dqcot689 comparetotal 12 12.000000000 -> 1 -dqcot690 comparetotal 12 12 -> 0 -dqcot691 comparetotal 12.0 12 -> -1 -dqcot692 comparetotal 12.00 12 -> -1 -dqcot693 comparetotal 12.000 12 -> -1 -dqcot694 comparetotal 12.0000 12 -> -1 -dqcot695 comparetotal 12.00000 12 -> -1 -dqcot696 comparetotal 12.000000 12 -> -1 -dqcot697 comparetotal 12.0000000 12 -> -1 -dqcot698 comparetotal 12.00000000 12 -> -1 -dqcot699 comparetotal 12.000000000 12 -> -1 - --- old long operand checks -dqcot701 comparetotal 12345678000 1 -> 1 -dqcot702 comparetotal 1 12345678000 -> -1 -dqcot703 comparetotal 1234567800 1 -> 1 -dqcot704 comparetotal 1 1234567800 -> -1 -dqcot705 comparetotal 1234567890 1 -> 1 -dqcot706 comparetotal 1 1234567890 -> -1 -dqcot707 comparetotal 1234567891 1 -> 1 -dqcot708 comparetotal 1 1234567891 -> -1 -dqcot709 comparetotal 12345678901 1 -> 1 -dqcot710 comparetotal 1 12345678901 -> -1 -dqcot711 comparetotal 1234567896 1 -> 1 -dqcot712 comparetotal 1 1234567896 -> -1 -dqcot713 comparetotal -1234567891 1 -> -1 -dqcot714 comparetotal 1 -1234567891 -> 1 -dqcot715 comparetotal -12345678901 1 -> -1 -dqcot716 comparetotal 1 -12345678901 -> 1 -dqcot717 comparetotal -1234567896 1 -> -1 -dqcot718 comparetotal 1 -1234567896 -> 1 - --- old residue cases -dqcot740 comparetotal 1 0.9999999 -> 1 -dqcot741 comparetotal 1 0.999999 -> 1 -dqcot742 comparetotal 1 0.99999 -> 1 -dqcot743 comparetotal 1 1.0000 -> 1 -dqcot744 comparetotal 1 1.00001 -> -1 -dqcot745 comparetotal 1 1.000001 -> -1 -dqcot746 comparetotal 1 1.0000001 -> -1 -dqcot750 comparetotal 0.9999999 1 -> -1 -dqcot751 comparetotal 0.999999 1 -> -1 -dqcot752 comparetotal 0.99999 1 -> -1 -dqcot753 comparetotal 1.0000 1 -> -1 -dqcot754 comparetotal 1.00001 1 -> 1 -dqcot755 comparetotal 1.000001 1 -> 1 -dqcot756 comparetotal 1.0000001 1 -> 1 - --- Specials -dqcot780 comparetotal Inf -Inf -> 1 -dqcot781 comparetotal Inf -1000 -> 1 -dqcot782 comparetotal Inf -1 -> 1 -dqcot783 comparetotal Inf -0 -> 1 -dqcot784 comparetotal Inf 0 -> 1 -dqcot785 comparetotal Inf 1 -> 1 -dqcot786 comparetotal Inf 1000 -> 1 -dqcot787 comparetotal Inf Inf -> 0 -dqcot788 comparetotal -1000 Inf -> -1 -dqcot789 comparetotal -Inf Inf -> -1 -dqcot790 comparetotal -1 Inf -> -1 -dqcot791 comparetotal -0 Inf -> -1 -dqcot792 comparetotal 0 Inf -> -1 -dqcot793 comparetotal 1 Inf -> -1 -dqcot794 comparetotal 1000 Inf -> -1 -dqcot795 comparetotal Inf Inf -> 0 - -dqcot800 comparetotal -Inf -Inf -> 0 -dqcot801 comparetotal -Inf -1000 -> -1 -dqcot802 comparetotal -Inf -1 -> -1 -dqcot803 comparetotal -Inf -0 -> -1 -dqcot804 comparetotal -Inf 0 -> -1 -dqcot805 comparetotal -Inf 1 -> -1 -dqcot806 comparetotal -Inf 1000 -> -1 -dqcot807 comparetotal -Inf Inf -> -1 -dqcot808 comparetotal -Inf -Inf -> 0 -dqcot809 comparetotal -1000 -Inf -> 1 -dqcot810 comparetotal -1 -Inf -> 1 -dqcot811 comparetotal -0 -Inf -> 1 -dqcot812 comparetotal 0 -Inf -> 1 -dqcot813 comparetotal 1 -Inf -> 1 -dqcot814 comparetotal 1000 -Inf -> 1 -dqcot815 comparetotal Inf -Inf -> 1 - -dqcot821 comparetotal NaN -Inf -> 1 -dqcot822 comparetotal NaN -1000 -> 1 -dqcot823 comparetotal NaN -1 -> 1 -dqcot824 comparetotal NaN -0 -> 1 -dqcot825 comparetotal NaN 0 -> 1 -dqcot826 comparetotal NaN 1 -> 1 -dqcot827 comparetotal NaN 1000 -> 1 -dqcot828 comparetotal NaN Inf -> 1 -dqcot829 comparetotal NaN NaN -> 0 -dqcot830 comparetotal -Inf NaN -> -1 -dqcot831 comparetotal -1000 NaN -> -1 -dqcot832 comparetotal -1 NaN -> -1 -dqcot833 comparetotal -0 NaN -> -1 -dqcot834 comparetotal 0 NaN -> -1 -dqcot835 comparetotal 1 NaN -> -1 -dqcot836 comparetotal 1000 NaN -> -1 -dqcot837 comparetotal Inf NaN -> -1 -dqcot838 comparetotal -NaN -NaN -> 0 -dqcot839 comparetotal +NaN -NaN -> 1 -dqcot840 comparetotal -NaN +NaN -> -1 - -dqcot841 comparetotal sNaN -sNaN -> 1 -dqcot842 comparetotal sNaN -NaN -> 1 -dqcot843 comparetotal sNaN -Inf -> 1 -dqcot844 comparetotal sNaN -1000 -> 1 -dqcot845 comparetotal sNaN -1 -> 1 -dqcot846 comparetotal sNaN -0 -> 1 -dqcot847 comparetotal sNaN 0 -> 1 -dqcot848 comparetotal sNaN 1 -> 1 -dqcot849 comparetotal sNaN 1000 -> 1 -dqcot850 comparetotal sNaN NaN -> -1 -dqcot851 comparetotal sNaN sNaN -> 0 - -dqcot852 comparetotal -sNaN sNaN -> -1 -dqcot853 comparetotal -NaN sNaN -> -1 -dqcot854 comparetotal -Inf sNaN -> -1 -dqcot855 comparetotal -1000 sNaN -> -1 -dqcot856 comparetotal -1 sNaN -> -1 -dqcot857 comparetotal -0 sNaN -> -1 -dqcot858 comparetotal 0 sNaN -> -1 -dqcot859 comparetotal 1 sNaN -> -1 -dqcot860 comparetotal 1000 sNaN -> -1 -dqcot861 comparetotal Inf sNaN -> -1 -dqcot862 comparetotal NaN sNaN -> 1 -dqcot863 comparetotal sNaN sNaN -> 0 - -dqcot871 comparetotal -sNaN -sNaN -> 0 -dqcot872 comparetotal -sNaN -NaN -> 1 -dqcot873 comparetotal -sNaN -Inf -> -1 -dqcot874 comparetotal -sNaN -1000 -> -1 -dqcot875 comparetotal -sNaN -1 -> -1 -dqcot876 comparetotal -sNaN -0 -> -1 -dqcot877 comparetotal -sNaN 0 -> -1 -dqcot878 comparetotal -sNaN 1 -> -1 -dqcot879 comparetotal -sNaN 1000 -> -1 -dqcot880 comparetotal -sNaN NaN -> -1 -dqcot881 comparetotal -sNaN sNaN -> -1 - -dqcot882 comparetotal -sNaN -sNaN -> 0 -dqcot883 comparetotal -NaN -sNaN -> -1 -dqcot884 comparetotal -Inf -sNaN -> 1 -dqcot885 comparetotal -1000 -sNaN -> 1 -dqcot886 comparetotal -1 -sNaN -> 1 -dqcot887 comparetotal -0 -sNaN -> 1 -dqcot888 comparetotal 0 -sNaN -> 1 -dqcot889 comparetotal 1 -sNaN -> 1 -dqcot890 comparetotal 1000 -sNaN -> 1 -dqcot891 comparetotal Inf -sNaN -> 1 -dqcot892 comparetotal NaN -sNaN -> 1 -dqcot893 comparetotal sNaN -sNaN -> 1 - --- NaNs with payload -dqcot960 comparetotal NaN9 -Inf -> 1 -dqcot961 comparetotal NaN8 999 -> 1 -dqcot962 comparetotal NaN77 Inf -> 1 -dqcot963 comparetotal -NaN67 NaN5 -> -1 -dqcot964 comparetotal -Inf -NaN4 -> 1 -dqcot965 comparetotal -999 -NaN33 -> 1 -dqcot966 comparetotal Inf NaN2 -> -1 - -dqcot970 comparetotal -NaN41 -NaN42 -> 1 -dqcot971 comparetotal +NaN41 -NaN42 -> 1 -dqcot972 comparetotal -NaN41 +NaN42 -> -1 -dqcot973 comparetotal +NaN41 +NaN42 -> -1 -dqcot974 comparetotal -NaN42 -NaN01 -> -1 -dqcot975 comparetotal +NaN42 -NaN01 -> 1 -dqcot976 comparetotal -NaN42 +NaN01 -> -1 -dqcot977 comparetotal +NaN42 +NaN01 -> 1 - -dqcot980 comparetotal -sNaN771 -sNaN772 -> 1 -dqcot981 comparetotal +sNaN771 -sNaN772 -> 1 -dqcot982 comparetotal -sNaN771 +sNaN772 -> -1 -dqcot983 comparetotal +sNaN771 +sNaN772 -> -1 -dqcot984 comparetotal -sNaN772 -sNaN771 -> -1 -dqcot985 comparetotal +sNaN772 -sNaN771 -> 1 -dqcot986 comparetotal -sNaN772 +sNaN771 -> -1 -dqcot987 comparetotal +sNaN772 +sNaN771 -> 1 - -dqcot991 comparetotal -sNaN99 -Inf -> -1 -dqcot992 comparetotal sNaN98 -11 -> 1 -dqcot993 comparetotal sNaN97 NaN -> -1 -dqcot994 comparetotal sNaN16 sNaN94 -> -1 -dqcot995 comparetotal NaN85 sNaN83 -> 1 -dqcot996 comparetotal -Inf sNaN92 -> -1 -dqcot997 comparetotal 088 sNaN81 -> -1 -dqcot998 comparetotal Inf sNaN90 -> -1 -dqcot999 comparetotal NaN -sNaN89 -> 1 - --- spread zeros -dqcot1110 comparetotal 0E-6143 0 -> -1 -dqcot1111 comparetotal 0E-6143 -0 -> 1 -dqcot1112 comparetotal -0E-6143 0 -> -1 -dqcot1113 comparetotal -0E-6143 -0 -> 1 -dqcot1114 comparetotal 0E-6143 0E+6144 -> -1 -dqcot1115 comparetotal 0E-6143 -0E+6144 -> 1 -dqcot1116 comparetotal -0E-6143 0E+6144 -> -1 -dqcot1117 comparetotal -0E-6143 -0E+6144 -> 1 -dqcot1118 comparetotal 0 0E+6144 -> -1 -dqcot1119 comparetotal 0 -0E+6144 -> 1 -dqcot1120 comparetotal -0 0E+6144 -> -1 -dqcot1121 comparetotal -0 -0E+6144 -> 1 - -dqcot1130 comparetotal 0E+6144 0 -> 1 -dqcot1131 comparetotal 0E+6144 -0 -> 1 -dqcot1132 comparetotal -0E+6144 0 -> -1 -dqcot1133 comparetotal -0E+6144 -0 -> -1 -dqcot1134 comparetotal 0E+6144 0E-6143 -> 1 -dqcot1135 comparetotal 0E+6144 -0E-6143 -> 1 -dqcot1136 comparetotal -0E+6144 0E-6143 -> -1 -dqcot1137 comparetotal -0E+6144 -0E-6143 -> -1 -dqcot1138 comparetotal 0 0E-6143 -> 1 -dqcot1139 comparetotal 0 -0E-6143 -> 1 -dqcot1140 comparetotal -0 0E-6143 -> -1 -dqcot1141 comparetotal -0 -0E-6143 -> -1 - --- Null tests -dqcot9990 comparetotal 10 # -> NaN Invalid_operation -dqcot9991 comparetotal # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqCompareTotal.decTest -- decQuad comparison using total ordering -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). +-- Similarly, comparetotal will have some radically different paths +-- than compare. + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqcot001 comparetotal -2 -2 -> 0 +dqcot002 comparetotal -2 -1 -> -1 +dqcot003 comparetotal -2 0 -> -1 +dqcot004 comparetotal -2 1 -> -1 +dqcot005 comparetotal -2 2 -> -1 +dqcot006 comparetotal -1 -2 -> 1 +dqcot007 comparetotal -1 -1 -> 0 +dqcot008 comparetotal -1 0 -> -1 +dqcot009 comparetotal -1 1 -> -1 +dqcot010 comparetotal -1 2 -> -1 +dqcot011 comparetotal 0 -2 -> 1 +dqcot012 comparetotal 0 -1 -> 1 +dqcot013 comparetotal 0 0 -> 0 +dqcot014 comparetotal 0 1 -> -1 +dqcot015 comparetotal 0 2 -> -1 +dqcot016 comparetotal 1 -2 -> 1 +dqcot017 comparetotal 1 -1 -> 1 +dqcot018 comparetotal 1 0 -> 1 +dqcot019 comparetotal 1 1 -> 0 +dqcot020 comparetotal 1 2 -> -1 +dqcot021 comparetotal 2 -2 -> 1 +dqcot022 comparetotal 2 -1 -> 1 +dqcot023 comparetotal 2 0 -> 1 +dqcot025 comparetotal 2 1 -> 1 +dqcot026 comparetotal 2 2 -> 0 + +dqcot031 comparetotal -20 -20 -> 0 +dqcot032 comparetotal -20 -10 -> -1 +dqcot033 comparetotal -20 00 -> -1 +dqcot034 comparetotal -20 10 -> -1 +dqcot035 comparetotal -20 20 -> -1 +dqcot036 comparetotal -10 -20 -> 1 +dqcot037 comparetotal -10 -10 -> 0 +dqcot038 comparetotal -10 00 -> -1 +dqcot039 comparetotal -10 10 -> -1 +dqcot040 comparetotal -10 20 -> -1 +dqcot041 comparetotal 00 -20 -> 1 +dqcot042 comparetotal 00 -10 -> 1 +dqcot043 comparetotal 00 00 -> 0 +dqcot044 comparetotal 00 10 -> -1 +dqcot045 comparetotal 00 20 -> -1 +dqcot046 comparetotal 10 -20 -> 1 +dqcot047 comparetotal 10 -10 -> 1 +dqcot048 comparetotal 10 00 -> 1 +dqcot049 comparetotal 10 10 -> 0 +dqcot050 comparetotal 10 20 -> -1 +dqcot051 comparetotal 20 -20 -> 1 +dqcot052 comparetotal 20 -10 -> 1 +dqcot053 comparetotal 20 00 -> 1 +dqcot055 comparetotal 20 10 -> 1 +dqcot056 comparetotal 20 20 -> 0 + +dqcot061 comparetotal -2.0 -2.0 -> 0 +dqcot062 comparetotal -2.0 -1.0 -> -1 +dqcot063 comparetotal -2.0 0.0 -> -1 +dqcot064 comparetotal -2.0 1.0 -> -1 +dqcot065 comparetotal -2.0 2.0 -> -1 +dqcot066 comparetotal -1.0 -2.0 -> 1 +dqcot067 comparetotal -1.0 -1.0 -> 0 +dqcot068 comparetotal -1.0 0.0 -> -1 +dqcot069 comparetotal -1.0 1.0 -> -1 +dqcot070 comparetotal -1.0 2.0 -> -1 +dqcot071 comparetotal 0.0 -2.0 -> 1 +dqcot072 comparetotal 0.0 -1.0 -> 1 +dqcot073 comparetotal 0.0 0.0 -> 0 +dqcot074 comparetotal 0.0 1.0 -> -1 +dqcot075 comparetotal 0.0 2.0 -> -1 +dqcot076 comparetotal 1.0 -2.0 -> 1 +dqcot077 comparetotal 1.0 -1.0 -> 1 +dqcot078 comparetotal 1.0 0.0 -> 1 +dqcot079 comparetotal 1.0 1.0 -> 0 +dqcot080 comparetotal 1.0 2.0 -> -1 +dqcot081 comparetotal 2.0 -2.0 -> 1 +dqcot082 comparetotal 2.0 -1.0 -> 1 +dqcot083 comparetotal 2.0 0.0 -> 1 +dqcot085 comparetotal 2.0 1.0 -> 1 +dqcot086 comparetotal 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +dqcot090 comparetotal 9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0 +dqcot091 comparetotal -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> -1 +dqcot092 comparetotal 9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 1 +dqcot093 comparetotal -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0 + +-- some differing length/exponent cases +-- in this first group, compare would compare all equal +dqcot100 comparetotal 7.0 7.0 -> 0 +dqcot101 comparetotal 7.0 7 -> -1 +dqcot102 comparetotal 7 7.0 -> 1 +dqcot103 comparetotal 7E+0 7.0 -> 1 +dqcot104 comparetotal 70E-1 7.0 -> 0 +dqcot105 comparetotal 0.7E+1 7 -> 0 +dqcot106 comparetotal 70E-1 7 -> -1 +dqcot107 comparetotal 7.0 7E+0 -> -1 +dqcot108 comparetotal 7.0 70E-1 -> 0 +dqcot109 comparetotal 7 0.7E+1 -> 0 +dqcot110 comparetotal 7 70E-1 -> 1 + +dqcot120 comparetotal 8.0 7.0 -> 1 +dqcot121 comparetotal 8.0 7 -> 1 +dqcot122 comparetotal 8 7.0 -> 1 +dqcot123 comparetotal 8E+0 7.0 -> 1 +dqcot124 comparetotal 80E-1 7.0 -> 1 +dqcot125 comparetotal 0.8E+1 7 -> 1 +dqcot126 comparetotal 80E-1 7 -> 1 +dqcot127 comparetotal 8.0 7E+0 -> 1 +dqcot128 comparetotal 8.0 70E-1 -> 1 +dqcot129 comparetotal 8 0.7E+1 -> 1 +dqcot130 comparetotal 8 70E-1 -> 1 + +dqcot140 comparetotal 8.0 9.0 -> -1 +dqcot141 comparetotal 8.0 9 -> -1 +dqcot142 comparetotal 8 9.0 -> -1 +dqcot143 comparetotal 8E+0 9.0 -> -1 +dqcot144 comparetotal 80E-1 9.0 -> -1 +dqcot145 comparetotal 0.8E+1 9 -> -1 +dqcot146 comparetotal 80E-1 9 -> -1 +dqcot147 comparetotal 8.0 9E+0 -> -1 +dqcot148 comparetotal 8.0 90E-1 -> -1 +dqcot149 comparetotal 8 0.9E+1 -> -1 +dqcot150 comparetotal 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +dqcot200 comparetotal -7.0 7.0 -> -1 +dqcot201 comparetotal -7.0 7 -> -1 +dqcot202 comparetotal -7 7.0 -> -1 +dqcot203 comparetotal -7E+0 7.0 -> -1 +dqcot204 comparetotal -70E-1 7.0 -> -1 +dqcot205 comparetotal -0.7E+1 7 -> -1 +dqcot206 comparetotal -70E-1 7 -> -1 +dqcot207 comparetotal -7.0 7E+0 -> -1 +dqcot208 comparetotal -7.0 70E-1 -> -1 +dqcot209 comparetotal -7 0.7E+1 -> -1 +dqcot210 comparetotal -7 70E-1 -> -1 + +dqcot220 comparetotal -8.0 7.0 -> -1 +dqcot221 comparetotal -8.0 7 -> -1 +dqcot222 comparetotal -8 7.0 -> -1 +dqcot223 comparetotal -8E+0 7.0 -> -1 +dqcot224 comparetotal -80E-1 7.0 -> -1 +dqcot225 comparetotal -0.8E+1 7 -> -1 +dqcot226 comparetotal -80E-1 7 -> -1 +dqcot227 comparetotal -8.0 7E+0 -> -1 +dqcot228 comparetotal -8.0 70E-1 -> -1 +dqcot229 comparetotal -8 0.7E+1 -> -1 +dqcot230 comparetotal -8 70E-1 -> -1 + +dqcot240 comparetotal -8.0 9.0 -> -1 +dqcot241 comparetotal -8.0 9 -> -1 +dqcot242 comparetotal -8 9.0 -> -1 +dqcot243 comparetotal -8E+0 9.0 -> -1 +dqcot244 comparetotal -80E-1 9.0 -> -1 +dqcot245 comparetotal -0.8E+1 9 -> -1 +dqcot246 comparetotal -80E-1 9 -> -1 +dqcot247 comparetotal -8.0 9E+0 -> -1 +dqcot248 comparetotal -8.0 90E-1 -> -1 +dqcot249 comparetotal -8 0.9E+1 -> -1 +dqcot250 comparetotal -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +dqcot300 comparetotal 7.0 -7.0 -> 1 +dqcot301 comparetotal 7.0 -7 -> 1 +dqcot302 comparetotal 7 -7.0 -> 1 +dqcot303 comparetotal 7E+0 -7.0 -> 1 +dqcot304 comparetotal 70E-1 -7.0 -> 1 +dqcot305 comparetotal .7E+1 -7 -> 1 +dqcot306 comparetotal 70E-1 -7 -> 1 +dqcot307 comparetotal 7.0 -7E+0 -> 1 +dqcot308 comparetotal 7.0 -70E-1 -> 1 +dqcot309 comparetotal 7 -.7E+1 -> 1 +dqcot310 comparetotal 7 -70E-1 -> 1 + +dqcot320 comparetotal 8.0 -7.0 -> 1 +dqcot321 comparetotal 8.0 -7 -> 1 +dqcot322 comparetotal 8 -7.0 -> 1 +dqcot323 comparetotal 8E+0 -7.0 -> 1 +dqcot324 comparetotal 80E-1 -7.0 -> 1 +dqcot325 comparetotal .8E+1 -7 -> 1 +dqcot326 comparetotal 80E-1 -7 -> 1 +dqcot327 comparetotal 8.0 -7E+0 -> 1 +dqcot328 comparetotal 8.0 -70E-1 -> 1 +dqcot329 comparetotal 8 -.7E+1 -> 1 +dqcot330 comparetotal 8 -70E-1 -> 1 + +dqcot340 comparetotal 8.0 -9.0 -> 1 +dqcot341 comparetotal 8.0 -9 -> 1 +dqcot342 comparetotal 8 -9.0 -> 1 +dqcot343 comparetotal 8E+0 -9.0 -> 1 +dqcot344 comparetotal 80E-1 -9.0 -> 1 +dqcot345 comparetotal .8E+1 -9 -> 1 +dqcot346 comparetotal 80E-1 -9 -> 1 +dqcot347 comparetotal 8.0 -9E+0 -> 1 +dqcot348 comparetotal 8.0 -90E-1 -> 1 +dqcot349 comparetotal 8 -.9E+1 -> 1 +dqcot350 comparetotal 8 -90E-1 -> 1 + +-- and again, with sign changes -- .. +dqcot400 comparetotal -7.0 -7.0 -> 0 +dqcot401 comparetotal -7.0 -7 -> 1 +dqcot402 comparetotal -7 -7.0 -> -1 +dqcot403 comparetotal -7E+0 -7.0 -> -1 +dqcot404 comparetotal -70E-1 -7.0 -> 0 +dqcot405 comparetotal -.7E+1 -7 -> 0 +dqcot406 comparetotal -70E-1 -7 -> 1 +dqcot407 comparetotal -7.0 -7E+0 -> 1 +dqcot408 comparetotal -7.0 -70E-1 -> 0 +dqcot409 comparetotal -7 -.7E+1 -> 0 +dqcot410 comparetotal -7 -70E-1 -> -1 + +dqcot420 comparetotal -8.0 -7.0 -> -1 +dqcot421 comparetotal -8.0 -7 -> -1 +dqcot422 comparetotal -8 -7.0 -> -1 +dqcot423 comparetotal -8E+0 -7.0 -> -1 +dqcot424 comparetotal -80E-1 -7.0 -> -1 +dqcot425 comparetotal -.8E+1 -7 -> -1 +dqcot426 comparetotal -80E-1 -7 -> -1 +dqcot427 comparetotal -8.0 -7E+0 -> -1 +dqcot428 comparetotal -8.0 -70E-1 -> -1 +dqcot429 comparetotal -8 -.7E+1 -> -1 +dqcot430 comparetotal -8 -70E-1 -> -1 + +dqcot440 comparetotal -8.0 -9.0 -> 1 +dqcot441 comparetotal -8.0 -9 -> 1 +dqcot442 comparetotal -8 -9.0 -> 1 +dqcot443 comparetotal -8E+0 -9.0 -> 1 +dqcot444 comparetotal -80E-1 -9.0 -> 1 +dqcot445 comparetotal -.8E+1 -9 -> 1 +dqcot446 comparetotal -80E-1 -9 -> 1 +dqcot447 comparetotal -8.0 -9E+0 -> 1 +dqcot448 comparetotal -8.0 -90E-1 -> 1 +dqcot449 comparetotal -8 -.9E+1 -> 1 +dqcot450 comparetotal -8 -90E-1 -> 1 + + +-- testcases that subtract to lots of zeros at boundaries [pgr] +dqcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1 +dqcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1 +dqcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1 +dqcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1 +dqcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1 +dqcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1 +dqcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1 +dqcot480 comparetotal 123.456000E+89 123.456E+89 -> -1 +dqcot481 comparetotal 123.45600E-89 123.456E-89 -> -1 +dqcot482 comparetotal 123.4560E+89 123.456E+89 -> -1 +dqcot483 comparetotal 123.456E-89 123.456E-89 -> 0 +dqcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1 +dqcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1 +dqcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1 +dqcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1 +dqcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1 +dqcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1 +dqcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1 +dqcot494 comparetotal 123.456E-89 123.456000E-89 -> 1 +dqcot495 comparetotal 123.456E+89 123.45600E+89 -> 1 +dqcot496 comparetotal 123.456E-89 123.4560E-89 -> 1 +dqcot497 comparetotal 123.456E+89 123.456E+89 -> 0 + +-- wide-ranging, around precision; signs equal +dqcot498 comparetotal 1 1E-17 -> 1 +dqcot499 comparetotal 1 1E-16 -> 1 +dqcot500 comparetotal 1 1E-15 -> 1 +dqcot501 comparetotal 1 1E-14 -> 1 +dqcot502 comparetotal 1 1E-13 -> 1 +dqcot503 comparetotal 1 1E-12 -> 1 +dqcot504 comparetotal 1 1E-11 -> 1 +dqcot505 comparetotal 1 1E-10 -> 1 +dqcot506 comparetotal 1 1E-9 -> 1 +dqcot507 comparetotal 1 1E-8 -> 1 +dqcot508 comparetotal 1 1E-7 -> 1 +dqcot509 comparetotal 1 1E-6 -> 1 +dqcot510 comparetotal 1 1E-5 -> 1 +dqcot511 comparetotal 1 1E-4 -> 1 +dqcot512 comparetotal 1 1E-3 -> 1 +dqcot513 comparetotal 1 1E-2 -> 1 +dqcot514 comparetotal 1 1E-1 -> 1 +dqcot515 comparetotal 1 1E-0 -> 0 +dqcot516 comparetotal 1 1E+1 -> -1 +dqcot517 comparetotal 1 1E+2 -> -1 +dqcot518 comparetotal 1 1E+3 -> -1 +dqcot519 comparetotal 1 1E+4 -> -1 +dqcot521 comparetotal 1 1E+5 -> -1 +dqcot522 comparetotal 1 1E+6 -> -1 +dqcot523 comparetotal 1 1E+7 -> -1 +dqcot524 comparetotal 1 1E+8 -> -1 +dqcot525 comparetotal 1 1E+9 -> -1 +dqcot526 comparetotal 1 1E+10 -> -1 +dqcot527 comparetotal 1 1E+11 -> -1 +dqcot528 comparetotal 1 1E+12 -> -1 +dqcot529 comparetotal 1 1E+13 -> -1 +dqcot530 comparetotal 1 1E+14 -> -1 +dqcot531 comparetotal 1 1E+15 -> -1 +dqcot532 comparetotal 1 1E+16 -> -1 +dqcot533 comparetotal 1 1E+17 -> -1 +-- LR swap +dqcot538 comparetotal 1E-17 1 -> -1 +dqcot539 comparetotal 1E-16 1 -> -1 +dqcot540 comparetotal 1E-15 1 -> -1 +dqcot541 comparetotal 1E-14 1 -> -1 +dqcot542 comparetotal 1E-13 1 -> -1 +dqcot543 comparetotal 1E-12 1 -> -1 +dqcot544 comparetotal 1E-11 1 -> -1 +dqcot545 comparetotal 1E-10 1 -> -1 +dqcot546 comparetotal 1E-9 1 -> -1 +dqcot547 comparetotal 1E-8 1 -> -1 +dqcot548 comparetotal 1E-7 1 -> -1 +dqcot549 comparetotal 1E-6 1 -> -1 +dqcot550 comparetotal 1E-5 1 -> -1 +dqcot551 comparetotal 1E-4 1 -> -1 +dqcot552 comparetotal 1E-3 1 -> -1 +dqcot553 comparetotal 1E-2 1 -> -1 +dqcot554 comparetotal 1E-1 1 -> -1 +dqcot555 comparetotal 1E-0 1 -> 0 +dqcot556 comparetotal 1E+1 1 -> 1 +dqcot557 comparetotal 1E+2 1 -> 1 +dqcot558 comparetotal 1E+3 1 -> 1 +dqcot559 comparetotal 1E+4 1 -> 1 +dqcot561 comparetotal 1E+5 1 -> 1 +dqcot562 comparetotal 1E+6 1 -> 1 +dqcot563 comparetotal 1E+7 1 -> 1 +dqcot564 comparetotal 1E+8 1 -> 1 +dqcot565 comparetotal 1E+9 1 -> 1 +dqcot566 comparetotal 1E+10 1 -> 1 +dqcot567 comparetotal 1E+11 1 -> 1 +dqcot568 comparetotal 1E+12 1 -> 1 +dqcot569 comparetotal 1E+13 1 -> 1 +dqcot570 comparetotal 1E+14 1 -> 1 +dqcot571 comparetotal 1E+15 1 -> 1 +dqcot572 comparetotal 1E+16 1 -> 1 +dqcot573 comparetotal 1E+17 1 -> 1 +-- similar with a useful coefficient, one side only +dqcot578 comparetotal 0.000000987654321 1E-17 -> 1 +dqcot579 comparetotal 0.000000987654321 1E-16 -> 1 +dqcot580 comparetotal 0.000000987654321 1E-15 -> 1 +dqcot581 comparetotal 0.000000987654321 1E-14 -> 1 +dqcot582 comparetotal 0.000000987654321 1E-13 -> 1 +dqcot583 comparetotal 0.000000987654321 1E-12 -> 1 +dqcot584 comparetotal 0.000000987654321 1E-11 -> 1 +dqcot585 comparetotal 0.000000987654321 1E-10 -> 1 +dqcot586 comparetotal 0.000000987654321 1E-9 -> 1 +dqcot587 comparetotal 0.000000987654321 1E-8 -> 1 +dqcot588 comparetotal 0.000000987654321 1E-7 -> 1 +dqcot589 comparetotal 0.000000987654321 1E-6 -> -1 +dqcot590 comparetotal 0.000000987654321 1E-5 -> -1 +dqcot591 comparetotal 0.000000987654321 1E-4 -> -1 +dqcot592 comparetotal 0.000000987654321 1E-3 -> -1 +dqcot593 comparetotal 0.000000987654321 1E-2 -> -1 +dqcot594 comparetotal 0.000000987654321 1E-1 -> -1 +dqcot595 comparetotal 0.000000987654321 1E-0 -> -1 +dqcot596 comparetotal 0.000000987654321 1E+1 -> -1 +dqcot597 comparetotal 0.000000987654321 1E+2 -> -1 +dqcot598 comparetotal 0.000000987654321 1E+3 -> -1 +dqcot599 comparetotal 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +dqcot600 comparetotal 12 12.2345 -> -1 +dqcot601 comparetotal 12.0 12.2345 -> -1 +dqcot602 comparetotal 12.00 12.2345 -> -1 +dqcot603 comparetotal 12.000 12.2345 -> -1 +dqcot604 comparetotal 12.0000 12.2345 -> -1 +dqcot605 comparetotal 12.00000 12.2345 -> -1 +dqcot606 comparetotal 12.000000 12.2345 -> -1 +dqcot607 comparetotal 12.0000000 12.2345 -> -1 +dqcot608 comparetotal 12.00000000 12.2345 -> -1 +dqcot609 comparetotal 12.000000000 12.2345 -> -1 +dqcot610 comparetotal 12.1234 12 -> 1 +dqcot611 comparetotal 12.1234 12.0 -> 1 +dqcot612 comparetotal 12.1234 12.00 -> 1 +dqcot613 comparetotal 12.1234 12.000 -> 1 +dqcot614 comparetotal 12.1234 12.0000 -> 1 +dqcot615 comparetotal 12.1234 12.00000 -> 1 +dqcot616 comparetotal 12.1234 12.000000 -> 1 +dqcot617 comparetotal 12.1234 12.0000000 -> 1 +dqcot618 comparetotal 12.1234 12.00000000 -> 1 +dqcot619 comparetotal 12.1234 12.000000000 -> 1 +dqcot620 comparetotal -12 -12.2345 -> 1 +dqcot621 comparetotal -12.0 -12.2345 -> 1 +dqcot622 comparetotal -12.00 -12.2345 -> 1 +dqcot623 comparetotal -12.000 -12.2345 -> 1 +dqcot624 comparetotal -12.0000 -12.2345 -> 1 +dqcot625 comparetotal -12.00000 -12.2345 -> 1 +dqcot626 comparetotal -12.000000 -12.2345 -> 1 +dqcot627 comparetotal -12.0000000 -12.2345 -> 1 +dqcot628 comparetotal -12.00000000 -12.2345 -> 1 +dqcot629 comparetotal -12.000000000 -12.2345 -> 1 +dqcot630 comparetotal -12.1234 -12 -> -1 +dqcot631 comparetotal -12.1234 -12.0 -> -1 +dqcot632 comparetotal -12.1234 -12.00 -> -1 +dqcot633 comparetotal -12.1234 -12.000 -> -1 +dqcot634 comparetotal -12.1234 -12.0000 -> -1 +dqcot635 comparetotal -12.1234 -12.00000 -> -1 +dqcot636 comparetotal -12.1234 -12.000000 -> -1 +dqcot637 comparetotal -12.1234 -12.0000000 -> -1 +dqcot638 comparetotal -12.1234 -12.00000000 -> -1 +dqcot639 comparetotal -12.1234 -12.000000000 -> -1 + +-- extended zeros +dqcot640 comparetotal 0 0 -> 0 +dqcot641 comparetotal 0 -0 -> 1 +dqcot642 comparetotal 0 -0.0 -> 1 +dqcot643 comparetotal 0 0.0 -> 1 +dqcot644 comparetotal -0 0 -> -1 +dqcot645 comparetotal -0 -0 -> 0 +dqcot646 comparetotal -0 -0.0 -> -1 +dqcot647 comparetotal -0 0.0 -> -1 +dqcot648 comparetotal 0.0 0 -> -1 +dqcot649 comparetotal 0.0 -0 -> 1 +dqcot650 comparetotal 0.0 -0.0 -> 1 +dqcot651 comparetotal 0.0 0.0 -> 0 +dqcot652 comparetotal -0.0 0 -> -1 +dqcot653 comparetotal -0.0 -0 -> 1 +dqcot654 comparetotal -0.0 -0.0 -> 0 +dqcot655 comparetotal -0.0 0.0 -> -1 + +dqcot656 comparetotal -0E1 0.0 -> -1 +dqcot657 comparetotal -0E2 0.0 -> -1 +dqcot658 comparetotal 0E1 0.0 -> 1 +dqcot659 comparetotal 0E2 0.0 -> 1 +dqcot660 comparetotal -0E1 0 -> -1 +dqcot661 comparetotal -0E2 0 -> -1 +dqcot662 comparetotal 0E1 0 -> 1 +dqcot663 comparetotal 0E2 0 -> 1 +dqcot664 comparetotal -0E1 -0E1 -> 0 +dqcot665 comparetotal -0E2 -0E1 -> -1 +dqcot666 comparetotal 0E1 -0E1 -> 1 +dqcot667 comparetotal 0E2 -0E1 -> 1 +dqcot668 comparetotal -0E1 -0E2 -> 1 +dqcot669 comparetotal -0E2 -0E2 -> 0 +dqcot670 comparetotal 0E1 -0E2 -> 1 +dqcot671 comparetotal 0E2 -0E2 -> 1 +dqcot672 comparetotal -0E1 0E1 -> -1 +dqcot673 comparetotal -0E2 0E1 -> -1 +dqcot674 comparetotal 0E1 0E1 -> 0 +dqcot675 comparetotal 0E2 0E1 -> 1 +dqcot676 comparetotal -0E1 0E2 -> -1 +dqcot677 comparetotal -0E2 0E2 -> -1 +dqcot678 comparetotal 0E1 0E2 -> -1 +dqcot679 comparetotal 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +dqcot680 comparetotal 12 12 -> 0 +dqcot681 comparetotal 12 12.0 -> 1 +dqcot682 comparetotal 12 12.00 -> 1 +dqcot683 comparetotal 12 12.000 -> 1 +dqcot684 comparetotal 12 12.0000 -> 1 +dqcot685 comparetotal 12 12.00000 -> 1 +dqcot686 comparetotal 12 12.000000 -> 1 +dqcot687 comparetotal 12 12.0000000 -> 1 +dqcot688 comparetotal 12 12.00000000 -> 1 +dqcot689 comparetotal 12 12.000000000 -> 1 +dqcot690 comparetotal 12 12 -> 0 +dqcot691 comparetotal 12.0 12 -> -1 +dqcot692 comparetotal 12.00 12 -> -1 +dqcot693 comparetotal 12.000 12 -> -1 +dqcot694 comparetotal 12.0000 12 -> -1 +dqcot695 comparetotal 12.00000 12 -> -1 +dqcot696 comparetotal 12.000000 12 -> -1 +dqcot697 comparetotal 12.0000000 12 -> -1 +dqcot698 comparetotal 12.00000000 12 -> -1 +dqcot699 comparetotal 12.000000000 12 -> -1 + +-- old long operand checks +dqcot701 comparetotal 12345678000 1 -> 1 +dqcot702 comparetotal 1 12345678000 -> -1 +dqcot703 comparetotal 1234567800 1 -> 1 +dqcot704 comparetotal 1 1234567800 -> -1 +dqcot705 comparetotal 1234567890 1 -> 1 +dqcot706 comparetotal 1 1234567890 -> -1 +dqcot707 comparetotal 1234567891 1 -> 1 +dqcot708 comparetotal 1 1234567891 -> -1 +dqcot709 comparetotal 12345678901 1 -> 1 +dqcot710 comparetotal 1 12345678901 -> -1 +dqcot711 comparetotal 1234567896 1 -> 1 +dqcot712 comparetotal 1 1234567896 -> -1 +dqcot713 comparetotal -1234567891 1 -> -1 +dqcot714 comparetotal 1 -1234567891 -> 1 +dqcot715 comparetotal -12345678901 1 -> -1 +dqcot716 comparetotal 1 -12345678901 -> 1 +dqcot717 comparetotal -1234567896 1 -> -1 +dqcot718 comparetotal 1 -1234567896 -> 1 + +-- old residue cases +dqcot740 comparetotal 1 0.9999999 -> 1 +dqcot741 comparetotal 1 0.999999 -> 1 +dqcot742 comparetotal 1 0.99999 -> 1 +dqcot743 comparetotal 1 1.0000 -> 1 +dqcot744 comparetotal 1 1.00001 -> -1 +dqcot745 comparetotal 1 1.000001 -> -1 +dqcot746 comparetotal 1 1.0000001 -> -1 +dqcot750 comparetotal 0.9999999 1 -> -1 +dqcot751 comparetotal 0.999999 1 -> -1 +dqcot752 comparetotal 0.99999 1 -> -1 +dqcot753 comparetotal 1.0000 1 -> -1 +dqcot754 comparetotal 1.00001 1 -> 1 +dqcot755 comparetotal 1.000001 1 -> 1 +dqcot756 comparetotal 1.0000001 1 -> 1 + +-- Specials +dqcot780 comparetotal Inf -Inf -> 1 +dqcot781 comparetotal Inf -1000 -> 1 +dqcot782 comparetotal Inf -1 -> 1 +dqcot783 comparetotal Inf -0 -> 1 +dqcot784 comparetotal Inf 0 -> 1 +dqcot785 comparetotal Inf 1 -> 1 +dqcot786 comparetotal Inf 1000 -> 1 +dqcot787 comparetotal Inf Inf -> 0 +dqcot788 comparetotal -1000 Inf -> -1 +dqcot789 comparetotal -Inf Inf -> -1 +dqcot790 comparetotal -1 Inf -> -1 +dqcot791 comparetotal -0 Inf -> -1 +dqcot792 comparetotal 0 Inf -> -1 +dqcot793 comparetotal 1 Inf -> -1 +dqcot794 comparetotal 1000 Inf -> -1 +dqcot795 comparetotal Inf Inf -> 0 + +dqcot800 comparetotal -Inf -Inf -> 0 +dqcot801 comparetotal -Inf -1000 -> -1 +dqcot802 comparetotal -Inf -1 -> -1 +dqcot803 comparetotal -Inf -0 -> -1 +dqcot804 comparetotal -Inf 0 -> -1 +dqcot805 comparetotal -Inf 1 -> -1 +dqcot806 comparetotal -Inf 1000 -> -1 +dqcot807 comparetotal -Inf Inf -> -1 +dqcot808 comparetotal -Inf -Inf -> 0 +dqcot809 comparetotal -1000 -Inf -> 1 +dqcot810 comparetotal -1 -Inf -> 1 +dqcot811 comparetotal -0 -Inf -> 1 +dqcot812 comparetotal 0 -Inf -> 1 +dqcot813 comparetotal 1 -Inf -> 1 +dqcot814 comparetotal 1000 -Inf -> 1 +dqcot815 comparetotal Inf -Inf -> 1 + +dqcot821 comparetotal NaN -Inf -> 1 +dqcot822 comparetotal NaN -1000 -> 1 +dqcot823 comparetotal NaN -1 -> 1 +dqcot824 comparetotal NaN -0 -> 1 +dqcot825 comparetotal NaN 0 -> 1 +dqcot826 comparetotal NaN 1 -> 1 +dqcot827 comparetotal NaN 1000 -> 1 +dqcot828 comparetotal NaN Inf -> 1 +dqcot829 comparetotal NaN NaN -> 0 +dqcot830 comparetotal -Inf NaN -> -1 +dqcot831 comparetotal -1000 NaN -> -1 +dqcot832 comparetotal -1 NaN -> -1 +dqcot833 comparetotal -0 NaN -> -1 +dqcot834 comparetotal 0 NaN -> -1 +dqcot835 comparetotal 1 NaN -> -1 +dqcot836 comparetotal 1000 NaN -> -1 +dqcot837 comparetotal Inf NaN -> -1 +dqcot838 comparetotal -NaN -NaN -> 0 +dqcot839 comparetotal +NaN -NaN -> 1 +dqcot840 comparetotal -NaN +NaN -> -1 + +dqcot841 comparetotal sNaN -sNaN -> 1 +dqcot842 comparetotal sNaN -NaN -> 1 +dqcot843 comparetotal sNaN -Inf -> 1 +dqcot844 comparetotal sNaN -1000 -> 1 +dqcot845 comparetotal sNaN -1 -> 1 +dqcot846 comparetotal sNaN -0 -> 1 +dqcot847 comparetotal sNaN 0 -> 1 +dqcot848 comparetotal sNaN 1 -> 1 +dqcot849 comparetotal sNaN 1000 -> 1 +dqcot850 comparetotal sNaN NaN -> -1 +dqcot851 comparetotal sNaN sNaN -> 0 + +dqcot852 comparetotal -sNaN sNaN -> -1 +dqcot853 comparetotal -NaN sNaN -> -1 +dqcot854 comparetotal -Inf sNaN -> -1 +dqcot855 comparetotal -1000 sNaN -> -1 +dqcot856 comparetotal -1 sNaN -> -1 +dqcot857 comparetotal -0 sNaN -> -1 +dqcot858 comparetotal 0 sNaN -> -1 +dqcot859 comparetotal 1 sNaN -> -1 +dqcot860 comparetotal 1000 sNaN -> -1 +dqcot861 comparetotal Inf sNaN -> -1 +dqcot862 comparetotal NaN sNaN -> 1 +dqcot863 comparetotal sNaN sNaN -> 0 + +dqcot871 comparetotal -sNaN -sNaN -> 0 +dqcot872 comparetotal -sNaN -NaN -> 1 +dqcot873 comparetotal -sNaN -Inf -> -1 +dqcot874 comparetotal -sNaN -1000 -> -1 +dqcot875 comparetotal -sNaN -1 -> -1 +dqcot876 comparetotal -sNaN -0 -> -1 +dqcot877 comparetotal -sNaN 0 -> -1 +dqcot878 comparetotal -sNaN 1 -> -1 +dqcot879 comparetotal -sNaN 1000 -> -1 +dqcot880 comparetotal -sNaN NaN -> -1 +dqcot881 comparetotal -sNaN sNaN -> -1 + +dqcot882 comparetotal -sNaN -sNaN -> 0 +dqcot883 comparetotal -NaN -sNaN -> -1 +dqcot884 comparetotal -Inf -sNaN -> 1 +dqcot885 comparetotal -1000 -sNaN -> 1 +dqcot886 comparetotal -1 -sNaN -> 1 +dqcot887 comparetotal -0 -sNaN -> 1 +dqcot888 comparetotal 0 -sNaN -> 1 +dqcot889 comparetotal 1 -sNaN -> 1 +dqcot890 comparetotal 1000 -sNaN -> 1 +dqcot891 comparetotal Inf -sNaN -> 1 +dqcot892 comparetotal NaN -sNaN -> 1 +dqcot893 comparetotal sNaN -sNaN -> 1 + +-- NaNs with payload +dqcot960 comparetotal NaN9 -Inf -> 1 +dqcot961 comparetotal NaN8 999 -> 1 +dqcot962 comparetotal NaN77 Inf -> 1 +dqcot963 comparetotal -NaN67 NaN5 -> -1 +dqcot964 comparetotal -Inf -NaN4 -> 1 +dqcot965 comparetotal -999 -NaN33 -> 1 +dqcot966 comparetotal Inf NaN2 -> -1 + +dqcot970 comparetotal -NaN41 -NaN42 -> 1 +dqcot971 comparetotal +NaN41 -NaN42 -> 1 +dqcot972 comparetotal -NaN41 +NaN42 -> -1 +dqcot973 comparetotal +NaN41 +NaN42 -> -1 +dqcot974 comparetotal -NaN42 -NaN01 -> -1 +dqcot975 comparetotal +NaN42 -NaN01 -> 1 +dqcot976 comparetotal -NaN42 +NaN01 -> -1 +dqcot977 comparetotal +NaN42 +NaN01 -> 1 + +dqcot980 comparetotal -sNaN771 -sNaN772 -> 1 +dqcot981 comparetotal +sNaN771 -sNaN772 -> 1 +dqcot982 comparetotal -sNaN771 +sNaN772 -> -1 +dqcot983 comparetotal +sNaN771 +sNaN772 -> -1 +dqcot984 comparetotal -sNaN772 -sNaN771 -> -1 +dqcot985 comparetotal +sNaN772 -sNaN771 -> 1 +dqcot986 comparetotal -sNaN772 +sNaN771 -> -1 +dqcot987 comparetotal +sNaN772 +sNaN771 -> 1 + +dqcot991 comparetotal -sNaN99 -Inf -> -1 +dqcot992 comparetotal sNaN98 -11 -> 1 +dqcot993 comparetotal sNaN97 NaN -> -1 +dqcot994 comparetotal sNaN16 sNaN94 -> -1 +dqcot995 comparetotal NaN85 sNaN83 -> 1 +dqcot996 comparetotal -Inf sNaN92 -> -1 +dqcot997 comparetotal 088 sNaN81 -> -1 +dqcot998 comparetotal Inf sNaN90 -> -1 +dqcot999 comparetotal NaN -sNaN89 -> 1 + +-- spread zeros +dqcot1110 comparetotal 0E-6143 0 -> -1 +dqcot1111 comparetotal 0E-6143 -0 -> 1 +dqcot1112 comparetotal -0E-6143 0 -> -1 +dqcot1113 comparetotal -0E-6143 -0 -> 1 +dqcot1114 comparetotal 0E-6143 0E+6144 -> -1 +dqcot1115 comparetotal 0E-6143 -0E+6144 -> 1 +dqcot1116 comparetotal -0E-6143 0E+6144 -> -1 +dqcot1117 comparetotal -0E-6143 -0E+6144 -> 1 +dqcot1118 comparetotal 0 0E+6144 -> -1 +dqcot1119 comparetotal 0 -0E+6144 -> 1 +dqcot1120 comparetotal -0 0E+6144 -> -1 +dqcot1121 comparetotal -0 -0E+6144 -> 1 + +dqcot1130 comparetotal 0E+6144 0 -> 1 +dqcot1131 comparetotal 0E+6144 -0 -> 1 +dqcot1132 comparetotal -0E+6144 0 -> -1 +dqcot1133 comparetotal -0E+6144 -0 -> -1 +dqcot1134 comparetotal 0E+6144 0E-6143 -> 1 +dqcot1135 comparetotal 0E+6144 -0E-6143 -> 1 +dqcot1136 comparetotal -0E+6144 0E-6143 -> -1 +dqcot1137 comparetotal -0E+6144 -0E-6143 -> -1 +dqcot1138 comparetotal 0 0E-6143 -> 1 +dqcot1139 comparetotal 0 -0E-6143 -> 1 +dqcot1140 comparetotal -0 0E-6143 -> -1 +dqcot1141 comparetotal -0 -0E-6143 -> -1 + +-- Null tests +dqcot9990 comparetotal 10 # -> NaN Invalid_operation +dqcot9991 comparetotal # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqCompareTotalMag.decTest b/Lib/test/decimaltestdata/dqCompareTotalMag.decTest index 48b3e08..0b81bfb 100644 --- a/Lib/test/decimaltestdata/dqCompareTotalMag.decTest +++ b/Lib/test/decimaltestdata/dqCompareTotalMag.decTest @@ -1,706 +1,706 @@ ------------------------------------------------------------------------- --- dqCompareTotalMag.decTest -- decQuad comparison; abs. total order -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Note that we cannot assume add/subtract tests cover paths adequately, --- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necessary). --- Similarly, comparetotal will have some radically different paths --- than compare. - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqctm001 comparetotmag -2 -2 -> 0 -dqctm002 comparetotmag -2 -1 -> 1 -dqctm003 comparetotmag -2 0 -> 1 -dqctm004 comparetotmag -2 1 -> 1 -dqctm005 comparetotmag -2 2 -> 0 -dqctm006 comparetotmag -1 -2 -> -1 -dqctm007 comparetotmag -1 -1 -> 0 -dqctm008 comparetotmag -1 0 -> 1 -dqctm009 comparetotmag -1 1 -> 0 -dqctm010 comparetotmag -1 2 -> -1 -dqctm011 comparetotmag 0 -2 -> -1 -dqctm012 comparetotmag 0 -1 -> -1 -dqctm013 comparetotmag 0 0 -> 0 -dqctm014 comparetotmag 0 1 -> -1 -dqctm015 comparetotmag 0 2 -> -1 -dqctm016 comparetotmag 1 -2 -> -1 -dqctm017 comparetotmag 1 -1 -> 0 -dqctm018 comparetotmag 1 0 -> 1 -dqctm019 comparetotmag 1 1 -> 0 -dqctm020 comparetotmag 1 2 -> -1 -dqctm021 comparetotmag 2 -2 -> 0 -dqctm022 comparetotmag 2 -1 -> 1 -dqctm023 comparetotmag 2 0 -> 1 -dqctm025 comparetotmag 2 1 -> 1 -dqctm026 comparetotmag 2 2 -> 0 - -dqctm031 comparetotmag -20 -20 -> 0 -dqctm032 comparetotmag -20 -10 -> 1 -dqctm033 comparetotmag -20 00 -> 1 -dqctm034 comparetotmag -20 10 -> 1 -dqctm035 comparetotmag -20 20 -> 0 -dqctm036 comparetotmag -10 -20 -> -1 -dqctm037 comparetotmag -10 -10 -> 0 -dqctm038 comparetotmag -10 00 -> 1 -dqctm039 comparetotmag -10 10 -> 0 -dqctm040 comparetotmag -10 20 -> -1 -dqctm041 comparetotmag 00 -20 -> -1 -dqctm042 comparetotmag 00 -10 -> -1 -dqctm043 comparetotmag 00 00 -> 0 -dqctm044 comparetotmag 00 10 -> -1 -dqctm045 comparetotmag 00 20 -> -1 -dqctm046 comparetotmag 10 -20 -> -1 -dqctm047 comparetotmag 10 -10 -> 0 -dqctm048 comparetotmag 10 00 -> 1 -dqctm049 comparetotmag 10 10 -> 0 -dqctm050 comparetotmag 10 20 -> -1 -dqctm051 comparetotmag 20 -20 -> 0 -dqctm052 comparetotmag 20 -10 -> 1 -dqctm053 comparetotmag 20 00 -> 1 -dqctm055 comparetotmag 20 10 -> 1 -dqctm056 comparetotmag 20 20 -> 0 - -dqctm061 comparetotmag -2.0 -2.0 -> 0 -dqctm062 comparetotmag -2.0 -1.0 -> 1 -dqctm063 comparetotmag -2.0 0.0 -> 1 -dqctm064 comparetotmag -2.0 1.0 -> 1 -dqctm065 comparetotmag -2.0 2.0 -> 0 -dqctm066 comparetotmag -1.0 -2.0 -> -1 -dqctm067 comparetotmag -1.0 -1.0 -> 0 -dqctm068 comparetotmag -1.0 0.0 -> 1 -dqctm069 comparetotmag -1.0 1.0 -> 0 -dqctm070 comparetotmag -1.0 2.0 -> -1 -dqctm071 comparetotmag 0.0 -2.0 -> -1 -dqctm072 comparetotmag 0.0 -1.0 -> -1 -dqctm073 comparetotmag 0.0 0.0 -> 0 -dqctm074 comparetotmag 0.0 1.0 -> -1 -dqctm075 comparetotmag 0.0 2.0 -> -1 -dqctm076 comparetotmag 1.0 -2.0 -> -1 -dqctm077 comparetotmag 1.0 -1.0 -> 0 -dqctm078 comparetotmag 1.0 0.0 -> 1 -dqctm079 comparetotmag 1.0 1.0 -> 0 -dqctm080 comparetotmag 1.0 2.0 -> -1 -dqctm081 comparetotmag 2.0 -2.0 -> 0 -dqctm082 comparetotmag 2.0 -1.0 -> 1 -dqctm083 comparetotmag 2.0 0.0 -> 1 -dqctm085 comparetotmag 2.0 1.0 -> 1 -dqctm086 comparetotmag 2.0 2.0 -> 0 - --- now some cases which might overflow if subtract were used -dqctm090 comparetotmag 9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0 -dqctm091 comparetotmag -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0 -dqctm092 comparetotmag 9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0 -dqctm093 comparetotmag -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0 - --- some differing length/exponent cases --- in this first group, compare would compare all equal -dqctm100 comparetotmag 7.0 7.0 -> 0 -dqctm101 comparetotmag 7.0 7 -> -1 -dqctm102 comparetotmag 7 7.0 -> 1 -dqctm103 comparetotmag 7E+0 7.0 -> 1 -dqctm104 comparetotmag 70E-1 7.0 -> 0 -dqctm105 comparetotmag 0.7E+1 7 -> 0 -dqctm106 comparetotmag 70E-1 7 -> -1 -dqctm107 comparetotmag 7.0 7E+0 -> -1 -dqctm108 comparetotmag 7.0 70E-1 -> 0 -dqctm109 comparetotmag 7 0.7E+1 -> 0 -dqctm110 comparetotmag 7 70E-1 -> 1 - -dqctm120 comparetotmag 8.0 7.0 -> 1 -dqctm121 comparetotmag 8.0 7 -> 1 -dqctm122 comparetotmag 8 7.0 -> 1 -dqctm123 comparetotmag 8E+0 7.0 -> 1 -dqctm124 comparetotmag 80E-1 7.0 -> 1 -dqctm125 comparetotmag 0.8E+1 7 -> 1 -dqctm126 comparetotmag 80E-1 7 -> 1 -dqctm127 comparetotmag 8.0 7E+0 -> 1 -dqctm128 comparetotmag 8.0 70E-1 -> 1 -dqctm129 comparetotmag 8 0.7E+1 -> 1 -dqctm130 comparetotmag 8 70E-1 -> 1 - -dqctm140 comparetotmag 8.0 9.0 -> -1 -dqctm141 comparetotmag 8.0 9 -> -1 -dqctm142 comparetotmag 8 9.0 -> -1 -dqctm143 comparetotmag 8E+0 9.0 -> -1 -dqctm144 comparetotmag 80E-1 9.0 -> -1 -dqctm145 comparetotmag 0.8E+1 9 -> -1 -dqctm146 comparetotmag 80E-1 9 -> -1 -dqctm147 comparetotmag 8.0 9E+0 -> -1 -dqctm148 comparetotmag 8.0 90E-1 -> -1 -dqctm149 comparetotmag 8 0.9E+1 -> -1 -dqctm150 comparetotmag 8 90E-1 -> -1 - --- and again, with sign changes -+ .. -dqctm200 comparetotmag -7.0 7.0 -> 0 -dqctm201 comparetotmag -7.0 7 -> -1 -dqctm202 comparetotmag -7 7.0 -> 1 -dqctm203 comparetotmag -7E+0 7.0 -> 1 -dqctm204 comparetotmag -70E-1 7.0 -> 0 -dqctm205 comparetotmag -0.7E+1 7 -> 0 -dqctm206 comparetotmag -70E-1 7 -> -1 -dqctm207 comparetotmag -7.0 7E+0 -> -1 -dqctm208 comparetotmag -7.0 70E-1 -> 0 -dqctm209 comparetotmag -7 0.7E+1 -> 0 -dqctm210 comparetotmag -7 70E-1 -> 1 - -dqctm220 comparetotmag -8.0 7.0 -> 1 -dqctm221 comparetotmag -8.0 7 -> 1 -dqctm222 comparetotmag -8 7.0 -> 1 -dqctm223 comparetotmag -8E+0 7.0 -> 1 -dqctm224 comparetotmag -80E-1 7.0 -> 1 -dqctm225 comparetotmag -0.8E+1 7 -> 1 -dqctm226 comparetotmag -80E-1 7 -> 1 -dqctm227 comparetotmag -8.0 7E+0 -> 1 -dqctm228 comparetotmag -8.0 70E-1 -> 1 -dqctm229 comparetotmag -8 0.7E+1 -> 1 -dqctm230 comparetotmag -8 70E-1 -> 1 - -dqctm240 comparetotmag -8.0 9.0 -> -1 -dqctm241 comparetotmag -8.0 9 -> -1 -dqctm242 comparetotmag -8 9.0 -> -1 -dqctm243 comparetotmag -8E+0 9.0 -> -1 -dqctm244 comparetotmag -80E-1 9.0 -> -1 -dqctm245 comparetotmag -0.8E+1 9 -> -1 -dqctm246 comparetotmag -80E-1 9 -> -1 -dqctm247 comparetotmag -8.0 9E+0 -> -1 -dqctm248 comparetotmag -8.0 90E-1 -> -1 -dqctm249 comparetotmag -8 0.9E+1 -> -1 -dqctm250 comparetotmag -8 90E-1 -> -1 - --- and again, with sign changes +- .. -dqctm300 comparetotmag 7.0 -7.0 -> 0 -dqctm301 comparetotmag 7.0 -7 -> -1 -dqctm302 comparetotmag 7 -7.0 -> 1 -dqctm303 comparetotmag 7E+0 -7.0 -> 1 -dqctm304 comparetotmag 70E-1 -7.0 -> 0 -dqctm305 comparetotmag .7E+1 -7 -> 0 -dqctm306 comparetotmag 70E-1 -7 -> -1 -dqctm307 comparetotmag 7.0 -7E+0 -> -1 -dqctm308 comparetotmag 7.0 -70E-1 -> 0 -dqctm309 comparetotmag 7 -.7E+1 -> 0 -dqctm310 comparetotmag 7 -70E-1 -> 1 - -dqctm320 comparetotmag 8.0 -7.0 -> 1 -dqctm321 comparetotmag 8.0 -7 -> 1 -dqctm322 comparetotmag 8 -7.0 -> 1 -dqctm323 comparetotmag 8E+0 -7.0 -> 1 -dqctm324 comparetotmag 80E-1 -7.0 -> 1 -dqctm325 comparetotmag .8E+1 -7 -> 1 -dqctm326 comparetotmag 80E-1 -7 -> 1 -dqctm327 comparetotmag 8.0 -7E+0 -> 1 -dqctm328 comparetotmag 8.0 -70E-1 -> 1 -dqctm329 comparetotmag 8 -.7E+1 -> 1 -dqctm330 comparetotmag 8 -70E-1 -> 1 - -dqctm340 comparetotmag 8.0 -9.0 -> -1 -dqctm341 comparetotmag 8.0 -9 -> -1 -dqctm342 comparetotmag 8 -9.0 -> -1 -dqctm343 comparetotmag 8E+0 -9.0 -> -1 -dqctm344 comparetotmag 80E-1 -9.0 -> -1 -dqctm345 comparetotmag .8E+1 -9 -> -1 -dqctm346 comparetotmag 80E-1 -9 -> -1 -dqctm347 comparetotmag 8.0 -9E+0 -> -1 -dqctm348 comparetotmag 8.0 -90E-1 -> -1 -dqctm349 comparetotmag 8 -.9E+1 -> -1 -dqctm350 comparetotmag 8 -90E-1 -> -1 - --- and again, with sign changes -- .. -dqctm400 comparetotmag -7.0 -7.0 -> 0 -dqctm401 comparetotmag -7.0 -7 -> -1 -dqctm402 comparetotmag -7 -7.0 -> 1 -dqctm403 comparetotmag -7E+0 -7.0 -> 1 -dqctm404 comparetotmag -70E-1 -7.0 -> 0 -dqctm405 comparetotmag -.7E+1 -7 -> 0 -dqctm406 comparetotmag -70E-1 -7 -> -1 -dqctm407 comparetotmag -7.0 -7E+0 -> -1 -dqctm408 comparetotmag -7.0 -70E-1 -> 0 -dqctm409 comparetotmag -7 -.7E+1 -> 0 -dqctm410 comparetotmag -7 -70E-1 -> 1 - -dqctm420 comparetotmag -8.0 -7.0 -> 1 -dqctm421 comparetotmag -8.0 -7 -> 1 -dqctm422 comparetotmag -8 -7.0 -> 1 -dqctm423 comparetotmag -8E+0 -7.0 -> 1 -dqctm424 comparetotmag -80E-1 -7.0 -> 1 -dqctm425 comparetotmag -.8E+1 -7 -> 1 -dqctm426 comparetotmag -80E-1 -7 -> 1 -dqctm427 comparetotmag -8.0 -7E+0 -> 1 -dqctm428 comparetotmag -8.0 -70E-1 -> 1 -dqctm429 comparetotmag -8 -.7E+1 -> 1 -dqctm430 comparetotmag -8 -70E-1 -> 1 - -dqctm440 comparetotmag -8.0 -9.0 -> -1 -dqctm441 comparetotmag -8.0 -9 -> -1 -dqctm442 comparetotmag -8 -9.0 -> -1 -dqctm443 comparetotmag -8E+0 -9.0 -> -1 -dqctm444 comparetotmag -80E-1 -9.0 -> -1 -dqctm445 comparetotmag -.8E+1 -9 -> -1 -dqctm446 comparetotmag -80E-1 -9 -> -1 -dqctm447 comparetotmag -8.0 -9E+0 -> -1 -dqctm448 comparetotmag -8.0 -90E-1 -> -1 -dqctm449 comparetotmag -8 -.9E+1 -> -1 -dqctm450 comparetotmag -8 -90E-1 -> -1 - - --- testcases that subtract to lots of zeros at boundaries [pgr] -dqctm473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1 -dqctm474 comparetotmag 123.456000000000E+89 123.456E+89 -> -1 -dqctm475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1 -dqctm476 comparetotmag 123.4560000000E+89 123.456E+89 -> -1 -dqctm477 comparetotmag 123.456000000E-89 123.456E-89 -> -1 -dqctm478 comparetotmag 123.45600000E+89 123.456E+89 -> -1 -dqctm479 comparetotmag 123.4560000E-89 123.456E-89 -> -1 -dqctm480 comparetotmag 123.456000E+89 123.456E+89 -> -1 -dqctm481 comparetotmag 123.45600E-89 123.456E-89 -> -1 -dqctm482 comparetotmag 123.4560E+89 123.456E+89 -> -1 -dqctm483 comparetotmag 123.456E-89 123.456E-89 -> 0 -dqctm487 comparetotmag 123.456E+89 123.4560000000000E+89 -> 1 -dqctm488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1 -dqctm489 comparetotmag 123.456E+89 123.45600000000E+89 -> 1 -dqctm490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1 -dqctm491 comparetotmag 123.456E+89 123.456000000E+89 -> 1 -dqctm492 comparetotmag 123.456E-89 123.45600000E-89 -> 1 -dqctm493 comparetotmag 123.456E+89 123.4560000E+89 -> 1 -dqctm494 comparetotmag 123.456E-89 123.456000E-89 -> 1 -dqctm495 comparetotmag 123.456E+89 123.45600E+89 -> 1 -dqctm496 comparetotmag 123.456E-89 123.4560E-89 -> 1 -dqctm497 comparetotmag 123.456E+89 123.456E+89 -> 0 - --- wide-ranging, around precision; signs equal -dqctm498 comparetotmag 1 1E-17 -> 1 -dqctm499 comparetotmag 1 1E-16 -> 1 -dqctm500 comparetotmag 1 1E-15 -> 1 -dqctm501 comparetotmag 1 1E-14 -> 1 -dqctm502 comparetotmag 1 1E-13 -> 1 -dqctm503 comparetotmag 1 1E-12 -> 1 -dqctm504 comparetotmag 1 1E-11 -> 1 -dqctm505 comparetotmag 1 1E-10 -> 1 -dqctm506 comparetotmag 1 1E-9 -> 1 -dqctm507 comparetotmag 1 1E-8 -> 1 -dqctm508 comparetotmag 1 1E-7 -> 1 -dqctm509 comparetotmag 1 1E-6 -> 1 -dqctm510 comparetotmag 1 1E-5 -> 1 -dqctm511 comparetotmag 1 1E-4 -> 1 -dqctm512 comparetotmag 1 1E-3 -> 1 -dqctm513 comparetotmag 1 1E-2 -> 1 -dqctm514 comparetotmag 1 1E-1 -> 1 -dqctm515 comparetotmag 1 1E-0 -> 0 -dqctm516 comparetotmag 1 1E+1 -> -1 -dqctm517 comparetotmag 1 1E+2 -> -1 -dqctm518 comparetotmag 1 1E+3 -> -1 -dqctm519 comparetotmag 1 1E+4 -> -1 -dqctm521 comparetotmag 1 1E+5 -> -1 -dqctm522 comparetotmag 1 1E+6 -> -1 -dqctm523 comparetotmag 1 1E+7 -> -1 -dqctm524 comparetotmag 1 1E+8 -> -1 -dqctm525 comparetotmag 1 1E+9 -> -1 -dqctm526 comparetotmag 1 1E+10 -> -1 -dqctm527 comparetotmag 1 1E+11 -> -1 -dqctm528 comparetotmag 1 1E+12 -> -1 -dqctm529 comparetotmag 1 1E+13 -> -1 -dqctm530 comparetotmag 1 1E+14 -> -1 -dqctm531 comparetotmag 1 1E+15 -> -1 -dqctm532 comparetotmag 1 1E+16 -> -1 -dqctm533 comparetotmag 1 1E+17 -> -1 --- LR swap -dqctm538 comparetotmag 1E-17 1 -> -1 -dqctm539 comparetotmag 1E-16 1 -> -1 -dqctm540 comparetotmag 1E-15 1 -> -1 -dqctm541 comparetotmag 1E-14 1 -> -1 -dqctm542 comparetotmag 1E-13 1 -> -1 -dqctm543 comparetotmag 1E-12 1 -> -1 -dqctm544 comparetotmag 1E-11 1 -> -1 -dqctm545 comparetotmag 1E-10 1 -> -1 -dqctm546 comparetotmag 1E-9 1 -> -1 -dqctm547 comparetotmag 1E-8 1 -> -1 -dqctm548 comparetotmag 1E-7 1 -> -1 -dqctm549 comparetotmag 1E-6 1 -> -1 -dqctm550 comparetotmag 1E-5 1 -> -1 -dqctm551 comparetotmag 1E-4 1 -> -1 -dqctm552 comparetotmag 1E-3 1 -> -1 -dqctm553 comparetotmag 1E-2 1 -> -1 -dqctm554 comparetotmag 1E-1 1 -> -1 -dqctm555 comparetotmag 1E-0 1 -> 0 -dqctm556 comparetotmag 1E+1 1 -> 1 -dqctm557 comparetotmag 1E+2 1 -> 1 -dqctm558 comparetotmag 1E+3 1 -> 1 -dqctm559 comparetotmag 1E+4 1 -> 1 -dqctm561 comparetotmag 1E+5 1 -> 1 -dqctm562 comparetotmag 1E+6 1 -> 1 -dqctm563 comparetotmag 1E+7 1 -> 1 -dqctm564 comparetotmag 1E+8 1 -> 1 -dqctm565 comparetotmag 1E+9 1 -> 1 -dqctm566 comparetotmag 1E+10 1 -> 1 -dqctm567 comparetotmag 1E+11 1 -> 1 -dqctm568 comparetotmag 1E+12 1 -> 1 -dqctm569 comparetotmag 1E+13 1 -> 1 -dqctm570 comparetotmag 1E+14 1 -> 1 -dqctm571 comparetotmag 1E+15 1 -> 1 -dqctm572 comparetotmag 1E+16 1 -> 1 -dqctm573 comparetotmag 1E+17 1 -> 1 --- similar with a useful coefficient, one side only -dqctm578 comparetotmag 0.000000987654321 1E-17 -> 1 -dqctm579 comparetotmag 0.000000987654321 1E-16 -> 1 -dqctm580 comparetotmag 0.000000987654321 1E-15 -> 1 -dqctm581 comparetotmag 0.000000987654321 1E-14 -> 1 -dqctm582 comparetotmag 0.000000987654321 1E-13 -> 1 -dqctm583 comparetotmag 0.000000987654321 1E-12 -> 1 -dqctm584 comparetotmag 0.000000987654321 1E-11 -> 1 -dqctm585 comparetotmag 0.000000987654321 1E-10 -> 1 -dqctm586 comparetotmag 0.000000987654321 1E-9 -> 1 -dqctm587 comparetotmag 0.000000987654321 1E-8 -> 1 -dqctm588 comparetotmag 0.000000987654321 1E-7 -> 1 -dqctm589 comparetotmag 0.000000987654321 1E-6 -> -1 -dqctm590 comparetotmag 0.000000987654321 1E-5 -> -1 -dqctm591 comparetotmag 0.000000987654321 1E-4 -> -1 -dqctm592 comparetotmag 0.000000987654321 1E-3 -> -1 -dqctm593 comparetotmag 0.000000987654321 1E-2 -> -1 -dqctm594 comparetotmag 0.000000987654321 1E-1 -> -1 -dqctm595 comparetotmag 0.000000987654321 1E-0 -> -1 -dqctm596 comparetotmag 0.000000987654321 1E+1 -> -1 -dqctm597 comparetotmag 0.000000987654321 1E+2 -> -1 -dqctm598 comparetotmag 0.000000987654321 1E+3 -> -1 -dqctm599 comparetotmag 0.000000987654321 1E+4 -> -1 - --- check some unit-y traps -dqctm600 comparetotmag 12 12.2345 -> -1 -dqctm601 comparetotmag 12.0 12.2345 -> -1 -dqctm602 comparetotmag 12.00 12.2345 -> -1 -dqctm603 comparetotmag 12.000 12.2345 -> -1 -dqctm604 comparetotmag 12.0000 12.2345 -> -1 -dqctm605 comparetotmag 12.00000 12.2345 -> -1 -dqctm606 comparetotmag 12.000000 12.2345 -> -1 -dqctm607 comparetotmag 12.0000000 12.2345 -> -1 -dqctm608 comparetotmag 12.00000000 12.2345 -> -1 -dqctm609 comparetotmag 12.000000000 12.2345 -> -1 -dqctm610 comparetotmag 12.1234 12 -> 1 -dqctm611 comparetotmag 12.1234 12.0 -> 1 -dqctm612 comparetotmag 12.1234 12.00 -> 1 -dqctm613 comparetotmag 12.1234 12.000 -> 1 -dqctm614 comparetotmag 12.1234 12.0000 -> 1 -dqctm615 comparetotmag 12.1234 12.00000 -> 1 -dqctm616 comparetotmag 12.1234 12.000000 -> 1 -dqctm617 comparetotmag 12.1234 12.0000000 -> 1 -dqctm618 comparetotmag 12.1234 12.00000000 -> 1 -dqctm619 comparetotmag 12.1234 12.000000000 -> 1 -dqctm620 comparetotmag -12 -12.2345 -> -1 -dqctm621 comparetotmag -12.0 -12.2345 -> -1 -dqctm622 comparetotmag -12.00 -12.2345 -> -1 -dqctm623 comparetotmag -12.000 -12.2345 -> -1 -dqctm624 comparetotmag -12.0000 -12.2345 -> -1 -dqctm625 comparetotmag -12.00000 -12.2345 -> -1 -dqctm626 comparetotmag -12.000000 -12.2345 -> -1 -dqctm627 comparetotmag -12.0000000 -12.2345 -> -1 -dqctm628 comparetotmag -12.00000000 -12.2345 -> -1 -dqctm629 comparetotmag -12.000000000 -12.2345 -> -1 -dqctm630 comparetotmag -12.1234 -12 -> 1 -dqctm631 comparetotmag -12.1234 -12.0 -> 1 -dqctm632 comparetotmag -12.1234 -12.00 -> 1 -dqctm633 comparetotmag -12.1234 -12.000 -> 1 -dqctm634 comparetotmag -12.1234 -12.0000 -> 1 -dqctm635 comparetotmag -12.1234 -12.00000 -> 1 -dqctm636 comparetotmag -12.1234 -12.000000 -> 1 -dqctm637 comparetotmag -12.1234 -12.0000000 -> 1 -dqctm638 comparetotmag -12.1234 -12.00000000 -> 1 -dqctm639 comparetotmag -12.1234 -12.000000000 -> 1 - --- extended zeros -dqctm640 comparetotmag 0 0 -> 0 -dqctm641 comparetotmag 0 -0 -> 0 -dqctm642 comparetotmag 0 -0.0 -> 1 -dqctm643 comparetotmag 0 0.0 -> 1 -dqctm644 comparetotmag -0 0 -> 0 -dqctm645 comparetotmag -0 -0 -> 0 -dqctm646 comparetotmag -0 -0.0 -> 1 -dqctm647 comparetotmag -0 0.0 -> 1 -dqctm648 comparetotmag 0.0 0 -> -1 -dqctm649 comparetotmag 0.0 -0 -> -1 -dqctm650 comparetotmag 0.0 -0.0 -> 0 -dqctm651 comparetotmag 0.0 0.0 -> 0 -dqctm652 comparetotmag -0.0 0 -> -1 -dqctm653 comparetotmag -0.0 -0 -> -1 -dqctm654 comparetotmag -0.0 -0.0 -> 0 -dqctm655 comparetotmag -0.0 0.0 -> 0 - -dqctm656 comparetotmag -0E1 0.0 -> 1 -dqctm657 comparetotmag -0E2 0.0 -> 1 -dqctm658 comparetotmag 0E1 0.0 -> 1 -dqctm659 comparetotmag 0E2 0.0 -> 1 -dqctm660 comparetotmag -0E1 0 -> 1 -dqctm661 comparetotmag -0E2 0 -> 1 -dqctm662 comparetotmag 0E1 0 -> 1 -dqctm663 comparetotmag 0E2 0 -> 1 -dqctm664 comparetotmag -0E1 -0E1 -> 0 -dqctm665 comparetotmag -0E2 -0E1 -> 1 -dqctm666 comparetotmag 0E1 -0E1 -> 0 -dqctm667 comparetotmag 0E2 -0E1 -> 1 -dqctm668 comparetotmag -0E1 -0E2 -> -1 -dqctm669 comparetotmag -0E2 -0E2 -> 0 -dqctm670 comparetotmag 0E1 -0E2 -> -1 -dqctm671 comparetotmag 0E2 -0E2 -> 0 -dqctm672 comparetotmag -0E1 0E1 -> 0 -dqctm673 comparetotmag -0E2 0E1 -> 1 -dqctm674 comparetotmag 0E1 0E1 -> 0 -dqctm675 comparetotmag 0E2 0E1 -> 1 -dqctm676 comparetotmag -0E1 0E2 -> -1 -dqctm677 comparetotmag -0E2 0E2 -> 0 -dqctm678 comparetotmag 0E1 0E2 -> -1 -dqctm679 comparetotmag 0E2 0E2 -> 0 - --- trailing zeros; unit-y -dqctm680 comparetotmag 12 12 -> 0 -dqctm681 comparetotmag 12 12.0 -> 1 -dqctm682 comparetotmag 12 12.00 -> 1 -dqctm683 comparetotmag 12 12.000 -> 1 -dqctm684 comparetotmag 12 12.0000 -> 1 -dqctm685 comparetotmag 12 12.00000 -> 1 -dqctm686 comparetotmag 12 12.000000 -> 1 -dqctm687 comparetotmag 12 12.0000000 -> 1 -dqctm688 comparetotmag 12 12.00000000 -> 1 -dqctm689 comparetotmag 12 12.000000000 -> 1 -dqctm690 comparetotmag 12 12 -> 0 -dqctm691 comparetotmag 12.0 12 -> -1 -dqctm692 comparetotmag 12.00 12 -> -1 -dqctm693 comparetotmag 12.000 12 -> -1 -dqctm694 comparetotmag 12.0000 12 -> -1 -dqctm695 comparetotmag 12.00000 12 -> -1 -dqctm696 comparetotmag 12.000000 12 -> -1 -dqctm697 comparetotmag 12.0000000 12 -> -1 -dqctm698 comparetotmag 12.00000000 12 -> -1 -dqctm699 comparetotmag 12.000000000 12 -> -1 - --- old long operand checks -dqctm701 comparetotmag 12345678000 1 -> 1 -dqctm702 comparetotmag 1 12345678000 -> -1 -dqctm703 comparetotmag 1234567800 1 -> 1 -dqctm704 comparetotmag 1 1234567800 -> -1 -dqctm705 comparetotmag 1234567890 1 -> 1 -dqctm706 comparetotmag 1 1234567890 -> -1 -dqctm707 comparetotmag 1234567891 1 -> 1 -dqctm708 comparetotmag 1 1234567891 -> -1 -dqctm709 comparetotmag 12345678901 1 -> 1 -dqctm710 comparetotmag 1 12345678901 -> -1 -dqctm711 comparetotmag 1234567896 1 -> 1 -dqctm712 comparetotmag 1 1234567896 -> -1 -dqctm713 comparetotmag -1234567891 1 -> 1 -dqctm714 comparetotmag 1 -1234567891 -> -1 -dqctm715 comparetotmag -12345678901 1 -> 1 -dqctm716 comparetotmag 1 -12345678901 -> -1 -dqctm717 comparetotmag -1234567896 1 -> 1 -dqctm718 comparetotmag 1 -1234567896 -> -1 - --- old residue cases -dqctm740 comparetotmag 1 0.9999999 -> 1 -dqctm741 comparetotmag 1 0.999999 -> 1 -dqctm742 comparetotmag 1 0.99999 -> 1 -dqctm743 comparetotmag 1 1.0000 -> 1 -dqctm744 comparetotmag 1 1.00001 -> -1 -dqctm745 comparetotmag 1 1.000001 -> -1 -dqctm746 comparetotmag 1 1.0000001 -> -1 -dqctm750 comparetotmag 0.9999999 1 -> -1 -dqctm751 comparetotmag 0.999999 1 -> -1 -dqctm752 comparetotmag 0.99999 1 -> -1 -dqctm753 comparetotmag 1.0000 1 -> -1 -dqctm754 comparetotmag 1.00001 1 -> 1 -dqctm755 comparetotmag 1.000001 1 -> 1 -dqctm756 comparetotmag 1.0000001 1 -> 1 - --- Specials -dqctm780 comparetotmag Inf -Inf -> 0 -dqctm781 comparetotmag Inf -1000 -> 1 -dqctm782 comparetotmag Inf -1 -> 1 -dqctm783 comparetotmag Inf -0 -> 1 -dqctm784 comparetotmag Inf 0 -> 1 -dqctm785 comparetotmag Inf 1 -> 1 -dqctm786 comparetotmag Inf 1000 -> 1 -dqctm787 comparetotmag Inf Inf -> 0 -dqctm788 comparetotmag -1000 Inf -> -1 -dqctm789 comparetotmag -Inf Inf -> 0 -dqctm790 comparetotmag -1 Inf -> -1 -dqctm791 comparetotmag -0 Inf -> -1 -dqctm792 comparetotmag 0 Inf -> -1 -dqctm793 comparetotmag 1 Inf -> -1 -dqctm794 comparetotmag 1000 Inf -> -1 -dqctm795 comparetotmag Inf Inf -> 0 - -dqctm800 comparetotmag -Inf -Inf -> 0 -dqctm801 comparetotmag -Inf -1000 -> 1 -dqctm802 comparetotmag -Inf -1 -> 1 -dqctm803 comparetotmag -Inf -0 -> 1 -dqctm804 comparetotmag -Inf 0 -> 1 -dqctm805 comparetotmag -Inf 1 -> 1 -dqctm806 comparetotmag -Inf 1000 -> 1 -dqctm807 comparetotmag -Inf Inf -> 0 -dqctm808 comparetotmag -Inf -Inf -> 0 -dqctm809 comparetotmag -1000 -Inf -> -1 -dqctm810 comparetotmag -1 -Inf -> -1 -dqctm811 comparetotmag -0 -Inf -> -1 -dqctm812 comparetotmag 0 -Inf -> -1 -dqctm813 comparetotmag 1 -Inf -> -1 -dqctm814 comparetotmag 1000 -Inf -> -1 -dqctm815 comparetotmag Inf -Inf -> 0 - -dqctm821 comparetotmag NaN -Inf -> 1 -dqctm822 comparetotmag NaN -1000 -> 1 -dqctm823 comparetotmag NaN -1 -> 1 -dqctm824 comparetotmag NaN -0 -> 1 -dqctm825 comparetotmag NaN 0 -> 1 -dqctm826 comparetotmag NaN 1 -> 1 -dqctm827 comparetotmag NaN 1000 -> 1 -dqctm828 comparetotmag NaN Inf -> 1 -dqctm829 comparetotmag NaN NaN -> 0 -dqctm830 comparetotmag -Inf NaN -> -1 -dqctm831 comparetotmag -1000 NaN -> -1 -dqctm832 comparetotmag -1 NaN -> -1 -dqctm833 comparetotmag -0 NaN -> -1 -dqctm834 comparetotmag 0 NaN -> -1 -dqctm835 comparetotmag 1 NaN -> -1 -dqctm836 comparetotmag 1000 NaN -> -1 -dqctm837 comparetotmag Inf NaN -> -1 -dqctm838 comparetotmag -NaN -NaN -> 0 -dqctm839 comparetotmag +NaN -NaN -> 0 -dqctm840 comparetotmag -NaN +NaN -> 0 - -dqctm841 comparetotmag sNaN -sNaN -> 0 -dqctm842 comparetotmag sNaN -NaN -> -1 -dqctm843 comparetotmag sNaN -Inf -> 1 -dqctm844 comparetotmag sNaN -1000 -> 1 -dqctm845 comparetotmag sNaN -1 -> 1 -dqctm846 comparetotmag sNaN -0 -> 1 -dqctm847 comparetotmag sNaN 0 -> 1 -dqctm848 comparetotmag sNaN 1 -> 1 -dqctm849 comparetotmag sNaN 1000 -> 1 -dqctm850 comparetotmag sNaN NaN -> -1 -dqctm851 comparetotmag sNaN sNaN -> 0 - -dqctm852 comparetotmag -sNaN sNaN -> 0 -dqctm853 comparetotmag -NaN sNaN -> 1 -dqctm854 comparetotmag -Inf sNaN -> -1 -dqctm855 comparetotmag -1000 sNaN -> -1 -dqctm856 comparetotmag -1 sNaN -> -1 -dqctm857 comparetotmag -0 sNaN -> -1 -dqctm858 comparetotmag 0 sNaN -> -1 -dqctm859 comparetotmag 1 sNaN -> -1 -dqctm860 comparetotmag 1000 sNaN -> -1 -dqctm861 comparetotmag Inf sNaN -> -1 -dqctm862 comparetotmag NaN sNaN -> 1 -dqctm863 comparetotmag sNaN sNaN -> 0 - -dqctm871 comparetotmag -sNaN -sNaN -> 0 -dqctm872 comparetotmag -sNaN -NaN -> -1 -dqctm873 comparetotmag -sNaN -Inf -> 1 -dqctm874 comparetotmag -sNaN -1000 -> 1 -dqctm875 comparetotmag -sNaN -1 -> 1 -dqctm876 comparetotmag -sNaN -0 -> 1 -dqctm877 comparetotmag -sNaN 0 -> 1 -dqctm878 comparetotmag -sNaN 1 -> 1 -dqctm879 comparetotmag -sNaN 1000 -> 1 -dqctm880 comparetotmag -sNaN NaN -> -1 -dqctm881 comparetotmag -sNaN sNaN -> 0 - -dqctm882 comparetotmag -sNaN -sNaN -> 0 -dqctm883 comparetotmag -NaN -sNaN -> 1 -dqctm884 comparetotmag -Inf -sNaN -> -1 -dqctm885 comparetotmag -1000 -sNaN -> -1 -dqctm886 comparetotmag -1 -sNaN -> -1 -dqctm887 comparetotmag -0 -sNaN -> -1 -dqctm888 comparetotmag 0 -sNaN -> -1 -dqctm889 comparetotmag 1 -sNaN -> -1 -dqctm890 comparetotmag 1000 -sNaN -> -1 -dqctm891 comparetotmag Inf -sNaN -> -1 -dqctm892 comparetotmag NaN -sNaN -> 1 -dqctm893 comparetotmag sNaN -sNaN -> 0 - --- NaNs with payload -dqctm960 comparetotmag NaN9 -Inf -> 1 -dqctm961 comparetotmag NaN8 999 -> 1 -dqctm962 comparetotmag NaN77 Inf -> 1 -dqctm963 comparetotmag -NaN67 NaN5 -> 1 -dqctm964 comparetotmag -Inf -NaN4 -> -1 -dqctm965 comparetotmag -999 -NaN33 -> -1 -dqctm966 comparetotmag Inf NaN2 -> -1 - -dqctm970 comparetotmag -NaN41 -NaN42 -> -1 -dqctm971 comparetotmag +NaN41 -NaN42 -> -1 -dqctm972 comparetotmag -NaN41 +NaN42 -> -1 -dqctm973 comparetotmag +NaN41 +NaN42 -> -1 -dqctm974 comparetotmag -NaN42 -NaN01 -> 1 -dqctm975 comparetotmag +NaN42 -NaN01 -> 1 -dqctm976 comparetotmag -NaN42 +NaN01 -> 1 -dqctm977 comparetotmag +NaN42 +NaN01 -> 1 - -dqctm980 comparetotmag -sNaN771 -sNaN772 -> -1 -dqctm981 comparetotmag +sNaN771 -sNaN772 -> -1 -dqctm982 comparetotmag -sNaN771 +sNaN772 -> -1 -dqctm983 comparetotmag +sNaN771 +sNaN772 -> -1 -dqctm984 comparetotmag -sNaN772 -sNaN771 -> 1 -dqctm985 comparetotmag +sNaN772 -sNaN771 -> 1 -dqctm986 comparetotmag -sNaN772 +sNaN771 -> 1 -dqctm987 comparetotmag +sNaN772 +sNaN771 -> 1 - -dqctm991 comparetotmag -sNaN99 -Inf -> 1 -dqctm992 comparetotmag sNaN98 -11 -> 1 -dqctm993 comparetotmag sNaN97 NaN -> -1 -dqctm994 comparetotmag sNaN16 sNaN94 -> -1 -dqctm995 comparetotmag NaN85 sNaN83 -> 1 -dqctm996 comparetotmag -Inf sNaN92 -> -1 -dqctm997 comparetotmag 088 sNaN81 -> -1 -dqctm998 comparetotmag Inf sNaN90 -> -1 -dqctm999 comparetotmag NaN -sNaN89 -> 1 - --- spread zeros -dqctm1110 comparetotmag 0E-6143 0 -> -1 -dqctm1111 comparetotmag 0E-6143 -0 -> -1 -dqctm1112 comparetotmag -0E-6143 0 -> -1 -dqctm1113 comparetotmag -0E-6143 -0 -> -1 -dqctm1114 comparetotmag 0E-6143 0E+6144 -> -1 -dqctm1115 comparetotmag 0E-6143 -0E+6144 -> -1 -dqctm1116 comparetotmag -0E-6143 0E+6144 -> -1 -dqctm1117 comparetotmag -0E-6143 -0E+6144 -> -1 -dqctm1118 comparetotmag 0 0E+6144 -> -1 -dqctm1119 comparetotmag 0 -0E+6144 -> -1 -dqctm1120 comparetotmag -0 0E+6144 -> -1 -dqctm1121 comparetotmag -0 -0E+6144 -> -1 - -dqctm1130 comparetotmag 0E+6144 0 -> 1 -dqctm1131 comparetotmag 0E+6144 -0 -> 1 -dqctm1132 comparetotmag -0E+6144 0 -> 1 -dqctm1133 comparetotmag -0E+6144 -0 -> 1 -dqctm1134 comparetotmag 0E+6144 0E-6143 -> 1 -dqctm1135 comparetotmag 0E+6144 -0E-6143 -> 1 -dqctm1136 comparetotmag -0E+6144 0E-6143 -> 1 -dqctm1137 comparetotmag -0E+6144 -0E-6143 -> 1 -dqctm1138 comparetotmag 0 0E-6143 -> 1 -dqctm1139 comparetotmag 0 -0E-6143 -> 1 -dqctm1140 comparetotmag -0 0E-6143 -> 1 -dqctm1141 comparetotmag -0 -0E-6143 -> 1 - --- Null tests -dqctm9990 comparetotmag 10 # -> NaN Invalid_operation -dqctm9991 comparetotmag # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqCompareTotalMag.decTest -- decQuad comparison; abs. total order -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Note that we cannot assume add/subtract tests cover paths adequately, +-- here, because the code might be quite different (comparison cannot +-- overflow or underflow, so actual subtractions are not necessary). +-- Similarly, comparetotal will have some radically different paths +-- than compare. + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqctm001 comparetotmag -2 -2 -> 0 +dqctm002 comparetotmag -2 -1 -> 1 +dqctm003 comparetotmag -2 0 -> 1 +dqctm004 comparetotmag -2 1 -> 1 +dqctm005 comparetotmag -2 2 -> 0 +dqctm006 comparetotmag -1 -2 -> -1 +dqctm007 comparetotmag -1 -1 -> 0 +dqctm008 comparetotmag -1 0 -> 1 +dqctm009 comparetotmag -1 1 -> 0 +dqctm010 comparetotmag -1 2 -> -1 +dqctm011 comparetotmag 0 -2 -> -1 +dqctm012 comparetotmag 0 -1 -> -1 +dqctm013 comparetotmag 0 0 -> 0 +dqctm014 comparetotmag 0 1 -> -1 +dqctm015 comparetotmag 0 2 -> -1 +dqctm016 comparetotmag 1 -2 -> -1 +dqctm017 comparetotmag 1 -1 -> 0 +dqctm018 comparetotmag 1 0 -> 1 +dqctm019 comparetotmag 1 1 -> 0 +dqctm020 comparetotmag 1 2 -> -1 +dqctm021 comparetotmag 2 -2 -> 0 +dqctm022 comparetotmag 2 -1 -> 1 +dqctm023 comparetotmag 2 0 -> 1 +dqctm025 comparetotmag 2 1 -> 1 +dqctm026 comparetotmag 2 2 -> 0 + +dqctm031 comparetotmag -20 -20 -> 0 +dqctm032 comparetotmag -20 -10 -> 1 +dqctm033 comparetotmag -20 00 -> 1 +dqctm034 comparetotmag -20 10 -> 1 +dqctm035 comparetotmag -20 20 -> 0 +dqctm036 comparetotmag -10 -20 -> -1 +dqctm037 comparetotmag -10 -10 -> 0 +dqctm038 comparetotmag -10 00 -> 1 +dqctm039 comparetotmag -10 10 -> 0 +dqctm040 comparetotmag -10 20 -> -1 +dqctm041 comparetotmag 00 -20 -> -1 +dqctm042 comparetotmag 00 -10 -> -1 +dqctm043 comparetotmag 00 00 -> 0 +dqctm044 comparetotmag 00 10 -> -1 +dqctm045 comparetotmag 00 20 -> -1 +dqctm046 comparetotmag 10 -20 -> -1 +dqctm047 comparetotmag 10 -10 -> 0 +dqctm048 comparetotmag 10 00 -> 1 +dqctm049 comparetotmag 10 10 -> 0 +dqctm050 comparetotmag 10 20 -> -1 +dqctm051 comparetotmag 20 -20 -> 0 +dqctm052 comparetotmag 20 -10 -> 1 +dqctm053 comparetotmag 20 00 -> 1 +dqctm055 comparetotmag 20 10 -> 1 +dqctm056 comparetotmag 20 20 -> 0 + +dqctm061 comparetotmag -2.0 -2.0 -> 0 +dqctm062 comparetotmag -2.0 -1.0 -> 1 +dqctm063 comparetotmag -2.0 0.0 -> 1 +dqctm064 comparetotmag -2.0 1.0 -> 1 +dqctm065 comparetotmag -2.0 2.0 -> 0 +dqctm066 comparetotmag -1.0 -2.0 -> -1 +dqctm067 comparetotmag -1.0 -1.0 -> 0 +dqctm068 comparetotmag -1.0 0.0 -> 1 +dqctm069 comparetotmag -1.0 1.0 -> 0 +dqctm070 comparetotmag -1.0 2.0 -> -1 +dqctm071 comparetotmag 0.0 -2.0 -> -1 +dqctm072 comparetotmag 0.0 -1.0 -> -1 +dqctm073 comparetotmag 0.0 0.0 -> 0 +dqctm074 comparetotmag 0.0 1.0 -> -1 +dqctm075 comparetotmag 0.0 2.0 -> -1 +dqctm076 comparetotmag 1.0 -2.0 -> -1 +dqctm077 comparetotmag 1.0 -1.0 -> 0 +dqctm078 comparetotmag 1.0 0.0 -> 1 +dqctm079 comparetotmag 1.0 1.0 -> 0 +dqctm080 comparetotmag 1.0 2.0 -> -1 +dqctm081 comparetotmag 2.0 -2.0 -> 0 +dqctm082 comparetotmag 2.0 -1.0 -> 1 +dqctm083 comparetotmag 2.0 0.0 -> 1 +dqctm085 comparetotmag 2.0 1.0 -> 1 +dqctm086 comparetotmag 2.0 2.0 -> 0 + +-- now some cases which might overflow if subtract were used +dqctm090 comparetotmag 9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0 +dqctm091 comparetotmag -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0 +dqctm092 comparetotmag 9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0 +dqctm093 comparetotmag -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0 + +-- some differing length/exponent cases +-- in this first group, compare would compare all equal +dqctm100 comparetotmag 7.0 7.0 -> 0 +dqctm101 comparetotmag 7.0 7 -> -1 +dqctm102 comparetotmag 7 7.0 -> 1 +dqctm103 comparetotmag 7E+0 7.0 -> 1 +dqctm104 comparetotmag 70E-1 7.0 -> 0 +dqctm105 comparetotmag 0.7E+1 7 -> 0 +dqctm106 comparetotmag 70E-1 7 -> -1 +dqctm107 comparetotmag 7.0 7E+0 -> -1 +dqctm108 comparetotmag 7.0 70E-1 -> 0 +dqctm109 comparetotmag 7 0.7E+1 -> 0 +dqctm110 comparetotmag 7 70E-1 -> 1 + +dqctm120 comparetotmag 8.0 7.0 -> 1 +dqctm121 comparetotmag 8.0 7 -> 1 +dqctm122 comparetotmag 8 7.0 -> 1 +dqctm123 comparetotmag 8E+0 7.0 -> 1 +dqctm124 comparetotmag 80E-1 7.0 -> 1 +dqctm125 comparetotmag 0.8E+1 7 -> 1 +dqctm126 comparetotmag 80E-1 7 -> 1 +dqctm127 comparetotmag 8.0 7E+0 -> 1 +dqctm128 comparetotmag 8.0 70E-1 -> 1 +dqctm129 comparetotmag 8 0.7E+1 -> 1 +dqctm130 comparetotmag 8 70E-1 -> 1 + +dqctm140 comparetotmag 8.0 9.0 -> -1 +dqctm141 comparetotmag 8.0 9 -> -1 +dqctm142 comparetotmag 8 9.0 -> -1 +dqctm143 comparetotmag 8E+0 9.0 -> -1 +dqctm144 comparetotmag 80E-1 9.0 -> -1 +dqctm145 comparetotmag 0.8E+1 9 -> -1 +dqctm146 comparetotmag 80E-1 9 -> -1 +dqctm147 comparetotmag 8.0 9E+0 -> -1 +dqctm148 comparetotmag 8.0 90E-1 -> -1 +dqctm149 comparetotmag 8 0.9E+1 -> -1 +dqctm150 comparetotmag 8 90E-1 -> -1 + +-- and again, with sign changes -+ .. +dqctm200 comparetotmag -7.0 7.0 -> 0 +dqctm201 comparetotmag -7.0 7 -> -1 +dqctm202 comparetotmag -7 7.0 -> 1 +dqctm203 comparetotmag -7E+0 7.0 -> 1 +dqctm204 comparetotmag -70E-1 7.0 -> 0 +dqctm205 comparetotmag -0.7E+1 7 -> 0 +dqctm206 comparetotmag -70E-1 7 -> -1 +dqctm207 comparetotmag -7.0 7E+0 -> -1 +dqctm208 comparetotmag -7.0 70E-1 -> 0 +dqctm209 comparetotmag -7 0.7E+1 -> 0 +dqctm210 comparetotmag -7 70E-1 -> 1 + +dqctm220 comparetotmag -8.0 7.0 -> 1 +dqctm221 comparetotmag -8.0 7 -> 1 +dqctm222 comparetotmag -8 7.0 -> 1 +dqctm223 comparetotmag -8E+0 7.0 -> 1 +dqctm224 comparetotmag -80E-1 7.0 -> 1 +dqctm225 comparetotmag -0.8E+1 7 -> 1 +dqctm226 comparetotmag -80E-1 7 -> 1 +dqctm227 comparetotmag -8.0 7E+0 -> 1 +dqctm228 comparetotmag -8.0 70E-1 -> 1 +dqctm229 comparetotmag -8 0.7E+1 -> 1 +dqctm230 comparetotmag -8 70E-1 -> 1 + +dqctm240 comparetotmag -8.0 9.0 -> -1 +dqctm241 comparetotmag -8.0 9 -> -1 +dqctm242 comparetotmag -8 9.0 -> -1 +dqctm243 comparetotmag -8E+0 9.0 -> -1 +dqctm244 comparetotmag -80E-1 9.0 -> -1 +dqctm245 comparetotmag -0.8E+1 9 -> -1 +dqctm246 comparetotmag -80E-1 9 -> -1 +dqctm247 comparetotmag -8.0 9E+0 -> -1 +dqctm248 comparetotmag -8.0 90E-1 -> -1 +dqctm249 comparetotmag -8 0.9E+1 -> -1 +dqctm250 comparetotmag -8 90E-1 -> -1 + +-- and again, with sign changes +- .. +dqctm300 comparetotmag 7.0 -7.0 -> 0 +dqctm301 comparetotmag 7.0 -7 -> -1 +dqctm302 comparetotmag 7 -7.0 -> 1 +dqctm303 comparetotmag 7E+0 -7.0 -> 1 +dqctm304 comparetotmag 70E-1 -7.0 -> 0 +dqctm305 comparetotmag .7E+1 -7 -> 0 +dqctm306 comparetotmag 70E-1 -7 -> -1 +dqctm307 comparetotmag 7.0 -7E+0 -> -1 +dqctm308 comparetotmag 7.0 -70E-1 -> 0 +dqctm309 comparetotmag 7 -.7E+1 -> 0 +dqctm310 comparetotmag 7 -70E-1 -> 1 + +dqctm320 comparetotmag 8.0 -7.0 -> 1 +dqctm321 comparetotmag 8.0 -7 -> 1 +dqctm322 comparetotmag 8 -7.0 -> 1 +dqctm323 comparetotmag 8E+0 -7.0 -> 1 +dqctm324 comparetotmag 80E-1 -7.0 -> 1 +dqctm325 comparetotmag .8E+1 -7 -> 1 +dqctm326 comparetotmag 80E-1 -7 -> 1 +dqctm327 comparetotmag 8.0 -7E+0 -> 1 +dqctm328 comparetotmag 8.0 -70E-1 -> 1 +dqctm329 comparetotmag 8 -.7E+1 -> 1 +dqctm330 comparetotmag 8 -70E-1 -> 1 + +dqctm340 comparetotmag 8.0 -9.0 -> -1 +dqctm341 comparetotmag 8.0 -9 -> -1 +dqctm342 comparetotmag 8 -9.0 -> -1 +dqctm343 comparetotmag 8E+0 -9.0 -> -1 +dqctm344 comparetotmag 80E-1 -9.0 -> -1 +dqctm345 comparetotmag .8E+1 -9 -> -1 +dqctm346 comparetotmag 80E-1 -9 -> -1 +dqctm347 comparetotmag 8.0 -9E+0 -> -1 +dqctm348 comparetotmag 8.0 -90E-1 -> -1 +dqctm349 comparetotmag 8 -.9E+1 -> -1 +dqctm350 comparetotmag 8 -90E-1 -> -1 + +-- and again, with sign changes -- .. +dqctm400 comparetotmag -7.0 -7.0 -> 0 +dqctm401 comparetotmag -7.0 -7 -> -1 +dqctm402 comparetotmag -7 -7.0 -> 1 +dqctm403 comparetotmag -7E+0 -7.0 -> 1 +dqctm404 comparetotmag -70E-1 -7.0 -> 0 +dqctm405 comparetotmag -.7E+1 -7 -> 0 +dqctm406 comparetotmag -70E-1 -7 -> -1 +dqctm407 comparetotmag -7.0 -7E+0 -> -1 +dqctm408 comparetotmag -7.0 -70E-1 -> 0 +dqctm409 comparetotmag -7 -.7E+1 -> 0 +dqctm410 comparetotmag -7 -70E-1 -> 1 + +dqctm420 comparetotmag -8.0 -7.0 -> 1 +dqctm421 comparetotmag -8.0 -7 -> 1 +dqctm422 comparetotmag -8 -7.0 -> 1 +dqctm423 comparetotmag -8E+0 -7.0 -> 1 +dqctm424 comparetotmag -80E-1 -7.0 -> 1 +dqctm425 comparetotmag -.8E+1 -7 -> 1 +dqctm426 comparetotmag -80E-1 -7 -> 1 +dqctm427 comparetotmag -8.0 -7E+0 -> 1 +dqctm428 comparetotmag -8.0 -70E-1 -> 1 +dqctm429 comparetotmag -8 -.7E+1 -> 1 +dqctm430 comparetotmag -8 -70E-1 -> 1 + +dqctm440 comparetotmag -8.0 -9.0 -> -1 +dqctm441 comparetotmag -8.0 -9 -> -1 +dqctm442 comparetotmag -8 -9.0 -> -1 +dqctm443 comparetotmag -8E+0 -9.0 -> -1 +dqctm444 comparetotmag -80E-1 -9.0 -> -1 +dqctm445 comparetotmag -.8E+1 -9 -> -1 +dqctm446 comparetotmag -80E-1 -9 -> -1 +dqctm447 comparetotmag -8.0 -9E+0 -> -1 +dqctm448 comparetotmag -8.0 -90E-1 -> -1 +dqctm449 comparetotmag -8 -.9E+1 -> -1 +dqctm450 comparetotmag -8 -90E-1 -> -1 + + +-- testcases that subtract to lots of zeros at boundaries [pgr] +dqctm473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1 +dqctm474 comparetotmag 123.456000000000E+89 123.456E+89 -> -1 +dqctm475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1 +dqctm476 comparetotmag 123.4560000000E+89 123.456E+89 -> -1 +dqctm477 comparetotmag 123.456000000E-89 123.456E-89 -> -1 +dqctm478 comparetotmag 123.45600000E+89 123.456E+89 -> -1 +dqctm479 comparetotmag 123.4560000E-89 123.456E-89 -> -1 +dqctm480 comparetotmag 123.456000E+89 123.456E+89 -> -1 +dqctm481 comparetotmag 123.45600E-89 123.456E-89 -> -1 +dqctm482 comparetotmag 123.4560E+89 123.456E+89 -> -1 +dqctm483 comparetotmag 123.456E-89 123.456E-89 -> 0 +dqctm487 comparetotmag 123.456E+89 123.4560000000000E+89 -> 1 +dqctm488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1 +dqctm489 comparetotmag 123.456E+89 123.45600000000E+89 -> 1 +dqctm490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1 +dqctm491 comparetotmag 123.456E+89 123.456000000E+89 -> 1 +dqctm492 comparetotmag 123.456E-89 123.45600000E-89 -> 1 +dqctm493 comparetotmag 123.456E+89 123.4560000E+89 -> 1 +dqctm494 comparetotmag 123.456E-89 123.456000E-89 -> 1 +dqctm495 comparetotmag 123.456E+89 123.45600E+89 -> 1 +dqctm496 comparetotmag 123.456E-89 123.4560E-89 -> 1 +dqctm497 comparetotmag 123.456E+89 123.456E+89 -> 0 + +-- wide-ranging, around precision; signs equal +dqctm498 comparetotmag 1 1E-17 -> 1 +dqctm499 comparetotmag 1 1E-16 -> 1 +dqctm500 comparetotmag 1 1E-15 -> 1 +dqctm501 comparetotmag 1 1E-14 -> 1 +dqctm502 comparetotmag 1 1E-13 -> 1 +dqctm503 comparetotmag 1 1E-12 -> 1 +dqctm504 comparetotmag 1 1E-11 -> 1 +dqctm505 comparetotmag 1 1E-10 -> 1 +dqctm506 comparetotmag 1 1E-9 -> 1 +dqctm507 comparetotmag 1 1E-8 -> 1 +dqctm508 comparetotmag 1 1E-7 -> 1 +dqctm509 comparetotmag 1 1E-6 -> 1 +dqctm510 comparetotmag 1 1E-5 -> 1 +dqctm511 comparetotmag 1 1E-4 -> 1 +dqctm512 comparetotmag 1 1E-3 -> 1 +dqctm513 comparetotmag 1 1E-2 -> 1 +dqctm514 comparetotmag 1 1E-1 -> 1 +dqctm515 comparetotmag 1 1E-0 -> 0 +dqctm516 comparetotmag 1 1E+1 -> -1 +dqctm517 comparetotmag 1 1E+2 -> -1 +dqctm518 comparetotmag 1 1E+3 -> -1 +dqctm519 comparetotmag 1 1E+4 -> -1 +dqctm521 comparetotmag 1 1E+5 -> -1 +dqctm522 comparetotmag 1 1E+6 -> -1 +dqctm523 comparetotmag 1 1E+7 -> -1 +dqctm524 comparetotmag 1 1E+8 -> -1 +dqctm525 comparetotmag 1 1E+9 -> -1 +dqctm526 comparetotmag 1 1E+10 -> -1 +dqctm527 comparetotmag 1 1E+11 -> -1 +dqctm528 comparetotmag 1 1E+12 -> -1 +dqctm529 comparetotmag 1 1E+13 -> -1 +dqctm530 comparetotmag 1 1E+14 -> -1 +dqctm531 comparetotmag 1 1E+15 -> -1 +dqctm532 comparetotmag 1 1E+16 -> -1 +dqctm533 comparetotmag 1 1E+17 -> -1 +-- LR swap +dqctm538 comparetotmag 1E-17 1 -> -1 +dqctm539 comparetotmag 1E-16 1 -> -1 +dqctm540 comparetotmag 1E-15 1 -> -1 +dqctm541 comparetotmag 1E-14 1 -> -1 +dqctm542 comparetotmag 1E-13 1 -> -1 +dqctm543 comparetotmag 1E-12 1 -> -1 +dqctm544 comparetotmag 1E-11 1 -> -1 +dqctm545 comparetotmag 1E-10 1 -> -1 +dqctm546 comparetotmag 1E-9 1 -> -1 +dqctm547 comparetotmag 1E-8 1 -> -1 +dqctm548 comparetotmag 1E-7 1 -> -1 +dqctm549 comparetotmag 1E-6 1 -> -1 +dqctm550 comparetotmag 1E-5 1 -> -1 +dqctm551 comparetotmag 1E-4 1 -> -1 +dqctm552 comparetotmag 1E-3 1 -> -1 +dqctm553 comparetotmag 1E-2 1 -> -1 +dqctm554 comparetotmag 1E-1 1 -> -1 +dqctm555 comparetotmag 1E-0 1 -> 0 +dqctm556 comparetotmag 1E+1 1 -> 1 +dqctm557 comparetotmag 1E+2 1 -> 1 +dqctm558 comparetotmag 1E+3 1 -> 1 +dqctm559 comparetotmag 1E+4 1 -> 1 +dqctm561 comparetotmag 1E+5 1 -> 1 +dqctm562 comparetotmag 1E+6 1 -> 1 +dqctm563 comparetotmag 1E+7 1 -> 1 +dqctm564 comparetotmag 1E+8 1 -> 1 +dqctm565 comparetotmag 1E+9 1 -> 1 +dqctm566 comparetotmag 1E+10 1 -> 1 +dqctm567 comparetotmag 1E+11 1 -> 1 +dqctm568 comparetotmag 1E+12 1 -> 1 +dqctm569 comparetotmag 1E+13 1 -> 1 +dqctm570 comparetotmag 1E+14 1 -> 1 +dqctm571 comparetotmag 1E+15 1 -> 1 +dqctm572 comparetotmag 1E+16 1 -> 1 +dqctm573 comparetotmag 1E+17 1 -> 1 +-- similar with a useful coefficient, one side only +dqctm578 comparetotmag 0.000000987654321 1E-17 -> 1 +dqctm579 comparetotmag 0.000000987654321 1E-16 -> 1 +dqctm580 comparetotmag 0.000000987654321 1E-15 -> 1 +dqctm581 comparetotmag 0.000000987654321 1E-14 -> 1 +dqctm582 comparetotmag 0.000000987654321 1E-13 -> 1 +dqctm583 comparetotmag 0.000000987654321 1E-12 -> 1 +dqctm584 comparetotmag 0.000000987654321 1E-11 -> 1 +dqctm585 comparetotmag 0.000000987654321 1E-10 -> 1 +dqctm586 comparetotmag 0.000000987654321 1E-9 -> 1 +dqctm587 comparetotmag 0.000000987654321 1E-8 -> 1 +dqctm588 comparetotmag 0.000000987654321 1E-7 -> 1 +dqctm589 comparetotmag 0.000000987654321 1E-6 -> -1 +dqctm590 comparetotmag 0.000000987654321 1E-5 -> -1 +dqctm591 comparetotmag 0.000000987654321 1E-4 -> -1 +dqctm592 comparetotmag 0.000000987654321 1E-3 -> -1 +dqctm593 comparetotmag 0.000000987654321 1E-2 -> -1 +dqctm594 comparetotmag 0.000000987654321 1E-1 -> -1 +dqctm595 comparetotmag 0.000000987654321 1E-0 -> -1 +dqctm596 comparetotmag 0.000000987654321 1E+1 -> -1 +dqctm597 comparetotmag 0.000000987654321 1E+2 -> -1 +dqctm598 comparetotmag 0.000000987654321 1E+3 -> -1 +dqctm599 comparetotmag 0.000000987654321 1E+4 -> -1 + +-- check some unit-y traps +dqctm600 comparetotmag 12 12.2345 -> -1 +dqctm601 comparetotmag 12.0 12.2345 -> -1 +dqctm602 comparetotmag 12.00 12.2345 -> -1 +dqctm603 comparetotmag 12.000 12.2345 -> -1 +dqctm604 comparetotmag 12.0000 12.2345 -> -1 +dqctm605 comparetotmag 12.00000 12.2345 -> -1 +dqctm606 comparetotmag 12.000000 12.2345 -> -1 +dqctm607 comparetotmag 12.0000000 12.2345 -> -1 +dqctm608 comparetotmag 12.00000000 12.2345 -> -1 +dqctm609 comparetotmag 12.000000000 12.2345 -> -1 +dqctm610 comparetotmag 12.1234 12 -> 1 +dqctm611 comparetotmag 12.1234 12.0 -> 1 +dqctm612 comparetotmag 12.1234 12.00 -> 1 +dqctm613 comparetotmag 12.1234 12.000 -> 1 +dqctm614 comparetotmag 12.1234 12.0000 -> 1 +dqctm615 comparetotmag 12.1234 12.00000 -> 1 +dqctm616 comparetotmag 12.1234 12.000000 -> 1 +dqctm617 comparetotmag 12.1234 12.0000000 -> 1 +dqctm618 comparetotmag 12.1234 12.00000000 -> 1 +dqctm619 comparetotmag 12.1234 12.000000000 -> 1 +dqctm620 comparetotmag -12 -12.2345 -> -1 +dqctm621 comparetotmag -12.0 -12.2345 -> -1 +dqctm622 comparetotmag -12.00 -12.2345 -> -1 +dqctm623 comparetotmag -12.000 -12.2345 -> -1 +dqctm624 comparetotmag -12.0000 -12.2345 -> -1 +dqctm625 comparetotmag -12.00000 -12.2345 -> -1 +dqctm626 comparetotmag -12.000000 -12.2345 -> -1 +dqctm627 comparetotmag -12.0000000 -12.2345 -> -1 +dqctm628 comparetotmag -12.00000000 -12.2345 -> -1 +dqctm629 comparetotmag -12.000000000 -12.2345 -> -1 +dqctm630 comparetotmag -12.1234 -12 -> 1 +dqctm631 comparetotmag -12.1234 -12.0 -> 1 +dqctm632 comparetotmag -12.1234 -12.00 -> 1 +dqctm633 comparetotmag -12.1234 -12.000 -> 1 +dqctm634 comparetotmag -12.1234 -12.0000 -> 1 +dqctm635 comparetotmag -12.1234 -12.00000 -> 1 +dqctm636 comparetotmag -12.1234 -12.000000 -> 1 +dqctm637 comparetotmag -12.1234 -12.0000000 -> 1 +dqctm638 comparetotmag -12.1234 -12.00000000 -> 1 +dqctm639 comparetotmag -12.1234 -12.000000000 -> 1 + +-- extended zeros +dqctm640 comparetotmag 0 0 -> 0 +dqctm641 comparetotmag 0 -0 -> 0 +dqctm642 comparetotmag 0 -0.0 -> 1 +dqctm643 comparetotmag 0 0.0 -> 1 +dqctm644 comparetotmag -0 0 -> 0 +dqctm645 comparetotmag -0 -0 -> 0 +dqctm646 comparetotmag -0 -0.0 -> 1 +dqctm647 comparetotmag -0 0.0 -> 1 +dqctm648 comparetotmag 0.0 0 -> -1 +dqctm649 comparetotmag 0.0 -0 -> -1 +dqctm650 comparetotmag 0.0 -0.0 -> 0 +dqctm651 comparetotmag 0.0 0.0 -> 0 +dqctm652 comparetotmag -0.0 0 -> -1 +dqctm653 comparetotmag -0.0 -0 -> -1 +dqctm654 comparetotmag -0.0 -0.0 -> 0 +dqctm655 comparetotmag -0.0 0.0 -> 0 + +dqctm656 comparetotmag -0E1 0.0 -> 1 +dqctm657 comparetotmag -0E2 0.0 -> 1 +dqctm658 comparetotmag 0E1 0.0 -> 1 +dqctm659 comparetotmag 0E2 0.0 -> 1 +dqctm660 comparetotmag -0E1 0 -> 1 +dqctm661 comparetotmag -0E2 0 -> 1 +dqctm662 comparetotmag 0E1 0 -> 1 +dqctm663 comparetotmag 0E2 0 -> 1 +dqctm664 comparetotmag -0E1 -0E1 -> 0 +dqctm665 comparetotmag -0E2 -0E1 -> 1 +dqctm666 comparetotmag 0E1 -0E1 -> 0 +dqctm667 comparetotmag 0E2 -0E1 -> 1 +dqctm668 comparetotmag -0E1 -0E2 -> -1 +dqctm669 comparetotmag -0E2 -0E2 -> 0 +dqctm670 comparetotmag 0E1 -0E2 -> -1 +dqctm671 comparetotmag 0E2 -0E2 -> 0 +dqctm672 comparetotmag -0E1 0E1 -> 0 +dqctm673 comparetotmag -0E2 0E1 -> 1 +dqctm674 comparetotmag 0E1 0E1 -> 0 +dqctm675 comparetotmag 0E2 0E1 -> 1 +dqctm676 comparetotmag -0E1 0E2 -> -1 +dqctm677 comparetotmag -0E2 0E2 -> 0 +dqctm678 comparetotmag 0E1 0E2 -> -1 +dqctm679 comparetotmag 0E2 0E2 -> 0 + +-- trailing zeros; unit-y +dqctm680 comparetotmag 12 12 -> 0 +dqctm681 comparetotmag 12 12.0 -> 1 +dqctm682 comparetotmag 12 12.00 -> 1 +dqctm683 comparetotmag 12 12.000 -> 1 +dqctm684 comparetotmag 12 12.0000 -> 1 +dqctm685 comparetotmag 12 12.00000 -> 1 +dqctm686 comparetotmag 12 12.000000 -> 1 +dqctm687 comparetotmag 12 12.0000000 -> 1 +dqctm688 comparetotmag 12 12.00000000 -> 1 +dqctm689 comparetotmag 12 12.000000000 -> 1 +dqctm690 comparetotmag 12 12 -> 0 +dqctm691 comparetotmag 12.0 12 -> -1 +dqctm692 comparetotmag 12.00 12 -> -1 +dqctm693 comparetotmag 12.000 12 -> -1 +dqctm694 comparetotmag 12.0000 12 -> -1 +dqctm695 comparetotmag 12.00000 12 -> -1 +dqctm696 comparetotmag 12.000000 12 -> -1 +dqctm697 comparetotmag 12.0000000 12 -> -1 +dqctm698 comparetotmag 12.00000000 12 -> -1 +dqctm699 comparetotmag 12.000000000 12 -> -1 + +-- old long operand checks +dqctm701 comparetotmag 12345678000 1 -> 1 +dqctm702 comparetotmag 1 12345678000 -> -1 +dqctm703 comparetotmag 1234567800 1 -> 1 +dqctm704 comparetotmag 1 1234567800 -> -1 +dqctm705 comparetotmag 1234567890 1 -> 1 +dqctm706 comparetotmag 1 1234567890 -> -1 +dqctm707 comparetotmag 1234567891 1 -> 1 +dqctm708 comparetotmag 1 1234567891 -> -1 +dqctm709 comparetotmag 12345678901 1 -> 1 +dqctm710 comparetotmag 1 12345678901 -> -1 +dqctm711 comparetotmag 1234567896 1 -> 1 +dqctm712 comparetotmag 1 1234567896 -> -1 +dqctm713 comparetotmag -1234567891 1 -> 1 +dqctm714 comparetotmag 1 -1234567891 -> -1 +dqctm715 comparetotmag -12345678901 1 -> 1 +dqctm716 comparetotmag 1 -12345678901 -> -1 +dqctm717 comparetotmag -1234567896 1 -> 1 +dqctm718 comparetotmag 1 -1234567896 -> -1 + +-- old residue cases +dqctm740 comparetotmag 1 0.9999999 -> 1 +dqctm741 comparetotmag 1 0.999999 -> 1 +dqctm742 comparetotmag 1 0.99999 -> 1 +dqctm743 comparetotmag 1 1.0000 -> 1 +dqctm744 comparetotmag 1 1.00001 -> -1 +dqctm745 comparetotmag 1 1.000001 -> -1 +dqctm746 comparetotmag 1 1.0000001 -> -1 +dqctm750 comparetotmag 0.9999999 1 -> -1 +dqctm751 comparetotmag 0.999999 1 -> -1 +dqctm752 comparetotmag 0.99999 1 -> -1 +dqctm753 comparetotmag 1.0000 1 -> -1 +dqctm754 comparetotmag 1.00001 1 -> 1 +dqctm755 comparetotmag 1.000001 1 -> 1 +dqctm756 comparetotmag 1.0000001 1 -> 1 + +-- Specials +dqctm780 comparetotmag Inf -Inf -> 0 +dqctm781 comparetotmag Inf -1000 -> 1 +dqctm782 comparetotmag Inf -1 -> 1 +dqctm783 comparetotmag Inf -0 -> 1 +dqctm784 comparetotmag Inf 0 -> 1 +dqctm785 comparetotmag Inf 1 -> 1 +dqctm786 comparetotmag Inf 1000 -> 1 +dqctm787 comparetotmag Inf Inf -> 0 +dqctm788 comparetotmag -1000 Inf -> -1 +dqctm789 comparetotmag -Inf Inf -> 0 +dqctm790 comparetotmag -1 Inf -> -1 +dqctm791 comparetotmag -0 Inf -> -1 +dqctm792 comparetotmag 0 Inf -> -1 +dqctm793 comparetotmag 1 Inf -> -1 +dqctm794 comparetotmag 1000 Inf -> -1 +dqctm795 comparetotmag Inf Inf -> 0 + +dqctm800 comparetotmag -Inf -Inf -> 0 +dqctm801 comparetotmag -Inf -1000 -> 1 +dqctm802 comparetotmag -Inf -1 -> 1 +dqctm803 comparetotmag -Inf -0 -> 1 +dqctm804 comparetotmag -Inf 0 -> 1 +dqctm805 comparetotmag -Inf 1 -> 1 +dqctm806 comparetotmag -Inf 1000 -> 1 +dqctm807 comparetotmag -Inf Inf -> 0 +dqctm808 comparetotmag -Inf -Inf -> 0 +dqctm809 comparetotmag -1000 -Inf -> -1 +dqctm810 comparetotmag -1 -Inf -> -1 +dqctm811 comparetotmag -0 -Inf -> -1 +dqctm812 comparetotmag 0 -Inf -> -1 +dqctm813 comparetotmag 1 -Inf -> -1 +dqctm814 comparetotmag 1000 -Inf -> -1 +dqctm815 comparetotmag Inf -Inf -> 0 + +dqctm821 comparetotmag NaN -Inf -> 1 +dqctm822 comparetotmag NaN -1000 -> 1 +dqctm823 comparetotmag NaN -1 -> 1 +dqctm824 comparetotmag NaN -0 -> 1 +dqctm825 comparetotmag NaN 0 -> 1 +dqctm826 comparetotmag NaN 1 -> 1 +dqctm827 comparetotmag NaN 1000 -> 1 +dqctm828 comparetotmag NaN Inf -> 1 +dqctm829 comparetotmag NaN NaN -> 0 +dqctm830 comparetotmag -Inf NaN -> -1 +dqctm831 comparetotmag -1000 NaN -> -1 +dqctm832 comparetotmag -1 NaN -> -1 +dqctm833 comparetotmag -0 NaN -> -1 +dqctm834 comparetotmag 0 NaN -> -1 +dqctm835 comparetotmag 1 NaN -> -1 +dqctm836 comparetotmag 1000 NaN -> -1 +dqctm837 comparetotmag Inf NaN -> -1 +dqctm838 comparetotmag -NaN -NaN -> 0 +dqctm839 comparetotmag +NaN -NaN -> 0 +dqctm840 comparetotmag -NaN +NaN -> 0 + +dqctm841 comparetotmag sNaN -sNaN -> 0 +dqctm842 comparetotmag sNaN -NaN -> -1 +dqctm843 comparetotmag sNaN -Inf -> 1 +dqctm844 comparetotmag sNaN -1000 -> 1 +dqctm845 comparetotmag sNaN -1 -> 1 +dqctm846 comparetotmag sNaN -0 -> 1 +dqctm847 comparetotmag sNaN 0 -> 1 +dqctm848 comparetotmag sNaN 1 -> 1 +dqctm849 comparetotmag sNaN 1000 -> 1 +dqctm850 comparetotmag sNaN NaN -> -1 +dqctm851 comparetotmag sNaN sNaN -> 0 + +dqctm852 comparetotmag -sNaN sNaN -> 0 +dqctm853 comparetotmag -NaN sNaN -> 1 +dqctm854 comparetotmag -Inf sNaN -> -1 +dqctm855 comparetotmag -1000 sNaN -> -1 +dqctm856 comparetotmag -1 sNaN -> -1 +dqctm857 comparetotmag -0 sNaN -> -1 +dqctm858 comparetotmag 0 sNaN -> -1 +dqctm859 comparetotmag 1 sNaN -> -1 +dqctm860 comparetotmag 1000 sNaN -> -1 +dqctm861 comparetotmag Inf sNaN -> -1 +dqctm862 comparetotmag NaN sNaN -> 1 +dqctm863 comparetotmag sNaN sNaN -> 0 + +dqctm871 comparetotmag -sNaN -sNaN -> 0 +dqctm872 comparetotmag -sNaN -NaN -> -1 +dqctm873 comparetotmag -sNaN -Inf -> 1 +dqctm874 comparetotmag -sNaN -1000 -> 1 +dqctm875 comparetotmag -sNaN -1 -> 1 +dqctm876 comparetotmag -sNaN -0 -> 1 +dqctm877 comparetotmag -sNaN 0 -> 1 +dqctm878 comparetotmag -sNaN 1 -> 1 +dqctm879 comparetotmag -sNaN 1000 -> 1 +dqctm880 comparetotmag -sNaN NaN -> -1 +dqctm881 comparetotmag -sNaN sNaN -> 0 + +dqctm882 comparetotmag -sNaN -sNaN -> 0 +dqctm883 comparetotmag -NaN -sNaN -> 1 +dqctm884 comparetotmag -Inf -sNaN -> -1 +dqctm885 comparetotmag -1000 -sNaN -> -1 +dqctm886 comparetotmag -1 -sNaN -> -1 +dqctm887 comparetotmag -0 -sNaN -> -1 +dqctm888 comparetotmag 0 -sNaN -> -1 +dqctm889 comparetotmag 1 -sNaN -> -1 +dqctm890 comparetotmag 1000 -sNaN -> -1 +dqctm891 comparetotmag Inf -sNaN -> -1 +dqctm892 comparetotmag NaN -sNaN -> 1 +dqctm893 comparetotmag sNaN -sNaN -> 0 + +-- NaNs with payload +dqctm960 comparetotmag NaN9 -Inf -> 1 +dqctm961 comparetotmag NaN8 999 -> 1 +dqctm962 comparetotmag NaN77 Inf -> 1 +dqctm963 comparetotmag -NaN67 NaN5 -> 1 +dqctm964 comparetotmag -Inf -NaN4 -> -1 +dqctm965 comparetotmag -999 -NaN33 -> -1 +dqctm966 comparetotmag Inf NaN2 -> -1 + +dqctm970 comparetotmag -NaN41 -NaN42 -> -1 +dqctm971 comparetotmag +NaN41 -NaN42 -> -1 +dqctm972 comparetotmag -NaN41 +NaN42 -> -1 +dqctm973 comparetotmag +NaN41 +NaN42 -> -1 +dqctm974 comparetotmag -NaN42 -NaN01 -> 1 +dqctm975 comparetotmag +NaN42 -NaN01 -> 1 +dqctm976 comparetotmag -NaN42 +NaN01 -> 1 +dqctm977 comparetotmag +NaN42 +NaN01 -> 1 + +dqctm980 comparetotmag -sNaN771 -sNaN772 -> -1 +dqctm981 comparetotmag +sNaN771 -sNaN772 -> -1 +dqctm982 comparetotmag -sNaN771 +sNaN772 -> -1 +dqctm983 comparetotmag +sNaN771 +sNaN772 -> -1 +dqctm984 comparetotmag -sNaN772 -sNaN771 -> 1 +dqctm985 comparetotmag +sNaN772 -sNaN771 -> 1 +dqctm986 comparetotmag -sNaN772 +sNaN771 -> 1 +dqctm987 comparetotmag +sNaN772 +sNaN771 -> 1 + +dqctm991 comparetotmag -sNaN99 -Inf -> 1 +dqctm992 comparetotmag sNaN98 -11 -> 1 +dqctm993 comparetotmag sNaN97 NaN -> -1 +dqctm994 comparetotmag sNaN16 sNaN94 -> -1 +dqctm995 comparetotmag NaN85 sNaN83 -> 1 +dqctm996 comparetotmag -Inf sNaN92 -> -1 +dqctm997 comparetotmag 088 sNaN81 -> -1 +dqctm998 comparetotmag Inf sNaN90 -> -1 +dqctm999 comparetotmag NaN -sNaN89 -> 1 + +-- spread zeros +dqctm1110 comparetotmag 0E-6143 0 -> -1 +dqctm1111 comparetotmag 0E-6143 -0 -> -1 +dqctm1112 comparetotmag -0E-6143 0 -> -1 +dqctm1113 comparetotmag -0E-6143 -0 -> -1 +dqctm1114 comparetotmag 0E-6143 0E+6144 -> -1 +dqctm1115 comparetotmag 0E-6143 -0E+6144 -> -1 +dqctm1116 comparetotmag -0E-6143 0E+6144 -> -1 +dqctm1117 comparetotmag -0E-6143 -0E+6144 -> -1 +dqctm1118 comparetotmag 0 0E+6144 -> -1 +dqctm1119 comparetotmag 0 -0E+6144 -> -1 +dqctm1120 comparetotmag -0 0E+6144 -> -1 +dqctm1121 comparetotmag -0 -0E+6144 -> -1 + +dqctm1130 comparetotmag 0E+6144 0 -> 1 +dqctm1131 comparetotmag 0E+6144 -0 -> 1 +dqctm1132 comparetotmag -0E+6144 0 -> 1 +dqctm1133 comparetotmag -0E+6144 -0 -> 1 +dqctm1134 comparetotmag 0E+6144 0E-6143 -> 1 +dqctm1135 comparetotmag 0E+6144 -0E-6143 -> 1 +dqctm1136 comparetotmag -0E+6144 0E-6143 -> 1 +dqctm1137 comparetotmag -0E+6144 -0E-6143 -> 1 +dqctm1138 comparetotmag 0 0E-6143 -> 1 +dqctm1139 comparetotmag 0 -0E-6143 -> 1 +dqctm1140 comparetotmag -0 0E-6143 -> 1 +dqctm1141 comparetotmag -0 -0E-6143 -> 1 + +-- Null tests +dqctm9990 comparetotmag 10 # -> NaN Invalid_operation +dqctm9991 comparetotmag # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqCopy.decTest b/Lib/test/decimaltestdata/dqCopy.decTest index 7254d68..0c62431 100644 --- a/Lib/test/decimaltestdata/dqCopy.decTest +++ b/Lib/test/decimaltestdata/dqCopy.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- dqCopy.decTest -- quiet decQuad copy -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check -dqcpy001 copy +7.50 -> 7.50 - --- Infinities -dqcpy011 copy Infinity -> Infinity -dqcpy012 copy -Infinity -> -Infinity - --- NaNs, 0 payload -dqcpy021 copy NaN -> NaN -dqcpy022 copy -NaN -> -NaN -dqcpy023 copy sNaN -> sNaN -dqcpy024 copy -sNaN -> -sNaN - --- NaNs, non-0 payload -dqcpy031 copy NaN10 -> NaN10 -dqcpy032 copy -NaN10 -> -NaN10 -dqcpy033 copy sNaN10 -> sNaN10 -dqcpy034 copy -sNaN10 -> -sNaN10 -dqcpy035 copy NaN7 -> NaN7 -dqcpy036 copy -NaN7 -> -NaN7 -dqcpy037 copy sNaN101 -> sNaN101 -dqcpy038 copy -sNaN101 -> -sNaN101 - --- finites -dqcpy101 copy 7 -> 7 -dqcpy102 copy -7 -> -7 -dqcpy103 copy 75 -> 75 -dqcpy104 copy -75 -> -75 -dqcpy105 copy 7.50 -> 7.50 -dqcpy106 copy -7.50 -> -7.50 -dqcpy107 copy 7.500 -> 7.500 -dqcpy108 copy -7.500 -> -7.500 - --- zeros -dqcpy111 copy 0 -> 0 -dqcpy112 copy -0 -> -0 -dqcpy113 copy 0E+4 -> 0E+4 -dqcpy114 copy -0E+4 -> -0E+4 -dqcpy115 copy 0.0000 -> 0.0000 -dqcpy116 copy -0.0000 -> -0.0000 -dqcpy117 copy 0E-141 -> 0E-141 -dqcpy118 copy -0E-141 -> -0E-141 - --- full coefficients, alternating bits -dqcpy121 copy 2682682682682682682682682682682682 -> 2682682682682682682682682682682682 -dqcpy122 copy -2682682682682682682682682682682682 -> -2682682682682682682682682682682682 -dqcpy123 copy 1341341341341341341341341341341341 -> 1341341341341341341341341341341341 -dqcpy124 copy -1341341341341341341341341341341341 -> -1341341341341341341341341341341341 - --- Nmax, Nmin, Ntiny -dqcpy131 copy 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 -dqcpy132 copy 1E-6143 -> 1E-6143 -dqcpy133 copy 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqcpy134 copy 1E-6176 -> 1E-6176 - -dqcpy135 copy -1E-6176 -> -1E-6176 -dqcpy136 copy -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 -dqcpy137 copy -1E-6143 -> -1E-6143 -dqcpy138 copy -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 +------------------------------------------------------------------------ +-- dqCopy.decTest -- quiet decQuad copy -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check +dqcpy001 copy +7.50 -> 7.50 + +-- Infinities +dqcpy011 copy Infinity -> Infinity +dqcpy012 copy -Infinity -> -Infinity + +-- NaNs, 0 payload +dqcpy021 copy NaN -> NaN +dqcpy022 copy -NaN -> -NaN +dqcpy023 copy sNaN -> sNaN +dqcpy024 copy -sNaN -> -sNaN + +-- NaNs, non-0 payload +dqcpy031 copy NaN10 -> NaN10 +dqcpy032 copy -NaN10 -> -NaN10 +dqcpy033 copy sNaN10 -> sNaN10 +dqcpy034 copy -sNaN10 -> -sNaN10 +dqcpy035 copy NaN7 -> NaN7 +dqcpy036 copy -NaN7 -> -NaN7 +dqcpy037 copy sNaN101 -> sNaN101 +dqcpy038 copy -sNaN101 -> -sNaN101 + +-- finites +dqcpy101 copy 7 -> 7 +dqcpy102 copy -7 -> -7 +dqcpy103 copy 75 -> 75 +dqcpy104 copy -75 -> -75 +dqcpy105 copy 7.50 -> 7.50 +dqcpy106 copy -7.50 -> -7.50 +dqcpy107 copy 7.500 -> 7.500 +dqcpy108 copy -7.500 -> -7.500 + +-- zeros +dqcpy111 copy 0 -> 0 +dqcpy112 copy -0 -> -0 +dqcpy113 copy 0E+4 -> 0E+4 +dqcpy114 copy -0E+4 -> -0E+4 +dqcpy115 copy 0.0000 -> 0.0000 +dqcpy116 copy -0.0000 -> -0.0000 +dqcpy117 copy 0E-141 -> 0E-141 +dqcpy118 copy -0E-141 -> -0E-141 + +-- full coefficients, alternating bits +dqcpy121 copy 2682682682682682682682682682682682 -> 2682682682682682682682682682682682 +dqcpy122 copy -2682682682682682682682682682682682 -> -2682682682682682682682682682682682 +dqcpy123 copy 1341341341341341341341341341341341 -> 1341341341341341341341341341341341 +dqcpy124 copy -1341341341341341341341341341341341 -> -1341341341341341341341341341341341 + +-- Nmax, Nmin, Ntiny +dqcpy131 copy 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +dqcpy132 copy 1E-6143 -> 1E-6143 +dqcpy133 copy 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqcpy134 copy 1E-6176 -> 1E-6176 + +dqcpy135 copy -1E-6176 -> -1E-6176 +dqcpy136 copy -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 +dqcpy137 copy -1E-6143 -> -1E-6143 +dqcpy138 copy -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 diff --git a/Lib/test/decimaltestdata/dqCopyAbs.decTest b/Lib/test/decimaltestdata/dqCopyAbs.decTest index bdec020..16bcb4e 100644 --- a/Lib/test/decimaltestdata/dqCopyAbs.decTest +++ b/Lib/test/decimaltestdata/dqCopyAbs.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- dqCopyAbs.decTest -- quiet decQuad copy and set sign to zero -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check -dqcpa001 copyabs +7.50 -> 7.50 - --- Infinities -dqcpa011 copyabs Infinity -> Infinity -dqcpa012 copyabs -Infinity -> Infinity - --- NaNs, 0 payload -dqcpa021 copyabs NaN -> NaN -dqcpa022 copyabs -NaN -> NaN -dqcpa023 copyabs sNaN -> sNaN -dqcpa024 copyabs -sNaN -> sNaN - --- NaNs, non-0 payload -dqcpa031 copyabs NaN10 -> NaN10 -dqcpa032 copyabs -NaN15 -> NaN15 -dqcpa033 copyabs sNaN15 -> sNaN15 -dqcpa034 copyabs -sNaN10 -> sNaN10 -dqcpa035 copyabs NaN7 -> NaN7 -dqcpa036 copyabs -NaN7 -> NaN7 -dqcpa037 copyabs sNaN101 -> sNaN101 -dqcpa038 copyabs -sNaN101 -> sNaN101 - --- finites -dqcpa101 copyabs 7 -> 7 -dqcpa102 copyabs -7 -> 7 -dqcpa103 copyabs 75 -> 75 -dqcpa104 copyabs -75 -> 75 -dqcpa105 copyabs 7.10 -> 7.10 -dqcpa106 copyabs -7.10 -> 7.10 -dqcpa107 copyabs 7.500 -> 7.500 -dqcpa108 copyabs -7.500 -> 7.500 - --- zeros -dqcpa111 copyabs 0 -> 0 -dqcpa112 copyabs -0 -> 0 -dqcpa113 copyabs 0E+6 -> 0E+6 -dqcpa114 copyabs -0E+6 -> 0E+6 -dqcpa115 copyabs 0.0000 -> 0.0000 -dqcpa116 copyabs -0.0000 -> 0.0000 -dqcpa117 copyabs 0E-141 -> 0E-141 -dqcpa118 copyabs -0E-141 -> 0E-141 - --- full coefficients, alternating bits -dqcpa121 copyabs 2682682682682682682682682682682682 -> 2682682682682682682682682682682682 -dqcpa122 copyabs -2682682682682682682682682682682682 -> 2682682682682682682682682682682682 -dqcpa123 copyabs 1341341341341341341341341341341341 -> 1341341341341341341341341341341341 -dqcpa124 copyabs -1341341341341341341341341341341341 -> 1341341341341341341341341341341341 - --- Nmax, Nmin, Ntiny -dqcpa131 copyabs 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 -dqcpa132 copyabs 1E-6143 -> 1E-6143 -dqcpa133 copyabs 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqcpa134 copyabs 1E-6176 -> 1E-6176 - -dqcpa135 copyabs -1E-6176 -> 1E-6176 -dqcpa136 copyabs -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqcpa137 copyabs -1E-6143 -> 1E-6143 -dqcpa138 copyabs -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +------------------------------------------------------------------------ +-- dqCopyAbs.decTest -- quiet decQuad copy and set sign to zero -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check +dqcpa001 copyabs +7.50 -> 7.50 + +-- Infinities +dqcpa011 copyabs Infinity -> Infinity +dqcpa012 copyabs -Infinity -> Infinity + +-- NaNs, 0 payload +dqcpa021 copyabs NaN -> NaN +dqcpa022 copyabs -NaN -> NaN +dqcpa023 copyabs sNaN -> sNaN +dqcpa024 copyabs -sNaN -> sNaN + +-- NaNs, non-0 payload +dqcpa031 copyabs NaN10 -> NaN10 +dqcpa032 copyabs -NaN15 -> NaN15 +dqcpa033 copyabs sNaN15 -> sNaN15 +dqcpa034 copyabs -sNaN10 -> sNaN10 +dqcpa035 copyabs NaN7 -> NaN7 +dqcpa036 copyabs -NaN7 -> NaN7 +dqcpa037 copyabs sNaN101 -> sNaN101 +dqcpa038 copyabs -sNaN101 -> sNaN101 + +-- finites +dqcpa101 copyabs 7 -> 7 +dqcpa102 copyabs -7 -> 7 +dqcpa103 copyabs 75 -> 75 +dqcpa104 copyabs -75 -> 75 +dqcpa105 copyabs 7.10 -> 7.10 +dqcpa106 copyabs -7.10 -> 7.10 +dqcpa107 copyabs 7.500 -> 7.500 +dqcpa108 copyabs -7.500 -> 7.500 + +-- zeros +dqcpa111 copyabs 0 -> 0 +dqcpa112 copyabs -0 -> 0 +dqcpa113 copyabs 0E+6 -> 0E+6 +dqcpa114 copyabs -0E+6 -> 0E+6 +dqcpa115 copyabs 0.0000 -> 0.0000 +dqcpa116 copyabs -0.0000 -> 0.0000 +dqcpa117 copyabs 0E-141 -> 0E-141 +dqcpa118 copyabs -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +dqcpa121 copyabs 2682682682682682682682682682682682 -> 2682682682682682682682682682682682 +dqcpa122 copyabs -2682682682682682682682682682682682 -> 2682682682682682682682682682682682 +dqcpa123 copyabs 1341341341341341341341341341341341 -> 1341341341341341341341341341341341 +dqcpa124 copyabs -1341341341341341341341341341341341 -> 1341341341341341341341341341341341 + +-- Nmax, Nmin, Ntiny +dqcpa131 copyabs 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +dqcpa132 copyabs 1E-6143 -> 1E-6143 +dqcpa133 copyabs 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqcpa134 copyabs 1E-6176 -> 1E-6176 + +dqcpa135 copyabs -1E-6176 -> 1E-6176 +dqcpa136 copyabs -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqcpa137 copyabs -1E-6143 -> 1E-6143 +dqcpa138 copyabs -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 diff --git a/Lib/test/decimaltestdata/dqCopyNegate.decTest b/Lib/test/decimaltestdata/dqCopyNegate.decTest index ea00855..6253f5a 100644 --- a/Lib/test/decimaltestdata/dqCopyNegate.decTest +++ b/Lib/test/decimaltestdata/dqCopyNegate.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- dqCopyNegate.decTest -- quiet decQuad copy and negate -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check -dqcpn001 copynegate +7.50 -> -7.50 - --- Infinities -dqcpn011 copynegate Infinity -> -Infinity -dqcpn012 copynegate -Infinity -> Infinity - --- NaNs, 0 payload -dqcpn021 copynegate NaN -> -NaN -dqcpn022 copynegate -NaN -> NaN -dqcpn023 copynegate sNaN -> -sNaN -dqcpn024 copynegate -sNaN -> sNaN - --- NaNs, non-0 payload -dqcpn031 copynegate NaN13 -> -NaN13 -dqcpn032 copynegate -NaN13 -> NaN13 -dqcpn033 copynegate sNaN13 -> -sNaN13 -dqcpn034 copynegate -sNaN13 -> sNaN13 -dqcpn035 copynegate NaN70 -> -NaN70 -dqcpn036 copynegate -NaN70 -> NaN70 -dqcpn037 copynegate sNaN101 -> -sNaN101 -dqcpn038 copynegate -sNaN101 -> sNaN101 - --- finites -dqcpn101 copynegate 7 -> -7 -dqcpn102 copynegate -7 -> 7 -dqcpn103 copynegate 75 -> -75 -dqcpn104 copynegate -75 -> 75 -dqcpn105 copynegate 7.50 -> -7.50 -dqcpn106 copynegate -7.50 -> 7.50 -dqcpn107 copynegate 7.500 -> -7.500 -dqcpn108 copynegate -7.500 -> 7.500 - --- zeros -dqcpn111 copynegate 0 -> -0 -dqcpn112 copynegate -0 -> 0 -dqcpn113 copynegate 0E+4 -> -0E+4 -dqcpn114 copynegate -0E+4 -> 0E+4 -dqcpn115 copynegate 0.0000 -> -0.0000 -dqcpn116 copynegate -0.0000 -> 0.0000 -dqcpn117 copynegate 0E-141 -> -0E-141 -dqcpn118 copynegate -0E-141 -> 0E-141 - --- full coefficients, alternating bits -dqcpn121 copynegate 2682682682682682682682682682682682 -> -2682682682682682682682682682682682 -dqcpn122 copynegate -2682682682682682682682682682682682 -> 2682682682682682682682682682682682 -dqcpn123 copynegate 1341341341341341341341341341341341 -> -1341341341341341341341341341341341 -dqcpn124 copynegate -1341341341341341341341341341341341 -> 1341341341341341341341341341341341 - --- Nmax, Nmin, Ntiny -dqcpn131 copynegate 9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 -dqcpn132 copynegate 1E-6143 -> -1E-6143 -dqcpn133 copynegate 1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 -dqcpn134 copynegate 1E-6176 -> -1E-6176 - -dqcpn135 copynegate -1E-6176 -> 1E-6176 -dqcpn136 copynegate -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqcpn137 copynegate -1E-6143 -> 1E-6143 -dqcpn138 copynegate -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +------------------------------------------------------------------------ +-- dqCopyNegate.decTest -- quiet decQuad copy and negate -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check +dqcpn001 copynegate +7.50 -> -7.50 + +-- Infinities +dqcpn011 copynegate Infinity -> -Infinity +dqcpn012 copynegate -Infinity -> Infinity + +-- NaNs, 0 payload +dqcpn021 copynegate NaN -> -NaN +dqcpn022 copynegate -NaN -> NaN +dqcpn023 copynegate sNaN -> -sNaN +dqcpn024 copynegate -sNaN -> sNaN + +-- NaNs, non-0 payload +dqcpn031 copynegate NaN13 -> -NaN13 +dqcpn032 copynegate -NaN13 -> NaN13 +dqcpn033 copynegate sNaN13 -> -sNaN13 +dqcpn034 copynegate -sNaN13 -> sNaN13 +dqcpn035 copynegate NaN70 -> -NaN70 +dqcpn036 copynegate -NaN70 -> NaN70 +dqcpn037 copynegate sNaN101 -> -sNaN101 +dqcpn038 copynegate -sNaN101 -> sNaN101 + +-- finites +dqcpn101 copynegate 7 -> -7 +dqcpn102 copynegate -7 -> 7 +dqcpn103 copynegate 75 -> -75 +dqcpn104 copynegate -75 -> 75 +dqcpn105 copynegate 7.50 -> -7.50 +dqcpn106 copynegate -7.50 -> 7.50 +dqcpn107 copynegate 7.500 -> -7.500 +dqcpn108 copynegate -7.500 -> 7.500 + +-- zeros +dqcpn111 copynegate 0 -> -0 +dqcpn112 copynegate -0 -> 0 +dqcpn113 copynegate 0E+4 -> -0E+4 +dqcpn114 copynegate -0E+4 -> 0E+4 +dqcpn115 copynegate 0.0000 -> -0.0000 +dqcpn116 copynegate -0.0000 -> 0.0000 +dqcpn117 copynegate 0E-141 -> -0E-141 +dqcpn118 copynegate -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +dqcpn121 copynegate 2682682682682682682682682682682682 -> -2682682682682682682682682682682682 +dqcpn122 copynegate -2682682682682682682682682682682682 -> 2682682682682682682682682682682682 +dqcpn123 copynegate 1341341341341341341341341341341341 -> -1341341341341341341341341341341341 +dqcpn124 copynegate -1341341341341341341341341341341341 -> 1341341341341341341341341341341341 + +-- Nmax, Nmin, Ntiny +dqcpn131 copynegate 9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 +dqcpn132 copynegate 1E-6143 -> -1E-6143 +dqcpn133 copynegate 1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 +dqcpn134 copynegate 1E-6176 -> -1E-6176 + +dqcpn135 copynegate -1E-6176 -> 1E-6176 +dqcpn136 copynegate -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqcpn137 copynegate -1E-6143 -> 1E-6143 +dqcpn138 copynegate -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 diff --git a/Lib/test/decimaltestdata/dqCopySign.decTest b/Lib/test/decimaltestdata/dqCopySign.decTest index ce794b7..97b5e6e 100644 --- a/Lib/test/decimaltestdata/dqCopySign.decTest +++ b/Lib/test/decimaltestdata/dqCopySign.decTest @@ -1,175 +1,175 @@ ------------------------------------------------------------------------- --- dqCopySign.decTest -- quiet decQuad copy with sign from rhs -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check -dqcps001 copysign +7.50 11 -> 7.50 - --- Infinities -dqcps011 copysign Infinity 11 -> Infinity -dqcps012 copysign -Infinity 11 -> Infinity - --- NaNs, 0 payload -dqcps021 copysign NaN 11 -> NaN -dqcps022 copysign -NaN 11 -> NaN -dqcps023 copysign sNaN 11 -> sNaN -dqcps024 copysign -sNaN 11 -> sNaN - --- NaNs, non-0 payload -dqcps031 copysign NaN10 11 -> NaN10 -dqcps032 copysign -NaN10 11 -> NaN10 -dqcps033 copysign sNaN10 11 -> sNaN10 -dqcps034 copysign -sNaN10 11 -> sNaN10 -dqcps035 copysign NaN7 11 -> NaN7 -dqcps036 copysign -NaN7 11 -> NaN7 -dqcps037 copysign sNaN101 11 -> sNaN101 -dqcps038 copysign -sNaN101 11 -> sNaN101 - --- finites -dqcps101 copysign 7 11 -> 7 -dqcps102 copysign -7 11 -> 7 -dqcps103 copysign 75 11 -> 75 -dqcps104 copysign -75 11 -> 75 -dqcps105 copysign 7.50 11 -> 7.50 -dqcps106 copysign -7.50 11 -> 7.50 -dqcps107 copysign 7.500 11 -> 7.500 -dqcps108 copysign -7.500 11 -> 7.500 - --- zeros -dqcps111 copysign 0 11 -> 0 -dqcps112 copysign -0 11 -> 0 -dqcps113 copysign 0E+4 11 -> 0E+4 -dqcps114 copysign -0E+4 11 -> 0E+4 -dqcps115 copysign 0.0000 11 -> 0.0000 -dqcps116 copysign -0.0000 11 -> 0.0000 -dqcps117 copysign 0E-141 11 -> 0E-141 -dqcps118 copysign -0E-141 11 -> 0E-141 - --- full coefficients, alternating bits -dqcps121 copysign 2682682682682682682682682682682682 8 -> 2682682682682682682682682682682682 -dqcps122 copysign -2682682682682682682682682682682682 8 -> 2682682682682682682682682682682682 -dqcps123 copysign 1341341341341341341341341341341341 8 -> 1341341341341341341341341341341341 -dqcps124 copysign -1341341341341341341341341341341341 8 -> 1341341341341341341341341341341341 - --- Nmax, Nmin, Ntiny -dqcps131 copysign 9.999999999999999999999999999999999E+6144 8 -> 9.999999999999999999999999999999999E+6144 -dqcps132 copysign 1E-6143 8 -> 1E-6143 -dqcps133 copysign 1.000000000000000000000000000000000E-6143 8 -> 1.000000000000000000000000000000000E-6143 -dqcps134 copysign 1E-6176 8 -> 1E-6176 - -dqcps135 copysign -1E-6176 8 -> 1E-6176 -dqcps136 copysign -1.000000000000000000000000000000000E-6143 8 -> 1.000000000000000000000000000000000E-6143 -dqcps137 copysign -1E-6143 8 -> 1E-6143 -dqcps138 copysign -9.999999999999999999999999999999999E+6144 8 -> 9.999999999999999999999999999999999E+6144 - --- repeat with negative RHS - --- Infinities -dqcps211 copysign Infinity -34 -> -Infinity -dqcps212 copysign -Infinity -34 -> -Infinity - --- NaNs, 0 payload -dqcps221 copysign NaN -34 -> -NaN -dqcps222 copysign -NaN -34 -> -NaN -dqcps223 copysign sNaN -34 -> -sNaN -dqcps224 copysign -sNaN -34 -> -sNaN - --- NaNs, non-0 payload -dqcps231 copysign NaN10 -34 -> -NaN10 -dqcps232 copysign -NaN10 -34 -> -NaN10 -dqcps233 copysign sNaN10 -34 -> -sNaN10 -dqcps234 copysign -sNaN10 -34 -> -sNaN10 -dqcps235 copysign NaN7 -34 -> -NaN7 -dqcps236 copysign -NaN7 -34 -> -NaN7 -dqcps237 copysign sNaN101 -34 -> -sNaN101 -dqcps238 copysign -sNaN101 -34 -> -sNaN101 - --- finites -dqcps301 copysign 7 -34 -> -7 -dqcps302 copysign -7 -34 -> -7 -dqcps303 copysign 75 -34 -> -75 -dqcps304 copysign -75 -34 -> -75 -dqcps305 copysign 7.50 -34 -> -7.50 -dqcps306 copysign -7.50 -34 -> -7.50 -dqcps307 copysign 7.500 -34 -> -7.500 -dqcps308 copysign -7.500 -34 -> -7.500 - --- zeros -dqcps311 copysign 0 -34 -> -0 -dqcps312 copysign -0 -34 -> -0 -dqcps313 copysign 0E+4 -34 -> -0E+4 -dqcps314 copysign -0E+4 -34 -> -0E+4 -dqcps315 copysign 0.0000 -34 -> -0.0000 -dqcps316 copysign -0.0000 -34 -> -0.0000 -dqcps317 copysign 0E-141 -34 -> -0E-141 -dqcps318 copysign -0E-141 -34 -> -0E-141 - --- full coefficients, alternating bits -dqcps321 copysign 2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682 -dqcps322 copysign -2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682 -dqcps323 copysign 1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341 -dqcps324 copysign -1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341 - --- Nmax, Nmin, Ntiny -dqcps331 copysign 9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144 -dqcps332 copysign 1E-6143 -1 -> -1E-6143 -dqcps333 copysign 1.000000000000000000000000000000000E-6143 -1 -> -1.000000000000000000000000000000000E-6143 -dqcps334 copysign 1E-6176 -1 -> -1E-6176 - -dqcps335 copysign -1E-6176 -3 -> -1E-6176 -dqcps336 copysign -1.000000000000000000000000000000000E-6143 -3 -> -1.000000000000000000000000000000000E-6143 -dqcps337 copysign -1E-6143 -3 -> -1E-6143 -dqcps338 copysign -9.999999999999999999999999999999999E+6144 -3 -> -9.999999999999999999999999999999999E+6144 - --- Other kinds of RHS -dqcps401 copysign 701 -34 -> -701 -dqcps402 copysign -720 -34 -> -720 -dqcps403 copysign 701 -0 -> -701 -dqcps404 copysign -720 -0 -> -720 -dqcps405 copysign 701 +0 -> 701 -dqcps406 copysign -720 +0 -> 720 -dqcps407 copysign 701 +34 -> 701 -dqcps408 copysign -720 +34 -> 720 - -dqcps413 copysign 701 -Inf -> -701 -dqcps414 copysign -720 -Inf -> -720 -dqcps415 copysign 701 +Inf -> 701 -dqcps416 copysign -720 +Inf -> 720 - -dqcps420 copysign 701 -NaN -> -701 -dqcps421 copysign -720 -NaN -> -720 -dqcps422 copysign 701 +NaN -> 701 -dqcps423 copysign -720 +NaN -> 720 -dqcps425 copysign -720 +NaN8 -> 720 - -dqcps426 copysign 701 -sNaN -> -701 -dqcps427 copysign -720 -sNaN -> -720 -dqcps428 copysign 701 +sNaN -> 701 -dqcps429 copysign -720 +sNaN -> 720 -dqcps430 copysign -720 +sNaN3 -> 720 - +------------------------------------------------------------------------ +-- dqCopySign.decTest -- quiet decQuad copy with sign from rhs -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check +dqcps001 copysign +7.50 11 -> 7.50 + +-- Infinities +dqcps011 copysign Infinity 11 -> Infinity +dqcps012 copysign -Infinity 11 -> Infinity + +-- NaNs, 0 payload +dqcps021 copysign NaN 11 -> NaN +dqcps022 copysign -NaN 11 -> NaN +dqcps023 copysign sNaN 11 -> sNaN +dqcps024 copysign -sNaN 11 -> sNaN + +-- NaNs, non-0 payload +dqcps031 copysign NaN10 11 -> NaN10 +dqcps032 copysign -NaN10 11 -> NaN10 +dqcps033 copysign sNaN10 11 -> sNaN10 +dqcps034 copysign -sNaN10 11 -> sNaN10 +dqcps035 copysign NaN7 11 -> NaN7 +dqcps036 copysign -NaN7 11 -> NaN7 +dqcps037 copysign sNaN101 11 -> sNaN101 +dqcps038 copysign -sNaN101 11 -> sNaN101 + +-- finites +dqcps101 copysign 7 11 -> 7 +dqcps102 copysign -7 11 -> 7 +dqcps103 copysign 75 11 -> 75 +dqcps104 copysign -75 11 -> 75 +dqcps105 copysign 7.50 11 -> 7.50 +dqcps106 copysign -7.50 11 -> 7.50 +dqcps107 copysign 7.500 11 -> 7.500 +dqcps108 copysign -7.500 11 -> 7.500 + +-- zeros +dqcps111 copysign 0 11 -> 0 +dqcps112 copysign -0 11 -> 0 +dqcps113 copysign 0E+4 11 -> 0E+4 +dqcps114 copysign -0E+4 11 -> 0E+4 +dqcps115 copysign 0.0000 11 -> 0.0000 +dqcps116 copysign -0.0000 11 -> 0.0000 +dqcps117 copysign 0E-141 11 -> 0E-141 +dqcps118 copysign -0E-141 11 -> 0E-141 + +-- full coefficients, alternating bits +dqcps121 copysign 2682682682682682682682682682682682 8 -> 2682682682682682682682682682682682 +dqcps122 copysign -2682682682682682682682682682682682 8 -> 2682682682682682682682682682682682 +dqcps123 copysign 1341341341341341341341341341341341 8 -> 1341341341341341341341341341341341 +dqcps124 copysign -1341341341341341341341341341341341 8 -> 1341341341341341341341341341341341 + +-- Nmax, Nmin, Ntiny +dqcps131 copysign 9.999999999999999999999999999999999E+6144 8 -> 9.999999999999999999999999999999999E+6144 +dqcps132 copysign 1E-6143 8 -> 1E-6143 +dqcps133 copysign 1.000000000000000000000000000000000E-6143 8 -> 1.000000000000000000000000000000000E-6143 +dqcps134 copysign 1E-6176 8 -> 1E-6176 + +dqcps135 copysign -1E-6176 8 -> 1E-6176 +dqcps136 copysign -1.000000000000000000000000000000000E-6143 8 -> 1.000000000000000000000000000000000E-6143 +dqcps137 copysign -1E-6143 8 -> 1E-6143 +dqcps138 copysign -9.999999999999999999999999999999999E+6144 8 -> 9.999999999999999999999999999999999E+6144 + +-- repeat with negative RHS + +-- Infinities +dqcps211 copysign Infinity -34 -> -Infinity +dqcps212 copysign -Infinity -34 -> -Infinity + +-- NaNs, 0 payload +dqcps221 copysign NaN -34 -> -NaN +dqcps222 copysign -NaN -34 -> -NaN +dqcps223 copysign sNaN -34 -> -sNaN +dqcps224 copysign -sNaN -34 -> -sNaN + +-- NaNs, non-0 payload +dqcps231 copysign NaN10 -34 -> -NaN10 +dqcps232 copysign -NaN10 -34 -> -NaN10 +dqcps233 copysign sNaN10 -34 -> -sNaN10 +dqcps234 copysign -sNaN10 -34 -> -sNaN10 +dqcps235 copysign NaN7 -34 -> -NaN7 +dqcps236 copysign -NaN7 -34 -> -NaN7 +dqcps237 copysign sNaN101 -34 -> -sNaN101 +dqcps238 copysign -sNaN101 -34 -> -sNaN101 + +-- finites +dqcps301 copysign 7 -34 -> -7 +dqcps302 copysign -7 -34 -> -7 +dqcps303 copysign 75 -34 -> -75 +dqcps304 copysign -75 -34 -> -75 +dqcps305 copysign 7.50 -34 -> -7.50 +dqcps306 copysign -7.50 -34 -> -7.50 +dqcps307 copysign 7.500 -34 -> -7.500 +dqcps308 copysign -7.500 -34 -> -7.500 + +-- zeros +dqcps311 copysign 0 -34 -> -0 +dqcps312 copysign -0 -34 -> -0 +dqcps313 copysign 0E+4 -34 -> -0E+4 +dqcps314 copysign -0E+4 -34 -> -0E+4 +dqcps315 copysign 0.0000 -34 -> -0.0000 +dqcps316 copysign -0.0000 -34 -> -0.0000 +dqcps317 copysign 0E-141 -34 -> -0E-141 +dqcps318 copysign -0E-141 -34 -> -0E-141 + +-- full coefficients, alternating bits +dqcps321 copysign 2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682 +dqcps322 copysign -2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682 +dqcps323 copysign 1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341 +dqcps324 copysign -1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341 + +-- Nmax, Nmin, Ntiny +dqcps331 copysign 9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144 +dqcps332 copysign 1E-6143 -1 -> -1E-6143 +dqcps333 copysign 1.000000000000000000000000000000000E-6143 -1 -> -1.000000000000000000000000000000000E-6143 +dqcps334 copysign 1E-6176 -1 -> -1E-6176 + +dqcps335 copysign -1E-6176 -3 -> -1E-6176 +dqcps336 copysign -1.000000000000000000000000000000000E-6143 -3 -> -1.000000000000000000000000000000000E-6143 +dqcps337 copysign -1E-6143 -3 -> -1E-6143 +dqcps338 copysign -9.999999999999999999999999999999999E+6144 -3 -> -9.999999999999999999999999999999999E+6144 + +-- Other kinds of RHS +dqcps401 copysign 701 -34 -> -701 +dqcps402 copysign -720 -34 -> -720 +dqcps403 copysign 701 -0 -> -701 +dqcps404 copysign -720 -0 -> -720 +dqcps405 copysign 701 +0 -> 701 +dqcps406 copysign -720 +0 -> 720 +dqcps407 copysign 701 +34 -> 701 +dqcps408 copysign -720 +34 -> 720 + +dqcps413 copysign 701 -Inf -> -701 +dqcps414 copysign -720 -Inf -> -720 +dqcps415 copysign 701 +Inf -> 701 +dqcps416 copysign -720 +Inf -> 720 + +dqcps420 copysign 701 -NaN -> -701 +dqcps421 copysign -720 -NaN -> -720 +dqcps422 copysign 701 +NaN -> 701 +dqcps423 copysign -720 +NaN -> 720 +dqcps425 copysign -720 +NaN8 -> 720 + +dqcps426 copysign 701 -sNaN -> -701 +dqcps427 copysign -720 -sNaN -> -720 +dqcps428 copysign 701 +sNaN -> 701 +dqcps429 copysign -720 +sNaN -> 720 +dqcps430 copysign -720 +sNaN3 -> 720 + diff --git a/Lib/test/decimaltestdata/dqDivide.decTest b/Lib/test/decimaltestdata/dqDivide.decTest index 3cf60c6..2abb939 100644 --- a/Lib/test/decimaltestdata/dqDivide.decTest +++ b/Lib/test/decimaltestdata/dqDivide.decTest @@ -1,808 +1,808 @@ ------------------------------------------------------------------------- --- dqDivide.decTest -- decQuad division -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqdiv001 divide 1 1 -> 1 -dqdiv002 divide 2 1 -> 2 -dqdiv003 divide 1 2 -> 0.5 -dqdiv004 divide 2 2 -> 1 -dqdiv005 divide 0 1 -> 0 -dqdiv006 divide 0 2 -> 0 -dqdiv007 divide 1 3 -> 0.3333333333333333333333333333333333 Inexact Rounded -dqdiv008 divide 2 3 -> 0.6666666666666666666666666666666667 Inexact Rounded -dqdiv009 divide 3 3 -> 1 - -dqdiv010 divide 2.4 1 -> 2.4 -dqdiv011 divide 2.4 -1 -> -2.4 -dqdiv012 divide -2.4 1 -> -2.4 -dqdiv013 divide -2.4 -1 -> 2.4 -dqdiv014 divide 2.40 1 -> 2.40 -dqdiv015 divide 2.400 1 -> 2.400 -dqdiv016 divide 2.4 2 -> 1.2 -dqdiv017 divide 2.400 2 -> 1.200 -dqdiv018 divide 2. 2 -> 1 -dqdiv019 divide 20 20 -> 1 - -dqdiv020 divide 187 187 -> 1 -dqdiv021 divide 5 2 -> 2.5 -dqdiv022 divide 50 20 -> 2.5 -dqdiv023 divide 500 200 -> 2.5 -dqdiv024 divide 50.0 20.0 -> 2.5 -dqdiv025 divide 5.00 2.00 -> 2.5 -dqdiv026 divide 5 2.0 -> 2.5 -dqdiv027 divide 5 2.000 -> 2.5 -dqdiv028 divide 5 0.20 -> 25 -dqdiv029 divide 5 0.200 -> 25 -dqdiv030 divide 10 1 -> 10 -dqdiv031 divide 100 1 -> 100 -dqdiv032 divide 1000 1 -> 1000 -dqdiv033 divide 1000 100 -> 10 - -dqdiv035 divide 1 2 -> 0.5 -dqdiv036 divide 1 4 -> 0.25 -dqdiv037 divide 1 8 -> 0.125 -dqdiv038 divide 1 16 -> 0.0625 -dqdiv039 divide 1 32 -> 0.03125 -dqdiv040 divide 1 64 -> 0.015625 -dqdiv041 divide 1 -2 -> -0.5 -dqdiv042 divide 1 -4 -> -0.25 -dqdiv043 divide 1 -8 -> -0.125 -dqdiv044 divide 1 -16 -> -0.0625 -dqdiv045 divide 1 -32 -> -0.03125 -dqdiv046 divide 1 -64 -> -0.015625 -dqdiv047 divide -1 2 -> -0.5 -dqdiv048 divide -1 4 -> -0.25 -dqdiv049 divide -1 8 -> -0.125 -dqdiv050 divide -1 16 -> -0.0625 -dqdiv051 divide -1 32 -> -0.03125 -dqdiv052 divide -1 64 -> -0.015625 -dqdiv053 divide -1 -2 -> 0.5 -dqdiv054 divide -1 -4 -> 0.25 -dqdiv055 divide -1 -8 -> 0.125 -dqdiv056 divide -1 -16 -> 0.0625 -dqdiv057 divide -1 -32 -> 0.03125 -dqdiv058 divide -1 -64 -> 0.015625 - --- bcdTime -dqdiv060 divide 1 7 -> 0.1428571428571428571428571428571429 Inexact Rounded -dqdiv061 divide 1.2345678 1.9876543 -> 0.6211179680490717123193907511985359 Inexact Rounded - --- 1234567890123456 -dqdiv067 divide 9999999999999999999999999999999999 1 -> 9999999999999999999999999999999999 -dqdiv068 divide 999999999999999999999999999999999 1 -> 999999999999999999999999999999999 -dqdiv069 divide 99999999999999999999999999999999 1 -> 99999999999999999999999999999999 -dqdiv070 divide 99999999999999999 1 -> 99999999999999999 -dqdiv071 divide 9999999999999999 1 -> 9999999999999999 -dqdiv072 divide 999999999999999 1 -> 999999999999999 -dqdiv073 divide 99999999999999 1 -> 99999999999999 -dqdiv074 divide 9999999999999 1 -> 9999999999999 -dqdiv075 divide 999999999999 1 -> 999999999999 -dqdiv076 divide 99999999999 1 -> 99999999999 -dqdiv077 divide 9999999999 1 -> 9999999999 -dqdiv078 divide 999999999 1 -> 999999999 -dqdiv079 divide 99999999 1 -> 99999999 -dqdiv080 divide 9999999 1 -> 9999999 -dqdiv081 divide 999999 1 -> 999999 -dqdiv082 divide 99999 1 -> 99999 -dqdiv083 divide 9999 1 -> 9999 -dqdiv084 divide 999 1 -> 999 -dqdiv085 divide 99 1 -> 99 -dqdiv086 divide 9 1 -> 9 - -dqdiv090 divide 0. 1 -> 0 -dqdiv091 divide .0 1 -> 0.0 -dqdiv092 divide 0.00 1 -> 0.00 -dqdiv093 divide 0.00E+9 1 -> 0E+7 -dqdiv094 divide 0.0000E-50 1 -> 0E-54 - -dqdiv095 divide 1 1E-8 -> 1E+8 -dqdiv096 divide 1 1E-9 -> 1E+9 -dqdiv097 divide 1 1E-10 -> 1E+10 -dqdiv098 divide 1 1E-11 -> 1E+11 -dqdiv099 divide 1 1E-12 -> 1E+12 - -dqdiv100 divide 1 1 -> 1 -dqdiv101 divide 1 2 -> 0.5 -dqdiv102 divide 1 3 -> 0.3333333333333333333333333333333333 Inexact Rounded -dqdiv103 divide 1 4 -> 0.25 -dqdiv104 divide 1 5 -> 0.2 -dqdiv105 divide 1 6 -> 0.1666666666666666666666666666666667 Inexact Rounded -dqdiv106 divide 1 7 -> 0.1428571428571428571428571428571429 Inexact Rounded -dqdiv107 divide 1 8 -> 0.125 -dqdiv108 divide 1 9 -> 0.1111111111111111111111111111111111 Inexact Rounded -dqdiv109 divide 1 10 -> 0.1 -dqdiv110 divide 1 1 -> 1 -dqdiv111 divide 2 1 -> 2 -dqdiv112 divide 3 1 -> 3 -dqdiv113 divide 4 1 -> 4 -dqdiv114 divide 5 1 -> 5 -dqdiv115 divide 6 1 -> 6 -dqdiv116 divide 7 1 -> 7 -dqdiv117 divide 8 1 -> 8 -dqdiv118 divide 9 1 -> 9 -dqdiv119 divide 10 1 -> 10 - -dqdiv120 divide 3E+1 0.001 -> 3E+4 -dqdiv121 divide 2.200 2 -> 1.100 - -dqdiv130 divide 12345 4.999 -> 2469.493898779755951190238047609522 Inexact Rounded -dqdiv131 divide 12345 4.99 -> 2473.947895791583166332665330661323 Inexact Rounded -dqdiv132 divide 12345 4.9 -> 2519.387755102040816326530612244898 Inexact Rounded -dqdiv133 divide 12345 5 -> 2469 -dqdiv134 divide 12345 5.1 -> 2420.588235294117647058823529411765 Inexact Rounded -dqdiv135 divide 12345 5.01 -> 2464.071856287425149700598802395210 Inexact Rounded -dqdiv136 divide 12345 5.001 -> 2468.506298740251949610077984403119 Inexact Rounded - --- test possibly imprecise results -dqdiv220 divide 391 597 -> 0.6549413735343383584589614740368509 Inexact Rounded -dqdiv221 divide 391 -597 -> -0.6549413735343383584589614740368509 Inexact Rounded -dqdiv222 divide -391 597 -> -0.6549413735343383584589614740368509 Inexact Rounded -dqdiv223 divide -391 -597 -> 0.6549413735343383584589614740368509 Inexact Rounded - --- test some cases that are close to exponent overflow -dqdiv270 divide 1 1e6144 -> 1E-6144 Subnormal -dqdiv271 divide 1 0.9e6144 -> 1.11111111111111111111111111111111E-6144 Rounded Inexact Subnormal Underflow -dqdiv272 divide 1 0.99e6144 -> 1.01010101010101010101010101010101E-6144 Rounded Inexact Subnormal Underflow -dqdiv273 divide 1 0.9999999999999999e6144 -> 1.00000000000000010000000000000001E-6144 Rounded Inexact Subnormal Underflow -dqdiv274 divide 9e6144 1 -> 9.000000000000000000000000000000000E+6144 Clamped -dqdiv275 divide 9.9e6144 1 -> 9.900000000000000000000000000000000E+6144 Clamped -dqdiv276 divide 9.99e6144 1 -> 9.990000000000000000000000000000000E+6144 Clamped -dqdiv277 divide 9.999999999999999e6144 1 -> 9.999999999999999000000000000000000E+6144 Clamped - -dqdiv278 divide 1 0.9999999999999999999999999999999999e6144 -> 1.00000000000000000000000000000000E-6144 Rounded Inexact Subnormal Underflow -dqdiv279 divide 9.999999999999999999999999999999999e6144 1 -> 9.999999999999999999999999999999999E+6144 - --- Divide into 0 tests -dqdiv301 divide 0 7 -> 0 -dqdiv302 divide 0 7E-5 -> 0E+5 -dqdiv303 divide 0 7E-1 -> 0E+1 -dqdiv304 divide 0 7E+1 -> 0.0 -dqdiv305 divide 0 7E+5 -> 0.00000 -dqdiv306 divide 0 7E+6 -> 0.000000 -dqdiv307 divide 0 7E+7 -> 0E-7 -dqdiv308 divide 0 70E-5 -> 0E+5 -dqdiv309 divide 0 70E-1 -> 0E+1 -dqdiv310 divide 0 70E+0 -> 0 -dqdiv311 divide 0 70E+1 -> 0.0 -dqdiv312 divide 0 70E+5 -> 0.00000 -dqdiv313 divide 0 70E+6 -> 0.000000 -dqdiv314 divide 0 70E+7 -> 0E-7 -dqdiv315 divide 0 700E-5 -> 0E+5 -dqdiv316 divide 0 700E-1 -> 0E+1 -dqdiv317 divide 0 700E+0 -> 0 -dqdiv318 divide 0 700E+1 -> 0.0 -dqdiv319 divide 0 700E+5 -> 0.00000 -dqdiv320 divide 0 700E+6 -> 0.000000 -dqdiv321 divide 0 700E+7 -> 0E-7 -dqdiv322 divide 0 700E+77 -> 0E-77 - -dqdiv331 divide 0E-3 7E-5 -> 0E+2 -dqdiv332 divide 0E-3 7E-1 -> 0.00 -dqdiv333 divide 0E-3 7E+1 -> 0.0000 -dqdiv334 divide 0E-3 7E+5 -> 0E-8 -dqdiv335 divide 0E-1 7E-5 -> 0E+4 -dqdiv336 divide 0E-1 7E-1 -> 0 -dqdiv337 divide 0E-1 7E+1 -> 0.00 -dqdiv338 divide 0E-1 7E+5 -> 0.000000 -dqdiv339 divide 0E+1 7E-5 -> 0E+6 -dqdiv340 divide 0E+1 7E-1 -> 0E+2 -dqdiv341 divide 0E+1 7E+1 -> 0 -dqdiv342 divide 0E+1 7E+5 -> 0.0000 -dqdiv343 divide 0E+3 7E-5 -> 0E+8 -dqdiv344 divide 0E+3 7E-1 -> 0E+4 -dqdiv345 divide 0E+3 7E+1 -> 0E+2 -dqdiv346 divide 0E+3 7E+5 -> 0.00 - --- These were 'input rounding' -dqdiv441 divide 12345678000 1 -> 12345678000 -dqdiv442 divide 1 12345678000 -> 8.100000664200054464404466081166219E-11 Inexact Rounded -dqdiv443 divide 1234567800 1 -> 1234567800 -dqdiv444 divide 1 1234567800 -> 8.100000664200054464404466081166219E-10 Inexact Rounded -dqdiv445 divide 1234567890 1 -> 1234567890 -dqdiv446 divide 1 1234567890 -> 8.100000073710000670761006103925156E-10 Inexact Rounded -dqdiv447 divide 1234567891 1 -> 1234567891 -dqdiv448 divide 1 1234567891 -> 8.100000067149000556665214614754629E-10 Inexact Rounded -dqdiv449 divide 12345678901 1 -> 12345678901 -dqdiv450 divide 1 12345678901 -> 8.100000073053900658873130042376760E-11 Inexact Rounded -dqdiv451 divide 1234567896 1 -> 1234567896 -dqdiv452 divide 1 1234567896 -> 8.100000034344000145618560617422697E-10 Inexact Rounded - --- high-lows -dqdiv453 divide 1e+1 1 -> 1E+1 -dqdiv454 divide 1e+1 1.0 -> 1E+1 -dqdiv455 divide 1e+1 1.00 -> 1E+1 -dqdiv456 divide 1e+2 2 -> 5E+1 -dqdiv457 divide 1e+2 2.0 -> 5E+1 -dqdiv458 divide 1e+2 2.00 -> 5E+1 - --- some from IEEE discussions -dqdiv460 divide 3e0 2e0 -> 1.5 -dqdiv461 divide 30e-1 2e0 -> 1.5 -dqdiv462 divide 300e-2 2e0 -> 1.50 -dqdiv464 divide 3000e-3 2e0 -> 1.500 -dqdiv465 divide 3e0 20e-1 -> 1.5 -dqdiv466 divide 30e-1 20e-1 -> 1.5 -dqdiv467 divide 300e-2 20e-1 -> 1.5 -dqdiv468 divide 3000e-3 20e-1 -> 1.50 -dqdiv469 divide 3e0 200e-2 -> 1.5 -dqdiv470 divide 30e-1 200e-2 -> 1.5 -dqdiv471 divide 300e-2 200e-2 -> 1.5 -dqdiv472 divide 3000e-3 200e-2 -> 1.5 -dqdiv473 divide 3e0 2000e-3 -> 1.5 -dqdiv474 divide 30e-1 2000e-3 -> 1.5 -dqdiv475 divide 300e-2 2000e-3 -> 1.5 -dqdiv476 divide 3000e-3 2000e-3 -> 1.5 - --- some reciprocals -dqdiv480 divide 1 1.0E+33 -> 1E-33 -dqdiv481 divide 1 10E+33 -> 1E-34 -dqdiv482 divide 1 1.0E-33 -> 1E+33 -dqdiv483 divide 1 10E-33 -> 1E+32 - --- RMS discussion table -dqdiv484 divide 0e5 1e3 -> 0E+2 -dqdiv485 divide 0e5 2e3 -> 0E+2 -dqdiv486 divide 0e5 10e2 -> 0E+3 -dqdiv487 divide 0e5 20e2 -> 0E+3 -dqdiv488 divide 0e5 100e1 -> 0E+4 -dqdiv489 divide 0e5 200e1 -> 0E+4 - -dqdiv491 divide 1e5 1e3 -> 1E+2 -dqdiv492 divide 1e5 2e3 -> 5E+1 -dqdiv493 divide 1e5 10e2 -> 1E+2 -dqdiv494 divide 1e5 20e2 -> 5E+1 -dqdiv495 divide 1e5 100e1 -> 1E+2 -dqdiv496 divide 1e5 200e1 -> 5E+1 - --- tryzeros cases -rounding: half_up -dqdiv497 divide 0E+6108 1000E-33 -> 0E+6111 Clamped -dqdiv498 divide 0E-6170 1000E+33 -> 0E-6176 Clamped - -rounding: half_up - --- focus on trailing zeros issues -dqdiv500 divide 1 9.9 -> 0.1010101010101010101010101010101010 Inexact Rounded -dqdiv501 divide 1 9.09 -> 0.1100110011001100110011001100110011 Inexact Rounded -dqdiv502 divide 1 9.009 -> 0.1110001110001110001110001110001110 Inexact Rounded - -dqdiv511 divide 1 2 -> 0.5 -dqdiv512 divide 1.0 2 -> 0.5 -dqdiv513 divide 1.00 2 -> 0.50 -dqdiv514 divide 1.000 2 -> 0.500 -dqdiv515 divide 1.0000 2 -> 0.5000 -dqdiv516 divide 1.00000 2 -> 0.50000 -dqdiv517 divide 1.000000 2 -> 0.500000 -dqdiv518 divide 1.0000000 2 -> 0.5000000 -dqdiv519 divide 1.00 2.00 -> 0.5 - -dqdiv521 divide 2 1 -> 2 -dqdiv522 divide 2 1.0 -> 2 -dqdiv523 divide 2 1.00 -> 2 -dqdiv524 divide 2 1.000 -> 2 -dqdiv525 divide 2 1.0000 -> 2 -dqdiv526 divide 2 1.00000 -> 2 -dqdiv527 divide 2 1.000000 -> 2 -dqdiv528 divide 2 1.0000000 -> 2 -dqdiv529 divide 2.00 1.00 -> 2 - -dqdiv530 divide 2.40 2 -> 1.20 -dqdiv531 divide 2.40 4 -> 0.60 -dqdiv532 divide 2.40 10 -> 0.24 -dqdiv533 divide 2.40 2.0 -> 1.2 -dqdiv534 divide 2.40 4.0 -> 0.6 -dqdiv535 divide 2.40 10.0 -> 0.24 -dqdiv536 divide 2.40 2.00 -> 1.2 -dqdiv537 divide 2.40 4.00 -> 0.6 -dqdiv538 divide 2.40 10.00 -> 0.24 -dqdiv539 divide 0.9 0.1 -> 9 -dqdiv540 divide 0.9 0.01 -> 9E+1 -dqdiv541 divide 0.9 0.001 -> 9E+2 -dqdiv542 divide 5 2 -> 2.5 -dqdiv543 divide 5 2.0 -> 2.5 -dqdiv544 divide 5 2.00 -> 2.5 -dqdiv545 divide 5 20 -> 0.25 -dqdiv546 divide 5 20.0 -> 0.25 -dqdiv547 divide 2.400 2 -> 1.200 -dqdiv548 divide 2.400 2.0 -> 1.20 -dqdiv549 divide 2.400 2.400 -> 1 - -dqdiv550 divide 240 1 -> 240 -dqdiv551 divide 240 10 -> 24 -dqdiv552 divide 240 100 -> 2.4 -dqdiv553 divide 240 1000 -> 0.24 -dqdiv554 divide 2400 1 -> 2400 -dqdiv555 divide 2400 10 -> 240 -dqdiv556 divide 2400 100 -> 24 -dqdiv557 divide 2400 1000 -> 2.4 - --- +ve exponent -dqdiv600 divide 2.4E+9 2 -> 1.2E+9 -dqdiv601 divide 2.40E+9 2 -> 1.20E+9 -dqdiv602 divide 2.400E+9 2 -> 1.200E+9 -dqdiv603 divide 2.4000E+9 2 -> 1.2000E+9 -dqdiv604 divide 24E+8 2 -> 1.2E+9 -dqdiv605 divide 240E+7 2 -> 1.20E+9 -dqdiv606 divide 2400E+6 2 -> 1.200E+9 -dqdiv607 divide 24000E+5 2 -> 1.2000E+9 - --- more zeros, etc. -dqdiv731 divide 5.00 1E-3 -> 5.00E+3 -dqdiv732 divide 00.00 0.000 -> NaN Division_undefined -dqdiv733 divide 00.00 0E-3 -> NaN Division_undefined -dqdiv734 divide 0 -0 -> NaN Division_undefined -dqdiv735 divide -0 0 -> NaN Division_undefined -dqdiv736 divide -0 -0 -> NaN Division_undefined - -dqdiv741 divide 0 -1 -> -0 -dqdiv742 divide -0 -1 -> 0 -dqdiv743 divide 0 1 -> 0 -dqdiv744 divide -0 1 -> -0 -dqdiv745 divide -1 0 -> -Infinity Division_by_zero -dqdiv746 divide -1 -0 -> Infinity Division_by_zero -dqdiv747 divide 1 0 -> Infinity Division_by_zero -dqdiv748 divide 1 -0 -> -Infinity Division_by_zero - -dqdiv751 divide 0.0 -1 -> -0.0 -dqdiv752 divide -0.0 -1 -> 0.0 -dqdiv753 divide 0.0 1 -> 0.0 -dqdiv754 divide -0.0 1 -> -0.0 -dqdiv755 divide -1.0 0 -> -Infinity Division_by_zero -dqdiv756 divide -1.0 -0 -> Infinity Division_by_zero -dqdiv757 divide 1.0 0 -> Infinity Division_by_zero -dqdiv758 divide 1.0 -0 -> -Infinity Division_by_zero - -dqdiv761 divide 0 -1.0 -> -0E+1 -dqdiv762 divide -0 -1.0 -> 0E+1 -dqdiv763 divide 0 1.0 -> 0E+1 -dqdiv764 divide -0 1.0 -> -0E+1 -dqdiv765 divide -1 0.0 -> -Infinity Division_by_zero -dqdiv766 divide -1 -0.0 -> Infinity Division_by_zero -dqdiv767 divide 1 0.0 -> Infinity Division_by_zero -dqdiv768 divide 1 -0.0 -> -Infinity Division_by_zero - -dqdiv771 divide 0.0 -1.0 -> -0 -dqdiv772 divide -0.0 -1.0 -> 0 -dqdiv773 divide 0.0 1.0 -> 0 -dqdiv774 divide -0.0 1.0 -> -0 -dqdiv775 divide -1.0 0.0 -> -Infinity Division_by_zero -dqdiv776 divide -1.0 -0.0 -> Infinity Division_by_zero -dqdiv777 divide 1.0 0.0 -> Infinity Division_by_zero -dqdiv778 divide 1.0 -0.0 -> -Infinity Division_by_zero - --- Specials -dqdiv780 divide Inf -Inf -> NaN Invalid_operation -dqdiv781 divide Inf -1000 -> -Infinity -dqdiv782 divide Inf -1 -> -Infinity -dqdiv783 divide Inf -0 -> -Infinity -dqdiv784 divide Inf 0 -> Infinity -dqdiv785 divide Inf 1 -> Infinity -dqdiv786 divide Inf 1000 -> Infinity -dqdiv787 divide Inf Inf -> NaN Invalid_operation -dqdiv788 divide -1000 Inf -> -0E-6176 Clamped -dqdiv789 divide -Inf Inf -> NaN Invalid_operation -dqdiv790 divide -1 Inf -> -0E-6176 Clamped -dqdiv791 divide -0 Inf -> -0E-6176 Clamped -dqdiv792 divide 0 Inf -> 0E-6176 Clamped -dqdiv793 divide 1 Inf -> 0E-6176 Clamped -dqdiv794 divide 1000 Inf -> 0E-6176 Clamped -dqdiv795 divide Inf Inf -> NaN Invalid_operation - -dqdiv800 divide -Inf -Inf -> NaN Invalid_operation -dqdiv801 divide -Inf -1000 -> Infinity -dqdiv802 divide -Inf -1 -> Infinity -dqdiv803 divide -Inf -0 -> Infinity -dqdiv804 divide -Inf 0 -> -Infinity -dqdiv805 divide -Inf 1 -> -Infinity -dqdiv806 divide -Inf 1000 -> -Infinity -dqdiv807 divide -Inf Inf -> NaN Invalid_operation -dqdiv808 divide -1000 Inf -> -0E-6176 Clamped -dqdiv809 divide -Inf -Inf -> NaN Invalid_operation -dqdiv810 divide -1 -Inf -> 0E-6176 Clamped -dqdiv811 divide -0 -Inf -> 0E-6176 Clamped -dqdiv812 divide 0 -Inf -> -0E-6176 Clamped -dqdiv813 divide 1 -Inf -> -0E-6176 Clamped -dqdiv814 divide 1000 -Inf -> -0E-6176 Clamped -dqdiv815 divide Inf -Inf -> NaN Invalid_operation - -dqdiv821 divide NaN -Inf -> NaN -dqdiv822 divide NaN -1000 -> NaN -dqdiv823 divide NaN -1 -> NaN -dqdiv824 divide NaN -0 -> NaN -dqdiv825 divide NaN 0 -> NaN -dqdiv826 divide NaN 1 -> NaN -dqdiv827 divide NaN 1000 -> NaN -dqdiv828 divide NaN Inf -> NaN -dqdiv829 divide NaN NaN -> NaN -dqdiv830 divide -Inf NaN -> NaN -dqdiv831 divide -1000 NaN -> NaN -dqdiv832 divide -1 NaN -> NaN -dqdiv833 divide -0 NaN -> NaN -dqdiv834 divide 0 NaN -> NaN -dqdiv835 divide 1 NaN -> NaN -dqdiv836 divide 1000 NaN -> NaN -dqdiv837 divide Inf NaN -> NaN - -dqdiv841 divide sNaN -Inf -> NaN Invalid_operation -dqdiv842 divide sNaN -1000 -> NaN Invalid_operation -dqdiv843 divide sNaN -1 -> NaN Invalid_operation -dqdiv844 divide sNaN -0 -> NaN Invalid_operation -dqdiv845 divide sNaN 0 -> NaN Invalid_operation -dqdiv846 divide sNaN 1 -> NaN Invalid_operation -dqdiv847 divide sNaN 1000 -> NaN Invalid_operation -dqdiv848 divide sNaN NaN -> NaN Invalid_operation -dqdiv849 divide sNaN sNaN -> NaN Invalid_operation -dqdiv850 divide NaN sNaN -> NaN Invalid_operation -dqdiv851 divide -Inf sNaN -> NaN Invalid_operation -dqdiv852 divide -1000 sNaN -> NaN Invalid_operation -dqdiv853 divide -1 sNaN -> NaN Invalid_operation -dqdiv854 divide -0 sNaN -> NaN Invalid_operation -dqdiv855 divide 0 sNaN -> NaN Invalid_operation -dqdiv856 divide 1 sNaN -> NaN Invalid_operation -dqdiv857 divide 1000 sNaN -> NaN Invalid_operation -dqdiv858 divide Inf sNaN -> NaN Invalid_operation -dqdiv859 divide NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqdiv861 divide NaN9 -Inf -> NaN9 -dqdiv862 divide NaN8 1000 -> NaN8 -dqdiv863 divide NaN7 Inf -> NaN7 -dqdiv864 divide NaN6 NaN5 -> NaN6 -dqdiv865 divide -Inf NaN4 -> NaN4 -dqdiv866 divide -1000 NaN3 -> NaN3 -dqdiv867 divide Inf NaN2 -> NaN2 - -dqdiv871 divide sNaN99 -Inf -> NaN99 Invalid_operation -dqdiv872 divide sNaN98 -1 -> NaN98 Invalid_operation -dqdiv873 divide sNaN97 NaN -> NaN97 Invalid_operation -dqdiv874 divide sNaN96 sNaN94 -> NaN96 Invalid_operation -dqdiv875 divide NaN95 sNaN93 -> NaN93 Invalid_operation -dqdiv876 divide -Inf sNaN92 -> NaN92 Invalid_operation -dqdiv877 divide 0 sNaN91 -> NaN91 Invalid_operation -dqdiv878 divide Inf sNaN90 -> NaN90 Invalid_operation -dqdiv879 divide NaN sNaN89 -> NaN89 Invalid_operation - -dqdiv881 divide -NaN9 -Inf -> -NaN9 -dqdiv882 divide -NaN8 1000 -> -NaN8 -dqdiv883 divide -NaN7 Inf -> -NaN7 -dqdiv884 divide -NaN6 -NaN5 -> -NaN6 -dqdiv885 divide -Inf -NaN4 -> -NaN4 -dqdiv886 divide -1000 -NaN3 -> -NaN3 -dqdiv887 divide Inf -NaN2 -> -NaN2 - -dqdiv891 divide -sNaN99 -Inf -> -NaN99 Invalid_operation -dqdiv892 divide -sNaN98 -1 -> -NaN98 Invalid_operation -dqdiv893 divide -sNaN97 NaN -> -NaN97 Invalid_operation -dqdiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation -dqdiv895 divide -NaN95 -sNaN93 -> -NaN93 Invalid_operation -dqdiv896 divide -Inf -sNaN92 -> -NaN92 Invalid_operation -dqdiv897 divide 0 -sNaN91 -> -NaN91 Invalid_operation -dqdiv898 divide Inf -sNaN90 -> -NaN90 Invalid_operation -dqdiv899 divide -NaN -sNaN89 -> -NaN89 Invalid_operation - --- Various flavours of divide by 0 -dqdiv901 divide 0 0 -> NaN Division_undefined -dqdiv902 divide 0.0E5 0 -> NaN Division_undefined -dqdiv903 divide 0.000 0 -> NaN Division_undefined -dqdiv904 divide 0.0001 0 -> Infinity Division_by_zero -dqdiv905 divide 0.01 0 -> Infinity Division_by_zero -dqdiv906 divide 0.1 0 -> Infinity Division_by_zero -dqdiv907 divide 1 0 -> Infinity Division_by_zero -dqdiv908 divide 1 0.0 -> Infinity Division_by_zero -dqdiv909 divide 10 0.0 -> Infinity Division_by_zero -dqdiv910 divide 1E+100 0.0 -> Infinity Division_by_zero -dqdiv911 divide 1E+100 0 -> Infinity Division_by_zero - -dqdiv921 divide -0.0001 0 -> -Infinity Division_by_zero -dqdiv922 divide -0.01 0 -> -Infinity Division_by_zero -dqdiv923 divide -0.1 0 -> -Infinity Division_by_zero -dqdiv924 divide -1 0 -> -Infinity Division_by_zero -dqdiv925 divide -1 0.0 -> -Infinity Division_by_zero -dqdiv926 divide -10 0.0 -> -Infinity Division_by_zero -dqdiv927 divide -1E+100 0.0 -> -Infinity Division_by_zero -dqdiv928 divide -1E+100 0 -> -Infinity Division_by_zero - -dqdiv931 divide 0.0001 -0 -> -Infinity Division_by_zero -dqdiv932 divide 0.01 -0 -> -Infinity Division_by_zero -dqdiv933 divide 0.1 -0 -> -Infinity Division_by_zero -dqdiv934 divide 1 -0 -> -Infinity Division_by_zero -dqdiv935 divide 1 -0.0 -> -Infinity Division_by_zero -dqdiv936 divide 10 -0.0 -> -Infinity Division_by_zero -dqdiv937 divide 1E+100 -0.0 -> -Infinity Division_by_zero -dqdiv938 divide 1E+100 -0 -> -Infinity Division_by_zero - -dqdiv941 divide -0.0001 -0 -> Infinity Division_by_zero -dqdiv942 divide -0.01 -0 -> Infinity Division_by_zero -dqdiv943 divide -0.1 -0 -> Infinity Division_by_zero -dqdiv944 divide -1 -0 -> Infinity Division_by_zero -dqdiv945 divide -1 -0.0 -> Infinity Division_by_zero -dqdiv946 divide -10 -0.0 -> Infinity Division_by_zero -dqdiv947 divide -1E+100 -0.0 -> Infinity Division_by_zero -dqdiv948 divide -1E+100 -0 -> Infinity Division_by_zero - --- Examples from SQL proposal (Krishna Kulkarni) -dqdiv1021 divide 1E0 1E0 -> 1 -dqdiv1022 divide 1E0 2E0 -> 0.5 -dqdiv1023 divide 1E0 3E0 -> 0.3333333333333333333333333333333333 Inexact Rounded -dqdiv1024 divide 100E-2 1000E-3 -> 1 -dqdiv1025 divide 24E-1 2E0 -> 1.2 -dqdiv1026 divide 2400E-3 2E0 -> 1.200 -dqdiv1027 divide 5E0 2E0 -> 2.5 -dqdiv1028 divide 5E0 20E-1 -> 2.5 -dqdiv1029 divide 5E0 2000E-3 -> 2.5 -dqdiv1030 divide 5E0 2E-1 -> 25 -dqdiv1031 divide 5E0 20E-2 -> 25 -dqdiv1032 divide 480E-2 3E0 -> 1.60 -dqdiv1033 divide 47E-1 2E0 -> 2.35 - --- ECMAScript bad examples -rounding: half_down -dqdiv1040 divide 5 9 -> 0.5555555555555555555555555555555556 Inexact Rounded -rounding: half_even -dqdiv1041 divide 6 11 -> 0.5454545454545454545454545454545455 Inexact Rounded - --- Gyuris example -dqdiv1050 divide 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0.9999999999999999999999999999991254 Inexact Rounded - --- overflow and underflow tests .. note subnormal results --- signs -dqdiv1751 divide 1e+4277 1e-3311 -> Infinity Overflow Inexact Rounded -dqdiv1752 divide 1e+4277 -1e-3311 -> -Infinity Overflow Inexact Rounded -dqdiv1753 divide -1e+4277 1e-3311 -> -Infinity Overflow Inexact Rounded -dqdiv1754 divide -1e+4277 -1e-3311 -> Infinity Overflow Inexact Rounded -dqdiv1755 divide 1e-4277 1e+3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1756 divide 1e-4277 -1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1757 divide -1e-4277 1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1758 divide -1e-4277 -1e+3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -dqdiv1760 divide 1e-6069 1e+101 -> 1E-6170 Subnormal -dqdiv1761 divide 1e-6069 1e+102 -> 1E-6171 Subnormal -dqdiv1762 divide 1e-6069 1e+103 -> 1E-6172 Subnormal -dqdiv1763 divide 1e-6069 1e+104 -> 1E-6173 Subnormal -dqdiv1764 divide 1e-6069 1e+105 -> 1E-6174 Subnormal -dqdiv1765 divide 1e-6069 1e+106 -> 1E-6175 Subnormal -dqdiv1766 divide 1e-6069 1e+107 -> 1E-6176 Subnormal -dqdiv1767 divide 1e-6069 1e+108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1768 divide 1e-6069 1e+109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1769 divide 1e-6069 1e+110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped --- [no equivalent of 'subnormal' for overflow] -dqdiv1770 divide 1e+40 1e-6101 -> 1.000000000000000000000000000000E+6141 Clamped -dqdiv1771 divide 1e+40 1e-6102 -> 1.0000000000000000000000000000000E+6142 Clamped -dqdiv1772 divide 1e+40 1e-6103 -> 1.00000000000000000000000000000000E+6143 Clamped -dqdiv1773 divide 1e+40 1e-6104 -> 1.000000000000000000000000000000000E+6144 Clamped -dqdiv1774 divide 1e+40 1e-6105 -> Infinity Overflow Inexact Rounded -dqdiv1775 divide 1e+40 1e-6106 -> Infinity Overflow Inexact Rounded -dqdiv1776 divide 1e+40 1e-6107 -> Infinity Overflow Inexact Rounded -dqdiv1777 divide 1e+40 1e-6108 -> Infinity Overflow Inexact Rounded -dqdiv1778 divide 1e+40 1e-6109 -> Infinity Overflow Inexact Rounded -dqdiv1779 divide 1e+40 1e-6110 -> Infinity Overflow Inexact Rounded - -dqdiv1801 divide 1.0000E-6172 1 -> 1.0000E-6172 Subnormal -dqdiv1802 divide 1.000E-6172 1e+1 -> 1.000E-6173 Subnormal -dqdiv1803 divide 1.00E-6172 1e+2 -> 1.00E-6174 Subnormal -dqdiv1804 divide 1.0E-6172 1e+3 -> 1.0E-6175 Subnormal -dqdiv1805 divide 1.0E-6172 1e+4 -> 1E-6176 Subnormal Rounded -dqdiv1806 divide 1.3E-6172 1e+4 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqdiv1807 divide 1.5E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqdiv1808 divide 1.7E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqdiv1809 divide 2.3E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqdiv1810 divide 2.5E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqdiv1811 divide 2.7E-6172 1e+4 -> 3E-6176 Underflow Subnormal Inexact Rounded -dqdiv1812 divide 1.49E-6172 1e+4 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqdiv1813 divide 1.50E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqdiv1814 divide 1.51E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqdiv1815 divide 2.49E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqdiv1816 divide 2.50E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqdiv1817 divide 2.51E-6172 1e+4 -> 3E-6176 Underflow Subnormal Inexact Rounded - -dqdiv1818 divide 1E-6172 1e+4 -> 1E-6176 Subnormal -dqdiv1819 divide 3E-6172 1e+5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1820 divide 5E-6172 1e+5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1821 divide 7E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqdiv1822 divide 9E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqdiv1823 divide 9.9E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded - -dqdiv1824 divide 1E-6172 -1e+4 -> -1E-6176 Subnormal -dqdiv1825 divide 3E-6172 -1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1826 divide -5E-6172 1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1827 divide 7E-6172 -1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqdiv1828 divide -9E-6172 1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqdiv1829 divide 9.9E-6172 -1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqdiv1830 divide 3.0E-6172 -1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped - -dqdiv1831 divide 1.0E-5977 1e+200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqdiv1832 divide 1.0E-5977 1e+199 -> 1E-6176 Subnormal Rounded -dqdiv1833 divide 1.0E-5977 1e+198 -> 1.0E-6175 Subnormal -dqdiv1834 divide 2.0E-5977 2e+198 -> 1.0E-6175 Subnormal -dqdiv1835 divide 4.0E-5977 4e+198 -> 1.0E-6175 Subnormal -dqdiv1836 divide 10.0E-5977 10e+198 -> 1.0E-6175 Subnormal -dqdiv1837 divide 30.0E-5977 30e+198 -> 1.0E-6175 Subnormal -dqdiv1838 divide 40.0E-5982 40e+166 -> 1.0E-6148 Subnormal -dqdiv1839 divide 40.0E-5982 40e+165 -> 1.0E-6147 Subnormal -dqdiv1840 divide 40.0E-5982 40e+164 -> 1.0E-6146 Subnormal - --- randoms -rounding: half_even -dqdiv2010 divide -5231195652931651968034356117118850 -7243718664422548573203260970.34995 -> 722169.9095831284624736051460550680 Inexact Rounded -dqdiv2011 divide -89584669773927.82711237350022515352 -42077943728529635884.21142627532985 -> 0.000002129017291146471565928125887527266 Inexact Rounded -dqdiv2012 divide -2.828201693360723203806974891946180E-232 812596541221823960386384403089240.9 -> -3.480450075640521320040055759125120E-265 Inexact Rounded -dqdiv2013 divide -6442775372761069267502937539408720 24904085056.69185465145182606089196 -> -258703556388226463687701.4884719589 Inexact Rounded -dqdiv2014 divide 5.535520011272625629610079879714705 -44343664650.57203052003068113531208 -> -1.248322630728089308975940533493562E-10 Inexact Rounded -dqdiv2015 divide 65919273712517865964325.99419625010 -314733354141381737378622515.7789054 -> -0.0002094448295521490616379784758911632 Inexact Rounded -dqdiv2016 divide -7.779172568193197107115275140431129E+759 -140453015639.3988987652895178782143 -> 5.538629792161641534962774244238115E+748 Inexact Rounded -dqdiv2017 divide 644314832597569.0181226067518178797 -115024585257425.1635759521565201075 -> -5.601540150356479257367687450922795 Inexact Rounded -dqdiv2018 divide 6.898640941579611450676592553286870E-47 -11272429881407851485163914999.25943 -> -6.119923578285338689371137648319280E-75 Inexact Rounded -dqdiv2019 divide -3591344544888727133.30819750163254 5329395.423792795661446561090331037 -> -673874662941.1968525589460533725290 Inexact Rounded -dqdiv2020 divide -7.682356781384631313156462724425838E+747 -6.60375855512219057281922141809940E+703 -> 1.163330960279556016678379128875149E+44 Inexact Rounded -dqdiv2021 divide -4511495596596941820863224.274679699 3365395017.263329795449661616090724 -> -1340554548115304.904166888018346299 Inexact Rounded -dqdiv2022 divide 5.211164127840931517263639608151299 164.5566381356276567012533847006453 -> 0.03166790587655228864478260157156510 Inexact Rounded -dqdiv2023 divide -49891.2243893458830384077684620383 -47179.9312961860747554053371171530 -> 1.057467084386767291602189656430268 Inexact Rounded -dqdiv2024 divide 15065477.47214268488077415462413353 4366211.120892953261309529740552596 -> 3.450469309661227984244545513441359 Inexact Rounded -dqdiv2025 divide 1.575670269440761846109602429612644E+370 653199649324740300.006185482643439 -> 2.412233795700359170904588548041481E+352 Inexact Rounded -dqdiv2026 divide -2112422311733448924573432192.620145 -80067206.03590693153848215848613406 -> 26383115089417660175.20102646756574 Inexact Rounded -dqdiv2027 divide -67096536051279809.32218611548721839 -869685412881941081664251990181.1049 -> 7.715035236584805921278566365231168E-14 Inexact Rounded -dqdiv2028 divide -58612908548962047.21866913425488972 -978449597531.3873665583475633831644 -> 59903.86085991703091236507859837023 Inexact Rounded -dqdiv2029 divide -133032412010942.1476864138213319796 -7.882059293498670705446528648201359E-428 -> 1.687787506504433064549515681693715E+441 Inexact Rounded -dqdiv2030 divide 1.83746698338966029492299716360513E+977 -9.897926608979649951672839879128603E+154 -> -1.856416051542212552042390218062458E+822 Inexact Rounded -dqdiv2031 divide -113742475841399236307128962.1507063 8298602.203049834732657567965262989 -> -13706221006665137826.16557393919929 Inexact Rounded -dqdiv2032 divide 196.4787574650754152995941808331862 929.6553388472318094427422117172394 -> 0.2113458066176526651006917922814018 Inexact Rounded -dqdiv2033 divide 71931221465.43867996282803628130350 3838685934206426257090718.402248853 -> 1.873850132527423413607199513324021E-14 Inexact Rounded -dqdiv2034 divide 488.4282502289651653783596246312885 -80.68940956806634280078706577953188 -> -6.053189047280693318844801899473272 Inexact Rounded -dqdiv2035 divide 9.001764344963921754981762913247394E-162 -8.585540973667205753734967645386919E-729 -> -1.048479574271827326396012573232934E+567 Inexact Rounded -dqdiv2036 divide -7.404133959409894743706402857145471E-828 -51.38159929460289711134684843086265 -> 1.441008855516029461032061785219773E-829 Inexact Rounded -dqdiv2037 divide 2.967520235574419794048994436040717E-613 -6252513855.91394894949879262731889 -> -4.746123405656409127572998751885338E-623 Inexact Rounded -dqdiv2038 divide -18826852654824040505.83920366765051 -6336924877942437992590557460147340 -> 2.970976146546494669807886278519194E-15 Inexact Rounded -dqdiv2039 divide -8.101406784809197604949584001735949E+561 4.823300306948942821076681658771635E+361 -> -1.679639721610839204738445747238987E+200 Inexact Rounded -dqdiv2040 divide -6.11981977773094052331062585191723E+295 1.507610253755339328302779005586534E+238 -> -4.059285058911577244044418416044763E+57 Inexact Rounded -dqdiv2041 divide 6.472638850046815880599220534274055E-596 -4.475233712083047516933911786159972 -> -1.446324207062261745520496475778879E-596 Inexact Rounded -dqdiv2042 divide -84438593330.71277839631144509397112 -586684596204401664208947.4054879633 -> 1.439250218550041228759983937772504E-13 Inexact Rounded -dqdiv2043 divide 9.354533233294022616695815656704369E-24 405.500390626135304252144163591746 -> 2.306911028827774549740571229736198E-26 Inexact Rounded -dqdiv2044 divide 985606423350210.7374876650149957881 -36811563697.41925681866694859828794 -> -26774.36990864119445335813354717711 Inexact Rounded -dqdiv2045 divide -8.187280774177715706278002247766311E-123 -38784124393.91212870828430001300068 -> 2.110987653356139147357240727794365E-133 Inexact Rounded -dqdiv2046 divide -4.612203126350070903459245798371657E+912 7.971562182727956290901984736800519E+64 -> -5.785820922708683237098826662769748E+847 Inexact Rounded -dqdiv2047 divide 4.661015909421485298247928967977089E+888 -6.360911253323922338737311563845581E+388 -> -7.327591478321365980156654539638836E+499 Inexact Rounded -dqdiv2048 divide 9156078172903.257500003260710833030 7.189796653262147139071634237964074E-90 -> 1.273482215766000994365201545096026E+102 Inexact Rounded -dqdiv2049 divide -1.710722303327476586373477781276586E-311 -3167561628260156837329323.729380695 -> 5.400754599578613984875752958645655E-336 Inexact Rounded -dqdiv2050 divide -4.647935210881806238321616345413021E-878 209388.5431867744648177308460639582 -> -2.219765771394593733140494297388140E-883 Inexact Rounded -dqdiv2051 divide 5958.694728395760992719084781582700 4.541510156564315632536353171846096E-746 -> 1.312051393253638664947852693005480E+749 Inexact Rounded -dqdiv2052 divide -7.935732544649702175256699886872093E-489 -7.433329073664793138998765647467971E+360 -> 1.067587949626076917672271619664656E-849 Inexact Rounded -dqdiv2053 divide -2746650864601157.863589959939901350 7.016684945507647528907184694359598E+548 -> -3.914456593009309529351254950429932E-534 Inexact Rounded -dqdiv2054 divide 3605149408631197365447953.994569178 -75614025825649082.78264864428237833 -> -47678315.88472693507060063188020532 Inexact Rounded -dqdiv2055 divide 788194320921798404906375214.196349 -6.222718148433247384932573401976337E-418 -> -1.266639918634671803982222244977287E+444 Inexact Rounded -dqdiv2056 divide 5620722730534752.758208943447603211 6.843552841168538319123000917657759E-139 -> 8.213164800485434666629970443739554E+153 Inexact Rounded -dqdiv2057 divide 7304534676713703938102.403949019402 -576169.3685010935108153023803590835 -> -12677756014201995.31969237144394772 Inexact Rounded -dqdiv2058 divide 8067918762.134621639254916786945547 -8.774771480055536009105596163864758E+954 -> -9.194448858836332156766764605125245E-946 Inexact Rounded -dqdiv2059 divide 8.702093454123046507578256899537563E-324 -5.875399733016018404580201176576293E-401 -> -1.481106622452052581470443526957335E+77 Inexact Rounded -dqdiv2060 divide -41426.01662518451861386352415092356 90.00146621684478300510769802013464 -> -460.2815750287318692732067709176200 Inexact Rounded - --- random divide tests with result near 1 -dqdiv4001 divide 2003100352770753969878925664524900 2003100352770753969878925664497824 -> 1.000000000000000000000000000013517 Inexact Rounded -dqdiv4002 divide 4817785793916490652579552318371645 4817785793916490652579552318362097 -> 1.000000000000000000000000000001982 Inexact Rounded -dqdiv4003 divide 8299187410920067325648068439560282 8299187410920067325648068439591159 -> 0.9999999999999999999999999999962795 Inexact Rounded -dqdiv4004 divide 5641088455897407044544461785365899 5641088455897407044544461785389965 -> 0.9999999999999999999999999999957338 Inexact Rounded -dqdiv4005 divide 5752274694706545359326361313490424 5752274694706545359326361313502723 -> 0.9999999999999999999999999999978619 Inexact Rounded -dqdiv4006 divide 6762079477373670594829319346099665 6762079477373670594829319346132579 -> 0.9999999999999999999999999999951326 Inexact Rounded -dqdiv4007 divide 7286425153691890341633023222602916 7286425153691890341633023222606556 -> 0.9999999999999999999999999999995004 Inexact Rounded -dqdiv4008 divide 9481233991901305727648306421946655 9481233991901305727648306421919124 -> 1.000000000000000000000000000002904 Inexact Rounded -dqdiv4009 divide 4282053941893951742029444065614311 4282053941893951742029444065583077 -> 1.000000000000000000000000000007294 Inexact Rounded -dqdiv4010 divide 626888225441250639741781850338695 626888225441250639741781850327299 -> 1.000000000000000000000000000018179 Inexact Rounded -dqdiv4011 divide 3860973649222028009456598604468547 3860973649222028009456598604476849 -> 0.9999999999999999999999999999978498 Inexact Rounded -dqdiv4012 divide 4753157080127468127908060607821839 4753157080127468127908060607788379 -> 1.000000000000000000000000000007040 Inexact Rounded -dqdiv4013 divide 552448546203754062805706277880419 552448546203754062805706277881903 -> 0.9999999999999999999999999999973138 Inexact Rounded -dqdiv4014 divide 8405954527952158455323713728917395 8405954527952158455323713728933866 -> 0.9999999999999999999999999999980406 Inexact Rounded -dqdiv4015 divide 7554096502235321142555802238016116 7554096502235321142555802238026546 -> 0.9999999999999999999999999999986193 Inexact Rounded -dqdiv4016 divide 4053257674127518606871054934746782 4053257674127518606871054934767355 -> 0.9999999999999999999999999999949243 Inexact Rounded -dqdiv4017 divide 7112419420755090454716888844011582 7112419420755090454716888844038105 -> 0.9999999999999999999999999999962709 Inexact Rounded -dqdiv4018 divide 3132302137520072728164549730911846 3132302137520072728164549730908416 -> 1.000000000000000000000000000001095 Inexact Rounded -dqdiv4019 divide 4788374045841416355706715048161013 4788374045841416355706715048190077 -> 0.9999999999999999999999999999939303 Inexact Rounded -dqdiv4020 divide 9466021636047630218238075099510597 9466021636047630218238075099484053 -> 1.000000000000000000000000000002804 Inexact Rounded -dqdiv4021 divide 912742745646765625597399692138650 912742745646765625597399692139042 -> 0.9999999999999999999999999999995705 Inexact Rounded -dqdiv4022 divide 9508402742933643208806264897188504 9508402742933643208806264897195973 -> 0.9999999999999999999999999999992145 Inexact Rounded -dqdiv4023 divide 1186956795727233704962361914360895 1186956795727233704962361914329577 -> 1.000000000000000000000000000026385 Inexact Rounded -dqdiv4024 divide 5972210268839014812696916170967938 5972210268839014812696916170954974 -> 1.000000000000000000000000000002171 Inexact Rounded -dqdiv4025 divide 2303801625521619930894460139793140 2303801625521619930894460139799643 -> 0.9999999999999999999999999999971773 Inexact Rounded -dqdiv4026 divide 6022231560002898264777393473966595 6022231560002898264777393473947198 -> 1.000000000000000000000000000003221 Inexact Rounded -dqdiv4027 divide 8426148335801396199969346032210893 8426148335801396199969346032203179 -> 1.000000000000000000000000000000915 Inexact Rounded -dqdiv4028 divide 8812278947028784637382847098411749 8812278947028784637382847098385317 -> 1.000000000000000000000000000002999 Inexact Rounded -dqdiv4029 divide 8145282002348367383264197170116146 8145282002348367383264197170083988 -> 1.000000000000000000000000000003948 Inexact Rounded -dqdiv4030 divide 6821577571876840153123510107387026 6821577571876840153123510107418008 -> 0.9999999999999999999999999999954582 Inexact Rounded -dqdiv4031 divide 9018555319518966970480565482023720 9018555319518966970480565482013346 -> 1.000000000000000000000000000001150 Inexact Rounded -dqdiv4032 divide 4602155712998228449640717252788864 4602155712998228449640717252818502 -> 0.9999999999999999999999999999935600 Inexact Rounded -dqdiv4033 divide 6675607481522785614506828292264472 6675607481522785614506828292277100 -> 0.9999999999999999999999999999981083 Inexact Rounded -dqdiv4034 divide 4015881516871833897766945836264472 4015881516871833897766945836262645 -> 1.000000000000000000000000000000455 Inexact Rounded -dqdiv4035 divide 1415580205933411837595459716910365 1415580205933411837595459716880139 -> 1.000000000000000000000000000021352 Inexact Rounded -dqdiv4036 divide 9432968297069542816752035276361552 9432968297069542816752035276353054 -> 1.000000000000000000000000000000901 Inexact Rounded -dqdiv4037 divide 4799319591303848500532766682140658 4799319591303848500532766682172655 -> 0.9999999999999999999999999999933330 Inexact Rounded -dqdiv4038 divide 316854270732839529790584284987472 316854270732839529790584285004832 -> 0.9999999999999999999999999999452114 Inexact Rounded -dqdiv4039 divide 3598981300592490427826027975697415 3598981300592490427826027975686712 -> 1.000000000000000000000000000002974 Inexact Rounded -dqdiv4040 divide 1664315435694461371155800682196520 1664315435694461371155800682195617 -> 1.000000000000000000000000000000543 Inexact Rounded -dqdiv4041 divide 1680872316531128890102855316510581 1680872316531128890102855316495545 -> 1.000000000000000000000000000008945 Inexact Rounded -dqdiv4042 divide 9881274879566405475755499281644730 9881274879566405475755499281615743 -> 1.000000000000000000000000000002934 Inexact Rounded -dqdiv4043 divide 4737225957717466960447204232279216 4737225957717466960447204232277452 -> 1.000000000000000000000000000000372 Inexact Rounded -dqdiv4044 divide 2482097379414867061213319346418288 2482097379414867061213319346387936 -> 1.000000000000000000000000000012228 Inexact Rounded -dqdiv4045 divide 7406977595233762723576434122161868 7406977595233762723576434122189042 -> 0.9999999999999999999999999999963313 Inexact Rounded -dqdiv4046 divide 228782057757566047086593281773577 228782057757566047086593281769727 -> 1.000000000000000000000000000016828 Inexact Rounded -dqdiv4047 divide 2956594270240579648823270540367653 2956594270240579648823270540368556 -> 0.9999999999999999999999999999996946 Inexact Rounded -dqdiv4048 divide 6326964098897620620534136767634340 6326964098897620620534136767619339 -> 1.000000000000000000000000000002371 Inexact Rounded -dqdiv4049 divide 414586440456590215247002678327800 414586440456590215247002678316922 -> 1.000000000000000000000000000026238 Inexact Rounded -dqdiv4050 divide 7364552208570039386220505636779125 7364552208570039386220505636803548 -> 0.9999999999999999999999999999966837 Inexact Rounded -dqdiv4051 divide 5626266749902369710022824950590056 5626266749902369710022824950591008 -> 0.9999999999999999999999999999998308 Inexact Rounded -dqdiv4052 divide 4863278293916197454987481343460484 4863278293916197454987481343442522 -> 1.000000000000000000000000000003693 Inexact Rounded -dqdiv4053 divide 1170713582030637359713249796835483 1170713582030637359713249796823345 -> 1.000000000000000000000000000010368 Inexact Rounded -dqdiv4054 divide 9838062494725965667776326556052931 9838062494725965667776326556061002 -> 0.9999999999999999999999999999991796 Inexact Rounded -dqdiv4055 divide 4071388731298861093005687091498922 4071388731298861093005687091498278 -> 1.000000000000000000000000000000158 Inexact Rounded -dqdiv4056 divide 8753155722324706795855038590272526 8753155722324706795855038590276656 -> 0.9999999999999999999999999999995282 Inexact Rounded -dqdiv4057 divide 4399941911533273418844742658240485 4399941911533273418844742658219891 -> 1.000000000000000000000000000004681 Inexact Rounded -dqdiv4058 divide 4127884159949503677776430620050269 4127884159949503677776430620026091 -> 1.000000000000000000000000000005857 Inexact Rounded -dqdiv4059 divide 5536160822360800067042528317438808 5536160822360800067042528317450687 -> 0.9999999999999999999999999999978543 Inexact Rounded -dqdiv4060 divide 3973234998468664936671088237710246 3973234998468664936671088237741886 -> 0.9999999999999999999999999999920367 Inexact Rounded -dqdiv4061 divide 9824855935638263593410444142327358 9824855935638263593410444142328576 -> 0.9999999999999999999999999999998760 Inexact Rounded -dqdiv4062 divide 5917078517340218131867327300814867 5917078517340218131867327300788701 -> 1.000000000000000000000000000004422 Inexact Rounded -dqdiv4063 divide 4354236601830544882286139612521362 4354236601830544882286139612543223 -> 0.9999999999999999999999999999949794 Inexact Rounded -dqdiv4064 divide 8058474772375259017342110013891294 8058474772375259017342110013906792 -> 0.9999999999999999999999999999980768 Inexact Rounded -dqdiv4065 divide 5519604020981748170517093746166328 5519604020981748170517093746181763 -> 0.9999999999999999999999999999972036 Inexact Rounded -dqdiv4066 divide 1502130966879805458831323782443139 1502130966879805458831323782412213 -> 1.000000000000000000000000000020588 Inexact Rounded -dqdiv4067 divide 562795633719481212915159787980270 562795633719481212915159788007066 -> 0.9999999999999999999999999999523877 Inexact Rounded -dqdiv4068 divide 6584743324494664273941281557268878 6584743324494664273941281557258945 -> 1.000000000000000000000000000001508 Inexact Rounded -dqdiv4069 divide 3632000327285743997976431109416500 3632000327285743997976431109408107 -> 1.000000000000000000000000000002311 Inexact Rounded -dqdiv4070 divide 1145827237315430089388953838561450 1145827237315430089388953838527332 -> 1.000000000000000000000000000029776 Inexact Rounded -dqdiv4071 divide 8874431010357691869725372317350380 8874431010357691869725372317316472 -> 1.000000000000000000000000000003821 Inexact Rounded -dqdiv4072 divide 992948718902804648119753141202196 992948718902804648119753141235222 -> 0.9999999999999999999999999999667395 Inexact Rounded -dqdiv4073 divide 2522735183374218505142417265439989 2522735183374218505142417265453779 -> 0.9999999999999999999999999999945337 Inexact Rounded -dqdiv4074 divide 2668419161912936508006872303501052 2668419161912936508006872303471036 -> 1.000000000000000000000000000011249 Inexact Rounded -dqdiv4075 divide 3036169085665186712590941111775092 3036169085665186712590941111808846 -> 0.9999999999999999999999999999888827 Inexact Rounded -dqdiv4076 divide 9441634604917231638508898934006147 9441634604917231638508898934000288 -> 1.000000000000000000000000000000621 Inexact Rounded -dqdiv4077 divide 2677301353164377091111458811839190 2677301353164377091111458811867722 -> 0.9999999999999999999999999999893430 Inexact Rounded -dqdiv4078 divide 6844979203112066166583765857171426 6844979203112066166583765857189682 -> 0.9999999999999999999999999999973329 Inexact Rounded -dqdiv4079 divide 2220337435141796724323783960231661 2220337435141796724323783960208778 -> 1.000000000000000000000000000010306 Inexact Rounded -dqdiv4080 divide 6447424700019783931569996989561380 6447424700019783931569996989572454 -> 0.9999999999999999999999999999982824 Inexact Rounded -dqdiv4081 divide 7512856762696607119847092195587180 7512856762696607119847092195557346 -> 1.000000000000000000000000000003971 Inexact Rounded -dqdiv4082 divide 7395261981193960399087819077237482 7395261981193960399087819077242487 -> 0.9999999999999999999999999999993232 Inexact Rounded -dqdiv4083 divide 2253442467682584035792724884376735 2253442467682584035792724884407178 -> 0.9999999999999999999999999999864904 Inexact Rounded -dqdiv4084 divide 8153138680300213135577336466190997 8153138680300213135577336466220607 -> 0.9999999999999999999999999999963683 Inexact Rounded -dqdiv4085 divide 4668731252254148074041022681801390 4668731252254148074041022681778101 -> 1.000000000000000000000000000004988 Inexact Rounded -dqdiv4086 divide 6078404557993669696040425501815056 6078404557993669696040425501797612 -> 1.000000000000000000000000000002870 Inexact Rounded -dqdiv4087 divide 2306352359874261623223356878316278 2306352359874261623223356878335612 -> 0.9999999999999999999999999999916171 Inexact Rounded -dqdiv4088 divide 3264842186668480362900909564091908 3264842186668480362900909564058658 -> 1.000000000000000000000000000010184 Inexact Rounded -dqdiv4089 divide 6971985047279636878957959608612204 6971985047279636878957959608615088 -> 0.9999999999999999999999999999995863 Inexact Rounded -dqdiv4090 divide 5262810889952721235466445973816257 5262810889952721235466445973783077 -> 1.000000000000000000000000000006305 Inexact Rounded -dqdiv4091 divide 7947944731035267178548357070080288 7947944731035267178548357070061339 -> 1.000000000000000000000000000002384 Inexact Rounded -dqdiv4092 divide 5071808908395375108383035800443229 5071808908395375108383035800412429 -> 1.000000000000000000000000000006073 Inexact Rounded -dqdiv4093 divide 2043146542084503655511507209262969 2043146542084503655511507209249263 -> 1.000000000000000000000000000006708 Inexact Rounded -dqdiv4094 divide 4097632735384534181661959731264802 4097632735384534181661959731234499 -> 1.000000000000000000000000000007395 Inexact Rounded -dqdiv4095 divide 3061477642831387489729464587044430 3061477642831387489729464587059452 -> 0.9999999999999999999999999999950932 Inexact Rounded -dqdiv4096 divide 3429854941039776159498802936252638 3429854941039776159498802936246415 -> 1.000000000000000000000000000001814 Inexact Rounded -dqdiv4097 divide 4874324979578599700024133278284545 4874324979578599700024133278262131 -> 1.000000000000000000000000000004598 Inexact Rounded -dqdiv4098 divide 5701652369691833541455978515820882 5701652369691833541455978515834854 -> 0.9999999999999999999999999999975495 Inexact Rounded -dqdiv4099 divide 2928205728402945266953255632343113 2928205728402945266953255632373794 -> 0.9999999999999999999999999999895223 Inexact Rounded - --- Null tests -dqdiv9998 divide 10 # -> NaN Invalid_operation -dqdiv9999 divide # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqDivide.decTest -- decQuad division -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqdiv001 divide 1 1 -> 1 +dqdiv002 divide 2 1 -> 2 +dqdiv003 divide 1 2 -> 0.5 +dqdiv004 divide 2 2 -> 1 +dqdiv005 divide 0 1 -> 0 +dqdiv006 divide 0 2 -> 0 +dqdiv007 divide 1 3 -> 0.3333333333333333333333333333333333 Inexact Rounded +dqdiv008 divide 2 3 -> 0.6666666666666666666666666666666667 Inexact Rounded +dqdiv009 divide 3 3 -> 1 + +dqdiv010 divide 2.4 1 -> 2.4 +dqdiv011 divide 2.4 -1 -> -2.4 +dqdiv012 divide -2.4 1 -> -2.4 +dqdiv013 divide -2.4 -1 -> 2.4 +dqdiv014 divide 2.40 1 -> 2.40 +dqdiv015 divide 2.400 1 -> 2.400 +dqdiv016 divide 2.4 2 -> 1.2 +dqdiv017 divide 2.400 2 -> 1.200 +dqdiv018 divide 2. 2 -> 1 +dqdiv019 divide 20 20 -> 1 + +dqdiv020 divide 187 187 -> 1 +dqdiv021 divide 5 2 -> 2.5 +dqdiv022 divide 50 20 -> 2.5 +dqdiv023 divide 500 200 -> 2.5 +dqdiv024 divide 50.0 20.0 -> 2.5 +dqdiv025 divide 5.00 2.00 -> 2.5 +dqdiv026 divide 5 2.0 -> 2.5 +dqdiv027 divide 5 2.000 -> 2.5 +dqdiv028 divide 5 0.20 -> 25 +dqdiv029 divide 5 0.200 -> 25 +dqdiv030 divide 10 1 -> 10 +dqdiv031 divide 100 1 -> 100 +dqdiv032 divide 1000 1 -> 1000 +dqdiv033 divide 1000 100 -> 10 + +dqdiv035 divide 1 2 -> 0.5 +dqdiv036 divide 1 4 -> 0.25 +dqdiv037 divide 1 8 -> 0.125 +dqdiv038 divide 1 16 -> 0.0625 +dqdiv039 divide 1 32 -> 0.03125 +dqdiv040 divide 1 64 -> 0.015625 +dqdiv041 divide 1 -2 -> -0.5 +dqdiv042 divide 1 -4 -> -0.25 +dqdiv043 divide 1 -8 -> -0.125 +dqdiv044 divide 1 -16 -> -0.0625 +dqdiv045 divide 1 -32 -> -0.03125 +dqdiv046 divide 1 -64 -> -0.015625 +dqdiv047 divide -1 2 -> -0.5 +dqdiv048 divide -1 4 -> -0.25 +dqdiv049 divide -1 8 -> -0.125 +dqdiv050 divide -1 16 -> -0.0625 +dqdiv051 divide -1 32 -> -0.03125 +dqdiv052 divide -1 64 -> -0.015625 +dqdiv053 divide -1 -2 -> 0.5 +dqdiv054 divide -1 -4 -> 0.25 +dqdiv055 divide -1 -8 -> 0.125 +dqdiv056 divide -1 -16 -> 0.0625 +dqdiv057 divide -1 -32 -> 0.03125 +dqdiv058 divide -1 -64 -> 0.015625 + +-- bcdTime +dqdiv060 divide 1 7 -> 0.1428571428571428571428571428571429 Inexact Rounded +dqdiv061 divide 1.2345678 1.9876543 -> 0.6211179680490717123193907511985359 Inexact Rounded + +-- 1234567890123456 +dqdiv067 divide 9999999999999999999999999999999999 1 -> 9999999999999999999999999999999999 +dqdiv068 divide 999999999999999999999999999999999 1 -> 999999999999999999999999999999999 +dqdiv069 divide 99999999999999999999999999999999 1 -> 99999999999999999999999999999999 +dqdiv070 divide 99999999999999999 1 -> 99999999999999999 +dqdiv071 divide 9999999999999999 1 -> 9999999999999999 +dqdiv072 divide 999999999999999 1 -> 999999999999999 +dqdiv073 divide 99999999999999 1 -> 99999999999999 +dqdiv074 divide 9999999999999 1 -> 9999999999999 +dqdiv075 divide 999999999999 1 -> 999999999999 +dqdiv076 divide 99999999999 1 -> 99999999999 +dqdiv077 divide 9999999999 1 -> 9999999999 +dqdiv078 divide 999999999 1 -> 999999999 +dqdiv079 divide 99999999 1 -> 99999999 +dqdiv080 divide 9999999 1 -> 9999999 +dqdiv081 divide 999999 1 -> 999999 +dqdiv082 divide 99999 1 -> 99999 +dqdiv083 divide 9999 1 -> 9999 +dqdiv084 divide 999 1 -> 999 +dqdiv085 divide 99 1 -> 99 +dqdiv086 divide 9 1 -> 9 + +dqdiv090 divide 0. 1 -> 0 +dqdiv091 divide .0 1 -> 0.0 +dqdiv092 divide 0.00 1 -> 0.00 +dqdiv093 divide 0.00E+9 1 -> 0E+7 +dqdiv094 divide 0.0000E-50 1 -> 0E-54 + +dqdiv095 divide 1 1E-8 -> 1E+8 +dqdiv096 divide 1 1E-9 -> 1E+9 +dqdiv097 divide 1 1E-10 -> 1E+10 +dqdiv098 divide 1 1E-11 -> 1E+11 +dqdiv099 divide 1 1E-12 -> 1E+12 + +dqdiv100 divide 1 1 -> 1 +dqdiv101 divide 1 2 -> 0.5 +dqdiv102 divide 1 3 -> 0.3333333333333333333333333333333333 Inexact Rounded +dqdiv103 divide 1 4 -> 0.25 +dqdiv104 divide 1 5 -> 0.2 +dqdiv105 divide 1 6 -> 0.1666666666666666666666666666666667 Inexact Rounded +dqdiv106 divide 1 7 -> 0.1428571428571428571428571428571429 Inexact Rounded +dqdiv107 divide 1 8 -> 0.125 +dqdiv108 divide 1 9 -> 0.1111111111111111111111111111111111 Inexact Rounded +dqdiv109 divide 1 10 -> 0.1 +dqdiv110 divide 1 1 -> 1 +dqdiv111 divide 2 1 -> 2 +dqdiv112 divide 3 1 -> 3 +dqdiv113 divide 4 1 -> 4 +dqdiv114 divide 5 1 -> 5 +dqdiv115 divide 6 1 -> 6 +dqdiv116 divide 7 1 -> 7 +dqdiv117 divide 8 1 -> 8 +dqdiv118 divide 9 1 -> 9 +dqdiv119 divide 10 1 -> 10 + +dqdiv120 divide 3E+1 0.001 -> 3E+4 +dqdiv121 divide 2.200 2 -> 1.100 + +dqdiv130 divide 12345 4.999 -> 2469.493898779755951190238047609522 Inexact Rounded +dqdiv131 divide 12345 4.99 -> 2473.947895791583166332665330661323 Inexact Rounded +dqdiv132 divide 12345 4.9 -> 2519.387755102040816326530612244898 Inexact Rounded +dqdiv133 divide 12345 5 -> 2469 +dqdiv134 divide 12345 5.1 -> 2420.588235294117647058823529411765 Inexact Rounded +dqdiv135 divide 12345 5.01 -> 2464.071856287425149700598802395210 Inexact Rounded +dqdiv136 divide 12345 5.001 -> 2468.506298740251949610077984403119 Inexact Rounded + +-- test possibly imprecise results +dqdiv220 divide 391 597 -> 0.6549413735343383584589614740368509 Inexact Rounded +dqdiv221 divide 391 -597 -> -0.6549413735343383584589614740368509 Inexact Rounded +dqdiv222 divide -391 597 -> -0.6549413735343383584589614740368509 Inexact Rounded +dqdiv223 divide -391 -597 -> 0.6549413735343383584589614740368509 Inexact Rounded + +-- test some cases that are close to exponent overflow +dqdiv270 divide 1 1e6144 -> 1E-6144 Subnormal +dqdiv271 divide 1 0.9e6144 -> 1.11111111111111111111111111111111E-6144 Rounded Inexact Subnormal Underflow +dqdiv272 divide 1 0.99e6144 -> 1.01010101010101010101010101010101E-6144 Rounded Inexact Subnormal Underflow +dqdiv273 divide 1 0.9999999999999999e6144 -> 1.00000000000000010000000000000001E-6144 Rounded Inexact Subnormal Underflow +dqdiv274 divide 9e6144 1 -> 9.000000000000000000000000000000000E+6144 Clamped +dqdiv275 divide 9.9e6144 1 -> 9.900000000000000000000000000000000E+6144 Clamped +dqdiv276 divide 9.99e6144 1 -> 9.990000000000000000000000000000000E+6144 Clamped +dqdiv277 divide 9.999999999999999e6144 1 -> 9.999999999999999000000000000000000E+6144 Clamped + +dqdiv278 divide 1 0.9999999999999999999999999999999999e6144 -> 1.00000000000000000000000000000000E-6144 Rounded Inexact Subnormal Underflow +dqdiv279 divide 9.999999999999999999999999999999999e6144 1 -> 9.999999999999999999999999999999999E+6144 + +-- Divide into 0 tests +dqdiv301 divide 0 7 -> 0 +dqdiv302 divide 0 7E-5 -> 0E+5 +dqdiv303 divide 0 7E-1 -> 0E+1 +dqdiv304 divide 0 7E+1 -> 0.0 +dqdiv305 divide 0 7E+5 -> 0.00000 +dqdiv306 divide 0 7E+6 -> 0.000000 +dqdiv307 divide 0 7E+7 -> 0E-7 +dqdiv308 divide 0 70E-5 -> 0E+5 +dqdiv309 divide 0 70E-1 -> 0E+1 +dqdiv310 divide 0 70E+0 -> 0 +dqdiv311 divide 0 70E+1 -> 0.0 +dqdiv312 divide 0 70E+5 -> 0.00000 +dqdiv313 divide 0 70E+6 -> 0.000000 +dqdiv314 divide 0 70E+7 -> 0E-7 +dqdiv315 divide 0 700E-5 -> 0E+5 +dqdiv316 divide 0 700E-1 -> 0E+1 +dqdiv317 divide 0 700E+0 -> 0 +dqdiv318 divide 0 700E+1 -> 0.0 +dqdiv319 divide 0 700E+5 -> 0.00000 +dqdiv320 divide 0 700E+6 -> 0.000000 +dqdiv321 divide 0 700E+7 -> 0E-7 +dqdiv322 divide 0 700E+77 -> 0E-77 + +dqdiv331 divide 0E-3 7E-5 -> 0E+2 +dqdiv332 divide 0E-3 7E-1 -> 0.00 +dqdiv333 divide 0E-3 7E+1 -> 0.0000 +dqdiv334 divide 0E-3 7E+5 -> 0E-8 +dqdiv335 divide 0E-1 7E-5 -> 0E+4 +dqdiv336 divide 0E-1 7E-1 -> 0 +dqdiv337 divide 0E-1 7E+1 -> 0.00 +dqdiv338 divide 0E-1 7E+5 -> 0.000000 +dqdiv339 divide 0E+1 7E-5 -> 0E+6 +dqdiv340 divide 0E+1 7E-1 -> 0E+2 +dqdiv341 divide 0E+1 7E+1 -> 0 +dqdiv342 divide 0E+1 7E+5 -> 0.0000 +dqdiv343 divide 0E+3 7E-5 -> 0E+8 +dqdiv344 divide 0E+3 7E-1 -> 0E+4 +dqdiv345 divide 0E+3 7E+1 -> 0E+2 +dqdiv346 divide 0E+3 7E+5 -> 0.00 + +-- These were 'input rounding' +dqdiv441 divide 12345678000 1 -> 12345678000 +dqdiv442 divide 1 12345678000 -> 8.100000664200054464404466081166219E-11 Inexact Rounded +dqdiv443 divide 1234567800 1 -> 1234567800 +dqdiv444 divide 1 1234567800 -> 8.100000664200054464404466081166219E-10 Inexact Rounded +dqdiv445 divide 1234567890 1 -> 1234567890 +dqdiv446 divide 1 1234567890 -> 8.100000073710000670761006103925156E-10 Inexact Rounded +dqdiv447 divide 1234567891 1 -> 1234567891 +dqdiv448 divide 1 1234567891 -> 8.100000067149000556665214614754629E-10 Inexact Rounded +dqdiv449 divide 12345678901 1 -> 12345678901 +dqdiv450 divide 1 12345678901 -> 8.100000073053900658873130042376760E-11 Inexact Rounded +dqdiv451 divide 1234567896 1 -> 1234567896 +dqdiv452 divide 1 1234567896 -> 8.100000034344000145618560617422697E-10 Inexact Rounded + +-- high-lows +dqdiv453 divide 1e+1 1 -> 1E+1 +dqdiv454 divide 1e+1 1.0 -> 1E+1 +dqdiv455 divide 1e+1 1.00 -> 1E+1 +dqdiv456 divide 1e+2 2 -> 5E+1 +dqdiv457 divide 1e+2 2.0 -> 5E+1 +dqdiv458 divide 1e+2 2.00 -> 5E+1 + +-- some from IEEE discussions +dqdiv460 divide 3e0 2e0 -> 1.5 +dqdiv461 divide 30e-1 2e0 -> 1.5 +dqdiv462 divide 300e-2 2e0 -> 1.50 +dqdiv464 divide 3000e-3 2e0 -> 1.500 +dqdiv465 divide 3e0 20e-1 -> 1.5 +dqdiv466 divide 30e-1 20e-1 -> 1.5 +dqdiv467 divide 300e-2 20e-1 -> 1.5 +dqdiv468 divide 3000e-3 20e-1 -> 1.50 +dqdiv469 divide 3e0 200e-2 -> 1.5 +dqdiv470 divide 30e-1 200e-2 -> 1.5 +dqdiv471 divide 300e-2 200e-2 -> 1.5 +dqdiv472 divide 3000e-3 200e-2 -> 1.5 +dqdiv473 divide 3e0 2000e-3 -> 1.5 +dqdiv474 divide 30e-1 2000e-3 -> 1.5 +dqdiv475 divide 300e-2 2000e-3 -> 1.5 +dqdiv476 divide 3000e-3 2000e-3 -> 1.5 + +-- some reciprocals +dqdiv480 divide 1 1.0E+33 -> 1E-33 +dqdiv481 divide 1 10E+33 -> 1E-34 +dqdiv482 divide 1 1.0E-33 -> 1E+33 +dqdiv483 divide 1 10E-33 -> 1E+32 + +-- RMS discussion table +dqdiv484 divide 0e5 1e3 -> 0E+2 +dqdiv485 divide 0e5 2e3 -> 0E+2 +dqdiv486 divide 0e5 10e2 -> 0E+3 +dqdiv487 divide 0e5 20e2 -> 0E+3 +dqdiv488 divide 0e5 100e1 -> 0E+4 +dqdiv489 divide 0e5 200e1 -> 0E+4 + +dqdiv491 divide 1e5 1e3 -> 1E+2 +dqdiv492 divide 1e5 2e3 -> 5E+1 +dqdiv493 divide 1e5 10e2 -> 1E+2 +dqdiv494 divide 1e5 20e2 -> 5E+1 +dqdiv495 divide 1e5 100e1 -> 1E+2 +dqdiv496 divide 1e5 200e1 -> 5E+1 + +-- tryzeros cases +rounding: half_up +dqdiv497 divide 0E+6108 1000E-33 -> 0E+6111 Clamped +dqdiv498 divide 0E-6170 1000E+33 -> 0E-6176 Clamped + +rounding: half_up + +-- focus on trailing zeros issues +dqdiv500 divide 1 9.9 -> 0.1010101010101010101010101010101010 Inexact Rounded +dqdiv501 divide 1 9.09 -> 0.1100110011001100110011001100110011 Inexact Rounded +dqdiv502 divide 1 9.009 -> 0.1110001110001110001110001110001110 Inexact Rounded + +dqdiv511 divide 1 2 -> 0.5 +dqdiv512 divide 1.0 2 -> 0.5 +dqdiv513 divide 1.00 2 -> 0.50 +dqdiv514 divide 1.000 2 -> 0.500 +dqdiv515 divide 1.0000 2 -> 0.5000 +dqdiv516 divide 1.00000 2 -> 0.50000 +dqdiv517 divide 1.000000 2 -> 0.500000 +dqdiv518 divide 1.0000000 2 -> 0.5000000 +dqdiv519 divide 1.00 2.00 -> 0.5 + +dqdiv521 divide 2 1 -> 2 +dqdiv522 divide 2 1.0 -> 2 +dqdiv523 divide 2 1.00 -> 2 +dqdiv524 divide 2 1.000 -> 2 +dqdiv525 divide 2 1.0000 -> 2 +dqdiv526 divide 2 1.00000 -> 2 +dqdiv527 divide 2 1.000000 -> 2 +dqdiv528 divide 2 1.0000000 -> 2 +dqdiv529 divide 2.00 1.00 -> 2 + +dqdiv530 divide 2.40 2 -> 1.20 +dqdiv531 divide 2.40 4 -> 0.60 +dqdiv532 divide 2.40 10 -> 0.24 +dqdiv533 divide 2.40 2.0 -> 1.2 +dqdiv534 divide 2.40 4.0 -> 0.6 +dqdiv535 divide 2.40 10.0 -> 0.24 +dqdiv536 divide 2.40 2.00 -> 1.2 +dqdiv537 divide 2.40 4.00 -> 0.6 +dqdiv538 divide 2.40 10.00 -> 0.24 +dqdiv539 divide 0.9 0.1 -> 9 +dqdiv540 divide 0.9 0.01 -> 9E+1 +dqdiv541 divide 0.9 0.001 -> 9E+2 +dqdiv542 divide 5 2 -> 2.5 +dqdiv543 divide 5 2.0 -> 2.5 +dqdiv544 divide 5 2.00 -> 2.5 +dqdiv545 divide 5 20 -> 0.25 +dqdiv546 divide 5 20.0 -> 0.25 +dqdiv547 divide 2.400 2 -> 1.200 +dqdiv548 divide 2.400 2.0 -> 1.20 +dqdiv549 divide 2.400 2.400 -> 1 + +dqdiv550 divide 240 1 -> 240 +dqdiv551 divide 240 10 -> 24 +dqdiv552 divide 240 100 -> 2.4 +dqdiv553 divide 240 1000 -> 0.24 +dqdiv554 divide 2400 1 -> 2400 +dqdiv555 divide 2400 10 -> 240 +dqdiv556 divide 2400 100 -> 24 +dqdiv557 divide 2400 1000 -> 2.4 + +-- +ve exponent +dqdiv600 divide 2.4E+9 2 -> 1.2E+9 +dqdiv601 divide 2.40E+9 2 -> 1.20E+9 +dqdiv602 divide 2.400E+9 2 -> 1.200E+9 +dqdiv603 divide 2.4000E+9 2 -> 1.2000E+9 +dqdiv604 divide 24E+8 2 -> 1.2E+9 +dqdiv605 divide 240E+7 2 -> 1.20E+9 +dqdiv606 divide 2400E+6 2 -> 1.200E+9 +dqdiv607 divide 24000E+5 2 -> 1.2000E+9 + +-- more zeros, etc. +dqdiv731 divide 5.00 1E-3 -> 5.00E+3 +dqdiv732 divide 00.00 0.000 -> NaN Division_undefined +dqdiv733 divide 00.00 0E-3 -> NaN Division_undefined +dqdiv734 divide 0 -0 -> NaN Division_undefined +dqdiv735 divide -0 0 -> NaN Division_undefined +dqdiv736 divide -0 -0 -> NaN Division_undefined + +dqdiv741 divide 0 -1 -> -0 +dqdiv742 divide -0 -1 -> 0 +dqdiv743 divide 0 1 -> 0 +dqdiv744 divide -0 1 -> -0 +dqdiv745 divide -1 0 -> -Infinity Division_by_zero +dqdiv746 divide -1 -0 -> Infinity Division_by_zero +dqdiv747 divide 1 0 -> Infinity Division_by_zero +dqdiv748 divide 1 -0 -> -Infinity Division_by_zero + +dqdiv751 divide 0.0 -1 -> -0.0 +dqdiv752 divide -0.0 -1 -> 0.0 +dqdiv753 divide 0.0 1 -> 0.0 +dqdiv754 divide -0.0 1 -> -0.0 +dqdiv755 divide -1.0 0 -> -Infinity Division_by_zero +dqdiv756 divide -1.0 -0 -> Infinity Division_by_zero +dqdiv757 divide 1.0 0 -> Infinity Division_by_zero +dqdiv758 divide 1.0 -0 -> -Infinity Division_by_zero + +dqdiv761 divide 0 -1.0 -> -0E+1 +dqdiv762 divide -0 -1.0 -> 0E+1 +dqdiv763 divide 0 1.0 -> 0E+1 +dqdiv764 divide -0 1.0 -> -0E+1 +dqdiv765 divide -1 0.0 -> -Infinity Division_by_zero +dqdiv766 divide -1 -0.0 -> Infinity Division_by_zero +dqdiv767 divide 1 0.0 -> Infinity Division_by_zero +dqdiv768 divide 1 -0.0 -> -Infinity Division_by_zero + +dqdiv771 divide 0.0 -1.0 -> -0 +dqdiv772 divide -0.0 -1.0 -> 0 +dqdiv773 divide 0.0 1.0 -> 0 +dqdiv774 divide -0.0 1.0 -> -0 +dqdiv775 divide -1.0 0.0 -> -Infinity Division_by_zero +dqdiv776 divide -1.0 -0.0 -> Infinity Division_by_zero +dqdiv777 divide 1.0 0.0 -> Infinity Division_by_zero +dqdiv778 divide 1.0 -0.0 -> -Infinity Division_by_zero + +-- Specials +dqdiv780 divide Inf -Inf -> NaN Invalid_operation +dqdiv781 divide Inf -1000 -> -Infinity +dqdiv782 divide Inf -1 -> -Infinity +dqdiv783 divide Inf -0 -> -Infinity +dqdiv784 divide Inf 0 -> Infinity +dqdiv785 divide Inf 1 -> Infinity +dqdiv786 divide Inf 1000 -> Infinity +dqdiv787 divide Inf Inf -> NaN Invalid_operation +dqdiv788 divide -1000 Inf -> -0E-6176 Clamped +dqdiv789 divide -Inf Inf -> NaN Invalid_operation +dqdiv790 divide -1 Inf -> -0E-6176 Clamped +dqdiv791 divide -0 Inf -> -0E-6176 Clamped +dqdiv792 divide 0 Inf -> 0E-6176 Clamped +dqdiv793 divide 1 Inf -> 0E-6176 Clamped +dqdiv794 divide 1000 Inf -> 0E-6176 Clamped +dqdiv795 divide Inf Inf -> NaN Invalid_operation + +dqdiv800 divide -Inf -Inf -> NaN Invalid_operation +dqdiv801 divide -Inf -1000 -> Infinity +dqdiv802 divide -Inf -1 -> Infinity +dqdiv803 divide -Inf -0 -> Infinity +dqdiv804 divide -Inf 0 -> -Infinity +dqdiv805 divide -Inf 1 -> -Infinity +dqdiv806 divide -Inf 1000 -> -Infinity +dqdiv807 divide -Inf Inf -> NaN Invalid_operation +dqdiv808 divide -1000 Inf -> -0E-6176 Clamped +dqdiv809 divide -Inf -Inf -> NaN Invalid_operation +dqdiv810 divide -1 -Inf -> 0E-6176 Clamped +dqdiv811 divide -0 -Inf -> 0E-6176 Clamped +dqdiv812 divide 0 -Inf -> -0E-6176 Clamped +dqdiv813 divide 1 -Inf -> -0E-6176 Clamped +dqdiv814 divide 1000 -Inf -> -0E-6176 Clamped +dqdiv815 divide Inf -Inf -> NaN Invalid_operation + +dqdiv821 divide NaN -Inf -> NaN +dqdiv822 divide NaN -1000 -> NaN +dqdiv823 divide NaN -1 -> NaN +dqdiv824 divide NaN -0 -> NaN +dqdiv825 divide NaN 0 -> NaN +dqdiv826 divide NaN 1 -> NaN +dqdiv827 divide NaN 1000 -> NaN +dqdiv828 divide NaN Inf -> NaN +dqdiv829 divide NaN NaN -> NaN +dqdiv830 divide -Inf NaN -> NaN +dqdiv831 divide -1000 NaN -> NaN +dqdiv832 divide -1 NaN -> NaN +dqdiv833 divide -0 NaN -> NaN +dqdiv834 divide 0 NaN -> NaN +dqdiv835 divide 1 NaN -> NaN +dqdiv836 divide 1000 NaN -> NaN +dqdiv837 divide Inf NaN -> NaN + +dqdiv841 divide sNaN -Inf -> NaN Invalid_operation +dqdiv842 divide sNaN -1000 -> NaN Invalid_operation +dqdiv843 divide sNaN -1 -> NaN Invalid_operation +dqdiv844 divide sNaN -0 -> NaN Invalid_operation +dqdiv845 divide sNaN 0 -> NaN Invalid_operation +dqdiv846 divide sNaN 1 -> NaN Invalid_operation +dqdiv847 divide sNaN 1000 -> NaN Invalid_operation +dqdiv848 divide sNaN NaN -> NaN Invalid_operation +dqdiv849 divide sNaN sNaN -> NaN Invalid_operation +dqdiv850 divide NaN sNaN -> NaN Invalid_operation +dqdiv851 divide -Inf sNaN -> NaN Invalid_operation +dqdiv852 divide -1000 sNaN -> NaN Invalid_operation +dqdiv853 divide -1 sNaN -> NaN Invalid_operation +dqdiv854 divide -0 sNaN -> NaN Invalid_operation +dqdiv855 divide 0 sNaN -> NaN Invalid_operation +dqdiv856 divide 1 sNaN -> NaN Invalid_operation +dqdiv857 divide 1000 sNaN -> NaN Invalid_operation +dqdiv858 divide Inf sNaN -> NaN Invalid_operation +dqdiv859 divide NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqdiv861 divide NaN9 -Inf -> NaN9 +dqdiv862 divide NaN8 1000 -> NaN8 +dqdiv863 divide NaN7 Inf -> NaN7 +dqdiv864 divide NaN6 NaN5 -> NaN6 +dqdiv865 divide -Inf NaN4 -> NaN4 +dqdiv866 divide -1000 NaN3 -> NaN3 +dqdiv867 divide Inf NaN2 -> NaN2 + +dqdiv871 divide sNaN99 -Inf -> NaN99 Invalid_operation +dqdiv872 divide sNaN98 -1 -> NaN98 Invalid_operation +dqdiv873 divide sNaN97 NaN -> NaN97 Invalid_operation +dqdiv874 divide sNaN96 sNaN94 -> NaN96 Invalid_operation +dqdiv875 divide NaN95 sNaN93 -> NaN93 Invalid_operation +dqdiv876 divide -Inf sNaN92 -> NaN92 Invalid_operation +dqdiv877 divide 0 sNaN91 -> NaN91 Invalid_operation +dqdiv878 divide Inf sNaN90 -> NaN90 Invalid_operation +dqdiv879 divide NaN sNaN89 -> NaN89 Invalid_operation + +dqdiv881 divide -NaN9 -Inf -> -NaN9 +dqdiv882 divide -NaN8 1000 -> -NaN8 +dqdiv883 divide -NaN7 Inf -> -NaN7 +dqdiv884 divide -NaN6 -NaN5 -> -NaN6 +dqdiv885 divide -Inf -NaN4 -> -NaN4 +dqdiv886 divide -1000 -NaN3 -> -NaN3 +dqdiv887 divide Inf -NaN2 -> -NaN2 + +dqdiv891 divide -sNaN99 -Inf -> -NaN99 Invalid_operation +dqdiv892 divide -sNaN98 -1 -> -NaN98 Invalid_operation +dqdiv893 divide -sNaN97 NaN -> -NaN97 Invalid_operation +dqdiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation +dqdiv895 divide -NaN95 -sNaN93 -> -NaN93 Invalid_operation +dqdiv896 divide -Inf -sNaN92 -> -NaN92 Invalid_operation +dqdiv897 divide 0 -sNaN91 -> -NaN91 Invalid_operation +dqdiv898 divide Inf -sNaN90 -> -NaN90 Invalid_operation +dqdiv899 divide -NaN -sNaN89 -> -NaN89 Invalid_operation + +-- Various flavours of divide by 0 +dqdiv901 divide 0 0 -> NaN Division_undefined +dqdiv902 divide 0.0E5 0 -> NaN Division_undefined +dqdiv903 divide 0.000 0 -> NaN Division_undefined +dqdiv904 divide 0.0001 0 -> Infinity Division_by_zero +dqdiv905 divide 0.01 0 -> Infinity Division_by_zero +dqdiv906 divide 0.1 0 -> Infinity Division_by_zero +dqdiv907 divide 1 0 -> Infinity Division_by_zero +dqdiv908 divide 1 0.0 -> Infinity Division_by_zero +dqdiv909 divide 10 0.0 -> Infinity Division_by_zero +dqdiv910 divide 1E+100 0.0 -> Infinity Division_by_zero +dqdiv911 divide 1E+100 0 -> Infinity Division_by_zero + +dqdiv921 divide -0.0001 0 -> -Infinity Division_by_zero +dqdiv922 divide -0.01 0 -> -Infinity Division_by_zero +dqdiv923 divide -0.1 0 -> -Infinity Division_by_zero +dqdiv924 divide -1 0 -> -Infinity Division_by_zero +dqdiv925 divide -1 0.0 -> -Infinity Division_by_zero +dqdiv926 divide -10 0.0 -> -Infinity Division_by_zero +dqdiv927 divide -1E+100 0.0 -> -Infinity Division_by_zero +dqdiv928 divide -1E+100 0 -> -Infinity Division_by_zero + +dqdiv931 divide 0.0001 -0 -> -Infinity Division_by_zero +dqdiv932 divide 0.01 -0 -> -Infinity Division_by_zero +dqdiv933 divide 0.1 -0 -> -Infinity Division_by_zero +dqdiv934 divide 1 -0 -> -Infinity Division_by_zero +dqdiv935 divide 1 -0.0 -> -Infinity Division_by_zero +dqdiv936 divide 10 -0.0 -> -Infinity Division_by_zero +dqdiv937 divide 1E+100 -0.0 -> -Infinity Division_by_zero +dqdiv938 divide 1E+100 -0 -> -Infinity Division_by_zero + +dqdiv941 divide -0.0001 -0 -> Infinity Division_by_zero +dqdiv942 divide -0.01 -0 -> Infinity Division_by_zero +dqdiv943 divide -0.1 -0 -> Infinity Division_by_zero +dqdiv944 divide -1 -0 -> Infinity Division_by_zero +dqdiv945 divide -1 -0.0 -> Infinity Division_by_zero +dqdiv946 divide -10 -0.0 -> Infinity Division_by_zero +dqdiv947 divide -1E+100 -0.0 -> Infinity Division_by_zero +dqdiv948 divide -1E+100 -0 -> Infinity Division_by_zero + +-- Examples from SQL proposal (Krishna Kulkarni) +dqdiv1021 divide 1E0 1E0 -> 1 +dqdiv1022 divide 1E0 2E0 -> 0.5 +dqdiv1023 divide 1E0 3E0 -> 0.3333333333333333333333333333333333 Inexact Rounded +dqdiv1024 divide 100E-2 1000E-3 -> 1 +dqdiv1025 divide 24E-1 2E0 -> 1.2 +dqdiv1026 divide 2400E-3 2E0 -> 1.200 +dqdiv1027 divide 5E0 2E0 -> 2.5 +dqdiv1028 divide 5E0 20E-1 -> 2.5 +dqdiv1029 divide 5E0 2000E-3 -> 2.5 +dqdiv1030 divide 5E0 2E-1 -> 25 +dqdiv1031 divide 5E0 20E-2 -> 25 +dqdiv1032 divide 480E-2 3E0 -> 1.60 +dqdiv1033 divide 47E-1 2E0 -> 2.35 + +-- ECMAScript bad examples +rounding: half_down +dqdiv1040 divide 5 9 -> 0.5555555555555555555555555555555556 Inexact Rounded +rounding: half_even +dqdiv1041 divide 6 11 -> 0.5454545454545454545454545454545455 Inexact Rounded + +-- Gyuris example +dqdiv1050 divide 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0.9999999999999999999999999999991254 Inexact Rounded + +-- overflow and underflow tests .. note subnormal results +-- signs +dqdiv1751 divide 1e+4277 1e-3311 -> Infinity Overflow Inexact Rounded +dqdiv1752 divide 1e+4277 -1e-3311 -> -Infinity Overflow Inexact Rounded +dqdiv1753 divide -1e+4277 1e-3311 -> -Infinity Overflow Inexact Rounded +dqdiv1754 divide -1e+4277 -1e-3311 -> Infinity Overflow Inexact Rounded +dqdiv1755 divide 1e-4277 1e+3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1756 divide 1e-4277 -1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1757 divide -1e-4277 1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1758 divide -1e-4277 -1e+3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +dqdiv1760 divide 1e-6069 1e+101 -> 1E-6170 Subnormal +dqdiv1761 divide 1e-6069 1e+102 -> 1E-6171 Subnormal +dqdiv1762 divide 1e-6069 1e+103 -> 1E-6172 Subnormal +dqdiv1763 divide 1e-6069 1e+104 -> 1E-6173 Subnormal +dqdiv1764 divide 1e-6069 1e+105 -> 1E-6174 Subnormal +dqdiv1765 divide 1e-6069 1e+106 -> 1E-6175 Subnormal +dqdiv1766 divide 1e-6069 1e+107 -> 1E-6176 Subnormal +dqdiv1767 divide 1e-6069 1e+108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1768 divide 1e-6069 1e+109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1769 divide 1e-6069 1e+110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +-- [no equivalent of 'subnormal' for overflow] +dqdiv1770 divide 1e+40 1e-6101 -> 1.000000000000000000000000000000E+6141 Clamped +dqdiv1771 divide 1e+40 1e-6102 -> 1.0000000000000000000000000000000E+6142 Clamped +dqdiv1772 divide 1e+40 1e-6103 -> 1.00000000000000000000000000000000E+6143 Clamped +dqdiv1773 divide 1e+40 1e-6104 -> 1.000000000000000000000000000000000E+6144 Clamped +dqdiv1774 divide 1e+40 1e-6105 -> Infinity Overflow Inexact Rounded +dqdiv1775 divide 1e+40 1e-6106 -> Infinity Overflow Inexact Rounded +dqdiv1776 divide 1e+40 1e-6107 -> Infinity Overflow Inexact Rounded +dqdiv1777 divide 1e+40 1e-6108 -> Infinity Overflow Inexact Rounded +dqdiv1778 divide 1e+40 1e-6109 -> Infinity Overflow Inexact Rounded +dqdiv1779 divide 1e+40 1e-6110 -> Infinity Overflow Inexact Rounded + +dqdiv1801 divide 1.0000E-6172 1 -> 1.0000E-6172 Subnormal +dqdiv1802 divide 1.000E-6172 1e+1 -> 1.000E-6173 Subnormal +dqdiv1803 divide 1.00E-6172 1e+2 -> 1.00E-6174 Subnormal +dqdiv1804 divide 1.0E-6172 1e+3 -> 1.0E-6175 Subnormal +dqdiv1805 divide 1.0E-6172 1e+4 -> 1E-6176 Subnormal Rounded +dqdiv1806 divide 1.3E-6172 1e+4 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqdiv1807 divide 1.5E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqdiv1808 divide 1.7E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqdiv1809 divide 2.3E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqdiv1810 divide 2.5E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqdiv1811 divide 2.7E-6172 1e+4 -> 3E-6176 Underflow Subnormal Inexact Rounded +dqdiv1812 divide 1.49E-6172 1e+4 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqdiv1813 divide 1.50E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqdiv1814 divide 1.51E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqdiv1815 divide 2.49E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqdiv1816 divide 2.50E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqdiv1817 divide 2.51E-6172 1e+4 -> 3E-6176 Underflow Subnormal Inexact Rounded + +dqdiv1818 divide 1E-6172 1e+4 -> 1E-6176 Subnormal +dqdiv1819 divide 3E-6172 1e+5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1820 divide 5E-6172 1e+5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1821 divide 7E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqdiv1822 divide 9E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqdiv1823 divide 9.9E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded + +dqdiv1824 divide 1E-6172 -1e+4 -> -1E-6176 Subnormal +dqdiv1825 divide 3E-6172 -1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1826 divide -5E-6172 1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1827 divide 7E-6172 -1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqdiv1828 divide -9E-6172 1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqdiv1829 divide 9.9E-6172 -1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqdiv1830 divide 3.0E-6172 -1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped + +dqdiv1831 divide 1.0E-5977 1e+200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqdiv1832 divide 1.0E-5977 1e+199 -> 1E-6176 Subnormal Rounded +dqdiv1833 divide 1.0E-5977 1e+198 -> 1.0E-6175 Subnormal +dqdiv1834 divide 2.0E-5977 2e+198 -> 1.0E-6175 Subnormal +dqdiv1835 divide 4.0E-5977 4e+198 -> 1.0E-6175 Subnormal +dqdiv1836 divide 10.0E-5977 10e+198 -> 1.0E-6175 Subnormal +dqdiv1837 divide 30.0E-5977 30e+198 -> 1.0E-6175 Subnormal +dqdiv1838 divide 40.0E-5982 40e+166 -> 1.0E-6148 Subnormal +dqdiv1839 divide 40.0E-5982 40e+165 -> 1.0E-6147 Subnormal +dqdiv1840 divide 40.0E-5982 40e+164 -> 1.0E-6146 Subnormal + +-- randoms +rounding: half_even +dqdiv2010 divide -5231195652931651968034356117118850 -7243718664422548573203260970.34995 -> 722169.9095831284624736051460550680 Inexact Rounded +dqdiv2011 divide -89584669773927.82711237350022515352 -42077943728529635884.21142627532985 -> 0.000002129017291146471565928125887527266 Inexact Rounded +dqdiv2012 divide -2.828201693360723203806974891946180E-232 812596541221823960386384403089240.9 -> -3.480450075640521320040055759125120E-265 Inexact Rounded +dqdiv2013 divide -6442775372761069267502937539408720 24904085056.69185465145182606089196 -> -258703556388226463687701.4884719589 Inexact Rounded +dqdiv2014 divide 5.535520011272625629610079879714705 -44343664650.57203052003068113531208 -> -1.248322630728089308975940533493562E-10 Inexact Rounded +dqdiv2015 divide 65919273712517865964325.99419625010 -314733354141381737378622515.7789054 -> -0.0002094448295521490616379784758911632 Inexact Rounded +dqdiv2016 divide -7.779172568193197107115275140431129E+759 -140453015639.3988987652895178782143 -> 5.538629792161641534962774244238115E+748 Inexact Rounded +dqdiv2017 divide 644314832597569.0181226067518178797 -115024585257425.1635759521565201075 -> -5.601540150356479257367687450922795 Inexact Rounded +dqdiv2018 divide 6.898640941579611450676592553286870E-47 -11272429881407851485163914999.25943 -> -6.119923578285338689371137648319280E-75 Inexact Rounded +dqdiv2019 divide -3591344544888727133.30819750163254 5329395.423792795661446561090331037 -> -673874662941.1968525589460533725290 Inexact Rounded +dqdiv2020 divide -7.682356781384631313156462724425838E+747 -6.60375855512219057281922141809940E+703 -> 1.163330960279556016678379128875149E+44 Inexact Rounded +dqdiv2021 divide -4511495596596941820863224.274679699 3365395017.263329795449661616090724 -> -1340554548115304.904166888018346299 Inexact Rounded +dqdiv2022 divide 5.211164127840931517263639608151299 164.5566381356276567012533847006453 -> 0.03166790587655228864478260157156510 Inexact Rounded +dqdiv2023 divide -49891.2243893458830384077684620383 -47179.9312961860747554053371171530 -> 1.057467084386767291602189656430268 Inexact Rounded +dqdiv2024 divide 15065477.47214268488077415462413353 4366211.120892953261309529740552596 -> 3.450469309661227984244545513441359 Inexact Rounded +dqdiv2025 divide 1.575670269440761846109602429612644E+370 653199649324740300.006185482643439 -> 2.412233795700359170904588548041481E+352 Inexact Rounded +dqdiv2026 divide -2112422311733448924573432192.620145 -80067206.03590693153848215848613406 -> 26383115089417660175.20102646756574 Inexact Rounded +dqdiv2027 divide -67096536051279809.32218611548721839 -869685412881941081664251990181.1049 -> 7.715035236584805921278566365231168E-14 Inexact Rounded +dqdiv2028 divide -58612908548962047.21866913425488972 -978449597531.3873665583475633831644 -> 59903.86085991703091236507859837023 Inexact Rounded +dqdiv2029 divide -133032412010942.1476864138213319796 -7.882059293498670705446528648201359E-428 -> 1.687787506504433064549515681693715E+441 Inexact Rounded +dqdiv2030 divide 1.83746698338966029492299716360513E+977 -9.897926608979649951672839879128603E+154 -> -1.856416051542212552042390218062458E+822 Inexact Rounded +dqdiv2031 divide -113742475841399236307128962.1507063 8298602.203049834732657567965262989 -> -13706221006665137826.16557393919929 Inexact Rounded +dqdiv2032 divide 196.4787574650754152995941808331862 929.6553388472318094427422117172394 -> 0.2113458066176526651006917922814018 Inexact Rounded +dqdiv2033 divide 71931221465.43867996282803628130350 3838685934206426257090718.402248853 -> 1.873850132527423413607199513324021E-14 Inexact Rounded +dqdiv2034 divide 488.4282502289651653783596246312885 -80.68940956806634280078706577953188 -> -6.053189047280693318844801899473272 Inexact Rounded +dqdiv2035 divide 9.001764344963921754981762913247394E-162 -8.585540973667205753734967645386919E-729 -> -1.048479574271827326396012573232934E+567 Inexact Rounded +dqdiv2036 divide -7.404133959409894743706402857145471E-828 -51.38159929460289711134684843086265 -> 1.441008855516029461032061785219773E-829 Inexact Rounded +dqdiv2037 divide 2.967520235574419794048994436040717E-613 -6252513855.91394894949879262731889 -> -4.746123405656409127572998751885338E-623 Inexact Rounded +dqdiv2038 divide -18826852654824040505.83920366765051 -6336924877942437992590557460147340 -> 2.970976146546494669807886278519194E-15 Inexact Rounded +dqdiv2039 divide -8.101406784809197604949584001735949E+561 4.823300306948942821076681658771635E+361 -> -1.679639721610839204738445747238987E+200 Inexact Rounded +dqdiv2040 divide -6.11981977773094052331062585191723E+295 1.507610253755339328302779005586534E+238 -> -4.059285058911577244044418416044763E+57 Inexact Rounded +dqdiv2041 divide 6.472638850046815880599220534274055E-596 -4.475233712083047516933911786159972 -> -1.446324207062261745520496475778879E-596 Inexact Rounded +dqdiv2042 divide -84438593330.71277839631144509397112 -586684596204401664208947.4054879633 -> 1.439250218550041228759983937772504E-13 Inexact Rounded +dqdiv2043 divide 9.354533233294022616695815656704369E-24 405.500390626135304252144163591746 -> 2.306911028827774549740571229736198E-26 Inexact Rounded +dqdiv2044 divide 985606423350210.7374876650149957881 -36811563697.41925681866694859828794 -> -26774.36990864119445335813354717711 Inexact Rounded +dqdiv2045 divide -8.187280774177715706278002247766311E-123 -38784124393.91212870828430001300068 -> 2.110987653356139147357240727794365E-133 Inexact Rounded +dqdiv2046 divide -4.612203126350070903459245798371657E+912 7.971562182727956290901984736800519E+64 -> -5.785820922708683237098826662769748E+847 Inexact Rounded +dqdiv2047 divide 4.661015909421485298247928967977089E+888 -6.360911253323922338737311563845581E+388 -> -7.327591478321365980156654539638836E+499 Inexact Rounded +dqdiv2048 divide 9156078172903.257500003260710833030 7.189796653262147139071634237964074E-90 -> 1.273482215766000994365201545096026E+102 Inexact Rounded +dqdiv2049 divide -1.710722303327476586373477781276586E-311 -3167561628260156837329323.729380695 -> 5.400754599578613984875752958645655E-336 Inexact Rounded +dqdiv2050 divide -4.647935210881806238321616345413021E-878 209388.5431867744648177308460639582 -> -2.219765771394593733140494297388140E-883 Inexact Rounded +dqdiv2051 divide 5958.694728395760992719084781582700 4.541510156564315632536353171846096E-746 -> 1.312051393253638664947852693005480E+749 Inexact Rounded +dqdiv2052 divide -7.935732544649702175256699886872093E-489 -7.433329073664793138998765647467971E+360 -> 1.067587949626076917672271619664656E-849 Inexact Rounded +dqdiv2053 divide -2746650864601157.863589959939901350 7.016684945507647528907184694359598E+548 -> -3.914456593009309529351254950429932E-534 Inexact Rounded +dqdiv2054 divide 3605149408631197365447953.994569178 -75614025825649082.78264864428237833 -> -47678315.88472693507060063188020532 Inexact Rounded +dqdiv2055 divide 788194320921798404906375214.196349 -6.222718148433247384932573401976337E-418 -> -1.266639918634671803982222244977287E+444 Inexact Rounded +dqdiv2056 divide 5620722730534752.758208943447603211 6.843552841168538319123000917657759E-139 -> 8.213164800485434666629970443739554E+153 Inexact Rounded +dqdiv2057 divide 7304534676713703938102.403949019402 -576169.3685010935108153023803590835 -> -12677756014201995.31969237144394772 Inexact Rounded +dqdiv2058 divide 8067918762.134621639254916786945547 -8.774771480055536009105596163864758E+954 -> -9.194448858836332156766764605125245E-946 Inexact Rounded +dqdiv2059 divide 8.702093454123046507578256899537563E-324 -5.875399733016018404580201176576293E-401 -> -1.481106622452052581470443526957335E+77 Inexact Rounded +dqdiv2060 divide -41426.01662518451861386352415092356 90.00146621684478300510769802013464 -> -460.2815750287318692732067709176200 Inexact Rounded + +-- random divide tests with result near 1 +dqdiv4001 divide 2003100352770753969878925664524900 2003100352770753969878925664497824 -> 1.000000000000000000000000000013517 Inexact Rounded +dqdiv4002 divide 4817785793916490652579552318371645 4817785793916490652579552318362097 -> 1.000000000000000000000000000001982 Inexact Rounded +dqdiv4003 divide 8299187410920067325648068439560282 8299187410920067325648068439591159 -> 0.9999999999999999999999999999962795 Inexact Rounded +dqdiv4004 divide 5641088455897407044544461785365899 5641088455897407044544461785389965 -> 0.9999999999999999999999999999957338 Inexact Rounded +dqdiv4005 divide 5752274694706545359326361313490424 5752274694706545359326361313502723 -> 0.9999999999999999999999999999978619 Inexact Rounded +dqdiv4006 divide 6762079477373670594829319346099665 6762079477373670594829319346132579 -> 0.9999999999999999999999999999951326 Inexact Rounded +dqdiv4007 divide 7286425153691890341633023222602916 7286425153691890341633023222606556 -> 0.9999999999999999999999999999995004 Inexact Rounded +dqdiv4008 divide 9481233991901305727648306421946655 9481233991901305727648306421919124 -> 1.000000000000000000000000000002904 Inexact Rounded +dqdiv4009 divide 4282053941893951742029444065614311 4282053941893951742029444065583077 -> 1.000000000000000000000000000007294 Inexact Rounded +dqdiv4010 divide 626888225441250639741781850338695 626888225441250639741781850327299 -> 1.000000000000000000000000000018179 Inexact Rounded +dqdiv4011 divide 3860973649222028009456598604468547 3860973649222028009456598604476849 -> 0.9999999999999999999999999999978498 Inexact Rounded +dqdiv4012 divide 4753157080127468127908060607821839 4753157080127468127908060607788379 -> 1.000000000000000000000000000007040 Inexact Rounded +dqdiv4013 divide 552448546203754062805706277880419 552448546203754062805706277881903 -> 0.9999999999999999999999999999973138 Inexact Rounded +dqdiv4014 divide 8405954527952158455323713728917395 8405954527952158455323713728933866 -> 0.9999999999999999999999999999980406 Inexact Rounded +dqdiv4015 divide 7554096502235321142555802238016116 7554096502235321142555802238026546 -> 0.9999999999999999999999999999986193 Inexact Rounded +dqdiv4016 divide 4053257674127518606871054934746782 4053257674127518606871054934767355 -> 0.9999999999999999999999999999949243 Inexact Rounded +dqdiv4017 divide 7112419420755090454716888844011582 7112419420755090454716888844038105 -> 0.9999999999999999999999999999962709 Inexact Rounded +dqdiv4018 divide 3132302137520072728164549730911846 3132302137520072728164549730908416 -> 1.000000000000000000000000000001095 Inexact Rounded +dqdiv4019 divide 4788374045841416355706715048161013 4788374045841416355706715048190077 -> 0.9999999999999999999999999999939303 Inexact Rounded +dqdiv4020 divide 9466021636047630218238075099510597 9466021636047630218238075099484053 -> 1.000000000000000000000000000002804 Inexact Rounded +dqdiv4021 divide 912742745646765625597399692138650 912742745646765625597399692139042 -> 0.9999999999999999999999999999995705 Inexact Rounded +dqdiv4022 divide 9508402742933643208806264897188504 9508402742933643208806264897195973 -> 0.9999999999999999999999999999992145 Inexact Rounded +dqdiv4023 divide 1186956795727233704962361914360895 1186956795727233704962361914329577 -> 1.000000000000000000000000000026385 Inexact Rounded +dqdiv4024 divide 5972210268839014812696916170967938 5972210268839014812696916170954974 -> 1.000000000000000000000000000002171 Inexact Rounded +dqdiv4025 divide 2303801625521619930894460139793140 2303801625521619930894460139799643 -> 0.9999999999999999999999999999971773 Inexact Rounded +dqdiv4026 divide 6022231560002898264777393473966595 6022231560002898264777393473947198 -> 1.000000000000000000000000000003221 Inexact Rounded +dqdiv4027 divide 8426148335801396199969346032210893 8426148335801396199969346032203179 -> 1.000000000000000000000000000000915 Inexact Rounded +dqdiv4028 divide 8812278947028784637382847098411749 8812278947028784637382847098385317 -> 1.000000000000000000000000000002999 Inexact Rounded +dqdiv4029 divide 8145282002348367383264197170116146 8145282002348367383264197170083988 -> 1.000000000000000000000000000003948 Inexact Rounded +dqdiv4030 divide 6821577571876840153123510107387026 6821577571876840153123510107418008 -> 0.9999999999999999999999999999954582 Inexact Rounded +dqdiv4031 divide 9018555319518966970480565482023720 9018555319518966970480565482013346 -> 1.000000000000000000000000000001150 Inexact Rounded +dqdiv4032 divide 4602155712998228449640717252788864 4602155712998228449640717252818502 -> 0.9999999999999999999999999999935600 Inexact Rounded +dqdiv4033 divide 6675607481522785614506828292264472 6675607481522785614506828292277100 -> 0.9999999999999999999999999999981083 Inexact Rounded +dqdiv4034 divide 4015881516871833897766945836264472 4015881516871833897766945836262645 -> 1.000000000000000000000000000000455 Inexact Rounded +dqdiv4035 divide 1415580205933411837595459716910365 1415580205933411837595459716880139 -> 1.000000000000000000000000000021352 Inexact Rounded +dqdiv4036 divide 9432968297069542816752035276361552 9432968297069542816752035276353054 -> 1.000000000000000000000000000000901 Inexact Rounded +dqdiv4037 divide 4799319591303848500532766682140658 4799319591303848500532766682172655 -> 0.9999999999999999999999999999933330 Inexact Rounded +dqdiv4038 divide 316854270732839529790584284987472 316854270732839529790584285004832 -> 0.9999999999999999999999999999452114 Inexact Rounded +dqdiv4039 divide 3598981300592490427826027975697415 3598981300592490427826027975686712 -> 1.000000000000000000000000000002974 Inexact Rounded +dqdiv4040 divide 1664315435694461371155800682196520 1664315435694461371155800682195617 -> 1.000000000000000000000000000000543 Inexact Rounded +dqdiv4041 divide 1680872316531128890102855316510581 1680872316531128890102855316495545 -> 1.000000000000000000000000000008945 Inexact Rounded +dqdiv4042 divide 9881274879566405475755499281644730 9881274879566405475755499281615743 -> 1.000000000000000000000000000002934 Inexact Rounded +dqdiv4043 divide 4737225957717466960447204232279216 4737225957717466960447204232277452 -> 1.000000000000000000000000000000372 Inexact Rounded +dqdiv4044 divide 2482097379414867061213319346418288 2482097379414867061213319346387936 -> 1.000000000000000000000000000012228 Inexact Rounded +dqdiv4045 divide 7406977595233762723576434122161868 7406977595233762723576434122189042 -> 0.9999999999999999999999999999963313 Inexact Rounded +dqdiv4046 divide 228782057757566047086593281773577 228782057757566047086593281769727 -> 1.000000000000000000000000000016828 Inexact Rounded +dqdiv4047 divide 2956594270240579648823270540367653 2956594270240579648823270540368556 -> 0.9999999999999999999999999999996946 Inexact Rounded +dqdiv4048 divide 6326964098897620620534136767634340 6326964098897620620534136767619339 -> 1.000000000000000000000000000002371 Inexact Rounded +dqdiv4049 divide 414586440456590215247002678327800 414586440456590215247002678316922 -> 1.000000000000000000000000000026238 Inexact Rounded +dqdiv4050 divide 7364552208570039386220505636779125 7364552208570039386220505636803548 -> 0.9999999999999999999999999999966837 Inexact Rounded +dqdiv4051 divide 5626266749902369710022824950590056 5626266749902369710022824950591008 -> 0.9999999999999999999999999999998308 Inexact Rounded +dqdiv4052 divide 4863278293916197454987481343460484 4863278293916197454987481343442522 -> 1.000000000000000000000000000003693 Inexact Rounded +dqdiv4053 divide 1170713582030637359713249796835483 1170713582030637359713249796823345 -> 1.000000000000000000000000000010368 Inexact Rounded +dqdiv4054 divide 9838062494725965667776326556052931 9838062494725965667776326556061002 -> 0.9999999999999999999999999999991796 Inexact Rounded +dqdiv4055 divide 4071388731298861093005687091498922 4071388731298861093005687091498278 -> 1.000000000000000000000000000000158 Inexact Rounded +dqdiv4056 divide 8753155722324706795855038590272526 8753155722324706795855038590276656 -> 0.9999999999999999999999999999995282 Inexact Rounded +dqdiv4057 divide 4399941911533273418844742658240485 4399941911533273418844742658219891 -> 1.000000000000000000000000000004681 Inexact Rounded +dqdiv4058 divide 4127884159949503677776430620050269 4127884159949503677776430620026091 -> 1.000000000000000000000000000005857 Inexact Rounded +dqdiv4059 divide 5536160822360800067042528317438808 5536160822360800067042528317450687 -> 0.9999999999999999999999999999978543 Inexact Rounded +dqdiv4060 divide 3973234998468664936671088237710246 3973234998468664936671088237741886 -> 0.9999999999999999999999999999920367 Inexact Rounded +dqdiv4061 divide 9824855935638263593410444142327358 9824855935638263593410444142328576 -> 0.9999999999999999999999999999998760 Inexact Rounded +dqdiv4062 divide 5917078517340218131867327300814867 5917078517340218131867327300788701 -> 1.000000000000000000000000000004422 Inexact Rounded +dqdiv4063 divide 4354236601830544882286139612521362 4354236601830544882286139612543223 -> 0.9999999999999999999999999999949794 Inexact Rounded +dqdiv4064 divide 8058474772375259017342110013891294 8058474772375259017342110013906792 -> 0.9999999999999999999999999999980768 Inexact Rounded +dqdiv4065 divide 5519604020981748170517093746166328 5519604020981748170517093746181763 -> 0.9999999999999999999999999999972036 Inexact Rounded +dqdiv4066 divide 1502130966879805458831323782443139 1502130966879805458831323782412213 -> 1.000000000000000000000000000020588 Inexact Rounded +dqdiv4067 divide 562795633719481212915159787980270 562795633719481212915159788007066 -> 0.9999999999999999999999999999523877 Inexact Rounded +dqdiv4068 divide 6584743324494664273941281557268878 6584743324494664273941281557258945 -> 1.000000000000000000000000000001508 Inexact Rounded +dqdiv4069 divide 3632000327285743997976431109416500 3632000327285743997976431109408107 -> 1.000000000000000000000000000002311 Inexact Rounded +dqdiv4070 divide 1145827237315430089388953838561450 1145827237315430089388953838527332 -> 1.000000000000000000000000000029776 Inexact Rounded +dqdiv4071 divide 8874431010357691869725372317350380 8874431010357691869725372317316472 -> 1.000000000000000000000000000003821 Inexact Rounded +dqdiv4072 divide 992948718902804648119753141202196 992948718902804648119753141235222 -> 0.9999999999999999999999999999667395 Inexact Rounded +dqdiv4073 divide 2522735183374218505142417265439989 2522735183374218505142417265453779 -> 0.9999999999999999999999999999945337 Inexact Rounded +dqdiv4074 divide 2668419161912936508006872303501052 2668419161912936508006872303471036 -> 1.000000000000000000000000000011249 Inexact Rounded +dqdiv4075 divide 3036169085665186712590941111775092 3036169085665186712590941111808846 -> 0.9999999999999999999999999999888827 Inexact Rounded +dqdiv4076 divide 9441634604917231638508898934006147 9441634604917231638508898934000288 -> 1.000000000000000000000000000000621 Inexact Rounded +dqdiv4077 divide 2677301353164377091111458811839190 2677301353164377091111458811867722 -> 0.9999999999999999999999999999893430 Inexact Rounded +dqdiv4078 divide 6844979203112066166583765857171426 6844979203112066166583765857189682 -> 0.9999999999999999999999999999973329 Inexact Rounded +dqdiv4079 divide 2220337435141796724323783960231661 2220337435141796724323783960208778 -> 1.000000000000000000000000000010306 Inexact Rounded +dqdiv4080 divide 6447424700019783931569996989561380 6447424700019783931569996989572454 -> 0.9999999999999999999999999999982824 Inexact Rounded +dqdiv4081 divide 7512856762696607119847092195587180 7512856762696607119847092195557346 -> 1.000000000000000000000000000003971 Inexact Rounded +dqdiv4082 divide 7395261981193960399087819077237482 7395261981193960399087819077242487 -> 0.9999999999999999999999999999993232 Inexact Rounded +dqdiv4083 divide 2253442467682584035792724884376735 2253442467682584035792724884407178 -> 0.9999999999999999999999999999864904 Inexact Rounded +dqdiv4084 divide 8153138680300213135577336466190997 8153138680300213135577336466220607 -> 0.9999999999999999999999999999963683 Inexact Rounded +dqdiv4085 divide 4668731252254148074041022681801390 4668731252254148074041022681778101 -> 1.000000000000000000000000000004988 Inexact Rounded +dqdiv4086 divide 6078404557993669696040425501815056 6078404557993669696040425501797612 -> 1.000000000000000000000000000002870 Inexact Rounded +dqdiv4087 divide 2306352359874261623223356878316278 2306352359874261623223356878335612 -> 0.9999999999999999999999999999916171 Inexact Rounded +dqdiv4088 divide 3264842186668480362900909564091908 3264842186668480362900909564058658 -> 1.000000000000000000000000000010184 Inexact Rounded +dqdiv4089 divide 6971985047279636878957959608612204 6971985047279636878957959608615088 -> 0.9999999999999999999999999999995863 Inexact Rounded +dqdiv4090 divide 5262810889952721235466445973816257 5262810889952721235466445973783077 -> 1.000000000000000000000000000006305 Inexact Rounded +dqdiv4091 divide 7947944731035267178548357070080288 7947944731035267178548357070061339 -> 1.000000000000000000000000000002384 Inexact Rounded +dqdiv4092 divide 5071808908395375108383035800443229 5071808908395375108383035800412429 -> 1.000000000000000000000000000006073 Inexact Rounded +dqdiv4093 divide 2043146542084503655511507209262969 2043146542084503655511507209249263 -> 1.000000000000000000000000000006708 Inexact Rounded +dqdiv4094 divide 4097632735384534181661959731264802 4097632735384534181661959731234499 -> 1.000000000000000000000000000007395 Inexact Rounded +dqdiv4095 divide 3061477642831387489729464587044430 3061477642831387489729464587059452 -> 0.9999999999999999999999999999950932 Inexact Rounded +dqdiv4096 divide 3429854941039776159498802936252638 3429854941039776159498802936246415 -> 1.000000000000000000000000000001814 Inexact Rounded +dqdiv4097 divide 4874324979578599700024133278284545 4874324979578599700024133278262131 -> 1.000000000000000000000000000004598 Inexact Rounded +dqdiv4098 divide 5701652369691833541455978515820882 5701652369691833541455978515834854 -> 0.9999999999999999999999999999975495 Inexact Rounded +dqdiv4099 divide 2928205728402945266953255632343113 2928205728402945266953255632373794 -> 0.9999999999999999999999999999895223 Inexact Rounded + +-- Null tests +dqdiv9998 divide 10 # -> NaN Invalid_operation +dqdiv9999 divide # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqDivideInt.decTest b/Lib/test/decimaltestdata/dqDivideInt.decTest index 3fec6db..c290351 100644 --- a/Lib/test/decimaltestdata/dqDivideInt.decTest +++ b/Lib/test/decimaltestdata/dqDivideInt.decTest @@ -1,453 +1,453 @@ ------------------------------------------------------------------------- --- dqDivideInt.decTest -- decQuad integer division -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - - -dqdvi001 divideint 1 1 -> 1 -dqdvi002 divideint 2 1 -> 2 -dqdvi003 divideint 1 2 -> 0 -dqdvi004 divideint 2 2 -> 1 -dqdvi005 divideint 0 1 -> 0 -dqdvi006 divideint 0 2 -> 0 -dqdvi007 divideint 1 3 -> 0 -dqdvi008 divideint 2 3 -> 0 -dqdvi009 divideint 3 3 -> 1 - -dqdvi010 divideint 2.4 1 -> 2 -dqdvi011 divideint 2.4 -1 -> -2 -dqdvi012 divideint -2.4 1 -> -2 -dqdvi013 divideint -2.4 -1 -> 2 -dqdvi014 divideint 2.40 1 -> 2 -dqdvi015 divideint 2.400 1 -> 2 -dqdvi016 divideint 2.4 2 -> 1 -dqdvi017 divideint 2.400 2 -> 1 -dqdvi018 divideint 2. 2 -> 1 -dqdvi019 divideint 20 20 -> 1 - -dqdvi020 divideint 187 187 -> 1 -dqdvi021 divideint 5 2 -> 2 -dqdvi022 divideint 5 2.0 -> 2 -dqdvi023 divideint 5 2.000 -> 2 -dqdvi024 divideint 5 0.200 -> 25 -dqdvi025 divideint 5 0.200 -> 25 - -dqdvi030 divideint 1 2 -> 0 -dqdvi031 divideint 1 4 -> 0 -dqdvi032 divideint 1 8 -> 0 -dqdvi033 divideint 1 16 -> 0 -dqdvi034 divideint 1 32 -> 0 -dqdvi035 divideint 1 64 -> 0 -dqdvi040 divideint 1 -2 -> -0 -dqdvi041 divideint 1 -4 -> -0 -dqdvi042 divideint 1 -8 -> -0 -dqdvi043 divideint 1 -16 -> -0 -dqdvi044 divideint 1 -32 -> -0 -dqdvi045 divideint 1 -64 -> -0 -dqdvi050 divideint -1 2 -> -0 -dqdvi051 divideint -1 4 -> -0 -dqdvi052 divideint -1 8 -> -0 -dqdvi053 divideint -1 16 -> -0 -dqdvi054 divideint -1 32 -> -0 -dqdvi055 divideint -1 64 -> -0 -dqdvi060 divideint -1 -2 -> 0 -dqdvi061 divideint -1 -4 -> 0 -dqdvi062 divideint -1 -8 -> 0 -dqdvi063 divideint -1 -16 -> 0 -dqdvi064 divideint -1 -32 -> 0 -dqdvi065 divideint -1 -64 -> 0 - --- similar with powers of ten -dqdvi160 divideint 1 1 -> 1 -dqdvi161 divideint 1 10 -> 0 -dqdvi162 divideint 1 100 -> 0 -dqdvi163 divideint 1 1000 -> 0 -dqdvi164 divideint 1 10000 -> 0 -dqdvi165 divideint 1 100000 -> 0 -dqdvi166 divideint 1 1000000 -> 0 -dqdvi167 divideint 1 10000000 -> 0 -dqdvi168 divideint 1 100000000 -> 0 -dqdvi170 divideint 1 -1 -> -1 -dqdvi171 divideint 1 -10 -> -0 -dqdvi172 divideint 1 -100 -> -0 -dqdvi173 divideint 1 -1000 -> -0 -dqdvi174 divideint 1 -10000 -> -0 -dqdvi175 divideint 1 -100000 -> -0 -dqdvi176 divideint 1 -1000000 -> -0 -dqdvi177 divideint 1 -10000000 -> -0 -dqdvi178 divideint 1 -100000000 -> -0 -dqdvi180 divideint -1 1 -> -1 -dqdvi181 divideint -1 10 -> -0 -dqdvi182 divideint -1 100 -> -0 -dqdvi183 divideint -1 1000 -> -0 -dqdvi184 divideint -1 10000 -> -0 -dqdvi185 divideint -1 100000 -> -0 -dqdvi186 divideint -1 1000000 -> -0 -dqdvi187 divideint -1 10000000 -> -0 -dqdvi188 divideint -1 100000000 -> -0 -dqdvi190 divideint -1 -1 -> 1 -dqdvi191 divideint -1 -10 -> 0 -dqdvi192 divideint -1 -100 -> 0 -dqdvi193 divideint -1 -1000 -> 0 -dqdvi194 divideint -1 -10000 -> 0 -dqdvi195 divideint -1 -100000 -> 0 -dqdvi196 divideint -1 -1000000 -> 0 -dqdvi197 divideint -1 -10000000 -> 0 -dqdvi198 divideint -1 -100000000 -> 0 - --- some long operand (at p=9) cases -dqdvi070 divideint 999999999 1 -> 999999999 -dqdvi071 divideint 999999999.4 1 -> 999999999 -dqdvi072 divideint 999999999.5 1 -> 999999999 -dqdvi073 divideint 999999999.9 1 -> 999999999 -dqdvi074 divideint 999999999.999 1 -> 999999999 - -dqdvi090 divideint 0. 1 -> 0 -dqdvi091 divideint .0 1 -> 0 -dqdvi092 divideint 0.00 1 -> 0 -dqdvi093 divideint 0.00E+9 1 -> 0 -dqdvi094 divideint 0.0000E-50 1 -> 0 - -dqdvi100 divideint 1 1 -> 1 -dqdvi101 divideint 1 2 -> 0 -dqdvi102 divideint 1 3 -> 0 -dqdvi103 divideint 1 4 -> 0 -dqdvi104 divideint 1 5 -> 0 -dqdvi105 divideint 1 6 -> 0 -dqdvi106 divideint 1 7 -> 0 -dqdvi107 divideint 1 8 -> 0 -dqdvi108 divideint 1 9 -> 0 -dqdvi109 divideint 1 10 -> 0 -dqdvi110 divideint 1 1 -> 1 -dqdvi111 divideint 2 1 -> 2 -dqdvi112 divideint 3 1 -> 3 -dqdvi113 divideint 4 1 -> 4 -dqdvi114 divideint 5 1 -> 5 -dqdvi115 divideint 6 1 -> 6 -dqdvi116 divideint 7 1 -> 7 -dqdvi117 divideint 8 1 -> 8 -dqdvi118 divideint 9 1 -> 9 -dqdvi119 divideint 10 1 -> 10 - --- from DiagBigDecimal -dqdvi131 divideint 101.3 1 -> 101 -dqdvi132 divideint 101.0 1 -> 101 -dqdvi133 divideint 101.3 3 -> 33 -dqdvi134 divideint 101.0 3 -> 33 -dqdvi135 divideint 2.4 1 -> 2 -dqdvi136 divideint 2.400 1 -> 2 -dqdvi137 divideint 18 18 -> 1 -dqdvi138 divideint 1120 1000 -> 1 -dqdvi139 divideint 2.4 2 -> 1 -dqdvi140 divideint 2.400 2 -> 1 -dqdvi141 divideint 0.5 2.000 -> 0 -dqdvi142 divideint 8.005 7 -> 1 -dqdvi143 divideint 5 2 -> 2 -dqdvi144 divideint 0 2 -> 0 -dqdvi145 divideint 0.00 2 -> 0 - --- Others -dqdvi150 divideint 12345 4.999 -> 2469 -dqdvi151 divideint 12345 4.99 -> 2473 -dqdvi152 divideint 12345 4.9 -> 2519 -dqdvi153 divideint 12345 5 -> 2469 -dqdvi154 divideint 12345 5.1 -> 2420 -dqdvi155 divideint 12345 5.01 -> 2464 -dqdvi156 divideint 12345 5.001 -> 2468 -dqdvi157 divideint 101 7.6 -> 13 - --- Various flavours of divideint by 0 -dqdvi201 divideint 0 0 -> NaN Division_undefined -dqdvi202 divideint 0.0E5 0 -> NaN Division_undefined -dqdvi203 divideint 0.000 0 -> NaN Division_undefined -dqdvi204 divideint 0.0001 0 -> Infinity Division_by_zero -dqdvi205 divideint 0.01 0 -> Infinity Division_by_zero -dqdvi206 divideint 0.1 0 -> Infinity Division_by_zero -dqdvi207 divideint 1 0 -> Infinity Division_by_zero -dqdvi208 divideint 1 0.0 -> Infinity Division_by_zero -dqdvi209 divideint 10 0.0 -> Infinity Division_by_zero -dqdvi210 divideint 1E+100 0.0 -> Infinity Division_by_zero -dqdvi211 divideint 1E+380 0 -> Infinity Division_by_zero -dqdvi214 divideint -0.0001 0 -> -Infinity Division_by_zero -dqdvi215 divideint -0.01 0 -> -Infinity Division_by_zero -dqdvi216 divideint -0.1 0 -> -Infinity Division_by_zero -dqdvi217 divideint -1 0 -> -Infinity Division_by_zero -dqdvi218 divideint -1 0.0 -> -Infinity Division_by_zero -dqdvi219 divideint -10 0.0 -> -Infinity Division_by_zero -dqdvi220 divideint -1E+100 0.0 -> -Infinity Division_by_zero -dqdvi221 divideint -1E+380 0 -> -Infinity Division_by_zero - --- test some cases that are close to exponent overflow -dqdvi270 divideint 1 1e384 -> 0 -dqdvi271 divideint 1 0.9e384 -> 0 -dqdvi272 divideint 1 0.99e384 -> 0 -dqdvi273 divideint 1 0.9999999999999999e384 -> 0 -dqdvi274 divideint 9e384 1 -> NaN Division_impossible -dqdvi275 divideint 9.9e384 1 -> NaN Division_impossible -dqdvi276 divideint 9.99e384 1 -> NaN Division_impossible -dqdvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible - -dqdvi280 divideint 0.1 9e-383 -> NaN Division_impossible -dqdvi281 divideint 0.1 99e-383 -> NaN Division_impossible -dqdvi282 divideint 0.1 999e-383 -> NaN Division_impossible -dqdvi283 divideint 0.1 9e-382 -> NaN Division_impossible -dqdvi284 divideint 0.1 99e-382 -> NaN Division_impossible - --- GD edge cases: lhs smaller than rhs but more digits -dqdvi301 divideint 0.9 2 -> 0 -dqdvi302 divideint 0.9 2.0 -> 0 -dqdvi303 divideint 0.9 2.1 -> 0 -dqdvi304 divideint 0.9 2.00 -> 0 -dqdvi305 divideint 0.9 2.01 -> 0 -dqdvi306 divideint 0.12 1 -> 0 -dqdvi307 divideint 0.12 1.0 -> 0 -dqdvi308 divideint 0.12 1.00 -> 0 -dqdvi309 divideint 0.12 1.0 -> 0 -dqdvi310 divideint 0.12 1.00 -> 0 -dqdvi311 divideint 0.12 2 -> 0 -dqdvi312 divideint 0.12 2.0 -> 0 -dqdvi313 divideint 0.12 2.1 -> 0 -dqdvi314 divideint 0.12 2.00 -> 0 -dqdvi315 divideint 0.12 2.01 -> 0 - --- edge cases of impossible -dqdvi330 divideint 1234567987654321987654321890123456 10 -> 123456798765432198765432189012345 -dqdvi331 divideint 1234567987654321987654321890123456 1 -> 1234567987654321987654321890123456 -dqdvi332 divideint 1234567987654321987654321890123456 0.1 -> NaN Division_impossible -dqdvi333 divideint 1234567987654321987654321890123456 0.01 -> NaN Division_impossible - --- overflow and underflow tests [from divide] -dqdvi1051 divideint 1e+277 1e-311 -> NaN Division_impossible -dqdvi1052 divideint 1e+277 -1e-311 -> NaN Division_impossible -dqdvi1053 divideint -1e+277 1e-311 -> NaN Division_impossible -dqdvi1054 divideint -1e+277 -1e-311 -> NaN Division_impossible -dqdvi1055 divideint 1e-277 1e+311 -> 0 -dqdvi1056 divideint 1e-277 -1e+311 -> -0 -dqdvi1057 divideint -1e-277 1e+311 -> -0 -dqdvi1058 divideint -1e-277 -1e+311 -> 0 - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -dqdvi1060 divideint 1e-291 1e+101 -> 0 -dqdvi1061 divideint 1e-291 1e+102 -> 0 -dqdvi1062 divideint 1e-291 1e+103 -> 0 -dqdvi1063 divideint 1e-291 1e+104 -> 0 -dqdvi1064 divideint 1e-291 1e+105 -> 0 -dqdvi1065 divideint 1e-291 1e+106 -> 0 -dqdvi1066 divideint 1e-291 1e+107 -> 0 -dqdvi1067 divideint 1e-291 1e+108 -> 0 -dqdvi1068 divideint 1e-291 1e+109 -> 0 -dqdvi1069 divideint 1e-291 1e+110 -> 0 - -dqdvi1101 divideint 1.0000E-394 1 -> 0 -dqdvi1102 divideint 1.000E-394 1e+1 -> 0 -dqdvi1103 divideint 1.00E-394 1e+2 -> 0 - -dqdvi1118 divideint 1E-394 1e+4 -> 0 -dqdvi1119 divideint 3E-394 -1e+5 -> -0 -dqdvi1120 divideint 5E-394 1e+5 -> 0 - -dqdvi1124 divideint 1E-394 -1e+4 -> -0 -dqdvi1130 divideint 3.0E-394 -1e+5 -> -0 - -dqdvi1131 divideint 1.0E-199 1e+200 -> 0 -dqdvi1132 divideint 1.0E-199 1e+199 -> 0 -dqdvi1133 divideint 1.0E-199 1e+198 -> 0 -dqdvi1134 divideint 2.0E-199 2e+198 -> 0 -dqdvi1135 divideint 4.0E-199 4e+198 -> 0 - --- long operand checks -dqdvi401 divideint 12345678000 100 -> 123456780 -dqdvi402 divideint 1 12345678000 -> 0 -dqdvi403 divideint 1234567800 10 -> 123456780 -dqdvi404 divideint 1 1234567800 -> 0 -dqdvi405 divideint 1234567890 10 -> 123456789 -dqdvi406 divideint 1 1234567890 -> 0 -dqdvi407 divideint 1234567891 10 -> 123456789 -dqdvi408 divideint 1 1234567891 -> 0 -dqdvi409 divideint 12345678901 100 -> 123456789 -dqdvi410 divideint 1 12345678901 -> 0 -dqdvi411 divideint 1234567896 10 -> 123456789 -dqdvi412 divideint 1 1234567896 -> 0 -dqdvi413 divideint 12345678948 100 -> 123456789 -dqdvi414 divideint 12345678949 100 -> 123456789 -dqdvi415 divideint 12345678950 100 -> 123456789 -dqdvi416 divideint 12345678951 100 -> 123456789 -dqdvi417 divideint 12345678999 100 -> 123456789 -dqdvi441 divideint 12345678000 1 -> 12345678000 -dqdvi442 divideint 1 12345678000 -> 0 -dqdvi443 divideint 1234567800 1 -> 1234567800 -dqdvi444 divideint 1 1234567800 -> 0 -dqdvi445 divideint 1234567890 1 -> 1234567890 -dqdvi446 divideint 1 1234567890 -> 0 -dqdvi447 divideint 1234567891 1 -> 1234567891 -dqdvi448 divideint 1 1234567891 -> 0 -dqdvi449 divideint 12345678901 1 -> 12345678901 -dqdvi450 divideint 1 12345678901 -> 0 -dqdvi451 divideint 1234567896 1 -> 1234567896 -dqdvi452 divideint 1 1234567896 -> 0 - --- more zeros, etc. -dqdvi531 divideint 5.00 1E-3 -> 5000 -dqdvi532 divideint 00.00 0.000 -> NaN Division_undefined -dqdvi533 divideint 00.00 0E-3 -> NaN Division_undefined -dqdvi534 divideint 0 -0 -> NaN Division_undefined -dqdvi535 divideint -0 0 -> NaN Division_undefined -dqdvi536 divideint -0 -0 -> NaN Division_undefined - -dqdvi541 divideint 0 -1 -> -0 -dqdvi542 divideint -0 -1 -> 0 -dqdvi543 divideint 0 1 -> 0 -dqdvi544 divideint -0 1 -> -0 -dqdvi545 divideint -1 0 -> -Infinity Division_by_zero -dqdvi546 divideint -1 -0 -> Infinity Division_by_zero -dqdvi547 divideint 1 0 -> Infinity Division_by_zero -dqdvi548 divideint 1 -0 -> -Infinity Division_by_zero - -dqdvi551 divideint 0.0 -1 -> -0 -dqdvi552 divideint -0.0 -1 -> 0 -dqdvi553 divideint 0.0 1 -> 0 -dqdvi554 divideint -0.0 1 -> -0 -dqdvi555 divideint -1.0 0 -> -Infinity Division_by_zero -dqdvi556 divideint -1.0 -0 -> Infinity Division_by_zero -dqdvi557 divideint 1.0 0 -> Infinity Division_by_zero -dqdvi558 divideint 1.0 -0 -> -Infinity Division_by_zero - -dqdvi561 divideint 0 -1.0 -> -0 -dqdvi562 divideint -0 -1.0 -> 0 -dqdvi563 divideint 0 1.0 -> 0 -dqdvi564 divideint -0 1.0 -> -0 -dqdvi565 divideint -1 0.0 -> -Infinity Division_by_zero -dqdvi566 divideint -1 -0.0 -> Infinity Division_by_zero -dqdvi567 divideint 1 0.0 -> Infinity Division_by_zero -dqdvi568 divideint 1 -0.0 -> -Infinity Division_by_zero - -dqdvi571 divideint 0.0 -1.0 -> -0 -dqdvi572 divideint -0.0 -1.0 -> 0 -dqdvi573 divideint 0.0 1.0 -> 0 -dqdvi574 divideint -0.0 1.0 -> -0 -dqdvi575 divideint -1.0 0.0 -> -Infinity Division_by_zero -dqdvi576 divideint -1.0 -0.0 -> Infinity Division_by_zero -dqdvi577 divideint 1.0 0.0 -> Infinity Division_by_zero -dqdvi578 divideint 1.0 -0.0 -> -Infinity Division_by_zero - --- Specials -dqdvi580 divideint Inf -Inf -> NaN Invalid_operation -dqdvi581 divideint Inf -1000 -> -Infinity -dqdvi582 divideint Inf -1 -> -Infinity -dqdvi583 divideint Inf -0 -> -Infinity -dqdvi584 divideint Inf 0 -> Infinity -dqdvi585 divideint Inf 1 -> Infinity -dqdvi586 divideint Inf 1000 -> Infinity -dqdvi587 divideint Inf Inf -> NaN Invalid_operation -dqdvi588 divideint -1000 Inf -> -0 -dqdvi589 divideint -Inf Inf -> NaN Invalid_operation -dqdvi590 divideint -1 Inf -> -0 -dqdvi591 divideint -0 Inf -> -0 -dqdvi592 divideint 0 Inf -> 0 -dqdvi593 divideint 1 Inf -> 0 -dqdvi594 divideint 1000 Inf -> 0 -dqdvi595 divideint Inf Inf -> NaN Invalid_operation - -dqdvi600 divideint -Inf -Inf -> NaN Invalid_operation -dqdvi601 divideint -Inf -1000 -> Infinity -dqdvi602 divideint -Inf -1 -> Infinity -dqdvi603 divideint -Inf -0 -> Infinity -dqdvi604 divideint -Inf 0 -> -Infinity -dqdvi605 divideint -Inf 1 -> -Infinity -dqdvi606 divideint -Inf 1000 -> -Infinity -dqdvi607 divideint -Inf Inf -> NaN Invalid_operation -dqdvi608 divideint -1000 Inf -> -0 -dqdvi609 divideint -Inf -Inf -> NaN Invalid_operation -dqdvi610 divideint -1 -Inf -> 0 -dqdvi611 divideint -0 -Inf -> 0 -dqdvi612 divideint 0 -Inf -> -0 -dqdvi613 divideint 1 -Inf -> -0 -dqdvi614 divideint 1000 -Inf -> -0 -dqdvi615 divideint Inf -Inf -> NaN Invalid_operation - -dqdvi621 divideint NaN -Inf -> NaN -dqdvi622 divideint NaN -1000 -> NaN -dqdvi623 divideint NaN -1 -> NaN -dqdvi624 divideint NaN -0 -> NaN -dqdvi625 divideint NaN 0 -> NaN -dqdvi626 divideint NaN 1 -> NaN -dqdvi627 divideint NaN 1000 -> NaN -dqdvi628 divideint NaN Inf -> NaN -dqdvi629 divideint NaN NaN -> NaN -dqdvi630 divideint -Inf NaN -> NaN -dqdvi631 divideint -1000 NaN -> NaN -dqdvi632 divideint -1 NaN -> NaN -dqdvi633 divideint -0 NaN -> NaN -dqdvi634 divideint 0 NaN -> NaN -dqdvi635 divideint 1 NaN -> NaN -dqdvi636 divideint 1000 NaN -> NaN -dqdvi637 divideint Inf NaN -> NaN - -dqdvi641 divideint sNaN -Inf -> NaN Invalid_operation -dqdvi642 divideint sNaN -1000 -> NaN Invalid_operation -dqdvi643 divideint sNaN -1 -> NaN Invalid_operation -dqdvi644 divideint sNaN -0 -> NaN Invalid_operation -dqdvi645 divideint sNaN 0 -> NaN Invalid_operation -dqdvi646 divideint sNaN 1 -> NaN Invalid_operation -dqdvi647 divideint sNaN 1000 -> NaN Invalid_operation -dqdvi648 divideint sNaN NaN -> NaN Invalid_operation -dqdvi649 divideint sNaN sNaN -> NaN Invalid_operation -dqdvi650 divideint NaN sNaN -> NaN Invalid_operation -dqdvi651 divideint -Inf sNaN -> NaN Invalid_operation -dqdvi652 divideint -1000 sNaN -> NaN Invalid_operation -dqdvi653 divideint -1 sNaN -> NaN Invalid_operation -dqdvi654 divideint -0 sNaN -> NaN Invalid_operation -dqdvi655 divideint 0 sNaN -> NaN Invalid_operation -dqdvi656 divideint 1 sNaN -> NaN Invalid_operation -dqdvi657 divideint 1000 sNaN -> NaN Invalid_operation -dqdvi658 divideint Inf sNaN -> NaN Invalid_operation -dqdvi659 divideint NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqdvi661 divideint NaN9 -Inf -> NaN9 -dqdvi662 divideint NaN8 1000 -> NaN8 -dqdvi663 divideint NaN7 Inf -> NaN7 -dqdvi664 divideint -NaN6 NaN5 -> -NaN6 -dqdvi665 divideint -Inf NaN4 -> NaN4 -dqdvi666 divideint -1000 NaN3 -> NaN3 -dqdvi667 divideint Inf -NaN2 -> -NaN2 - -dqdvi671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation -dqdvi672 divideint sNaN98 -1 -> NaN98 Invalid_operation -dqdvi673 divideint sNaN97 NaN -> NaN97 Invalid_operation -dqdvi674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation -dqdvi675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation -dqdvi676 divideint -Inf sNaN92 -> NaN92 Invalid_operation -dqdvi677 divideint 0 sNaN91 -> NaN91 Invalid_operation -dqdvi678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation -dqdvi679 divideint NaN sNaN89 -> NaN89 Invalid_operation - --- Gyuris example -dqdvi700 divideint 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0 - --- Null tests -dqdvi900 divideint 10 # -> NaN Invalid_operation -dqdvi901 divideint # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqDivideInt.decTest -- decQuad integer division -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + + +dqdvi001 divideint 1 1 -> 1 +dqdvi002 divideint 2 1 -> 2 +dqdvi003 divideint 1 2 -> 0 +dqdvi004 divideint 2 2 -> 1 +dqdvi005 divideint 0 1 -> 0 +dqdvi006 divideint 0 2 -> 0 +dqdvi007 divideint 1 3 -> 0 +dqdvi008 divideint 2 3 -> 0 +dqdvi009 divideint 3 3 -> 1 + +dqdvi010 divideint 2.4 1 -> 2 +dqdvi011 divideint 2.4 -1 -> -2 +dqdvi012 divideint -2.4 1 -> -2 +dqdvi013 divideint -2.4 -1 -> 2 +dqdvi014 divideint 2.40 1 -> 2 +dqdvi015 divideint 2.400 1 -> 2 +dqdvi016 divideint 2.4 2 -> 1 +dqdvi017 divideint 2.400 2 -> 1 +dqdvi018 divideint 2. 2 -> 1 +dqdvi019 divideint 20 20 -> 1 + +dqdvi020 divideint 187 187 -> 1 +dqdvi021 divideint 5 2 -> 2 +dqdvi022 divideint 5 2.0 -> 2 +dqdvi023 divideint 5 2.000 -> 2 +dqdvi024 divideint 5 0.200 -> 25 +dqdvi025 divideint 5 0.200 -> 25 + +dqdvi030 divideint 1 2 -> 0 +dqdvi031 divideint 1 4 -> 0 +dqdvi032 divideint 1 8 -> 0 +dqdvi033 divideint 1 16 -> 0 +dqdvi034 divideint 1 32 -> 0 +dqdvi035 divideint 1 64 -> 0 +dqdvi040 divideint 1 -2 -> -0 +dqdvi041 divideint 1 -4 -> -0 +dqdvi042 divideint 1 -8 -> -0 +dqdvi043 divideint 1 -16 -> -0 +dqdvi044 divideint 1 -32 -> -0 +dqdvi045 divideint 1 -64 -> -0 +dqdvi050 divideint -1 2 -> -0 +dqdvi051 divideint -1 4 -> -0 +dqdvi052 divideint -1 8 -> -0 +dqdvi053 divideint -1 16 -> -0 +dqdvi054 divideint -1 32 -> -0 +dqdvi055 divideint -1 64 -> -0 +dqdvi060 divideint -1 -2 -> 0 +dqdvi061 divideint -1 -4 -> 0 +dqdvi062 divideint -1 -8 -> 0 +dqdvi063 divideint -1 -16 -> 0 +dqdvi064 divideint -1 -32 -> 0 +dqdvi065 divideint -1 -64 -> 0 + +-- similar with powers of ten +dqdvi160 divideint 1 1 -> 1 +dqdvi161 divideint 1 10 -> 0 +dqdvi162 divideint 1 100 -> 0 +dqdvi163 divideint 1 1000 -> 0 +dqdvi164 divideint 1 10000 -> 0 +dqdvi165 divideint 1 100000 -> 0 +dqdvi166 divideint 1 1000000 -> 0 +dqdvi167 divideint 1 10000000 -> 0 +dqdvi168 divideint 1 100000000 -> 0 +dqdvi170 divideint 1 -1 -> -1 +dqdvi171 divideint 1 -10 -> -0 +dqdvi172 divideint 1 -100 -> -0 +dqdvi173 divideint 1 -1000 -> -0 +dqdvi174 divideint 1 -10000 -> -0 +dqdvi175 divideint 1 -100000 -> -0 +dqdvi176 divideint 1 -1000000 -> -0 +dqdvi177 divideint 1 -10000000 -> -0 +dqdvi178 divideint 1 -100000000 -> -0 +dqdvi180 divideint -1 1 -> -1 +dqdvi181 divideint -1 10 -> -0 +dqdvi182 divideint -1 100 -> -0 +dqdvi183 divideint -1 1000 -> -0 +dqdvi184 divideint -1 10000 -> -0 +dqdvi185 divideint -1 100000 -> -0 +dqdvi186 divideint -1 1000000 -> -0 +dqdvi187 divideint -1 10000000 -> -0 +dqdvi188 divideint -1 100000000 -> -0 +dqdvi190 divideint -1 -1 -> 1 +dqdvi191 divideint -1 -10 -> 0 +dqdvi192 divideint -1 -100 -> 0 +dqdvi193 divideint -1 -1000 -> 0 +dqdvi194 divideint -1 -10000 -> 0 +dqdvi195 divideint -1 -100000 -> 0 +dqdvi196 divideint -1 -1000000 -> 0 +dqdvi197 divideint -1 -10000000 -> 0 +dqdvi198 divideint -1 -100000000 -> 0 + +-- some long operand (at p=9) cases +dqdvi070 divideint 999999999 1 -> 999999999 +dqdvi071 divideint 999999999.4 1 -> 999999999 +dqdvi072 divideint 999999999.5 1 -> 999999999 +dqdvi073 divideint 999999999.9 1 -> 999999999 +dqdvi074 divideint 999999999.999 1 -> 999999999 + +dqdvi090 divideint 0. 1 -> 0 +dqdvi091 divideint .0 1 -> 0 +dqdvi092 divideint 0.00 1 -> 0 +dqdvi093 divideint 0.00E+9 1 -> 0 +dqdvi094 divideint 0.0000E-50 1 -> 0 + +dqdvi100 divideint 1 1 -> 1 +dqdvi101 divideint 1 2 -> 0 +dqdvi102 divideint 1 3 -> 0 +dqdvi103 divideint 1 4 -> 0 +dqdvi104 divideint 1 5 -> 0 +dqdvi105 divideint 1 6 -> 0 +dqdvi106 divideint 1 7 -> 0 +dqdvi107 divideint 1 8 -> 0 +dqdvi108 divideint 1 9 -> 0 +dqdvi109 divideint 1 10 -> 0 +dqdvi110 divideint 1 1 -> 1 +dqdvi111 divideint 2 1 -> 2 +dqdvi112 divideint 3 1 -> 3 +dqdvi113 divideint 4 1 -> 4 +dqdvi114 divideint 5 1 -> 5 +dqdvi115 divideint 6 1 -> 6 +dqdvi116 divideint 7 1 -> 7 +dqdvi117 divideint 8 1 -> 8 +dqdvi118 divideint 9 1 -> 9 +dqdvi119 divideint 10 1 -> 10 + +-- from DiagBigDecimal +dqdvi131 divideint 101.3 1 -> 101 +dqdvi132 divideint 101.0 1 -> 101 +dqdvi133 divideint 101.3 3 -> 33 +dqdvi134 divideint 101.0 3 -> 33 +dqdvi135 divideint 2.4 1 -> 2 +dqdvi136 divideint 2.400 1 -> 2 +dqdvi137 divideint 18 18 -> 1 +dqdvi138 divideint 1120 1000 -> 1 +dqdvi139 divideint 2.4 2 -> 1 +dqdvi140 divideint 2.400 2 -> 1 +dqdvi141 divideint 0.5 2.000 -> 0 +dqdvi142 divideint 8.005 7 -> 1 +dqdvi143 divideint 5 2 -> 2 +dqdvi144 divideint 0 2 -> 0 +dqdvi145 divideint 0.00 2 -> 0 + +-- Others +dqdvi150 divideint 12345 4.999 -> 2469 +dqdvi151 divideint 12345 4.99 -> 2473 +dqdvi152 divideint 12345 4.9 -> 2519 +dqdvi153 divideint 12345 5 -> 2469 +dqdvi154 divideint 12345 5.1 -> 2420 +dqdvi155 divideint 12345 5.01 -> 2464 +dqdvi156 divideint 12345 5.001 -> 2468 +dqdvi157 divideint 101 7.6 -> 13 + +-- Various flavours of divideint by 0 +dqdvi201 divideint 0 0 -> NaN Division_undefined +dqdvi202 divideint 0.0E5 0 -> NaN Division_undefined +dqdvi203 divideint 0.000 0 -> NaN Division_undefined +dqdvi204 divideint 0.0001 0 -> Infinity Division_by_zero +dqdvi205 divideint 0.01 0 -> Infinity Division_by_zero +dqdvi206 divideint 0.1 0 -> Infinity Division_by_zero +dqdvi207 divideint 1 0 -> Infinity Division_by_zero +dqdvi208 divideint 1 0.0 -> Infinity Division_by_zero +dqdvi209 divideint 10 0.0 -> Infinity Division_by_zero +dqdvi210 divideint 1E+100 0.0 -> Infinity Division_by_zero +dqdvi211 divideint 1E+380 0 -> Infinity Division_by_zero +dqdvi214 divideint -0.0001 0 -> -Infinity Division_by_zero +dqdvi215 divideint -0.01 0 -> -Infinity Division_by_zero +dqdvi216 divideint -0.1 0 -> -Infinity Division_by_zero +dqdvi217 divideint -1 0 -> -Infinity Division_by_zero +dqdvi218 divideint -1 0.0 -> -Infinity Division_by_zero +dqdvi219 divideint -10 0.0 -> -Infinity Division_by_zero +dqdvi220 divideint -1E+100 0.0 -> -Infinity Division_by_zero +dqdvi221 divideint -1E+380 0 -> -Infinity Division_by_zero + +-- test some cases that are close to exponent overflow +dqdvi270 divideint 1 1e384 -> 0 +dqdvi271 divideint 1 0.9e384 -> 0 +dqdvi272 divideint 1 0.99e384 -> 0 +dqdvi273 divideint 1 0.9999999999999999e384 -> 0 +dqdvi274 divideint 9e384 1 -> NaN Division_impossible +dqdvi275 divideint 9.9e384 1 -> NaN Division_impossible +dqdvi276 divideint 9.99e384 1 -> NaN Division_impossible +dqdvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible + +dqdvi280 divideint 0.1 9e-383 -> NaN Division_impossible +dqdvi281 divideint 0.1 99e-383 -> NaN Division_impossible +dqdvi282 divideint 0.1 999e-383 -> NaN Division_impossible +dqdvi283 divideint 0.1 9e-382 -> NaN Division_impossible +dqdvi284 divideint 0.1 99e-382 -> NaN Division_impossible + +-- GD edge cases: lhs smaller than rhs but more digits +dqdvi301 divideint 0.9 2 -> 0 +dqdvi302 divideint 0.9 2.0 -> 0 +dqdvi303 divideint 0.9 2.1 -> 0 +dqdvi304 divideint 0.9 2.00 -> 0 +dqdvi305 divideint 0.9 2.01 -> 0 +dqdvi306 divideint 0.12 1 -> 0 +dqdvi307 divideint 0.12 1.0 -> 0 +dqdvi308 divideint 0.12 1.00 -> 0 +dqdvi309 divideint 0.12 1.0 -> 0 +dqdvi310 divideint 0.12 1.00 -> 0 +dqdvi311 divideint 0.12 2 -> 0 +dqdvi312 divideint 0.12 2.0 -> 0 +dqdvi313 divideint 0.12 2.1 -> 0 +dqdvi314 divideint 0.12 2.00 -> 0 +dqdvi315 divideint 0.12 2.01 -> 0 + +-- edge cases of impossible +dqdvi330 divideint 1234567987654321987654321890123456 10 -> 123456798765432198765432189012345 +dqdvi331 divideint 1234567987654321987654321890123456 1 -> 1234567987654321987654321890123456 +dqdvi332 divideint 1234567987654321987654321890123456 0.1 -> NaN Division_impossible +dqdvi333 divideint 1234567987654321987654321890123456 0.01 -> NaN Division_impossible + +-- overflow and underflow tests [from divide] +dqdvi1051 divideint 1e+277 1e-311 -> NaN Division_impossible +dqdvi1052 divideint 1e+277 -1e-311 -> NaN Division_impossible +dqdvi1053 divideint -1e+277 1e-311 -> NaN Division_impossible +dqdvi1054 divideint -1e+277 -1e-311 -> NaN Division_impossible +dqdvi1055 divideint 1e-277 1e+311 -> 0 +dqdvi1056 divideint 1e-277 -1e+311 -> -0 +dqdvi1057 divideint -1e-277 1e+311 -> -0 +dqdvi1058 divideint -1e-277 -1e+311 -> 0 + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +dqdvi1060 divideint 1e-291 1e+101 -> 0 +dqdvi1061 divideint 1e-291 1e+102 -> 0 +dqdvi1062 divideint 1e-291 1e+103 -> 0 +dqdvi1063 divideint 1e-291 1e+104 -> 0 +dqdvi1064 divideint 1e-291 1e+105 -> 0 +dqdvi1065 divideint 1e-291 1e+106 -> 0 +dqdvi1066 divideint 1e-291 1e+107 -> 0 +dqdvi1067 divideint 1e-291 1e+108 -> 0 +dqdvi1068 divideint 1e-291 1e+109 -> 0 +dqdvi1069 divideint 1e-291 1e+110 -> 0 + +dqdvi1101 divideint 1.0000E-394 1 -> 0 +dqdvi1102 divideint 1.000E-394 1e+1 -> 0 +dqdvi1103 divideint 1.00E-394 1e+2 -> 0 + +dqdvi1118 divideint 1E-394 1e+4 -> 0 +dqdvi1119 divideint 3E-394 -1e+5 -> -0 +dqdvi1120 divideint 5E-394 1e+5 -> 0 + +dqdvi1124 divideint 1E-394 -1e+4 -> -0 +dqdvi1130 divideint 3.0E-394 -1e+5 -> -0 + +dqdvi1131 divideint 1.0E-199 1e+200 -> 0 +dqdvi1132 divideint 1.0E-199 1e+199 -> 0 +dqdvi1133 divideint 1.0E-199 1e+198 -> 0 +dqdvi1134 divideint 2.0E-199 2e+198 -> 0 +dqdvi1135 divideint 4.0E-199 4e+198 -> 0 + +-- long operand checks +dqdvi401 divideint 12345678000 100 -> 123456780 +dqdvi402 divideint 1 12345678000 -> 0 +dqdvi403 divideint 1234567800 10 -> 123456780 +dqdvi404 divideint 1 1234567800 -> 0 +dqdvi405 divideint 1234567890 10 -> 123456789 +dqdvi406 divideint 1 1234567890 -> 0 +dqdvi407 divideint 1234567891 10 -> 123456789 +dqdvi408 divideint 1 1234567891 -> 0 +dqdvi409 divideint 12345678901 100 -> 123456789 +dqdvi410 divideint 1 12345678901 -> 0 +dqdvi411 divideint 1234567896 10 -> 123456789 +dqdvi412 divideint 1 1234567896 -> 0 +dqdvi413 divideint 12345678948 100 -> 123456789 +dqdvi414 divideint 12345678949 100 -> 123456789 +dqdvi415 divideint 12345678950 100 -> 123456789 +dqdvi416 divideint 12345678951 100 -> 123456789 +dqdvi417 divideint 12345678999 100 -> 123456789 +dqdvi441 divideint 12345678000 1 -> 12345678000 +dqdvi442 divideint 1 12345678000 -> 0 +dqdvi443 divideint 1234567800 1 -> 1234567800 +dqdvi444 divideint 1 1234567800 -> 0 +dqdvi445 divideint 1234567890 1 -> 1234567890 +dqdvi446 divideint 1 1234567890 -> 0 +dqdvi447 divideint 1234567891 1 -> 1234567891 +dqdvi448 divideint 1 1234567891 -> 0 +dqdvi449 divideint 12345678901 1 -> 12345678901 +dqdvi450 divideint 1 12345678901 -> 0 +dqdvi451 divideint 1234567896 1 -> 1234567896 +dqdvi452 divideint 1 1234567896 -> 0 + +-- more zeros, etc. +dqdvi531 divideint 5.00 1E-3 -> 5000 +dqdvi532 divideint 00.00 0.000 -> NaN Division_undefined +dqdvi533 divideint 00.00 0E-3 -> NaN Division_undefined +dqdvi534 divideint 0 -0 -> NaN Division_undefined +dqdvi535 divideint -0 0 -> NaN Division_undefined +dqdvi536 divideint -0 -0 -> NaN Division_undefined + +dqdvi541 divideint 0 -1 -> -0 +dqdvi542 divideint -0 -1 -> 0 +dqdvi543 divideint 0 1 -> 0 +dqdvi544 divideint -0 1 -> -0 +dqdvi545 divideint -1 0 -> -Infinity Division_by_zero +dqdvi546 divideint -1 -0 -> Infinity Division_by_zero +dqdvi547 divideint 1 0 -> Infinity Division_by_zero +dqdvi548 divideint 1 -0 -> -Infinity Division_by_zero + +dqdvi551 divideint 0.0 -1 -> -0 +dqdvi552 divideint -0.0 -1 -> 0 +dqdvi553 divideint 0.0 1 -> 0 +dqdvi554 divideint -0.0 1 -> -0 +dqdvi555 divideint -1.0 0 -> -Infinity Division_by_zero +dqdvi556 divideint -1.0 -0 -> Infinity Division_by_zero +dqdvi557 divideint 1.0 0 -> Infinity Division_by_zero +dqdvi558 divideint 1.0 -0 -> -Infinity Division_by_zero + +dqdvi561 divideint 0 -1.0 -> -0 +dqdvi562 divideint -0 -1.0 -> 0 +dqdvi563 divideint 0 1.0 -> 0 +dqdvi564 divideint -0 1.0 -> -0 +dqdvi565 divideint -1 0.0 -> -Infinity Division_by_zero +dqdvi566 divideint -1 -0.0 -> Infinity Division_by_zero +dqdvi567 divideint 1 0.0 -> Infinity Division_by_zero +dqdvi568 divideint 1 -0.0 -> -Infinity Division_by_zero + +dqdvi571 divideint 0.0 -1.0 -> -0 +dqdvi572 divideint -0.0 -1.0 -> 0 +dqdvi573 divideint 0.0 1.0 -> 0 +dqdvi574 divideint -0.0 1.0 -> -0 +dqdvi575 divideint -1.0 0.0 -> -Infinity Division_by_zero +dqdvi576 divideint -1.0 -0.0 -> Infinity Division_by_zero +dqdvi577 divideint 1.0 0.0 -> Infinity Division_by_zero +dqdvi578 divideint 1.0 -0.0 -> -Infinity Division_by_zero + +-- Specials +dqdvi580 divideint Inf -Inf -> NaN Invalid_operation +dqdvi581 divideint Inf -1000 -> -Infinity +dqdvi582 divideint Inf -1 -> -Infinity +dqdvi583 divideint Inf -0 -> -Infinity +dqdvi584 divideint Inf 0 -> Infinity +dqdvi585 divideint Inf 1 -> Infinity +dqdvi586 divideint Inf 1000 -> Infinity +dqdvi587 divideint Inf Inf -> NaN Invalid_operation +dqdvi588 divideint -1000 Inf -> -0 +dqdvi589 divideint -Inf Inf -> NaN Invalid_operation +dqdvi590 divideint -1 Inf -> -0 +dqdvi591 divideint -0 Inf -> -0 +dqdvi592 divideint 0 Inf -> 0 +dqdvi593 divideint 1 Inf -> 0 +dqdvi594 divideint 1000 Inf -> 0 +dqdvi595 divideint Inf Inf -> NaN Invalid_operation + +dqdvi600 divideint -Inf -Inf -> NaN Invalid_operation +dqdvi601 divideint -Inf -1000 -> Infinity +dqdvi602 divideint -Inf -1 -> Infinity +dqdvi603 divideint -Inf -0 -> Infinity +dqdvi604 divideint -Inf 0 -> -Infinity +dqdvi605 divideint -Inf 1 -> -Infinity +dqdvi606 divideint -Inf 1000 -> -Infinity +dqdvi607 divideint -Inf Inf -> NaN Invalid_operation +dqdvi608 divideint -1000 Inf -> -0 +dqdvi609 divideint -Inf -Inf -> NaN Invalid_operation +dqdvi610 divideint -1 -Inf -> 0 +dqdvi611 divideint -0 -Inf -> 0 +dqdvi612 divideint 0 -Inf -> -0 +dqdvi613 divideint 1 -Inf -> -0 +dqdvi614 divideint 1000 -Inf -> -0 +dqdvi615 divideint Inf -Inf -> NaN Invalid_operation + +dqdvi621 divideint NaN -Inf -> NaN +dqdvi622 divideint NaN -1000 -> NaN +dqdvi623 divideint NaN -1 -> NaN +dqdvi624 divideint NaN -0 -> NaN +dqdvi625 divideint NaN 0 -> NaN +dqdvi626 divideint NaN 1 -> NaN +dqdvi627 divideint NaN 1000 -> NaN +dqdvi628 divideint NaN Inf -> NaN +dqdvi629 divideint NaN NaN -> NaN +dqdvi630 divideint -Inf NaN -> NaN +dqdvi631 divideint -1000 NaN -> NaN +dqdvi632 divideint -1 NaN -> NaN +dqdvi633 divideint -0 NaN -> NaN +dqdvi634 divideint 0 NaN -> NaN +dqdvi635 divideint 1 NaN -> NaN +dqdvi636 divideint 1000 NaN -> NaN +dqdvi637 divideint Inf NaN -> NaN + +dqdvi641 divideint sNaN -Inf -> NaN Invalid_operation +dqdvi642 divideint sNaN -1000 -> NaN Invalid_operation +dqdvi643 divideint sNaN -1 -> NaN Invalid_operation +dqdvi644 divideint sNaN -0 -> NaN Invalid_operation +dqdvi645 divideint sNaN 0 -> NaN Invalid_operation +dqdvi646 divideint sNaN 1 -> NaN Invalid_operation +dqdvi647 divideint sNaN 1000 -> NaN Invalid_operation +dqdvi648 divideint sNaN NaN -> NaN Invalid_operation +dqdvi649 divideint sNaN sNaN -> NaN Invalid_operation +dqdvi650 divideint NaN sNaN -> NaN Invalid_operation +dqdvi651 divideint -Inf sNaN -> NaN Invalid_operation +dqdvi652 divideint -1000 sNaN -> NaN Invalid_operation +dqdvi653 divideint -1 sNaN -> NaN Invalid_operation +dqdvi654 divideint -0 sNaN -> NaN Invalid_operation +dqdvi655 divideint 0 sNaN -> NaN Invalid_operation +dqdvi656 divideint 1 sNaN -> NaN Invalid_operation +dqdvi657 divideint 1000 sNaN -> NaN Invalid_operation +dqdvi658 divideint Inf sNaN -> NaN Invalid_operation +dqdvi659 divideint NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqdvi661 divideint NaN9 -Inf -> NaN9 +dqdvi662 divideint NaN8 1000 -> NaN8 +dqdvi663 divideint NaN7 Inf -> NaN7 +dqdvi664 divideint -NaN6 NaN5 -> -NaN6 +dqdvi665 divideint -Inf NaN4 -> NaN4 +dqdvi666 divideint -1000 NaN3 -> NaN3 +dqdvi667 divideint Inf -NaN2 -> -NaN2 + +dqdvi671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation +dqdvi672 divideint sNaN98 -1 -> NaN98 Invalid_operation +dqdvi673 divideint sNaN97 NaN -> NaN97 Invalid_operation +dqdvi674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation +dqdvi675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation +dqdvi676 divideint -Inf sNaN92 -> NaN92 Invalid_operation +dqdvi677 divideint 0 sNaN91 -> NaN91 Invalid_operation +dqdvi678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation +dqdvi679 divideint NaN sNaN89 -> NaN89 Invalid_operation + +-- Gyuris example +dqdvi700 divideint 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0 + +-- Null tests +dqdvi900 divideint 10 # -> NaN Invalid_operation +dqdvi901 divideint # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqEncode.decTest b/Lib/test/decimaltestdata/dqEncode.decTest index 8c5d7b9..49edf5b 100644 --- a/Lib/test/decimaltestdata/dqEncode.decTest +++ b/Lib/test/decimaltestdata/dqEncode.decTest @@ -1,477 +1,477 @@ ------------------------------------------------------------------------- --- dqEncode.decTest -- decimal sixteen-byte format testcases -- --- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- --- [Previously called decimal128.decTest] -version: 2.59 - --- This set of tests is for the sixteen-byte concrete representation. --- Its characteristics are: --- --- 1 bit sign --- 5 bits combination field --- 12 bits exponent continuation --- 110 bits coefficient continuation --- --- Total exponent length 14 bits --- Total coefficient length 114 bits (34 digits) --- --- Elimit = 12287 (maximum encoded exponent) --- Emax = 6144 (largest exponent value) --- Emin = -6143 (smallest exponent value) --- bias = 6176 (subtracted from encoded exponent) = -Etiny - --- The testcases here have only exactly representable data on the --- 'left-hand-side'; rounding from strings is tested in 'base' --- testcase groups. - -extended: 1 -clamp: 1 -precision: 34 -rounding: half_up -maxExponent: 6144 -minExponent: -6143 - --- General testcases --- (mostly derived from the Strawman 4 document and examples) -decq001 apply #A20780000000000000000000000003D0 -> -7.50 -decq002 apply -7.50 -> #A20780000000000000000000000003D0 --- derivative canonical plain strings -decq003 apply #A20840000000000000000000000003D0 -> -7.50E+3 -decq004 apply -7.50E+3 -> #A20840000000000000000000000003D0 -decq005 apply #A20800000000000000000000000003D0 -> -750 -decq006 apply -750 -> #A20800000000000000000000000003D0 -decq007 apply #A207c0000000000000000000000003D0 -> -75.0 -decq008 apply -75.0 -> #A207c0000000000000000000000003D0 -decq009 apply #A20740000000000000000000000003D0 -> -0.750 -decq010 apply -0.750 -> #A20740000000000000000000000003D0 -decq011 apply #A20700000000000000000000000003D0 -> -0.0750 -decq012 apply -0.0750 -> #A20700000000000000000000000003D0 -decq013 apply #A20680000000000000000000000003D0 -> -0.000750 -decq014 apply -0.000750 -> #A20680000000000000000000000003D0 -decq015 apply #A20600000000000000000000000003D0 -> -0.00000750 -decq016 apply -0.00000750 -> #A20600000000000000000000000003D0 -decq017 apply #A205c0000000000000000000000003D0 -> -7.50E-7 -decq018 apply -7.50E-7 -> #A205c0000000000000000000000003D0 - --- Normality -decq020 apply 1234567890123456789012345678901234 -> #2608134b9c1e28e56f3c127177823534 -decq021 apply -1234567890123456789012345678901234 -> #a608134b9c1e28e56f3c127177823534 -decq022 apply 1111111111111111111111111111111111 -> #26080912449124491244912449124491 - --- Nmax and similar -decq031 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff -decq032 apply #77ffcff3fcff3fcff3fcff3fcff3fcff -> 9.999999999999999999999999999999999E+6144 -decq033 apply 1.234567890123456789012345678901234E+6144 -> #47ffd34b9c1e28e56f3c127177823534 -decq034 apply #47ffd34b9c1e28e56f3c127177823534 -> 1.234567890123456789012345678901234E+6144 --- fold-downs (more below) -decq035 apply 1.23E+6144 -> #47ffd300000000000000000000000000 Clamped -decq036 apply #47ffd300000000000000000000000000 -> 1.230000000000000000000000000000000E+6144 -decq037 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped -decq038 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144 - -decq051 apply 12345 -> #220800000000000000000000000049c5 -decq052 apply #220800000000000000000000000049c5 -> 12345 -decq053 apply 1234 -> #22080000000000000000000000000534 -decq054 apply #22080000000000000000000000000534 -> 1234 -decq055 apply 123 -> #220800000000000000000000000000a3 -decq056 apply #220800000000000000000000000000a3 -> 123 -decq057 apply 12 -> #22080000000000000000000000000012 -decq058 apply #22080000000000000000000000000012 -> 12 -decq059 apply 1 -> #22080000000000000000000000000001 -decq060 apply #22080000000000000000000000000001 -> 1 -decq061 apply 1.23 -> #220780000000000000000000000000a3 -decq062 apply #220780000000000000000000000000a3 -> 1.23 -decq063 apply 123.45 -> #220780000000000000000000000049c5 -decq064 apply #220780000000000000000000000049c5 -> 123.45 - --- Nmin and below -decq071 apply 1E-6143 -> #00084000000000000000000000000001 -decq072 apply #00084000000000000000000000000001 -> 1E-6143 -decq073 apply 1.000000000000000000000000000000000E-6143 -> #04000000000000000000000000000000 -decq074 apply #04000000000000000000000000000000 -> 1.000000000000000000000000000000000E-6143 -decq075 apply 1.000000000000000000000000000000001E-6143 -> #04000000000000000000000000000001 -decq076 apply #04000000000000000000000000000001 -> 1.000000000000000000000000000000001E-6143 - -decq077 apply 0.100000000000000000000000000000000E-6143 -> #00000800000000000000000000000000 Subnormal -decq078 apply #00000800000000000000000000000000 -> 1.00000000000000000000000000000000E-6144 Subnormal -decq079 apply 0.000000000000000000000000000000010E-6143 -> #00000000000000000000000000000010 Subnormal -decq080 apply #00000000000000000000000000000010 -> 1.0E-6175 Subnormal -decq081 apply 0.00000000000000000000000000000001E-6143 -> #00004000000000000000000000000001 Subnormal -decq082 apply #00004000000000000000000000000001 -> 1E-6175 Subnormal -decq083 apply 0.000000000000000000000000000000001E-6143 -> #00000000000000000000000000000001 Subnormal -decq084 apply #00000000000000000000000000000001 -> 1E-6176 Subnormal - --- underflows cannot be tested for simple copies, check edge cases -decq090 apply 1e-6176 -> #00000000000000000000000000000001 Subnormal -decq100 apply 999999999999999999999999999999999e-6176 -> #00000ff3fcff3fcff3fcff3fcff3fcff Subnormal - --- same again, negatives --- Nmax and similar -decq122 apply -9.999999999999999999999999999999999E+6144 -> #f7ffcff3fcff3fcff3fcff3fcff3fcff -decq123 apply #f7ffcff3fcff3fcff3fcff3fcff3fcff -> -9.999999999999999999999999999999999E+6144 -decq124 apply -1.234567890123456789012345678901234E+6144 -> #c7ffd34b9c1e28e56f3c127177823534 -decq125 apply #c7ffd34b9c1e28e56f3c127177823534 -> -1.234567890123456789012345678901234E+6144 --- fold-downs (more below) -decq130 apply -1.23E+6144 -> #c7ffd300000000000000000000000000 Clamped -decq131 apply #c7ffd300000000000000000000000000 -> -1.230000000000000000000000000000000E+6144 -decq132 apply -1E+6144 -> #c7ffc000000000000000000000000000 Clamped -decq133 apply #c7ffc000000000000000000000000000 -> -1.000000000000000000000000000000000E+6144 - -decq151 apply -12345 -> #a20800000000000000000000000049c5 -decq152 apply #a20800000000000000000000000049c5 -> -12345 -decq153 apply -1234 -> #a2080000000000000000000000000534 -decq154 apply #a2080000000000000000000000000534 -> -1234 -decq155 apply -123 -> #a20800000000000000000000000000a3 -decq156 apply #a20800000000000000000000000000a3 -> -123 -decq157 apply -12 -> #a2080000000000000000000000000012 -decq158 apply #a2080000000000000000000000000012 -> -12 -decq159 apply -1 -> #a2080000000000000000000000000001 -decq160 apply #a2080000000000000000000000000001 -> -1 -decq161 apply -1.23 -> #a20780000000000000000000000000a3 -decq162 apply #a20780000000000000000000000000a3 -> -1.23 -decq163 apply -123.45 -> #a20780000000000000000000000049c5 -decq164 apply #a20780000000000000000000000049c5 -> -123.45 - --- Nmin and below -decq171 apply -1E-6143 -> #80084000000000000000000000000001 -decq172 apply #80084000000000000000000000000001 -> -1E-6143 -decq173 apply -1.000000000000000000000000000000000E-6143 -> #84000000000000000000000000000000 -decq174 apply #84000000000000000000000000000000 -> -1.000000000000000000000000000000000E-6143 -decq175 apply -1.000000000000000000000000000000001E-6143 -> #84000000000000000000000000000001 -decq176 apply #84000000000000000000000000000001 -> -1.000000000000000000000000000000001E-6143 - -decq177 apply -0.100000000000000000000000000000000E-6143 -> #80000800000000000000000000000000 Subnormal -decq178 apply #80000800000000000000000000000000 -> -1.00000000000000000000000000000000E-6144 Subnormal -decq179 apply -0.000000000000000000000000000000010E-6143 -> #80000000000000000000000000000010 Subnormal -decq180 apply #80000000000000000000000000000010 -> -1.0E-6175 Subnormal -decq181 apply -0.00000000000000000000000000000001E-6143 -> #80004000000000000000000000000001 Subnormal -decq182 apply #80004000000000000000000000000001 -> -1E-6175 Subnormal -decq183 apply -0.000000000000000000000000000000001E-6143 -> #80000000000000000000000000000001 Subnormal -decq184 apply #80000000000000000000000000000001 -> -1E-6176 Subnormal - --- underflow edge cases -decq190 apply -1e-6176 -> #80000000000000000000000000000001 Subnormal -decq200 apply -999999999999999999999999999999999e-6176 -> #80000ff3fcff3fcff3fcff3fcff3fcff Subnormal - --- zeros -decq400 apply 0E-8000 -> #00000000000000000000000000000000 Clamped -decq401 apply 0E-6177 -> #00000000000000000000000000000000 Clamped -decq402 apply 0E-6176 -> #00000000000000000000000000000000 -decq403 apply #00000000000000000000000000000000 -> 0E-6176 -decq404 apply 0.000000000000000000000000000000000E-6143 -> #00000000000000000000000000000000 -decq405 apply #00000000000000000000000000000000 -> 0E-6176 -decq406 apply 0E-2 -> #22078000000000000000000000000000 -decq407 apply #22078000000000000000000000000000 -> 0.00 -decq408 apply 0 -> #22080000000000000000000000000000 -decq409 apply #22080000000000000000000000000000 -> 0 -decq410 apply 0E+3 -> #2208c000000000000000000000000000 -decq411 apply #2208c000000000000000000000000000 -> 0E+3 -decq412 apply 0E+6111 -> #43ffc000000000000000000000000000 -decq413 apply #43ffc000000000000000000000000000 -> 0E+6111 --- clamped zeros... -decq414 apply 0E+6112 -> #43ffc000000000000000000000000000 Clamped -decq415 apply #43ffc000000000000000000000000000 -> 0E+6111 -decq416 apply 0E+6144 -> #43ffc000000000000000000000000000 Clamped -decq417 apply #43ffc000000000000000000000000000 -> 0E+6111 -decq418 apply 0E+8000 -> #43ffc000000000000000000000000000 Clamped -decq419 apply #43ffc000000000000000000000000000 -> 0E+6111 - --- negative zeros -decq420 apply -0E-8000 -> #80000000000000000000000000000000 Clamped -decq421 apply -0E-6177 -> #80000000000000000000000000000000 Clamped -decq422 apply -0E-6176 -> #80000000000000000000000000000000 -decq423 apply #80000000000000000000000000000000 -> -0E-6176 -decq424 apply -0.000000000000000000000000000000000E-6143 -> #80000000000000000000000000000000 -decq425 apply #80000000000000000000000000000000 -> -0E-6176 -decq426 apply -0E-2 -> #a2078000000000000000000000000000 -decq427 apply #a2078000000000000000000000000000 -> -0.00 -decq428 apply -0 -> #a2080000000000000000000000000000 -decq429 apply #a2080000000000000000000000000000 -> -0 -decq430 apply -0E+3 -> #a208c000000000000000000000000000 -decq431 apply #a208c000000000000000000000000000 -> -0E+3 -decq432 apply -0E+6111 -> #c3ffc000000000000000000000000000 -decq433 apply #c3ffc000000000000000000000000000 -> -0E+6111 --- clamped zeros... -decq434 apply -0E+6112 -> #c3ffc000000000000000000000000000 Clamped -decq435 apply #c3ffc000000000000000000000000000 -> -0E+6111 -decq436 apply -0E+6144 -> #c3ffc000000000000000000000000000 Clamped -decq437 apply #c3ffc000000000000000000000000000 -> -0E+6111 -decq438 apply -0E+8000 -> #c3ffc000000000000000000000000000 Clamped -decq439 apply #c3ffc000000000000000000000000000 -> -0E+6111 - --- exponent lengths -decq440 apply #22080000000000000000000000000007 -> 7 -decq441 apply 7 -> #22080000000000000000000000000007 -decq442 apply #220a4000000000000000000000000007 -> 7E+9 -decq443 apply 7E+9 -> #220a4000000000000000000000000007 -decq444 apply #2220c000000000000000000000000007 -> 7E+99 -decq445 apply 7E+99 -> #2220c000000000000000000000000007 -decq446 apply #2301c000000000000000000000000007 -> 7E+999 -decq447 apply 7E+999 -> #2301c000000000000000000000000007 -decq448 apply #43e3c000000000000000000000000007 -> 7E+5999 -decq449 apply 7E+5999 -> #43e3c000000000000000000000000007 - --- Specials -decq500 apply Infinity -> #78000000000000000000000000000000 -decq501 apply #78787878787878787878787878787878 -> #78000000000000000000000000000000 -decq502 apply #78000000000000000000000000000000 -> Infinity -decq503 apply #79797979797979797979797979797979 -> #78000000000000000000000000000000 -decq504 apply #79000000000000000000000000000000 -> Infinity -decq505 apply #7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #78000000000000000000000000000000 -decq506 apply #7a000000000000000000000000000000 -> Infinity -decq507 apply #7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #78000000000000000000000000000000 -decq508 apply #7b000000000000000000000000000000 -> Infinity - -decq509 apply NaN -> #7c000000000000000000000000000000 -decq510 apply #7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #7c003c7c7c7c7c7c7c7c7c7c7c7c7c7c -decq511 apply #7c000000000000000000000000000000 -> NaN -decq512 apply #7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #7c003d7d7d7d7d7d7d7d7d7d7d7d7d7d -decq513 apply #7d000000000000000000000000000000 -> NaN -decq514 apply #7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #7e003e7e7c7e7e7e7e7c7e7e7e7e7c7e -decq515 apply #7e000000000000000000000000000000 -> sNaN -decq516 apply #7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #7e003f7f7c7f7f7f7f7c7f7f7f7f7c7f -decq517 apply #7f000000000000000000000000000000 -> sNaN -decq518 apply #7fffffffffffffffffffffffffffffff -> sNaN999999999999999999999999999999999 -decq519 apply #7fffffffffffffffffffffffffffffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff - -decq520 apply -Infinity -> #f8000000000000000000000000000000 -decq521 apply #f8787878787878787878787878787878 -> #f8000000000000000000000000000000 -decq522 apply #f8000000000000000000000000000000 -> -Infinity -decq523 apply #f9797979797979797979797979797979 -> #f8000000000000000000000000000000 -decq524 apply #f9000000000000000000000000000000 -> -Infinity -decq525 apply #fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #f8000000000000000000000000000000 -decq526 apply #fa000000000000000000000000000000 -> -Infinity -decq527 apply #fb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #f8000000000000000000000000000000 -decq528 apply #fb000000000000000000000000000000 -> -Infinity - -decq529 apply -NaN -> #fc000000000000000000000000000000 -decq530 apply #fc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #fc003c7c7c7c7c7c7c7c7c7c7c7c7c7c -decq531 apply #fc000000000000000000000000000000 -> -NaN -decq532 apply #fd7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #fc003d7d7d7d7d7d7d7d7d7d7d7d7d7d -decq533 apply #fd000000000000000000000000000000 -> -NaN -decq534 apply #fe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #fe003e7e7c7e7e7e7e7c7e7e7e7e7c7e -decq535 apply #fe000000000000000000000000000000 -> -sNaN -decq536 apply #ff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #fe003f7f7c7f7f7f7f7c7f7f7f7f7c7f -decq537 apply #ff000000000000000000000000000000 -> -sNaN -decq538 apply #ffffffffffffffffffffffffffffffff -> -sNaN999999999999999999999999999999999 -decq539 apply #ffffffffffffffffffffffffffffffff -> #fe000ff3fcff3fcff3fcff3fcff3fcff - -decq540 apply NaN -> #7c000000000000000000000000000000 -decq541 apply NaN0 -> #7c000000000000000000000000000000 -decq542 apply NaN1 -> #7c000000000000000000000000000001 -decq543 apply NaN12 -> #7c000000000000000000000000000012 -decq544 apply NaN79 -> #7c000000000000000000000000000079 -decq545 apply NaN12345 -> #7c0000000000000000000000000049c5 -decq546 apply NaN123456 -> #7c000000000000000000000000028e56 -decq547 apply NaN799799 -> #7c0000000000000000000000000f7fdf -decq548 apply NaN799799799799799799799799799799799 -> #7c003dff7fdff7fdff7fdff7fdff7fdf -decq549 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -decq550 apply 9999999999999999999999999999999999 -> #6e080ff3fcff3fcff3fcff3fcff3fcff - --- fold-down full sequence -decq601 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped -decq602 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144 -decq603 apply 1E+6143 -> #43ffc800000000000000000000000000 Clamped -decq604 apply #43ffc800000000000000000000000000 -> 1.00000000000000000000000000000000E+6143 -decq605 apply 1E+6142 -> #43ffc100000000000000000000000000 Clamped -decq606 apply #43ffc100000000000000000000000000 -> 1.0000000000000000000000000000000E+6142 -decq607 apply 1E+6141 -> #43ffc010000000000000000000000000 Clamped -decq608 apply #43ffc010000000000000000000000000 -> 1.000000000000000000000000000000E+6141 -decq609 apply 1E+6140 -> #43ffc002000000000000000000000000 Clamped -decq610 apply #43ffc002000000000000000000000000 -> 1.00000000000000000000000000000E+6140 -decq611 apply 1E+6139 -> #43ffc000400000000000000000000000 Clamped -decq612 apply #43ffc000400000000000000000000000 -> 1.0000000000000000000000000000E+6139 -decq613 apply 1E+6138 -> #43ffc000040000000000000000000000 Clamped -decq614 apply #43ffc000040000000000000000000000 -> 1.000000000000000000000000000E+6138 -decq615 apply 1E+6137 -> #43ffc000008000000000000000000000 Clamped -decq616 apply #43ffc000008000000000000000000000 -> 1.00000000000000000000000000E+6137 -decq617 apply 1E+6136 -> #43ffc000001000000000000000000000 Clamped -decq618 apply #43ffc000001000000000000000000000 -> 1.0000000000000000000000000E+6136 -decq619 apply 1E+6135 -> #43ffc000000100000000000000000000 Clamped -decq620 apply #43ffc000000100000000000000000000 -> 1.000000000000000000000000E+6135 -decq621 apply 1E+6134 -> #43ffc000000020000000000000000000 Clamped -decq622 apply #43ffc000000020000000000000000000 -> 1.00000000000000000000000E+6134 -decq623 apply 1E+6133 -> #43ffc000000004000000000000000000 Clamped -decq624 apply #43ffc000000004000000000000000000 -> 1.0000000000000000000000E+6133 -decq625 apply 1E+6132 -> #43ffc000000000400000000000000000 Clamped -decq626 apply #43ffc000000000400000000000000000 -> 1.000000000000000000000E+6132 -decq627 apply 1E+6131 -> #43ffc000000000080000000000000000 Clamped -decq628 apply #43ffc000000000080000000000000000 -> 1.00000000000000000000E+6131 -decq629 apply 1E+6130 -> #43ffc000000000010000000000000000 Clamped -decq630 apply #43ffc000000000010000000000000000 -> 1.0000000000000000000E+6130 -decq631 apply 1E+6129 -> #43ffc000000000001000000000000000 Clamped -decq632 apply #43ffc000000000001000000000000000 -> 1.000000000000000000E+6129 -decq633 apply 1E+6128 -> #43ffc000000000000200000000000000 Clamped -decq634 apply #43ffc000000000000200000000000000 -> 1.00000000000000000E+6128 -decq635 apply 1E+6127 -> #43ffc000000000000040000000000000 Clamped -decq636 apply #43ffc000000000000040000000000000 -> 1.0000000000000000E+6127 -decq637 apply 1E+6126 -> #43ffc000000000000004000000000000 Clamped -decq638 apply #43ffc000000000000004000000000000 -> 1.000000000000000E+6126 -decq639 apply 1E+6125 -> #43ffc000000000000000800000000000 Clamped -decq640 apply #43ffc000000000000000800000000000 -> 1.00000000000000E+6125 -decq641 apply 1E+6124 -> #43ffc000000000000000100000000000 Clamped -decq642 apply #43ffc000000000000000100000000000 -> 1.0000000000000E+6124 -decq643 apply 1E+6123 -> #43ffc000000000000000010000000000 Clamped -decq644 apply #43ffc000000000000000010000000000 -> 1.000000000000E+6123 -decq645 apply 1E+6122 -> #43ffc000000000000000002000000000 Clamped -decq646 apply #43ffc000000000000000002000000000 -> 1.00000000000E+6122 -decq647 apply 1E+6121 -> #43ffc000000000000000000400000000 Clamped -decq648 apply #43ffc000000000000000000400000000 -> 1.0000000000E+6121 -decq649 apply 1E+6120 -> #43ffc000000000000000000040000000 Clamped -decq650 apply #43ffc000000000000000000040000000 -> 1.000000000E+6120 -decq651 apply 1E+6119 -> #43ffc000000000000000000008000000 Clamped -decq652 apply #43ffc000000000000000000008000000 -> 1.00000000E+6119 -decq653 apply 1E+6118 -> #43ffc000000000000000000001000000 Clamped -decq654 apply #43ffc000000000000000000001000000 -> 1.0000000E+6118 -decq655 apply 1E+6117 -> #43ffc000000000000000000000100000 Clamped -decq656 apply #43ffc000000000000000000000100000 -> 1.000000E+6117 -decq657 apply 1E+6116 -> #43ffc000000000000000000000020000 Clamped -decq658 apply #43ffc000000000000000000000020000 -> 1.00000E+6116 -decq659 apply 1E+6115 -> #43ffc000000000000000000000004000 Clamped -decq660 apply #43ffc000000000000000000000004000 -> 1.0000E+6115 -decq661 apply 1E+6114 -> #43ffc000000000000000000000000400 Clamped -decq662 apply #43ffc000000000000000000000000400 -> 1.000E+6114 -decq663 apply 1E+6113 -> #43ffc000000000000000000000000080 Clamped -decq664 apply #43ffc000000000000000000000000080 -> 1.00E+6113 -decq665 apply 1E+6112 -> #43ffc000000000000000000000000010 Clamped -decq666 apply #43ffc000000000000000000000000010 -> 1.0E+6112 -decq667 apply 1E+6111 -> #43ffc000000000000000000000000001 -decq668 apply #43ffc000000000000000000000000001 -> 1E+6111 -decq669 apply 1E+6110 -> #43ff8000000000000000000000000001 -decq670 apply #43ff8000000000000000000000000001 -> 1E+6110 - --- Selected DPD codes -decq700 apply #22080000000000000000000000000000 -> 0 -decq701 apply #22080000000000000000000000000009 -> 9 -decq702 apply #22080000000000000000000000000010 -> 10 -decq703 apply #22080000000000000000000000000019 -> 19 -decq704 apply #22080000000000000000000000000020 -> 20 -decq705 apply #22080000000000000000000000000029 -> 29 -decq706 apply #22080000000000000000000000000030 -> 30 -decq707 apply #22080000000000000000000000000039 -> 39 -decq708 apply #22080000000000000000000000000040 -> 40 -decq709 apply #22080000000000000000000000000049 -> 49 -decq710 apply #22080000000000000000000000000050 -> 50 -decq711 apply #22080000000000000000000000000059 -> 59 -decq712 apply #22080000000000000000000000000060 -> 60 -decq713 apply #22080000000000000000000000000069 -> 69 -decq714 apply #22080000000000000000000000000070 -> 70 -decq715 apply #22080000000000000000000000000071 -> 71 -decq716 apply #22080000000000000000000000000072 -> 72 -decq717 apply #22080000000000000000000000000073 -> 73 -decq718 apply #22080000000000000000000000000074 -> 74 -decq719 apply #22080000000000000000000000000075 -> 75 -decq720 apply #22080000000000000000000000000076 -> 76 -decq721 apply #22080000000000000000000000000077 -> 77 -decq722 apply #22080000000000000000000000000078 -> 78 -decq723 apply #22080000000000000000000000000079 -> 79 - -decq730 apply #2208000000000000000000000000029e -> 994 -decq731 apply #2208000000000000000000000000029f -> 995 -decq732 apply #220800000000000000000000000002a0 -> 520 -decq733 apply #220800000000000000000000000002a1 -> 521 - --- DPD: one of each of the huffman groups -decq740 apply #220800000000000000000000000003f7 -> 777 -decq741 apply #220800000000000000000000000003f8 -> 778 -decq742 apply #220800000000000000000000000003eb -> 787 -decq743 apply #2208000000000000000000000000037d -> 877 -decq744 apply #2208000000000000000000000000039f -> 997 -decq745 apply #220800000000000000000000000003bf -> 979 -decq746 apply #220800000000000000000000000003df -> 799 -decq747 apply #2208000000000000000000000000006e -> 888 - - --- DPD all-highs cases (includes the 24 redundant codes) -decq750 apply #2208000000000000000000000000006e -> 888 -decq751 apply #2208000000000000000000000000016e -> 888 -decq752 apply #2208000000000000000000000000026e -> 888 -decq753 apply #2208000000000000000000000000036e -> 888 -decq754 apply #2208000000000000000000000000006f -> 889 -decq755 apply #2208000000000000000000000000016f -> 889 -decq756 apply #2208000000000000000000000000026f -> 889 -decq757 apply #2208000000000000000000000000036f -> 889 - -decq760 apply #2208000000000000000000000000007e -> 898 -decq761 apply #2208000000000000000000000000017e -> 898 -decq762 apply #2208000000000000000000000000027e -> 898 -decq763 apply #2208000000000000000000000000037e -> 898 -decq764 apply #2208000000000000000000000000007f -> 899 -decq765 apply #2208000000000000000000000000017f -> 899 -decq766 apply #2208000000000000000000000000027f -> 899 -decq767 apply #2208000000000000000000000000037f -> 899 - -decq770 apply #220800000000000000000000000000ee -> 988 -decq771 apply #220800000000000000000000000001ee -> 988 -decq772 apply #220800000000000000000000000002ee -> 988 -decq773 apply #220800000000000000000000000003ee -> 988 -decq774 apply #220800000000000000000000000000ef -> 989 -decq775 apply #220800000000000000000000000001ef -> 989 -decq776 apply #220800000000000000000000000002ef -> 989 -decq777 apply #220800000000000000000000000003ef -> 989 - -decq780 apply #220800000000000000000000000000fe -> 998 -decq781 apply #220800000000000000000000000001fe -> 998 -decq782 apply #220800000000000000000000000002fe -> 998 -decq783 apply #220800000000000000000000000003fe -> 998 -decq784 apply #220800000000000000000000000000ff -> 999 -decq785 apply #220800000000000000000000000001ff -> 999 -decq786 apply #220800000000000000000000000002ff -> 999 -decq787 apply #220800000000000000000000000003ff -> 999 - --- Miscellaneous (testers' queries, etc.) - -decq790 apply #2208000000000000000000000000c000 -> 30000 -decq791 apply #22080000000000000000000000007800 -> 890000 -decq792 apply 30000 -> #2208000000000000000000000000c000 -decq793 apply 890000 -> #22080000000000000000000000007800 - --- values around [u]int32 edges (zeros done earlier) -decq800 apply -2147483646 -> #a208000000000000000000008c78af46 -decq801 apply -2147483647 -> #a208000000000000000000008c78af47 -decq802 apply -2147483648 -> #a208000000000000000000008c78af48 -decq803 apply -2147483649 -> #a208000000000000000000008c78af49 -decq804 apply 2147483646 -> #2208000000000000000000008c78af46 -decq805 apply 2147483647 -> #2208000000000000000000008c78af47 -decq806 apply 2147483648 -> #2208000000000000000000008c78af48 -decq807 apply 2147483649 -> #2208000000000000000000008c78af49 -decq808 apply 4294967294 -> #22080000000000000000000115afb55a -decq809 apply 4294967295 -> #22080000000000000000000115afb55b -decq810 apply 4294967296 -> #22080000000000000000000115afb57a -decq811 apply 4294967297 -> #22080000000000000000000115afb57b - -decq820 apply #a208000000000000000000008c78af46 -> -2147483646 -decq821 apply #a208000000000000000000008c78af47 -> -2147483647 -decq822 apply #a208000000000000000000008c78af48 -> -2147483648 -decq823 apply #a208000000000000000000008c78af49 -> -2147483649 -decq824 apply #2208000000000000000000008c78af46 -> 2147483646 -decq825 apply #2208000000000000000000008c78af47 -> 2147483647 -decq826 apply #2208000000000000000000008c78af48 -> 2147483648 -decq827 apply #2208000000000000000000008c78af49 -> 2147483649 -decq828 apply #22080000000000000000000115afb55a -> 4294967294 -decq829 apply #22080000000000000000000115afb55b -> 4294967295 -decq830 apply #22080000000000000000000115afb57a -> 4294967296 -decq831 apply #22080000000000000000000115afb57b -> 4294967297 - --- VG testcase -decq840 apply #2080000000000000F294000000172636 -> 8.81125000000001349436E-1548 -decq841 apply #20800000000000008000000000000000 -> 8.000000000000000000E-1550 -decq842 apply #1EF98490000000010F6E4E0000000000 -> 7.049000000000010795488000000000000E-3097 -decq843 multiply #20800000000000008000000000000000 #2080000000000000F294000000172636 -> #1EF98490000000010F6E4E0000000000 Rounded - +------------------------------------------------------------------------ +-- dqEncode.decTest -- decimal sixteen-byte format testcases -- +-- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +-- [Previously called decimal128.decTest] +version: 2.59 + +-- This set of tests is for the sixteen-byte concrete representation. +-- Its characteristics are: +-- +-- 1 bit sign +-- 5 bits combination field +-- 12 bits exponent continuation +-- 110 bits coefficient continuation +-- +-- Total exponent length 14 bits +-- Total coefficient length 114 bits (34 digits) +-- +-- Elimit = 12287 (maximum encoded exponent) +-- Emax = 6144 (largest exponent value) +-- Emin = -6143 (smallest exponent value) +-- bias = 6176 (subtracted from encoded exponent) = -Etiny + +-- The testcases here have only exactly representable data on the +-- 'left-hand-side'; rounding from strings is tested in 'base' +-- testcase groups. + +extended: 1 +clamp: 1 +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 + +-- General testcases +-- (mostly derived from the Strawman 4 document and examples) +decq001 apply #A20780000000000000000000000003D0 -> -7.50 +decq002 apply -7.50 -> #A20780000000000000000000000003D0 +-- derivative canonical plain strings +decq003 apply #A20840000000000000000000000003D0 -> -7.50E+3 +decq004 apply -7.50E+3 -> #A20840000000000000000000000003D0 +decq005 apply #A20800000000000000000000000003D0 -> -750 +decq006 apply -750 -> #A20800000000000000000000000003D0 +decq007 apply #A207c0000000000000000000000003D0 -> -75.0 +decq008 apply -75.0 -> #A207c0000000000000000000000003D0 +decq009 apply #A20740000000000000000000000003D0 -> -0.750 +decq010 apply -0.750 -> #A20740000000000000000000000003D0 +decq011 apply #A20700000000000000000000000003D0 -> -0.0750 +decq012 apply -0.0750 -> #A20700000000000000000000000003D0 +decq013 apply #A20680000000000000000000000003D0 -> -0.000750 +decq014 apply -0.000750 -> #A20680000000000000000000000003D0 +decq015 apply #A20600000000000000000000000003D0 -> -0.00000750 +decq016 apply -0.00000750 -> #A20600000000000000000000000003D0 +decq017 apply #A205c0000000000000000000000003D0 -> -7.50E-7 +decq018 apply -7.50E-7 -> #A205c0000000000000000000000003D0 + +-- Normality +decq020 apply 1234567890123456789012345678901234 -> #2608134b9c1e28e56f3c127177823534 +decq021 apply -1234567890123456789012345678901234 -> #a608134b9c1e28e56f3c127177823534 +decq022 apply 1111111111111111111111111111111111 -> #26080912449124491244912449124491 + +-- Nmax and similar +decq031 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff +decq032 apply #77ffcff3fcff3fcff3fcff3fcff3fcff -> 9.999999999999999999999999999999999E+6144 +decq033 apply 1.234567890123456789012345678901234E+6144 -> #47ffd34b9c1e28e56f3c127177823534 +decq034 apply #47ffd34b9c1e28e56f3c127177823534 -> 1.234567890123456789012345678901234E+6144 +-- fold-downs (more below) +decq035 apply 1.23E+6144 -> #47ffd300000000000000000000000000 Clamped +decq036 apply #47ffd300000000000000000000000000 -> 1.230000000000000000000000000000000E+6144 +decq037 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped +decq038 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144 + +decq051 apply 12345 -> #220800000000000000000000000049c5 +decq052 apply #220800000000000000000000000049c5 -> 12345 +decq053 apply 1234 -> #22080000000000000000000000000534 +decq054 apply #22080000000000000000000000000534 -> 1234 +decq055 apply 123 -> #220800000000000000000000000000a3 +decq056 apply #220800000000000000000000000000a3 -> 123 +decq057 apply 12 -> #22080000000000000000000000000012 +decq058 apply #22080000000000000000000000000012 -> 12 +decq059 apply 1 -> #22080000000000000000000000000001 +decq060 apply #22080000000000000000000000000001 -> 1 +decq061 apply 1.23 -> #220780000000000000000000000000a3 +decq062 apply #220780000000000000000000000000a3 -> 1.23 +decq063 apply 123.45 -> #220780000000000000000000000049c5 +decq064 apply #220780000000000000000000000049c5 -> 123.45 + +-- Nmin and below +decq071 apply 1E-6143 -> #00084000000000000000000000000001 +decq072 apply #00084000000000000000000000000001 -> 1E-6143 +decq073 apply 1.000000000000000000000000000000000E-6143 -> #04000000000000000000000000000000 +decq074 apply #04000000000000000000000000000000 -> 1.000000000000000000000000000000000E-6143 +decq075 apply 1.000000000000000000000000000000001E-6143 -> #04000000000000000000000000000001 +decq076 apply #04000000000000000000000000000001 -> 1.000000000000000000000000000000001E-6143 + +decq077 apply 0.100000000000000000000000000000000E-6143 -> #00000800000000000000000000000000 Subnormal +decq078 apply #00000800000000000000000000000000 -> 1.00000000000000000000000000000000E-6144 Subnormal +decq079 apply 0.000000000000000000000000000000010E-6143 -> #00000000000000000000000000000010 Subnormal +decq080 apply #00000000000000000000000000000010 -> 1.0E-6175 Subnormal +decq081 apply 0.00000000000000000000000000000001E-6143 -> #00004000000000000000000000000001 Subnormal +decq082 apply #00004000000000000000000000000001 -> 1E-6175 Subnormal +decq083 apply 0.000000000000000000000000000000001E-6143 -> #00000000000000000000000000000001 Subnormal +decq084 apply #00000000000000000000000000000001 -> 1E-6176 Subnormal + +-- underflows cannot be tested for simple copies, check edge cases +decq090 apply 1e-6176 -> #00000000000000000000000000000001 Subnormal +decq100 apply 999999999999999999999999999999999e-6176 -> #00000ff3fcff3fcff3fcff3fcff3fcff Subnormal + +-- same again, negatives +-- Nmax and similar +decq122 apply -9.999999999999999999999999999999999E+6144 -> #f7ffcff3fcff3fcff3fcff3fcff3fcff +decq123 apply #f7ffcff3fcff3fcff3fcff3fcff3fcff -> -9.999999999999999999999999999999999E+6144 +decq124 apply -1.234567890123456789012345678901234E+6144 -> #c7ffd34b9c1e28e56f3c127177823534 +decq125 apply #c7ffd34b9c1e28e56f3c127177823534 -> -1.234567890123456789012345678901234E+6144 +-- fold-downs (more below) +decq130 apply -1.23E+6144 -> #c7ffd300000000000000000000000000 Clamped +decq131 apply #c7ffd300000000000000000000000000 -> -1.230000000000000000000000000000000E+6144 +decq132 apply -1E+6144 -> #c7ffc000000000000000000000000000 Clamped +decq133 apply #c7ffc000000000000000000000000000 -> -1.000000000000000000000000000000000E+6144 + +decq151 apply -12345 -> #a20800000000000000000000000049c5 +decq152 apply #a20800000000000000000000000049c5 -> -12345 +decq153 apply -1234 -> #a2080000000000000000000000000534 +decq154 apply #a2080000000000000000000000000534 -> -1234 +decq155 apply -123 -> #a20800000000000000000000000000a3 +decq156 apply #a20800000000000000000000000000a3 -> -123 +decq157 apply -12 -> #a2080000000000000000000000000012 +decq158 apply #a2080000000000000000000000000012 -> -12 +decq159 apply -1 -> #a2080000000000000000000000000001 +decq160 apply #a2080000000000000000000000000001 -> -1 +decq161 apply -1.23 -> #a20780000000000000000000000000a3 +decq162 apply #a20780000000000000000000000000a3 -> -1.23 +decq163 apply -123.45 -> #a20780000000000000000000000049c5 +decq164 apply #a20780000000000000000000000049c5 -> -123.45 + +-- Nmin and below +decq171 apply -1E-6143 -> #80084000000000000000000000000001 +decq172 apply #80084000000000000000000000000001 -> -1E-6143 +decq173 apply -1.000000000000000000000000000000000E-6143 -> #84000000000000000000000000000000 +decq174 apply #84000000000000000000000000000000 -> -1.000000000000000000000000000000000E-6143 +decq175 apply -1.000000000000000000000000000000001E-6143 -> #84000000000000000000000000000001 +decq176 apply #84000000000000000000000000000001 -> -1.000000000000000000000000000000001E-6143 + +decq177 apply -0.100000000000000000000000000000000E-6143 -> #80000800000000000000000000000000 Subnormal +decq178 apply #80000800000000000000000000000000 -> -1.00000000000000000000000000000000E-6144 Subnormal +decq179 apply -0.000000000000000000000000000000010E-6143 -> #80000000000000000000000000000010 Subnormal +decq180 apply #80000000000000000000000000000010 -> -1.0E-6175 Subnormal +decq181 apply -0.00000000000000000000000000000001E-6143 -> #80004000000000000000000000000001 Subnormal +decq182 apply #80004000000000000000000000000001 -> -1E-6175 Subnormal +decq183 apply -0.000000000000000000000000000000001E-6143 -> #80000000000000000000000000000001 Subnormal +decq184 apply #80000000000000000000000000000001 -> -1E-6176 Subnormal + +-- underflow edge cases +decq190 apply -1e-6176 -> #80000000000000000000000000000001 Subnormal +decq200 apply -999999999999999999999999999999999e-6176 -> #80000ff3fcff3fcff3fcff3fcff3fcff Subnormal + +-- zeros +decq400 apply 0E-8000 -> #00000000000000000000000000000000 Clamped +decq401 apply 0E-6177 -> #00000000000000000000000000000000 Clamped +decq402 apply 0E-6176 -> #00000000000000000000000000000000 +decq403 apply #00000000000000000000000000000000 -> 0E-6176 +decq404 apply 0.000000000000000000000000000000000E-6143 -> #00000000000000000000000000000000 +decq405 apply #00000000000000000000000000000000 -> 0E-6176 +decq406 apply 0E-2 -> #22078000000000000000000000000000 +decq407 apply #22078000000000000000000000000000 -> 0.00 +decq408 apply 0 -> #22080000000000000000000000000000 +decq409 apply #22080000000000000000000000000000 -> 0 +decq410 apply 0E+3 -> #2208c000000000000000000000000000 +decq411 apply #2208c000000000000000000000000000 -> 0E+3 +decq412 apply 0E+6111 -> #43ffc000000000000000000000000000 +decq413 apply #43ffc000000000000000000000000000 -> 0E+6111 +-- clamped zeros... +decq414 apply 0E+6112 -> #43ffc000000000000000000000000000 Clamped +decq415 apply #43ffc000000000000000000000000000 -> 0E+6111 +decq416 apply 0E+6144 -> #43ffc000000000000000000000000000 Clamped +decq417 apply #43ffc000000000000000000000000000 -> 0E+6111 +decq418 apply 0E+8000 -> #43ffc000000000000000000000000000 Clamped +decq419 apply #43ffc000000000000000000000000000 -> 0E+6111 + +-- negative zeros +decq420 apply -0E-8000 -> #80000000000000000000000000000000 Clamped +decq421 apply -0E-6177 -> #80000000000000000000000000000000 Clamped +decq422 apply -0E-6176 -> #80000000000000000000000000000000 +decq423 apply #80000000000000000000000000000000 -> -0E-6176 +decq424 apply -0.000000000000000000000000000000000E-6143 -> #80000000000000000000000000000000 +decq425 apply #80000000000000000000000000000000 -> -0E-6176 +decq426 apply -0E-2 -> #a2078000000000000000000000000000 +decq427 apply #a2078000000000000000000000000000 -> -0.00 +decq428 apply -0 -> #a2080000000000000000000000000000 +decq429 apply #a2080000000000000000000000000000 -> -0 +decq430 apply -0E+3 -> #a208c000000000000000000000000000 +decq431 apply #a208c000000000000000000000000000 -> -0E+3 +decq432 apply -0E+6111 -> #c3ffc000000000000000000000000000 +decq433 apply #c3ffc000000000000000000000000000 -> -0E+6111 +-- clamped zeros... +decq434 apply -0E+6112 -> #c3ffc000000000000000000000000000 Clamped +decq435 apply #c3ffc000000000000000000000000000 -> -0E+6111 +decq436 apply -0E+6144 -> #c3ffc000000000000000000000000000 Clamped +decq437 apply #c3ffc000000000000000000000000000 -> -0E+6111 +decq438 apply -0E+8000 -> #c3ffc000000000000000000000000000 Clamped +decq439 apply #c3ffc000000000000000000000000000 -> -0E+6111 + +-- exponent lengths +decq440 apply #22080000000000000000000000000007 -> 7 +decq441 apply 7 -> #22080000000000000000000000000007 +decq442 apply #220a4000000000000000000000000007 -> 7E+9 +decq443 apply 7E+9 -> #220a4000000000000000000000000007 +decq444 apply #2220c000000000000000000000000007 -> 7E+99 +decq445 apply 7E+99 -> #2220c000000000000000000000000007 +decq446 apply #2301c000000000000000000000000007 -> 7E+999 +decq447 apply 7E+999 -> #2301c000000000000000000000000007 +decq448 apply #43e3c000000000000000000000000007 -> 7E+5999 +decq449 apply 7E+5999 -> #43e3c000000000000000000000000007 + +-- Specials +decq500 apply Infinity -> #78000000000000000000000000000000 +decq501 apply #78787878787878787878787878787878 -> #78000000000000000000000000000000 +decq502 apply #78000000000000000000000000000000 -> Infinity +decq503 apply #79797979797979797979797979797979 -> #78000000000000000000000000000000 +decq504 apply #79000000000000000000000000000000 -> Infinity +decq505 apply #7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #78000000000000000000000000000000 +decq506 apply #7a000000000000000000000000000000 -> Infinity +decq507 apply #7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #78000000000000000000000000000000 +decq508 apply #7b000000000000000000000000000000 -> Infinity + +decq509 apply NaN -> #7c000000000000000000000000000000 +decq510 apply #7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #7c003c7c7c7c7c7c7c7c7c7c7c7c7c7c +decq511 apply #7c000000000000000000000000000000 -> NaN +decq512 apply #7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #7c003d7d7d7d7d7d7d7d7d7d7d7d7d7d +decq513 apply #7d000000000000000000000000000000 -> NaN +decq514 apply #7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #7e003e7e7c7e7e7e7e7c7e7e7e7e7c7e +decq515 apply #7e000000000000000000000000000000 -> sNaN +decq516 apply #7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #7e003f7f7c7f7f7f7f7c7f7f7f7f7c7f +decq517 apply #7f000000000000000000000000000000 -> sNaN +decq518 apply #7fffffffffffffffffffffffffffffff -> sNaN999999999999999999999999999999999 +decq519 apply #7fffffffffffffffffffffffffffffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff + +decq520 apply -Infinity -> #f8000000000000000000000000000000 +decq521 apply #f8787878787878787878787878787878 -> #f8000000000000000000000000000000 +decq522 apply #f8000000000000000000000000000000 -> -Infinity +decq523 apply #f9797979797979797979797979797979 -> #f8000000000000000000000000000000 +decq524 apply #f9000000000000000000000000000000 -> -Infinity +decq525 apply #fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #f8000000000000000000000000000000 +decq526 apply #fa000000000000000000000000000000 -> -Infinity +decq527 apply #fb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #f8000000000000000000000000000000 +decq528 apply #fb000000000000000000000000000000 -> -Infinity + +decq529 apply -NaN -> #fc000000000000000000000000000000 +decq530 apply #fc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #fc003c7c7c7c7c7c7c7c7c7c7c7c7c7c +decq531 apply #fc000000000000000000000000000000 -> -NaN +decq532 apply #fd7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #fc003d7d7d7d7d7d7d7d7d7d7d7d7d7d +decq533 apply #fd000000000000000000000000000000 -> -NaN +decq534 apply #fe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #fe003e7e7c7e7e7e7e7c7e7e7e7e7c7e +decq535 apply #fe000000000000000000000000000000 -> -sNaN +decq536 apply #ff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #fe003f7f7c7f7f7f7f7c7f7f7f7f7c7f +decq537 apply #ff000000000000000000000000000000 -> -sNaN +decq538 apply #ffffffffffffffffffffffffffffffff -> -sNaN999999999999999999999999999999999 +decq539 apply #ffffffffffffffffffffffffffffffff -> #fe000ff3fcff3fcff3fcff3fcff3fcff + +decq540 apply NaN -> #7c000000000000000000000000000000 +decq541 apply NaN0 -> #7c000000000000000000000000000000 +decq542 apply NaN1 -> #7c000000000000000000000000000001 +decq543 apply NaN12 -> #7c000000000000000000000000000012 +decq544 apply NaN79 -> #7c000000000000000000000000000079 +decq545 apply NaN12345 -> #7c0000000000000000000000000049c5 +decq546 apply NaN123456 -> #7c000000000000000000000000028e56 +decq547 apply NaN799799 -> #7c0000000000000000000000000f7fdf +decq548 apply NaN799799799799799799799799799799799 -> #7c003dff7fdff7fdff7fdff7fdff7fdf +decq549 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +decq550 apply 9999999999999999999999999999999999 -> #6e080ff3fcff3fcff3fcff3fcff3fcff + +-- fold-down full sequence +decq601 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped +decq602 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144 +decq603 apply 1E+6143 -> #43ffc800000000000000000000000000 Clamped +decq604 apply #43ffc800000000000000000000000000 -> 1.00000000000000000000000000000000E+6143 +decq605 apply 1E+6142 -> #43ffc100000000000000000000000000 Clamped +decq606 apply #43ffc100000000000000000000000000 -> 1.0000000000000000000000000000000E+6142 +decq607 apply 1E+6141 -> #43ffc010000000000000000000000000 Clamped +decq608 apply #43ffc010000000000000000000000000 -> 1.000000000000000000000000000000E+6141 +decq609 apply 1E+6140 -> #43ffc002000000000000000000000000 Clamped +decq610 apply #43ffc002000000000000000000000000 -> 1.00000000000000000000000000000E+6140 +decq611 apply 1E+6139 -> #43ffc000400000000000000000000000 Clamped +decq612 apply #43ffc000400000000000000000000000 -> 1.0000000000000000000000000000E+6139 +decq613 apply 1E+6138 -> #43ffc000040000000000000000000000 Clamped +decq614 apply #43ffc000040000000000000000000000 -> 1.000000000000000000000000000E+6138 +decq615 apply 1E+6137 -> #43ffc000008000000000000000000000 Clamped +decq616 apply #43ffc000008000000000000000000000 -> 1.00000000000000000000000000E+6137 +decq617 apply 1E+6136 -> #43ffc000001000000000000000000000 Clamped +decq618 apply #43ffc000001000000000000000000000 -> 1.0000000000000000000000000E+6136 +decq619 apply 1E+6135 -> #43ffc000000100000000000000000000 Clamped +decq620 apply #43ffc000000100000000000000000000 -> 1.000000000000000000000000E+6135 +decq621 apply 1E+6134 -> #43ffc000000020000000000000000000 Clamped +decq622 apply #43ffc000000020000000000000000000 -> 1.00000000000000000000000E+6134 +decq623 apply 1E+6133 -> #43ffc000000004000000000000000000 Clamped +decq624 apply #43ffc000000004000000000000000000 -> 1.0000000000000000000000E+6133 +decq625 apply 1E+6132 -> #43ffc000000000400000000000000000 Clamped +decq626 apply #43ffc000000000400000000000000000 -> 1.000000000000000000000E+6132 +decq627 apply 1E+6131 -> #43ffc000000000080000000000000000 Clamped +decq628 apply #43ffc000000000080000000000000000 -> 1.00000000000000000000E+6131 +decq629 apply 1E+6130 -> #43ffc000000000010000000000000000 Clamped +decq630 apply #43ffc000000000010000000000000000 -> 1.0000000000000000000E+6130 +decq631 apply 1E+6129 -> #43ffc000000000001000000000000000 Clamped +decq632 apply #43ffc000000000001000000000000000 -> 1.000000000000000000E+6129 +decq633 apply 1E+6128 -> #43ffc000000000000200000000000000 Clamped +decq634 apply #43ffc000000000000200000000000000 -> 1.00000000000000000E+6128 +decq635 apply 1E+6127 -> #43ffc000000000000040000000000000 Clamped +decq636 apply #43ffc000000000000040000000000000 -> 1.0000000000000000E+6127 +decq637 apply 1E+6126 -> #43ffc000000000000004000000000000 Clamped +decq638 apply #43ffc000000000000004000000000000 -> 1.000000000000000E+6126 +decq639 apply 1E+6125 -> #43ffc000000000000000800000000000 Clamped +decq640 apply #43ffc000000000000000800000000000 -> 1.00000000000000E+6125 +decq641 apply 1E+6124 -> #43ffc000000000000000100000000000 Clamped +decq642 apply #43ffc000000000000000100000000000 -> 1.0000000000000E+6124 +decq643 apply 1E+6123 -> #43ffc000000000000000010000000000 Clamped +decq644 apply #43ffc000000000000000010000000000 -> 1.000000000000E+6123 +decq645 apply 1E+6122 -> #43ffc000000000000000002000000000 Clamped +decq646 apply #43ffc000000000000000002000000000 -> 1.00000000000E+6122 +decq647 apply 1E+6121 -> #43ffc000000000000000000400000000 Clamped +decq648 apply #43ffc000000000000000000400000000 -> 1.0000000000E+6121 +decq649 apply 1E+6120 -> #43ffc000000000000000000040000000 Clamped +decq650 apply #43ffc000000000000000000040000000 -> 1.000000000E+6120 +decq651 apply 1E+6119 -> #43ffc000000000000000000008000000 Clamped +decq652 apply #43ffc000000000000000000008000000 -> 1.00000000E+6119 +decq653 apply 1E+6118 -> #43ffc000000000000000000001000000 Clamped +decq654 apply #43ffc000000000000000000001000000 -> 1.0000000E+6118 +decq655 apply 1E+6117 -> #43ffc000000000000000000000100000 Clamped +decq656 apply #43ffc000000000000000000000100000 -> 1.000000E+6117 +decq657 apply 1E+6116 -> #43ffc000000000000000000000020000 Clamped +decq658 apply #43ffc000000000000000000000020000 -> 1.00000E+6116 +decq659 apply 1E+6115 -> #43ffc000000000000000000000004000 Clamped +decq660 apply #43ffc000000000000000000000004000 -> 1.0000E+6115 +decq661 apply 1E+6114 -> #43ffc000000000000000000000000400 Clamped +decq662 apply #43ffc000000000000000000000000400 -> 1.000E+6114 +decq663 apply 1E+6113 -> #43ffc000000000000000000000000080 Clamped +decq664 apply #43ffc000000000000000000000000080 -> 1.00E+6113 +decq665 apply 1E+6112 -> #43ffc000000000000000000000000010 Clamped +decq666 apply #43ffc000000000000000000000000010 -> 1.0E+6112 +decq667 apply 1E+6111 -> #43ffc000000000000000000000000001 +decq668 apply #43ffc000000000000000000000000001 -> 1E+6111 +decq669 apply 1E+6110 -> #43ff8000000000000000000000000001 +decq670 apply #43ff8000000000000000000000000001 -> 1E+6110 + +-- Selected DPD codes +decq700 apply #22080000000000000000000000000000 -> 0 +decq701 apply #22080000000000000000000000000009 -> 9 +decq702 apply #22080000000000000000000000000010 -> 10 +decq703 apply #22080000000000000000000000000019 -> 19 +decq704 apply #22080000000000000000000000000020 -> 20 +decq705 apply #22080000000000000000000000000029 -> 29 +decq706 apply #22080000000000000000000000000030 -> 30 +decq707 apply #22080000000000000000000000000039 -> 39 +decq708 apply #22080000000000000000000000000040 -> 40 +decq709 apply #22080000000000000000000000000049 -> 49 +decq710 apply #22080000000000000000000000000050 -> 50 +decq711 apply #22080000000000000000000000000059 -> 59 +decq712 apply #22080000000000000000000000000060 -> 60 +decq713 apply #22080000000000000000000000000069 -> 69 +decq714 apply #22080000000000000000000000000070 -> 70 +decq715 apply #22080000000000000000000000000071 -> 71 +decq716 apply #22080000000000000000000000000072 -> 72 +decq717 apply #22080000000000000000000000000073 -> 73 +decq718 apply #22080000000000000000000000000074 -> 74 +decq719 apply #22080000000000000000000000000075 -> 75 +decq720 apply #22080000000000000000000000000076 -> 76 +decq721 apply #22080000000000000000000000000077 -> 77 +decq722 apply #22080000000000000000000000000078 -> 78 +decq723 apply #22080000000000000000000000000079 -> 79 + +decq730 apply #2208000000000000000000000000029e -> 994 +decq731 apply #2208000000000000000000000000029f -> 995 +decq732 apply #220800000000000000000000000002a0 -> 520 +decq733 apply #220800000000000000000000000002a1 -> 521 + +-- DPD: one of each of the huffman groups +decq740 apply #220800000000000000000000000003f7 -> 777 +decq741 apply #220800000000000000000000000003f8 -> 778 +decq742 apply #220800000000000000000000000003eb -> 787 +decq743 apply #2208000000000000000000000000037d -> 877 +decq744 apply #2208000000000000000000000000039f -> 997 +decq745 apply #220800000000000000000000000003bf -> 979 +decq746 apply #220800000000000000000000000003df -> 799 +decq747 apply #2208000000000000000000000000006e -> 888 + + +-- DPD all-highs cases (includes the 24 redundant codes) +decq750 apply #2208000000000000000000000000006e -> 888 +decq751 apply #2208000000000000000000000000016e -> 888 +decq752 apply #2208000000000000000000000000026e -> 888 +decq753 apply #2208000000000000000000000000036e -> 888 +decq754 apply #2208000000000000000000000000006f -> 889 +decq755 apply #2208000000000000000000000000016f -> 889 +decq756 apply #2208000000000000000000000000026f -> 889 +decq757 apply #2208000000000000000000000000036f -> 889 + +decq760 apply #2208000000000000000000000000007e -> 898 +decq761 apply #2208000000000000000000000000017e -> 898 +decq762 apply #2208000000000000000000000000027e -> 898 +decq763 apply #2208000000000000000000000000037e -> 898 +decq764 apply #2208000000000000000000000000007f -> 899 +decq765 apply #2208000000000000000000000000017f -> 899 +decq766 apply #2208000000000000000000000000027f -> 899 +decq767 apply #2208000000000000000000000000037f -> 899 + +decq770 apply #220800000000000000000000000000ee -> 988 +decq771 apply #220800000000000000000000000001ee -> 988 +decq772 apply #220800000000000000000000000002ee -> 988 +decq773 apply #220800000000000000000000000003ee -> 988 +decq774 apply #220800000000000000000000000000ef -> 989 +decq775 apply #220800000000000000000000000001ef -> 989 +decq776 apply #220800000000000000000000000002ef -> 989 +decq777 apply #220800000000000000000000000003ef -> 989 + +decq780 apply #220800000000000000000000000000fe -> 998 +decq781 apply #220800000000000000000000000001fe -> 998 +decq782 apply #220800000000000000000000000002fe -> 998 +decq783 apply #220800000000000000000000000003fe -> 998 +decq784 apply #220800000000000000000000000000ff -> 999 +decq785 apply #220800000000000000000000000001ff -> 999 +decq786 apply #220800000000000000000000000002ff -> 999 +decq787 apply #220800000000000000000000000003ff -> 999 + +-- Miscellaneous (testers' queries, etc.) + +decq790 apply #2208000000000000000000000000c000 -> 30000 +decq791 apply #22080000000000000000000000007800 -> 890000 +decq792 apply 30000 -> #2208000000000000000000000000c000 +decq793 apply 890000 -> #22080000000000000000000000007800 + +-- values around [u]int32 edges (zeros done earlier) +decq800 apply -2147483646 -> #a208000000000000000000008c78af46 +decq801 apply -2147483647 -> #a208000000000000000000008c78af47 +decq802 apply -2147483648 -> #a208000000000000000000008c78af48 +decq803 apply -2147483649 -> #a208000000000000000000008c78af49 +decq804 apply 2147483646 -> #2208000000000000000000008c78af46 +decq805 apply 2147483647 -> #2208000000000000000000008c78af47 +decq806 apply 2147483648 -> #2208000000000000000000008c78af48 +decq807 apply 2147483649 -> #2208000000000000000000008c78af49 +decq808 apply 4294967294 -> #22080000000000000000000115afb55a +decq809 apply 4294967295 -> #22080000000000000000000115afb55b +decq810 apply 4294967296 -> #22080000000000000000000115afb57a +decq811 apply 4294967297 -> #22080000000000000000000115afb57b + +decq820 apply #a208000000000000000000008c78af46 -> -2147483646 +decq821 apply #a208000000000000000000008c78af47 -> -2147483647 +decq822 apply #a208000000000000000000008c78af48 -> -2147483648 +decq823 apply #a208000000000000000000008c78af49 -> -2147483649 +decq824 apply #2208000000000000000000008c78af46 -> 2147483646 +decq825 apply #2208000000000000000000008c78af47 -> 2147483647 +decq826 apply #2208000000000000000000008c78af48 -> 2147483648 +decq827 apply #2208000000000000000000008c78af49 -> 2147483649 +decq828 apply #22080000000000000000000115afb55a -> 4294967294 +decq829 apply #22080000000000000000000115afb55b -> 4294967295 +decq830 apply #22080000000000000000000115afb57a -> 4294967296 +decq831 apply #22080000000000000000000115afb57b -> 4294967297 + +-- VG testcase +decq840 apply #2080000000000000F294000000172636 -> 8.81125000000001349436E-1548 +decq841 apply #20800000000000008000000000000000 -> 8.000000000000000000E-1550 +decq842 apply #1EF98490000000010F6E4E0000000000 -> 7.049000000000010795488000000000000E-3097 +decq843 multiply #20800000000000008000000000000000 #2080000000000000F294000000172636 -> #1EF98490000000010F6E4E0000000000 Rounded + diff --git a/Lib/test/decimaltestdata/dqFMA.decTest b/Lib/test/decimaltestdata/dqFMA.decTest index 2353f2f..d884553 100644 --- a/Lib/test/decimaltestdata/dqFMA.decTest +++ b/Lib/test/decimaltestdata/dqFMA.decTest @@ -1,1786 +1,1786 @@ ------------------------------------------------------------------------- --- dqFMA.decTest -- decQuad Fused Multiply Add -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- These tests comprese three parts: --- 1. Sanity checks and other three-operand tests (especially those --- where the fused operation makes a difference) --- 2. Multiply tests (third operand is neutral zero [0E+emax]) --- 3. Addition tests (first operand is 1) --- The multiply and addition tests are extensive because FMA may have --- its own dedicated multiplication or addition routine(s), and they --- also inherently check the left-to-right properties. - --- Sanity checks -dqfma0001 fma 1 1 1 -> 2 -dqfma0002 fma 1 1 2 -> 3 -dqfma0003 fma 2 2 3 -> 7 -dqfma0004 fma 9 9 9 -> 90 -dqfma0005 fma -1 1 1 -> 0 -dqfma0006 fma -1 1 2 -> 1 -dqfma0007 fma -2 2 3 -> -1 -dqfma0008 fma -9 9 9 -> -72 -dqfma0011 fma 1 -1 1 -> 0 -dqfma0012 fma 1 -1 2 -> 1 -dqfma0013 fma 2 -2 3 -> -1 -dqfma0014 fma 9 -9 9 -> -72 -dqfma0015 fma 1 1 -1 -> 0 -dqfma0016 fma 1 1 -2 -> -1 -dqfma0017 fma 2 2 -3 -> 1 -dqfma0018 fma 9 9 -9 -> 72 - --- non-integer exacts -dqfma0100 fma 25.2 63.6 -438 -> 1164.72 -dqfma0101 fma 0.301 0.380 334 -> 334.114380 -dqfma0102 fma 49.2 -4.8 23.3 -> -212.86 -dqfma0103 fma 4.22 0.079 -94.6 -> -94.26662 -dqfma0104 fma 903 0.797 0.887 -> 720.578 -dqfma0105 fma 6.13 -161 65.9 -> -921.03 -dqfma0106 fma 28.2 727 5.45 -> 20506.85 -dqfma0107 fma 4 605 688 -> 3108 -dqfma0108 fma 93.3 0.19 0.226 -> 17.953 -dqfma0109 fma 0.169 -341 5.61 -> -52.019 -dqfma0110 fma -72.2 30 -51.2 -> -2217.2 -dqfma0111 fma -0.409 13 20.4 -> 15.083 -dqfma0112 fma 317 77.0 19.0 -> 24428.0 -dqfma0113 fma 47 6.58 1.62 -> 310.88 -dqfma0114 fma 1.36 0.984 0.493 -> 1.83124 -dqfma0115 fma 72.7 274 1.56 -> 19921.36 -dqfma0116 fma 335 847 83 -> 283828 -dqfma0117 fma 666 0.247 25.4 -> 189.902 -dqfma0118 fma -3.87 3.06 78.0 -> 66.1578 -dqfma0119 fma 0.742 192 35.6 -> 178.064 -dqfma0120 fma -91.6 5.29 0.153 -> -484.411 - --- cases where result is different from separate multiply + add; each --- is preceded by the result of unfused multiply and add --- [this is about 20% of all similar cases in general] --- -> 4.500119002100000209469729375698778E+38 -dqfma0202 fma 68537985861355864457.5694 6565875762972086605.85969 35892634447236753.172812 -> 4.500119002100000209469729375698779E+38 Inexact Rounded --- -> 5.996248469584594346858881620185514E+41 -dqfma0208 fma 89261822344727628571.9 6717595845654131383336.89 5061036497288796076266.11 -> 5.996248469584594346858881620185513E+41 Inexact Rounded --- -> 1.899242968678256924021594770874070E+34 -dqfma0210 fma 320506237232448685.495971 59257597764017967.984448 3205615239077711589912.85 -> 1.899242968678256924021594770874071E+34 Inexact Rounded --- -> 7.078596978842809537929699954860309E+37 -dqfma0215 fma 220247843259112263.17995 321392340287987979002.80 47533279819997167655440 -> 7.078596978842809537929699954860308E+37 Inexact Rounded --- -> 1.224955667581427559754106862350743E+37 -dqfma0226 fma 23880729790368880412.1449 512947333827064719.55407 217117438419590824502.963 -> 1.224955667581427559754106862350744E+37 Inexact Rounded --- -> -2.530094043253148806272276368579144E+42 -dqfma0229 fma 2539892357016099706.4126 -996142232667504817717435 53682082598315949425.937 -> -2.530094043253148806272276368579143E+42 Inexact Rounded --- -> 1.713387085759711954319391412788454E+37 -dqfma0233 fma 4546339491341624464.0804 3768717864169205581 83578980278690395184.620 -> 1.713387085759711954319391412788453E+37 Inexact Rounded --- -> 4.062275663405823716411579117771547E+35 -dqfma0235 fma 409242119433816131.42253 992633815166741501.477249 70179636544416756129546 -> 4.062275663405823716411579117771548E+35 Inexact Rounded --- -> 6.002604327732568490562249875306823E+47 -dqfma0258 fma 817941336593541742159684 733867339769310729266598 78563844650942419311830.8 -> 6.002604327732568490562249875306822E+47 Inexact Rounded --- -> -2.027022514381452197510103395283874E+39 -dqfma0264 fma 387617310169161270.737532 -5229442703414956061216.62 57665666816652967150473.5 -> -2.027022514381452197510103395283873E+39 Inexact Rounded --- -> -7.856525039803554001144089842730361E+37 -dqfma0267 fma -847655845720565274701.210 92685316564117739.83984 22780950041376424429.5686 -> -7.856525039803554001144089842730360E+37 Inexact Rounded --- -> 1.695515562011520746125607502237559E+38 -dqfma0268 fma 21590290365127685.3675 7853139227576541379426.8 -3275859437236180.761544 -> 1.695515562011520746125607502237558E+38 Inexact Rounded --- -> -8.448422935783289219748115038014710E+38 -dqfma0269 fma -974320636272862697.971586 867109103641860247440.756 -9775170775902454762.98 -> -8.448422935783289219748115038014709E+38 Inexact Rounded - --- Cases where multiply would overflow or underflow if separate -dqfma0300 fma 9e+6144 10 0 -> Infinity Overflow Inexact Rounded -dqfma0301 fma 1e+6144 10 0 -> Infinity Overflow Inexact Rounded -dqfma0302 fma 1e+6144 10 -1e+6144 -> 9.000000000000000000000000000000000E+6144 Clamped -dqfma0303 fma 1e+6144 10 -9e+6144 -> 1.000000000000000000000000000000000E+6144 Clamped --- subnormal etc. -dqfma0305 fma 1e-6176 0.1 0 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma0306 fma 1e-6176 0.1 1 -> 1.000000000000000000000000000000000 Inexact Rounded -dqfma0307 fma 1e-6176 0.1 1e-6176 -> 1E-6176 Underflow Subnormal Inexact Rounded - --- Infinite combinations -dqfma0800 fma Inf Inf Inf -> Infinity -dqfma0801 fma Inf Inf -Inf -> NaN Invalid_operation -dqfma0802 fma Inf -Inf Inf -> NaN Invalid_operation -dqfma0803 fma Inf -Inf -Inf -> -Infinity -dqfma0804 fma -Inf Inf Inf -> NaN Invalid_operation -dqfma0805 fma -Inf Inf -Inf -> -Infinity -dqfma0806 fma -Inf -Inf Inf -> Infinity -dqfma0807 fma -Inf -Inf -Inf -> NaN Invalid_operation - --- Triple NaN propagation -dqfma0900 fma NaN2 NaN3 NaN5 -> NaN2 -dqfma0901 fma 0 NaN3 NaN5 -> NaN3 -dqfma0902 fma 0 0 NaN5 -> NaN5 --- first sNaN wins (consider qNaN from earlier sNaN being --- overridden by an sNaN in third operand) -dqfma0903 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation -dqfma0904 fma 0 sNaN2 sNaN3 -> NaN2 Invalid_operation -dqfma0905 fma 0 0 sNaN3 -> NaN3 Invalid_operation -dqfma0906 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation -dqfma0907 fma NaN7 sNaN2 sNaN3 -> NaN2 Invalid_operation -dqfma0908 fma NaN7 NaN5 sNaN3 -> NaN3 Invalid_operation - --- MULTIPLICATION TESTS ------------------------------------------------ -rounding: half_even - --- sanity checks -dqfma2000 fma 2 2 0e+6144 -> 4 -dqfma2001 fma 2 3 0e+6144 -> 6 -dqfma2002 fma 5 1 0e+6144 -> 5 -dqfma2003 fma 5 2 0e+6144 -> 10 -dqfma2004 fma 1.20 2 0e+6144 -> 2.40 -dqfma2005 fma 1.20 0 0e+6144 -> 0.00 -dqfma2006 fma 1.20 -2 0e+6144 -> -2.40 -dqfma2007 fma -1.20 2 0e+6144 -> -2.40 -dqfma2008 fma -1.20 0 0e+6144 -> 0.00 -dqfma2009 fma -1.20 -2 0e+6144 -> 2.40 -dqfma2010 fma 5.09 7.1 0e+6144 -> 36.139 -dqfma2011 fma 2.5 4 0e+6144 -> 10.0 -dqfma2012 fma 2.50 4 0e+6144 -> 10.00 -dqfma2013 fma 1.23456789 1.0000000000000000000000000000 0e+6144 -> 1.234567890000000000000000000000000 Rounded -dqfma2015 fma 2.50 4 0e+6144 -> 10.00 -dqfma2016 fma 9.99999999999999999 9.99999999999999999 0e+6144 -> 99.99999999999999980000000000000000 Inexact Rounded -dqfma2017 fma 9.99999999999999999 -9.99999999999999999 0e+6144 -> -99.99999999999999980000000000000000 Inexact Rounded -dqfma2018 fma -9.99999999999999999 9.99999999999999999 0e+6144 -> -99.99999999999999980000000000000000 Inexact Rounded -dqfma2019 fma -9.99999999999999999 -9.99999999999999999 0e+6144 -> 99.99999999999999980000000000000000 Inexact Rounded - --- zeros, etc. -dqfma2021 fma 0 0 0e+6144 -> 0 -dqfma2022 fma 0 -0 0e+6144 -> 0 -dqfma2023 fma -0 0 0e+6144 -> 0 -dqfma2024 fma -0 -0 0e+6144 -> 0 -dqfma2025 fma -0.0 -0.0 0e+6144 -> 0.00 -dqfma2026 fma -0.0 -0.0 0e+6144 -> 0.00 -dqfma2027 fma -0.0 -0.0 0e+6144 -> 0.00 -dqfma2028 fma -0.0 -0.0 0e+6144 -> 0.00 -dqfma2030 fma 5.00 1E-3 0e+6144 -> 0.00500 -dqfma2031 fma 00.00 0.000 0e+6144 -> 0.00000 -dqfma2032 fma 00.00 0E-3 0e+6144 -> 0.00000 -- rhs is 0 -dqfma2033 fma 0E-3 00.00 0e+6144 -> 0.00000 -- lhs is 0 -dqfma2034 fma -5.00 1E-3 0e+6144 -> -0.00500 -dqfma2035 fma -00.00 0.000 0e+6144 -> 0.00000 -dqfma2036 fma -00.00 0E-3 0e+6144 -> 0.00000 -- rhs is 0 -dqfma2037 fma -0E-3 00.00 0e+6144 -> 0.00000 -- lhs is 0 -dqfma2038 fma 5.00 -1E-3 0e+6144 -> -0.00500 -dqfma2039 fma 00.00 -0.000 0e+6144 -> 0.00000 -dqfma2040 fma 00.00 -0E-3 0e+6144 -> 0.00000 -- rhs is 0 -dqfma2041 fma 0E-3 -00.00 0e+6144 -> 0.00000 -- lhs is 0 -dqfma2042 fma -5.00 -1E-3 0e+6144 -> 0.00500 -dqfma2043 fma -00.00 -0.000 0e+6144 -> 0.00000 -dqfma2044 fma -00.00 -0E-3 0e+6144 -> 0.00000 -- rhs is 0 -dqfma2045 fma -0E-3 -00.00 0e+6144 -> 0.00000 -- lhs is 0 - --- examples from decarith -dqfma2050 fma 1.20 3 0e+6144 -> 3.60 -dqfma2051 fma 7 3 0e+6144 -> 21 -dqfma2052 fma 0.9 0.8 0e+6144 -> 0.72 -dqfma2053 fma 0.9 -0 0e+6144 -> 0.0 -dqfma2054 fma 654321 654321 0e+6144 -> 428135971041 - -dqfma2060 fma 123.45 1e7 0e+6144 -> 1.2345E+9 -dqfma2061 fma 123.45 1e8 0e+6144 -> 1.2345E+10 -dqfma2062 fma 123.45 1e+9 0e+6144 -> 1.2345E+11 -dqfma2063 fma 123.45 1e10 0e+6144 -> 1.2345E+12 -dqfma2064 fma 123.45 1e11 0e+6144 -> 1.2345E+13 -dqfma2065 fma 123.45 1e12 0e+6144 -> 1.2345E+14 -dqfma2066 fma 123.45 1e13 0e+6144 -> 1.2345E+15 - - --- test some intermediate lengths --- 1234567890123456 -dqfma2080 fma 0.1 1230123456456789 0e+6144 -> 123012345645678.9 -dqfma2084 fma 0.1 1230123456456789 0e+6144 -> 123012345645678.9 -dqfma2090 fma 1230123456456789 0.1 0e+6144 -> 123012345645678.9 -dqfma2094 fma 1230123456456789 0.1 0e+6144 -> 123012345645678.9 - --- test some more edge cases and carries -dqfma2101 fma 9 9 0e+6144 -> 81 -dqfma2102 fma 9 90 0e+6144 -> 810 -dqfma2103 fma 9 900 0e+6144 -> 8100 -dqfma2104 fma 9 9000 0e+6144 -> 81000 -dqfma2105 fma 9 90000 0e+6144 -> 810000 -dqfma2106 fma 9 900000 0e+6144 -> 8100000 -dqfma2107 fma 9 9000000 0e+6144 -> 81000000 -dqfma2108 fma 9 90000000 0e+6144 -> 810000000 -dqfma2109 fma 9 900000000 0e+6144 -> 8100000000 -dqfma2110 fma 9 9000000000 0e+6144 -> 81000000000 -dqfma2111 fma 9 90000000000 0e+6144 -> 810000000000 -dqfma2112 fma 9 900000000000 0e+6144 -> 8100000000000 -dqfma2113 fma 9 9000000000000 0e+6144 -> 81000000000000 -dqfma2114 fma 9 90000000000000 0e+6144 -> 810000000000000 -dqfma2115 fma 9 900000000000000 0e+6144 -> 8100000000000000 ---dqfma2116 fma 9 9000000000000000 0e+6144 -> 81000000000000000 ---dqfma2117 fma 9 90000000000000000 0e+6144 -> 810000000000000000 ---dqfma2118 fma 9 900000000000000000 0e+6144 -> 8100000000000000000 ---dqfma2119 fma 9 9000000000000000000 0e+6144 -> 81000000000000000000 ---dqfma2120 fma 9 90000000000000000000 0e+6144 -> 810000000000000000000 ---dqfma2121 fma 9 900000000000000000000 0e+6144 -> 8100000000000000000000 ---dqfma2122 fma 9 9000000000000000000000 0e+6144 -> 81000000000000000000000 ---dqfma2123 fma 9 90000000000000000000000 0e+6144 -> 810000000000000000000000 --- test some more edge cases without carries -dqfma2131 fma 3 3 0e+6144 -> 9 -dqfma2132 fma 3 30 0e+6144 -> 90 -dqfma2133 fma 3 300 0e+6144 -> 900 -dqfma2134 fma 3 3000 0e+6144 -> 9000 -dqfma2135 fma 3 30000 0e+6144 -> 90000 -dqfma2136 fma 3 300000 0e+6144 -> 900000 -dqfma2137 fma 3 3000000 0e+6144 -> 9000000 -dqfma2138 fma 3 30000000 0e+6144 -> 90000000 -dqfma2139 fma 3 300000000 0e+6144 -> 900000000 -dqfma2140 fma 3 3000000000 0e+6144 -> 9000000000 -dqfma2141 fma 3 30000000000 0e+6144 -> 90000000000 -dqfma2142 fma 3 300000000000 0e+6144 -> 900000000000 -dqfma2143 fma 3 3000000000000 0e+6144 -> 9000000000000 -dqfma2144 fma 3 30000000000000 0e+6144 -> 90000000000000 -dqfma2145 fma 3 300000000000000 0e+6144 -> 900000000000000 -dqfma2146 fma 3 3000000000000000 0e+6144 -> 9000000000000000 -dqfma2147 fma 3 30000000000000000 0e+6144 -> 90000000000000000 -dqfma2148 fma 3 300000000000000000 0e+6144 -> 900000000000000000 -dqfma2149 fma 3 3000000000000000000 0e+6144 -> 9000000000000000000 -dqfma2150 fma 3 30000000000000000000 0e+6144 -> 90000000000000000000 -dqfma2151 fma 3 300000000000000000000 0e+6144 -> 900000000000000000000 -dqfma2152 fma 3 3000000000000000000000 0e+6144 -> 9000000000000000000000 -dqfma2153 fma 3 30000000000000000000000 0e+6144 -> 90000000000000000000000 - -dqfma2263 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0e+6144 -> 145433.2908011933696719165119928296 Inexact Rounded - --- test some edge cases with exact rounding -dqfma2301 fma 900000000000000000 9 0e+6144 -> 8100000000000000000 -dqfma2302 fma 900000000000000000 90 0e+6144 -> 81000000000000000000 -dqfma2303 fma 900000000000000000 900 0e+6144 -> 810000000000000000000 -dqfma2304 fma 900000000000000000 9000 0e+6144 -> 8100000000000000000000 -dqfma2305 fma 900000000000000000 90000 0e+6144 -> 81000000000000000000000 -dqfma2306 fma 900000000000000000 900000 0e+6144 -> 810000000000000000000000 -dqfma2307 fma 900000000000000000 9000000 0e+6144 -> 8100000000000000000000000 -dqfma2308 fma 900000000000000000 90000000 0e+6144 -> 81000000000000000000000000 -dqfma2309 fma 900000000000000000 900000000 0e+6144 -> 810000000000000000000000000 -dqfma2310 fma 900000000000000000 9000000000 0e+6144 -> 8100000000000000000000000000 -dqfma2311 fma 900000000000000000 90000000000 0e+6144 -> 81000000000000000000000000000 -dqfma2312 fma 900000000000000000 900000000000 0e+6144 -> 810000000000000000000000000000 -dqfma2313 fma 900000000000000000 9000000000000 0e+6144 -> 8100000000000000000000000000000 -dqfma2314 fma 900000000000000000 90000000000000 0e+6144 -> 81000000000000000000000000000000 -dqfma2315 fma 900000000000000000 900000000000000 0e+6144 -> 810000000000000000000000000000000 -dqfma2316 fma 900000000000000000 9000000000000000 0e+6144 -> 8100000000000000000000000000000000 -dqfma2317 fma 9000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+34 Rounded -dqfma2318 fma 90000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+35 Rounded -dqfma2319 fma 900000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+36 Rounded -dqfma2320 fma 9000000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+37 Rounded -dqfma2321 fma 90000000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+38 Rounded -dqfma2322 fma 900000000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+39 Rounded -dqfma2323 fma 9000000000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+40 Rounded - --- tryzeros cases -dqfma2504 fma 0E-4260 1000E-4260 0e+6144 -> 0E-6176 Clamped -dqfma2505 fma 100E+4260 0E+4260 0e+6144 -> 0E+6111 Clamped - --- mixed with zeros -dqfma2541 fma 0 -1 0e+6144 -> 0 -dqfma2542 fma -0 -1 0e+6144 -> 0 -dqfma2543 fma 0 1 0e+6144 -> 0 -dqfma2544 fma -0 1 0e+6144 -> 0 -dqfma2545 fma -1 0 0e+6144 -> 0 -dqfma2546 fma -1 -0 0e+6144 -> 0 -dqfma2547 fma 1 0 0e+6144 -> 0 -dqfma2548 fma 1 -0 0e+6144 -> 0 - -dqfma2551 fma 0.0 -1 0e+6144 -> 0.0 -dqfma2552 fma -0.0 -1 0e+6144 -> 0.0 -dqfma2553 fma 0.0 1 0e+6144 -> 0.0 -dqfma2554 fma -0.0 1 0e+6144 -> 0.0 -dqfma2555 fma -1.0 0 0e+6144 -> 0.0 -dqfma2556 fma -1.0 -0 0e+6144 -> 0.0 -dqfma2557 fma 1.0 0 0e+6144 -> 0.0 -dqfma2558 fma 1.0 -0 0e+6144 -> 0.0 - -dqfma2561 fma 0 -1.0 0e+6144 -> 0.0 -dqfma2562 fma -0 -1.0 0e+6144 -> 0.0 -dqfma2563 fma 0 1.0 0e+6144 -> 0.0 -dqfma2564 fma -0 1.0 0e+6144 -> 0.0 -dqfma2565 fma -1 0.0 0e+6144 -> 0.0 -dqfma2566 fma -1 -0.0 0e+6144 -> 0.0 -dqfma2567 fma 1 0.0 0e+6144 -> 0.0 -dqfma2568 fma 1 -0.0 0e+6144 -> 0.0 - -dqfma2571 fma 0.0 -1.0 0e+6144 -> 0.00 -dqfma2572 fma -0.0 -1.0 0e+6144 -> 0.00 -dqfma2573 fma 0.0 1.0 0e+6144 -> 0.00 -dqfma2574 fma -0.0 1.0 0e+6144 -> 0.00 -dqfma2575 fma -1.0 0.0 0e+6144 -> 0.00 -dqfma2576 fma -1.0 -0.0 0e+6144 -> 0.00 -dqfma2577 fma 1.0 0.0 0e+6144 -> 0.00 -dqfma2578 fma 1.0 -0.0 0e+6144 -> 0.00 -dqfma2579 fma 1.0 0.0 0e+6144 -> 0.00 -dqfma2530 fma -1.0 -0.0 0e+6144 -> 0.00 -dqfma2531 fma -1.0 0.0 0e+6144 -> 0.00 -dqfma2532 fma 1.0 -0.0 -0e+6144 -> -0.00 -dqfma2533 fma 1.0 0.0 -0e+6144 -> 0.00 -dqfma2534 fma -1.0 -0.0 -0e+6144 -> 0.00 -dqfma2535 fma -1.0 0.0 -0e+6144 -> -0.00 - - --- Specials -dqfma2580 fma Inf -Inf 0e+6144 -> -Infinity -dqfma2581 fma Inf -1000 0e+6144 -> -Infinity -dqfma2582 fma Inf -1 0e+6144 -> -Infinity -dqfma2583 fma Inf -0 0e+6144 -> NaN Invalid_operation -dqfma2584 fma Inf 0 0e+6144 -> NaN Invalid_operation -dqfma2585 fma Inf 1 0e+6144 -> Infinity -dqfma2586 fma Inf 1000 0e+6144 -> Infinity -dqfma2587 fma Inf Inf 0e+6144 -> Infinity -dqfma2588 fma -1000 Inf 0e+6144 -> -Infinity -dqfma2589 fma -Inf Inf 0e+6144 -> -Infinity -dqfma2590 fma -1 Inf 0e+6144 -> -Infinity -dqfma2591 fma -0 Inf 0e+6144 -> NaN Invalid_operation -dqfma2592 fma 0 Inf 0e+6144 -> NaN Invalid_operation -dqfma2593 fma 1 Inf 0e+6144 -> Infinity -dqfma2594 fma 1000 Inf 0e+6144 -> Infinity -dqfma2595 fma Inf Inf 0e+6144 -> Infinity - -dqfma2600 fma -Inf -Inf 0e+6144 -> Infinity -dqfma2601 fma -Inf -1000 0e+6144 -> Infinity -dqfma2602 fma -Inf -1 0e+6144 -> Infinity -dqfma2603 fma -Inf -0 0e+6144 -> NaN Invalid_operation -dqfma2604 fma -Inf 0 0e+6144 -> NaN Invalid_operation -dqfma2605 fma -Inf 1 0e+6144 -> -Infinity -dqfma2606 fma -Inf 1000 0e+6144 -> -Infinity -dqfma2607 fma -Inf Inf 0e+6144 -> -Infinity -dqfma2608 fma -1000 Inf 0e+6144 -> -Infinity -dqfma2609 fma -Inf -Inf 0e+6144 -> Infinity -dqfma2610 fma -1 -Inf 0e+6144 -> Infinity -dqfma2611 fma -0 -Inf 0e+6144 -> NaN Invalid_operation -dqfma2612 fma 0 -Inf 0e+6144 -> NaN Invalid_operation -dqfma2613 fma 1 -Inf 0e+6144 -> -Infinity -dqfma2614 fma 1000 -Inf 0e+6144 -> -Infinity -dqfma2615 fma Inf -Inf 0e+6144 -> -Infinity - -dqfma2621 fma NaN -Inf 0e+6144 -> NaN -dqfma2622 fma NaN -1000 0e+6144 -> NaN -dqfma2623 fma NaN -1 0e+6144 -> NaN -dqfma2624 fma NaN -0 0e+6144 -> NaN -dqfma2625 fma NaN 0 0e+6144 -> NaN -dqfma2626 fma NaN 1 0e+6144 -> NaN -dqfma2627 fma NaN 1000 0e+6144 -> NaN -dqfma2628 fma NaN Inf 0e+6144 -> NaN -dqfma2629 fma NaN NaN 0e+6144 -> NaN -dqfma2630 fma -Inf NaN 0e+6144 -> NaN -dqfma2631 fma -1000 NaN 0e+6144 -> NaN -dqfma2632 fma -1 NaN 0e+6144 -> NaN -dqfma2633 fma -0 NaN 0e+6144 -> NaN -dqfma2634 fma 0 NaN 0e+6144 -> NaN -dqfma2635 fma 1 NaN 0e+6144 -> NaN -dqfma2636 fma 1000 NaN 0e+6144 -> NaN -dqfma2637 fma Inf NaN 0e+6144 -> NaN - -dqfma2641 fma sNaN -Inf 0e+6144 -> NaN Invalid_operation -dqfma2642 fma sNaN -1000 0e+6144 -> NaN Invalid_operation -dqfma2643 fma sNaN -1 0e+6144 -> NaN Invalid_operation -dqfma2644 fma sNaN -0 0e+6144 -> NaN Invalid_operation -dqfma2645 fma sNaN 0 0e+6144 -> NaN Invalid_operation -dqfma2646 fma sNaN 1 0e+6144 -> NaN Invalid_operation -dqfma2647 fma sNaN 1000 0e+6144 -> NaN Invalid_operation -dqfma2648 fma sNaN NaN 0e+6144 -> NaN Invalid_operation -dqfma2649 fma sNaN sNaN 0e+6144 -> NaN Invalid_operation -dqfma2650 fma NaN sNaN 0e+6144 -> NaN Invalid_operation -dqfma2651 fma -Inf sNaN 0e+6144 -> NaN Invalid_operation -dqfma2652 fma -1000 sNaN 0e+6144 -> NaN Invalid_operation -dqfma2653 fma -1 sNaN 0e+6144 -> NaN Invalid_operation -dqfma2654 fma -0 sNaN 0e+6144 -> NaN Invalid_operation -dqfma2655 fma 0 sNaN 0e+6144 -> NaN Invalid_operation -dqfma2656 fma 1 sNaN 0e+6144 -> NaN Invalid_operation -dqfma2657 fma 1000 sNaN 0e+6144 -> NaN Invalid_operation -dqfma2658 fma Inf sNaN 0e+6144 -> NaN Invalid_operation -dqfma2659 fma NaN sNaN 0e+6144 -> NaN Invalid_operation - --- propagating NaNs -dqfma2661 fma NaN9 -Inf 0e+6144 -> NaN9 -dqfma2662 fma NaN8 999 0e+6144 -> NaN8 -dqfma2663 fma NaN71 Inf 0e+6144 -> NaN71 -dqfma2664 fma NaN6 NaN5 0e+6144 -> NaN6 -dqfma2665 fma -Inf NaN4 0e+6144 -> NaN4 -dqfma2666 fma -999 NaN33 0e+6144 -> NaN33 -dqfma2667 fma Inf NaN2 0e+6144 -> NaN2 - -dqfma2671 fma sNaN99 -Inf 0e+6144 -> NaN99 Invalid_operation -dqfma2672 fma sNaN98 -11 0e+6144 -> NaN98 Invalid_operation -dqfma2673 fma sNaN97 NaN 0e+6144 -> NaN97 Invalid_operation -dqfma2674 fma sNaN16 sNaN94 0e+6144 -> NaN16 Invalid_operation -dqfma2675 fma NaN95 sNaN93 0e+6144 -> NaN93 Invalid_operation -dqfma2676 fma -Inf sNaN92 0e+6144 -> NaN92 Invalid_operation -dqfma2677 fma 088 sNaN91 0e+6144 -> NaN91 Invalid_operation -dqfma2678 fma Inf sNaN90 0e+6144 -> NaN90 Invalid_operation -dqfma2679 fma NaN sNaN89 0e+6144 -> NaN89 Invalid_operation - -dqfma2681 fma -NaN9 -Inf 0e+6144 -> -NaN9 -dqfma2682 fma -NaN8 999 0e+6144 -> -NaN8 -dqfma2683 fma -NaN71 Inf 0e+6144 -> -NaN71 -dqfma2684 fma -NaN6 -NaN5 0e+6144 -> -NaN6 -dqfma2685 fma -Inf -NaN4 0e+6144 -> -NaN4 -dqfma2686 fma -999 -NaN33 0e+6144 -> -NaN33 -dqfma2687 fma Inf -NaN2 0e+6144 -> -NaN2 - -dqfma2691 fma -sNaN99 -Inf 0e+6144 -> -NaN99 Invalid_operation -dqfma2692 fma -sNaN98 -11 0e+6144 -> -NaN98 Invalid_operation -dqfma2693 fma -sNaN97 NaN 0e+6144 -> -NaN97 Invalid_operation -dqfma2694 fma -sNaN16 -sNaN94 0e+6144 -> -NaN16 Invalid_operation -dqfma2695 fma -NaN95 -sNaN93 0e+6144 -> -NaN93 Invalid_operation -dqfma2696 fma -Inf -sNaN92 0e+6144 -> -NaN92 Invalid_operation -dqfma2697 fma 088 -sNaN91 0e+6144 -> -NaN91 Invalid_operation -dqfma2698 fma Inf -sNaN90 0e+6144 -> -NaN90 Invalid_operation -dqfma2699 fma -NaN -sNaN89 0e+6144 -> -NaN89 Invalid_operation - -dqfma2701 fma -NaN -Inf 0e+6144 -> -NaN -dqfma2702 fma -NaN 999 0e+6144 -> -NaN -dqfma2703 fma -NaN Inf 0e+6144 -> -NaN -dqfma2704 fma -NaN -NaN 0e+6144 -> -NaN -dqfma2705 fma -Inf -NaN0 0e+6144 -> -NaN -dqfma2706 fma -999 -NaN 0e+6144 -> -NaN -dqfma2707 fma Inf -NaN 0e+6144 -> -NaN - -dqfma2711 fma -sNaN -Inf 0e+6144 -> -NaN Invalid_operation -dqfma2712 fma -sNaN -11 0e+6144 -> -NaN Invalid_operation -dqfma2713 fma -sNaN00 NaN 0e+6144 -> -NaN Invalid_operation -dqfma2714 fma -sNaN -sNaN 0e+6144 -> -NaN Invalid_operation -dqfma2715 fma -NaN -sNaN 0e+6144 -> -NaN Invalid_operation -dqfma2716 fma -Inf -sNaN 0e+6144 -> -NaN Invalid_operation -dqfma2717 fma 088 -sNaN 0e+6144 -> -NaN Invalid_operation -dqfma2718 fma Inf -sNaN 0e+6144 -> -NaN Invalid_operation -dqfma2719 fma -NaN -sNaN 0e+6144 -> -NaN Invalid_operation - --- overflow and underflow tests .. note subnormal results --- signs -dqfma2751 fma 1e+4277 1e+3311 0e+6144 -> Infinity Overflow Inexact Rounded -dqfma2752 fma 1e+4277 -1e+3311 0e+6144 -> -Infinity Overflow Inexact Rounded -dqfma2753 fma -1e+4277 1e+3311 0e+6144 -> -Infinity Overflow Inexact Rounded -dqfma2754 fma -1e+4277 -1e+3311 0e+6144 -> Infinity Overflow Inexact Rounded -dqfma2755 fma 1e-4277 1e-3311 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2756 fma 1e-4277 -1e-3311 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2757 fma -1e-4277 1e-3311 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2758 fma -1e-4277 -1e-3311 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -dqfma2760 fma 1e-6069 1e-101 0e+6144 -> 1E-6170 Subnormal -dqfma2761 fma 1e-6069 1e-102 0e+6144 -> 1E-6171 Subnormal -dqfma2762 fma 1e-6069 1e-103 0e+6144 -> 1E-6172 Subnormal -dqfma2763 fma 1e-6069 1e-104 0e+6144 -> 1E-6173 Subnormal -dqfma2764 fma 1e-6069 1e-105 0e+6144 -> 1E-6174 Subnormal -dqfma2765 fma 1e-6069 1e-106 0e+6144 -> 1E-6175 Subnormal -dqfma2766 fma 1e-6069 1e-107 0e+6144 -> 1E-6176 Subnormal -dqfma2767 fma 1e-6069 1e-108 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2768 fma 1e-6069 1e-109 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2769 fma 1e-6069 1e-110 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped --- [no equivalent of 'subnormal' for overflow] -dqfma2770 fma 1e+40 1e+6101 0e+6144 -> 1.000000000000000000000000000000E+6141 Clamped -dqfma2771 fma 1e+40 1e+6102 0e+6144 -> 1.0000000000000000000000000000000E+6142 Clamped -dqfma2772 fma 1e+40 1e+6103 0e+6144 -> 1.00000000000000000000000000000000E+6143 Clamped -dqfma2773 fma 1e+40 1e+6104 0e+6144 -> 1.000000000000000000000000000000000E+6144 Clamped -dqfma2774 fma 1e+40 1e+6105 0e+6144 -> Infinity Overflow Inexact Rounded -dqfma2775 fma 1e+40 1e+6106 0e+6144 -> Infinity Overflow Inexact Rounded -dqfma2776 fma 1e+40 1e+6107 0e+6144 -> Infinity Overflow Inexact Rounded -dqfma2777 fma 1e+40 1e+6108 0e+6144 -> Infinity Overflow Inexact Rounded -dqfma2778 fma 1e+40 1e+6109 0e+6144 -> Infinity Overflow Inexact Rounded -dqfma2779 fma 1e+40 1e+6110 0e+6144 -> Infinity Overflow Inexact Rounded - -dqfma2801 fma 1.0000E-6172 1 0e+6144 -> 1.0000E-6172 Subnormal -dqfma2802 fma 1.000E-6172 1e-1 0e+6144 -> 1.000E-6173 Subnormal -dqfma2803 fma 1.00E-6172 1e-2 0e+6144 -> 1.00E-6174 Subnormal -dqfma2804 fma 1.0E-6172 1e-3 0e+6144 -> 1.0E-6175 Subnormal -dqfma2805 fma 1.0E-6172 1e-4 0e+6144 -> 1E-6176 Subnormal Rounded -dqfma2806 fma 1.3E-6172 1e-4 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqfma2807 fma 1.5E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqfma2808 fma 1.7E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqfma2809 fma 2.3E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqfma2810 fma 2.5E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqfma2811 fma 2.7E-6172 1e-4 0e+6144 -> 3E-6176 Underflow Subnormal Inexact Rounded -dqfma2812 fma 1.49E-6172 1e-4 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqfma2813 fma 1.50E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqfma2814 fma 1.51E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqfma2815 fma 2.49E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqfma2816 fma 2.50E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqfma2817 fma 2.51E-6172 1e-4 0e+6144 -> 3E-6176 Underflow Subnormal Inexact Rounded - -dqfma2818 fma 1E-6172 1e-4 0e+6144 -> 1E-6176 Subnormal -dqfma2819 fma 3E-6172 1e-5 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2820 fma 5E-6172 1e-5 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2821 fma 7E-6172 1e-5 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqfma2822 fma 9E-6172 1e-5 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqfma2823 fma 9.9E-6172 1e-5 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded - -dqfma2824 fma 1E-6172 -1e-4 0e+6144 -> -1E-6176 Subnormal -dqfma2825 fma 3E-6172 -1e-5 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2826 fma -5E-6172 1e-5 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2827 fma 7E-6172 -1e-5 0e+6144 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqfma2828 fma -9E-6172 1e-5 0e+6144 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqfma2829 fma 9.9E-6172 -1e-5 0e+6144 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqfma2830 fma 3.0E-6172 -1e-5 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped - -dqfma2831 fma 1.0E-5977 1e-200 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqfma2832 fma 1.0E-5977 1e-199 0e+6144 -> 1E-6176 Subnormal Rounded -dqfma2833 fma 1.0E-5977 1e-198 0e+6144 -> 1.0E-6175 Subnormal -dqfma2834 fma 2.0E-5977 2e-198 0e+6144 -> 4.0E-6175 Subnormal -dqfma2835 fma 4.0E-5977 4e-198 0e+6144 -> 1.60E-6174 Subnormal -dqfma2836 fma 10.0E-5977 10e-198 0e+6144 -> 1.000E-6173 Subnormal -dqfma2837 fma 30.0E-5977 30e-198 0e+6144 -> 9.000E-6173 Subnormal -dqfma2838 fma 40.0E-5982 40e-166 0e+6144 -> 1.6000E-6145 Subnormal -dqfma2839 fma 40.0E-5982 40e-165 0e+6144 -> 1.6000E-6144 Subnormal -dqfma2840 fma 40.0E-5982 40e-164 0e+6144 -> 1.6000E-6143 - --- Long operand overflow may be a different path -dqfma2870 fma 100 9.999E+6143 0e+6144 -> Infinity Inexact Overflow Rounded -dqfma2871 fma 100 -9.999E+6143 0e+6144 -> -Infinity Inexact Overflow Rounded -dqfma2872 fma 9.999E+6143 100 0e+6144 -> Infinity Inexact Overflow Rounded -dqfma2873 fma -9.999E+6143 100 0e+6144 -> -Infinity Inexact Overflow Rounded - --- check for double-rounded subnormals -dqfma2881 fma 1.2347E-6133 1.2347E-40 0e+6144 -> 1.524E-6173 Inexact Rounded Subnormal Underflow -dqfma2882 fma 1.234E-6133 1.234E-40 0e+6144 -> 1.523E-6173 Inexact Rounded Subnormal Underflow -dqfma2883 fma 1.23E-6133 1.23E-40 0e+6144 -> 1.513E-6173 Inexact Rounded Subnormal Underflow -dqfma2884 fma 1.2E-6133 1.2E-40 0e+6144 -> 1.44E-6173 Subnormal -dqfma2885 fma 1.2E-6133 1.2E-41 0e+6144 -> 1.44E-6174 Subnormal -dqfma2886 fma 1.2E-6133 1.2E-42 0e+6144 -> 1.4E-6175 Subnormal Inexact Rounded Underflow -dqfma2887 fma 1.2E-6133 1.3E-42 0e+6144 -> 1.6E-6175 Subnormal Inexact Rounded Underflow -dqfma2888 fma 1.3E-6133 1.3E-42 0e+6144 -> 1.7E-6175 Subnormal Inexact Rounded Underflow -dqfma2889 fma 1.3E-6133 1.3E-43 0e+6144 -> 2E-6176 Subnormal Inexact Rounded Underflow -dqfma2890 fma 1.3E-6134 1.3E-43 0e+6144 -> 0E-6176 Clamped Subnormal Inexact Rounded Underflow - -dqfma2891 fma 1.2345E-39 1.234E-6133 0e+6144 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow -dqfma2892 fma 1.23456E-39 1.234E-6133 0e+6144 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow -dqfma2893 fma 1.2345E-40 1.234E-6133 0e+6144 -> 1.523E-6173 Inexact Rounded Subnormal Underflow -dqfma2894 fma 1.23456E-40 1.234E-6133 0e+6144 -> 1.523E-6173 Inexact Rounded Subnormal Underflow -dqfma2895 fma 1.2345E-41 1.234E-6133 0e+6144 -> 1.52E-6174 Inexact Rounded Subnormal Underflow -dqfma2896 fma 1.23456E-41 1.234E-6133 0e+6144 -> 1.52E-6174 Inexact Rounded Subnormal Underflow - --- Now explore the case where we get a normal result with Underflow --- prove operands are exact -dqfma2906 fma 9.999999999999999999999999999999999E-6143 1 0e+6144 -> 9.999999999999999999999999999999999E-6143 -dqfma2907 fma 1 0.09999999999999999999999999999999999 0e+6144 -> 0.09999999999999999999999999999999999 --- the next rounds to Nmin -dqfma2908 fma 9.999999999999999999999999999999999E-6143 0.09999999999999999999999999999999999 0e+6144 -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded - --- hugest -dqfma2909 fma 9999999999999999999999999999999999 9999999999999999999999999999999999 0e+6144 -> 9.999999999999999999999999999999998E+67 Inexact Rounded - --- Examples from SQL proposal (Krishna Kulkarni) -precision: 34 -rounding: half_up -maxExponent: 6144 -minExponent: -6143 -dqfma21001 fma 130E-2 120E-2 0e+6144 -> 1.5600 -dqfma21002 fma 130E-2 12E-1 0e+6144 -> 1.560 -dqfma21003 fma 130E-2 1E0 0e+6144 -> 1.30 -dqfma21004 fma 1E2 1E4 0e+6144 -> 1E+6 - --- Null tests -dqfma2990 fma 10 # 0e+6144 -> NaN Invalid_operation -dqfma2991 fma # 10 0e+6144 -> NaN Invalid_operation - - --- ADDITION TESTS ------------------------------------------------------ -rounding: half_even - --- [first group are 'quick confidence check'] -dqadd3001 fma 1 1 1 -> 2 -dqadd3002 fma 1 2 3 -> 5 -dqadd3003 fma 1 '5.75' '3.3' -> 9.05 -dqadd3004 fma 1 '5' '-3' -> 2 -dqadd3005 fma 1 '-5' '-3' -> -8 -dqadd3006 fma 1 '-7' '2.5' -> -4.5 -dqadd3007 fma 1 '0.7' '0.3' -> 1.0 -dqadd3008 fma 1 '1.25' '1.25' -> 2.50 -dqadd3009 fma 1 '1.23456789' '1.00000000' -> '2.23456789' -dqadd3010 fma 1 '1.23456789' '1.00000011' -> '2.23456800' - --- 1234567890123456 1234567890123456 -dqadd3011 fma 1 '0.4444444444444444444444444444444446' '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Inexact Rounded -dqadd3012 fma 1 '0.4444444444444444444444444444444445' '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Rounded -dqadd3013 fma 1 '0.4444444444444444444444444444444444' '0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999' -dqadd3014 fma 1 '4444444444444444444444444444444444' '0.49' -> '4444444444444444444444444444444444' Inexact Rounded -dqadd3015 fma 1 '4444444444444444444444444444444444' '0.499' -> '4444444444444444444444444444444444' Inexact Rounded -dqadd3016 fma 1 '4444444444444444444444444444444444' '0.4999' -> '4444444444444444444444444444444444' Inexact Rounded -dqadd3017 fma 1 '4444444444444444444444444444444444' '0.5000' -> '4444444444444444444444444444444444' Inexact Rounded -dqadd3018 fma 1 '4444444444444444444444444444444444' '0.5001' -> '4444444444444444444444444444444445' Inexact Rounded -dqadd3019 fma 1 '4444444444444444444444444444444444' '0.501' -> '4444444444444444444444444444444445' Inexact Rounded -dqadd3020 fma 1 '4444444444444444444444444444444444' '0.51' -> '4444444444444444444444444444444445' Inexact Rounded - -dqadd3021 fma 1 0 1 -> 1 -dqadd3022 fma 1 1 1 -> 2 -dqadd3023 fma 1 2 1 -> 3 -dqadd3024 fma 1 3 1 -> 4 -dqadd3025 fma 1 4 1 -> 5 -dqadd3026 fma 1 5 1 -> 6 -dqadd3027 fma 1 6 1 -> 7 -dqadd3028 fma 1 7 1 -> 8 -dqadd3029 fma 1 8 1 -> 9 -dqadd3030 fma 1 9 1 -> 10 - --- some carrying effects -dqadd3031 fma 1 '0.9998' '0.0000' -> '0.9998' -dqadd3032 fma 1 '0.9998' '0.0001' -> '0.9999' -dqadd3033 fma 1 '0.9998' '0.0002' -> '1.0000' -dqadd3034 fma 1 '0.9998' '0.0003' -> '1.0001' - -dqadd3035 fma 1 '70' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd3036 fma 1 '700' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd3037 fma 1 '7000' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd3038 fma 1 '70000' '10000e+34' -> '1.000000000000000000000000000000001E+38' Inexact Rounded -dqadd3039 fma 1 '700000' '10000e+34' -> '1.000000000000000000000000000000007E+38' Rounded - --- symmetry: -dqadd3040 fma 1 '10000e+34' '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd3041 fma 1 '10000e+34' '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd3042 fma 1 '10000e+34' '7000' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqadd3044 fma 1 '10000e+34' '70000' -> '1.000000000000000000000000000000001E+38' Inexact Rounded -dqadd3045 fma 1 '10000e+34' '700000' -> '1.000000000000000000000000000000007E+38' Rounded - --- same, without rounding -dqadd3046 fma 1 '10000e+9' '7' -> '10000000000007' -dqadd3047 fma 1 '10000e+9' '70' -> '10000000000070' -dqadd3048 fma 1 '10000e+9' '700' -> '10000000000700' -dqadd3049 fma 1 '10000e+9' '7000' -> '10000000007000' -dqadd3050 fma 1 '10000e+9' '70000' -> '10000000070000' -dqadd3051 fma 1 '10000e+9' '700000' -> '10000000700000' -dqadd3052 fma 1 '10000e+9' '7000000' -> '10000007000000' - --- examples from decarith -dqadd3053 fma 1 '12' '7.00' -> '19.00' -dqadd3054 fma 1 '1.3' '-1.07' -> '0.23' -dqadd3055 fma 1 '1.3' '-1.30' -> '0.00' -dqadd3056 fma 1 '1.3' '-2.07' -> '-0.77' -dqadd3057 fma 1 '1E+2' '1E+4' -> '1.01E+4' - --- leading zero preservation -dqadd3061 fma 1 1 '0.0001' -> '1.0001' -dqadd3062 fma 1 1 '0.00001' -> '1.00001' -dqadd3063 fma 1 1 '0.000001' -> '1.000001' -dqadd3064 fma 1 1 '0.0000001' -> '1.0000001' -dqadd3065 fma 1 1 '0.00000001' -> '1.00000001' - --- some funny zeros [in case of bad signum] -dqadd3070 fma 1 1 0 -> 1 -dqadd3071 fma 1 1 0. -> 1 -dqadd3072 fma 1 1 .0 -> 1.0 -dqadd3073 fma 1 1 0.0 -> 1.0 -dqadd3074 fma 1 1 0.00 -> 1.00 -dqadd3075 fma 1 0 1 -> 1 -dqadd3076 fma 1 0. 1 -> 1 -dqadd3077 fma 1 .0 1 -> 1.0 -dqadd3078 fma 1 0.0 1 -> 1.0 -dqadd3079 fma 1 0.00 1 -> 1.00 - --- some carries -dqadd3080 fma 1 999999998 1 -> 999999999 -dqadd3081 fma 1 999999999 1 -> 1000000000 -dqadd3082 fma 1 99999999 1 -> 100000000 -dqadd3083 fma 1 9999999 1 -> 10000000 -dqadd3084 fma 1 999999 1 -> 1000000 -dqadd3085 fma 1 99999 1 -> 100000 -dqadd3086 fma 1 9999 1 -> 10000 -dqadd3087 fma 1 999 1 -> 1000 -dqadd3088 fma 1 99 1 -> 100 -dqadd3089 fma 1 9 1 -> 10 - - --- more LHS swaps -dqadd3090 fma 1 '-56267E-10' 0 -> '-0.0000056267' -dqadd3091 fma 1 '-56267E-6' 0 -> '-0.056267' -dqadd3092 fma 1 '-56267E-5' 0 -> '-0.56267' -dqadd3093 fma 1 '-56267E-4' 0 -> '-5.6267' -dqadd3094 fma 1 '-56267E-3' 0 -> '-56.267' -dqadd3095 fma 1 '-56267E-2' 0 -> '-562.67' -dqadd3096 fma 1 '-56267E-1' 0 -> '-5626.7' -dqadd3097 fma 1 '-56267E-0' 0 -> '-56267' -dqadd3098 fma 1 '-5E-10' 0 -> '-5E-10' -dqadd3099 fma 1 '-5E-7' 0 -> '-5E-7' -dqadd3100 fma 1 '-5E-6' 0 -> '-0.000005' -dqadd3101 fma 1 '-5E-5' 0 -> '-0.00005' -dqadd3102 fma 1 '-5E-4' 0 -> '-0.0005' -dqadd3103 fma 1 '-5E-1' 0 -> '-0.5' -dqadd3104 fma 1 '-5E0' 0 -> '-5' -dqadd3105 fma 1 '-5E1' 0 -> '-50' -dqadd3106 fma 1 '-5E5' 0 -> '-500000' -dqadd3107 fma 1 '-5E33' 0 -> '-5000000000000000000000000000000000' -dqadd3108 fma 1 '-5E34' 0 -> '-5.000000000000000000000000000000000E+34' Rounded -dqadd3109 fma 1 '-5E35' 0 -> '-5.000000000000000000000000000000000E+35' Rounded -dqadd3110 fma 1 '-5E36' 0 -> '-5.000000000000000000000000000000000E+36' Rounded -dqadd3111 fma 1 '-5E100' 0 -> '-5.000000000000000000000000000000000E+100' Rounded - --- more RHS swaps -dqadd3113 fma 1 0 '-56267E-10' -> '-0.0000056267' -dqadd3114 fma 1 0 '-56267E-6' -> '-0.056267' -dqadd3116 fma 1 0 '-56267E-5' -> '-0.56267' -dqadd3117 fma 1 0 '-56267E-4' -> '-5.6267' -dqadd3119 fma 1 0 '-56267E-3' -> '-56.267' -dqadd3120 fma 1 0 '-56267E-2' -> '-562.67' -dqadd3121 fma 1 0 '-56267E-1' -> '-5626.7' -dqadd3122 fma 1 0 '-56267E-0' -> '-56267' -dqadd3123 fma 1 0 '-5E-10' -> '-5E-10' -dqadd3124 fma 1 0 '-5E-7' -> '-5E-7' -dqadd3125 fma 1 0 '-5E-6' -> '-0.000005' -dqadd3126 fma 1 0 '-5E-5' -> '-0.00005' -dqadd3127 fma 1 0 '-5E-4' -> '-0.0005' -dqadd3128 fma 1 0 '-5E-1' -> '-0.5' -dqadd3129 fma 1 0 '-5E0' -> '-5' -dqadd3130 fma 1 0 '-5E1' -> '-50' -dqadd3131 fma 1 0 '-5E5' -> '-500000' -dqadd3132 fma 1 0 '-5E33' -> '-5000000000000000000000000000000000' -dqadd3133 fma 1 0 '-5E34' -> '-5.000000000000000000000000000000000E+34' Rounded -dqadd3134 fma 1 0 '-5E35' -> '-5.000000000000000000000000000000000E+35' Rounded -dqadd3135 fma 1 0 '-5E36' -> '-5.000000000000000000000000000000000E+36' Rounded -dqadd3136 fma 1 0 '-5E100' -> '-5.000000000000000000000000000000000E+100' Rounded - --- related -dqadd3137 fma 1 1 '0E-39' -> '1.000000000000000000000000000000000' Rounded -dqadd3138 fma 1 -1 '0E-39' -> '-1.000000000000000000000000000000000' Rounded -dqadd3139 fma 1 '0E-39' 1 -> '1.000000000000000000000000000000000' Rounded -dqadd3140 fma 1 '0E-39' -1 -> '-1.000000000000000000000000000000000' Rounded -dqadd3141 fma 1 1E+29 0.0000 -> '100000000000000000000000000000.0000' -dqadd3142 fma 1 1E+29 0.00000 -> '100000000000000000000000000000.0000' Rounded -dqadd3143 fma 1 0.000 1E+30 -> '1000000000000000000000000000000.000' -dqadd3144 fma 1 0.0000 1E+30 -> '1000000000000000000000000000000.000' Rounded - --- [some of the next group are really constructor tests] -dqadd3146 fma 1 '00.0' 0 -> '0.0' -dqadd3147 fma 1 '0.00' 0 -> '0.00' -dqadd3148 fma 1 0 '0.00' -> '0.00' -dqadd3149 fma 1 0 '00.0' -> '0.0' -dqadd3150 fma 1 '00.0' '0.00' -> '0.00' -dqadd3151 fma 1 '0.00' '00.0' -> '0.00' -dqadd3152 fma 1 '3' '.3' -> '3.3' -dqadd3153 fma 1 '3.' '.3' -> '3.3' -dqadd3154 fma 1 '3.0' '.3' -> '3.3' -dqadd3155 fma 1 '3.00' '.3' -> '3.30' -dqadd3156 fma 1 '3' '3' -> '6' -dqadd3157 fma 1 '3' '+3' -> '6' -dqadd3158 fma 1 '3' '-3' -> '0' -dqadd3159 fma 1 '0.3' '-0.3' -> '0.0' -dqadd3160 fma 1 '0.03' '-0.03' -> '0.00' - --- try borderline precision, with carries, etc. -dqadd3161 fma 1 '1E+12' '-1' -> '999999999999' -dqadd3162 fma 1 '1E+12' '1.11' -> '1000000000001.11' -dqadd3163 fma 1 '1.11' '1E+12' -> '1000000000001.11' -dqadd3164 fma 1 '-1' '1E+12' -> '999999999999' -dqadd3165 fma 1 '7E+12' '-1' -> '6999999999999' -dqadd3166 fma 1 '7E+12' '1.11' -> '7000000000001.11' -dqadd3167 fma 1 '1.11' '7E+12' -> '7000000000001.11' -dqadd3168 fma 1 '-1' '7E+12' -> '6999999999999' - -rounding: half_up -dqadd3170 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555567' -> '5.000000000000000000000000000000001' Inexact Rounded -dqadd3171 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555566' -> '5.000000000000000000000000000000001' Inexact Rounded -dqadd3172 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555565' -> '5.000000000000000000000000000000001' Inexact Rounded -dqadd3173 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555564' -> '5.000000000000000000000000000000000' Inexact Rounded -dqadd3174 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555553' -> '4.999999999999999999999999999999999' Inexact Rounded -dqadd3175 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555552' -> '4.999999999999999999999999999999999' Inexact Rounded -dqadd3176 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555551' -> '4.999999999999999999999999999999999' Inexact Rounded -dqadd3177 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555550' -> '4.999999999999999999999999999999999' Rounded -dqadd3178 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555545' -> '4.999999999999999999999999999999999' Inexact Rounded -dqadd3179 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555544' -> '4.999999999999999999999999999999998' Inexact Rounded -dqadd3180 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555543' -> '4.999999999999999999999999999999998' Inexact Rounded -dqadd3181 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555542' -> '4.999999999999999999999999999999998' Inexact Rounded -dqadd3182 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555541' -> '4.999999999999999999999999999999998' Inexact Rounded -dqadd3183 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555540' -> '4.999999999999999999999999999999998' Rounded - --- and some more, including residue effects and different roundings -rounding: half_up -dqadd3200 fma 1 '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' -dqadd3201 fma 1 '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3202 fma 1 '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3203 fma 1 '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3204 fma 1 '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3205 fma 1 '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3206 fma 1 '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3207 fma 1 '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3208 fma 1 '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3209 fma 1 '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3210 fma 1 '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3211 fma 1 '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3212 fma 1 '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3213 fma 1 '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3214 fma 1 '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3215 fma 1 '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3216 fma 1 '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' -dqadd3217 fma 1 '1231234567890123456784560123456789' 1.000000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3218 fma 1 '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3219 fma 1 '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded - -rounding: half_even -dqadd3220 fma 1 '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' -dqadd3221 fma 1 '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3222 fma 1 '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3223 fma 1 '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3224 fma 1 '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3225 fma 1 '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3226 fma 1 '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3227 fma 1 '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3228 fma 1 '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3229 fma 1 '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3230 fma 1 '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3231 fma 1 '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3232 fma 1 '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3233 fma 1 '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3234 fma 1 '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3235 fma 1 '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3236 fma 1 '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' -dqadd3237 fma 1 '1231234567890123456784560123456789' 1.00000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3238 fma 1 '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3239 fma 1 '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded --- critical few with even bottom digit... -dqadd3240 fma 1 '1231234567890123456784560123456788' 0.499999999 -> '1231234567890123456784560123456788' Inexact Rounded -dqadd3241 fma 1 '1231234567890123456784560123456788' 0.5 -> '1231234567890123456784560123456788' Inexact Rounded -dqadd3242 fma 1 '1231234567890123456784560123456788' 0.500000001 -> '1231234567890123456784560123456789' Inexact Rounded - -rounding: down -dqadd3250 fma 1 '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' -dqadd3251 fma 1 '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3252 fma 1 '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3253 fma 1 '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3254 fma 1 '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3255 fma 1 '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3256 fma 1 '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3257 fma 1 '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3258 fma 1 '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3259 fma 1 '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3260 fma 1 '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3261 fma 1 '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3262 fma 1 '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3263 fma 1 '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3264 fma 1 '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3265 fma 1 '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456789' Inexact Rounded -dqadd3266 fma 1 '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' -dqadd3267 fma 1 '1231234567890123456784560123456789' 1.00000001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3268 fma 1 '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded -dqadd3269 fma 1 '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded - --- 1 in last place tests -rounding: half_up -dqadd3301 fma 1 -1 1 -> 0 -dqadd3302 fma 1 0 1 -> 1 -dqadd3303 fma 1 1 1 -> 2 -dqadd3304 fma 1 12 1 -> 13 -dqadd3305 fma 1 98 1 -> 99 -dqadd3306 fma 1 99 1 -> 100 -dqadd3307 fma 1 100 1 -> 101 -dqadd3308 fma 1 101 1 -> 102 -dqadd3309 fma 1 -1 -1 -> -2 -dqadd3310 fma 1 0 -1 -> -1 -dqadd3311 fma 1 1 -1 -> 0 -dqadd3312 fma 1 12 -1 -> 11 -dqadd3313 fma 1 98 -1 -> 97 -dqadd3314 fma 1 99 -1 -> 98 -dqadd3315 fma 1 100 -1 -> 99 -dqadd3316 fma 1 101 -1 -> 100 - -dqadd3321 fma 1 -0.01 0.01 -> 0.00 -dqadd3322 fma 1 0.00 0.01 -> 0.01 -dqadd3323 fma 1 0.01 0.01 -> 0.02 -dqadd3324 fma 1 0.12 0.01 -> 0.13 -dqadd3325 fma 1 0.98 0.01 -> 0.99 -dqadd3326 fma 1 0.99 0.01 -> 1.00 -dqadd3327 fma 1 1.00 0.01 -> 1.01 -dqadd3328 fma 1 1.01 0.01 -> 1.02 -dqadd3329 fma 1 -0.01 -0.01 -> -0.02 -dqadd3330 fma 1 0.00 -0.01 -> -0.01 -dqadd3331 fma 1 0.01 -0.01 -> 0.00 -dqadd3332 fma 1 0.12 -0.01 -> 0.11 -dqadd3333 fma 1 0.98 -0.01 -> 0.97 -dqadd3334 fma 1 0.99 -0.01 -> 0.98 -dqadd3335 fma 1 1.00 -0.01 -> 0.99 -dqadd3336 fma 1 1.01 -0.01 -> 1.00 - --- some more cases where adding 0 affects the coefficient -dqadd3340 fma 1 1E+3 0 -> 1000 -dqadd3341 fma 1 1E+33 0 -> 1000000000000000000000000000000000 -dqadd3342 fma 1 1E+34 0 -> 1.000000000000000000000000000000000E+34 Rounded -dqadd3343 fma 1 1E+35 0 -> 1.000000000000000000000000000000000E+35 Rounded --- which simply follow from these cases ... -dqadd3344 fma 1 1E+3 1 -> 1001 -dqadd3345 fma 1 1E+33 1 -> 1000000000000000000000000000000001 -dqadd3346 fma 1 1E+34 1 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd3347 fma 1 1E+35 1 -> 1.000000000000000000000000000000000E+35 Inexact Rounded -dqadd3348 fma 1 1E+3 7 -> 1007 -dqadd3349 fma 1 1E+33 7 -> 1000000000000000000000000000000007 -dqadd3350 fma 1 1E+34 7 -> 1.000000000000000000000000000000001E+34 Inexact Rounded -dqadd3351 fma 1 1E+35 7 -> 1.000000000000000000000000000000000E+35 Inexact Rounded - --- tryzeros cases -rounding: half_up -dqadd3360 fma 1 0E+50 10000E+1 -> 1.0000E+5 -dqadd3361 fma 1 0E-50 10000E+1 -> 100000.0000000000000000000000000000 Rounded -dqadd3362 fma 1 10000E+1 0E-50 -> 100000.0000000000000000000000000000 Rounded -dqadd3363 fma 1 10000E+1 10000E-50 -> 100000.0000000000000000000000000000 Rounded Inexact -dqadd3364 fma 1 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0E+6111 --- 1 234567890123456789012345678901234 - --- a curiosity from JSR 13 testing -rounding: half_down -dqadd3370 fma 1 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 -dqadd3371 fma 1 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact -rounding: half_up -dqadd3372 fma 1 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 -dqadd3373 fma 1 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact -rounding: half_even -dqadd3374 fma 1 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 -dqadd3375 fma 1 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact - --- ulp replacement tests -dqadd3400 fma 1 1 77e-32 -> 1.00000000000000000000000000000077 -dqadd3401 fma 1 1 77e-33 -> 1.000000000000000000000000000000077 -dqadd3402 fma 1 1 77e-34 -> 1.000000000000000000000000000000008 Inexact Rounded -dqadd3403 fma 1 1 77e-35 -> 1.000000000000000000000000000000001 Inexact Rounded -dqadd3404 fma 1 1 77e-36 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd3405 fma 1 1 77e-37 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd3406 fma 1 1 77e-299 -> 1.000000000000000000000000000000000 Inexact Rounded - -dqadd3410 fma 1 10 77e-32 -> 10.00000000000000000000000000000077 -dqadd3411 fma 1 10 77e-33 -> 10.00000000000000000000000000000008 Inexact Rounded -dqadd3412 fma 1 10 77e-34 -> 10.00000000000000000000000000000001 Inexact Rounded -dqadd3413 fma 1 10 77e-35 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd3414 fma 1 10 77e-36 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd3415 fma 1 10 77e-37 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd3416 fma 1 10 77e-299 -> 10.00000000000000000000000000000000 Inexact Rounded - -dqadd3420 fma 1 77e-32 1 -> 1.00000000000000000000000000000077 -dqadd3421 fma 1 77e-33 1 -> 1.000000000000000000000000000000077 -dqadd3422 fma 1 77e-34 1 -> 1.000000000000000000000000000000008 Inexact Rounded -dqadd3423 fma 1 77e-35 1 -> 1.000000000000000000000000000000001 Inexact Rounded -dqadd3424 fma 1 77e-36 1 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd3425 fma 1 77e-37 1 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd3426 fma 1 77e-299 1 -> 1.000000000000000000000000000000000 Inexact Rounded - -dqadd3430 fma 1 77e-32 10 -> 10.00000000000000000000000000000077 -dqadd3431 fma 1 77e-33 10 -> 10.00000000000000000000000000000008 Inexact Rounded -dqadd3432 fma 1 77e-34 10 -> 10.00000000000000000000000000000001 Inexact Rounded -dqadd3433 fma 1 77e-35 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd3434 fma 1 77e-36 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd3435 fma 1 77e-37 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd3436 fma 1 77e-299 10 -> 10.00000000000000000000000000000000 Inexact Rounded - --- negative ulps -dqadd36440 fma 1 1 -77e-32 -> 0.99999999999999999999999999999923 -dqadd36441 fma 1 1 -77e-33 -> 0.999999999999999999999999999999923 -dqadd36442 fma 1 1 -77e-34 -> 0.9999999999999999999999999999999923 -dqadd36443 fma 1 1 -77e-35 -> 0.9999999999999999999999999999999992 Inexact Rounded -dqadd36444 fma 1 1 -77e-36 -> 0.9999999999999999999999999999999999 Inexact Rounded -dqadd36445 fma 1 1 -77e-37 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd36446 fma 1 1 -77e-99 -> 1.000000000000000000000000000000000 Inexact Rounded - -dqadd36450 fma 1 10 -77e-32 -> 9.99999999999999999999999999999923 -dqadd36451 fma 1 10 -77e-33 -> 9.999999999999999999999999999999923 -dqadd36452 fma 1 10 -77e-34 -> 9.999999999999999999999999999999992 Inexact Rounded -dqadd36453 fma 1 10 -77e-35 -> 9.999999999999999999999999999999999 Inexact Rounded -dqadd36454 fma 1 10 -77e-36 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd36455 fma 1 10 -77e-37 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd36456 fma 1 10 -77e-99 -> 10.00000000000000000000000000000000 Inexact Rounded - -dqadd36460 fma 1 -77e-32 1 -> 0.99999999999999999999999999999923 -dqadd36461 fma 1 -77e-33 1 -> 0.999999999999999999999999999999923 -dqadd36462 fma 1 -77e-34 1 -> 0.9999999999999999999999999999999923 -dqadd36463 fma 1 -77e-35 1 -> 0.9999999999999999999999999999999992 Inexact Rounded -dqadd36464 fma 1 -77e-36 1 -> 0.9999999999999999999999999999999999 Inexact Rounded -dqadd36465 fma 1 -77e-37 1 -> 1.000000000000000000000000000000000 Inexact Rounded -dqadd36466 fma 1 -77e-99 1 -> 1.000000000000000000000000000000000 Inexact Rounded - -dqadd36470 fma 1 -77e-32 10 -> 9.99999999999999999999999999999923 -dqadd36471 fma 1 -77e-33 10 -> 9.999999999999999999999999999999923 -dqadd36472 fma 1 -77e-34 10 -> 9.999999999999999999999999999999992 Inexact Rounded -dqadd36473 fma 1 -77e-35 10 -> 9.999999999999999999999999999999999 Inexact Rounded -dqadd36474 fma 1 -77e-36 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd36475 fma 1 -77e-37 10 -> 10.00000000000000000000000000000000 Inexact Rounded -dqadd36476 fma 1 -77e-99 10 -> 10.00000000000000000000000000000000 Inexact Rounded - --- negative ulps -dqadd36480 fma 1 -1 77e-32 -> -0.99999999999999999999999999999923 -dqadd36481 fma 1 -1 77e-33 -> -0.999999999999999999999999999999923 -dqadd36482 fma 1 -1 77e-34 -> -0.9999999999999999999999999999999923 -dqadd36483 fma 1 -1 77e-35 -> -0.9999999999999999999999999999999992 Inexact Rounded -dqadd36484 fma 1 -1 77e-36 -> -0.9999999999999999999999999999999999 Inexact Rounded -dqadd36485 fma 1 -1 77e-37 -> -1.000000000000000000000000000000000 Inexact Rounded -dqadd36486 fma 1 -1 77e-99 -> -1.000000000000000000000000000000000 Inexact Rounded - -dqadd36490 fma 1 -10 77e-32 -> -9.99999999999999999999999999999923 -dqadd36491 fma 1 -10 77e-33 -> -9.999999999999999999999999999999923 -dqadd36492 fma 1 -10 77e-34 -> -9.999999999999999999999999999999992 Inexact Rounded -dqadd36493 fma 1 -10 77e-35 -> -9.999999999999999999999999999999999 Inexact Rounded -dqadd36494 fma 1 -10 77e-36 -> -10.00000000000000000000000000000000 Inexact Rounded -dqadd36495 fma 1 -10 77e-37 -> -10.00000000000000000000000000000000 Inexact Rounded -dqadd36496 fma 1 -10 77e-99 -> -10.00000000000000000000000000000000 Inexact Rounded - -dqadd36500 fma 1 77e-32 -1 -> -0.99999999999999999999999999999923 -dqadd36501 fma 1 77e-33 -1 -> -0.999999999999999999999999999999923 -dqadd36502 fma 1 77e-34 -1 -> -0.9999999999999999999999999999999923 -dqadd36503 fma 1 77e-35 -1 -> -0.9999999999999999999999999999999992 Inexact Rounded -dqadd36504 fma 1 77e-36 -1 -> -0.9999999999999999999999999999999999 Inexact Rounded -dqadd36505 fma 1 77e-37 -1 -> -1.000000000000000000000000000000000 Inexact Rounded -dqadd36506 fma 1 77e-99 -1 -> -1.000000000000000000000000000000000 Inexact Rounded - -dqadd36510 fma 1 77e-32 -10 -> -9.99999999999999999999999999999923 -dqadd36511 fma 1 77e-33 -10 -> -9.999999999999999999999999999999923 -dqadd36512 fma 1 77e-34 -10 -> -9.999999999999999999999999999999992 Inexact Rounded -dqadd36513 fma 1 77e-35 -10 -> -9.999999999999999999999999999999999 Inexact Rounded -dqadd36514 fma 1 77e-36 -10 -> -10.00000000000000000000000000000000 Inexact Rounded -dqadd36515 fma 1 77e-37 -10 -> -10.00000000000000000000000000000000 Inexact Rounded -dqadd36516 fma 1 77e-99 -10 -> -10.00000000000000000000000000000000 Inexact Rounded - --- and some more residue effects and different roundings -rounding: half_up -dqadd36540 fma 1 '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' -dqadd36541 fma 1 '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36542 fma 1 '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36543 fma 1 '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36544 fma 1 '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36545 fma 1 '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36546 fma 1 '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36547 fma 1 '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36548 fma 1 '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36549 fma 1 '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36550 fma 1 '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36551 fma 1 '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36552 fma 1 '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36553 fma 1 '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36554 fma 1 '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36555 fma 1 '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36556 fma 1 '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' -dqadd36557 fma 1 '9876543219876543216543210123456789' 1.000000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36558 fma 1 '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36559 fma 1 '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded - -rounding: half_even -dqadd36560 fma 1 '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' -dqadd36561 fma 1 '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36562 fma 1 '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36563 fma 1 '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36564 fma 1 '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36565 fma 1 '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36566 fma 1 '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36567 fma 1 '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd36568 fma 1 '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36569 fma 1 '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36570 fma 1 '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36571 fma 1 '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36572 fma 1 '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36573 fma 1 '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36574 fma 1 '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36575 fma 1 '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36576 fma 1 '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' -dqadd36577 fma 1 '9876543219876543216543210123456789' 1.00000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36578 fma 1 '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd36579 fma 1 '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded - --- critical few with even bottom digit... -dqadd37540 fma 1 '9876543219876543216543210123456788' 0.499999999 -> '9876543219876543216543210123456788' Inexact Rounded -dqadd37541 fma 1 '9876543219876543216543210123456788' 0.5 -> '9876543219876543216543210123456788' Inexact Rounded -dqadd37542 fma 1 '9876543219876543216543210123456788' 0.500000001 -> '9876543219876543216543210123456789' Inexact Rounded - -rounding: down -dqadd37550 fma 1 '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' -dqadd37551 fma 1 '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37552 fma 1 '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37553 fma 1 '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37554 fma 1 '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37555 fma 1 '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37556 fma 1 '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37557 fma 1 '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37558 fma 1 '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37559 fma 1 '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37560 fma 1 '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37561 fma 1 '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37562 fma 1 '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37563 fma 1 '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37564 fma 1 '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37565 fma 1 '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456789' Inexact Rounded -dqadd37566 fma 1 '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' -dqadd37567 fma 1 '9876543219876543216543210123456789' 1.00000001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd37568 fma 1 '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded -dqadd37569 fma 1 '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded - --- more zeros, etc. -rounding: half_even - -dqadd37701 fma 1 5.00 1.00E-3 -> 5.00100 -dqadd37702 fma 1 00.00 0.000 -> 0.000 -dqadd37703 fma 1 00.00 0E-3 -> 0.000 -dqadd37704 fma 1 0E-3 00.00 -> 0.000 - -dqadd37710 fma 1 0E+3 00.00 -> 0.00 -dqadd37711 fma 1 0E+3 00.0 -> 0.0 -dqadd37712 fma 1 0E+3 00. -> 0 -dqadd37713 fma 1 0E+3 00.E+1 -> 0E+1 -dqadd37714 fma 1 0E+3 00.E+2 -> 0E+2 -dqadd37715 fma 1 0E+3 00.E+3 -> 0E+3 -dqadd37716 fma 1 0E+3 00.E+4 -> 0E+3 -dqadd37717 fma 1 0E+3 00.E+5 -> 0E+3 -dqadd37718 fma 1 0E+3 -00.0 -> 0.0 -dqadd37719 fma 1 0E+3 -00. -> 0 -dqadd37731 fma 1 0E+3 -00.E+1 -> 0E+1 - -dqadd37720 fma 1 00.00 0E+3 -> 0.00 -dqadd37721 fma 1 00.0 0E+3 -> 0.0 -dqadd37722 fma 1 00. 0E+3 -> 0 -dqadd37723 fma 1 00.E+1 0E+3 -> 0E+1 -dqadd37724 fma 1 00.E+2 0E+3 -> 0E+2 -dqadd37725 fma 1 00.E+3 0E+3 -> 0E+3 -dqadd37726 fma 1 00.E+4 0E+3 -> 0E+3 -dqadd37727 fma 1 00.E+5 0E+3 -> 0E+3 -dqadd37728 fma 1 -00.00 0E+3 -> 0.00 -dqadd37729 fma 1 -00.0 0E+3 -> 0.0 -dqadd37730 fma 1 -00. 0E+3 -> 0 - -dqadd37732 fma 1 0 0 -> 0 -dqadd37733 fma 1 0 -0 -> 0 -dqadd37734 fma 1 -0 0 -> 0 -dqadd37735 fma 1 -0 -0 -> -0 -- IEEE 854 special case - -dqadd37736 fma 1 1 -1 -> 0 -dqadd37737 fma 1 -1 -1 -> -2 -dqadd37738 fma 1 1 1 -> 2 -dqadd37739 fma 1 -1 1 -> 0 - -dqadd37741 fma 1 0 -1 -> -1 -dqadd37742 fma 1 -0 -1 -> -1 -dqadd37743 fma 1 0 1 -> 1 -dqadd37744 fma 1 -0 1 -> 1 -dqadd37745 fma 1 -1 0 -> -1 -dqadd37746 fma 1 -1 -0 -> -1 -dqadd37747 fma 1 1 0 -> 1 -dqadd37748 fma 1 1 -0 -> 1 - -dqadd37751 fma 1 0.0 -1 -> -1.0 -dqadd37752 fma 1 -0.0 -1 -> -1.0 -dqadd37753 fma 1 0.0 1 -> 1.0 -dqadd37754 fma 1 -0.0 1 -> 1.0 -dqadd37755 fma 1 -1.0 0 -> -1.0 -dqadd37756 fma 1 -1.0 -0 -> -1.0 -dqadd37757 fma 1 1.0 0 -> 1.0 -dqadd37758 fma 1 1.0 -0 -> 1.0 - -dqadd37761 fma 1 0 -1.0 -> -1.0 -dqadd37762 fma 1 -0 -1.0 -> -1.0 -dqadd37763 fma 1 0 1.0 -> 1.0 -dqadd37764 fma 1 -0 1.0 -> 1.0 -dqadd37765 fma 1 -1 0.0 -> -1.0 -dqadd37766 fma 1 -1 -0.0 -> -1.0 -dqadd37767 fma 1 1 0.0 -> 1.0 -dqadd37768 fma 1 1 -0.0 -> 1.0 - -dqadd37771 fma 1 0.0 -1.0 -> -1.0 -dqadd37772 fma 1 -0.0 -1.0 -> -1.0 -dqadd37773 fma 1 0.0 1.0 -> 1.0 -dqadd37774 fma 1 -0.0 1.0 -> 1.0 -dqadd37775 fma 1 -1.0 0.0 -> -1.0 -dqadd37776 fma 1 -1.0 -0.0 -> -1.0 -dqadd37777 fma 1 1.0 0.0 -> 1.0 -dqadd37778 fma 1 1.0 -0.0 -> 1.0 - --- Specials -dqadd37780 fma 1 -Inf -Inf -> -Infinity -dqadd37781 fma 1 -Inf -1000 -> -Infinity -dqadd37782 fma 1 -Inf -1 -> -Infinity -dqadd37783 fma 1 -Inf -0 -> -Infinity -dqadd37784 fma 1 -Inf 0 -> -Infinity -dqadd37785 fma 1 -Inf 1 -> -Infinity -dqadd37786 fma 1 -Inf 1000 -> -Infinity -dqadd37787 fma 1 -1000 -Inf -> -Infinity -dqadd37788 fma 1 -Inf -Inf -> -Infinity -dqadd37789 fma 1 -1 -Inf -> -Infinity -dqadd37790 fma 1 -0 -Inf -> -Infinity -dqadd37791 fma 1 0 -Inf -> -Infinity -dqadd37792 fma 1 1 -Inf -> -Infinity -dqadd37793 fma 1 1000 -Inf -> -Infinity -dqadd37794 fma 1 Inf -Inf -> NaN Invalid_operation - -dqadd37800 fma 1 Inf -Inf -> NaN Invalid_operation -dqadd37801 fma 1 Inf -1000 -> Infinity -dqadd37802 fma 1 Inf -1 -> Infinity -dqadd37803 fma 1 Inf -0 -> Infinity -dqadd37804 fma 1 Inf 0 -> Infinity -dqadd37805 fma 1 Inf 1 -> Infinity -dqadd37806 fma 1 Inf 1000 -> Infinity -dqadd37807 fma 1 Inf Inf -> Infinity -dqadd37808 fma 1 -1000 Inf -> Infinity -dqadd37809 fma 1 -Inf Inf -> NaN Invalid_operation -dqadd37810 fma 1 -1 Inf -> Infinity -dqadd37811 fma 1 -0 Inf -> Infinity -dqadd37812 fma 1 0 Inf -> Infinity -dqadd37813 fma 1 1 Inf -> Infinity -dqadd37814 fma 1 1000 Inf -> Infinity -dqadd37815 fma 1 Inf Inf -> Infinity - -dqadd37821 fma 1 NaN -Inf -> NaN -dqadd37822 fma 1 NaN -1000 -> NaN -dqadd37823 fma 1 NaN -1 -> NaN -dqadd37824 fma 1 NaN -0 -> NaN -dqadd37825 fma 1 NaN 0 -> NaN -dqadd37826 fma 1 NaN 1 -> NaN -dqadd37827 fma 1 NaN 1000 -> NaN -dqadd37828 fma 1 NaN Inf -> NaN -dqadd37829 fma 1 NaN NaN -> NaN -dqadd37830 fma 1 -Inf NaN -> NaN -dqadd37831 fma 1 -1000 NaN -> NaN -dqadd37832 fma 1 -1 NaN -> NaN -dqadd37833 fma 1 -0 NaN -> NaN -dqadd37834 fma 1 0 NaN -> NaN -dqadd37835 fma 1 1 NaN -> NaN -dqadd37836 fma 1 1000 NaN -> NaN -dqadd37837 fma 1 Inf NaN -> NaN - -dqadd37841 fma 1 sNaN -Inf -> NaN Invalid_operation -dqadd37842 fma 1 sNaN -1000 -> NaN Invalid_operation -dqadd37843 fma 1 sNaN -1 -> NaN Invalid_operation -dqadd37844 fma 1 sNaN -0 -> NaN Invalid_operation -dqadd37845 fma 1 sNaN 0 -> NaN Invalid_operation -dqadd37846 fma 1 sNaN 1 -> NaN Invalid_operation -dqadd37847 fma 1 sNaN 1000 -> NaN Invalid_operation -dqadd37848 fma 1 sNaN NaN -> NaN Invalid_operation -dqadd37849 fma 1 sNaN sNaN -> NaN Invalid_operation -dqadd37850 fma 1 NaN sNaN -> NaN Invalid_operation -dqadd37851 fma 1 -Inf sNaN -> NaN Invalid_operation -dqadd37852 fma 1 -1000 sNaN -> NaN Invalid_operation -dqadd37853 fma 1 -1 sNaN -> NaN Invalid_operation -dqadd37854 fma 1 -0 sNaN -> NaN Invalid_operation -dqadd37855 fma 1 0 sNaN -> NaN Invalid_operation -dqadd37856 fma 1 1 sNaN -> NaN Invalid_operation -dqadd37857 fma 1 1000 sNaN -> NaN Invalid_operation -dqadd37858 fma 1 Inf sNaN -> NaN Invalid_operation -dqadd37859 fma 1 NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqadd37861 fma 1 NaN1 -Inf -> NaN1 -dqadd37862 fma 1 +NaN2 -1000 -> NaN2 -dqadd37863 fma 1 NaN3 1000 -> NaN3 -dqadd37864 fma 1 NaN4 Inf -> NaN4 -dqadd37865 fma 1 NaN5 +NaN6 -> NaN5 -dqadd37866 fma 1 -Inf NaN7 -> NaN7 -dqadd37867 fma 1 -1000 NaN8 -> NaN8 -dqadd37868 fma 1 1000 NaN9 -> NaN9 -dqadd37869 fma 1 Inf +NaN10 -> NaN10 -dqadd37871 fma 1 sNaN11 -Inf -> NaN11 Invalid_operation -dqadd37872 fma 1 sNaN12 -1000 -> NaN12 Invalid_operation -dqadd37873 fma 1 sNaN13 1000 -> NaN13 Invalid_operation -dqadd37874 fma 1 sNaN14 NaN17 -> NaN14 Invalid_operation -dqadd37875 fma 1 sNaN15 sNaN18 -> NaN15 Invalid_operation -dqadd37876 fma 1 NaN16 sNaN19 -> NaN19 Invalid_operation -dqadd37877 fma 1 -Inf +sNaN20 -> NaN20 Invalid_operation -dqadd37878 fma 1 -1000 sNaN21 -> NaN21 Invalid_operation -dqadd37879 fma 1 1000 sNaN22 -> NaN22 Invalid_operation -dqadd37880 fma 1 Inf sNaN23 -> NaN23 Invalid_operation -dqadd37881 fma 1 +NaN25 +sNaN24 -> NaN24 Invalid_operation -dqadd37882 fma 1 -NaN26 NaN28 -> -NaN26 -dqadd37883 fma 1 -sNaN27 sNaN29 -> -NaN27 Invalid_operation -dqadd37884 fma 1 1000 -NaN30 -> -NaN30 -dqadd37885 fma 1 1000 -sNaN31 -> -NaN31 Invalid_operation - --- Here we explore near the boundary of rounding a subnormal to Nmin -dqadd37575 fma 1 1E-6143 -1E-6176 -> 9.99999999999999999999999999999999E-6144 Subnormal -dqadd37576 fma 1 -1E-6143 +1E-6176 -> -9.99999999999999999999999999999999E-6144 Subnormal - --- check overflow edge case --- 1234567890123456 -dqadd37972 apply 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 -dqadd37973 fma 1 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37974 fma 1 9999999999999999999999999999999999E+6111 1 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37975 fma 1 9999999999999999999999999999999999E+6111 1E+6111 -> Infinity Overflow Inexact Rounded -dqadd37976 fma 1 9999999999999999999999999999999999E+6111 9E+6110 -> Infinity Overflow Inexact Rounded -dqadd37977 fma 1 9999999999999999999999999999999999E+6111 8E+6110 -> Infinity Overflow Inexact Rounded -dqadd37978 fma 1 9999999999999999999999999999999999E+6111 7E+6110 -> Infinity Overflow Inexact Rounded -dqadd37979 fma 1 9999999999999999999999999999999999E+6111 6E+6110 -> Infinity Overflow Inexact Rounded -dqadd37980 fma 1 9999999999999999999999999999999999E+6111 5E+6110 -> Infinity Overflow Inexact Rounded -dqadd37981 fma 1 9999999999999999999999999999999999E+6111 4E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37982 fma 1 9999999999999999999999999999999999E+6111 3E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37983 fma 1 9999999999999999999999999999999999E+6111 2E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37984 fma 1 9999999999999999999999999999999999E+6111 1E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded - -dqadd37985 apply -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 -dqadd37986 fma 1 -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37987 fma 1 -9999999999999999999999999999999999E+6111 -1 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37988 fma 1 -9999999999999999999999999999999999E+6111 -1E+6111 -> -Infinity Overflow Inexact Rounded -dqadd37989 fma 1 -9999999999999999999999999999999999E+6111 -9E+6110 -> -Infinity Overflow Inexact Rounded -dqadd37990 fma 1 -9999999999999999999999999999999999E+6111 -8E+6110 -> -Infinity Overflow Inexact Rounded -dqadd37991 fma 1 -9999999999999999999999999999999999E+6111 -7E+6110 -> -Infinity Overflow Inexact Rounded -dqadd37992 fma 1 -9999999999999999999999999999999999E+6111 -6E+6110 -> -Infinity Overflow Inexact Rounded -dqadd37993 fma 1 -9999999999999999999999999999999999E+6111 -5E+6110 -> -Infinity Overflow Inexact Rounded -dqadd37994 fma 1 -9999999999999999999999999999999999E+6111 -4E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37995 fma 1 -9999999999999999999999999999999999E+6111 -3E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37996 fma 1 -9999999999999999999999999999999999E+6111 -2E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded -dqadd37997 fma 1 -9999999999999999999999999999999999E+6111 -1E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded - --- And for round down full and subnormal results -rounding: down -dqadd371100 fma 1 1e+2 -1e-6143 -> 99.99999999999999999999999999999999 Rounded Inexact -dqadd371101 fma 1 1e+1 -1e-6143 -> 9.999999999999999999999999999999999 Rounded Inexact -dqadd371103 fma 1 +1 -1e-6143 -> 0.9999999999999999999999999999999999 Rounded Inexact -dqadd371104 fma 1 1e-1 -1e-6143 -> 0.09999999999999999999999999999999999 Rounded Inexact -dqadd371105 fma 1 1e-2 -1e-6143 -> 0.009999999999999999999999999999999999 Rounded Inexact -dqadd371106 fma 1 1e-3 -1e-6143 -> 0.0009999999999999999999999999999999999 Rounded Inexact -dqadd371107 fma 1 1e-4 -1e-6143 -> 0.00009999999999999999999999999999999999 Rounded Inexact -dqadd371108 fma 1 1e-5 -1e-6143 -> 0.000009999999999999999999999999999999999 Rounded Inexact -dqadd371109 fma 1 1e-6 -1e-6143 -> 9.999999999999999999999999999999999E-7 Rounded Inexact - -rounding: ceiling -dqadd371110 fma 1 -1e+2 +1e-6143 -> -99.99999999999999999999999999999999 Rounded Inexact -dqadd371111 fma 1 -1e+1 +1e-6143 -> -9.999999999999999999999999999999999 Rounded Inexact -dqadd371113 fma 1 -1 +1e-6143 -> -0.9999999999999999999999999999999999 Rounded Inexact -dqadd371114 fma 1 -1e-1 +1e-6143 -> -0.09999999999999999999999999999999999 Rounded Inexact -dqadd371115 fma 1 -1e-2 +1e-6143 -> -0.009999999999999999999999999999999999 Rounded Inexact -dqadd371116 fma 1 -1e-3 +1e-6143 -> -0.0009999999999999999999999999999999999 Rounded Inexact -dqadd371117 fma 1 -1e-4 +1e-6143 -> -0.00009999999999999999999999999999999999 Rounded Inexact -dqadd371118 fma 1 -1e-5 +1e-6143 -> -0.000009999999999999999999999999999999999 Rounded Inexact -dqadd371119 fma 1 -1e-6 +1e-6143 -> -9.999999999999999999999999999999999E-7 Rounded Inexact - --- tests based on Gunnar Degnbol's edge case -rounding: half_even - -dqadd371300 fma 1 1E34 -0.5 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371310 fma 1 1E34 -0.51 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371311 fma 1 1E34 -0.501 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371312 fma 1 1E34 -0.5001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371313 fma 1 1E34 -0.50001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371314 fma 1 1E34 -0.500001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371315 fma 1 1E34 -0.5000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371316 fma 1 1E34 -0.50000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371317 fma 1 1E34 -0.500000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371318 fma 1 1E34 -0.5000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371319 fma 1 1E34 -0.50000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371320 fma 1 1E34 -0.500000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371321 fma 1 1E34 -0.5000000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371322 fma 1 1E34 -0.50000000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371323 fma 1 1E34 -0.500000000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371324 fma 1 1E34 -0.5000000000000001 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371325 fma 1 1E34 -0.5000000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371326 fma 1 1E34 -0.500000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371327 fma 1 1E34 -0.50000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371328 fma 1 1E34 -0.5000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371329 fma 1 1E34 -0.500000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371330 fma 1 1E34 -0.50000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371331 fma 1 1E34 -0.5000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371332 fma 1 1E34 -0.500000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371333 fma 1 1E34 -0.50000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371334 fma 1 1E34 -0.5000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371335 fma 1 1E34 -0.500000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371336 fma 1 1E34 -0.50000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371337 fma 1 1E34 -0.5000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371338 fma 1 1E34 -0.500 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371339 fma 1 1E34 -0.50 -> 1.000000000000000000000000000000000E+34 Inexact Rounded - -dqadd371340 fma 1 1E34 -5000000.000010001 -> 9999999999999999999999999995000000 Inexact Rounded -dqadd371341 fma 1 1E34 -5000000.000000001 -> 9999999999999999999999999995000000 Inexact Rounded - -dqadd371349 fma 1 9999999999999999999999999999999999 0.4 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371350 fma 1 9999999999999999999999999999999999 0.49 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371351 fma 1 9999999999999999999999999999999999 0.499 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371352 fma 1 9999999999999999999999999999999999 0.4999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371353 fma 1 9999999999999999999999999999999999 0.49999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371354 fma 1 9999999999999999999999999999999999 0.499999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371355 fma 1 9999999999999999999999999999999999 0.4999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371356 fma 1 9999999999999999999999999999999999 0.49999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371357 fma 1 9999999999999999999999999999999999 0.499999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371358 fma 1 9999999999999999999999999999999999 0.4999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371359 fma 1 9999999999999999999999999999999999 0.49999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371360 fma 1 9999999999999999999999999999999999 0.499999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371361 fma 1 9999999999999999999999999999999999 0.4999999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371362 fma 1 9999999999999999999999999999999999 0.49999999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371363 fma 1 9999999999999999999999999999999999 0.499999999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371364 fma 1 9999999999999999999999999999999999 0.4999999999999999 -> 9999999999999999999999999999999999 Inexact Rounded -dqadd371365 fma 1 9999999999999999999999999999999999 0.5000000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371367 fma 1 9999999999999999999999999999999999 0.500000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371368 fma 1 9999999999999999999999999999999999 0.50000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371369 fma 1 9999999999999999999999999999999999 0.5000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371370 fma 1 9999999999999999999999999999999999 0.500000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371371 fma 1 9999999999999999999999999999999999 0.50000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371372 fma 1 9999999999999999999999999999999999 0.5000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371373 fma 1 9999999999999999999999999999999999 0.500000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371374 fma 1 9999999999999999999999999999999999 0.50000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371375 fma 1 9999999999999999999999999999999999 0.5000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371376 fma 1 9999999999999999999999999999999999 0.500000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371377 fma 1 9999999999999999999999999999999999 0.50000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371378 fma 1 9999999999999999999999999999999999 0.5000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371379 fma 1 9999999999999999999999999999999999 0.500 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371380 fma 1 9999999999999999999999999999999999 0.50 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371381 fma 1 9999999999999999999999999999999999 0.5 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371382 fma 1 9999999999999999999999999999999999 0.5000000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371383 fma 1 9999999999999999999999999999999999 0.500000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371384 fma 1 9999999999999999999999999999999999 0.50000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371385 fma 1 9999999999999999999999999999999999 0.5000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371386 fma 1 9999999999999999999999999999999999 0.500000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371387 fma 1 9999999999999999999999999999999999 0.50000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371388 fma 1 9999999999999999999999999999999999 0.5000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371389 fma 1 9999999999999999999999999999999999 0.500000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371390 fma 1 9999999999999999999999999999999999 0.50000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371391 fma 1 9999999999999999999999999999999999 0.5000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371392 fma 1 9999999999999999999999999999999999 0.500001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371393 fma 1 9999999999999999999999999999999999 0.50001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371394 fma 1 9999999999999999999999999999999999 0.5001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371395 fma 1 9999999999999999999999999999999999 0.501 -> 1.000000000000000000000000000000000E+34 Inexact Rounded -dqadd371396 fma 1 9999999999999999999999999999999999 0.51 -> 1.000000000000000000000000000000000E+34 Inexact Rounded - --- More GD edge cases, where difference between the unadjusted --- exponents is larger than the maximum precision and one side is 0 -dqadd371420 fma 1 0 1.123456789987654321123456789012345 -> 1.123456789987654321123456789012345 -dqadd371421 fma 1 0 1.123456789987654321123456789012345E-1 -> 0.1123456789987654321123456789012345 -dqadd371422 fma 1 0 1.123456789987654321123456789012345E-2 -> 0.01123456789987654321123456789012345 -dqadd371423 fma 1 0 1.123456789987654321123456789012345E-3 -> 0.001123456789987654321123456789012345 -dqadd371424 fma 1 0 1.123456789987654321123456789012345E-4 -> 0.0001123456789987654321123456789012345 -dqadd371425 fma 1 0 1.123456789987654321123456789012345E-5 -> 0.00001123456789987654321123456789012345 -dqadd371426 fma 1 0 1.123456789987654321123456789012345E-6 -> 0.000001123456789987654321123456789012345 -dqadd371427 fma 1 0 1.123456789987654321123456789012345E-7 -> 1.123456789987654321123456789012345E-7 -dqadd371428 fma 1 0 1.123456789987654321123456789012345E-8 -> 1.123456789987654321123456789012345E-8 -dqadd371429 fma 1 0 1.123456789987654321123456789012345E-9 -> 1.123456789987654321123456789012345E-9 -dqadd371430 fma 1 0 1.123456789987654321123456789012345E-10 -> 1.123456789987654321123456789012345E-10 -dqadd371431 fma 1 0 1.123456789987654321123456789012345E-11 -> 1.123456789987654321123456789012345E-11 -dqadd371432 fma 1 0 1.123456789987654321123456789012345E-12 -> 1.123456789987654321123456789012345E-12 -dqadd371433 fma 1 0 1.123456789987654321123456789012345E-13 -> 1.123456789987654321123456789012345E-13 -dqadd371434 fma 1 0 1.123456789987654321123456789012345E-14 -> 1.123456789987654321123456789012345E-14 -dqadd371435 fma 1 0 1.123456789987654321123456789012345E-15 -> 1.123456789987654321123456789012345E-15 -dqadd371436 fma 1 0 1.123456789987654321123456789012345E-16 -> 1.123456789987654321123456789012345E-16 -dqadd371437 fma 1 0 1.123456789987654321123456789012345E-17 -> 1.123456789987654321123456789012345E-17 -dqadd371438 fma 1 0 1.123456789987654321123456789012345E-18 -> 1.123456789987654321123456789012345E-18 -dqadd371439 fma 1 0 1.123456789987654321123456789012345E-19 -> 1.123456789987654321123456789012345E-19 -dqadd371440 fma 1 0 1.123456789987654321123456789012345E-20 -> 1.123456789987654321123456789012345E-20 -dqadd371441 fma 1 0 1.123456789987654321123456789012345E-21 -> 1.123456789987654321123456789012345E-21 -dqadd371442 fma 1 0 1.123456789987654321123456789012345E-22 -> 1.123456789987654321123456789012345E-22 -dqadd371443 fma 1 0 1.123456789987654321123456789012345E-23 -> 1.123456789987654321123456789012345E-23 -dqadd371444 fma 1 0 1.123456789987654321123456789012345E-24 -> 1.123456789987654321123456789012345E-24 -dqadd371445 fma 1 0 1.123456789987654321123456789012345E-25 -> 1.123456789987654321123456789012345E-25 -dqadd371446 fma 1 0 1.123456789987654321123456789012345E-26 -> 1.123456789987654321123456789012345E-26 -dqadd371447 fma 1 0 1.123456789987654321123456789012345E-27 -> 1.123456789987654321123456789012345E-27 -dqadd371448 fma 1 0 1.123456789987654321123456789012345E-28 -> 1.123456789987654321123456789012345E-28 -dqadd371449 fma 1 0 1.123456789987654321123456789012345E-29 -> 1.123456789987654321123456789012345E-29 -dqadd371450 fma 1 0 1.123456789987654321123456789012345E-30 -> 1.123456789987654321123456789012345E-30 -dqadd371451 fma 1 0 1.123456789987654321123456789012345E-31 -> 1.123456789987654321123456789012345E-31 -dqadd371452 fma 1 0 1.123456789987654321123456789012345E-32 -> 1.123456789987654321123456789012345E-32 -dqadd371453 fma 1 0 1.123456789987654321123456789012345E-33 -> 1.123456789987654321123456789012345E-33 -dqadd371454 fma 1 0 1.123456789987654321123456789012345E-34 -> 1.123456789987654321123456789012345E-34 -dqadd371455 fma 1 0 1.123456789987654321123456789012345E-35 -> 1.123456789987654321123456789012345E-35 -dqadd371456 fma 1 0 1.123456789987654321123456789012345E-36 -> 1.123456789987654321123456789012345E-36 - --- same, reversed 0 -dqadd371460 fma 1 1.123456789987654321123456789012345 0 -> 1.123456789987654321123456789012345 -dqadd371461 fma 1 1.123456789987654321123456789012345E-1 0 -> 0.1123456789987654321123456789012345 -dqadd371462 fma 1 1.123456789987654321123456789012345E-2 0 -> 0.01123456789987654321123456789012345 -dqadd371463 fma 1 1.123456789987654321123456789012345E-3 0 -> 0.001123456789987654321123456789012345 -dqadd371464 fma 1 1.123456789987654321123456789012345E-4 0 -> 0.0001123456789987654321123456789012345 -dqadd371465 fma 1 1.123456789987654321123456789012345E-5 0 -> 0.00001123456789987654321123456789012345 -dqadd371466 fma 1 1.123456789987654321123456789012345E-6 0 -> 0.000001123456789987654321123456789012345 -dqadd371467 fma 1 1.123456789987654321123456789012345E-7 0 -> 1.123456789987654321123456789012345E-7 -dqadd371468 fma 1 1.123456789987654321123456789012345E-8 0 -> 1.123456789987654321123456789012345E-8 -dqadd371469 fma 1 1.123456789987654321123456789012345E-9 0 -> 1.123456789987654321123456789012345E-9 -dqadd371470 fma 1 1.123456789987654321123456789012345E-10 0 -> 1.123456789987654321123456789012345E-10 -dqadd371471 fma 1 1.123456789987654321123456789012345E-11 0 -> 1.123456789987654321123456789012345E-11 -dqadd371472 fma 1 1.123456789987654321123456789012345E-12 0 -> 1.123456789987654321123456789012345E-12 -dqadd371473 fma 1 1.123456789987654321123456789012345E-13 0 -> 1.123456789987654321123456789012345E-13 -dqadd371474 fma 1 1.123456789987654321123456789012345E-14 0 -> 1.123456789987654321123456789012345E-14 -dqadd371475 fma 1 1.123456789987654321123456789012345E-15 0 -> 1.123456789987654321123456789012345E-15 -dqadd371476 fma 1 1.123456789987654321123456789012345E-16 0 -> 1.123456789987654321123456789012345E-16 -dqadd371477 fma 1 1.123456789987654321123456789012345E-17 0 -> 1.123456789987654321123456789012345E-17 -dqadd371478 fma 1 1.123456789987654321123456789012345E-18 0 -> 1.123456789987654321123456789012345E-18 -dqadd371479 fma 1 1.123456789987654321123456789012345E-19 0 -> 1.123456789987654321123456789012345E-19 -dqadd371480 fma 1 1.123456789987654321123456789012345E-20 0 -> 1.123456789987654321123456789012345E-20 -dqadd371481 fma 1 1.123456789987654321123456789012345E-21 0 -> 1.123456789987654321123456789012345E-21 -dqadd371482 fma 1 1.123456789987654321123456789012345E-22 0 -> 1.123456789987654321123456789012345E-22 -dqadd371483 fma 1 1.123456789987654321123456789012345E-23 0 -> 1.123456789987654321123456789012345E-23 -dqadd371484 fma 1 1.123456789987654321123456789012345E-24 0 -> 1.123456789987654321123456789012345E-24 -dqadd371485 fma 1 1.123456789987654321123456789012345E-25 0 -> 1.123456789987654321123456789012345E-25 -dqadd371486 fma 1 1.123456789987654321123456789012345E-26 0 -> 1.123456789987654321123456789012345E-26 -dqadd371487 fma 1 1.123456789987654321123456789012345E-27 0 -> 1.123456789987654321123456789012345E-27 -dqadd371488 fma 1 1.123456789987654321123456789012345E-28 0 -> 1.123456789987654321123456789012345E-28 -dqadd371489 fma 1 1.123456789987654321123456789012345E-29 0 -> 1.123456789987654321123456789012345E-29 -dqadd371490 fma 1 1.123456789987654321123456789012345E-30 0 -> 1.123456789987654321123456789012345E-30 -dqadd371491 fma 1 1.123456789987654321123456789012345E-31 0 -> 1.123456789987654321123456789012345E-31 -dqadd371492 fma 1 1.123456789987654321123456789012345E-32 0 -> 1.123456789987654321123456789012345E-32 -dqadd371493 fma 1 1.123456789987654321123456789012345E-33 0 -> 1.123456789987654321123456789012345E-33 -dqadd371494 fma 1 1.123456789987654321123456789012345E-34 0 -> 1.123456789987654321123456789012345E-34 -dqadd371495 fma 1 1.123456789987654321123456789012345E-35 0 -> 1.123456789987654321123456789012345E-35 -dqadd371496 fma 1 1.123456789987654321123456789012345E-36 0 -> 1.123456789987654321123456789012345E-36 - --- same, Es on the 0 -dqadd371500 fma 1 1.123456789987654321123456789012345 0E-0 -> 1.123456789987654321123456789012345 -dqadd371501 fma 1 1.123456789987654321123456789012345 0E-1 -> 1.123456789987654321123456789012345 -dqadd371502 fma 1 1.123456789987654321123456789012345 0E-2 -> 1.123456789987654321123456789012345 -dqadd371503 fma 1 1.123456789987654321123456789012345 0E-3 -> 1.123456789987654321123456789012345 -dqadd371504 fma 1 1.123456789987654321123456789012345 0E-4 -> 1.123456789987654321123456789012345 -dqadd371505 fma 1 1.123456789987654321123456789012345 0E-5 -> 1.123456789987654321123456789012345 -dqadd371506 fma 1 1.123456789987654321123456789012345 0E-6 -> 1.123456789987654321123456789012345 -dqadd371507 fma 1 1.123456789987654321123456789012345 0E-7 -> 1.123456789987654321123456789012345 -dqadd371508 fma 1 1.123456789987654321123456789012345 0E-8 -> 1.123456789987654321123456789012345 -dqadd371509 fma 1 1.123456789987654321123456789012345 0E-9 -> 1.123456789987654321123456789012345 -dqadd371510 fma 1 1.123456789987654321123456789012345 0E-10 -> 1.123456789987654321123456789012345 -dqadd371511 fma 1 1.123456789987654321123456789012345 0E-11 -> 1.123456789987654321123456789012345 -dqadd371512 fma 1 1.123456789987654321123456789012345 0E-12 -> 1.123456789987654321123456789012345 -dqadd371513 fma 1 1.123456789987654321123456789012345 0E-13 -> 1.123456789987654321123456789012345 -dqadd371514 fma 1 1.123456789987654321123456789012345 0E-14 -> 1.123456789987654321123456789012345 -dqadd371515 fma 1 1.123456789987654321123456789012345 0E-15 -> 1.123456789987654321123456789012345 -dqadd371516 fma 1 1.123456789987654321123456789012345 0E-16 -> 1.123456789987654321123456789012345 -dqadd371517 fma 1 1.123456789987654321123456789012345 0E-17 -> 1.123456789987654321123456789012345 -dqadd371518 fma 1 1.123456789987654321123456789012345 0E-18 -> 1.123456789987654321123456789012345 -dqadd371519 fma 1 1.123456789987654321123456789012345 0E-19 -> 1.123456789987654321123456789012345 -dqadd371520 fma 1 1.123456789987654321123456789012345 0E-20 -> 1.123456789987654321123456789012345 -dqadd371521 fma 1 1.123456789987654321123456789012345 0E-21 -> 1.123456789987654321123456789012345 -dqadd371522 fma 1 1.123456789987654321123456789012345 0E-22 -> 1.123456789987654321123456789012345 -dqadd371523 fma 1 1.123456789987654321123456789012345 0E-23 -> 1.123456789987654321123456789012345 -dqadd371524 fma 1 1.123456789987654321123456789012345 0E-24 -> 1.123456789987654321123456789012345 -dqadd371525 fma 1 1.123456789987654321123456789012345 0E-25 -> 1.123456789987654321123456789012345 -dqadd371526 fma 1 1.123456789987654321123456789012345 0E-26 -> 1.123456789987654321123456789012345 -dqadd371527 fma 1 1.123456789987654321123456789012345 0E-27 -> 1.123456789987654321123456789012345 -dqadd371528 fma 1 1.123456789987654321123456789012345 0E-28 -> 1.123456789987654321123456789012345 -dqadd371529 fma 1 1.123456789987654321123456789012345 0E-29 -> 1.123456789987654321123456789012345 -dqadd371530 fma 1 1.123456789987654321123456789012345 0E-30 -> 1.123456789987654321123456789012345 -dqadd371531 fma 1 1.123456789987654321123456789012345 0E-31 -> 1.123456789987654321123456789012345 -dqadd371532 fma 1 1.123456789987654321123456789012345 0E-32 -> 1.123456789987654321123456789012345 -dqadd371533 fma 1 1.123456789987654321123456789012345 0E-33 -> 1.123456789987654321123456789012345 --- next four flag Rounded because the 0 extends the result -dqadd371534 fma 1 1.123456789987654321123456789012345 0E-34 -> 1.123456789987654321123456789012345 Rounded -dqadd371535 fma 1 1.123456789987654321123456789012345 0E-35 -> 1.123456789987654321123456789012345 Rounded -dqadd371536 fma 1 1.123456789987654321123456789012345 0E-36 -> 1.123456789987654321123456789012345 Rounded -dqadd371537 fma 1 1.123456789987654321123456789012345 0E-37 -> 1.123456789987654321123456789012345 Rounded - --- sum of two opposite-sign operands is exactly 0 and floor => -0 -rounding: half_up --- exact zeros from zeros -dqadd371600 fma 1 0 0E-19 -> 0E-19 -dqadd371601 fma 1 -0 0E-19 -> 0E-19 -dqadd371602 fma 1 0 -0E-19 -> 0E-19 -dqadd371603 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd371611 fma 1 -11 11 -> 0 -dqadd371612 fma 1 11 -11 -> 0 --- overflow -dqadd371613 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded -dqadd371614 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded - -rounding: half_down --- exact zeros from zeros -dqadd371620 fma 1 0 0E-19 -> 0E-19 -dqadd371621 fma 1 -0 0E-19 -> 0E-19 -dqadd371622 fma 1 0 -0E-19 -> 0E-19 -dqadd371623 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd371631 fma 1 -11 11 -> 0 -dqadd371632 fma 1 11 -11 -> 0 --- overflow -dqadd371633 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded -dqadd371634 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded - -rounding: half_even --- exact zeros from zeros -dqadd371640 fma 1 0 0E-19 -> 0E-19 -dqadd371641 fma 1 -0 0E-19 -> 0E-19 -dqadd371642 fma 1 0 -0E-19 -> 0E-19 -dqadd371643 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd371651 fma 1 -11 11 -> 0 -dqadd371652 fma 1 11 -11 -> 0 --- overflow -dqadd371653 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded -dqadd371654 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded - -rounding: up --- exact zeros from zeros -dqadd371660 fma 1 0 0E-19 -> 0E-19 -dqadd371661 fma 1 -0 0E-19 -> 0E-19 -dqadd371662 fma 1 0 -0E-19 -> 0E-19 -dqadd371663 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd371671 fma 1 -11 11 -> 0 -dqadd371672 fma 1 11 -11 -> 0 --- overflow -dqadd371673 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded -dqadd371674 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded - -rounding: down --- exact zeros from zeros -dqadd371680 fma 1 0 0E-19 -> 0E-19 -dqadd371681 fma 1 -0 0E-19 -> 0E-19 -dqadd371682 fma 1 0 -0E-19 -> 0E-19 -dqadd371683 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd371691 fma 1 -11 11 -> 0 -dqadd371692 fma 1 11 -11 -> 0 --- overflow -dqadd371693 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -dqadd371694 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded - -rounding: ceiling --- exact zeros from zeros -dqadd371700 fma 1 0 0E-19 -> 0E-19 -dqadd371701 fma 1 -0 0E-19 -> 0E-19 -dqadd371702 fma 1 0 -0E-19 -> 0E-19 -dqadd371703 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd371711 fma 1 -11 11 -> 0 -dqadd371712 fma 1 11 -11 -> 0 --- overflow -dqadd371713 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded -dqadd371714 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded - --- and the extra-special ugly case; unusual minuses marked by -- * -rounding: floor --- exact zeros from zeros -dqadd371720 fma 1 0 0E-19 -> 0E-19 -dqadd371721 fma 1 -0 0E-19 -> -0E-19 -- * -dqadd371722 fma 1 0 -0E-19 -> -0E-19 -- * -dqadd371723 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd371731 fma 1 -11 11 -> -0 -- * -dqadd371732 fma 1 11 -11 -> -0 -- * --- overflow -dqadd371733 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -dqadd371734 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded - -rounding: 05up --- exact zeros from zeros -dqadd371740 fma 1 0 0E-19 -> 0E-19 -dqadd371741 fma 1 -0 0E-19 -> 0E-19 -dqadd371742 fma 1 0 -0E-19 -> 0E-19 -dqadd371743 fma 1 -0 -0E-19 -> -0E-19 --- exact zeros from non-zeros -dqadd371751 fma 1 -11 11 -> 0 -dqadd371752 fma 1 11 -11 -> 0 --- overflow -dqadd371753 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -dqadd371754 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded - --- Examples from SQL proposal (Krishna Kulkarni) -dqadd371761 fma 1 130E-2 120E-2 -> 2.50 -dqadd371762 fma 1 130E-2 12E-1 -> 2.50 -dqadd371763 fma 1 130E-2 1E0 -> 2.30 -dqadd371764 fma 1 1E2 1E4 -> 1.01E+4 -dqadd371765 fma 1 130E-2 -120E-2 -> 0.10 -dqadd371766 fma 1 130E-2 -12E-1 -> 0.10 -dqadd371767 fma 1 130E-2 -1E0 -> 0.30 -dqadd371768 fma 1 1E2 -1E4 -> -9.9E+3 - --- Gappy coefficients; check residue handling even with full coefficient gap -rounding: half_even - -dqadd375001 fma 1 1239876543211234567894567890123456 1 -> 1239876543211234567894567890123457 -dqadd375002 fma 1 1239876543211234567894567890123456 0.6 -> 1239876543211234567894567890123457 Inexact Rounded -dqadd375003 fma 1 1239876543211234567894567890123456 0.06 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375004 fma 1 1239876543211234567894567890123456 6E-3 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375005 fma 1 1239876543211234567894567890123456 6E-4 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375006 fma 1 1239876543211234567894567890123456 6E-5 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375007 fma 1 1239876543211234567894567890123456 6E-6 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375008 fma 1 1239876543211234567894567890123456 6E-7 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375009 fma 1 1239876543211234567894567890123456 6E-8 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375010 fma 1 1239876543211234567894567890123456 6E-9 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375011 fma 1 1239876543211234567894567890123456 6E-10 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375012 fma 1 1239876543211234567894567890123456 6E-11 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375013 fma 1 1239876543211234567894567890123456 6E-12 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375014 fma 1 1239876543211234567894567890123456 6E-13 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375015 fma 1 1239876543211234567894567890123456 6E-14 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375016 fma 1 1239876543211234567894567890123456 6E-15 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375017 fma 1 1239876543211234567894567890123456 6E-16 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375018 fma 1 1239876543211234567894567890123456 6E-17 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375019 fma 1 1239876543211234567894567890123456 6E-18 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375020 fma 1 1239876543211234567894567890123456 6E-19 -> 1239876543211234567894567890123456 Inexact Rounded -dqadd375021 fma 1 1239876543211234567894567890123456 6E-20 -> 1239876543211234567894567890123456 Inexact Rounded - --- widening second argument at gap -dqadd375030 fma 1 12398765432112345678945678 1 -> 12398765432112345678945679 -dqadd375031 fma 1 12398765432112345678945678 0.1 -> 12398765432112345678945678.1 -dqadd375032 fma 1 12398765432112345678945678 0.12 -> 12398765432112345678945678.12 -dqadd375033 fma 1 12398765432112345678945678 0.123 -> 12398765432112345678945678.123 -dqadd375034 fma 1 12398765432112345678945678 0.1234 -> 12398765432112345678945678.1234 -dqadd375035 fma 1 12398765432112345678945678 0.12345 -> 12398765432112345678945678.12345 -dqadd375036 fma 1 12398765432112345678945678 0.123456 -> 12398765432112345678945678.123456 -dqadd375037 fma 1 12398765432112345678945678 0.1234567 -> 12398765432112345678945678.1234567 -dqadd375038 fma 1 12398765432112345678945678 0.12345678 -> 12398765432112345678945678.12345678 -dqadd375039 fma 1 12398765432112345678945678 0.123456789 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd375040 fma 1 12398765432112345678945678 0.123456785 -> 12398765432112345678945678.12345678 Inexact Rounded -dqadd375041 fma 1 12398765432112345678945678 0.1234567850 -> 12398765432112345678945678.12345678 Inexact Rounded -dqadd375042 fma 1 12398765432112345678945678 0.1234567851 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd375043 fma 1 12398765432112345678945678 0.12345678501 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd375044 fma 1 12398765432112345678945678 0.123456785001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd375045 fma 1 12398765432112345678945678 0.1234567850001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd375046 fma 1 12398765432112345678945678 0.12345678500001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd375047 fma 1 12398765432112345678945678 0.123456785000001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd375048 fma 1 12398765432112345678945678 0.1234567850000001 -> 12398765432112345678945678.12345679 Inexact Rounded -dqadd375049 fma 1 12398765432112345678945678 0.1234567850000000 -> 12398765432112345678945678.12345678 Inexact Rounded --- 90123456 -rounding: half_even -dqadd375050 fma 1 12398765432112345678945678 0.0234567750000000 -> 12398765432112345678945678.02345678 Inexact Rounded -dqadd375051 fma 1 12398765432112345678945678 0.0034567750000000 -> 12398765432112345678945678.00345678 Inexact Rounded -dqadd375052 fma 1 12398765432112345678945678 0.0004567750000000 -> 12398765432112345678945678.00045678 Inexact Rounded -dqadd375053 fma 1 12398765432112345678945678 0.0000567750000000 -> 12398765432112345678945678.00005678 Inexact Rounded -dqadd375054 fma 1 12398765432112345678945678 0.0000067750000000 -> 12398765432112345678945678.00000678 Inexact Rounded -dqadd375055 fma 1 12398765432112345678945678 0.0000007750000000 -> 12398765432112345678945678.00000078 Inexact Rounded -dqadd375056 fma 1 12398765432112345678945678 0.0000000750000000 -> 12398765432112345678945678.00000008 Inexact Rounded -dqadd375057 fma 1 12398765432112345678945678 0.0000000050000000 -> 12398765432112345678945678.00000000 Inexact Rounded -dqadd375060 fma 1 12398765432112345678945678 0.0234567750000001 -> 12398765432112345678945678.02345678 Inexact Rounded -dqadd375061 fma 1 12398765432112345678945678 0.0034567750000001 -> 12398765432112345678945678.00345678 Inexact Rounded -dqadd375062 fma 1 12398765432112345678945678 0.0004567750000001 -> 12398765432112345678945678.00045678 Inexact Rounded -dqadd375063 fma 1 12398765432112345678945678 0.0000567750000001 -> 12398765432112345678945678.00005678 Inexact Rounded -dqadd375064 fma 1 12398765432112345678945678 0.0000067750000001 -> 12398765432112345678945678.00000678 Inexact Rounded -dqadd375065 fma 1 12398765432112345678945678 0.0000007750000001 -> 12398765432112345678945678.00000078 Inexact Rounded -dqadd375066 fma 1 12398765432112345678945678 0.0000000750000001 -> 12398765432112345678945678.00000008 Inexact Rounded -dqadd375067 fma 1 12398765432112345678945678 0.0000000050000001 -> 12398765432112345678945678.00000001 Inexact Rounded --- far-out residues (full coefficient gap is 16+15 digits) -rounding: up -dqadd375070 fma 1 12398765432112345678945678 1E-8 -> 12398765432112345678945678.00000001 -dqadd375071 fma 1 12398765432112345678945678 1E-9 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375072 fma 1 12398765432112345678945678 1E-10 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375073 fma 1 12398765432112345678945678 1E-11 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375074 fma 1 12398765432112345678945678 1E-12 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375075 fma 1 12398765432112345678945678 1E-13 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375076 fma 1 12398765432112345678945678 1E-14 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375077 fma 1 12398765432112345678945678 1E-15 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375078 fma 1 12398765432112345678945678 1E-16 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375079 fma 1 12398765432112345678945678 1E-17 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375080 fma 1 12398765432112345678945678 1E-18 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375081 fma 1 12398765432112345678945678 1E-19 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375082 fma 1 12398765432112345678945678 1E-20 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375083 fma 1 12398765432112345678945678 1E-25 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375084 fma 1 12398765432112345678945678 1E-30 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375085 fma 1 12398765432112345678945678 1E-31 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375086 fma 1 12398765432112345678945678 1E-32 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375087 fma 1 12398765432112345678945678 1E-33 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375088 fma 1 12398765432112345678945678 1E-34 -> 12398765432112345678945678.00000001 Inexact Rounded -dqadd375089 fma 1 12398765432112345678945678 1E-35 -> 12398765432112345678945678.00000001 Inexact Rounded - --- Destructive subtract (from remainder tests) - --- +++ some of these will be off-by-one remainder vs remainderNear - -dqfma4000 fma -1234567890123456789012345678901233 1.000000000000000000000000000000001 1234567890123456789012345678901234 -> -0.234567890123456789012345678901233 -dqfma4001 fma -1234567890123456789012345678901222 1.00000000000000000000000000000001 1234567890123456789012345678901234 -> -0.34567890123456789012345678901222 -dqfma4002 fma -1234567890123456789012345678901111 1.0000000000000000000000000000001 1234567890123456789012345678901234 -> -0.4567890123456789012345678901111 -dqfma4003 fma -308641972530864197253086419725314 4.000000000000000000000000000000001 1234567890123456789012345678901255 -> -1.308641972530864197253086419725314 -dqfma4004 fma -308641972530864197253086419725308 4.000000000000000000000000000000001 1234567890123456789012345678901234 -> 1.691358027469135802746913580274692 -dqfma4005 fma -246913578024691357802469135780252 4.9999999999999999999999999999999 1234567890123456789012345678901234 -> -1.3086421975308642197530864219748 -dqfma4006 fma -246913578024691357802469135780247 4.99999999999999999999999999999999 1234567890123456789012345678901234 -> 1.46913578024691357802469135780247 -dqfma4007 fma -246913578024691357802469135780247 4.999999999999999999999999999999999 1234567890123456789012345678901234 -> -0.753086421975308642197530864219753 -dqfma4008 fma -246913578024691357802469135780247 5.000000000000000000000000000000001 1234567890123456789012345678901234 -> -1.246913578024691357802469135780247 -dqfma4009 fma -246913578024691357802469135780246 5.00000000000000000000000000000001 1234567890123456789012345678901234 -> 1.53086421975308642197530864219754 -dqfma4010 fma -246913578024691357802469135780242 5.0000000000000000000000000000001 1234567890123456789012345678901234 -> -0.6913578024691357802469135780242 -dqfma4011 fma -1234567890123456789012345678901232 1.000000000000000000000000000000001 1234567890123456789012345678901234 -> 0.765432109876543210987654321098768 -dqfma4012 fma -1234567890123456789012345678901221 1.00000000000000000000000000000001 1234567890123456789012345678901234 -> 0.65432109876543210987654321098779 -dqfma4013 fma -1234567890123456789012345678901110 1.0000000000000000000000000000001 1234567890123456789012345678901234 -> 0.5432109876543210987654321098890 -dqfma4014 fma -308641972530864197253086419725313 4.000000000000000000000000000000001 1234567890123456789012345678901255 -> 2.691358027469135802746913580274687 -dqfma4015 fma -308641972530864197253086419725308 4.000000000000000000000000000000001 1234567890123456789012345678901234 -> 1.691358027469135802746913580274692 -dqfma4016 fma -246913578024691357802469135780251 4.9999999999999999999999999999999 1234567890123456789012345678901234 -> 3.6913578024691357802469135780251 -dqfma4017 fma -246913578024691357802469135780247 4.99999999999999999999999999999999 1234567890123456789012345678901234 -> 1.46913578024691357802469135780247 -dqfma4018 fma -246913578024691357802469135780246 4.999999999999999999999999999999999 1234567890123456789012345678901234 -> 4.246913578024691357802469135780246 -dqfma4019 fma -246913578024691357802469135780241 5.0000000000000000000000000000001 1234567890123456789012345678901234 -> 4.3086421975308642197530864219759 - --- Null tests -dqadd39990 fma 1 10 # -> NaN Invalid_operation -dqadd39991 fma 1 # 10 -> NaN Invalid_operation - - +------------------------------------------------------------------------ +-- dqFMA.decTest -- decQuad Fused Multiply Add -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- These tests comprese three parts: +-- 1. Sanity checks and other three-operand tests (especially those +-- where the fused operation makes a difference) +-- 2. Multiply tests (third operand is neutral zero [0E+emax]) +-- 3. Addition tests (first operand is 1) +-- The multiply and addition tests are extensive because FMA may have +-- its own dedicated multiplication or addition routine(s), and they +-- also inherently check the left-to-right properties. + +-- Sanity checks +dqfma0001 fma 1 1 1 -> 2 +dqfma0002 fma 1 1 2 -> 3 +dqfma0003 fma 2 2 3 -> 7 +dqfma0004 fma 9 9 9 -> 90 +dqfma0005 fma -1 1 1 -> 0 +dqfma0006 fma -1 1 2 -> 1 +dqfma0007 fma -2 2 3 -> -1 +dqfma0008 fma -9 9 9 -> -72 +dqfma0011 fma 1 -1 1 -> 0 +dqfma0012 fma 1 -1 2 -> 1 +dqfma0013 fma 2 -2 3 -> -1 +dqfma0014 fma 9 -9 9 -> -72 +dqfma0015 fma 1 1 -1 -> 0 +dqfma0016 fma 1 1 -2 -> -1 +dqfma0017 fma 2 2 -3 -> 1 +dqfma0018 fma 9 9 -9 -> 72 + +-- non-integer exacts +dqfma0100 fma 25.2 63.6 -438 -> 1164.72 +dqfma0101 fma 0.301 0.380 334 -> 334.114380 +dqfma0102 fma 49.2 -4.8 23.3 -> -212.86 +dqfma0103 fma 4.22 0.079 -94.6 -> -94.26662 +dqfma0104 fma 903 0.797 0.887 -> 720.578 +dqfma0105 fma 6.13 -161 65.9 -> -921.03 +dqfma0106 fma 28.2 727 5.45 -> 20506.85 +dqfma0107 fma 4 605 688 -> 3108 +dqfma0108 fma 93.3 0.19 0.226 -> 17.953 +dqfma0109 fma 0.169 -341 5.61 -> -52.019 +dqfma0110 fma -72.2 30 -51.2 -> -2217.2 +dqfma0111 fma -0.409 13 20.4 -> 15.083 +dqfma0112 fma 317 77.0 19.0 -> 24428.0 +dqfma0113 fma 47 6.58 1.62 -> 310.88 +dqfma0114 fma 1.36 0.984 0.493 -> 1.83124 +dqfma0115 fma 72.7 274 1.56 -> 19921.36 +dqfma0116 fma 335 847 83 -> 283828 +dqfma0117 fma 666 0.247 25.4 -> 189.902 +dqfma0118 fma -3.87 3.06 78.0 -> 66.1578 +dqfma0119 fma 0.742 192 35.6 -> 178.064 +dqfma0120 fma -91.6 5.29 0.153 -> -484.411 + +-- cases where result is different from separate multiply + add; each +-- is preceded by the result of unfused multiply and add +-- [this is about 20% of all similar cases in general] +-- -> 4.500119002100000209469729375698778E+38 +dqfma0202 fma 68537985861355864457.5694 6565875762972086605.85969 35892634447236753.172812 -> 4.500119002100000209469729375698779E+38 Inexact Rounded +-- -> 5.996248469584594346858881620185514E+41 +dqfma0208 fma 89261822344727628571.9 6717595845654131383336.89 5061036497288796076266.11 -> 5.996248469584594346858881620185513E+41 Inexact Rounded +-- -> 1.899242968678256924021594770874070E+34 +dqfma0210 fma 320506237232448685.495971 59257597764017967.984448 3205615239077711589912.85 -> 1.899242968678256924021594770874071E+34 Inexact Rounded +-- -> 7.078596978842809537929699954860309E+37 +dqfma0215 fma 220247843259112263.17995 321392340287987979002.80 47533279819997167655440 -> 7.078596978842809537929699954860308E+37 Inexact Rounded +-- -> 1.224955667581427559754106862350743E+37 +dqfma0226 fma 23880729790368880412.1449 512947333827064719.55407 217117438419590824502.963 -> 1.224955667581427559754106862350744E+37 Inexact Rounded +-- -> -2.530094043253148806272276368579144E+42 +dqfma0229 fma 2539892357016099706.4126 -996142232667504817717435 53682082598315949425.937 -> -2.530094043253148806272276368579143E+42 Inexact Rounded +-- -> 1.713387085759711954319391412788454E+37 +dqfma0233 fma 4546339491341624464.0804 3768717864169205581 83578980278690395184.620 -> 1.713387085759711954319391412788453E+37 Inexact Rounded +-- -> 4.062275663405823716411579117771547E+35 +dqfma0235 fma 409242119433816131.42253 992633815166741501.477249 70179636544416756129546 -> 4.062275663405823716411579117771548E+35 Inexact Rounded +-- -> 6.002604327732568490562249875306823E+47 +dqfma0258 fma 817941336593541742159684 733867339769310729266598 78563844650942419311830.8 -> 6.002604327732568490562249875306822E+47 Inexact Rounded +-- -> -2.027022514381452197510103395283874E+39 +dqfma0264 fma 387617310169161270.737532 -5229442703414956061216.62 57665666816652967150473.5 -> -2.027022514381452197510103395283873E+39 Inexact Rounded +-- -> -7.856525039803554001144089842730361E+37 +dqfma0267 fma -847655845720565274701.210 92685316564117739.83984 22780950041376424429.5686 -> -7.856525039803554001144089842730360E+37 Inexact Rounded +-- -> 1.695515562011520746125607502237559E+38 +dqfma0268 fma 21590290365127685.3675 7853139227576541379426.8 -3275859437236180.761544 -> 1.695515562011520746125607502237558E+38 Inexact Rounded +-- -> -8.448422935783289219748115038014710E+38 +dqfma0269 fma -974320636272862697.971586 867109103641860247440.756 -9775170775902454762.98 -> -8.448422935783289219748115038014709E+38 Inexact Rounded + +-- Cases where multiply would overflow or underflow if separate +dqfma0300 fma 9e+6144 10 0 -> Infinity Overflow Inexact Rounded +dqfma0301 fma 1e+6144 10 0 -> Infinity Overflow Inexact Rounded +dqfma0302 fma 1e+6144 10 -1e+6144 -> 9.000000000000000000000000000000000E+6144 Clamped +dqfma0303 fma 1e+6144 10 -9e+6144 -> 1.000000000000000000000000000000000E+6144 Clamped +-- subnormal etc. +dqfma0305 fma 1e-6176 0.1 0 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma0306 fma 1e-6176 0.1 1 -> 1.000000000000000000000000000000000 Inexact Rounded +dqfma0307 fma 1e-6176 0.1 1e-6176 -> 1E-6176 Underflow Subnormal Inexact Rounded + +-- Infinite combinations +dqfma0800 fma Inf Inf Inf -> Infinity +dqfma0801 fma Inf Inf -Inf -> NaN Invalid_operation +dqfma0802 fma Inf -Inf Inf -> NaN Invalid_operation +dqfma0803 fma Inf -Inf -Inf -> -Infinity +dqfma0804 fma -Inf Inf Inf -> NaN Invalid_operation +dqfma0805 fma -Inf Inf -Inf -> -Infinity +dqfma0806 fma -Inf -Inf Inf -> Infinity +dqfma0807 fma -Inf -Inf -Inf -> NaN Invalid_operation + +-- Triple NaN propagation +dqfma0900 fma NaN2 NaN3 NaN5 -> NaN2 +dqfma0901 fma 0 NaN3 NaN5 -> NaN3 +dqfma0902 fma 0 0 NaN5 -> NaN5 +-- first sNaN wins (consider qNaN from earlier sNaN being +-- overridden by an sNaN in third operand) +dqfma0903 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation +dqfma0904 fma 0 sNaN2 sNaN3 -> NaN2 Invalid_operation +dqfma0905 fma 0 0 sNaN3 -> NaN3 Invalid_operation +dqfma0906 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation +dqfma0907 fma NaN7 sNaN2 sNaN3 -> NaN2 Invalid_operation +dqfma0908 fma NaN7 NaN5 sNaN3 -> NaN3 Invalid_operation + +-- MULTIPLICATION TESTS ------------------------------------------------ +rounding: half_even + +-- sanity checks +dqfma2000 fma 2 2 0e+6144 -> 4 +dqfma2001 fma 2 3 0e+6144 -> 6 +dqfma2002 fma 5 1 0e+6144 -> 5 +dqfma2003 fma 5 2 0e+6144 -> 10 +dqfma2004 fma 1.20 2 0e+6144 -> 2.40 +dqfma2005 fma 1.20 0 0e+6144 -> 0.00 +dqfma2006 fma 1.20 -2 0e+6144 -> -2.40 +dqfma2007 fma -1.20 2 0e+6144 -> -2.40 +dqfma2008 fma -1.20 0 0e+6144 -> 0.00 +dqfma2009 fma -1.20 -2 0e+6144 -> 2.40 +dqfma2010 fma 5.09 7.1 0e+6144 -> 36.139 +dqfma2011 fma 2.5 4 0e+6144 -> 10.0 +dqfma2012 fma 2.50 4 0e+6144 -> 10.00 +dqfma2013 fma 1.23456789 1.0000000000000000000000000000 0e+6144 -> 1.234567890000000000000000000000000 Rounded +dqfma2015 fma 2.50 4 0e+6144 -> 10.00 +dqfma2016 fma 9.99999999999999999 9.99999999999999999 0e+6144 -> 99.99999999999999980000000000000000 Inexact Rounded +dqfma2017 fma 9.99999999999999999 -9.99999999999999999 0e+6144 -> -99.99999999999999980000000000000000 Inexact Rounded +dqfma2018 fma -9.99999999999999999 9.99999999999999999 0e+6144 -> -99.99999999999999980000000000000000 Inexact Rounded +dqfma2019 fma -9.99999999999999999 -9.99999999999999999 0e+6144 -> 99.99999999999999980000000000000000 Inexact Rounded + +-- zeros, etc. +dqfma2021 fma 0 0 0e+6144 -> 0 +dqfma2022 fma 0 -0 0e+6144 -> 0 +dqfma2023 fma -0 0 0e+6144 -> 0 +dqfma2024 fma -0 -0 0e+6144 -> 0 +dqfma2025 fma -0.0 -0.0 0e+6144 -> 0.00 +dqfma2026 fma -0.0 -0.0 0e+6144 -> 0.00 +dqfma2027 fma -0.0 -0.0 0e+6144 -> 0.00 +dqfma2028 fma -0.0 -0.0 0e+6144 -> 0.00 +dqfma2030 fma 5.00 1E-3 0e+6144 -> 0.00500 +dqfma2031 fma 00.00 0.000 0e+6144 -> 0.00000 +dqfma2032 fma 00.00 0E-3 0e+6144 -> 0.00000 -- rhs is 0 +dqfma2033 fma 0E-3 00.00 0e+6144 -> 0.00000 -- lhs is 0 +dqfma2034 fma -5.00 1E-3 0e+6144 -> -0.00500 +dqfma2035 fma -00.00 0.000 0e+6144 -> 0.00000 +dqfma2036 fma -00.00 0E-3 0e+6144 -> 0.00000 -- rhs is 0 +dqfma2037 fma -0E-3 00.00 0e+6144 -> 0.00000 -- lhs is 0 +dqfma2038 fma 5.00 -1E-3 0e+6144 -> -0.00500 +dqfma2039 fma 00.00 -0.000 0e+6144 -> 0.00000 +dqfma2040 fma 00.00 -0E-3 0e+6144 -> 0.00000 -- rhs is 0 +dqfma2041 fma 0E-3 -00.00 0e+6144 -> 0.00000 -- lhs is 0 +dqfma2042 fma -5.00 -1E-3 0e+6144 -> 0.00500 +dqfma2043 fma -00.00 -0.000 0e+6144 -> 0.00000 +dqfma2044 fma -00.00 -0E-3 0e+6144 -> 0.00000 -- rhs is 0 +dqfma2045 fma -0E-3 -00.00 0e+6144 -> 0.00000 -- lhs is 0 + +-- examples from decarith +dqfma2050 fma 1.20 3 0e+6144 -> 3.60 +dqfma2051 fma 7 3 0e+6144 -> 21 +dqfma2052 fma 0.9 0.8 0e+6144 -> 0.72 +dqfma2053 fma 0.9 -0 0e+6144 -> 0.0 +dqfma2054 fma 654321 654321 0e+6144 -> 428135971041 + +dqfma2060 fma 123.45 1e7 0e+6144 -> 1.2345E+9 +dqfma2061 fma 123.45 1e8 0e+6144 -> 1.2345E+10 +dqfma2062 fma 123.45 1e+9 0e+6144 -> 1.2345E+11 +dqfma2063 fma 123.45 1e10 0e+6144 -> 1.2345E+12 +dqfma2064 fma 123.45 1e11 0e+6144 -> 1.2345E+13 +dqfma2065 fma 123.45 1e12 0e+6144 -> 1.2345E+14 +dqfma2066 fma 123.45 1e13 0e+6144 -> 1.2345E+15 + + +-- test some intermediate lengths +-- 1234567890123456 +dqfma2080 fma 0.1 1230123456456789 0e+6144 -> 123012345645678.9 +dqfma2084 fma 0.1 1230123456456789 0e+6144 -> 123012345645678.9 +dqfma2090 fma 1230123456456789 0.1 0e+6144 -> 123012345645678.9 +dqfma2094 fma 1230123456456789 0.1 0e+6144 -> 123012345645678.9 + +-- test some more edge cases and carries +dqfma2101 fma 9 9 0e+6144 -> 81 +dqfma2102 fma 9 90 0e+6144 -> 810 +dqfma2103 fma 9 900 0e+6144 -> 8100 +dqfma2104 fma 9 9000 0e+6144 -> 81000 +dqfma2105 fma 9 90000 0e+6144 -> 810000 +dqfma2106 fma 9 900000 0e+6144 -> 8100000 +dqfma2107 fma 9 9000000 0e+6144 -> 81000000 +dqfma2108 fma 9 90000000 0e+6144 -> 810000000 +dqfma2109 fma 9 900000000 0e+6144 -> 8100000000 +dqfma2110 fma 9 9000000000 0e+6144 -> 81000000000 +dqfma2111 fma 9 90000000000 0e+6144 -> 810000000000 +dqfma2112 fma 9 900000000000 0e+6144 -> 8100000000000 +dqfma2113 fma 9 9000000000000 0e+6144 -> 81000000000000 +dqfma2114 fma 9 90000000000000 0e+6144 -> 810000000000000 +dqfma2115 fma 9 900000000000000 0e+6144 -> 8100000000000000 +--dqfma2116 fma 9 9000000000000000 0e+6144 -> 81000000000000000 +--dqfma2117 fma 9 90000000000000000 0e+6144 -> 810000000000000000 +--dqfma2118 fma 9 900000000000000000 0e+6144 -> 8100000000000000000 +--dqfma2119 fma 9 9000000000000000000 0e+6144 -> 81000000000000000000 +--dqfma2120 fma 9 90000000000000000000 0e+6144 -> 810000000000000000000 +--dqfma2121 fma 9 900000000000000000000 0e+6144 -> 8100000000000000000000 +--dqfma2122 fma 9 9000000000000000000000 0e+6144 -> 81000000000000000000000 +--dqfma2123 fma 9 90000000000000000000000 0e+6144 -> 810000000000000000000000 +-- test some more edge cases without carries +dqfma2131 fma 3 3 0e+6144 -> 9 +dqfma2132 fma 3 30 0e+6144 -> 90 +dqfma2133 fma 3 300 0e+6144 -> 900 +dqfma2134 fma 3 3000 0e+6144 -> 9000 +dqfma2135 fma 3 30000 0e+6144 -> 90000 +dqfma2136 fma 3 300000 0e+6144 -> 900000 +dqfma2137 fma 3 3000000 0e+6144 -> 9000000 +dqfma2138 fma 3 30000000 0e+6144 -> 90000000 +dqfma2139 fma 3 300000000 0e+6144 -> 900000000 +dqfma2140 fma 3 3000000000 0e+6144 -> 9000000000 +dqfma2141 fma 3 30000000000 0e+6144 -> 90000000000 +dqfma2142 fma 3 300000000000 0e+6144 -> 900000000000 +dqfma2143 fma 3 3000000000000 0e+6144 -> 9000000000000 +dqfma2144 fma 3 30000000000000 0e+6144 -> 90000000000000 +dqfma2145 fma 3 300000000000000 0e+6144 -> 900000000000000 +dqfma2146 fma 3 3000000000000000 0e+6144 -> 9000000000000000 +dqfma2147 fma 3 30000000000000000 0e+6144 -> 90000000000000000 +dqfma2148 fma 3 300000000000000000 0e+6144 -> 900000000000000000 +dqfma2149 fma 3 3000000000000000000 0e+6144 -> 9000000000000000000 +dqfma2150 fma 3 30000000000000000000 0e+6144 -> 90000000000000000000 +dqfma2151 fma 3 300000000000000000000 0e+6144 -> 900000000000000000000 +dqfma2152 fma 3 3000000000000000000000 0e+6144 -> 9000000000000000000000 +dqfma2153 fma 3 30000000000000000000000 0e+6144 -> 90000000000000000000000 + +dqfma2263 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0e+6144 -> 145433.2908011933696719165119928296 Inexact Rounded + +-- test some edge cases with exact rounding +dqfma2301 fma 900000000000000000 9 0e+6144 -> 8100000000000000000 +dqfma2302 fma 900000000000000000 90 0e+6144 -> 81000000000000000000 +dqfma2303 fma 900000000000000000 900 0e+6144 -> 810000000000000000000 +dqfma2304 fma 900000000000000000 9000 0e+6144 -> 8100000000000000000000 +dqfma2305 fma 900000000000000000 90000 0e+6144 -> 81000000000000000000000 +dqfma2306 fma 900000000000000000 900000 0e+6144 -> 810000000000000000000000 +dqfma2307 fma 900000000000000000 9000000 0e+6144 -> 8100000000000000000000000 +dqfma2308 fma 900000000000000000 90000000 0e+6144 -> 81000000000000000000000000 +dqfma2309 fma 900000000000000000 900000000 0e+6144 -> 810000000000000000000000000 +dqfma2310 fma 900000000000000000 9000000000 0e+6144 -> 8100000000000000000000000000 +dqfma2311 fma 900000000000000000 90000000000 0e+6144 -> 81000000000000000000000000000 +dqfma2312 fma 900000000000000000 900000000000 0e+6144 -> 810000000000000000000000000000 +dqfma2313 fma 900000000000000000 9000000000000 0e+6144 -> 8100000000000000000000000000000 +dqfma2314 fma 900000000000000000 90000000000000 0e+6144 -> 81000000000000000000000000000000 +dqfma2315 fma 900000000000000000 900000000000000 0e+6144 -> 810000000000000000000000000000000 +dqfma2316 fma 900000000000000000 9000000000000000 0e+6144 -> 8100000000000000000000000000000000 +dqfma2317 fma 9000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+34 Rounded +dqfma2318 fma 90000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+35 Rounded +dqfma2319 fma 900000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+36 Rounded +dqfma2320 fma 9000000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+37 Rounded +dqfma2321 fma 90000000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+38 Rounded +dqfma2322 fma 900000000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+39 Rounded +dqfma2323 fma 9000000000000000000000000 9000000000000000 0e+6144 -> 8.100000000000000000000000000000000E+40 Rounded + +-- tryzeros cases +dqfma2504 fma 0E-4260 1000E-4260 0e+6144 -> 0E-6176 Clamped +dqfma2505 fma 100E+4260 0E+4260 0e+6144 -> 0E+6111 Clamped + +-- mixed with zeros +dqfma2541 fma 0 -1 0e+6144 -> 0 +dqfma2542 fma -0 -1 0e+6144 -> 0 +dqfma2543 fma 0 1 0e+6144 -> 0 +dqfma2544 fma -0 1 0e+6144 -> 0 +dqfma2545 fma -1 0 0e+6144 -> 0 +dqfma2546 fma -1 -0 0e+6144 -> 0 +dqfma2547 fma 1 0 0e+6144 -> 0 +dqfma2548 fma 1 -0 0e+6144 -> 0 + +dqfma2551 fma 0.0 -1 0e+6144 -> 0.0 +dqfma2552 fma -0.0 -1 0e+6144 -> 0.0 +dqfma2553 fma 0.0 1 0e+6144 -> 0.0 +dqfma2554 fma -0.0 1 0e+6144 -> 0.0 +dqfma2555 fma -1.0 0 0e+6144 -> 0.0 +dqfma2556 fma -1.0 -0 0e+6144 -> 0.0 +dqfma2557 fma 1.0 0 0e+6144 -> 0.0 +dqfma2558 fma 1.0 -0 0e+6144 -> 0.0 + +dqfma2561 fma 0 -1.0 0e+6144 -> 0.0 +dqfma2562 fma -0 -1.0 0e+6144 -> 0.0 +dqfma2563 fma 0 1.0 0e+6144 -> 0.0 +dqfma2564 fma -0 1.0 0e+6144 -> 0.0 +dqfma2565 fma -1 0.0 0e+6144 -> 0.0 +dqfma2566 fma -1 -0.0 0e+6144 -> 0.0 +dqfma2567 fma 1 0.0 0e+6144 -> 0.0 +dqfma2568 fma 1 -0.0 0e+6144 -> 0.0 + +dqfma2571 fma 0.0 -1.0 0e+6144 -> 0.00 +dqfma2572 fma -0.0 -1.0 0e+6144 -> 0.00 +dqfma2573 fma 0.0 1.0 0e+6144 -> 0.00 +dqfma2574 fma -0.0 1.0 0e+6144 -> 0.00 +dqfma2575 fma -1.0 0.0 0e+6144 -> 0.00 +dqfma2576 fma -1.0 -0.0 0e+6144 -> 0.00 +dqfma2577 fma 1.0 0.0 0e+6144 -> 0.00 +dqfma2578 fma 1.0 -0.0 0e+6144 -> 0.00 +dqfma2579 fma 1.0 0.0 0e+6144 -> 0.00 +dqfma2530 fma -1.0 -0.0 0e+6144 -> 0.00 +dqfma2531 fma -1.0 0.0 0e+6144 -> 0.00 +dqfma2532 fma 1.0 -0.0 -0e+6144 -> -0.00 +dqfma2533 fma 1.0 0.0 -0e+6144 -> 0.00 +dqfma2534 fma -1.0 -0.0 -0e+6144 -> 0.00 +dqfma2535 fma -1.0 0.0 -0e+6144 -> -0.00 + + +-- Specials +dqfma2580 fma Inf -Inf 0e+6144 -> -Infinity +dqfma2581 fma Inf -1000 0e+6144 -> -Infinity +dqfma2582 fma Inf -1 0e+6144 -> -Infinity +dqfma2583 fma Inf -0 0e+6144 -> NaN Invalid_operation +dqfma2584 fma Inf 0 0e+6144 -> NaN Invalid_operation +dqfma2585 fma Inf 1 0e+6144 -> Infinity +dqfma2586 fma Inf 1000 0e+6144 -> Infinity +dqfma2587 fma Inf Inf 0e+6144 -> Infinity +dqfma2588 fma -1000 Inf 0e+6144 -> -Infinity +dqfma2589 fma -Inf Inf 0e+6144 -> -Infinity +dqfma2590 fma -1 Inf 0e+6144 -> -Infinity +dqfma2591 fma -0 Inf 0e+6144 -> NaN Invalid_operation +dqfma2592 fma 0 Inf 0e+6144 -> NaN Invalid_operation +dqfma2593 fma 1 Inf 0e+6144 -> Infinity +dqfma2594 fma 1000 Inf 0e+6144 -> Infinity +dqfma2595 fma Inf Inf 0e+6144 -> Infinity + +dqfma2600 fma -Inf -Inf 0e+6144 -> Infinity +dqfma2601 fma -Inf -1000 0e+6144 -> Infinity +dqfma2602 fma -Inf -1 0e+6144 -> Infinity +dqfma2603 fma -Inf -0 0e+6144 -> NaN Invalid_operation +dqfma2604 fma -Inf 0 0e+6144 -> NaN Invalid_operation +dqfma2605 fma -Inf 1 0e+6144 -> -Infinity +dqfma2606 fma -Inf 1000 0e+6144 -> -Infinity +dqfma2607 fma -Inf Inf 0e+6144 -> -Infinity +dqfma2608 fma -1000 Inf 0e+6144 -> -Infinity +dqfma2609 fma -Inf -Inf 0e+6144 -> Infinity +dqfma2610 fma -1 -Inf 0e+6144 -> Infinity +dqfma2611 fma -0 -Inf 0e+6144 -> NaN Invalid_operation +dqfma2612 fma 0 -Inf 0e+6144 -> NaN Invalid_operation +dqfma2613 fma 1 -Inf 0e+6144 -> -Infinity +dqfma2614 fma 1000 -Inf 0e+6144 -> -Infinity +dqfma2615 fma Inf -Inf 0e+6144 -> -Infinity + +dqfma2621 fma NaN -Inf 0e+6144 -> NaN +dqfma2622 fma NaN -1000 0e+6144 -> NaN +dqfma2623 fma NaN -1 0e+6144 -> NaN +dqfma2624 fma NaN -0 0e+6144 -> NaN +dqfma2625 fma NaN 0 0e+6144 -> NaN +dqfma2626 fma NaN 1 0e+6144 -> NaN +dqfma2627 fma NaN 1000 0e+6144 -> NaN +dqfma2628 fma NaN Inf 0e+6144 -> NaN +dqfma2629 fma NaN NaN 0e+6144 -> NaN +dqfma2630 fma -Inf NaN 0e+6144 -> NaN +dqfma2631 fma -1000 NaN 0e+6144 -> NaN +dqfma2632 fma -1 NaN 0e+6144 -> NaN +dqfma2633 fma -0 NaN 0e+6144 -> NaN +dqfma2634 fma 0 NaN 0e+6144 -> NaN +dqfma2635 fma 1 NaN 0e+6144 -> NaN +dqfma2636 fma 1000 NaN 0e+6144 -> NaN +dqfma2637 fma Inf NaN 0e+6144 -> NaN + +dqfma2641 fma sNaN -Inf 0e+6144 -> NaN Invalid_operation +dqfma2642 fma sNaN -1000 0e+6144 -> NaN Invalid_operation +dqfma2643 fma sNaN -1 0e+6144 -> NaN Invalid_operation +dqfma2644 fma sNaN -0 0e+6144 -> NaN Invalid_operation +dqfma2645 fma sNaN 0 0e+6144 -> NaN Invalid_operation +dqfma2646 fma sNaN 1 0e+6144 -> NaN Invalid_operation +dqfma2647 fma sNaN 1000 0e+6144 -> NaN Invalid_operation +dqfma2648 fma sNaN NaN 0e+6144 -> NaN Invalid_operation +dqfma2649 fma sNaN sNaN 0e+6144 -> NaN Invalid_operation +dqfma2650 fma NaN sNaN 0e+6144 -> NaN Invalid_operation +dqfma2651 fma -Inf sNaN 0e+6144 -> NaN Invalid_operation +dqfma2652 fma -1000 sNaN 0e+6144 -> NaN Invalid_operation +dqfma2653 fma -1 sNaN 0e+6144 -> NaN Invalid_operation +dqfma2654 fma -0 sNaN 0e+6144 -> NaN Invalid_operation +dqfma2655 fma 0 sNaN 0e+6144 -> NaN Invalid_operation +dqfma2656 fma 1 sNaN 0e+6144 -> NaN Invalid_operation +dqfma2657 fma 1000 sNaN 0e+6144 -> NaN Invalid_operation +dqfma2658 fma Inf sNaN 0e+6144 -> NaN Invalid_operation +dqfma2659 fma NaN sNaN 0e+6144 -> NaN Invalid_operation + +-- propagating NaNs +dqfma2661 fma NaN9 -Inf 0e+6144 -> NaN9 +dqfma2662 fma NaN8 999 0e+6144 -> NaN8 +dqfma2663 fma NaN71 Inf 0e+6144 -> NaN71 +dqfma2664 fma NaN6 NaN5 0e+6144 -> NaN6 +dqfma2665 fma -Inf NaN4 0e+6144 -> NaN4 +dqfma2666 fma -999 NaN33 0e+6144 -> NaN33 +dqfma2667 fma Inf NaN2 0e+6144 -> NaN2 + +dqfma2671 fma sNaN99 -Inf 0e+6144 -> NaN99 Invalid_operation +dqfma2672 fma sNaN98 -11 0e+6144 -> NaN98 Invalid_operation +dqfma2673 fma sNaN97 NaN 0e+6144 -> NaN97 Invalid_operation +dqfma2674 fma sNaN16 sNaN94 0e+6144 -> NaN16 Invalid_operation +dqfma2675 fma NaN95 sNaN93 0e+6144 -> NaN93 Invalid_operation +dqfma2676 fma -Inf sNaN92 0e+6144 -> NaN92 Invalid_operation +dqfma2677 fma 088 sNaN91 0e+6144 -> NaN91 Invalid_operation +dqfma2678 fma Inf sNaN90 0e+6144 -> NaN90 Invalid_operation +dqfma2679 fma NaN sNaN89 0e+6144 -> NaN89 Invalid_operation + +dqfma2681 fma -NaN9 -Inf 0e+6144 -> -NaN9 +dqfma2682 fma -NaN8 999 0e+6144 -> -NaN8 +dqfma2683 fma -NaN71 Inf 0e+6144 -> -NaN71 +dqfma2684 fma -NaN6 -NaN5 0e+6144 -> -NaN6 +dqfma2685 fma -Inf -NaN4 0e+6144 -> -NaN4 +dqfma2686 fma -999 -NaN33 0e+6144 -> -NaN33 +dqfma2687 fma Inf -NaN2 0e+6144 -> -NaN2 + +dqfma2691 fma -sNaN99 -Inf 0e+6144 -> -NaN99 Invalid_operation +dqfma2692 fma -sNaN98 -11 0e+6144 -> -NaN98 Invalid_operation +dqfma2693 fma -sNaN97 NaN 0e+6144 -> -NaN97 Invalid_operation +dqfma2694 fma -sNaN16 -sNaN94 0e+6144 -> -NaN16 Invalid_operation +dqfma2695 fma -NaN95 -sNaN93 0e+6144 -> -NaN93 Invalid_operation +dqfma2696 fma -Inf -sNaN92 0e+6144 -> -NaN92 Invalid_operation +dqfma2697 fma 088 -sNaN91 0e+6144 -> -NaN91 Invalid_operation +dqfma2698 fma Inf -sNaN90 0e+6144 -> -NaN90 Invalid_operation +dqfma2699 fma -NaN -sNaN89 0e+6144 -> -NaN89 Invalid_operation + +dqfma2701 fma -NaN -Inf 0e+6144 -> -NaN +dqfma2702 fma -NaN 999 0e+6144 -> -NaN +dqfma2703 fma -NaN Inf 0e+6144 -> -NaN +dqfma2704 fma -NaN -NaN 0e+6144 -> -NaN +dqfma2705 fma -Inf -NaN0 0e+6144 -> -NaN +dqfma2706 fma -999 -NaN 0e+6144 -> -NaN +dqfma2707 fma Inf -NaN 0e+6144 -> -NaN + +dqfma2711 fma -sNaN -Inf 0e+6144 -> -NaN Invalid_operation +dqfma2712 fma -sNaN -11 0e+6144 -> -NaN Invalid_operation +dqfma2713 fma -sNaN00 NaN 0e+6144 -> -NaN Invalid_operation +dqfma2714 fma -sNaN -sNaN 0e+6144 -> -NaN Invalid_operation +dqfma2715 fma -NaN -sNaN 0e+6144 -> -NaN Invalid_operation +dqfma2716 fma -Inf -sNaN 0e+6144 -> -NaN Invalid_operation +dqfma2717 fma 088 -sNaN 0e+6144 -> -NaN Invalid_operation +dqfma2718 fma Inf -sNaN 0e+6144 -> -NaN Invalid_operation +dqfma2719 fma -NaN -sNaN 0e+6144 -> -NaN Invalid_operation + +-- overflow and underflow tests .. note subnormal results +-- signs +dqfma2751 fma 1e+4277 1e+3311 0e+6144 -> Infinity Overflow Inexact Rounded +dqfma2752 fma 1e+4277 -1e+3311 0e+6144 -> -Infinity Overflow Inexact Rounded +dqfma2753 fma -1e+4277 1e+3311 0e+6144 -> -Infinity Overflow Inexact Rounded +dqfma2754 fma -1e+4277 -1e+3311 0e+6144 -> Infinity Overflow Inexact Rounded +dqfma2755 fma 1e-4277 1e-3311 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2756 fma 1e-4277 -1e-3311 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2757 fma -1e-4277 1e-3311 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2758 fma -1e-4277 -1e-3311 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +dqfma2760 fma 1e-6069 1e-101 0e+6144 -> 1E-6170 Subnormal +dqfma2761 fma 1e-6069 1e-102 0e+6144 -> 1E-6171 Subnormal +dqfma2762 fma 1e-6069 1e-103 0e+6144 -> 1E-6172 Subnormal +dqfma2763 fma 1e-6069 1e-104 0e+6144 -> 1E-6173 Subnormal +dqfma2764 fma 1e-6069 1e-105 0e+6144 -> 1E-6174 Subnormal +dqfma2765 fma 1e-6069 1e-106 0e+6144 -> 1E-6175 Subnormal +dqfma2766 fma 1e-6069 1e-107 0e+6144 -> 1E-6176 Subnormal +dqfma2767 fma 1e-6069 1e-108 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2768 fma 1e-6069 1e-109 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2769 fma 1e-6069 1e-110 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +-- [no equivalent of 'subnormal' for overflow] +dqfma2770 fma 1e+40 1e+6101 0e+6144 -> 1.000000000000000000000000000000E+6141 Clamped +dqfma2771 fma 1e+40 1e+6102 0e+6144 -> 1.0000000000000000000000000000000E+6142 Clamped +dqfma2772 fma 1e+40 1e+6103 0e+6144 -> 1.00000000000000000000000000000000E+6143 Clamped +dqfma2773 fma 1e+40 1e+6104 0e+6144 -> 1.000000000000000000000000000000000E+6144 Clamped +dqfma2774 fma 1e+40 1e+6105 0e+6144 -> Infinity Overflow Inexact Rounded +dqfma2775 fma 1e+40 1e+6106 0e+6144 -> Infinity Overflow Inexact Rounded +dqfma2776 fma 1e+40 1e+6107 0e+6144 -> Infinity Overflow Inexact Rounded +dqfma2777 fma 1e+40 1e+6108 0e+6144 -> Infinity Overflow Inexact Rounded +dqfma2778 fma 1e+40 1e+6109 0e+6144 -> Infinity Overflow Inexact Rounded +dqfma2779 fma 1e+40 1e+6110 0e+6144 -> Infinity Overflow Inexact Rounded + +dqfma2801 fma 1.0000E-6172 1 0e+6144 -> 1.0000E-6172 Subnormal +dqfma2802 fma 1.000E-6172 1e-1 0e+6144 -> 1.000E-6173 Subnormal +dqfma2803 fma 1.00E-6172 1e-2 0e+6144 -> 1.00E-6174 Subnormal +dqfma2804 fma 1.0E-6172 1e-3 0e+6144 -> 1.0E-6175 Subnormal +dqfma2805 fma 1.0E-6172 1e-4 0e+6144 -> 1E-6176 Subnormal Rounded +dqfma2806 fma 1.3E-6172 1e-4 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqfma2807 fma 1.5E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqfma2808 fma 1.7E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqfma2809 fma 2.3E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqfma2810 fma 2.5E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqfma2811 fma 2.7E-6172 1e-4 0e+6144 -> 3E-6176 Underflow Subnormal Inexact Rounded +dqfma2812 fma 1.49E-6172 1e-4 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqfma2813 fma 1.50E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqfma2814 fma 1.51E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqfma2815 fma 2.49E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqfma2816 fma 2.50E-6172 1e-4 0e+6144 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqfma2817 fma 2.51E-6172 1e-4 0e+6144 -> 3E-6176 Underflow Subnormal Inexact Rounded + +dqfma2818 fma 1E-6172 1e-4 0e+6144 -> 1E-6176 Subnormal +dqfma2819 fma 3E-6172 1e-5 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2820 fma 5E-6172 1e-5 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2821 fma 7E-6172 1e-5 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqfma2822 fma 9E-6172 1e-5 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqfma2823 fma 9.9E-6172 1e-5 0e+6144 -> 1E-6176 Underflow Subnormal Inexact Rounded + +dqfma2824 fma 1E-6172 -1e-4 0e+6144 -> -1E-6176 Subnormal +dqfma2825 fma 3E-6172 -1e-5 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2826 fma -5E-6172 1e-5 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2827 fma 7E-6172 -1e-5 0e+6144 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqfma2828 fma -9E-6172 1e-5 0e+6144 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqfma2829 fma 9.9E-6172 -1e-5 0e+6144 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqfma2830 fma 3.0E-6172 -1e-5 0e+6144 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped + +dqfma2831 fma 1.0E-5977 1e-200 0e+6144 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqfma2832 fma 1.0E-5977 1e-199 0e+6144 -> 1E-6176 Subnormal Rounded +dqfma2833 fma 1.0E-5977 1e-198 0e+6144 -> 1.0E-6175 Subnormal +dqfma2834 fma 2.0E-5977 2e-198 0e+6144 -> 4.0E-6175 Subnormal +dqfma2835 fma 4.0E-5977 4e-198 0e+6144 -> 1.60E-6174 Subnormal +dqfma2836 fma 10.0E-5977 10e-198 0e+6144 -> 1.000E-6173 Subnormal +dqfma2837 fma 30.0E-5977 30e-198 0e+6144 -> 9.000E-6173 Subnormal +dqfma2838 fma 40.0E-5982 40e-166 0e+6144 -> 1.6000E-6145 Subnormal +dqfma2839 fma 40.0E-5982 40e-165 0e+6144 -> 1.6000E-6144 Subnormal +dqfma2840 fma 40.0E-5982 40e-164 0e+6144 -> 1.6000E-6143 + +-- Long operand overflow may be a different path +dqfma2870 fma 100 9.999E+6143 0e+6144 -> Infinity Inexact Overflow Rounded +dqfma2871 fma 100 -9.999E+6143 0e+6144 -> -Infinity Inexact Overflow Rounded +dqfma2872 fma 9.999E+6143 100 0e+6144 -> Infinity Inexact Overflow Rounded +dqfma2873 fma -9.999E+6143 100 0e+6144 -> -Infinity Inexact Overflow Rounded + +-- check for double-rounded subnormals +dqfma2881 fma 1.2347E-6133 1.2347E-40 0e+6144 -> 1.524E-6173 Inexact Rounded Subnormal Underflow +dqfma2882 fma 1.234E-6133 1.234E-40 0e+6144 -> 1.523E-6173 Inexact Rounded Subnormal Underflow +dqfma2883 fma 1.23E-6133 1.23E-40 0e+6144 -> 1.513E-6173 Inexact Rounded Subnormal Underflow +dqfma2884 fma 1.2E-6133 1.2E-40 0e+6144 -> 1.44E-6173 Subnormal +dqfma2885 fma 1.2E-6133 1.2E-41 0e+6144 -> 1.44E-6174 Subnormal +dqfma2886 fma 1.2E-6133 1.2E-42 0e+6144 -> 1.4E-6175 Subnormal Inexact Rounded Underflow +dqfma2887 fma 1.2E-6133 1.3E-42 0e+6144 -> 1.6E-6175 Subnormal Inexact Rounded Underflow +dqfma2888 fma 1.3E-6133 1.3E-42 0e+6144 -> 1.7E-6175 Subnormal Inexact Rounded Underflow +dqfma2889 fma 1.3E-6133 1.3E-43 0e+6144 -> 2E-6176 Subnormal Inexact Rounded Underflow +dqfma2890 fma 1.3E-6134 1.3E-43 0e+6144 -> 0E-6176 Clamped Subnormal Inexact Rounded Underflow + +dqfma2891 fma 1.2345E-39 1.234E-6133 0e+6144 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow +dqfma2892 fma 1.23456E-39 1.234E-6133 0e+6144 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow +dqfma2893 fma 1.2345E-40 1.234E-6133 0e+6144 -> 1.523E-6173 Inexact Rounded Subnormal Underflow +dqfma2894 fma 1.23456E-40 1.234E-6133 0e+6144 -> 1.523E-6173 Inexact Rounded Subnormal Underflow +dqfma2895 fma 1.2345E-41 1.234E-6133 0e+6144 -> 1.52E-6174 Inexact Rounded Subnormal Underflow +dqfma2896 fma 1.23456E-41 1.234E-6133 0e+6144 -> 1.52E-6174 Inexact Rounded Subnormal Underflow + +-- Now explore the case where we get a normal result with Underflow +-- prove operands are exact +dqfma2906 fma 9.999999999999999999999999999999999E-6143 1 0e+6144 -> 9.999999999999999999999999999999999E-6143 +dqfma2907 fma 1 0.09999999999999999999999999999999999 0e+6144 -> 0.09999999999999999999999999999999999 +-- the next rounds to Nmin +dqfma2908 fma 9.999999999999999999999999999999999E-6143 0.09999999999999999999999999999999999 0e+6144 -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded + +-- hugest +dqfma2909 fma 9999999999999999999999999999999999 9999999999999999999999999999999999 0e+6144 -> 9.999999999999999999999999999999998E+67 Inexact Rounded + +-- Examples from SQL proposal (Krishna Kulkarni) +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 +dqfma21001 fma 130E-2 120E-2 0e+6144 -> 1.5600 +dqfma21002 fma 130E-2 12E-1 0e+6144 -> 1.560 +dqfma21003 fma 130E-2 1E0 0e+6144 -> 1.30 +dqfma21004 fma 1E2 1E4 0e+6144 -> 1E+6 + +-- Null tests +dqfma2990 fma 10 # 0e+6144 -> NaN Invalid_operation +dqfma2991 fma # 10 0e+6144 -> NaN Invalid_operation + + +-- ADDITION TESTS ------------------------------------------------------ +rounding: half_even + +-- [first group are 'quick confidence check'] +dqadd3001 fma 1 1 1 -> 2 +dqadd3002 fma 1 2 3 -> 5 +dqadd3003 fma 1 '5.75' '3.3' -> 9.05 +dqadd3004 fma 1 '5' '-3' -> 2 +dqadd3005 fma 1 '-5' '-3' -> -8 +dqadd3006 fma 1 '-7' '2.5' -> -4.5 +dqadd3007 fma 1 '0.7' '0.3' -> 1.0 +dqadd3008 fma 1 '1.25' '1.25' -> 2.50 +dqadd3009 fma 1 '1.23456789' '1.00000000' -> '2.23456789' +dqadd3010 fma 1 '1.23456789' '1.00000011' -> '2.23456800' + +-- 1234567890123456 1234567890123456 +dqadd3011 fma 1 '0.4444444444444444444444444444444446' '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Inexact Rounded +dqadd3012 fma 1 '0.4444444444444444444444444444444445' '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Rounded +dqadd3013 fma 1 '0.4444444444444444444444444444444444' '0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999' +dqadd3014 fma 1 '4444444444444444444444444444444444' '0.49' -> '4444444444444444444444444444444444' Inexact Rounded +dqadd3015 fma 1 '4444444444444444444444444444444444' '0.499' -> '4444444444444444444444444444444444' Inexact Rounded +dqadd3016 fma 1 '4444444444444444444444444444444444' '0.4999' -> '4444444444444444444444444444444444' Inexact Rounded +dqadd3017 fma 1 '4444444444444444444444444444444444' '0.5000' -> '4444444444444444444444444444444444' Inexact Rounded +dqadd3018 fma 1 '4444444444444444444444444444444444' '0.5001' -> '4444444444444444444444444444444445' Inexact Rounded +dqadd3019 fma 1 '4444444444444444444444444444444444' '0.501' -> '4444444444444444444444444444444445' Inexact Rounded +dqadd3020 fma 1 '4444444444444444444444444444444444' '0.51' -> '4444444444444444444444444444444445' Inexact Rounded + +dqadd3021 fma 1 0 1 -> 1 +dqadd3022 fma 1 1 1 -> 2 +dqadd3023 fma 1 2 1 -> 3 +dqadd3024 fma 1 3 1 -> 4 +dqadd3025 fma 1 4 1 -> 5 +dqadd3026 fma 1 5 1 -> 6 +dqadd3027 fma 1 6 1 -> 7 +dqadd3028 fma 1 7 1 -> 8 +dqadd3029 fma 1 8 1 -> 9 +dqadd3030 fma 1 9 1 -> 10 + +-- some carrying effects +dqadd3031 fma 1 '0.9998' '0.0000' -> '0.9998' +dqadd3032 fma 1 '0.9998' '0.0001' -> '0.9999' +dqadd3033 fma 1 '0.9998' '0.0002' -> '1.0000' +dqadd3034 fma 1 '0.9998' '0.0003' -> '1.0001' + +dqadd3035 fma 1 '70' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd3036 fma 1 '700' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd3037 fma 1 '7000' '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd3038 fma 1 '70000' '10000e+34' -> '1.000000000000000000000000000000001E+38' Inexact Rounded +dqadd3039 fma 1 '700000' '10000e+34' -> '1.000000000000000000000000000000007E+38' Rounded + +-- symmetry: +dqadd3040 fma 1 '10000e+34' '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd3041 fma 1 '10000e+34' '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd3042 fma 1 '10000e+34' '7000' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqadd3044 fma 1 '10000e+34' '70000' -> '1.000000000000000000000000000000001E+38' Inexact Rounded +dqadd3045 fma 1 '10000e+34' '700000' -> '1.000000000000000000000000000000007E+38' Rounded + +-- same, without rounding +dqadd3046 fma 1 '10000e+9' '7' -> '10000000000007' +dqadd3047 fma 1 '10000e+9' '70' -> '10000000000070' +dqadd3048 fma 1 '10000e+9' '700' -> '10000000000700' +dqadd3049 fma 1 '10000e+9' '7000' -> '10000000007000' +dqadd3050 fma 1 '10000e+9' '70000' -> '10000000070000' +dqadd3051 fma 1 '10000e+9' '700000' -> '10000000700000' +dqadd3052 fma 1 '10000e+9' '7000000' -> '10000007000000' + +-- examples from decarith +dqadd3053 fma 1 '12' '7.00' -> '19.00' +dqadd3054 fma 1 '1.3' '-1.07' -> '0.23' +dqadd3055 fma 1 '1.3' '-1.30' -> '0.00' +dqadd3056 fma 1 '1.3' '-2.07' -> '-0.77' +dqadd3057 fma 1 '1E+2' '1E+4' -> '1.01E+4' + +-- leading zero preservation +dqadd3061 fma 1 1 '0.0001' -> '1.0001' +dqadd3062 fma 1 1 '0.00001' -> '1.00001' +dqadd3063 fma 1 1 '0.000001' -> '1.000001' +dqadd3064 fma 1 1 '0.0000001' -> '1.0000001' +dqadd3065 fma 1 1 '0.00000001' -> '1.00000001' + +-- some funny zeros [in case of bad signum] +dqadd3070 fma 1 1 0 -> 1 +dqadd3071 fma 1 1 0. -> 1 +dqadd3072 fma 1 1 .0 -> 1.0 +dqadd3073 fma 1 1 0.0 -> 1.0 +dqadd3074 fma 1 1 0.00 -> 1.00 +dqadd3075 fma 1 0 1 -> 1 +dqadd3076 fma 1 0. 1 -> 1 +dqadd3077 fma 1 .0 1 -> 1.0 +dqadd3078 fma 1 0.0 1 -> 1.0 +dqadd3079 fma 1 0.00 1 -> 1.00 + +-- some carries +dqadd3080 fma 1 999999998 1 -> 999999999 +dqadd3081 fma 1 999999999 1 -> 1000000000 +dqadd3082 fma 1 99999999 1 -> 100000000 +dqadd3083 fma 1 9999999 1 -> 10000000 +dqadd3084 fma 1 999999 1 -> 1000000 +dqadd3085 fma 1 99999 1 -> 100000 +dqadd3086 fma 1 9999 1 -> 10000 +dqadd3087 fma 1 999 1 -> 1000 +dqadd3088 fma 1 99 1 -> 100 +dqadd3089 fma 1 9 1 -> 10 + + +-- more LHS swaps +dqadd3090 fma 1 '-56267E-10' 0 -> '-0.0000056267' +dqadd3091 fma 1 '-56267E-6' 0 -> '-0.056267' +dqadd3092 fma 1 '-56267E-5' 0 -> '-0.56267' +dqadd3093 fma 1 '-56267E-4' 0 -> '-5.6267' +dqadd3094 fma 1 '-56267E-3' 0 -> '-56.267' +dqadd3095 fma 1 '-56267E-2' 0 -> '-562.67' +dqadd3096 fma 1 '-56267E-1' 0 -> '-5626.7' +dqadd3097 fma 1 '-56267E-0' 0 -> '-56267' +dqadd3098 fma 1 '-5E-10' 0 -> '-5E-10' +dqadd3099 fma 1 '-5E-7' 0 -> '-5E-7' +dqadd3100 fma 1 '-5E-6' 0 -> '-0.000005' +dqadd3101 fma 1 '-5E-5' 0 -> '-0.00005' +dqadd3102 fma 1 '-5E-4' 0 -> '-0.0005' +dqadd3103 fma 1 '-5E-1' 0 -> '-0.5' +dqadd3104 fma 1 '-5E0' 0 -> '-5' +dqadd3105 fma 1 '-5E1' 0 -> '-50' +dqadd3106 fma 1 '-5E5' 0 -> '-500000' +dqadd3107 fma 1 '-5E33' 0 -> '-5000000000000000000000000000000000' +dqadd3108 fma 1 '-5E34' 0 -> '-5.000000000000000000000000000000000E+34' Rounded +dqadd3109 fma 1 '-5E35' 0 -> '-5.000000000000000000000000000000000E+35' Rounded +dqadd3110 fma 1 '-5E36' 0 -> '-5.000000000000000000000000000000000E+36' Rounded +dqadd3111 fma 1 '-5E100' 0 -> '-5.000000000000000000000000000000000E+100' Rounded + +-- more RHS swaps +dqadd3113 fma 1 0 '-56267E-10' -> '-0.0000056267' +dqadd3114 fma 1 0 '-56267E-6' -> '-0.056267' +dqadd3116 fma 1 0 '-56267E-5' -> '-0.56267' +dqadd3117 fma 1 0 '-56267E-4' -> '-5.6267' +dqadd3119 fma 1 0 '-56267E-3' -> '-56.267' +dqadd3120 fma 1 0 '-56267E-2' -> '-562.67' +dqadd3121 fma 1 0 '-56267E-1' -> '-5626.7' +dqadd3122 fma 1 0 '-56267E-0' -> '-56267' +dqadd3123 fma 1 0 '-5E-10' -> '-5E-10' +dqadd3124 fma 1 0 '-5E-7' -> '-5E-7' +dqadd3125 fma 1 0 '-5E-6' -> '-0.000005' +dqadd3126 fma 1 0 '-5E-5' -> '-0.00005' +dqadd3127 fma 1 0 '-5E-4' -> '-0.0005' +dqadd3128 fma 1 0 '-5E-1' -> '-0.5' +dqadd3129 fma 1 0 '-5E0' -> '-5' +dqadd3130 fma 1 0 '-5E1' -> '-50' +dqadd3131 fma 1 0 '-5E5' -> '-500000' +dqadd3132 fma 1 0 '-5E33' -> '-5000000000000000000000000000000000' +dqadd3133 fma 1 0 '-5E34' -> '-5.000000000000000000000000000000000E+34' Rounded +dqadd3134 fma 1 0 '-5E35' -> '-5.000000000000000000000000000000000E+35' Rounded +dqadd3135 fma 1 0 '-5E36' -> '-5.000000000000000000000000000000000E+36' Rounded +dqadd3136 fma 1 0 '-5E100' -> '-5.000000000000000000000000000000000E+100' Rounded + +-- related +dqadd3137 fma 1 1 '0E-39' -> '1.000000000000000000000000000000000' Rounded +dqadd3138 fma 1 -1 '0E-39' -> '-1.000000000000000000000000000000000' Rounded +dqadd3139 fma 1 '0E-39' 1 -> '1.000000000000000000000000000000000' Rounded +dqadd3140 fma 1 '0E-39' -1 -> '-1.000000000000000000000000000000000' Rounded +dqadd3141 fma 1 1E+29 0.0000 -> '100000000000000000000000000000.0000' +dqadd3142 fma 1 1E+29 0.00000 -> '100000000000000000000000000000.0000' Rounded +dqadd3143 fma 1 0.000 1E+30 -> '1000000000000000000000000000000.000' +dqadd3144 fma 1 0.0000 1E+30 -> '1000000000000000000000000000000.000' Rounded + +-- [some of the next group are really constructor tests] +dqadd3146 fma 1 '00.0' 0 -> '0.0' +dqadd3147 fma 1 '0.00' 0 -> '0.00' +dqadd3148 fma 1 0 '0.00' -> '0.00' +dqadd3149 fma 1 0 '00.0' -> '0.0' +dqadd3150 fma 1 '00.0' '0.00' -> '0.00' +dqadd3151 fma 1 '0.00' '00.0' -> '0.00' +dqadd3152 fma 1 '3' '.3' -> '3.3' +dqadd3153 fma 1 '3.' '.3' -> '3.3' +dqadd3154 fma 1 '3.0' '.3' -> '3.3' +dqadd3155 fma 1 '3.00' '.3' -> '3.30' +dqadd3156 fma 1 '3' '3' -> '6' +dqadd3157 fma 1 '3' '+3' -> '6' +dqadd3158 fma 1 '3' '-3' -> '0' +dqadd3159 fma 1 '0.3' '-0.3' -> '0.0' +dqadd3160 fma 1 '0.03' '-0.03' -> '0.00' + +-- try borderline precision, with carries, etc. +dqadd3161 fma 1 '1E+12' '-1' -> '999999999999' +dqadd3162 fma 1 '1E+12' '1.11' -> '1000000000001.11' +dqadd3163 fma 1 '1.11' '1E+12' -> '1000000000001.11' +dqadd3164 fma 1 '-1' '1E+12' -> '999999999999' +dqadd3165 fma 1 '7E+12' '-1' -> '6999999999999' +dqadd3166 fma 1 '7E+12' '1.11' -> '7000000000001.11' +dqadd3167 fma 1 '1.11' '7E+12' -> '7000000000001.11' +dqadd3168 fma 1 '-1' '7E+12' -> '6999999999999' + +rounding: half_up +dqadd3170 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555567' -> '5.000000000000000000000000000000001' Inexact Rounded +dqadd3171 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555566' -> '5.000000000000000000000000000000001' Inexact Rounded +dqadd3172 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555565' -> '5.000000000000000000000000000000001' Inexact Rounded +dqadd3173 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555564' -> '5.000000000000000000000000000000000' Inexact Rounded +dqadd3174 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555553' -> '4.999999999999999999999999999999999' Inexact Rounded +dqadd3175 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555552' -> '4.999999999999999999999999999999999' Inexact Rounded +dqadd3176 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555551' -> '4.999999999999999999999999999999999' Inexact Rounded +dqadd3177 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555550' -> '4.999999999999999999999999999999999' Rounded +dqadd3178 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555545' -> '4.999999999999999999999999999999999' Inexact Rounded +dqadd3179 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555544' -> '4.999999999999999999999999999999998' Inexact Rounded +dqadd3180 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555543' -> '4.999999999999999999999999999999998' Inexact Rounded +dqadd3181 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555542' -> '4.999999999999999999999999999999998' Inexact Rounded +dqadd3182 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555541' -> '4.999999999999999999999999999999998' Inexact Rounded +dqadd3183 fma 1 '4.444444444444444444444444444444444' '0.5555555555555555555555555555555540' -> '4.999999999999999999999999999999998' Rounded + +-- and some more, including residue effects and different roundings +rounding: half_up +dqadd3200 fma 1 '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' +dqadd3201 fma 1 '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3202 fma 1 '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3203 fma 1 '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3204 fma 1 '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3205 fma 1 '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3206 fma 1 '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3207 fma 1 '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3208 fma 1 '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3209 fma 1 '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3210 fma 1 '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3211 fma 1 '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3212 fma 1 '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3213 fma 1 '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3214 fma 1 '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3215 fma 1 '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3216 fma 1 '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' +dqadd3217 fma 1 '1231234567890123456784560123456789' 1.000000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3218 fma 1 '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3219 fma 1 '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded + +rounding: half_even +dqadd3220 fma 1 '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' +dqadd3221 fma 1 '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3222 fma 1 '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3223 fma 1 '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3224 fma 1 '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3225 fma 1 '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3226 fma 1 '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3227 fma 1 '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3228 fma 1 '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3229 fma 1 '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3230 fma 1 '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3231 fma 1 '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3232 fma 1 '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3233 fma 1 '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3234 fma 1 '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3235 fma 1 '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3236 fma 1 '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' +dqadd3237 fma 1 '1231234567890123456784560123456789' 1.00000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3238 fma 1 '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3239 fma 1 '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded +-- critical few with even bottom digit... +dqadd3240 fma 1 '1231234567890123456784560123456788' 0.499999999 -> '1231234567890123456784560123456788' Inexact Rounded +dqadd3241 fma 1 '1231234567890123456784560123456788' 0.5 -> '1231234567890123456784560123456788' Inexact Rounded +dqadd3242 fma 1 '1231234567890123456784560123456788' 0.500000001 -> '1231234567890123456784560123456789' Inexact Rounded + +rounding: down +dqadd3250 fma 1 '1231234567890123456784560123456789' 0 -> '1231234567890123456784560123456789' +dqadd3251 fma 1 '1231234567890123456784560123456789' 0.000000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3252 fma 1 '1231234567890123456784560123456789' 0.000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3253 fma 1 '1231234567890123456784560123456789' 0.1 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3254 fma 1 '1231234567890123456784560123456789' 0.4 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3255 fma 1 '1231234567890123456784560123456789' 0.49 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3256 fma 1 '1231234567890123456784560123456789' 0.499999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3257 fma 1 '1231234567890123456784560123456789' 0.499999999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3258 fma 1 '1231234567890123456784560123456789' 0.5 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3259 fma 1 '1231234567890123456784560123456789' 0.500000001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3260 fma 1 '1231234567890123456784560123456789' 0.500001 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3261 fma 1 '1231234567890123456784560123456789' 0.51 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3262 fma 1 '1231234567890123456784560123456789' 0.6 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3263 fma 1 '1231234567890123456784560123456789' 0.9 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3264 fma 1 '1231234567890123456784560123456789' 0.99999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3265 fma 1 '1231234567890123456784560123456789' 0.999999999 -> '1231234567890123456784560123456789' Inexact Rounded +dqadd3266 fma 1 '1231234567890123456784560123456789' 1 -> '1231234567890123456784560123456790' +dqadd3267 fma 1 '1231234567890123456784560123456789' 1.00000001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3268 fma 1 '1231234567890123456784560123456789' 1.00001 -> '1231234567890123456784560123456790' Inexact Rounded +dqadd3269 fma 1 '1231234567890123456784560123456789' 1.1 -> '1231234567890123456784560123456790' Inexact Rounded + +-- 1 in last place tests +rounding: half_up +dqadd3301 fma 1 -1 1 -> 0 +dqadd3302 fma 1 0 1 -> 1 +dqadd3303 fma 1 1 1 -> 2 +dqadd3304 fma 1 12 1 -> 13 +dqadd3305 fma 1 98 1 -> 99 +dqadd3306 fma 1 99 1 -> 100 +dqadd3307 fma 1 100 1 -> 101 +dqadd3308 fma 1 101 1 -> 102 +dqadd3309 fma 1 -1 -1 -> -2 +dqadd3310 fma 1 0 -1 -> -1 +dqadd3311 fma 1 1 -1 -> 0 +dqadd3312 fma 1 12 -1 -> 11 +dqadd3313 fma 1 98 -1 -> 97 +dqadd3314 fma 1 99 -1 -> 98 +dqadd3315 fma 1 100 -1 -> 99 +dqadd3316 fma 1 101 -1 -> 100 + +dqadd3321 fma 1 -0.01 0.01 -> 0.00 +dqadd3322 fma 1 0.00 0.01 -> 0.01 +dqadd3323 fma 1 0.01 0.01 -> 0.02 +dqadd3324 fma 1 0.12 0.01 -> 0.13 +dqadd3325 fma 1 0.98 0.01 -> 0.99 +dqadd3326 fma 1 0.99 0.01 -> 1.00 +dqadd3327 fma 1 1.00 0.01 -> 1.01 +dqadd3328 fma 1 1.01 0.01 -> 1.02 +dqadd3329 fma 1 -0.01 -0.01 -> -0.02 +dqadd3330 fma 1 0.00 -0.01 -> -0.01 +dqadd3331 fma 1 0.01 -0.01 -> 0.00 +dqadd3332 fma 1 0.12 -0.01 -> 0.11 +dqadd3333 fma 1 0.98 -0.01 -> 0.97 +dqadd3334 fma 1 0.99 -0.01 -> 0.98 +dqadd3335 fma 1 1.00 -0.01 -> 0.99 +dqadd3336 fma 1 1.01 -0.01 -> 1.00 + +-- some more cases where adding 0 affects the coefficient +dqadd3340 fma 1 1E+3 0 -> 1000 +dqadd3341 fma 1 1E+33 0 -> 1000000000000000000000000000000000 +dqadd3342 fma 1 1E+34 0 -> 1.000000000000000000000000000000000E+34 Rounded +dqadd3343 fma 1 1E+35 0 -> 1.000000000000000000000000000000000E+35 Rounded +-- which simply follow from these cases ... +dqadd3344 fma 1 1E+3 1 -> 1001 +dqadd3345 fma 1 1E+33 1 -> 1000000000000000000000000000000001 +dqadd3346 fma 1 1E+34 1 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd3347 fma 1 1E+35 1 -> 1.000000000000000000000000000000000E+35 Inexact Rounded +dqadd3348 fma 1 1E+3 7 -> 1007 +dqadd3349 fma 1 1E+33 7 -> 1000000000000000000000000000000007 +dqadd3350 fma 1 1E+34 7 -> 1.000000000000000000000000000000001E+34 Inexact Rounded +dqadd3351 fma 1 1E+35 7 -> 1.000000000000000000000000000000000E+35 Inexact Rounded + +-- tryzeros cases +rounding: half_up +dqadd3360 fma 1 0E+50 10000E+1 -> 1.0000E+5 +dqadd3361 fma 1 0E-50 10000E+1 -> 100000.0000000000000000000000000000 Rounded +dqadd3362 fma 1 10000E+1 0E-50 -> 100000.0000000000000000000000000000 Rounded +dqadd3363 fma 1 10000E+1 10000E-50 -> 100000.0000000000000000000000000000 Rounded Inexact +dqadd3364 fma 1 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0E+6111 +-- 1 234567890123456789012345678901234 + +-- a curiosity from JSR 13 testing +rounding: half_down +dqadd3370 fma 1 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 +dqadd3371 fma 1 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact +rounding: half_up +dqadd3372 fma 1 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 +dqadd3373 fma 1 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact +rounding: half_even +dqadd3374 fma 1 999999999999999999999999999999999 815 -> 1000000000000000000000000000000814 +dqadd3375 fma 1 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact + +-- ulp replacement tests +dqadd3400 fma 1 1 77e-32 -> 1.00000000000000000000000000000077 +dqadd3401 fma 1 1 77e-33 -> 1.000000000000000000000000000000077 +dqadd3402 fma 1 1 77e-34 -> 1.000000000000000000000000000000008 Inexact Rounded +dqadd3403 fma 1 1 77e-35 -> 1.000000000000000000000000000000001 Inexact Rounded +dqadd3404 fma 1 1 77e-36 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd3405 fma 1 1 77e-37 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd3406 fma 1 1 77e-299 -> 1.000000000000000000000000000000000 Inexact Rounded + +dqadd3410 fma 1 10 77e-32 -> 10.00000000000000000000000000000077 +dqadd3411 fma 1 10 77e-33 -> 10.00000000000000000000000000000008 Inexact Rounded +dqadd3412 fma 1 10 77e-34 -> 10.00000000000000000000000000000001 Inexact Rounded +dqadd3413 fma 1 10 77e-35 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd3414 fma 1 10 77e-36 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd3415 fma 1 10 77e-37 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd3416 fma 1 10 77e-299 -> 10.00000000000000000000000000000000 Inexact Rounded + +dqadd3420 fma 1 77e-32 1 -> 1.00000000000000000000000000000077 +dqadd3421 fma 1 77e-33 1 -> 1.000000000000000000000000000000077 +dqadd3422 fma 1 77e-34 1 -> 1.000000000000000000000000000000008 Inexact Rounded +dqadd3423 fma 1 77e-35 1 -> 1.000000000000000000000000000000001 Inexact Rounded +dqadd3424 fma 1 77e-36 1 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd3425 fma 1 77e-37 1 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd3426 fma 1 77e-299 1 -> 1.000000000000000000000000000000000 Inexact Rounded + +dqadd3430 fma 1 77e-32 10 -> 10.00000000000000000000000000000077 +dqadd3431 fma 1 77e-33 10 -> 10.00000000000000000000000000000008 Inexact Rounded +dqadd3432 fma 1 77e-34 10 -> 10.00000000000000000000000000000001 Inexact Rounded +dqadd3433 fma 1 77e-35 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd3434 fma 1 77e-36 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd3435 fma 1 77e-37 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd3436 fma 1 77e-299 10 -> 10.00000000000000000000000000000000 Inexact Rounded + +-- negative ulps +dqadd36440 fma 1 1 -77e-32 -> 0.99999999999999999999999999999923 +dqadd36441 fma 1 1 -77e-33 -> 0.999999999999999999999999999999923 +dqadd36442 fma 1 1 -77e-34 -> 0.9999999999999999999999999999999923 +dqadd36443 fma 1 1 -77e-35 -> 0.9999999999999999999999999999999992 Inexact Rounded +dqadd36444 fma 1 1 -77e-36 -> 0.9999999999999999999999999999999999 Inexact Rounded +dqadd36445 fma 1 1 -77e-37 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd36446 fma 1 1 -77e-99 -> 1.000000000000000000000000000000000 Inexact Rounded + +dqadd36450 fma 1 10 -77e-32 -> 9.99999999999999999999999999999923 +dqadd36451 fma 1 10 -77e-33 -> 9.999999999999999999999999999999923 +dqadd36452 fma 1 10 -77e-34 -> 9.999999999999999999999999999999992 Inexact Rounded +dqadd36453 fma 1 10 -77e-35 -> 9.999999999999999999999999999999999 Inexact Rounded +dqadd36454 fma 1 10 -77e-36 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd36455 fma 1 10 -77e-37 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd36456 fma 1 10 -77e-99 -> 10.00000000000000000000000000000000 Inexact Rounded + +dqadd36460 fma 1 -77e-32 1 -> 0.99999999999999999999999999999923 +dqadd36461 fma 1 -77e-33 1 -> 0.999999999999999999999999999999923 +dqadd36462 fma 1 -77e-34 1 -> 0.9999999999999999999999999999999923 +dqadd36463 fma 1 -77e-35 1 -> 0.9999999999999999999999999999999992 Inexact Rounded +dqadd36464 fma 1 -77e-36 1 -> 0.9999999999999999999999999999999999 Inexact Rounded +dqadd36465 fma 1 -77e-37 1 -> 1.000000000000000000000000000000000 Inexact Rounded +dqadd36466 fma 1 -77e-99 1 -> 1.000000000000000000000000000000000 Inexact Rounded + +dqadd36470 fma 1 -77e-32 10 -> 9.99999999999999999999999999999923 +dqadd36471 fma 1 -77e-33 10 -> 9.999999999999999999999999999999923 +dqadd36472 fma 1 -77e-34 10 -> 9.999999999999999999999999999999992 Inexact Rounded +dqadd36473 fma 1 -77e-35 10 -> 9.999999999999999999999999999999999 Inexact Rounded +dqadd36474 fma 1 -77e-36 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd36475 fma 1 -77e-37 10 -> 10.00000000000000000000000000000000 Inexact Rounded +dqadd36476 fma 1 -77e-99 10 -> 10.00000000000000000000000000000000 Inexact Rounded + +-- negative ulps +dqadd36480 fma 1 -1 77e-32 -> -0.99999999999999999999999999999923 +dqadd36481 fma 1 -1 77e-33 -> -0.999999999999999999999999999999923 +dqadd36482 fma 1 -1 77e-34 -> -0.9999999999999999999999999999999923 +dqadd36483 fma 1 -1 77e-35 -> -0.9999999999999999999999999999999992 Inexact Rounded +dqadd36484 fma 1 -1 77e-36 -> -0.9999999999999999999999999999999999 Inexact Rounded +dqadd36485 fma 1 -1 77e-37 -> -1.000000000000000000000000000000000 Inexact Rounded +dqadd36486 fma 1 -1 77e-99 -> -1.000000000000000000000000000000000 Inexact Rounded + +dqadd36490 fma 1 -10 77e-32 -> -9.99999999999999999999999999999923 +dqadd36491 fma 1 -10 77e-33 -> -9.999999999999999999999999999999923 +dqadd36492 fma 1 -10 77e-34 -> -9.999999999999999999999999999999992 Inexact Rounded +dqadd36493 fma 1 -10 77e-35 -> -9.999999999999999999999999999999999 Inexact Rounded +dqadd36494 fma 1 -10 77e-36 -> -10.00000000000000000000000000000000 Inexact Rounded +dqadd36495 fma 1 -10 77e-37 -> -10.00000000000000000000000000000000 Inexact Rounded +dqadd36496 fma 1 -10 77e-99 -> -10.00000000000000000000000000000000 Inexact Rounded + +dqadd36500 fma 1 77e-32 -1 -> -0.99999999999999999999999999999923 +dqadd36501 fma 1 77e-33 -1 -> -0.999999999999999999999999999999923 +dqadd36502 fma 1 77e-34 -1 -> -0.9999999999999999999999999999999923 +dqadd36503 fma 1 77e-35 -1 -> -0.9999999999999999999999999999999992 Inexact Rounded +dqadd36504 fma 1 77e-36 -1 -> -0.9999999999999999999999999999999999 Inexact Rounded +dqadd36505 fma 1 77e-37 -1 -> -1.000000000000000000000000000000000 Inexact Rounded +dqadd36506 fma 1 77e-99 -1 -> -1.000000000000000000000000000000000 Inexact Rounded + +dqadd36510 fma 1 77e-32 -10 -> -9.99999999999999999999999999999923 +dqadd36511 fma 1 77e-33 -10 -> -9.999999999999999999999999999999923 +dqadd36512 fma 1 77e-34 -10 -> -9.999999999999999999999999999999992 Inexact Rounded +dqadd36513 fma 1 77e-35 -10 -> -9.999999999999999999999999999999999 Inexact Rounded +dqadd36514 fma 1 77e-36 -10 -> -10.00000000000000000000000000000000 Inexact Rounded +dqadd36515 fma 1 77e-37 -10 -> -10.00000000000000000000000000000000 Inexact Rounded +dqadd36516 fma 1 77e-99 -10 -> -10.00000000000000000000000000000000 Inexact Rounded + +-- and some more residue effects and different roundings +rounding: half_up +dqadd36540 fma 1 '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' +dqadd36541 fma 1 '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36542 fma 1 '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36543 fma 1 '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36544 fma 1 '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36545 fma 1 '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36546 fma 1 '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36547 fma 1 '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36548 fma 1 '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36549 fma 1 '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36550 fma 1 '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36551 fma 1 '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36552 fma 1 '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36553 fma 1 '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36554 fma 1 '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36555 fma 1 '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36556 fma 1 '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' +dqadd36557 fma 1 '9876543219876543216543210123456789' 1.000000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36558 fma 1 '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36559 fma 1 '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded + +rounding: half_even +dqadd36560 fma 1 '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' +dqadd36561 fma 1 '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36562 fma 1 '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36563 fma 1 '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36564 fma 1 '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36565 fma 1 '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36566 fma 1 '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36567 fma 1 '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd36568 fma 1 '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36569 fma 1 '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36570 fma 1 '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36571 fma 1 '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36572 fma 1 '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36573 fma 1 '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36574 fma 1 '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36575 fma 1 '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36576 fma 1 '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' +dqadd36577 fma 1 '9876543219876543216543210123456789' 1.00000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36578 fma 1 '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd36579 fma 1 '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded + +-- critical few with even bottom digit... +dqadd37540 fma 1 '9876543219876543216543210123456788' 0.499999999 -> '9876543219876543216543210123456788' Inexact Rounded +dqadd37541 fma 1 '9876543219876543216543210123456788' 0.5 -> '9876543219876543216543210123456788' Inexact Rounded +dqadd37542 fma 1 '9876543219876543216543210123456788' 0.500000001 -> '9876543219876543216543210123456789' Inexact Rounded + +rounding: down +dqadd37550 fma 1 '9876543219876543216543210123456789' 0 -> '9876543219876543216543210123456789' +dqadd37551 fma 1 '9876543219876543216543210123456789' 0.000000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37552 fma 1 '9876543219876543216543210123456789' 0.000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37553 fma 1 '9876543219876543216543210123456789' 0.1 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37554 fma 1 '9876543219876543216543210123456789' 0.4 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37555 fma 1 '9876543219876543216543210123456789' 0.49 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37556 fma 1 '9876543219876543216543210123456789' 0.499999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37557 fma 1 '9876543219876543216543210123456789' 0.499999999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37558 fma 1 '9876543219876543216543210123456789' 0.5 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37559 fma 1 '9876543219876543216543210123456789' 0.500000001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37560 fma 1 '9876543219876543216543210123456789' 0.500001 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37561 fma 1 '9876543219876543216543210123456789' 0.51 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37562 fma 1 '9876543219876543216543210123456789' 0.6 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37563 fma 1 '9876543219876543216543210123456789' 0.9 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37564 fma 1 '9876543219876543216543210123456789' 0.99999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37565 fma 1 '9876543219876543216543210123456789' 0.999999999 -> '9876543219876543216543210123456789' Inexact Rounded +dqadd37566 fma 1 '9876543219876543216543210123456789' 1 -> '9876543219876543216543210123456790' +dqadd37567 fma 1 '9876543219876543216543210123456789' 1.00000001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd37568 fma 1 '9876543219876543216543210123456789' 1.00001 -> '9876543219876543216543210123456790' Inexact Rounded +dqadd37569 fma 1 '9876543219876543216543210123456789' 1.1 -> '9876543219876543216543210123456790' Inexact Rounded + +-- more zeros, etc. +rounding: half_even + +dqadd37701 fma 1 5.00 1.00E-3 -> 5.00100 +dqadd37702 fma 1 00.00 0.000 -> 0.000 +dqadd37703 fma 1 00.00 0E-3 -> 0.000 +dqadd37704 fma 1 0E-3 00.00 -> 0.000 + +dqadd37710 fma 1 0E+3 00.00 -> 0.00 +dqadd37711 fma 1 0E+3 00.0 -> 0.0 +dqadd37712 fma 1 0E+3 00. -> 0 +dqadd37713 fma 1 0E+3 00.E+1 -> 0E+1 +dqadd37714 fma 1 0E+3 00.E+2 -> 0E+2 +dqadd37715 fma 1 0E+3 00.E+3 -> 0E+3 +dqadd37716 fma 1 0E+3 00.E+4 -> 0E+3 +dqadd37717 fma 1 0E+3 00.E+5 -> 0E+3 +dqadd37718 fma 1 0E+3 -00.0 -> 0.0 +dqadd37719 fma 1 0E+3 -00. -> 0 +dqadd37731 fma 1 0E+3 -00.E+1 -> 0E+1 + +dqadd37720 fma 1 00.00 0E+3 -> 0.00 +dqadd37721 fma 1 00.0 0E+3 -> 0.0 +dqadd37722 fma 1 00. 0E+3 -> 0 +dqadd37723 fma 1 00.E+1 0E+3 -> 0E+1 +dqadd37724 fma 1 00.E+2 0E+3 -> 0E+2 +dqadd37725 fma 1 00.E+3 0E+3 -> 0E+3 +dqadd37726 fma 1 00.E+4 0E+3 -> 0E+3 +dqadd37727 fma 1 00.E+5 0E+3 -> 0E+3 +dqadd37728 fma 1 -00.00 0E+3 -> 0.00 +dqadd37729 fma 1 -00.0 0E+3 -> 0.0 +dqadd37730 fma 1 -00. 0E+3 -> 0 + +dqadd37732 fma 1 0 0 -> 0 +dqadd37733 fma 1 0 -0 -> 0 +dqadd37734 fma 1 -0 0 -> 0 +dqadd37735 fma 1 -0 -0 -> -0 -- IEEE 854 special case + +dqadd37736 fma 1 1 -1 -> 0 +dqadd37737 fma 1 -1 -1 -> -2 +dqadd37738 fma 1 1 1 -> 2 +dqadd37739 fma 1 -1 1 -> 0 + +dqadd37741 fma 1 0 -1 -> -1 +dqadd37742 fma 1 -0 -1 -> -1 +dqadd37743 fma 1 0 1 -> 1 +dqadd37744 fma 1 -0 1 -> 1 +dqadd37745 fma 1 -1 0 -> -1 +dqadd37746 fma 1 -1 -0 -> -1 +dqadd37747 fma 1 1 0 -> 1 +dqadd37748 fma 1 1 -0 -> 1 + +dqadd37751 fma 1 0.0 -1 -> -1.0 +dqadd37752 fma 1 -0.0 -1 -> -1.0 +dqadd37753 fma 1 0.0 1 -> 1.0 +dqadd37754 fma 1 -0.0 1 -> 1.0 +dqadd37755 fma 1 -1.0 0 -> -1.0 +dqadd37756 fma 1 -1.0 -0 -> -1.0 +dqadd37757 fma 1 1.0 0 -> 1.0 +dqadd37758 fma 1 1.0 -0 -> 1.0 + +dqadd37761 fma 1 0 -1.0 -> -1.0 +dqadd37762 fma 1 -0 -1.0 -> -1.0 +dqadd37763 fma 1 0 1.0 -> 1.0 +dqadd37764 fma 1 -0 1.0 -> 1.0 +dqadd37765 fma 1 -1 0.0 -> -1.0 +dqadd37766 fma 1 -1 -0.0 -> -1.0 +dqadd37767 fma 1 1 0.0 -> 1.0 +dqadd37768 fma 1 1 -0.0 -> 1.0 + +dqadd37771 fma 1 0.0 -1.0 -> -1.0 +dqadd37772 fma 1 -0.0 -1.0 -> -1.0 +dqadd37773 fma 1 0.0 1.0 -> 1.0 +dqadd37774 fma 1 -0.0 1.0 -> 1.0 +dqadd37775 fma 1 -1.0 0.0 -> -1.0 +dqadd37776 fma 1 -1.0 -0.0 -> -1.0 +dqadd37777 fma 1 1.0 0.0 -> 1.0 +dqadd37778 fma 1 1.0 -0.0 -> 1.0 + +-- Specials +dqadd37780 fma 1 -Inf -Inf -> -Infinity +dqadd37781 fma 1 -Inf -1000 -> -Infinity +dqadd37782 fma 1 -Inf -1 -> -Infinity +dqadd37783 fma 1 -Inf -0 -> -Infinity +dqadd37784 fma 1 -Inf 0 -> -Infinity +dqadd37785 fma 1 -Inf 1 -> -Infinity +dqadd37786 fma 1 -Inf 1000 -> -Infinity +dqadd37787 fma 1 -1000 -Inf -> -Infinity +dqadd37788 fma 1 -Inf -Inf -> -Infinity +dqadd37789 fma 1 -1 -Inf -> -Infinity +dqadd37790 fma 1 -0 -Inf -> -Infinity +dqadd37791 fma 1 0 -Inf -> -Infinity +dqadd37792 fma 1 1 -Inf -> -Infinity +dqadd37793 fma 1 1000 -Inf -> -Infinity +dqadd37794 fma 1 Inf -Inf -> NaN Invalid_operation + +dqadd37800 fma 1 Inf -Inf -> NaN Invalid_operation +dqadd37801 fma 1 Inf -1000 -> Infinity +dqadd37802 fma 1 Inf -1 -> Infinity +dqadd37803 fma 1 Inf -0 -> Infinity +dqadd37804 fma 1 Inf 0 -> Infinity +dqadd37805 fma 1 Inf 1 -> Infinity +dqadd37806 fma 1 Inf 1000 -> Infinity +dqadd37807 fma 1 Inf Inf -> Infinity +dqadd37808 fma 1 -1000 Inf -> Infinity +dqadd37809 fma 1 -Inf Inf -> NaN Invalid_operation +dqadd37810 fma 1 -1 Inf -> Infinity +dqadd37811 fma 1 -0 Inf -> Infinity +dqadd37812 fma 1 0 Inf -> Infinity +dqadd37813 fma 1 1 Inf -> Infinity +dqadd37814 fma 1 1000 Inf -> Infinity +dqadd37815 fma 1 Inf Inf -> Infinity + +dqadd37821 fma 1 NaN -Inf -> NaN +dqadd37822 fma 1 NaN -1000 -> NaN +dqadd37823 fma 1 NaN -1 -> NaN +dqadd37824 fma 1 NaN -0 -> NaN +dqadd37825 fma 1 NaN 0 -> NaN +dqadd37826 fma 1 NaN 1 -> NaN +dqadd37827 fma 1 NaN 1000 -> NaN +dqadd37828 fma 1 NaN Inf -> NaN +dqadd37829 fma 1 NaN NaN -> NaN +dqadd37830 fma 1 -Inf NaN -> NaN +dqadd37831 fma 1 -1000 NaN -> NaN +dqadd37832 fma 1 -1 NaN -> NaN +dqadd37833 fma 1 -0 NaN -> NaN +dqadd37834 fma 1 0 NaN -> NaN +dqadd37835 fma 1 1 NaN -> NaN +dqadd37836 fma 1 1000 NaN -> NaN +dqadd37837 fma 1 Inf NaN -> NaN + +dqadd37841 fma 1 sNaN -Inf -> NaN Invalid_operation +dqadd37842 fma 1 sNaN -1000 -> NaN Invalid_operation +dqadd37843 fma 1 sNaN -1 -> NaN Invalid_operation +dqadd37844 fma 1 sNaN -0 -> NaN Invalid_operation +dqadd37845 fma 1 sNaN 0 -> NaN Invalid_operation +dqadd37846 fma 1 sNaN 1 -> NaN Invalid_operation +dqadd37847 fma 1 sNaN 1000 -> NaN Invalid_operation +dqadd37848 fma 1 sNaN NaN -> NaN Invalid_operation +dqadd37849 fma 1 sNaN sNaN -> NaN Invalid_operation +dqadd37850 fma 1 NaN sNaN -> NaN Invalid_operation +dqadd37851 fma 1 -Inf sNaN -> NaN Invalid_operation +dqadd37852 fma 1 -1000 sNaN -> NaN Invalid_operation +dqadd37853 fma 1 -1 sNaN -> NaN Invalid_operation +dqadd37854 fma 1 -0 sNaN -> NaN Invalid_operation +dqadd37855 fma 1 0 sNaN -> NaN Invalid_operation +dqadd37856 fma 1 1 sNaN -> NaN Invalid_operation +dqadd37857 fma 1 1000 sNaN -> NaN Invalid_operation +dqadd37858 fma 1 Inf sNaN -> NaN Invalid_operation +dqadd37859 fma 1 NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqadd37861 fma 1 NaN1 -Inf -> NaN1 +dqadd37862 fma 1 +NaN2 -1000 -> NaN2 +dqadd37863 fma 1 NaN3 1000 -> NaN3 +dqadd37864 fma 1 NaN4 Inf -> NaN4 +dqadd37865 fma 1 NaN5 +NaN6 -> NaN5 +dqadd37866 fma 1 -Inf NaN7 -> NaN7 +dqadd37867 fma 1 -1000 NaN8 -> NaN8 +dqadd37868 fma 1 1000 NaN9 -> NaN9 +dqadd37869 fma 1 Inf +NaN10 -> NaN10 +dqadd37871 fma 1 sNaN11 -Inf -> NaN11 Invalid_operation +dqadd37872 fma 1 sNaN12 -1000 -> NaN12 Invalid_operation +dqadd37873 fma 1 sNaN13 1000 -> NaN13 Invalid_operation +dqadd37874 fma 1 sNaN14 NaN17 -> NaN14 Invalid_operation +dqadd37875 fma 1 sNaN15 sNaN18 -> NaN15 Invalid_operation +dqadd37876 fma 1 NaN16 sNaN19 -> NaN19 Invalid_operation +dqadd37877 fma 1 -Inf +sNaN20 -> NaN20 Invalid_operation +dqadd37878 fma 1 -1000 sNaN21 -> NaN21 Invalid_operation +dqadd37879 fma 1 1000 sNaN22 -> NaN22 Invalid_operation +dqadd37880 fma 1 Inf sNaN23 -> NaN23 Invalid_operation +dqadd37881 fma 1 +NaN25 +sNaN24 -> NaN24 Invalid_operation +dqadd37882 fma 1 -NaN26 NaN28 -> -NaN26 +dqadd37883 fma 1 -sNaN27 sNaN29 -> -NaN27 Invalid_operation +dqadd37884 fma 1 1000 -NaN30 -> -NaN30 +dqadd37885 fma 1 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- Here we explore near the boundary of rounding a subnormal to Nmin +dqadd37575 fma 1 1E-6143 -1E-6176 -> 9.99999999999999999999999999999999E-6144 Subnormal +dqadd37576 fma 1 -1E-6143 +1E-6176 -> -9.99999999999999999999999999999999E-6144 Subnormal + +-- check overflow edge case +-- 1234567890123456 +dqadd37972 apply 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +dqadd37973 fma 1 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37974 fma 1 9999999999999999999999999999999999E+6111 1 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37975 fma 1 9999999999999999999999999999999999E+6111 1E+6111 -> Infinity Overflow Inexact Rounded +dqadd37976 fma 1 9999999999999999999999999999999999E+6111 9E+6110 -> Infinity Overflow Inexact Rounded +dqadd37977 fma 1 9999999999999999999999999999999999E+6111 8E+6110 -> Infinity Overflow Inexact Rounded +dqadd37978 fma 1 9999999999999999999999999999999999E+6111 7E+6110 -> Infinity Overflow Inexact Rounded +dqadd37979 fma 1 9999999999999999999999999999999999E+6111 6E+6110 -> Infinity Overflow Inexact Rounded +dqadd37980 fma 1 9999999999999999999999999999999999E+6111 5E+6110 -> Infinity Overflow Inexact Rounded +dqadd37981 fma 1 9999999999999999999999999999999999E+6111 4E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37982 fma 1 9999999999999999999999999999999999E+6111 3E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37983 fma 1 9999999999999999999999999999999999E+6111 2E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37984 fma 1 9999999999999999999999999999999999E+6111 1E+6110 -> 9.999999999999999999999999999999999E+6144 Inexact Rounded + +dqadd37985 apply -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 +dqadd37986 fma 1 -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37987 fma 1 -9999999999999999999999999999999999E+6111 -1 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37988 fma 1 -9999999999999999999999999999999999E+6111 -1E+6111 -> -Infinity Overflow Inexact Rounded +dqadd37989 fma 1 -9999999999999999999999999999999999E+6111 -9E+6110 -> -Infinity Overflow Inexact Rounded +dqadd37990 fma 1 -9999999999999999999999999999999999E+6111 -8E+6110 -> -Infinity Overflow Inexact Rounded +dqadd37991 fma 1 -9999999999999999999999999999999999E+6111 -7E+6110 -> -Infinity Overflow Inexact Rounded +dqadd37992 fma 1 -9999999999999999999999999999999999E+6111 -6E+6110 -> -Infinity Overflow Inexact Rounded +dqadd37993 fma 1 -9999999999999999999999999999999999E+6111 -5E+6110 -> -Infinity Overflow Inexact Rounded +dqadd37994 fma 1 -9999999999999999999999999999999999E+6111 -4E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37995 fma 1 -9999999999999999999999999999999999E+6111 -3E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37996 fma 1 -9999999999999999999999999999999999E+6111 -2E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded +dqadd37997 fma 1 -9999999999999999999999999999999999E+6111 -1E+6110 -> -9.999999999999999999999999999999999E+6144 Inexact Rounded + +-- And for round down full and subnormal results +rounding: down +dqadd371100 fma 1 1e+2 -1e-6143 -> 99.99999999999999999999999999999999 Rounded Inexact +dqadd371101 fma 1 1e+1 -1e-6143 -> 9.999999999999999999999999999999999 Rounded Inexact +dqadd371103 fma 1 +1 -1e-6143 -> 0.9999999999999999999999999999999999 Rounded Inexact +dqadd371104 fma 1 1e-1 -1e-6143 -> 0.09999999999999999999999999999999999 Rounded Inexact +dqadd371105 fma 1 1e-2 -1e-6143 -> 0.009999999999999999999999999999999999 Rounded Inexact +dqadd371106 fma 1 1e-3 -1e-6143 -> 0.0009999999999999999999999999999999999 Rounded Inexact +dqadd371107 fma 1 1e-4 -1e-6143 -> 0.00009999999999999999999999999999999999 Rounded Inexact +dqadd371108 fma 1 1e-5 -1e-6143 -> 0.000009999999999999999999999999999999999 Rounded Inexact +dqadd371109 fma 1 1e-6 -1e-6143 -> 9.999999999999999999999999999999999E-7 Rounded Inexact + +rounding: ceiling +dqadd371110 fma 1 -1e+2 +1e-6143 -> -99.99999999999999999999999999999999 Rounded Inexact +dqadd371111 fma 1 -1e+1 +1e-6143 -> -9.999999999999999999999999999999999 Rounded Inexact +dqadd371113 fma 1 -1 +1e-6143 -> -0.9999999999999999999999999999999999 Rounded Inexact +dqadd371114 fma 1 -1e-1 +1e-6143 -> -0.09999999999999999999999999999999999 Rounded Inexact +dqadd371115 fma 1 -1e-2 +1e-6143 -> -0.009999999999999999999999999999999999 Rounded Inexact +dqadd371116 fma 1 -1e-3 +1e-6143 -> -0.0009999999999999999999999999999999999 Rounded Inexact +dqadd371117 fma 1 -1e-4 +1e-6143 -> -0.00009999999999999999999999999999999999 Rounded Inexact +dqadd371118 fma 1 -1e-5 +1e-6143 -> -0.000009999999999999999999999999999999999 Rounded Inexact +dqadd371119 fma 1 -1e-6 +1e-6143 -> -9.999999999999999999999999999999999E-7 Rounded Inexact + +-- tests based on Gunnar Degnbol's edge case +rounding: half_even + +dqadd371300 fma 1 1E34 -0.5 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371310 fma 1 1E34 -0.51 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371311 fma 1 1E34 -0.501 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371312 fma 1 1E34 -0.5001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371313 fma 1 1E34 -0.50001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371314 fma 1 1E34 -0.500001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371315 fma 1 1E34 -0.5000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371316 fma 1 1E34 -0.50000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371317 fma 1 1E34 -0.500000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371318 fma 1 1E34 -0.5000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371319 fma 1 1E34 -0.50000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371320 fma 1 1E34 -0.500000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371321 fma 1 1E34 -0.5000000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371322 fma 1 1E34 -0.50000000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371323 fma 1 1E34 -0.500000000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371324 fma 1 1E34 -0.5000000000000001 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371325 fma 1 1E34 -0.5000000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371326 fma 1 1E34 -0.500000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371327 fma 1 1E34 -0.50000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371328 fma 1 1E34 -0.5000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371329 fma 1 1E34 -0.500000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371330 fma 1 1E34 -0.50000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371331 fma 1 1E34 -0.5000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371332 fma 1 1E34 -0.500000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371333 fma 1 1E34 -0.50000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371334 fma 1 1E34 -0.5000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371335 fma 1 1E34 -0.500000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371336 fma 1 1E34 -0.50000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371337 fma 1 1E34 -0.5000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371338 fma 1 1E34 -0.500 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371339 fma 1 1E34 -0.50 -> 1.000000000000000000000000000000000E+34 Inexact Rounded + +dqadd371340 fma 1 1E34 -5000000.000010001 -> 9999999999999999999999999995000000 Inexact Rounded +dqadd371341 fma 1 1E34 -5000000.000000001 -> 9999999999999999999999999995000000 Inexact Rounded + +dqadd371349 fma 1 9999999999999999999999999999999999 0.4 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371350 fma 1 9999999999999999999999999999999999 0.49 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371351 fma 1 9999999999999999999999999999999999 0.499 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371352 fma 1 9999999999999999999999999999999999 0.4999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371353 fma 1 9999999999999999999999999999999999 0.49999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371354 fma 1 9999999999999999999999999999999999 0.499999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371355 fma 1 9999999999999999999999999999999999 0.4999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371356 fma 1 9999999999999999999999999999999999 0.49999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371357 fma 1 9999999999999999999999999999999999 0.499999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371358 fma 1 9999999999999999999999999999999999 0.4999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371359 fma 1 9999999999999999999999999999999999 0.49999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371360 fma 1 9999999999999999999999999999999999 0.499999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371361 fma 1 9999999999999999999999999999999999 0.4999999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371362 fma 1 9999999999999999999999999999999999 0.49999999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371363 fma 1 9999999999999999999999999999999999 0.499999999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371364 fma 1 9999999999999999999999999999999999 0.4999999999999999 -> 9999999999999999999999999999999999 Inexact Rounded +dqadd371365 fma 1 9999999999999999999999999999999999 0.5000000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371367 fma 1 9999999999999999999999999999999999 0.500000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371368 fma 1 9999999999999999999999999999999999 0.50000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371369 fma 1 9999999999999999999999999999999999 0.5000000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371370 fma 1 9999999999999999999999999999999999 0.500000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371371 fma 1 9999999999999999999999999999999999 0.50000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371372 fma 1 9999999999999999999999999999999999 0.5000000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371373 fma 1 9999999999999999999999999999999999 0.500000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371374 fma 1 9999999999999999999999999999999999 0.50000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371375 fma 1 9999999999999999999999999999999999 0.5000000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371376 fma 1 9999999999999999999999999999999999 0.500000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371377 fma 1 9999999999999999999999999999999999 0.50000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371378 fma 1 9999999999999999999999999999999999 0.5000 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371379 fma 1 9999999999999999999999999999999999 0.500 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371380 fma 1 9999999999999999999999999999999999 0.50 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371381 fma 1 9999999999999999999999999999999999 0.5 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371382 fma 1 9999999999999999999999999999999999 0.5000000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371383 fma 1 9999999999999999999999999999999999 0.500000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371384 fma 1 9999999999999999999999999999999999 0.50000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371385 fma 1 9999999999999999999999999999999999 0.5000000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371386 fma 1 9999999999999999999999999999999999 0.500000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371387 fma 1 9999999999999999999999999999999999 0.50000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371388 fma 1 9999999999999999999999999999999999 0.5000000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371389 fma 1 9999999999999999999999999999999999 0.500000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371390 fma 1 9999999999999999999999999999999999 0.50000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371391 fma 1 9999999999999999999999999999999999 0.5000001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371392 fma 1 9999999999999999999999999999999999 0.500001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371393 fma 1 9999999999999999999999999999999999 0.50001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371394 fma 1 9999999999999999999999999999999999 0.5001 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371395 fma 1 9999999999999999999999999999999999 0.501 -> 1.000000000000000000000000000000000E+34 Inexact Rounded +dqadd371396 fma 1 9999999999999999999999999999999999 0.51 -> 1.000000000000000000000000000000000E+34 Inexact Rounded + +-- More GD edge cases, where difference between the unadjusted +-- exponents is larger than the maximum precision and one side is 0 +dqadd371420 fma 1 0 1.123456789987654321123456789012345 -> 1.123456789987654321123456789012345 +dqadd371421 fma 1 0 1.123456789987654321123456789012345E-1 -> 0.1123456789987654321123456789012345 +dqadd371422 fma 1 0 1.123456789987654321123456789012345E-2 -> 0.01123456789987654321123456789012345 +dqadd371423 fma 1 0 1.123456789987654321123456789012345E-3 -> 0.001123456789987654321123456789012345 +dqadd371424 fma 1 0 1.123456789987654321123456789012345E-4 -> 0.0001123456789987654321123456789012345 +dqadd371425 fma 1 0 1.123456789987654321123456789012345E-5 -> 0.00001123456789987654321123456789012345 +dqadd371426 fma 1 0 1.123456789987654321123456789012345E-6 -> 0.000001123456789987654321123456789012345 +dqadd371427 fma 1 0 1.123456789987654321123456789012345E-7 -> 1.123456789987654321123456789012345E-7 +dqadd371428 fma 1 0 1.123456789987654321123456789012345E-8 -> 1.123456789987654321123456789012345E-8 +dqadd371429 fma 1 0 1.123456789987654321123456789012345E-9 -> 1.123456789987654321123456789012345E-9 +dqadd371430 fma 1 0 1.123456789987654321123456789012345E-10 -> 1.123456789987654321123456789012345E-10 +dqadd371431 fma 1 0 1.123456789987654321123456789012345E-11 -> 1.123456789987654321123456789012345E-11 +dqadd371432 fma 1 0 1.123456789987654321123456789012345E-12 -> 1.123456789987654321123456789012345E-12 +dqadd371433 fma 1 0 1.123456789987654321123456789012345E-13 -> 1.123456789987654321123456789012345E-13 +dqadd371434 fma 1 0 1.123456789987654321123456789012345E-14 -> 1.123456789987654321123456789012345E-14 +dqadd371435 fma 1 0 1.123456789987654321123456789012345E-15 -> 1.123456789987654321123456789012345E-15 +dqadd371436 fma 1 0 1.123456789987654321123456789012345E-16 -> 1.123456789987654321123456789012345E-16 +dqadd371437 fma 1 0 1.123456789987654321123456789012345E-17 -> 1.123456789987654321123456789012345E-17 +dqadd371438 fma 1 0 1.123456789987654321123456789012345E-18 -> 1.123456789987654321123456789012345E-18 +dqadd371439 fma 1 0 1.123456789987654321123456789012345E-19 -> 1.123456789987654321123456789012345E-19 +dqadd371440 fma 1 0 1.123456789987654321123456789012345E-20 -> 1.123456789987654321123456789012345E-20 +dqadd371441 fma 1 0 1.123456789987654321123456789012345E-21 -> 1.123456789987654321123456789012345E-21 +dqadd371442 fma 1 0 1.123456789987654321123456789012345E-22 -> 1.123456789987654321123456789012345E-22 +dqadd371443 fma 1 0 1.123456789987654321123456789012345E-23 -> 1.123456789987654321123456789012345E-23 +dqadd371444 fma 1 0 1.123456789987654321123456789012345E-24 -> 1.123456789987654321123456789012345E-24 +dqadd371445 fma 1 0 1.123456789987654321123456789012345E-25 -> 1.123456789987654321123456789012345E-25 +dqadd371446 fma 1 0 1.123456789987654321123456789012345E-26 -> 1.123456789987654321123456789012345E-26 +dqadd371447 fma 1 0 1.123456789987654321123456789012345E-27 -> 1.123456789987654321123456789012345E-27 +dqadd371448 fma 1 0 1.123456789987654321123456789012345E-28 -> 1.123456789987654321123456789012345E-28 +dqadd371449 fma 1 0 1.123456789987654321123456789012345E-29 -> 1.123456789987654321123456789012345E-29 +dqadd371450 fma 1 0 1.123456789987654321123456789012345E-30 -> 1.123456789987654321123456789012345E-30 +dqadd371451 fma 1 0 1.123456789987654321123456789012345E-31 -> 1.123456789987654321123456789012345E-31 +dqadd371452 fma 1 0 1.123456789987654321123456789012345E-32 -> 1.123456789987654321123456789012345E-32 +dqadd371453 fma 1 0 1.123456789987654321123456789012345E-33 -> 1.123456789987654321123456789012345E-33 +dqadd371454 fma 1 0 1.123456789987654321123456789012345E-34 -> 1.123456789987654321123456789012345E-34 +dqadd371455 fma 1 0 1.123456789987654321123456789012345E-35 -> 1.123456789987654321123456789012345E-35 +dqadd371456 fma 1 0 1.123456789987654321123456789012345E-36 -> 1.123456789987654321123456789012345E-36 + +-- same, reversed 0 +dqadd371460 fma 1 1.123456789987654321123456789012345 0 -> 1.123456789987654321123456789012345 +dqadd371461 fma 1 1.123456789987654321123456789012345E-1 0 -> 0.1123456789987654321123456789012345 +dqadd371462 fma 1 1.123456789987654321123456789012345E-2 0 -> 0.01123456789987654321123456789012345 +dqadd371463 fma 1 1.123456789987654321123456789012345E-3 0 -> 0.001123456789987654321123456789012345 +dqadd371464 fma 1 1.123456789987654321123456789012345E-4 0 -> 0.0001123456789987654321123456789012345 +dqadd371465 fma 1 1.123456789987654321123456789012345E-5 0 -> 0.00001123456789987654321123456789012345 +dqadd371466 fma 1 1.123456789987654321123456789012345E-6 0 -> 0.000001123456789987654321123456789012345 +dqadd371467 fma 1 1.123456789987654321123456789012345E-7 0 -> 1.123456789987654321123456789012345E-7 +dqadd371468 fma 1 1.123456789987654321123456789012345E-8 0 -> 1.123456789987654321123456789012345E-8 +dqadd371469 fma 1 1.123456789987654321123456789012345E-9 0 -> 1.123456789987654321123456789012345E-9 +dqadd371470 fma 1 1.123456789987654321123456789012345E-10 0 -> 1.123456789987654321123456789012345E-10 +dqadd371471 fma 1 1.123456789987654321123456789012345E-11 0 -> 1.123456789987654321123456789012345E-11 +dqadd371472 fma 1 1.123456789987654321123456789012345E-12 0 -> 1.123456789987654321123456789012345E-12 +dqadd371473 fma 1 1.123456789987654321123456789012345E-13 0 -> 1.123456789987654321123456789012345E-13 +dqadd371474 fma 1 1.123456789987654321123456789012345E-14 0 -> 1.123456789987654321123456789012345E-14 +dqadd371475 fma 1 1.123456789987654321123456789012345E-15 0 -> 1.123456789987654321123456789012345E-15 +dqadd371476 fma 1 1.123456789987654321123456789012345E-16 0 -> 1.123456789987654321123456789012345E-16 +dqadd371477 fma 1 1.123456789987654321123456789012345E-17 0 -> 1.123456789987654321123456789012345E-17 +dqadd371478 fma 1 1.123456789987654321123456789012345E-18 0 -> 1.123456789987654321123456789012345E-18 +dqadd371479 fma 1 1.123456789987654321123456789012345E-19 0 -> 1.123456789987654321123456789012345E-19 +dqadd371480 fma 1 1.123456789987654321123456789012345E-20 0 -> 1.123456789987654321123456789012345E-20 +dqadd371481 fma 1 1.123456789987654321123456789012345E-21 0 -> 1.123456789987654321123456789012345E-21 +dqadd371482 fma 1 1.123456789987654321123456789012345E-22 0 -> 1.123456789987654321123456789012345E-22 +dqadd371483 fma 1 1.123456789987654321123456789012345E-23 0 -> 1.123456789987654321123456789012345E-23 +dqadd371484 fma 1 1.123456789987654321123456789012345E-24 0 -> 1.123456789987654321123456789012345E-24 +dqadd371485 fma 1 1.123456789987654321123456789012345E-25 0 -> 1.123456789987654321123456789012345E-25 +dqadd371486 fma 1 1.123456789987654321123456789012345E-26 0 -> 1.123456789987654321123456789012345E-26 +dqadd371487 fma 1 1.123456789987654321123456789012345E-27 0 -> 1.123456789987654321123456789012345E-27 +dqadd371488 fma 1 1.123456789987654321123456789012345E-28 0 -> 1.123456789987654321123456789012345E-28 +dqadd371489 fma 1 1.123456789987654321123456789012345E-29 0 -> 1.123456789987654321123456789012345E-29 +dqadd371490 fma 1 1.123456789987654321123456789012345E-30 0 -> 1.123456789987654321123456789012345E-30 +dqadd371491 fma 1 1.123456789987654321123456789012345E-31 0 -> 1.123456789987654321123456789012345E-31 +dqadd371492 fma 1 1.123456789987654321123456789012345E-32 0 -> 1.123456789987654321123456789012345E-32 +dqadd371493 fma 1 1.123456789987654321123456789012345E-33 0 -> 1.123456789987654321123456789012345E-33 +dqadd371494 fma 1 1.123456789987654321123456789012345E-34 0 -> 1.123456789987654321123456789012345E-34 +dqadd371495 fma 1 1.123456789987654321123456789012345E-35 0 -> 1.123456789987654321123456789012345E-35 +dqadd371496 fma 1 1.123456789987654321123456789012345E-36 0 -> 1.123456789987654321123456789012345E-36 + +-- same, Es on the 0 +dqadd371500 fma 1 1.123456789987654321123456789012345 0E-0 -> 1.123456789987654321123456789012345 +dqadd371501 fma 1 1.123456789987654321123456789012345 0E-1 -> 1.123456789987654321123456789012345 +dqadd371502 fma 1 1.123456789987654321123456789012345 0E-2 -> 1.123456789987654321123456789012345 +dqadd371503 fma 1 1.123456789987654321123456789012345 0E-3 -> 1.123456789987654321123456789012345 +dqadd371504 fma 1 1.123456789987654321123456789012345 0E-4 -> 1.123456789987654321123456789012345 +dqadd371505 fma 1 1.123456789987654321123456789012345 0E-5 -> 1.123456789987654321123456789012345 +dqadd371506 fma 1 1.123456789987654321123456789012345 0E-6 -> 1.123456789987654321123456789012345 +dqadd371507 fma 1 1.123456789987654321123456789012345 0E-7 -> 1.123456789987654321123456789012345 +dqadd371508 fma 1 1.123456789987654321123456789012345 0E-8 -> 1.123456789987654321123456789012345 +dqadd371509 fma 1 1.123456789987654321123456789012345 0E-9 -> 1.123456789987654321123456789012345 +dqadd371510 fma 1 1.123456789987654321123456789012345 0E-10 -> 1.123456789987654321123456789012345 +dqadd371511 fma 1 1.123456789987654321123456789012345 0E-11 -> 1.123456789987654321123456789012345 +dqadd371512 fma 1 1.123456789987654321123456789012345 0E-12 -> 1.123456789987654321123456789012345 +dqadd371513 fma 1 1.123456789987654321123456789012345 0E-13 -> 1.123456789987654321123456789012345 +dqadd371514 fma 1 1.123456789987654321123456789012345 0E-14 -> 1.123456789987654321123456789012345 +dqadd371515 fma 1 1.123456789987654321123456789012345 0E-15 -> 1.123456789987654321123456789012345 +dqadd371516 fma 1 1.123456789987654321123456789012345 0E-16 -> 1.123456789987654321123456789012345 +dqadd371517 fma 1 1.123456789987654321123456789012345 0E-17 -> 1.123456789987654321123456789012345 +dqadd371518 fma 1 1.123456789987654321123456789012345 0E-18 -> 1.123456789987654321123456789012345 +dqadd371519 fma 1 1.123456789987654321123456789012345 0E-19 -> 1.123456789987654321123456789012345 +dqadd371520 fma 1 1.123456789987654321123456789012345 0E-20 -> 1.123456789987654321123456789012345 +dqadd371521 fma 1 1.123456789987654321123456789012345 0E-21 -> 1.123456789987654321123456789012345 +dqadd371522 fma 1 1.123456789987654321123456789012345 0E-22 -> 1.123456789987654321123456789012345 +dqadd371523 fma 1 1.123456789987654321123456789012345 0E-23 -> 1.123456789987654321123456789012345 +dqadd371524 fma 1 1.123456789987654321123456789012345 0E-24 -> 1.123456789987654321123456789012345 +dqadd371525 fma 1 1.123456789987654321123456789012345 0E-25 -> 1.123456789987654321123456789012345 +dqadd371526 fma 1 1.123456789987654321123456789012345 0E-26 -> 1.123456789987654321123456789012345 +dqadd371527 fma 1 1.123456789987654321123456789012345 0E-27 -> 1.123456789987654321123456789012345 +dqadd371528 fma 1 1.123456789987654321123456789012345 0E-28 -> 1.123456789987654321123456789012345 +dqadd371529 fma 1 1.123456789987654321123456789012345 0E-29 -> 1.123456789987654321123456789012345 +dqadd371530 fma 1 1.123456789987654321123456789012345 0E-30 -> 1.123456789987654321123456789012345 +dqadd371531 fma 1 1.123456789987654321123456789012345 0E-31 -> 1.123456789987654321123456789012345 +dqadd371532 fma 1 1.123456789987654321123456789012345 0E-32 -> 1.123456789987654321123456789012345 +dqadd371533 fma 1 1.123456789987654321123456789012345 0E-33 -> 1.123456789987654321123456789012345 +-- next four flag Rounded because the 0 extends the result +dqadd371534 fma 1 1.123456789987654321123456789012345 0E-34 -> 1.123456789987654321123456789012345 Rounded +dqadd371535 fma 1 1.123456789987654321123456789012345 0E-35 -> 1.123456789987654321123456789012345 Rounded +dqadd371536 fma 1 1.123456789987654321123456789012345 0E-36 -> 1.123456789987654321123456789012345 Rounded +dqadd371537 fma 1 1.123456789987654321123456789012345 0E-37 -> 1.123456789987654321123456789012345 Rounded + +-- sum of two opposite-sign operands is exactly 0 and floor => -0 +rounding: half_up +-- exact zeros from zeros +dqadd371600 fma 1 0 0E-19 -> 0E-19 +dqadd371601 fma 1 -0 0E-19 -> 0E-19 +dqadd371602 fma 1 0 -0E-19 -> 0E-19 +dqadd371603 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371611 fma 1 -11 11 -> 0 +dqadd371612 fma 1 11 -11 -> 0 +-- overflow +dqadd371613 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371614 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded + +rounding: half_down +-- exact zeros from zeros +dqadd371620 fma 1 0 0E-19 -> 0E-19 +dqadd371621 fma 1 -0 0E-19 -> 0E-19 +dqadd371622 fma 1 0 -0E-19 -> 0E-19 +dqadd371623 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371631 fma 1 -11 11 -> 0 +dqadd371632 fma 1 11 -11 -> 0 +-- overflow +dqadd371633 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371634 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded + +rounding: half_even +-- exact zeros from zeros +dqadd371640 fma 1 0 0E-19 -> 0E-19 +dqadd371641 fma 1 -0 0E-19 -> 0E-19 +dqadd371642 fma 1 0 -0E-19 -> 0E-19 +dqadd371643 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371651 fma 1 -11 11 -> 0 +dqadd371652 fma 1 11 -11 -> 0 +-- overflow +dqadd371653 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371654 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded + +rounding: up +-- exact zeros from zeros +dqadd371660 fma 1 0 0E-19 -> 0E-19 +dqadd371661 fma 1 -0 0E-19 -> 0E-19 +dqadd371662 fma 1 0 -0E-19 -> 0E-19 +dqadd371663 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371671 fma 1 -11 11 -> 0 +dqadd371672 fma 1 11 -11 -> 0 +-- overflow +dqadd371673 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371674 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded + +rounding: down +-- exact zeros from zeros +dqadd371680 fma 1 0 0E-19 -> 0E-19 +dqadd371681 fma 1 -0 0E-19 -> 0E-19 +dqadd371682 fma 1 0 -0E-19 -> 0E-19 +dqadd371683 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371691 fma 1 -11 11 -> 0 +dqadd371692 fma 1 11 -11 -> 0 +-- overflow +dqadd371693 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +dqadd371694 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded + +rounding: ceiling +-- exact zeros from zeros +dqadd371700 fma 1 0 0E-19 -> 0E-19 +dqadd371701 fma 1 -0 0E-19 -> 0E-19 +dqadd371702 fma 1 0 -0E-19 -> 0E-19 +dqadd371703 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371711 fma 1 -11 11 -> 0 +dqadd371712 fma 1 11 -11 -> 0 +-- overflow +dqadd371713 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371714 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded + +-- and the extra-special ugly case; unusual minuses marked by -- * +rounding: floor +-- exact zeros from zeros +dqadd371720 fma 1 0 0E-19 -> 0E-19 +dqadd371721 fma 1 -0 0E-19 -> -0E-19 -- * +dqadd371722 fma 1 0 -0E-19 -> -0E-19 -- * +dqadd371723 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371731 fma 1 -11 11 -> -0 -- * +dqadd371732 fma 1 11 -11 -> -0 -- * +-- overflow +dqadd371733 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +dqadd371734 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded + +rounding: 05up +-- exact zeros from zeros +dqadd371740 fma 1 0 0E-19 -> 0E-19 +dqadd371741 fma 1 -0 0E-19 -> 0E-19 +dqadd371742 fma 1 0 -0E-19 -> 0E-19 +dqadd371743 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371751 fma 1 -11 11 -> 0 +dqadd371752 fma 1 11 -11 -> 0 +-- overflow +dqadd371753 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +dqadd371754 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded + +-- Examples from SQL proposal (Krishna Kulkarni) +dqadd371761 fma 1 130E-2 120E-2 -> 2.50 +dqadd371762 fma 1 130E-2 12E-1 -> 2.50 +dqadd371763 fma 1 130E-2 1E0 -> 2.30 +dqadd371764 fma 1 1E2 1E4 -> 1.01E+4 +dqadd371765 fma 1 130E-2 -120E-2 -> 0.10 +dqadd371766 fma 1 130E-2 -12E-1 -> 0.10 +dqadd371767 fma 1 130E-2 -1E0 -> 0.30 +dqadd371768 fma 1 1E2 -1E4 -> -9.9E+3 + +-- Gappy coefficients; check residue handling even with full coefficient gap +rounding: half_even + +dqadd375001 fma 1 1239876543211234567894567890123456 1 -> 1239876543211234567894567890123457 +dqadd375002 fma 1 1239876543211234567894567890123456 0.6 -> 1239876543211234567894567890123457 Inexact Rounded +dqadd375003 fma 1 1239876543211234567894567890123456 0.06 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375004 fma 1 1239876543211234567894567890123456 6E-3 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375005 fma 1 1239876543211234567894567890123456 6E-4 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375006 fma 1 1239876543211234567894567890123456 6E-5 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375007 fma 1 1239876543211234567894567890123456 6E-6 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375008 fma 1 1239876543211234567894567890123456 6E-7 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375009 fma 1 1239876543211234567894567890123456 6E-8 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375010 fma 1 1239876543211234567894567890123456 6E-9 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375011 fma 1 1239876543211234567894567890123456 6E-10 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375012 fma 1 1239876543211234567894567890123456 6E-11 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375013 fma 1 1239876543211234567894567890123456 6E-12 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375014 fma 1 1239876543211234567894567890123456 6E-13 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375015 fma 1 1239876543211234567894567890123456 6E-14 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375016 fma 1 1239876543211234567894567890123456 6E-15 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375017 fma 1 1239876543211234567894567890123456 6E-16 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375018 fma 1 1239876543211234567894567890123456 6E-17 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375019 fma 1 1239876543211234567894567890123456 6E-18 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375020 fma 1 1239876543211234567894567890123456 6E-19 -> 1239876543211234567894567890123456 Inexact Rounded +dqadd375021 fma 1 1239876543211234567894567890123456 6E-20 -> 1239876543211234567894567890123456 Inexact Rounded + +-- widening second argument at gap +dqadd375030 fma 1 12398765432112345678945678 1 -> 12398765432112345678945679 +dqadd375031 fma 1 12398765432112345678945678 0.1 -> 12398765432112345678945678.1 +dqadd375032 fma 1 12398765432112345678945678 0.12 -> 12398765432112345678945678.12 +dqadd375033 fma 1 12398765432112345678945678 0.123 -> 12398765432112345678945678.123 +dqadd375034 fma 1 12398765432112345678945678 0.1234 -> 12398765432112345678945678.1234 +dqadd375035 fma 1 12398765432112345678945678 0.12345 -> 12398765432112345678945678.12345 +dqadd375036 fma 1 12398765432112345678945678 0.123456 -> 12398765432112345678945678.123456 +dqadd375037 fma 1 12398765432112345678945678 0.1234567 -> 12398765432112345678945678.1234567 +dqadd375038 fma 1 12398765432112345678945678 0.12345678 -> 12398765432112345678945678.12345678 +dqadd375039 fma 1 12398765432112345678945678 0.123456789 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd375040 fma 1 12398765432112345678945678 0.123456785 -> 12398765432112345678945678.12345678 Inexact Rounded +dqadd375041 fma 1 12398765432112345678945678 0.1234567850 -> 12398765432112345678945678.12345678 Inexact Rounded +dqadd375042 fma 1 12398765432112345678945678 0.1234567851 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd375043 fma 1 12398765432112345678945678 0.12345678501 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd375044 fma 1 12398765432112345678945678 0.123456785001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd375045 fma 1 12398765432112345678945678 0.1234567850001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd375046 fma 1 12398765432112345678945678 0.12345678500001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd375047 fma 1 12398765432112345678945678 0.123456785000001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd375048 fma 1 12398765432112345678945678 0.1234567850000001 -> 12398765432112345678945678.12345679 Inexact Rounded +dqadd375049 fma 1 12398765432112345678945678 0.1234567850000000 -> 12398765432112345678945678.12345678 Inexact Rounded +-- 90123456 +rounding: half_even +dqadd375050 fma 1 12398765432112345678945678 0.0234567750000000 -> 12398765432112345678945678.02345678 Inexact Rounded +dqadd375051 fma 1 12398765432112345678945678 0.0034567750000000 -> 12398765432112345678945678.00345678 Inexact Rounded +dqadd375052 fma 1 12398765432112345678945678 0.0004567750000000 -> 12398765432112345678945678.00045678 Inexact Rounded +dqadd375053 fma 1 12398765432112345678945678 0.0000567750000000 -> 12398765432112345678945678.00005678 Inexact Rounded +dqadd375054 fma 1 12398765432112345678945678 0.0000067750000000 -> 12398765432112345678945678.00000678 Inexact Rounded +dqadd375055 fma 1 12398765432112345678945678 0.0000007750000000 -> 12398765432112345678945678.00000078 Inexact Rounded +dqadd375056 fma 1 12398765432112345678945678 0.0000000750000000 -> 12398765432112345678945678.00000008 Inexact Rounded +dqadd375057 fma 1 12398765432112345678945678 0.0000000050000000 -> 12398765432112345678945678.00000000 Inexact Rounded +dqadd375060 fma 1 12398765432112345678945678 0.0234567750000001 -> 12398765432112345678945678.02345678 Inexact Rounded +dqadd375061 fma 1 12398765432112345678945678 0.0034567750000001 -> 12398765432112345678945678.00345678 Inexact Rounded +dqadd375062 fma 1 12398765432112345678945678 0.0004567750000001 -> 12398765432112345678945678.00045678 Inexact Rounded +dqadd375063 fma 1 12398765432112345678945678 0.0000567750000001 -> 12398765432112345678945678.00005678 Inexact Rounded +dqadd375064 fma 1 12398765432112345678945678 0.0000067750000001 -> 12398765432112345678945678.00000678 Inexact Rounded +dqadd375065 fma 1 12398765432112345678945678 0.0000007750000001 -> 12398765432112345678945678.00000078 Inexact Rounded +dqadd375066 fma 1 12398765432112345678945678 0.0000000750000001 -> 12398765432112345678945678.00000008 Inexact Rounded +dqadd375067 fma 1 12398765432112345678945678 0.0000000050000001 -> 12398765432112345678945678.00000001 Inexact Rounded +-- far-out residues (full coefficient gap is 16+15 digits) +rounding: up +dqadd375070 fma 1 12398765432112345678945678 1E-8 -> 12398765432112345678945678.00000001 +dqadd375071 fma 1 12398765432112345678945678 1E-9 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375072 fma 1 12398765432112345678945678 1E-10 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375073 fma 1 12398765432112345678945678 1E-11 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375074 fma 1 12398765432112345678945678 1E-12 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375075 fma 1 12398765432112345678945678 1E-13 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375076 fma 1 12398765432112345678945678 1E-14 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375077 fma 1 12398765432112345678945678 1E-15 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375078 fma 1 12398765432112345678945678 1E-16 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375079 fma 1 12398765432112345678945678 1E-17 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375080 fma 1 12398765432112345678945678 1E-18 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375081 fma 1 12398765432112345678945678 1E-19 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375082 fma 1 12398765432112345678945678 1E-20 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375083 fma 1 12398765432112345678945678 1E-25 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375084 fma 1 12398765432112345678945678 1E-30 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375085 fma 1 12398765432112345678945678 1E-31 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375086 fma 1 12398765432112345678945678 1E-32 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375087 fma 1 12398765432112345678945678 1E-33 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375088 fma 1 12398765432112345678945678 1E-34 -> 12398765432112345678945678.00000001 Inexact Rounded +dqadd375089 fma 1 12398765432112345678945678 1E-35 -> 12398765432112345678945678.00000001 Inexact Rounded + +-- Destructive subtract (from remainder tests) + +-- +++ some of these will be off-by-one remainder vs remainderNear + +dqfma4000 fma -1234567890123456789012345678901233 1.000000000000000000000000000000001 1234567890123456789012345678901234 -> -0.234567890123456789012345678901233 +dqfma4001 fma -1234567890123456789012345678901222 1.00000000000000000000000000000001 1234567890123456789012345678901234 -> -0.34567890123456789012345678901222 +dqfma4002 fma -1234567890123456789012345678901111 1.0000000000000000000000000000001 1234567890123456789012345678901234 -> -0.4567890123456789012345678901111 +dqfma4003 fma -308641972530864197253086419725314 4.000000000000000000000000000000001 1234567890123456789012345678901255 -> -1.308641972530864197253086419725314 +dqfma4004 fma -308641972530864197253086419725308 4.000000000000000000000000000000001 1234567890123456789012345678901234 -> 1.691358027469135802746913580274692 +dqfma4005 fma -246913578024691357802469135780252 4.9999999999999999999999999999999 1234567890123456789012345678901234 -> -1.3086421975308642197530864219748 +dqfma4006 fma -246913578024691357802469135780247 4.99999999999999999999999999999999 1234567890123456789012345678901234 -> 1.46913578024691357802469135780247 +dqfma4007 fma -246913578024691357802469135780247 4.999999999999999999999999999999999 1234567890123456789012345678901234 -> -0.753086421975308642197530864219753 +dqfma4008 fma -246913578024691357802469135780247 5.000000000000000000000000000000001 1234567890123456789012345678901234 -> -1.246913578024691357802469135780247 +dqfma4009 fma -246913578024691357802469135780246 5.00000000000000000000000000000001 1234567890123456789012345678901234 -> 1.53086421975308642197530864219754 +dqfma4010 fma -246913578024691357802469135780242 5.0000000000000000000000000000001 1234567890123456789012345678901234 -> -0.6913578024691357802469135780242 +dqfma4011 fma -1234567890123456789012345678901232 1.000000000000000000000000000000001 1234567890123456789012345678901234 -> 0.765432109876543210987654321098768 +dqfma4012 fma -1234567890123456789012345678901221 1.00000000000000000000000000000001 1234567890123456789012345678901234 -> 0.65432109876543210987654321098779 +dqfma4013 fma -1234567890123456789012345678901110 1.0000000000000000000000000000001 1234567890123456789012345678901234 -> 0.5432109876543210987654321098890 +dqfma4014 fma -308641972530864197253086419725313 4.000000000000000000000000000000001 1234567890123456789012345678901255 -> 2.691358027469135802746913580274687 +dqfma4015 fma -308641972530864197253086419725308 4.000000000000000000000000000000001 1234567890123456789012345678901234 -> 1.691358027469135802746913580274692 +dqfma4016 fma -246913578024691357802469135780251 4.9999999999999999999999999999999 1234567890123456789012345678901234 -> 3.6913578024691357802469135780251 +dqfma4017 fma -246913578024691357802469135780247 4.99999999999999999999999999999999 1234567890123456789012345678901234 -> 1.46913578024691357802469135780247 +dqfma4018 fma -246913578024691357802469135780246 4.999999999999999999999999999999999 1234567890123456789012345678901234 -> 4.246913578024691357802469135780246 +dqfma4019 fma -246913578024691357802469135780241 5.0000000000000000000000000000001 1234567890123456789012345678901234 -> 4.3086421975308642197530864219759 + +-- Null tests +dqadd39990 fma 1 10 # -> NaN Invalid_operation +dqadd39991 fma 1 # 10 -> NaN Invalid_operation + + diff --git a/Lib/test/decimaltestdata/dqInvert.decTest b/Lib/test/decimaltestdata/dqInvert.decTest index 3a1e29e..522cfc8 100644 --- a/Lib/test/decimaltestdata/dqInvert.decTest +++ b/Lib/test/decimaltestdata/dqInvert.decTest @@ -1,245 +1,245 @@ ------------------------------------------------------------------------- --- dqInvert.decTest -- digitwise logical INVERT for decQuads -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check (truth table) -dqinv001 invert 0 -> 1111111111111111111111111111111111 -dqinv002 invert 1 -> 1111111111111111111111111111111110 -dqinv003 invert 10 -> 1111111111111111111111111111111101 -dqinv004 invert 111111111 -> 1111111111111111111111111000000000 -dqinv005 invert 000000000 -> 1111111111111111111111111111111111 --- and at msd and msd-1 -dqinv007 invert 0000000000000000000000000000000000 -> 1111111111111111111111111111111111 -dqinv008 invert 1000000000000000000000000000000000 -> 111111111111111111111111111111111 -dqinv009 invert 0000000000000000000000000000000000 -> 1111111111111111111111111111111111 -dqinv010 invert 0100000000000000000000000000000000 -> 1011111111111111111111111111111111 -dqinv011 invert 0111111111111111111111111111111111 -> 1000000000000000000000000000000000 -dqinv012 invert 1111111111111111111111111111111111 -> 0 -dqinv013 invert 0011111111111111111111111111111111 -> 1100000000000000000000000000000000 -dqinv014 invert 0111111111111111111111111111111111 -> 1000000000000000000000000000000000 - --- Various lengths -dqinv600 invert 0111111111111111111011111111111111 -> 1000000000000000000100000000000000 -dqinv601 invert 0011111111111111110101111111111111 -> 1100000000000000001010000000000000 -dqinv602 invert 0101111111111111101110111111111111 -> 1010000000000000010001000000000000 -dqinv603 invert 0110111111111111011111011111111111 -> 1001000000000000100000100000000000 -dqinv604 invert 0111011111111110111111101111111111 -> 1000100000000001000000010000000000 -dqinv605 invert 0111101111111101111111110111111111 -> 1000010000000010000000001000000000 -dqinv606 invert 0111110111111011111111111011111111 -> 1000001000000100000000000100000000 -dqinv607 invert 0111111011110111111111111101111111 -> 1000000100001000000000000010000000 -dqinv608 invert 0111111101101111111111111110111111 -> 1000000010010000000000000001000000 -dqinv609 invert 0111111110011111111111111111011111 -> 1000000001100000000000000000100000 -dqinv610 invert 0111111110011111111111111111101111 -> 1000000001100000000000000000010000 -dqinv611 invert 0111111101101111111111111111110111 -> 1000000010010000000000000000001000 -dqinv612 invert 0111111011110111111111111111111011 -> 1000000100001000000000000000000100 -dqinv613 invert 0111110111111011111111111111111101 -> 1000001000000100000000000000000010 -dqinv614 invert 0111101111111101111111111111111110 -> 1000010000000010000000000000000001 -dqinv615 invert 0111011111111110111111111111111111 -> 1000100000000001000000000000000000 -dqinv616 invert 0110111111111111011111111111111110 -> 1001000000000000100000000000000001 -dqinv617 invert 0101111111111111101111111111111101 -> 1010000000000000010000000000000010 -dqinv618 invert 0011111111111111110111111111111011 -> 1100000000000000001000000000000100 -dqinv619 invert 0101111111111111111011111111110111 -> 1010000000000000000100000000001000 -dqinv620 invert 0110111111111111111101111111101111 -> 1001000000000000000010000000010000 -dqinv621 invert 0111011111111111111110111111011111 -> 1000100000000000000001000000100000 -dqinv622 invert 0111101111111111111111011110111111 -> 1000010000000000000000100001000000 -dqinv623 invert 0111110111111111111111101101111111 -> 1000001000000000000000010010000000 -dqinv624 invert 0111111011111111111111110011111111 -> 1000000100000000000000001100000000 -dqinv625 invert 0111111101111111111111110011111111 -> 1000000010000000000000001100000000 -dqinv626 invert 0111111110111111111111101101111111 -> 1000000001000000000000010010000000 -dqinv627 invert 0111111111011111111111011110111111 -> 1000000000100000000000100001000000 -dqinv628 invert 0111111111101111111110111111011111 -> 1000000000010000000001000000100000 -dqinv629 invert 0111111111110111111101111111101111 -> 1000000000001000000010000000010000 -dqinv630 invert 0111111111111011111011111111110111 -> 1000000000000100000100000000001000 -dqinv631 invert 0111111111111101110111111111111011 -> 1000000000000010001000000000000100 -dqinv632 invert 0111111111111110101111111111111101 -> 1000000000000001010000000000000010 -dqinv633 invert 0111111111111111011111111111111110 -> 1000000000000000100000000000000001 - -dqinv021 invert 111111111 -> 1111111111111111111111111000000000 -dqinv022 invert 111111111111 -> 1111111111111111111111000000000000 -dqinv023 invert 11111111 -> 1111111111111111111111111100000000 -dqinv025 invert 1111111 -> 1111111111111111111111111110000000 -dqinv026 invert 111111 -> 1111111111111111111111111111000000 -dqinv027 invert 11111 -> 1111111111111111111111111111100000 -dqinv028 invert 1111 -> 1111111111111111111111111111110000 -dqinv029 invert 111 -> 1111111111111111111111111111111000 -dqinv031 invert 11 -> 1111111111111111111111111111111100 -dqinv032 invert 1 -> 1111111111111111111111111111111110 -dqinv033 invert 111111111111 -> 1111111111111111111111000000000000 -dqinv034 invert 11111111111 -> 1111111111111111111111100000000000 -dqinv035 invert 1111111111 -> 1111111111111111111111110000000000 -dqinv036 invert 111111111 -> 1111111111111111111111111000000000 - -dqinv040 invert 011111111 -> 1111111111111111111111111100000000 -dqinv041 invert 101111111 -> 1111111111111111111111111010000000 -dqinv042 invert 110111111 -> 1111111111111111111111111001000000 -dqinv043 invert 111011111 -> 1111111111111111111111111000100000 -dqinv044 invert 111101111 -> 1111111111111111111111111000010000 -dqinv045 invert 111110111 -> 1111111111111111111111111000001000 -dqinv046 invert 111111011 -> 1111111111111111111111111000000100 -dqinv047 invert 111111101 -> 1111111111111111111111111000000010 -dqinv048 invert 111111110 -> 1111111111111111111111111000000001 -dqinv049 invert 011111011 -> 1111111111111111111111111100000100 -dqinv050 invert 101111101 -> 1111111111111111111111111010000010 -dqinv051 invert 110111110 -> 1111111111111111111111111001000001 -dqinv052 invert 111011101 -> 1111111111111111111111111000100010 -dqinv053 invert 111101011 -> 1111111111111111111111111000010100 -dqinv054 invert 111110111 -> 1111111111111111111111111000001000 -dqinv055 invert 111101011 -> 1111111111111111111111111000010100 -dqinv056 invert 111011101 -> 1111111111111111111111111000100010 -dqinv057 invert 110111110 -> 1111111111111111111111111001000001 -dqinv058 invert 101111101 -> 1111111111111111111111111010000010 -dqinv059 invert 011111011 -> 1111111111111111111111111100000100 - -dqinv080 invert 1000000011111111 -> 1111111111111111110111111100000000 -dqinv081 invert 0100000101111111 -> 1111111111111111111011111010000000 -dqinv082 invert 0010000110111111 -> 1111111111111111111101111001000000 -dqinv083 invert 0001000111011111 -> 1111111111111111111110111000100000 -dqinv084 invert 0000100111101111 -> 1111111111111111111111011000010000 -dqinv085 invert 0000010111110111 -> 1111111111111111111111101000001000 -dqinv086 invert 0000001111111011 -> 1111111111111111111111110000000100 -dqinv087 invert 0000010111111101 -> 1111111111111111111111101000000010 -dqinv088 invert 0000100111111110 -> 1111111111111111111111011000000001 -dqinv089 invert 0001000011111011 -> 1111111111111111111110111100000100 -dqinv090 invert 0010000101111101 -> 1111111111111111111101111010000010 -dqinv091 invert 0100000110111110 -> 1111111111111111111011111001000001 -dqinv092 invert 1000000111011101 -> 1111111111111111110111111000100010 -dqinv093 invert 0100000111101011 -> 1111111111111111111011111000010100 -dqinv094 invert 0010000111110111 -> 1111111111111111111101111000001000 -dqinv095 invert 0001000111101011 -> 1111111111111111111110111000010100 -dqinv096 invert 0000100111011101 -> 1111111111111111111111011000100010 -dqinv097 invert 0000010110111110 -> 1111111111111111111111101001000001 -dqinv098 invert 0000001101111101 -> 1111111111111111111111110010000010 -dqinv099 invert 0000010011111011 -> 1111111111111111111111101100000100 - --- and more thorough MSD/LSD tests [8 and 9 mght be encoded differently...] -dqinv151 invert 1111111111111111111111111111111110 -> 1 -dqinv152 invert 1111111111111111110000000000000000 -> 1111111111111111 -dqinv153 invert 1000000000000000001111111111111111 -> 111111111111111110000000000000000 -dqinv154 invert 1111111111111111111000000000000000 -> 111111111111111 -dqinv155 invert 0100000000000000000111111111111111 -> 1011111111111111111000000000000000 -dqinv156 invert 1011111111111111110100000000000000 -> 100000000000000001011111111111111 -dqinv157 invert 1101111111111111110111111111111111 -> 10000000000000001000000000000000 -dqinv158 invert 1110111111111111110011111111111111 -> 1000000000000001100000000000000 - --- non-0/1 should not be accepted, nor should signs -dqinv220 invert 111111112 -> NaN Invalid_operation -dqinv221 invert 333333333 -> NaN Invalid_operation -dqinv222 invert 555555555 -> NaN Invalid_operation -dqinv223 invert 777777777 -> NaN Invalid_operation -dqinv224 invert 999999999 -> NaN Invalid_operation -dqinv225 invert 222222222 -> NaN Invalid_operation -dqinv226 invert 444444444 -> NaN Invalid_operation -dqinv227 invert 666666666 -> NaN Invalid_operation -dqinv228 invert 888888888 -> NaN Invalid_operation -dqinv229 invert 999999999 -> NaN Invalid_operation -dqinv230 invert 999999999 -> NaN Invalid_operation -dqinv231 invert 999999999 -> NaN Invalid_operation -dqinv232 invert 999999999 -> NaN Invalid_operation --- a few randoms -dqinv240 invert 567468689 -> NaN Invalid_operation -dqinv241 invert 567367689 -> NaN Invalid_operation -dqinv242 invert -631917772 -> NaN Invalid_operation -dqinv243 invert -756253257 -> NaN Invalid_operation -dqinv244 invert 835590149 -> NaN Invalid_operation --- test MSD -dqinv250 invert 2000000111000111000111000000000000 -> NaN Invalid_operation -dqinv251 invert 3000000111000111000111000000000000 -> NaN Invalid_operation -dqinv252 invert 4000000111000111000111000000000000 -> NaN Invalid_operation -dqinv253 invert 5000000111000111000111000000000000 -> NaN Invalid_operation -dqinv254 invert 6000000111000111000111000000000000 -> NaN Invalid_operation -dqinv255 invert 7000000111000111000111000000000000 -> NaN Invalid_operation -dqinv256 invert 8000000111000111000111000000000000 -> NaN Invalid_operation -dqinv257 invert 9000000111000111000111000000000000 -> NaN Invalid_operation --- test MSD-1 -dqinv270 invert 0200000111000111000111001000000000 -> NaN Invalid_operation -dqinv271 invert 0300000111000111000111000100000000 -> NaN Invalid_operation -dqinv272 invert 0400000111000111000111000010000000 -> NaN Invalid_operation -dqinv273 invert 0500000111000111000111000001000000 -> NaN Invalid_operation -dqinv274 invert 1600000111000111000111000000100000 -> NaN Invalid_operation -dqinv275 invert 1700000111000111000111000000010000 -> NaN Invalid_operation -dqinv276 invert 1800000111000111000111000000001000 -> NaN Invalid_operation -dqinv277 invert 1900000111000111000111000000000100 -> NaN Invalid_operation --- test LSD -dqinv280 invert 0010000111000111000111000000000002 -> NaN Invalid_operation -dqinv281 invert 0001000111000111000111000000000003 -> NaN Invalid_operation -dqinv282 invert 0000000111000111000111100000000004 -> NaN Invalid_operation -dqinv283 invert 0000000111000111000111010000000005 -> NaN Invalid_operation -dqinv284 invert 1000000111000111000111001000000006 -> NaN Invalid_operation -dqinv285 invert 1000000111000111000111000100000007 -> NaN Invalid_operation -dqinv286 invert 1000000111000111000111000010000008 -> NaN Invalid_operation -dqinv287 invert 1000000111000111000111000001000009 -> NaN Invalid_operation --- test Middie -dqinv288 invert 0010000111000111000111000020000000 -> NaN Invalid_operation -dqinv289 invert 0001000111000111000111000030000001 -> NaN Invalid_operation -dqinv290 invert 0000000111000111000111100040000010 -> NaN Invalid_operation -dqinv291 invert 0000000111000111000111010050000100 -> NaN Invalid_operation -dqinv292 invert 1000000111000111000111001060001000 -> NaN Invalid_operation -dqinv293 invert 1000000111000111000111000170010000 -> NaN Invalid_operation -dqinv294 invert 1000000111000111000111000080100000 -> NaN Invalid_operation -dqinv295 invert 1000000111000111000111000091000000 -> NaN Invalid_operation --- signs -dqinv296 invert -1000000111000111000111000001000000 -> NaN Invalid_operation -dqinv299 invert 1000000111000111000111000001000000 -> 111111000111000111000111110111111 - --- Nmax, Nmin, Ntiny-like -dqinv341 invert 9.99999999E+2998 -> NaN Invalid_operation -dqinv342 invert 1E-2998 -> NaN Invalid_operation -dqinv343 invert 1.00000000E-2998 -> NaN Invalid_operation -dqinv344 invert 1E-2078 -> NaN Invalid_operation -dqinv345 invert -1E-2078 -> NaN Invalid_operation -dqinv346 invert -1.00000000E-2998 -> NaN Invalid_operation -dqinv347 invert -1E-2998 -> NaN Invalid_operation -dqinv348 invert -9.99999999E+2998 -> NaN Invalid_operation - --- A few other non-integers -dqinv361 invert 1.0 -> NaN Invalid_operation -dqinv362 invert 1E+1 -> NaN Invalid_operation -dqinv363 invert 0.0 -> NaN Invalid_operation -dqinv364 invert 0E+1 -> NaN Invalid_operation -dqinv365 invert 9.9 -> NaN Invalid_operation -dqinv366 invert 9E+1 -> NaN Invalid_operation - --- All Specials are in error -dqinv788 invert -Inf -> NaN Invalid_operation -dqinv794 invert Inf -> NaN Invalid_operation -dqinv821 invert NaN -> NaN Invalid_operation -dqinv841 invert sNaN -> NaN Invalid_operation --- propagating NaNs -dqinv861 invert NaN1 -> NaN Invalid_operation -dqinv862 invert +NaN2 -> NaN Invalid_operation -dqinv863 invert NaN3 -> NaN Invalid_operation -dqinv864 invert NaN4 -> NaN Invalid_operation -dqinv865 invert NaN5 -> NaN Invalid_operation -dqinv871 invert sNaN11 -> NaN Invalid_operation -dqinv872 invert sNaN12 -> NaN Invalid_operation -dqinv873 invert sNaN13 -> NaN Invalid_operation -dqinv874 invert sNaN14 -> NaN Invalid_operation -dqinv875 invert sNaN15 -> NaN Invalid_operation -dqinv876 invert NaN16 -> NaN Invalid_operation -dqinv881 invert +NaN25 -> NaN Invalid_operation -dqinv882 invert -NaN26 -> NaN Invalid_operation -dqinv883 invert -sNaN27 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqInvert.decTest -- digitwise logical INVERT for decQuads -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check (truth table) +dqinv001 invert 0 -> 1111111111111111111111111111111111 +dqinv002 invert 1 -> 1111111111111111111111111111111110 +dqinv003 invert 10 -> 1111111111111111111111111111111101 +dqinv004 invert 111111111 -> 1111111111111111111111111000000000 +dqinv005 invert 000000000 -> 1111111111111111111111111111111111 +-- and at msd and msd-1 +dqinv007 invert 0000000000000000000000000000000000 -> 1111111111111111111111111111111111 +dqinv008 invert 1000000000000000000000000000000000 -> 111111111111111111111111111111111 +dqinv009 invert 0000000000000000000000000000000000 -> 1111111111111111111111111111111111 +dqinv010 invert 0100000000000000000000000000000000 -> 1011111111111111111111111111111111 +dqinv011 invert 0111111111111111111111111111111111 -> 1000000000000000000000000000000000 +dqinv012 invert 1111111111111111111111111111111111 -> 0 +dqinv013 invert 0011111111111111111111111111111111 -> 1100000000000000000000000000000000 +dqinv014 invert 0111111111111111111111111111111111 -> 1000000000000000000000000000000000 + +-- Various lengths +dqinv600 invert 0111111111111111111011111111111111 -> 1000000000000000000100000000000000 +dqinv601 invert 0011111111111111110101111111111111 -> 1100000000000000001010000000000000 +dqinv602 invert 0101111111111111101110111111111111 -> 1010000000000000010001000000000000 +dqinv603 invert 0110111111111111011111011111111111 -> 1001000000000000100000100000000000 +dqinv604 invert 0111011111111110111111101111111111 -> 1000100000000001000000010000000000 +dqinv605 invert 0111101111111101111111110111111111 -> 1000010000000010000000001000000000 +dqinv606 invert 0111110111111011111111111011111111 -> 1000001000000100000000000100000000 +dqinv607 invert 0111111011110111111111111101111111 -> 1000000100001000000000000010000000 +dqinv608 invert 0111111101101111111111111110111111 -> 1000000010010000000000000001000000 +dqinv609 invert 0111111110011111111111111111011111 -> 1000000001100000000000000000100000 +dqinv610 invert 0111111110011111111111111111101111 -> 1000000001100000000000000000010000 +dqinv611 invert 0111111101101111111111111111110111 -> 1000000010010000000000000000001000 +dqinv612 invert 0111111011110111111111111111111011 -> 1000000100001000000000000000000100 +dqinv613 invert 0111110111111011111111111111111101 -> 1000001000000100000000000000000010 +dqinv614 invert 0111101111111101111111111111111110 -> 1000010000000010000000000000000001 +dqinv615 invert 0111011111111110111111111111111111 -> 1000100000000001000000000000000000 +dqinv616 invert 0110111111111111011111111111111110 -> 1001000000000000100000000000000001 +dqinv617 invert 0101111111111111101111111111111101 -> 1010000000000000010000000000000010 +dqinv618 invert 0011111111111111110111111111111011 -> 1100000000000000001000000000000100 +dqinv619 invert 0101111111111111111011111111110111 -> 1010000000000000000100000000001000 +dqinv620 invert 0110111111111111111101111111101111 -> 1001000000000000000010000000010000 +dqinv621 invert 0111011111111111111110111111011111 -> 1000100000000000000001000000100000 +dqinv622 invert 0111101111111111111111011110111111 -> 1000010000000000000000100001000000 +dqinv623 invert 0111110111111111111111101101111111 -> 1000001000000000000000010010000000 +dqinv624 invert 0111111011111111111111110011111111 -> 1000000100000000000000001100000000 +dqinv625 invert 0111111101111111111111110011111111 -> 1000000010000000000000001100000000 +dqinv626 invert 0111111110111111111111101101111111 -> 1000000001000000000000010010000000 +dqinv627 invert 0111111111011111111111011110111111 -> 1000000000100000000000100001000000 +dqinv628 invert 0111111111101111111110111111011111 -> 1000000000010000000001000000100000 +dqinv629 invert 0111111111110111111101111111101111 -> 1000000000001000000010000000010000 +dqinv630 invert 0111111111111011111011111111110111 -> 1000000000000100000100000000001000 +dqinv631 invert 0111111111111101110111111111111011 -> 1000000000000010001000000000000100 +dqinv632 invert 0111111111111110101111111111111101 -> 1000000000000001010000000000000010 +dqinv633 invert 0111111111111111011111111111111110 -> 1000000000000000100000000000000001 + +dqinv021 invert 111111111 -> 1111111111111111111111111000000000 +dqinv022 invert 111111111111 -> 1111111111111111111111000000000000 +dqinv023 invert 11111111 -> 1111111111111111111111111100000000 +dqinv025 invert 1111111 -> 1111111111111111111111111110000000 +dqinv026 invert 111111 -> 1111111111111111111111111111000000 +dqinv027 invert 11111 -> 1111111111111111111111111111100000 +dqinv028 invert 1111 -> 1111111111111111111111111111110000 +dqinv029 invert 111 -> 1111111111111111111111111111111000 +dqinv031 invert 11 -> 1111111111111111111111111111111100 +dqinv032 invert 1 -> 1111111111111111111111111111111110 +dqinv033 invert 111111111111 -> 1111111111111111111111000000000000 +dqinv034 invert 11111111111 -> 1111111111111111111111100000000000 +dqinv035 invert 1111111111 -> 1111111111111111111111110000000000 +dqinv036 invert 111111111 -> 1111111111111111111111111000000000 + +dqinv040 invert 011111111 -> 1111111111111111111111111100000000 +dqinv041 invert 101111111 -> 1111111111111111111111111010000000 +dqinv042 invert 110111111 -> 1111111111111111111111111001000000 +dqinv043 invert 111011111 -> 1111111111111111111111111000100000 +dqinv044 invert 111101111 -> 1111111111111111111111111000010000 +dqinv045 invert 111110111 -> 1111111111111111111111111000001000 +dqinv046 invert 111111011 -> 1111111111111111111111111000000100 +dqinv047 invert 111111101 -> 1111111111111111111111111000000010 +dqinv048 invert 111111110 -> 1111111111111111111111111000000001 +dqinv049 invert 011111011 -> 1111111111111111111111111100000100 +dqinv050 invert 101111101 -> 1111111111111111111111111010000010 +dqinv051 invert 110111110 -> 1111111111111111111111111001000001 +dqinv052 invert 111011101 -> 1111111111111111111111111000100010 +dqinv053 invert 111101011 -> 1111111111111111111111111000010100 +dqinv054 invert 111110111 -> 1111111111111111111111111000001000 +dqinv055 invert 111101011 -> 1111111111111111111111111000010100 +dqinv056 invert 111011101 -> 1111111111111111111111111000100010 +dqinv057 invert 110111110 -> 1111111111111111111111111001000001 +dqinv058 invert 101111101 -> 1111111111111111111111111010000010 +dqinv059 invert 011111011 -> 1111111111111111111111111100000100 + +dqinv080 invert 1000000011111111 -> 1111111111111111110111111100000000 +dqinv081 invert 0100000101111111 -> 1111111111111111111011111010000000 +dqinv082 invert 0010000110111111 -> 1111111111111111111101111001000000 +dqinv083 invert 0001000111011111 -> 1111111111111111111110111000100000 +dqinv084 invert 0000100111101111 -> 1111111111111111111111011000010000 +dqinv085 invert 0000010111110111 -> 1111111111111111111111101000001000 +dqinv086 invert 0000001111111011 -> 1111111111111111111111110000000100 +dqinv087 invert 0000010111111101 -> 1111111111111111111111101000000010 +dqinv088 invert 0000100111111110 -> 1111111111111111111111011000000001 +dqinv089 invert 0001000011111011 -> 1111111111111111111110111100000100 +dqinv090 invert 0010000101111101 -> 1111111111111111111101111010000010 +dqinv091 invert 0100000110111110 -> 1111111111111111111011111001000001 +dqinv092 invert 1000000111011101 -> 1111111111111111110111111000100010 +dqinv093 invert 0100000111101011 -> 1111111111111111111011111000010100 +dqinv094 invert 0010000111110111 -> 1111111111111111111101111000001000 +dqinv095 invert 0001000111101011 -> 1111111111111111111110111000010100 +dqinv096 invert 0000100111011101 -> 1111111111111111111111011000100010 +dqinv097 invert 0000010110111110 -> 1111111111111111111111101001000001 +dqinv098 invert 0000001101111101 -> 1111111111111111111111110010000010 +dqinv099 invert 0000010011111011 -> 1111111111111111111111101100000100 + +-- and more thorough MSD/LSD tests [8 and 9 mght be encoded differently...] +dqinv151 invert 1111111111111111111111111111111110 -> 1 +dqinv152 invert 1111111111111111110000000000000000 -> 1111111111111111 +dqinv153 invert 1000000000000000001111111111111111 -> 111111111111111110000000000000000 +dqinv154 invert 1111111111111111111000000000000000 -> 111111111111111 +dqinv155 invert 0100000000000000000111111111111111 -> 1011111111111111111000000000000000 +dqinv156 invert 1011111111111111110100000000000000 -> 100000000000000001011111111111111 +dqinv157 invert 1101111111111111110111111111111111 -> 10000000000000001000000000000000 +dqinv158 invert 1110111111111111110011111111111111 -> 1000000000000001100000000000000 + +-- non-0/1 should not be accepted, nor should signs +dqinv220 invert 111111112 -> NaN Invalid_operation +dqinv221 invert 333333333 -> NaN Invalid_operation +dqinv222 invert 555555555 -> NaN Invalid_operation +dqinv223 invert 777777777 -> NaN Invalid_operation +dqinv224 invert 999999999 -> NaN Invalid_operation +dqinv225 invert 222222222 -> NaN Invalid_operation +dqinv226 invert 444444444 -> NaN Invalid_operation +dqinv227 invert 666666666 -> NaN Invalid_operation +dqinv228 invert 888888888 -> NaN Invalid_operation +dqinv229 invert 999999999 -> NaN Invalid_operation +dqinv230 invert 999999999 -> NaN Invalid_operation +dqinv231 invert 999999999 -> NaN Invalid_operation +dqinv232 invert 999999999 -> NaN Invalid_operation +-- a few randoms +dqinv240 invert 567468689 -> NaN Invalid_operation +dqinv241 invert 567367689 -> NaN Invalid_operation +dqinv242 invert -631917772 -> NaN Invalid_operation +dqinv243 invert -756253257 -> NaN Invalid_operation +dqinv244 invert 835590149 -> NaN Invalid_operation +-- test MSD +dqinv250 invert 2000000111000111000111000000000000 -> NaN Invalid_operation +dqinv251 invert 3000000111000111000111000000000000 -> NaN Invalid_operation +dqinv252 invert 4000000111000111000111000000000000 -> NaN Invalid_operation +dqinv253 invert 5000000111000111000111000000000000 -> NaN Invalid_operation +dqinv254 invert 6000000111000111000111000000000000 -> NaN Invalid_operation +dqinv255 invert 7000000111000111000111000000000000 -> NaN Invalid_operation +dqinv256 invert 8000000111000111000111000000000000 -> NaN Invalid_operation +dqinv257 invert 9000000111000111000111000000000000 -> NaN Invalid_operation +-- test MSD-1 +dqinv270 invert 0200000111000111000111001000000000 -> NaN Invalid_operation +dqinv271 invert 0300000111000111000111000100000000 -> NaN Invalid_operation +dqinv272 invert 0400000111000111000111000010000000 -> NaN Invalid_operation +dqinv273 invert 0500000111000111000111000001000000 -> NaN Invalid_operation +dqinv274 invert 1600000111000111000111000000100000 -> NaN Invalid_operation +dqinv275 invert 1700000111000111000111000000010000 -> NaN Invalid_operation +dqinv276 invert 1800000111000111000111000000001000 -> NaN Invalid_operation +dqinv277 invert 1900000111000111000111000000000100 -> NaN Invalid_operation +-- test LSD +dqinv280 invert 0010000111000111000111000000000002 -> NaN Invalid_operation +dqinv281 invert 0001000111000111000111000000000003 -> NaN Invalid_operation +dqinv282 invert 0000000111000111000111100000000004 -> NaN Invalid_operation +dqinv283 invert 0000000111000111000111010000000005 -> NaN Invalid_operation +dqinv284 invert 1000000111000111000111001000000006 -> NaN Invalid_operation +dqinv285 invert 1000000111000111000111000100000007 -> NaN Invalid_operation +dqinv286 invert 1000000111000111000111000010000008 -> NaN Invalid_operation +dqinv287 invert 1000000111000111000111000001000009 -> NaN Invalid_operation +-- test Middie +dqinv288 invert 0010000111000111000111000020000000 -> NaN Invalid_operation +dqinv289 invert 0001000111000111000111000030000001 -> NaN Invalid_operation +dqinv290 invert 0000000111000111000111100040000010 -> NaN Invalid_operation +dqinv291 invert 0000000111000111000111010050000100 -> NaN Invalid_operation +dqinv292 invert 1000000111000111000111001060001000 -> NaN Invalid_operation +dqinv293 invert 1000000111000111000111000170010000 -> NaN Invalid_operation +dqinv294 invert 1000000111000111000111000080100000 -> NaN Invalid_operation +dqinv295 invert 1000000111000111000111000091000000 -> NaN Invalid_operation +-- signs +dqinv296 invert -1000000111000111000111000001000000 -> NaN Invalid_operation +dqinv299 invert 1000000111000111000111000001000000 -> 111111000111000111000111110111111 + +-- Nmax, Nmin, Ntiny-like +dqinv341 invert 9.99999999E+2998 -> NaN Invalid_operation +dqinv342 invert 1E-2998 -> NaN Invalid_operation +dqinv343 invert 1.00000000E-2998 -> NaN Invalid_operation +dqinv344 invert 1E-2078 -> NaN Invalid_operation +dqinv345 invert -1E-2078 -> NaN Invalid_operation +dqinv346 invert -1.00000000E-2998 -> NaN Invalid_operation +dqinv347 invert -1E-2998 -> NaN Invalid_operation +dqinv348 invert -9.99999999E+2998 -> NaN Invalid_operation + +-- A few other non-integers +dqinv361 invert 1.0 -> NaN Invalid_operation +dqinv362 invert 1E+1 -> NaN Invalid_operation +dqinv363 invert 0.0 -> NaN Invalid_operation +dqinv364 invert 0E+1 -> NaN Invalid_operation +dqinv365 invert 9.9 -> NaN Invalid_operation +dqinv366 invert 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +dqinv788 invert -Inf -> NaN Invalid_operation +dqinv794 invert Inf -> NaN Invalid_operation +dqinv821 invert NaN -> NaN Invalid_operation +dqinv841 invert sNaN -> NaN Invalid_operation +-- propagating NaNs +dqinv861 invert NaN1 -> NaN Invalid_operation +dqinv862 invert +NaN2 -> NaN Invalid_operation +dqinv863 invert NaN3 -> NaN Invalid_operation +dqinv864 invert NaN4 -> NaN Invalid_operation +dqinv865 invert NaN5 -> NaN Invalid_operation +dqinv871 invert sNaN11 -> NaN Invalid_operation +dqinv872 invert sNaN12 -> NaN Invalid_operation +dqinv873 invert sNaN13 -> NaN Invalid_operation +dqinv874 invert sNaN14 -> NaN Invalid_operation +dqinv875 invert sNaN15 -> NaN Invalid_operation +dqinv876 invert NaN16 -> NaN Invalid_operation +dqinv881 invert +NaN25 -> NaN Invalid_operation +dqinv882 invert -NaN26 -> NaN Invalid_operation +dqinv883 invert -sNaN27 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqLogB.decTest b/Lib/test/decimaltestdata/dqLogB.decTest index a18313d..449f3dc 100644 --- a/Lib/test/decimaltestdata/dqLogB.decTest +++ b/Lib/test/decimaltestdata/dqLogB.decTest @@ -1,160 +1,160 @@ ------------------------------------------------------------------------- --- dqLogB.decTest -- integral 754r adjusted exponent, for decQuads -- --- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- basics -dqlogb000 logb 0 -> -Infinity Division_by_zero -dqlogb001 logb 1E-6176 -> -6176 -dqlogb002 logb 1E-6143 -> -6143 -dqlogb003 logb 0.001 -> -3 -dqlogb004 logb 0.03 -> -2 -dqlogb005 logb 1 -> 0 -dqlogb006 logb 2 -> 0 -dqlogb007 logb 2.5 -> 0 -dqlogb008 logb 2.50 -> 0 -dqlogb009 logb 2.500 -> 0 -dqlogb010 logb 10 -> 1 -dqlogb011 logb 70 -> 1 -dqlogb012 logb 100 -> 2 -dqlogb013 logb 250 -> 2 -dqlogb014 logb 9E+6144 -> 6144 -dqlogb015 logb +Infinity -> Infinity - --- negatives appear to be treated as positives -dqlogb021 logb -0 -> -Infinity Division_by_zero -dqlogb022 logb -1E-6176 -> -6176 -dqlogb023 logb -9E-6143 -> -6143 -dqlogb024 logb -0.001 -> -3 -dqlogb025 logb -1 -> 0 -dqlogb026 logb -2 -> 0 -dqlogb027 logb -10 -> 1 -dqlogb028 logb -70 -> 1 -dqlogb029 logb -100 -> 2 -dqlogb030 logb -9E+6144 -> 6144 -dqlogb031 logb -Infinity -> Infinity - --- zeros -dqlogb111 logb 0 -> -Infinity Division_by_zero -dqlogb112 logb -0 -> -Infinity Division_by_zero -dqlogb113 logb 0E+4 -> -Infinity Division_by_zero -dqlogb114 logb -0E+4 -> -Infinity Division_by_zero -dqlogb115 logb 0.0000 -> -Infinity Division_by_zero -dqlogb116 logb -0.0000 -> -Infinity Division_by_zero -dqlogb117 logb 0E-141 -> -Infinity Division_by_zero -dqlogb118 logb -0E-141 -> -Infinity Division_by_zero - --- full coefficients, alternating bits -dqlogb121 logb 268268268 -> 8 -dqlogb122 logb -268268268 -> 8 -dqlogb123 logb 134134134 -> 8 -dqlogb124 logb -134134134 -> 8 - --- Nmax, Nmin, Ntiny -dqlogb131 logb 9.999999999999999999999999999999999E+6144 -> 6144 -dqlogb132 logb 1E-6143 -> -6143 -dqlogb133 logb 1.000000000000000000000000000000000E-6143 -> -6143 -dqlogb134 logb 1E-6176 -> -6176 - -dqlogb135 logb -1E-6176 -> -6176 -dqlogb136 logb -1.000000000000000000000000000000000E-6143 -> -6143 -dqlogb137 logb -1E-6143 -> -6143 -dqlogb1614 logb -9.999999999999999999999999999999999E+6144 -> 6144 - --- ones -dqlogb0061 logb 1 -> 0 -dqlogb0062 logb 1.0 -> 0 -dqlogb0063 logb 1.000000000000000 -> 0 - --- notable cases -- exact powers of 10 -dqlogb1100 logb 1 -> 0 -dqlogb1101 logb 10 -> 1 -dqlogb1102 logb 100 -> 2 -dqlogb1103 logb 1000 -> 3 -dqlogb1104 logb 10000 -> 4 -dqlogb1105 logb 100000 -> 5 -dqlogb1106 logb 1000000 -> 6 -dqlogb1107 logb 10000000 -> 7 -dqlogb1108 logb 100000000 -> 8 -dqlogb1109 logb 1000000000 -> 9 -dqlogb1110 logb 10000000000 -> 10 -dqlogb1111 logb 100000000000 -> 11 -dqlogb1112 logb 1000000000000 -> 12 -dqlogb1113 logb 0.00000000001 -> -11 -dqlogb1114 logb 0.0000000001 -> -10 -dqlogb1115 logb 0.000000001 -> -9 -dqlogb1116 logb 0.00000001 -> -8 -dqlogb1117 logb 0.0000001 -> -7 -dqlogb1118 logb 0.000001 -> -6 -dqlogb1119 logb 0.00001 -> -5 -dqlogb1120 logb 0.0001 -> -4 -dqlogb1121 logb 0.001 -> -3 -dqlogb1122 logb 0.01 -> -2 -dqlogb1123 logb 0.1 -> -1 -dqlogb1124 logb 1E-99 -> -99 -dqlogb1125 logb 1E-100 -> -100 -dqlogb1127 logb 1E-299 -> -299 -dqlogb1126 logb 1E-6143 -> -6143 - --- suggestions from Ilan Nehama -dqlogb1400 logb 10E-3 -> -2 -dqlogb1401 logb 10E-2 -> -1 -dqlogb1402 logb 100E-2 -> 0 -dqlogb1403 logb 1000E-2 -> 1 -dqlogb1404 logb 10000E-2 -> 2 -dqlogb1405 logb 10E-1 -> 0 -dqlogb1406 logb 100E-1 -> 1 -dqlogb1407 logb 1000E-1 -> 2 -dqlogb1408 logb 10000E-1 -> 3 -dqlogb1409 logb 10E0 -> 1 -dqlogb1410 logb 100E0 -> 2 -dqlogb1411 logb 1000E0 -> 3 -dqlogb1412 logb 10000E0 -> 4 -dqlogb1413 logb 10E1 -> 2 -dqlogb1414 logb 100E1 -> 3 -dqlogb1415 logb 1000E1 -> 4 -dqlogb1416 logb 10000E1 -> 5 -dqlogb1417 logb 10E2 -> 3 -dqlogb1418 logb 100E2 -> 4 -dqlogb1419 logb 1000E2 -> 5 -dqlogb1420 logb 10000E2 -> 6 - --- special values -dqlogb820 logb Infinity -> Infinity -dqlogb821 logb 0 -> -Infinity Division_by_zero -dqlogb822 logb NaN -> NaN -dqlogb823 logb sNaN -> NaN Invalid_operation --- propagating NaNs -dqlogb824 logb sNaN123 -> NaN123 Invalid_operation -dqlogb825 logb -sNaN321 -> -NaN321 Invalid_operation -dqlogb826 logb NaN456 -> NaN456 -dqlogb827 logb -NaN654 -> -NaN654 -dqlogb828 logb NaN1 -> NaN1 - --- Null test -dqlogb900 logb # -> NaN Invalid_operation - - +------------------------------------------------------------------------ +-- dqLogB.decTest -- integral 754r adjusted exponent, for decQuads -- +-- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- basics +dqlogb000 logb 0 -> -Infinity Division_by_zero +dqlogb001 logb 1E-6176 -> -6176 +dqlogb002 logb 1E-6143 -> -6143 +dqlogb003 logb 0.001 -> -3 +dqlogb004 logb 0.03 -> -2 +dqlogb005 logb 1 -> 0 +dqlogb006 logb 2 -> 0 +dqlogb007 logb 2.5 -> 0 +dqlogb008 logb 2.50 -> 0 +dqlogb009 logb 2.500 -> 0 +dqlogb010 logb 10 -> 1 +dqlogb011 logb 70 -> 1 +dqlogb012 logb 100 -> 2 +dqlogb013 logb 250 -> 2 +dqlogb014 logb 9E+6144 -> 6144 +dqlogb015 logb +Infinity -> Infinity + +-- negatives appear to be treated as positives +dqlogb021 logb -0 -> -Infinity Division_by_zero +dqlogb022 logb -1E-6176 -> -6176 +dqlogb023 logb -9E-6143 -> -6143 +dqlogb024 logb -0.001 -> -3 +dqlogb025 logb -1 -> 0 +dqlogb026 logb -2 -> 0 +dqlogb027 logb -10 -> 1 +dqlogb028 logb -70 -> 1 +dqlogb029 logb -100 -> 2 +dqlogb030 logb -9E+6144 -> 6144 +dqlogb031 logb -Infinity -> Infinity + +-- zeros +dqlogb111 logb 0 -> -Infinity Division_by_zero +dqlogb112 logb -0 -> -Infinity Division_by_zero +dqlogb113 logb 0E+4 -> -Infinity Division_by_zero +dqlogb114 logb -0E+4 -> -Infinity Division_by_zero +dqlogb115 logb 0.0000 -> -Infinity Division_by_zero +dqlogb116 logb -0.0000 -> -Infinity Division_by_zero +dqlogb117 logb 0E-141 -> -Infinity Division_by_zero +dqlogb118 logb -0E-141 -> -Infinity Division_by_zero + +-- full coefficients, alternating bits +dqlogb121 logb 268268268 -> 8 +dqlogb122 logb -268268268 -> 8 +dqlogb123 logb 134134134 -> 8 +dqlogb124 logb -134134134 -> 8 + +-- Nmax, Nmin, Ntiny +dqlogb131 logb 9.999999999999999999999999999999999E+6144 -> 6144 +dqlogb132 logb 1E-6143 -> -6143 +dqlogb133 logb 1.000000000000000000000000000000000E-6143 -> -6143 +dqlogb134 logb 1E-6176 -> -6176 + +dqlogb135 logb -1E-6176 -> -6176 +dqlogb136 logb -1.000000000000000000000000000000000E-6143 -> -6143 +dqlogb137 logb -1E-6143 -> -6143 +dqlogb1614 logb -9.999999999999999999999999999999999E+6144 -> 6144 + +-- ones +dqlogb0061 logb 1 -> 0 +dqlogb0062 logb 1.0 -> 0 +dqlogb0063 logb 1.000000000000000 -> 0 + +-- notable cases -- exact powers of 10 +dqlogb1100 logb 1 -> 0 +dqlogb1101 logb 10 -> 1 +dqlogb1102 logb 100 -> 2 +dqlogb1103 logb 1000 -> 3 +dqlogb1104 logb 10000 -> 4 +dqlogb1105 logb 100000 -> 5 +dqlogb1106 logb 1000000 -> 6 +dqlogb1107 logb 10000000 -> 7 +dqlogb1108 logb 100000000 -> 8 +dqlogb1109 logb 1000000000 -> 9 +dqlogb1110 logb 10000000000 -> 10 +dqlogb1111 logb 100000000000 -> 11 +dqlogb1112 logb 1000000000000 -> 12 +dqlogb1113 logb 0.00000000001 -> -11 +dqlogb1114 logb 0.0000000001 -> -10 +dqlogb1115 logb 0.000000001 -> -9 +dqlogb1116 logb 0.00000001 -> -8 +dqlogb1117 logb 0.0000001 -> -7 +dqlogb1118 logb 0.000001 -> -6 +dqlogb1119 logb 0.00001 -> -5 +dqlogb1120 logb 0.0001 -> -4 +dqlogb1121 logb 0.001 -> -3 +dqlogb1122 logb 0.01 -> -2 +dqlogb1123 logb 0.1 -> -1 +dqlogb1124 logb 1E-99 -> -99 +dqlogb1125 logb 1E-100 -> -100 +dqlogb1127 logb 1E-299 -> -299 +dqlogb1126 logb 1E-6143 -> -6143 + +-- suggestions from Ilan Nehama +dqlogb1400 logb 10E-3 -> -2 +dqlogb1401 logb 10E-2 -> -1 +dqlogb1402 logb 100E-2 -> 0 +dqlogb1403 logb 1000E-2 -> 1 +dqlogb1404 logb 10000E-2 -> 2 +dqlogb1405 logb 10E-1 -> 0 +dqlogb1406 logb 100E-1 -> 1 +dqlogb1407 logb 1000E-1 -> 2 +dqlogb1408 logb 10000E-1 -> 3 +dqlogb1409 logb 10E0 -> 1 +dqlogb1410 logb 100E0 -> 2 +dqlogb1411 logb 1000E0 -> 3 +dqlogb1412 logb 10000E0 -> 4 +dqlogb1413 logb 10E1 -> 2 +dqlogb1414 logb 100E1 -> 3 +dqlogb1415 logb 1000E1 -> 4 +dqlogb1416 logb 10000E1 -> 5 +dqlogb1417 logb 10E2 -> 3 +dqlogb1418 logb 100E2 -> 4 +dqlogb1419 logb 1000E2 -> 5 +dqlogb1420 logb 10000E2 -> 6 + +-- special values +dqlogb820 logb Infinity -> Infinity +dqlogb821 logb 0 -> -Infinity Division_by_zero +dqlogb822 logb NaN -> NaN +dqlogb823 logb sNaN -> NaN Invalid_operation +-- propagating NaNs +dqlogb824 logb sNaN123 -> NaN123 Invalid_operation +dqlogb825 logb -sNaN321 -> -NaN321 Invalid_operation +dqlogb826 logb NaN456 -> NaN456 +dqlogb827 logb -NaN654 -> -NaN654 +dqlogb828 logb NaN1 -> NaN1 + +-- Null test +dqlogb900 logb # -> NaN Invalid_operation + + diff --git a/Lib/test/decimaltestdata/dqMax.decTest b/Lib/test/decimaltestdata/dqMax.decTest index dc6a1ab..162d4bd 100644 --- a/Lib/test/decimaltestdata/dqMax.decTest +++ b/Lib/test/decimaltestdata/dqMax.decTest @@ -1,322 +1,322 @@ ------------------------------------------------------------------------- --- dqMax.decTest -- decQuad maxnum -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqmax001 max -2 -2 -> -2 -dqmax002 max -2 -1 -> -1 -dqmax003 max -2 0 -> 0 -dqmax004 max -2 1 -> 1 -dqmax005 max -2 2 -> 2 -dqmax006 max -1 -2 -> -1 -dqmax007 max -1 -1 -> -1 -dqmax008 max -1 0 -> 0 -dqmax009 max -1 1 -> 1 -dqmax010 max -1 2 -> 2 -dqmax011 max 0 -2 -> 0 -dqmax012 max 0 -1 -> 0 -dqmax013 max 0 0 -> 0 -dqmax014 max 0 1 -> 1 -dqmax015 max 0 2 -> 2 -dqmax016 max 1 -2 -> 1 -dqmax017 max 1 -1 -> 1 -dqmax018 max 1 0 -> 1 -dqmax019 max 1 1 -> 1 -dqmax020 max 1 2 -> 2 -dqmax021 max 2 -2 -> 2 -dqmax022 max 2 -1 -> 2 -dqmax023 max 2 0 -> 2 -dqmax025 max 2 1 -> 2 -dqmax026 max 2 2 -> 2 - --- extended zeros -dqmax030 max 0 0 -> 0 -dqmax031 max 0 -0 -> 0 -dqmax032 max 0 -0.0 -> 0 -dqmax033 max 0 0.0 -> 0 -dqmax034 max -0 0 -> 0 -- note: -0 = 0, but 0 chosen -dqmax035 max -0 -0 -> -0 -dqmax036 max -0 -0.0 -> -0.0 -dqmax037 max -0 0.0 -> 0.0 -dqmax038 max 0.0 0 -> 0 -dqmax039 max 0.0 -0 -> 0.0 -dqmax040 max 0.0 -0.0 -> 0.0 -dqmax041 max 0.0 0.0 -> 0.0 -dqmax042 max -0.0 0 -> 0 -dqmax043 max -0.0 -0 -> -0.0 -dqmax044 max -0.0 -0.0 -> -0.0 -dqmax045 max -0.0 0.0 -> 0.0 - -dqmax050 max -0E1 0E1 -> 0E+1 -dqmax051 max -0E2 0E2 -> 0E+2 -dqmax052 max -0E2 0E1 -> 0E+1 -dqmax053 max -0E1 0E2 -> 0E+2 -dqmax054 max 0E1 -0E1 -> 0E+1 -dqmax055 max 0E2 -0E2 -> 0E+2 -dqmax056 max 0E2 -0E1 -> 0E+2 -dqmax057 max 0E1 -0E2 -> 0E+1 - -dqmax058 max 0E1 0E1 -> 0E+1 -dqmax059 max 0E2 0E2 -> 0E+2 -dqmax060 max 0E2 0E1 -> 0E+2 -dqmax061 max 0E1 0E2 -> 0E+2 -dqmax062 max -0E1 -0E1 -> -0E+1 -dqmax063 max -0E2 -0E2 -> -0E+2 -dqmax064 max -0E2 -0E1 -> -0E+1 -dqmax065 max -0E1 -0E2 -> -0E+1 - --- Specials -dqmax090 max Inf -Inf -> Infinity -dqmax091 max Inf -1000 -> Infinity -dqmax092 max Inf -1 -> Infinity -dqmax093 max Inf -0 -> Infinity -dqmax094 max Inf 0 -> Infinity -dqmax095 max Inf 1 -> Infinity -dqmax096 max Inf 1000 -> Infinity -dqmax097 max Inf Inf -> Infinity -dqmax098 max -1000 Inf -> Infinity -dqmax099 max -Inf Inf -> Infinity -dqmax100 max -1 Inf -> Infinity -dqmax101 max -0 Inf -> Infinity -dqmax102 max 0 Inf -> Infinity -dqmax103 max 1 Inf -> Infinity -dqmax104 max 1000 Inf -> Infinity -dqmax105 max Inf Inf -> Infinity - -dqmax120 max -Inf -Inf -> -Infinity -dqmax121 max -Inf -1000 -> -1000 -dqmax122 max -Inf -1 -> -1 -dqmax123 max -Inf -0 -> -0 -dqmax124 max -Inf 0 -> 0 -dqmax125 max -Inf 1 -> 1 -dqmax126 max -Inf 1000 -> 1000 -dqmax127 max -Inf Inf -> Infinity -dqmax128 max -Inf -Inf -> -Infinity -dqmax129 max -1000 -Inf -> -1000 -dqmax130 max -1 -Inf -> -1 -dqmax131 max -0 -Inf -> -0 -dqmax132 max 0 -Inf -> 0 -dqmax133 max 1 -Inf -> 1 -dqmax134 max 1000 -Inf -> 1000 -dqmax135 max Inf -Inf -> Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -dqmax141 max NaN -Inf -> -Infinity -dqmax142 max NaN -1000 -> -1000 -dqmax143 max NaN -1 -> -1 -dqmax144 max NaN -0 -> -0 -dqmax145 max NaN 0 -> 0 -dqmax146 max NaN 1 -> 1 -dqmax147 max NaN 1000 -> 1000 -dqmax148 max NaN Inf -> Infinity -dqmax149 max NaN NaN -> NaN -dqmax150 max -Inf NaN -> -Infinity -dqmax151 max -1000 NaN -> -1000 -dqmax152 max -1 NaN -> -1 -dqmax153 max -0 NaN -> -0 -dqmax154 max 0 NaN -> 0 -dqmax155 max 1 NaN -> 1 -dqmax156 max 1000 NaN -> 1000 -dqmax157 max Inf NaN -> Infinity - -dqmax161 max sNaN -Inf -> NaN Invalid_operation -dqmax162 max sNaN -1000 -> NaN Invalid_operation -dqmax163 max sNaN -1 -> NaN Invalid_operation -dqmax164 max sNaN -0 -> NaN Invalid_operation -dqmax165 max sNaN 0 -> NaN Invalid_operation -dqmax166 max sNaN 1 -> NaN Invalid_operation -dqmax167 max sNaN 1000 -> NaN Invalid_operation -dqmax168 max sNaN NaN -> NaN Invalid_operation -dqmax169 max sNaN sNaN -> NaN Invalid_operation -dqmax170 max NaN sNaN -> NaN Invalid_operation -dqmax171 max -Inf sNaN -> NaN Invalid_operation -dqmax172 max -1000 sNaN -> NaN Invalid_operation -dqmax173 max -1 sNaN -> NaN Invalid_operation -dqmax174 max -0 sNaN -> NaN Invalid_operation -dqmax175 max 0 sNaN -> NaN Invalid_operation -dqmax176 max 1 sNaN -> NaN Invalid_operation -dqmax177 max 1000 sNaN -> NaN Invalid_operation -dqmax178 max Inf sNaN -> NaN Invalid_operation -dqmax179 max NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqmax181 max NaN9 -Inf -> -Infinity -dqmax182 max NaN8 9 -> 9 -dqmax183 max -NaN7 Inf -> Infinity - -dqmax184 max -NaN1 NaN11 -> -NaN1 -dqmax185 max NaN2 NaN12 -> NaN2 -dqmax186 max -NaN13 -NaN7 -> -NaN13 -dqmax187 max NaN14 -NaN5 -> NaN14 - -dqmax188 max -Inf NaN4 -> -Infinity -dqmax189 max -9 -NaN3 -> -9 -dqmax190 max Inf NaN2 -> Infinity - -dqmax191 max sNaN99 -Inf -> NaN99 Invalid_operation -dqmax192 max sNaN98 -1 -> NaN98 Invalid_operation -dqmax193 max -sNaN97 NaN -> -NaN97 Invalid_operation -dqmax194 max sNaN96 sNaN94 -> NaN96 Invalid_operation -dqmax195 max NaN95 sNaN93 -> NaN93 Invalid_operation -dqmax196 max -Inf sNaN92 -> NaN92 Invalid_operation -dqmax197 max 0 sNaN91 -> NaN91 Invalid_operation -dqmax198 max Inf -sNaN90 -> -NaN90 Invalid_operation -dqmax199 max NaN sNaN89 -> NaN89 Invalid_operation - --- old rounding checks -dqmax221 max 12345678000 1 -> 12345678000 -dqmax222 max 1 12345678000 -> 12345678000 -dqmax223 max 1234567800 1 -> 1234567800 -dqmax224 max 1 1234567800 -> 1234567800 -dqmax225 max 1234567890 1 -> 1234567890 -dqmax226 max 1 1234567890 -> 1234567890 -dqmax227 max 1234567891 1 -> 1234567891 -dqmax228 max 1 1234567891 -> 1234567891 -dqmax229 max 12345678901 1 -> 12345678901 -dqmax230 max 1 12345678901 -> 12345678901 -dqmax231 max 1234567896 1 -> 1234567896 -dqmax232 max 1 1234567896 -> 1234567896 -dqmax233 max -1234567891 1 -> 1 -dqmax234 max 1 -1234567891 -> 1 -dqmax235 max -12345678901 1 -> 1 -dqmax236 max 1 -12345678901 -> 1 -dqmax237 max -1234567896 1 -> 1 -dqmax238 max 1 -1234567896 -> 1 - --- from examples -dqmax280 max '3' '2' -> '3' -dqmax281 max '-10' '3' -> '3' -dqmax282 max '1.0' '1' -> '1' -dqmax283 max '1' '1.0' -> '1' -dqmax284 max '7' 'NaN' -> '7' - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -dqmax401 max Inf 1.1 -> Infinity -dqmax402 max 1.1 1 -> 1.1 -dqmax403 max 1 1.0 -> 1 -dqmax404 max 1.0 0.1 -> 1.0 -dqmax405 max 0.1 0.10 -> 0.1 -dqmax406 max 0.10 0.100 -> 0.10 -dqmax407 max 0.10 0 -> 0.10 -dqmax408 max 0 0.0 -> 0 -dqmax409 max 0.0 -0 -> 0.0 -dqmax410 max 0.0 -0.0 -> 0.0 -dqmax411 max 0.00 -0.0 -> 0.00 -dqmax412 max 0.0 -0.00 -> 0.0 -dqmax413 max 0 -0.0 -> 0 -dqmax414 max 0 -0 -> 0 -dqmax415 max -0.0 -0 -> -0.0 -dqmax416 max -0 -0.100 -> -0 -dqmax417 max -0.100 -0.10 -> -0.100 -dqmax418 max -0.10 -0.1 -> -0.10 -dqmax419 max -0.1 -1.0 -> -0.1 -dqmax420 max -1.0 -1 -> -1.0 -dqmax421 max -1 -1.1 -> -1 -dqmax423 max -1.1 -Inf -> -1.1 --- same with operands reversed -dqmax431 max 1.1 Inf -> Infinity -dqmax432 max 1 1.1 -> 1.1 -dqmax433 max 1.0 1 -> 1 -dqmax434 max 0.1 1.0 -> 1.0 -dqmax435 max 0.10 0.1 -> 0.1 -dqmax436 max 0.100 0.10 -> 0.10 -dqmax437 max 0 0.10 -> 0.10 -dqmax438 max 0.0 0 -> 0 -dqmax439 max -0 0.0 -> 0.0 -dqmax440 max -0.0 0.0 -> 0.0 -dqmax441 max -0.0 0.00 -> 0.00 -dqmax442 max -0.00 0.0 -> 0.0 -dqmax443 max -0.0 0 -> 0 -dqmax444 max -0 0 -> 0 -dqmax445 max -0 -0.0 -> -0.0 -dqmax446 max -0.100 -0 -> -0 -dqmax447 max -0.10 -0.100 -> -0.100 -dqmax448 max -0.1 -0.10 -> -0.10 -dqmax449 max -1.0 -0.1 -> -0.1 -dqmax450 max -1 -1.0 -> -1.0 -dqmax451 max -1.1 -1 -> -1 -dqmax453 max -Inf -1.1 -> -1.1 --- largies -dqmax460 max 1000 1E+3 -> 1E+3 -dqmax461 max 1E+3 1000 -> 1E+3 -dqmax462 max 1000 -1E+3 -> 1000 -dqmax463 max 1E+3 -1000 -> 1E+3 -dqmax464 max -1000 1E+3 -> 1E+3 -dqmax465 max -1E+3 1000 -> 1000 -dqmax466 max -1000 -1E+3 -> -1000 -dqmax467 max -1E+3 -1000 -> -1000 - --- misalignment traps for little-endian -dqmax471 max 1.0 0.1 -> 1.0 -dqmax472 max 0.1 1.0 -> 1.0 -dqmax473 max 10.0 0.1 -> 10.0 -dqmax474 max 0.1 10.0 -> 10.0 -dqmax475 max 100 1.0 -> 100 -dqmax476 max 1.0 100 -> 100 -dqmax477 max 1000 10.0 -> 1000 -dqmax478 max 10.0 1000 -> 1000 -dqmax479 max 10000 100.0 -> 10000 -dqmax480 max 100.0 10000 -> 10000 -dqmax481 max 100000 1000.0 -> 100000 -dqmax482 max 1000.0 100000 -> 100000 -dqmax483 max 1000000 10000.0 -> 1000000 -dqmax484 max 10000.0 1000000 -> 1000000 - --- subnormals -dqmax510 max 1.00E-6143 0 -> 1.00E-6143 -dqmax511 max 0.1E-6143 0 -> 1E-6144 Subnormal -dqmax512 max 0.10E-6143 0 -> 1.0E-6144 Subnormal -dqmax513 max 0.100E-6143 0 -> 1.00E-6144 Subnormal -dqmax514 max 0.01E-6143 0 -> 1E-6145 Subnormal -dqmax515 max 0.999E-6143 0 -> 9.99E-6144 Subnormal -dqmax516 max 0.099E-6143 0 -> 9.9E-6145 Subnormal -dqmax517 max 0.009E-6143 0 -> 9E-6146 Subnormal -dqmax518 max 0.001E-6143 0 -> 1E-6146 Subnormal -dqmax519 max 0.0009E-6143 0 -> 9E-6147 Subnormal -dqmax520 max 0.0001E-6143 0 -> 1E-6147 Subnormal - -dqmax530 max -1.00E-6143 0 -> 0 -dqmax531 max -0.1E-6143 0 -> 0 -dqmax532 max -0.10E-6143 0 -> 0 -dqmax533 max -0.100E-6143 0 -> 0 -dqmax534 max -0.01E-6143 0 -> 0 -dqmax535 max -0.999E-6143 0 -> 0 -dqmax536 max -0.099E-6143 0 -> 0 -dqmax537 max -0.009E-6143 0 -> 0 -dqmax538 max -0.001E-6143 0 -> 0 -dqmax539 max -0.0009E-6143 0 -> 0 -dqmax540 max -0.0001E-6143 0 -> 0 - --- Null tests -dqmax900 max 10 # -> NaN Invalid_operation -dqmax901 max # 10 -> NaN Invalid_operation - - - +------------------------------------------------------------------------ +-- dqMax.decTest -- decQuad maxnum -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqmax001 max -2 -2 -> -2 +dqmax002 max -2 -1 -> -1 +dqmax003 max -2 0 -> 0 +dqmax004 max -2 1 -> 1 +dqmax005 max -2 2 -> 2 +dqmax006 max -1 -2 -> -1 +dqmax007 max -1 -1 -> -1 +dqmax008 max -1 0 -> 0 +dqmax009 max -1 1 -> 1 +dqmax010 max -1 2 -> 2 +dqmax011 max 0 -2 -> 0 +dqmax012 max 0 -1 -> 0 +dqmax013 max 0 0 -> 0 +dqmax014 max 0 1 -> 1 +dqmax015 max 0 2 -> 2 +dqmax016 max 1 -2 -> 1 +dqmax017 max 1 -1 -> 1 +dqmax018 max 1 0 -> 1 +dqmax019 max 1 1 -> 1 +dqmax020 max 1 2 -> 2 +dqmax021 max 2 -2 -> 2 +dqmax022 max 2 -1 -> 2 +dqmax023 max 2 0 -> 2 +dqmax025 max 2 1 -> 2 +dqmax026 max 2 2 -> 2 + +-- extended zeros +dqmax030 max 0 0 -> 0 +dqmax031 max 0 -0 -> 0 +dqmax032 max 0 -0.0 -> 0 +dqmax033 max 0 0.0 -> 0 +dqmax034 max -0 0 -> 0 -- note: -0 = 0, but 0 chosen +dqmax035 max -0 -0 -> -0 +dqmax036 max -0 -0.0 -> -0.0 +dqmax037 max -0 0.0 -> 0.0 +dqmax038 max 0.0 0 -> 0 +dqmax039 max 0.0 -0 -> 0.0 +dqmax040 max 0.0 -0.0 -> 0.0 +dqmax041 max 0.0 0.0 -> 0.0 +dqmax042 max -0.0 0 -> 0 +dqmax043 max -0.0 -0 -> -0.0 +dqmax044 max -0.0 -0.0 -> -0.0 +dqmax045 max -0.0 0.0 -> 0.0 + +dqmax050 max -0E1 0E1 -> 0E+1 +dqmax051 max -0E2 0E2 -> 0E+2 +dqmax052 max -0E2 0E1 -> 0E+1 +dqmax053 max -0E1 0E2 -> 0E+2 +dqmax054 max 0E1 -0E1 -> 0E+1 +dqmax055 max 0E2 -0E2 -> 0E+2 +dqmax056 max 0E2 -0E1 -> 0E+2 +dqmax057 max 0E1 -0E2 -> 0E+1 + +dqmax058 max 0E1 0E1 -> 0E+1 +dqmax059 max 0E2 0E2 -> 0E+2 +dqmax060 max 0E2 0E1 -> 0E+2 +dqmax061 max 0E1 0E2 -> 0E+2 +dqmax062 max -0E1 -0E1 -> -0E+1 +dqmax063 max -0E2 -0E2 -> -0E+2 +dqmax064 max -0E2 -0E1 -> -0E+1 +dqmax065 max -0E1 -0E2 -> -0E+1 + +-- Specials +dqmax090 max Inf -Inf -> Infinity +dqmax091 max Inf -1000 -> Infinity +dqmax092 max Inf -1 -> Infinity +dqmax093 max Inf -0 -> Infinity +dqmax094 max Inf 0 -> Infinity +dqmax095 max Inf 1 -> Infinity +dqmax096 max Inf 1000 -> Infinity +dqmax097 max Inf Inf -> Infinity +dqmax098 max -1000 Inf -> Infinity +dqmax099 max -Inf Inf -> Infinity +dqmax100 max -1 Inf -> Infinity +dqmax101 max -0 Inf -> Infinity +dqmax102 max 0 Inf -> Infinity +dqmax103 max 1 Inf -> Infinity +dqmax104 max 1000 Inf -> Infinity +dqmax105 max Inf Inf -> Infinity + +dqmax120 max -Inf -Inf -> -Infinity +dqmax121 max -Inf -1000 -> -1000 +dqmax122 max -Inf -1 -> -1 +dqmax123 max -Inf -0 -> -0 +dqmax124 max -Inf 0 -> 0 +dqmax125 max -Inf 1 -> 1 +dqmax126 max -Inf 1000 -> 1000 +dqmax127 max -Inf Inf -> Infinity +dqmax128 max -Inf -Inf -> -Infinity +dqmax129 max -1000 -Inf -> -1000 +dqmax130 max -1 -Inf -> -1 +dqmax131 max -0 -Inf -> -0 +dqmax132 max 0 -Inf -> 0 +dqmax133 max 1 -Inf -> 1 +dqmax134 max 1000 -Inf -> 1000 +dqmax135 max Inf -Inf -> Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +dqmax141 max NaN -Inf -> -Infinity +dqmax142 max NaN -1000 -> -1000 +dqmax143 max NaN -1 -> -1 +dqmax144 max NaN -0 -> -0 +dqmax145 max NaN 0 -> 0 +dqmax146 max NaN 1 -> 1 +dqmax147 max NaN 1000 -> 1000 +dqmax148 max NaN Inf -> Infinity +dqmax149 max NaN NaN -> NaN +dqmax150 max -Inf NaN -> -Infinity +dqmax151 max -1000 NaN -> -1000 +dqmax152 max -1 NaN -> -1 +dqmax153 max -0 NaN -> -0 +dqmax154 max 0 NaN -> 0 +dqmax155 max 1 NaN -> 1 +dqmax156 max 1000 NaN -> 1000 +dqmax157 max Inf NaN -> Infinity + +dqmax161 max sNaN -Inf -> NaN Invalid_operation +dqmax162 max sNaN -1000 -> NaN Invalid_operation +dqmax163 max sNaN -1 -> NaN Invalid_operation +dqmax164 max sNaN -0 -> NaN Invalid_operation +dqmax165 max sNaN 0 -> NaN Invalid_operation +dqmax166 max sNaN 1 -> NaN Invalid_operation +dqmax167 max sNaN 1000 -> NaN Invalid_operation +dqmax168 max sNaN NaN -> NaN Invalid_operation +dqmax169 max sNaN sNaN -> NaN Invalid_operation +dqmax170 max NaN sNaN -> NaN Invalid_operation +dqmax171 max -Inf sNaN -> NaN Invalid_operation +dqmax172 max -1000 sNaN -> NaN Invalid_operation +dqmax173 max -1 sNaN -> NaN Invalid_operation +dqmax174 max -0 sNaN -> NaN Invalid_operation +dqmax175 max 0 sNaN -> NaN Invalid_operation +dqmax176 max 1 sNaN -> NaN Invalid_operation +dqmax177 max 1000 sNaN -> NaN Invalid_operation +dqmax178 max Inf sNaN -> NaN Invalid_operation +dqmax179 max NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqmax181 max NaN9 -Inf -> -Infinity +dqmax182 max NaN8 9 -> 9 +dqmax183 max -NaN7 Inf -> Infinity + +dqmax184 max -NaN1 NaN11 -> -NaN1 +dqmax185 max NaN2 NaN12 -> NaN2 +dqmax186 max -NaN13 -NaN7 -> -NaN13 +dqmax187 max NaN14 -NaN5 -> NaN14 + +dqmax188 max -Inf NaN4 -> -Infinity +dqmax189 max -9 -NaN3 -> -9 +dqmax190 max Inf NaN2 -> Infinity + +dqmax191 max sNaN99 -Inf -> NaN99 Invalid_operation +dqmax192 max sNaN98 -1 -> NaN98 Invalid_operation +dqmax193 max -sNaN97 NaN -> -NaN97 Invalid_operation +dqmax194 max sNaN96 sNaN94 -> NaN96 Invalid_operation +dqmax195 max NaN95 sNaN93 -> NaN93 Invalid_operation +dqmax196 max -Inf sNaN92 -> NaN92 Invalid_operation +dqmax197 max 0 sNaN91 -> NaN91 Invalid_operation +dqmax198 max Inf -sNaN90 -> -NaN90 Invalid_operation +dqmax199 max NaN sNaN89 -> NaN89 Invalid_operation + +-- old rounding checks +dqmax221 max 12345678000 1 -> 12345678000 +dqmax222 max 1 12345678000 -> 12345678000 +dqmax223 max 1234567800 1 -> 1234567800 +dqmax224 max 1 1234567800 -> 1234567800 +dqmax225 max 1234567890 1 -> 1234567890 +dqmax226 max 1 1234567890 -> 1234567890 +dqmax227 max 1234567891 1 -> 1234567891 +dqmax228 max 1 1234567891 -> 1234567891 +dqmax229 max 12345678901 1 -> 12345678901 +dqmax230 max 1 12345678901 -> 12345678901 +dqmax231 max 1234567896 1 -> 1234567896 +dqmax232 max 1 1234567896 -> 1234567896 +dqmax233 max -1234567891 1 -> 1 +dqmax234 max 1 -1234567891 -> 1 +dqmax235 max -12345678901 1 -> 1 +dqmax236 max 1 -12345678901 -> 1 +dqmax237 max -1234567896 1 -> 1 +dqmax238 max 1 -1234567896 -> 1 + +-- from examples +dqmax280 max '3' '2' -> '3' +dqmax281 max '-10' '3' -> '3' +dqmax282 max '1.0' '1' -> '1' +dqmax283 max '1' '1.0' -> '1' +dqmax284 max '7' 'NaN' -> '7' + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +dqmax401 max Inf 1.1 -> Infinity +dqmax402 max 1.1 1 -> 1.1 +dqmax403 max 1 1.0 -> 1 +dqmax404 max 1.0 0.1 -> 1.0 +dqmax405 max 0.1 0.10 -> 0.1 +dqmax406 max 0.10 0.100 -> 0.10 +dqmax407 max 0.10 0 -> 0.10 +dqmax408 max 0 0.0 -> 0 +dqmax409 max 0.0 -0 -> 0.0 +dqmax410 max 0.0 -0.0 -> 0.0 +dqmax411 max 0.00 -0.0 -> 0.00 +dqmax412 max 0.0 -0.00 -> 0.0 +dqmax413 max 0 -0.0 -> 0 +dqmax414 max 0 -0 -> 0 +dqmax415 max -0.0 -0 -> -0.0 +dqmax416 max -0 -0.100 -> -0 +dqmax417 max -0.100 -0.10 -> -0.100 +dqmax418 max -0.10 -0.1 -> -0.10 +dqmax419 max -0.1 -1.0 -> -0.1 +dqmax420 max -1.0 -1 -> -1.0 +dqmax421 max -1 -1.1 -> -1 +dqmax423 max -1.1 -Inf -> -1.1 +-- same with operands reversed +dqmax431 max 1.1 Inf -> Infinity +dqmax432 max 1 1.1 -> 1.1 +dqmax433 max 1.0 1 -> 1 +dqmax434 max 0.1 1.0 -> 1.0 +dqmax435 max 0.10 0.1 -> 0.1 +dqmax436 max 0.100 0.10 -> 0.10 +dqmax437 max 0 0.10 -> 0.10 +dqmax438 max 0.0 0 -> 0 +dqmax439 max -0 0.0 -> 0.0 +dqmax440 max -0.0 0.0 -> 0.0 +dqmax441 max -0.0 0.00 -> 0.00 +dqmax442 max -0.00 0.0 -> 0.0 +dqmax443 max -0.0 0 -> 0 +dqmax444 max -0 0 -> 0 +dqmax445 max -0 -0.0 -> -0.0 +dqmax446 max -0.100 -0 -> -0 +dqmax447 max -0.10 -0.100 -> -0.100 +dqmax448 max -0.1 -0.10 -> -0.10 +dqmax449 max -1.0 -0.1 -> -0.1 +dqmax450 max -1 -1.0 -> -1.0 +dqmax451 max -1.1 -1 -> -1 +dqmax453 max -Inf -1.1 -> -1.1 +-- largies +dqmax460 max 1000 1E+3 -> 1E+3 +dqmax461 max 1E+3 1000 -> 1E+3 +dqmax462 max 1000 -1E+3 -> 1000 +dqmax463 max 1E+3 -1000 -> 1E+3 +dqmax464 max -1000 1E+3 -> 1E+3 +dqmax465 max -1E+3 1000 -> 1000 +dqmax466 max -1000 -1E+3 -> -1000 +dqmax467 max -1E+3 -1000 -> -1000 + +-- misalignment traps for little-endian +dqmax471 max 1.0 0.1 -> 1.0 +dqmax472 max 0.1 1.0 -> 1.0 +dqmax473 max 10.0 0.1 -> 10.0 +dqmax474 max 0.1 10.0 -> 10.0 +dqmax475 max 100 1.0 -> 100 +dqmax476 max 1.0 100 -> 100 +dqmax477 max 1000 10.0 -> 1000 +dqmax478 max 10.0 1000 -> 1000 +dqmax479 max 10000 100.0 -> 10000 +dqmax480 max 100.0 10000 -> 10000 +dqmax481 max 100000 1000.0 -> 100000 +dqmax482 max 1000.0 100000 -> 100000 +dqmax483 max 1000000 10000.0 -> 1000000 +dqmax484 max 10000.0 1000000 -> 1000000 + +-- subnormals +dqmax510 max 1.00E-6143 0 -> 1.00E-6143 +dqmax511 max 0.1E-6143 0 -> 1E-6144 Subnormal +dqmax512 max 0.10E-6143 0 -> 1.0E-6144 Subnormal +dqmax513 max 0.100E-6143 0 -> 1.00E-6144 Subnormal +dqmax514 max 0.01E-6143 0 -> 1E-6145 Subnormal +dqmax515 max 0.999E-6143 0 -> 9.99E-6144 Subnormal +dqmax516 max 0.099E-6143 0 -> 9.9E-6145 Subnormal +dqmax517 max 0.009E-6143 0 -> 9E-6146 Subnormal +dqmax518 max 0.001E-6143 0 -> 1E-6146 Subnormal +dqmax519 max 0.0009E-6143 0 -> 9E-6147 Subnormal +dqmax520 max 0.0001E-6143 0 -> 1E-6147 Subnormal + +dqmax530 max -1.00E-6143 0 -> 0 +dqmax531 max -0.1E-6143 0 -> 0 +dqmax532 max -0.10E-6143 0 -> 0 +dqmax533 max -0.100E-6143 0 -> 0 +dqmax534 max -0.01E-6143 0 -> 0 +dqmax535 max -0.999E-6143 0 -> 0 +dqmax536 max -0.099E-6143 0 -> 0 +dqmax537 max -0.009E-6143 0 -> 0 +dqmax538 max -0.001E-6143 0 -> 0 +dqmax539 max -0.0009E-6143 0 -> 0 +dqmax540 max -0.0001E-6143 0 -> 0 + +-- Null tests +dqmax900 max 10 # -> NaN Invalid_operation +dqmax901 max # 10 -> NaN Invalid_operation + + + diff --git a/Lib/test/decimaltestdata/dqMaxMag.decTest b/Lib/test/decimaltestdata/dqMaxMag.decTest index 6f5be24..6621e80 100644 --- a/Lib/test/decimaltestdata/dqMaxMag.decTest +++ b/Lib/test/decimaltestdata/dqMaxMag.decTest @@ -1,304 +1,304 @@ ------------------------------------------------------------------------- --- dqMaxMag.decTest -- decQuad maxnummag -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqmxg001 maxmag -2 -2 -> -2 -dqmxg002 maxmag -2 -1 -> -2 -dqmxg003 maxmag -2 0 -> -2 -dqmxg004 maxmag -2 1 -> -2 -dqmxg005 maxmag -2 2 -> 2 -dqmxg006 maxmag -1 -2 -> -2 -dqmxg007 maxmag -1 -1 -> -1 -dqmxg008 maxmag -1 0 -> -1 -dqmxg009 maxmag -1 1 -> 1 -dqmxg010 maxmag -1 2 -> 2 -dqmxg011 maxmag 0 -2 -> -2 -dqmxg012 maxmag 0 -1 -> -1 -dqmxg013 maxmag 0 0 -> 0 -dqmxg014 maxmag 0 1 -> 1 -dqmxg015 maxmag 0 2 -> 2 -dqmxg016 maxmag 1 -2 -> -2 -dqmxg017 maxmag 1 -1 -> 1 -dqmxg018 maxmag 1 0 -> 1 -dqmxg019 maxmag 1 1 -> 1 -dqmxg020 maxmag 1 2 -> 2 -dqmxg021 maxmag 2 -2 -> 2 -dqmxg022 maxmag 2 -1 -> 2 -dqmxg023 maxmag 2 0 -> 2 -dqmxg025 maxmag 2 1 -> 2 -dqmxg026 maxmag 2 2 -> 2 - --- extended zeros -dqmxg030 maxmag 0 0 -> 0 -dqmxg031 maxmag 0 -0 -> 0 -dqmxg032 maxmag 0 -0.0 -> 0 -dqmxg033 maxmag 0 0.0 -> 0 -dqmxg034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen -dqmxg035 maxmag -0 -0 -> -0 -dqmxg036 maxmag -0 -0.0 -> -0.0 -dqmxg037 maxmag -0 0.0 -> 0.0 -dqmxg038 maxmag 0.0 0 -> 0 -dqmxg039 maxmag 0.0 -0 -> 0.0 -dqmxg040 maxmag 0.0 -0.0 -> 0.0 -dqmxg041 maxmag 0.0 0.0 -> 0.0 -dqmxg042 maxmag -0.0 0 -> 0 -dqmxg043 maxmag -0.0 -0 -> -0.0 -dqmxg044 maxmag -0.0 -0.0 -> -0.0 -dqmxg045 maxmag -0.0 0.0 -> 0.0 - -dqmxg050 maxmag -0E1 0E1 -> 0E+1 -dqmxg051 maxmag -0E2 0E2 -> 0E+2 -dqmxg052 maxmag -0E2 0E1 -> 0E+1 -dqmxg053 maxmag -0E1 0E2 -> 0E+2 -dqmxg054 maxmag 0E1 -0E1 -> 0E+1 -dqmxg055 maxmag 0E2 -0E2 -> 0E+2 -dqmxg056 maxmag 0E2 -0E1 -> 0E+2 -dqmxg057 maxmag 0E1 -0E2 -> 0E+1 - -dqmxg058 maxmag 0E1 0E1 -> 0E+1 -dqmxg059 maxmag 0E2 0E2 -> 0E+2 -dqmxg060 maxmag 0E2 0E1 -> 0E+2 -dqmxg061 maxmag 0E1 0E2 -> 0E+2 -dqmxg062 maxmag -0E1 -0E1 -> -0E+1 -dqmxg063 maxmag -0E2 -0E2 -> -0E+2 -dqmxg064 maxmag -0E2 -0E1 -> -0E+1 -dqmxg065 maxmag -0E1 -0E2 -> -0E+1 - --- Specials -dqmxg090 maxmag Inf -Inf -> Infinity -dqmxg091 maxmag Inf -1000 -> Infinity -dqmxg092 maxmag Inf -1 -> Infinity -dqmxg093 maxmag Inf -0 -> Infinity -dqmxg094 maxmag Inf 0 -> Infinity -dqmxg095 maxmag Inf 1 -> Infinity -dqmxg096 maxmag Inf 1000 -> Infinity -dqmxg097 maxmag Inf Inf -> Infinity -dqmxg098 maxmag -1000 Inf -> Infinity -dqmxg099 maxmag -Inf Inf -> Infinity -dqmxg100 maxmag -1 Inf -> Infinity -dqmxg101 maxmag -0 Inf -> Infinity -dqmxg102 maxmag 0 Inf -> Infinity -dqmxg103 maxmag 1 Inf -> Infinity -dqmxg104 maxmag 1000 Inf -> Infinity -dqmxg105 maxmag Inf Inf -> Infinity - -dqmxg120 maxmag -Inf -Inf -> -Infinity -dqmxg121 maxmag -Inf -1000 -> -Infinity -dqmxg122 maxmag -Inf -1 -> -Infinity -dqmxg123 maxmag -Inf -0 -> -Infinity -dqmxg124 maxmag -Inf 0 -> -Infinity -dqmxg125 maxmag -Inf 1 -> -Infinity -dqmxg126 maxmag -Inf 1000 -> -Infinity -dqmxg127 maxmag -Inf Inf -> Infinity -dqmxg128 maxmag -Inf -Inf -> -Infinity -dqmxg129 maxmag -1000 -Inf -> -Infinity -dqmxg130 maxmag -1 -Inf -> -Infinity -dqmxg131 maxmag -0 -Inf -> -Infinity -dqmxg132 maxmag 0 -Inf -> -Infinity -dqmxg133 maxmag 1 -Inf -> -Infinity -dqmxg134 maxmag 1000 -Inf -> -Infinity -dqmxg135 maxmag Inf -Inf -> Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -dqmxg141 maxmag NaN -Inf -> -Infinity -dqmxg142 maxmag NaN -1000 -> -1000 -dqmxg143 maxmag NaN -1 -> -1 -dqmxg144 maxmag NaN -0 -> -0 -dqmxg145 maxmag NaN 0 -> 0 -dqmxg146 maxmag NaN 1 -> 1 -dqmxg147 maxmag NaN 1000 -> 1000 -dqmxg148 maxmag NaN Inf -> Infinity -dqmxg149 maxmag NaN NaN -> NaN -dqmxg150 maxmag -Inf NaN -> -Infinity -dqmxg151 maxmag -1000 NaN -> -1000 -dqmxg152 maxmag -1 NaN -> -1 -dqmxg153 maxmag -0 NaN -> -0 -dqmxg154 maxmag 0 NaN -> 0 -dqmxg155 maxmag 1 NaN -> 1 -dqmxg156 maxmag 1000 NaN -> 1000 -dqmxg157 maxmag Inf NaN -> Infinity - -dqmxg161 maxmag sNaN -Inf -> NaN Invalid_operation -dqmxg162 maxmag sNaN -1000 -> NaN Invalid_operation -dqmxg163 maxmag sNaN -1 -> NaN Invalid_operation -dqmxg164 maxmag sNaN -0 -> NaN Invalid_operation -dqmxg165 maxmag sNaN 0 -> NaN Invalid_operation -dqmxg166 maxmag sNaN 1 -> NaN Invalid_operation -dqmxg167 maxmag sNaN 1000 -> NaN Invalid_operation -dqmxg168 maxmag sNaN NaN -> NaN Invalid_operation -dqmxg169 maxmag sNaN sNaN -> NaN Invalid_operation -dqmxg170 maxmag NaN sNaN -> NaN Invalid_operation -dqmxg171 maxmag -Inf sNaN -> NaN Invalid_operation -dqmxg172 maxmag -1000 sNaN -> NaN Invalid_operation -dqmxg173 maxmag -1 sNaN -> NaN Invalid_operation -dqmxg174 maxmag -0 sNaN -> NaN Invalid_operation -dqmxg175 maxmag 0 sNaN -> NaN Invalid_operation -dqmxg176 maxmag 1 sNaN -> NaN Invalid_operation -dqmxg177 maxmag 1000 sNaN -> NaN Invalid_operation -dqmxg178 maxmag Inf sNaN -> NaN Invalid_operation -dqmxg179 maxmag NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqmxg181 maxmag NaN9 -Inf -> -Infinity -dqmxg182 maxmag NaN8 9 -> 9 -dqmxg183 maxmag -NaN7 Inf -> Infinity - -dqmxg184 maxmag -NaN1 NaN11 -> -NaN1 -dqmxg185 maxmag NaN2 NaN12 -> NaN2 -dqmxg186 maxmag -NaN13 -NaN7 -> -NaN13 -dqmxg187 maxmag NaN14 -NaN5 -> NaN14 - -dqmxg188 maxmag -Inf NaN4 -> -Infinity -dqmxg189 maxmag -9 -NaN3 -> -9 -dqmxg190 maxmag Inf NaN2 -> Infinity - -dqmxg191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation -dqmxg192 maxmag sNaN98 -1 -> NaN98 Invalid_operation -dqmxg193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation -dqmxg194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation -dqmxg195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation -dqmxg196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation -dqmxg197 maxmag 0 sNaN91 -> NaN91 Invalid_operation -dqmxg198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation -dqmxg199 maxmag NaN sNaN89 -> NaN89 Invalid_operation - --- old rounding checks -dqmxg221 maxmag 12345678000 1 -> 12345678000 -dqmxg222 maxmag 1 12345678000 -> 12345678000 -dqmxg223 maxmag 1234567800 1 -> 1234567800 -dqmxg224 maxmag 1 1234567800 -> 1234567800 -dqmxg225 maxmag 1234567890 1 -> 1234567890 -dqmxg226 maxmag 1 1234567890 -> 1234567890 -dqmxg227 maxmag 1234567891 1 -> 1234567891 -dqmxg228 maxmag 1 1234567891 -> 1234567891 -dqmxg229 maxmag 12345678901 1 -> 12345678901 -dqmxg230 maxmag 1 12345678901 -> 12345678901 -dqmxg231 maxmag 1234567896 1 -> 1234567896 -dqmxg232 maxmag 1 1234567896 -> 1234567896 -dqmxg233 maxmag -1234567891 1 -> -1234567891 -dqmxg234 maxmag 1 -1234567891 -> -1234567891 -dqmxg235 maxmag -12345678901 1 -> -12345678901 -dqmxg236 maxmag 1 -12345678901 -> -12345678901 -dqmxg237 maxmag -1234567896 1 -> -1234567896 -dqmxg238 maxmag 1 -1234567896 -> -1234567896 - --- from examples -dqmxg280 maxmag '3' '2' -> '3' -dqmxg281 maxmag '-10' '3' -> '-10' -dqmxg282 maxmag '1.0' '1' -> '1' -dqmxg283 maxmag '1' '1.0' -> '1' -dqmxg284 maxmag '7' 'NaN' -> '7' - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -dqmxg401 maxmag Inf 1.1 -> Infinity -dqmxg402 maxmag 1.1 1 -> 1.1 -dqmxg403 maxmag 1 1.0 -> 1 -dqmxg404 maxmag 1.0 0.1 -> 1.0 -dqmxg405 maxmag 0.1 0.10 -> 0.1 -dqmxg406 maxmag 0.10 0.100 -> 0.10 -dqmxg407 maxmag 0.10 0 -> 0.10 -dqmxg408 maxmag 0 0.0 -> 0 -dqmxg409 maxmag 0.0 -0 -> 0.0 -dqmxg410 maxmag 0.0 -0.0 -> 0.0 -dqmxg411 maxmag 0.00 -0.0 -> 0.00 -dqmxg412 maxmag 0.0 -0.00 -> 0.0 -dqmxg413 maxmag 0 -0.0 -> 0 -dqmxg414 maxmag 0 -0 -> 0 -dqmxg415 maxmag -0.0 -0 -> -0.0 -dqmxg416 maxmag -0 -0.100 -> -0.100 -dqmxg417 maxmag -0.100 -0.10 -> -0.100 -dqmxg418 maxmag -0.10 -0.1 -> -0.10 -dqmxg419 maxmag -0.1 -1.0 -> -1.0 -dqmxg420 maxmag -1.0 -1 -> -1.0 -dqmxg421 maxmag -1 -1.1 -> -1.1 -dqmxg423 maxmag -1.1 -Inf -> -Infinity --- same with operands reversed -dqmxg431 maxmag 1.1 Inf -> Infinity -dqmxg432 maxmag 1 1.1 -> 1.1 -dqmxg433 maxmag 1.0 1 -> 1 -dqmxg434 maxmag 0.1 1.0 -> 1.0 -dqmxg435 maxmag 0.10 0.1 -> 0.1 -dqmxg436 maxmag 0.100 0.10 -> 0.10 -dqmxg437 maxmag 0 0.10 -> 0.10 -dqmxg438 maxmag 0.0 0 -> 0 -dqmxg439 maxmag -0 0.0 -> 0.0 -dqmxg440 maxmag -0.0 0.0 -> 0.0 -dqmxg441 maxmag -0.0 0.00 -> 0.00 -dqmxg442 maxmag -0.00 0.0 -> 0.0 -dqmxg443 maxmag -0.0 0 -> 0 -dqmxg444 maxmag -0 0 -> 0 -dqmxg445 maxmag -0 -0.0 -> -0.0 -dqmxg446 maxmag -0.100 -0 -> -0.100 -dqmxg447 maxmag -0.10 -0.100 -> -0.100 -dqmxg448 maxmag -0.1 -0.10 -> -0.10 -dqmxg449 maxmag -1.0 -0.1 -> -1.0 -dqmxg450 maxmag -1 -1.0 -> -1.0 -dqmxg451 maxmag -1.1 -1 -> -1.1 -dqmxg453 maxmag -Inf -1.1 -> -Infinity --- largies -dqmxg460 maxmag 1000 1E+3 -> 1E+3 -dqmxg461 maxmag 1E+3 1000 -> 1E+3 -dqmxg462 maxmag 1000 -1E+3 -> 1000 -dqmxg463 maxmag 1E+3 -1000 -> 1E+3 -dqmxg464 maxmag -1000 1E+3 -> 1E+3 -dqmxg465 maxmag -1E+3 1000 -> 1000 -dqmxg466 maxmag -1000 -1E+3 -> -1000 -dqmxg467 maxmag -1E+3 -1000 -> -1000 - --- subnormals -dqmxg510 maxmag 1.00E-6143 0 -> 1.00E-6143 -dqmxg511 maxmag 0.1E-6143 0 -> 1E-6144 Subnormal -dqmxg512 maxmag 0.10E-6143 0 -> 1.0E-6144 Subnormal -dqmxg513 maxmag 0.100E-6143 0 -> 1.00E-6144 Subnormal -dqmxg514 maxmag 0.01E-6143 0 -> 1E-6145 Subnormal -dqmxg515 maxmag 0.999E-6143 0 -> 9.99E-6144 Subnormal -dqmxg516 maxmag 0.099E-6143 0 -> 9.9E-6145 Subnormal -dqmxg517 maxmag 0.009E-6143 0 -> 9E-6146 Subnormal -dqmxg518 maxmag 0.001E-6143 0 -> 1E-6146 Subnormal -dqmxg519 maxmag 0.0009E-6143 0 -> 9E-6147 Subnormal -dqmxg520 maxmag 0.0001E-6143 0 -> 1E-6147 Subnormal - -dqmxg530 maxmag -1.00E-6143 0 -> -1.00E-6143 -dqmxg531 maxmag -0.1E-6143 0 -> -1E-6144 Subnormal -dqmxg532 maxmag -0.10E-6143 0 -> -1.0E-6144 Subnormal -dqmxg533 maxmag -0.100E-6143 0 -> -1.00E-6144 Subnormal -dqmxg534 maxmag -0.01E-6143 0 -> -1E-6145 Subnormal -dqmxg535 maxmag -0.999E-6143 0 -> -9.99E-6144 Subnormal -dqmxg536 maxmag -0.099E-6143 0 -> -9.9E-6145 Subnormal -dqmxg537 maxmag -0.009E-6143 0 -> -9E-6146 Subnormal -dqmxg538 maxmag -0.001E-6143 0 -> -1E-6146 Subnormal -dqmxg539 maxmag -0.0009E-6143 0 -> -9E-6147 Subnormal -dqmxg540 maxmag -0.0001E-6143 0 -> -1E-6147 Subnormal - --- Null tests -dqmxg900 maxmag 10 # -> NaN Invalid_operation -dqmxg901 maxmag # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqMaxMag.decTest -- decQuad maxnummag -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqmxg001 maxmag -2 -2 -> -2 +dqmxg002 maxmag -2 -1 -> -2 +dqmxg003 maxmag -2 0 -> -2 +dqmxg004 maxmag -2 1 -> -2 +dqmxg005 maxmag -2 2 -> 2 +dqmxg006 maxmag -1 -2 -> -2 +dqmxg007 maxmag -1 -1 -> -1 +dqmxg008 maxmag -1 0 -> -1 +dqmxg009 maxmag -1 1 -> 1 +dqmxg010 maxmag -1 2 -> 2 +dqmxg011 maxmag 0 -2 -> -2 +dqmxg012 maxmag 0 -1 -> -1 +dqmxg013 maxmag 0 0 -> 0 +dqmxg014 maxmag 0 1 -> 1 +dqmxg015 maxmag 0 2 -> 2 +dqmxg016 maxmag 1 -2 -> -2 +dqmxg017 maxmag 1 -1 -> 1 +dqmxg018 maxmag 1 0 -> 1 +dqmxg019 maxmag 1 1 -> 1 +dqmxg020 maxmag 1 2 -> 2 +dqmxg021 maxmag 2 -2 -> 2 +dqmxg022 maxmag 2 -1 -> 2 +dqmxg023 maxmag 2 0 -> 2 +dqmxg025 maxmag 2 1 -> 2 +dqmxg026 maxmag 2 2 -> 2 + +-- extended zeros +dqmxg030 maxmag 0 0 -> 0 +dqmxg031 maxmag 0 -0 -> 0 +dqmxg032 maxmag 0 -0.0 -> 0 +dqmxg033 maxmag 0 0.0 -> 0 +dqmxg034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen +dqmxg035 maxmag -0 -0 -> -0 +dqmxg036 maxmag -0 -0.0 -> -0.0 +dqmxg037 maxmag -0 0.0 -> 0.0 +dqmxg038 maxmag 0.0 0 -> 0 +dqmxg039 maxmag 0.0 -0 -> 0.0 +dqmxg040 maxmag 0.0 -0.0 -> 0.0 +dqmxg041 maxmag 0.0 0.0 -> 0.0 +dqmxg042 maxmag -0.0 0 -> 0 +dqmxg043 maxmag -0.0 -0 -> -0.0 +dqmxg044 maxmag -0.0 -0.0 -> -0.0 +dqmxg045 maxmag -0.0 0.0 -> 0.0 + +dqmxg050 maxmag -0E1 0E1 -> 0E+1 +dqmxg051 maxmag -0E2 0E2 -> 0E+2 +dqmxg052 maxmag -0E2 0E1 -> 0E+1 +dqmxg053 maxmag -0E1 0E2 -> 0E+2 +dqmxg054 maxmag 0E1 -0E1 -> 0E+1 +dqmxg055 maxmag 0E2 -0E2 -> 0E+2 +dqmxg056 maxmag 0E2 -0E1 -> 0E+2 +dqmxg057 maxmag 0E1 -0E2 -> 0E+1 + +dqmxg058 maxmag 0E1 0E1 -> 0E+1 +dqmxg059 maxmag 0E2 0E2 -> 0E+2 +dqmxg060 maxmag 0E2 0E1 -> 0E+2 +dqmxg061 maxmag 0E1 0E2 -> 0E+2 +dqmxg062 maxmag -0E1 -0E1 -> -0E+1 +dqmxg063 maxmag -0E2 -0E2 -> -0E+2 +dqmxg064 maxmag -0E2 -0E1 -> -0E+1 +dqmxg065 maxmag -0E1 -0E2 -> -0E+1 + +-- Specials +dqmxg090 maxmag Inf -Inf -> Infinity +dqmxg091 maxmag Inf -1000 -> Infinity +dqmxg092 maxmag Inf -1 -> Infinity +dqmxg093 maxmag Inf -0 -> Infinity +dqmxg094 maxmag Inf 0 -> Infinity +dqmxg095 maxmag Inf 1 -> Infinity +dqmxg096 maxmag Inf 1000 -> Infinity +dqmxg097 maxmag Inf Inf -> Infinity +dqmxg098 maxmag -1000 Inf -> Infinity +dqmxg099 maxmag -Inf Inf -> Infinity +dqmxg100 maxmag -1 Inf -> Infinity +dqmxg101 maxmag -0 Inf -> Infinity +dqmxg102 maxmag 0 Inf -> Infinity +dqmxg103 maxmag 1 Inf -> Infinity +dqmxg104 maxmag 1000 Inf -> Infinity +dqmxg105 maxmag Inf Inf -> Infinity + +dqmxg120 maxmag -Inf -Inf -> -Infinity +dqmxg121 maxmag -Inf -1000 -> -Infinity +dqmxg122 maxmag -Inf -1 -> -Infinity +dqmxg123 maxmag -Inf -0 -> -Infinity +dqmxg124 maxmag -Inf 0 -> -Infinity +dqmxg125 maxmag -Inf 1 -> -Infinity +dqmxg126 maxmag -Inf 1000 -> -Infinity +dqmxg127 maxmag -Inf Inf -> Infinity +dqmxg128 maxmag -Inf -Inf -> -Infinity +dqmxg129 maxmag -1000 -Inf -> -Infinity +dqmxg130 maxmag -1 -Inf -> -Infinity +dqmxg131 maxmag -0 -Inf -> -Infinity +dqmxg132 maxmag 0 -Inf -> -Infinity +dqmxg133 maxmag 1 -Inf -> -Infinity +dqmxg134 maxmag 1000 -Inf -> -Infinity +dqmxg135 maxmag Inf -Inf -> Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +dqmxg141 maxmag NaN -Inf -> -Infinity +dqmxg142 maxmag NaN -1000 -> -1000 +dqmxg143 maxmag NaN -1 -> -1 +dqmxg144 maxmag NaN -0 -> -0 +dqmxg145 maxmag NaN 0 -> 0 +dqmxg146 maxmag NaN 1 -> 1 +dqmxg147 maxmag NaN 1000 -> 1000 +dqmxg148 maxmag NaN Inf -> Infinity +dqmxg149 maxmag NaN NaN -> NaN +dqmxg150 maxmag -Inf NaN -> -Infinity +dqmxg151 maxmag -1000 NaN -> -1000 +dqmxg152 maxmag -1 NaN -> -1 +dqmxg153 maxmag -0 NaN -> -0 +dqmxg154 maxmag 0 NaN -> 0 +dqmxg155 maxmag 1 NaN -> 1 +dqmxg156 maxmag 1000 NaN -> 1000 +dqmxg157 maxmag Inf NaN -> Infinity + +dqmxg161 maxmag sNaN -Inf -> NaN Invalid_operation +dqmxg162 maxmag sNaN -1000 -> NaN Invalid_operation +dqmxg163 maxmag sNaN -1 -> NaN Invalid_operation +dqmxg164 maxmag sNaN -0 -> NaN Invalid_operation +dqmxg165 maxmag sNaN 0 -> NaN Invalid_operation +dqmxg166 maxmag sNaN 1 -> NaN Invalid_operation +dqmxg167 maxmag sNaN 1000 -> NaN Invalid_operation +dqmxg168 maxmag sNaN NaN -> NaN Invalid_operation +dqmxg169 maxmag sNaN sNaN -> NaN Invalid_operation +dqmxg170 maxmag NaN sNaN -> NaN Invalid_operation +dqmxg171 maxmag -Inf sNaN -> NaN Invalid_operation +dqmxg172 maxmag -1000 sNaN -> NaN Invalid_operation +dqmxg173 maxmag -1 sNaN -> NaN Invalid_operation +dqmxg174 maxmag -0 sNaN -> NaN Invalid_operation +dqmxg175 maxmag 0 sNaN -> NaN Invalid_operation +dqmxg176 maxmag 1 sNaN -> NaN Invalid_operation +dqmxg177 maxmag 1000 sNaN -> NaN Invalid_operation +dqmxg178 maxmag Inf sNaN -> NaN Invalid_operation +dqmxg179 maxmag NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqmxg181 maxmag NaN9 -Inf -> -Infinity +dqmxg182 maxmag NaN8 9 -> 9 +dqmxg183 maxmag -NaN7 Inf -> Infinity + +dqmxg184 maxmag -NaN1 NaN11 -> -NaN1 +dqmxg185 maxmag NaN2 NaN12 -> NaN2 +dqmxg186 maxmag -NaN13 -NaN7 -> -NaN13 +dqmxg187 maxmag NaN14 -NaN5 -> NaN14 + +dqmxg188 maxmag -Inf NaN4 -> -Infinity +dqmxg189 maxmag -9 -NaN3 -> -9 +dqmxg190 maxmag Inf NaN2 -> Infinity + +dqmxg191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation +dqmxg192 maxmag sNaN98 -1 -> NaN98 Invalid_operation +dqmxg193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation +dqmxg194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation +dqmxg195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation +dqmxg196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation +dqmxg197 maxmag 0 sNaN91 -> NaN91 Invalid_operation +dqmxg198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation +dqmxg199 maxmag NaN sNaN89 -> NaN89 Invalid_operation + +-- old rounding checks +dqmxg221 maxmag 12345678000 1 -> 12345678000 +dqmxg222 maxmag 1 12345678000 -> 12345678000 +dqmxg223 maxmag 1234567800 1 -> 1234567800 +dqmxg224 maxmag 1 1234567800 -> 1234567800 +dqmxg225 maxmag 1234567890 1 -> 1234567890 +dqmxg226 maxmag 1 1234567890 -> 1234567890 +dqmxg227 maxmag 1234567891 1 -> 1234567891 +dqmxg228 maxmag 1 1234567891 -> 1234567891 +dqmxg229 maxmag 12345678901 1 -> 12345678901 +dqmxg230 maxmag 1 12345678901 -> 12345678901 +dqmxg231 maxmag 1234567896 1 -> 1234567896 +dqmxg232 maxmag 1 1234567896 -> 1234567896 +dqmxg233 maxmag -1234567891 1 -> -1234567891 +dqmxg234 maxmag 1 -1234567891 -> -1234567891 +dqmxg235 maxmag -12345678901 1 -> -12345678901 +dqmxg236 maxmag 1 -12345678901 -> -12345678901 +dqmxg237 maxmag -1234567896 1 -> -1234567896 +dqmxg238 maxmag 1 -1234567896 -> -1234567896 + +-- from examples +dqmxg280 maxmag '3' '2' -> '3' +dqmxg281 maxmag '-10' '3' -> '-10' +dqmxg282 maxmag '1.0' '1' -> '1' +dqmxg283 maxmag '1' '1.0' -> '1' +dqmxg284 maxmag '7' 'NaN' -> '7' + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +dqmxg401 maxmag Inf 1.1 -> Infinity +dqmxg402 maxmag 1.1 1 -> 1.1 +dqmxg403 maxmag 1 1.0 -> 1 +dqmxg404 maxmag 1.0 0.1 -> 1.0 +dqmxg405 maxmag 0.1 0.10 -> 0.1 +dqmxg406 maxmag 0.10 0.100 -> 0.10 +dqmxg407 maxmag 0.10 0 -> 0.10 +dqmxg408 maxmag 0 0.0 -> 0 +dqmxg409 maxmag 0.0 -0 -> 0.0 +dqmxg410 maxmag 0.0 -0.0 -> 0.0 +dqmxg411 maxmag 0.00 -0.0 -> 0.00 +dqmxg412 maxmag 0.0 -0.00 -> 0.0 +dqmxg413 maxmag 0 -0.0 -> 0 +dqmxg414 maxmag 0 -0 -> 0 +dqmxg415 maxmag -0.0 -0 -> -0.0 +dqmxg416 maxmag -0 -0.100 -> -0.100 +dqmxg417 maxmag -0.100 -0.10 -> -0.100 +dqmxg418 maxmag -0.10 -0.1 -> -0.10 +dqmxg419 maxmag -0.1 -1.0 -> -1.0 +dqmxg420 maxmag -1.0 -1 -> -1.0 +dqmxg421 maxmag -1 -1.1 -> -1.1 +dqmxg423 maxmag -1.1 -Inf -> -Infinity +-- same with operands reversed +dqmxg431 maxmag 1.1 Inf -> Infinity +dqmxg432 maxmag 1 1.1 -> 1.1 +dqmxg433 maxmag 1.0 1 -> 1 +dqmxg434 maxmag 0.1 1.0 -> 1.0 +dqmxg435 maxmag 0.10 0.1 -> 0.1 +dqmxg436 maxmag 0.100 0.10 -> 0.10 +dqmxg437 maxmag 0 0.10 -> 0.10 +dqmxg438 maxmag 0.0 0 -> 0 +dqmxg439 maxmag -0 0.0 -> 0.0 +dqmxg440 maxmag -0.0 0.0 -> 0.0 +dqmxg441 maxmag -0.0 0.00 -> 0.00 +dqmxg442 maxmag -0.00 0.0 -> 0.0 +dqmxg443 maxmag -0.0 0 -> 0 +dqmxg444 maxmag -0 0 -> 0 +dqmxg445 maxmag -0 -0.0 -> -0.0 +dqmxg446 maxmag -0.100 -0 -> -0.100 +dqmxg447 maxmag -0.10 -0.100 -> -0.100 +dqmxg448 maxmag -0.1 -0.10 -> -0.10 +dqmxg449 maxmag -1.0 -0.1 -> -1.0 +dqmxg450 maxmag -1 -1.0 -> -1.0 +dqmxg451 maxmag -1.1 -1 -> -1.1 +dqmxg453 maxmag -Inf -1.1 -> -Infinity +-- largies +dqmxg460 maxmag 1000 1E+3 -> 1E+3 +dqmxg461 maxmag 1E+3 1000 -> 1E+3 +dqmxg462 maxmag 1000 -1E+3 -> 1000 +dqmxg463 maxmag 1E+3 -1000 -> 1E+3 +dqmxg464 maxmag -1000 1E+3 -> 1E+3 +dqmxg465 maxmag -1E+3 1000 -> 1000 +dqmxg466 maxmag -1000 -1E+3 -> -1000 +dqmxg467 maxmag -1E+3 -1000 -> -1000 + +-- subnormals +dqmxg510 maxmag 1.00E-6143 0 -> 1.00E-6143 +dqmxg511 maxmag 0.1E-6143 0 -> 1E-6144 Subnormal +dqmxg512 maxmag 0.10E-6143 0 -> 1.0E-6144 Subnormal +dqmxg513 maxmag 0.100E-6143 0 -> 1.00E-6144 Subnormal +dqmxg514 maxmag 0.01E-6143 0 -> 1E-6145 Subnormal +dqmxg515 maxmag 0.999E-6143 0 -> 9.99E-6144 Subnormal +dqmxg516 maxmag 0.099E-6143 0 -> 9.9E-6145 Subnormal +dqmxg517 maxmag 0.009E-6143 0 -> 9E-6146 Subnormal +dqmxg518 maxmag 0.001E-6143 0 -> 1E-6146 Subnormal +dqmxg519 maxmag 0.0009E-6143 0 -> 9E-6147 Subnormal +dqmxg520 maxmag 0.0001E-6143 0 -> 1E-6147 Subnormal + +dqmxg530 maxmag -1.00E-6143 0 -> -1.00E-6143 +dqmxg531 maxmag -0.1E-6143 0 -> -1E-6144 Subnormal +dqmxg532 maxmag -0.10E-6143 0 -> -1.0E-6144 Subnormal +dqmxg533 maxmag -0.100E-6143 0 -> -1.00E-6144 Subnormal +dqmxg534 maxmag -0.01E-6143 0 -> -1E-6145 Subnormal +dqmxg535 maxmag -0.999E-6143 0 -> -9.99E-6144 Subnormal +dqmxg536 maxmag -0.099E-6143 0 -> -9.9E-6145 Subnormal +dqmxg537 maxmag -0.009E-6143 0 -> -9E-6146 Subnormal +dqmxg538 maxmag -0.001E-6143 0 -> -1E-6146 Subnormal +dqmxg539 maxmag -0.0009E-6143 0 -> -9E-6147 Subnormal +dqmxg540 maxmag -0.0001E-6143 0 -> -1E-6147 Subnormal + +-- Null tests +dqmxg900 maxmag 10 # -> NaN Invalid_operation +dqmxg901 maxmag # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqMin.decTest b/Lib/test/decimaltestdata/dqMin.decTest index 5302039..c87f4c5 100644 --- a/Lib/test/decimaltestdata/dqMin.decTest +++ b/Lib/test/decimaltestdata/dqMin.decTest @@ -1,309 +1,309 @@ ------------------------------------------------------------------------- --- dqMin.decTest -- decQuad minnum -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqmin001 min -2 -2 -> -2 -dqmin002 min -2 -1 -> -2 -dqmin003 min -2 0 -> -2 -dqmin004 min -2 1 -> -2 -dqmin005 min -2 2 -> -2 -dqmin006 min -1 -2 -> -2 -dqmin007 min -1 -1 -> -1 -dqmin008 min -1 0 -> -1 -dqmin009 min -1 1 -> -1 -dqmin010 min -1 2 -> -1 -dqmin011 min 0 -2 -> -2 -dqmin012 min 0 -1 -> -1 -dqmin013 min 0 0 -> 0 -dqmin014 min 0 1 -> 0 -dqmin015 min 0 2 -> 0 -dqmin016 min 1 -2 -> -2 -dqmin017 min 1 -1 -> -1 -dqmin018 min 1 0 -> 0 -dqmin019 min 1 1 -> 1 -dqmin020 min 1 2 -> 1 -dqmin021 min 2 -2 -> -2 -dqmin022 min 2 -1 -> -1 -dqmin023 min 2 0 -> 0 -dqmin025 min 2 1 -> 1 -dqmin026 min 2 2 -> 2 - --- extended zeros -dqmin030 min 0 0 -> 0 -dqmin031 min 0 -0 -> -0 -dqmin032 min 0 -0.0 -> -0.0 -dqmin033 min 0 0.0 -> 0.0 -dqmin034 min -0 0 -> -0 -dqmin035 min -0 -0 -> -0 -dqmin036 min -0 -0.0 -> -0 -dqmin037 min -0 0.0 -> -0 -dqmin038 min 0.0 0 -> 0.0 -dqmin039 min 0.0 -0 -> -0 -dqmin040 min 0.0 -0.0 -> -0.0 -dqmin041 min 0.0 0.0 -> 0.0 -dqmin042 min -0.0 0 -> -0.0 -dqmin043 min -0.0 -0 -> -0 -dqmin044 min -0.0 -0.0 -> -0.0 -dqmin045 min -0.0 0.0 -> -0.0 - -dqmin046 min 0E1 -0E1 -> -0E+1 -dqmin047 min -0E1 0E2 -> -0E+1 -dqmin048 min 0E2 0E1 -> 0E+1 -dqmin049 min 0E1 0E2 -> 0E+1 -dqmin050 min -0E3 -0E2 -> -0E+3 -dqmin051 min -0E2 -0E3 -> -0E+3 - --- Specials -dqmin090 min Inf -Inf -> -Infinity -dqmin091 min Inf -1000 -> -1000 -dqmin092 min Inf -1 -> -1 -dqmin093 min Inf -0 -> -0 -dqmin094 min Inf 0 -> 0 -dqmin095 min Inf 1 -> 1 -dqmin096 min Inf 1000 -> 1000 -dqmin097 min Inf Inf -> Infinity -dqmin098 min -1000 Inf -> -1000 -dqmin099 min -Inf Inf -> -Infinity -dqmin100 min -1 Inf -> -1 -dqmin101 min -0 Inf -> -0 -dqmin102 min 0 Inf -> 0 -dqmin103 min 1 Inf -> 1 -dqmin104 min 1000 Inf -> 1000 -dqmin105 min Inf Inf -> Infinity - -dqmin120 min -Inf -Inf -> -Infinity -dqmin121 min -Inf -1000 -> -Infinity -dqmin122 min -Inf -1 -> -Infinity -dqmin123 min -Inf -0 -> -Infinity -dqmin124 min -Inf 0 -> -Infinity -dqmin125 min -Inf 1 -> -Infinity -dqmin126 min -Inf 1000 -> -Infinity -dqmin127 min -Inf Inf -> -Infinity -dqmin128 min -Inf -Inf -> -Infinity -dqmin129 min -1000 -Inf -> -Infinity -dqmin130 min -1 -Inf -> -Infinity -dqmin131 min -0 -Inf -> -Infinity -dqmin132 min 0 -Inf -> -Infinity -dqmin133 min 1 -Inf -> -Infinity -dqmin134 min 1000 -Inf -> -Infinity -dqmin135 min Inf -Inf -> -Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -dqmin141 min NaN -Inf -> -Infinity -dqmin142 min NaN -1000 -> -1000 -dqmin143 min NaN -1 -> -1 -dqmin144 min NaN -0 -> -0 -dqmin145 min NaN 0 -> 0 -dqmin146 min NaN 1 -> 1 -dqmin147 min NaN 1000 -> 1000 -dqmin148 min NaN Inf -> Infinity -dqmin149 min NaN NaN -> NaN -dqmin150 min -Inf NaN -> -Infinity -dqmin151 min -1000 NaN -> -1000 -dqmin152 min -1 -NaN -> -1 -dqmin153 min -0 NaN -> -0 -dqmin154 min 0 -NaN -> 0 -dqmin155 min 1 NaN -> 1 -dqmin156 min 1000 NaN -> 1000 -dqmin157 min Inf NaN -> Infinity - -dqmin161 min sNaN -Inf -> NaN Invalid_operation -dqmin162 min sNaN -1000 -> NaN Invalid_operation -dqmin163 min sNaN -1 -> NaN Invalid_operation -dqmin164 min sNaN -0 -> NaN Invalid_operation -dqmin165 min -sNaN 0 -> -NaN Invalid_operation -dqmin166 min -sNaN 1 -> -NaN Invalid_operation -dqmin167 min sNaN 1000 -> NaN Invalid_operation -dqmin168 min sNaN NaN -> NaN Invalid_operation -dqmin169 min sNaN sNaN -> NaN Invalid_operation -dqmin170 min NaN sNaN -> NaN Invalid_operation -dqmin171 min -Inf sNaN -> NaN Invalid_operation -dqmin172 min -1000 sNaN -> NaN Invalid_operation -dqmin173 min -1 sNaN -> NaN Invalid_operation -dqmin174 min -0 sNaN -> NaN Invalid_operation -dqmin175 min 0 sNaN -> NaN Invalid_operation -dqmin176 min 1 sNaN -> NaN Invalid_operation -dqmin177 min 1000 sNaN -> NaN Invalid_operation -dqmin178 min Inf sNaN -> NaN Invalid_operation -dqmin179 min NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqmin181 min NaN9 -Inf -> -Infinity -dqmin182 min -NaN8 9990 -> 9990 -dqmin183 min NaN71 Inf -> Infinity - -dqmin184 min NaN1 NaN54 -> NaN1 -dqmin185 min NaN22 -NaN53 -> NaN22 -dqmin186 min -NaN3 NaN6 -> -NaN3 -dqmin187 min -NaN44 NaN7 -> -NaN44 - -dqmin188 min -Inf NaN41 -> -Infinity -dqmin189 min -9999 -NaN33 -> -9999 -dqmin190 min Inf NaN2 -> Infinity - -dqmin191 min sNaN99 -Inf -> NaN99 Invalid_operation -dqmin192 min sNaN98 -11 -> NaN98 Invalid_operation -dqmin193 min -sNaN97 NaN8 -> -NaN97 Invalid_operation -dqmin194 min sNaN69 sNaN94 -> NaN69 Invalid_operation -dqmin195 min NaN95 sNaN93 -> NaN93 Invalid_operation -dqmin196 min -Inf sNaN92 -> NaN92 Invalid_operation -dqmin197 min 088 sNaN91 -> NaN91 Invalid_operation -dqmin198 min Inf -sNaN90 -> -NaN90 Invalid_operation -dqmin199 min NaN sNaN86 -> NaN86 Invalid_operation - --- old rounding checks -dqmin221 min -12345678000 1 -> -12345678000 -dqmin222 min 1 -12345678000 -> -12345678000 -dqmin223 min -1234567800 1 -> -1234567800 -dqmin224 min 1 -1234567800 -> -1234567800 -dqmin225 min -1234567890 1 -> -1234567890 -dqmin226 min 1 -1234567890 -> -1234567890 -dqmin227 min -1234567891 1 -> -1234567891 -dqmin228 min 1 -1234567891 -> -1234567891 -dqmin229 min -12345678901 1 -> -12345678901 -dqmin230 min 1 -12345678901 -> -12345678901 -dqmin231 min -1234567896 1 -> -1234567896 -dqmin232 min 1 -1234567896 -> -1234567896 -dqmin233 min 1234567891 1 -> 1 -dqmin234 min 1 1234567891 -> 1 -dqmin235 min 12345678901 1 -> 1 -dqmin236 min 1 12345678901 -> 1 -dqmin237 min 1234567896 1 -> 1 -dqmin238 min 1 1234567896 -> 1 - --- from examples -dqmin280 min '3' '2' -> '2' -dqmin281 min '-10' '3' -> '-10' -dqmin282 min '1.0' '1' -> '1.0' -dqmin283 min '1' '1.0' -> '1.0' -dqmin284 min '7' 'NaN' -> '7' - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -dqmin401 min Inf 1.1 -> 1.1 -dqmin402 min 1.1 1 -> 1 -dqmin403 min 1 1.0 -> 1.0 -dqmin404 min 1.0 0.1 -> 0.1 -dqmin405 min 0.1 0.10 -> 0.10 -dqmin406 min 0.10 0.100 -> 0.100 -dqmin407 min 0.10 0 -> 0 -dqmin408 min 0 0.0 -> 0.0 -dqmin409 min 0.0 -0 -> -0 -dqmin410 min 0.0 -0.0 -> -0.0 -dqmin411 min 0.00 -0.0 -> -0.0 -dqmin412 min 0.0 -0.00 -> -0.00 -dqmin413 min 0 -0.0 -> -0.0 -dqmin414 min 0 -0 -> -0 -dqmin415 min -0.0 -0 -> -0 -dqmin416 min -0 -0.100 -> -0.100 -dqmin417 min -0.100 -0.10 -> -0.10 -dqmin418 min -0.10 -0.1 -> -0.1 -dqmin419 min -0.1 -1.0 -> -1.0 -dqmin420 min -1.0 -1 -> -1 -dqmin421 min -1 -1.1 -> -1.1 -dqmin423 min -1.1 -Inf -> -Infinity --- same with operands reversed -dqmin431 min 1.1 Inf -> 1.1 -dqmin432 min 1 1.1 -> 1 -dqmin433 min 1.0 1 -> 1.0 -dqmin434 min 0.1 1.0 -> 0.1 -dqmin435 min 0.10 0.1 -> 0.10 -dqmin436 min 0.100 0.10 -> 0.100 -dqmin437 min 0 0.10 -> 0 -dqmin438 min 0.0 0 -> 0.0 -dqmin439 min -0 0.0 -> -0 -dqmin440 min -0.0 0.0 -> -0.0 -dqmin441 min -0.0 0.00 -> -0.0 -dqmin442 min -0.00 0.0 -> -0.00 -dqmin443 min -0.0 0 -> -0.0 -dqmin444 min -0 0 -> -0 -dqmin445 min -0 -0.0 -> -0 -dqmin446 min -0.100 -0 -> -0.100 -dqmin447 min -0.10 -0.100 -> -0.10 -dqmin448 min -0.1 -0.10 -> -0.1 -dqmin449 min -1.0 -0.1 -> -1.0 -dqmin450 min -1 -1.0 -> -1 -dqmin451 min -1.1 -1 -> -1.1 -dqmin453 min -Inf -1.1 -> -Infinity --- largies -dqmin460 min 1000 1E+3 -> 1000 -dqmin461 min 1E+3 1000 -> 1000 -dqmin462 min 1000 -1E+3 -> -1E+3 -dqmin463 min 1E+3 -384 -> -384 -dqmin464 min -384 1E+3 -> -384 -dqmin465 min -1E+3 1000 -> -1E+3 -dqmin466 min -384 -1E+3 -> -1E+3 -dqmin467 min -1E+3 -384 -> -1E+3 - --- misalignment traps for little-endian -dqmin471 min 1.0 0.1 -> 0.1 -dqmin472 min 0.1 1.0 -> 0.1 -dqmin473 min 10.0 0.1 -> 0.1 -dqmin474 min 0.1 10.0 -> 0.1 -dqmin475 min 100 1.0 -> 1.0 -dqmin476 min 1.0 100 -> 1.0 -dqmin477 min 1000 10.0 -> 10.0 -dqmin478 min 10.0 1000 -> 10.0 -dqmin479 min 10000 100.0 -> 100.0 -dqmin480 min 100.0 10000 -> 100.0 -dqmin481 min 100000 1000.0 -> 1000.0 -dqmin482 min 1000.0 100000 -> 1000.0 -dqmin483 min 1000000 10000.0 -> 10000.0 -dqmin484 min 10000.0 1000000 -> 10000.0 - --- subnormals -dqmin510 min 1.00E-6143 0 -> 0 -dqmin511 min 0.1E-6143 0 -> 0 -dqmin512 min 0.10E-6143 0 -> 0 -dqmin513 min 0.100E-6143 0 -> 0 -dqmin514 min 0.01E-6143 0 -> 0 -dqmin515 min 0.999E-6143 0 -> 0 -dqmin516 min 0.099E-6143 0 -> 0 -dqmin517 min 0.009E-6143 0 -> 0 -dqmin518 min 0.001E-6143 0 -> 0 -dqmin519 min 0.0009E-6143 0 -> 0 -dqmin520 min 0.0001E-6143 0 -> 0 - -dqmin530 min -1.00E-6143 0 -> -1.00E-6143 -dqmin531 min -0.1E-6143 0 -> -1E-6144 Subnormal -dqmin532 min -0.10E-6143 0 -> -1.0E-6144 Subnormal -dqmin533 min -0.100E-6143 0 -> -1.00E-6144 Subnormal -dqmin534 min -0.01E-6143 0 -> -1E-6145 Subnormal -dqmin535 min -0.999E-6143 0 -> -9.99E-6144 Subnormal -dqmin536 min -0.099E-6143 0 -> -9.9E-6145 Subnormal -dqmin537 min -0.009E-6143 0 -> -9E-6146 Subnormal -dqmin538 min -0.001E-6143 0 -> -1E-6146 Subnormal -dqmin539 min -0.0009E-6143 0 -> -9E-6147 Subnormal -dqmin540 min -0.0001E-6143 0 -> -1E-6147 Subnormal - - --- Null tests -dqmin900 min 10 # -> NaN Invalid_operation -dqmin901 min # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqMin.decTest -- decQuad minnum -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqmin001 min -2 -2 -> -2 +dqmin002 min -2 -1 -> -2 +dqmin003 min -2 0 -> -2 +dqmin004 min -2 1 -> -2 +dqmin005 min -2 2 -> -2 +dqmin006 min -1 -2 -> -2 +dqmin007 min -1 -1 -> -1 +dqmin008 min -1 0 -> -1 +dqmin009 min -1 1 -> -1 +dqmin010 min -1 2 -> -1 +dqmin011 min 0 -2 -> -2 +dqmin012 min 0 -1 -> -1 +dqmin013 min 0 0 -> 0 +dqmin014 min 0 1 -> 0 +dqmin015 min 0 2 -> 0 +dqmin016 min 1 -2 -> -2 +dqmin017 min 1 -1 -> -1 +dqmin018 min 1 0 -> 0 +dqmin019 min 1 1 -> 1 +dqmin020 min 1 2 -> 1 +dqmin021 min 2 -2 -> -2 +dqmin022 min 2 -1 -> -1 +dqmin023 min 2 0 -> 0 +dqmin025 min 2 1 -> 1 +dqmin026 min 2 2 -> 2 + +-- extended zeros +dqmin030 min 0 0 -> 0 +dqmin031 min 0 -0 -> -0 +dqmin032 min 0 -0.0 -> -0.0 +dqmin033 min 0 0.0 -> 0.0 +dqmin034 min -0 0 -> -0 +dqmin035 min -0 -0 -> -0 +dqmin036 min -0 -0.0 -> -0 +dqmin037 min -0 0.0 -> -0 +dqmin038 min 0.0 0 -> 0.0 +dqmin039 min 0.0 -0 -> -0 +dqmin040 min 0.0 -0.0 -> -0.0 +dqmin041 min 0.0 0.0 -> 0.0 +dqmin042 min -0.0 0 -> -0.0 +dqmin043 min -0.0 -0 -> -0 +dqmin044 min -0.0 -0.0 -> -0.0 +dqmin045 min -0.0 0.0 -> -0.0 + +dqmin046 min 0E1 -0E1 -> -0E+1 +dqmin047 min -0E1 0E2 -> -0E+1 +dqmin048 min 0E2 0E1 -> 0E+1 +dqmin049 min 0E1 0E2 -> 0E+1 +dqmin050 min -0E3 -0E2 -> -0E+3 +dqmin051 min -0E2 -0E3 -> -0E+3 + +-- Specials +dqmin090 min Inf -Inf -> -Infinity +dqmin091 min Inf -1000 -> -1000 +dqmin092 min Inf -1 -> -1 +dqmin093 min Inf -0 -> -0 +dqmin094 min Inf 0 -> 0 +dqmin095 min Inf 1 -> 1 +dqmin096 min Inf 1000 -> 1000 +dqmin097 min Inf Inf -> Infinity +dqmin098 min -1000 Inf -> -1000 +dqmin099 min -Inf Inf -> -Infinity +dqmin100 min -1 Inf -> -1 +dqmin101 min -0 Inf -> -0 +dqmin102 min 0 Inf -> 0 +dqmin103 min 1 Inf -> 1 +dqmin104 min 1000 Inf -> 1000 +dqmin105 min Inf Inf -> Infinity + +dqmin120 min -Inf -Inf -> -Infinity +dqmin121 min -Inf -1000 -> -Infinity +dqmin122 min -Inf -1 -> -Infinity +dqmin123 min -Inf -0 -> -Infinity +dqmin124 min -Inf 0 -> -Infinity +dqmin125 min -Inf 1 -> -Infinity +dqmin126 min -Inf 1000 -> -Infinity +dqmin127 min -Inf Inf -> -Infinity +dqmin128 min -Inf -Inf -> -Infinity +dqmin129 min -1000 -Inf -> -Infinity +dqmin130 min -1 -Inf -> -Infinity +dqmin131 min -0 -Inf -> -Infinity +dqmin132 min 0 -Inf -> -Infinity +dqmin133 min 1 -Inf -> -Infinity +dqmin134 min 1000 -Inf -> -Infinity +dqmin135 min Inf -Inf -> -Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +dqmin141 min NaN -Inf -> -Infinity +dqmin142 min NaN -1000 -> -1000 +dqmin143 min NaN -1 -> -1 +dqmin144 min NaN -0 -> -0 +dqmin145 min NaN 0 -> 0 +dqmin146 min NaN 1 -> 1 +dqmin147 min NaN 1000 -> 1000 +dqmin148 min NaN Inf -> Infinity +dqmin149 min NaN NaN -> NaN +dqmin150 min -Inf NaN -> -Infinity +dqmin151 min -1000 NaN -> -1000 +dqmin152 min -1 -NaN -> -1 +dqmin153 min -0 NaN -> -0 +dqmin154 min 0 -NaN -> 0 +dqmin155 min 1 NaN -> 1 +dqmin156 min 1000 NaN -> 1000 +dqmin157 min Inf NaN -> Infinity + +dqmin161 min sNaN -Inf -> NaN Invalid_operation +dqmin162 min sNaN -1000 -> NaN Invalid_operation +dqmin163 min sNaN -1 -> NaN Invalid_operation +dqmin164 min sNaN -0 -> NaN Invalid_operation +dqmin165 min -sNaN 0 -> -NaN Invalid_operation +dqmin166 min -sNaN 1 -> -NaN Invalid_operation +dqmin167 min sNaN 1000 -> NaN Invalid_operation +dqmin168 min sNaN NaN -> NaN Invalid_operation +dqmin169 min sNaN sNaN -> NaN Invalid_operation +dqmin170 min NaN sNaN -> NaN Invalid_operation +dqmin171 min -Inf sNaN -> NaN Invalid_operation +dqmin172 min -1000 sNaN -> NaN Invalid_operation +dqmin173 min -1 sNaN -> NaN Invalid_operation +dqmin174 min -0 sNaN -> NaN Invalid_operation +dqmin175 min 0 sNaN -> NaN Invalid_operation +dqmin176 min 1 sNaN -> NaN Invalid_operation +dqmin177 min 1000 sNaN -> NaN Invalid_operation +dqmin178 min Inf sNaN -> NaN Invalid_operation +dqmin179 min NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqmin181 min NaN9 -Inf -> -Infinity +dqmin182 min -NaN8 9990 -> 9990 +dqmin183 min NaN71 Inf -> Infinity + +dqmin184 min NaN1 NaN54 -> NaN1 +dqmin185 min NaN22 -NaN53 -> NaN22 +dqmin186 min -NaN3 NaN6 -> -NaN3 +dqmin187 min -NaN44 NaN7 -> -NaN44 + +dqmin188 min -Inf NaN41 -> -Infinity +dqmin189 min -9999 -NaN33 -> -9999 +dqmin190 min Inf NaN2 -> Infinity + +dqmin191 min sNaN99 -Inf -> NaN99 Invalid_operation +dqmin192 min sNaN98 -11 -> NaN98 Invalid_operation +dqmin193 min -sNaN97 NaN8 -> -NaN97 Invalid_operation +dqmin194 min sNaN69 sNaN94 -> NaN69 Invalid_operation +dqmin195 min NaN95 sNaN93 -> NaN93 Invalid_operation +dqmin196 min -Inf sNaN92 -> NaN92 Invalid_operation +dqmin197 min 088 sNaN91 -> NaN91 Invalid_operation +dqmin198 min Inf -sNaN90 -> -NaN90 Invalid_operation +dqmin199 min NaN sNaN86 -> NaN86 Invalid_operation + +-- old rounding checks +dqmin221 min -12345678000 1 -> -12345678000 +dqmin222 min 1 -12345678000 -> -12345678000 +dqmin223 min -1234567800 1 -> -1234567800 +dqmin224 min 1 -1234567800 -> -1234567800 +dqmin225 min -1234567890 1 -> -1234567890 +dqmin226 min 1 -1234567890 -> -1234567890 +dqmin227 min -1234567891 1 -> -1234567891 +dqmin228 min 1 -1234567891 -> -1234567891 +dqmin229 min -12345678901 1 -> -12345678901 +dqmin230 min 1 -12345678901 -> -12345678901 +dqmin231 min -1234567896 1 -> -1234567896 +dqmin232 min 1 -1234567896 -> -1234567896 +dqmin233 min 1234567891 1 -> 1 +dqmin234 min 1 1234567891 -> 1 +dqmin235 min 12345678901 1 -> 1 +dqmin236 min 1 12345678901 -> 1 +dqmin237 min 1234567896 1 -> 1 +dqmin238 min 1 1234567896 -> 1 + +-- from examples +dqmin280 min '3' '2' -> '2' +dqmin281 min '-10' '3' -> '-10' +dqmin282 min '1.0' '1' -> '1.0' +dqmin283 min '1' '1.0' -> '1.0' +dqmin284 min '7' 'NaN' -> '7' + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +dqmin401 min Inf 1.1 -> 1.1 +dqmin402 min 1.1 1 -> 1 +dqmin403 min 1 1.0 -> 1.0 +dqmin404 min 1.0 0.1 -> 0.1 +dqmin405 min 0.1 0.10 -> 0.10 +dqmin406 min 0.10 0.100 -> 0.100 +dqmin407 min 0.10 0 -> 0 +dqmin408 min 0 0.0 -> 0.0 +dqmin409 min 0.0 -0 -> -0 +dqmin410 min 0.0 -0.0 -> -0.0 +dqmin411 min 0.00 -0.0 -> -0.0 +dqmin412 min 0.0 -0.00 -> -0.00 +dqmin413 min 0 -0.0 -> -0.0 +dqmin414 min 0 -0 -> -0 +dqmin415 min -0.0 -0 -> -0 +dqmin416 min -0 -0.100 -> -0.100 +dqmin417 min -0.100 -0.10 -> -0.10 +dqmin418 min -0.10 -0.1 -> -0.1 +dqmin419 min -0.1 -1.0 -> -1.0 +dqmin420 min -1.0 -1 -> -1 +dqmin421 min -1 -1.1 -> -1.1 +dqmin423 min -1.1 -Inf -> -Infinity +-- same with operands reversed +dqmin431 min 1.1 Inf -> 1.1 +dqmin432 min 1 1.1 -> 1 +dqmin433 min 1.0 1 -> 1.0 +dqmin434 min 0.1 1.0 -> 0.1 +dqmin435 min 0.10 0.1 -> 0.10 +dqmin436 min 0.100 0.10 -> 0.100 +dqmin437 min 0 0.10 -> 0 +dqmin438 min 0.0 0 -> 0.0 +dqmin439 min -0 0.0 -> -0 +dqmin440 min -0.0 0.0 -> -0.0 +dqmin441 min -0.0 0.00 -> -0.0 +dqmin442 min -0.00 0.0 -> -0.00 +dqmin443 min -0.0 0 -> -0.0 +dqmin444 min -0 0 -> -0 +dqmin445 min -0 -0.0 -> -0 +dqmin446 min -0.100 -0 -> -0.100 +dqmin447 min -0.10 -0.100 -> -0.10 +dqmin448 min -0.1 -0.10 -> -0.1 +dqmin449 min -1.0 -0.1 -> -1.0 +dqmin450 min -1 -1.0 -> -1 +dqmin451 min -1.1 -1 -> -1.1 +dqmin453 min -Inf -1.1 -> -Infinity +-- largies +dqmin460 min 1000 1E+3 -> 1000 +dqmin461 min 1E+3 1000 -> 1000 +dqmin462 min 1000 -1E+3 -> -1E+3 +dqmin463 min 1E+3 -384 -> -384 +dqmin464 min -384 1E+3 -> -384 +dqmin465 min -1E+3 1000 -> -1E+3 +dqmin466 min -384 -1E+3 -> -1E+3 +dqmin467 min -1E+3 -384 -> -1E+3 + +-- misalignment traps for little-endian +dqmin471 min 1.0 0.1 -> 0.1 +dqmin472 min 0.1 1.0 -> 0.1 +dqmin473 min 10.0 0.1 -> 0.1 +dqmin474 min 0.1 10.0 -> 0.1 +dqmin475 min 100 1.0 -> 1.0 +dqmin476 min 1.0 100 -> 1.0 +dqmin477 min 1000 10.0 -> 10.0 +dqmin478 min 10.0 1000 -> 10.0 +dqmin479 min 10000 100.0 -> 100.0 +dqmin480 min 100.0 10000 -> 100.0 +dqmin481 min 100000 1000.0 -> 1000.0 +dqmin482 min 1000.0 100000 -> 1000.0 +dqmin483 min 1000000 10000.0 -> 10000.0 +dqmin484 min 10000.0 1000000 -> 10000.0 + +-- subnormals +dqmin510 min 1.00E-6143 0 -> 0 +dqmin511 min 0.1E-6143 0 -> 0 +dqmin512 min 0.10E-6143 0 -> 0 +dqmin513 min 0.100E-6143 0 -> 0 +dqmin514 min 0.01E-6143 0 -> 0 +dqmin515 min 0.999E-6143 0 -> 0 +dqmin516 min 0.099E-6143 0 -> 0 +dqmin517 min 0.009E-6143 0 -> 0 +dqmin518 min 0.001E-6143 0 -> 0 +dqmin519 min 0.0009E-6143 0 -> 0 +dqmin520 min 0.0001E-6143 0 -> 0 + +dqmin530 min -1.00E-6143 0 -> -1.00E-6143 +dqmin531 min -0.1E-6143 0 -> -1E-6144 Subnormal +dqmin532 min -0.10E-6143 0 -> -1.0E-6144 Subnormal +dqmin533 min -0.100E-6143 0 -> -1.00E-6144 Subnormal +dqmin534 min -0.01E-6143 0 -> -1E-6145 Subnormal +dqmin535 min -0.999E-6143 0 -> -9.99E-6144 Subnormal +dqmin536 min -0.099E-6143 0 -> -9.9E-6145 Subnormal +dqmin537 min -0.009E-6143 0 -> -9E-6146 Subnormal +dqmin538 min -0.001E-6143 0 -> -1E-6146 Subnormal +dqmin539 min -0.0009E-6143 0 -> -9E-6147 Subnormal +dqmin540 min -0.0001E-6143 0 -> -1E-6147 Subnormal + + +-- Null tests +dqmin900 min 10 # -> NaN Invalid_operation +dqmin901 min # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqMinMag.decTest b/Lib/test/decimaltestdata/dqMinMag.decTest index 71b886f..edc2e47 100644 --- a/Lib/test/decimaltestdata/dqMinMag.decTest +++ b/Lib/test/decimaltestdata/dqMinMag.decTest @@ -1,293 +1,293 @@ ------------------------------------------------------------------------- --- dqMinMag.decTest -- decQuad minnummag -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqmng001 minmag -2 -2 -> -2 -dqmng002 minmag -2 -1 -> -1 -dqmng003 minmag -2 0 -> 0 -dqmng004 minmag -2 1 -> 1 -dqmng005 minmag -2 2 -> -2 -dqmng006 minmag -1 -2 -> -1 -dqmng007 minmag -1 -1 -> -1 -dqmng008 minmag -1 0 -> 0 -dqmng009 minmag -1 1 -> -1 -dqmng010 minmag -1 2 -> -1 -dqmng011 minmag 0 -2 -> 0 -dqmng012 minmag 0 -1 -> 0 -dqmng013 minmag 0 0 -> 0 -dqmng014 minmag 0 1 -> 0 -dqmng015 minmag 0 2 -> 0 -dqmng016 minmag 1 -2 -> 1 -dqmng017 minmag 1 -1 -> -1 -dqmng018 minmag 1 0 -> 0 -dqmng019 minmag 1 1 -> 1 -dqmng020 minmag 1 2 -> 1 -dqmng021 minmag 2 -2 -> -2 -dqmng022 minmag 2 -1 -> -1 -dqmng023 minmag 2 0 -> 0 -dqmng025 minmag 2 1 -> 1 -dqmng026 minmag 2 2 -> 2 - --- extended zeros -dqmng030 minmag 0 0 -> 0 -dqmng031 minmag 0 -0 -> -0 -dqmng032 minmag 0 -0.0 -> -0.0 -dqmng033 minmag 0 0.0 -> 0.0 -dqmng034 minmag -0 0 -> -0 -dqmng035 minmag -0 -0 -> -0 -dqmng036 minmag -0 -0.0 -> -0 -dqmng037 minmag -0 0.0 -> -0 -dqmng038 minmag 0.0 0 -> 0.0 -dqmng039 minmag 0.0 -0 -> -0 -dqmng040 minmag 0.0 -0.0 -> -0.0 -dqmng041 minmag 0.0 0.0 -> 0.0 -dqmng042 minmag -0.0 0 -> -0.0 -dqmng043 minmag -0.0 -0 -> -0 -dqmng044 minmag -0.0 -0.0 -> -0.0 -dqmng045 minmag -0.0 0.0 -> -0.0 - -dqmng046 minmag 0E1 -0E1 -> -0E+1 -dqmng047 minmag -0E1 0E2 -> -0E+1 -dqmng048 minmag 0E2 0E1 -> 0E+1 -dqmng049 minmag 0E1 0E2 -> 0E+1 -dqmng050 minmag -0E3 -0E2 -> -0E+3 -dqmng051 minmag -0E2 -0E3 -> -0E+3 - --- Specials -dqmng090 minmag Inf -Inf -> -Infinity -dqmng091 minmag Inf -1000 -> -1000 -dqmng092 minmag Inf -1 -> -1 -dqmng093 minmag Inf -0 -> -0 -dqmng094 minmag Inf 0 -> 0 -dqmng095 minmag Inf 1 -> 1 -dqmng096 minmag Inf 1000 -> 1000 -dqmng097 minmag Inf Inf -> Infinity -dqmng098 minmag -1000 Inf -> -1000 -dqmng099 minmag -Inf Inf -> -Infinity -dqmng100 minmag -1 Inf -> -1 -dqmng101 minmag -0 Inf -> -0 -dqmng102 minmag 0 Inf -> 0 -dqmng103 minmag 1 Inf -> 1 -dqmng104 minmag 1000 Inf -> 1000 -dqmng105 minmag Inf Inf -> Infinity - -dqmng120 minmag -Inf -Inf -> -Infinity -dqmng121 minmag -Inf -1000 -> -1000 -dqmng122 minmag -Inf -1 -> -1 -dqmng123 minmag -Inf -0 -> -0 -dqmng124 minmag -Inf 0 -> 0 -dqmng125 minmag -Inf 1 -> 1 -dqmng126 minmag -Inf 1000 -> 1000 -dqmng127 minmag -Inf Inf -> -Infinity -dqmng128 minmag -Inf -Inf -> -Infinity -dqmng129 minmag -1000 -Inf -> -1000 -dqmng130 minmag -1 -Inf -> -1 -dqmng131 minmag -0 -Inf -> -0 -dqmng132 minmag 0 -Inf -> 0 -dqmng133 minmag 1 -Inf -> 1 -dqmng134 minmag 1000 -Inf -> 1000 -dqmng135 minmag Inf -Inf -> -Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -dqmng141 minmag NaN -Inf -> -Infinity -dqmng142 minmag NaN -1000 -> -1000 -dqmng143 minmag NaN -1 -> -1 -dqmng144 minmag NaN -0 -> -0 -dqmng145 minmag NaN 0 -> 0 -dqmng146 minmag NaN 1 -> 1 -dqmng147 minmag NaN 1000 -> 1000 -dqmng148 minmag NaN Inf -> Infinity -dqmng149 minmag NaN NaN -> NaN -dqmng150 minmag -Inf NaN -> -Infinity -dqmng151 minmag -1000 NaN -> -1000 -dqmng152 minmag -1 -NaN -> -1 -dqmng153 minmag -0 NaN -> -0 -dqmng154 minmag 0 -NaN -> 0 -dqmng155 minmag 1 NaN -> 1 -dqmng156 minmag 1000 NaN -> 1000 -dqmng157 minmag Inf NaN -> Infinity - -dqmng161 minmag sNaN -Inf -> NaN Invalid_operation -dqmng162 minmag sNaN -1000 -> NaN Invalid_operation -dqmng163 minmag sNaN -1 -> NaN Invalid_operation -dqmng164 minmag sNaN -0 -> NaN Invalid_operation -dqmng165 minmag -sNaN 0 -> -NaN Invalid_operation -dqmng166 minmag -sNaN 1 -> -NaN Invalid_operation -dqmng167 minmag sNaN 1000 -> NaN Invalid_operation -dqmng168 minmag sNaN NaN -> NaN Invalid_operation -dqmng169 minmag sNaN sNaN -> NaN Invalid_operation -dqmng170 minmag NaN sNaN -> NaN Invalid_operation -dqmng171 minmag -Inf sNaN -> NaN Invalid_operation -dqmng172 minmag -1000 sNaN -> NaN Invalid_operation -dqmng173 minmag -1 sNaN -> NaN Invalid_operation -dqmng174 minmag -0 sNaN -> NaN Invalid_operation -dqmng175 minmag 0 sNaN -> NaN Invalid_operation -dqmng176 minmag 1 sNaN -> NaN Invalid_operation -dqmng177 minmag 1000 sNaN -> NaN Invalid_operation -dqmng178 minmag Inf sNaN -> NaN Invalid_operation -dqmng179 minmag NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqmng181 minmag NaN9 -Inf -> -Infinity -dqmng182 minmag -NaN8 9990 -> 9990 -dqmng183 minmag NaN71 Inf -> Infinity - -dqmng184 minmag NaN1 NaN54 -> NaN1 -dqmng185 minmag NaN22 -NaN53 -> NaN22 -dqmng186 minmag -NaN3 NaN6 -> -NaN3 -dqmng187 minmag -NaN44 NaN7 -> -NaN44 - -dqmng188 minmag -Inf NaN41 -> -Infinity -dqmng189 minmag -9999 -NaN33 -> -9999 -dqmng190 minmag Inf NaN2 -> Infinity - -dqmng191 minmag sNaN99 -Inf -> NaN99 Invalid_operation -dqmng192 minmag sNaN98 -11 -> NaN98 Invalid_operation -dqmng193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation -dqmng194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation -dqmng195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation -dqmng196 minmag -Inf sNaN92 -> NaN92 Invalid_operation -dqmng197 minmag 088 sNaN91 -> NaN91 Invalid_operation -dqmng198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation -dqmng199 minmag NaN sNaN86 -> NaN86 Invalid_operation - --- old rounding checks -dqmng221 minmag -12345678000 1 -> 1 -dqmng222 minmag 1 -12345678000 -> 1 -dqmng223 minmag -1234567800 1 -> 1 -dqmng224 minmag 1 -1234567800 -> 1 -dqmng225 minmag -1234567890 1 -> 1 -dqmng226 minmag 1 -1234567890 -> 1 -dqmng227 minmag -1234567891 1 -> 1 -dqmng228 minmag 1 -1234567891 -> 1 -dqmng229 minmag -12345678901 1 -> 1 -dqmng230 minmag 1 -12345678901 -> 1 -dqmng231 minmag -1234567896 1 -> 1 -dqmng232 minmag 1 -1234567896 -> 1 -dqmng233 minmag 1234567891 1 -> 1 -dqmng234 minmag 1 1234567891 -> 1 -dqmng235 minmag 12345678901 1 -> 1 -dqmng236 minmag 1 12345678901 -> 1 -dqmng237 minmag 1234567896 1 -> 1 -dqmng238 minmag 1 1234567896 -> 1 - --- from examples -dqmng280 minmag '3' '2' -> '2' -dqmng281 minmag '-10' '3' -> '3' -dqmng282 minmag '1.0' '1' -> '1.0' -dqmng283 minmag '1' '1.0' -> '1.0' -dqmng284 minmag '7' 'NaN' -> '7' - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -dqmng401 minmag Inf 1.1 -> 1.1 -dqmng402 minmag 1.1 1 -> 1 -dqmng403 minmag 1 1.0 -> 1.0 -dqmng404 minmag 1.0 0.1 -> 0.1 -dqmng405 minmag 0.1 0.10 -> 0.10 -dqmng406 minmag 0.10 0.100 -> 0.100 -dqmng407 minmag 0.10 0 -> 0 -dqmng408 minmag 0 0.0 -> 0.0 -dqmng409 minmag 0.0 -0 -> -0 -dqmng410 minmag 0.0 -0.0 -> -0.0 -dqmng411 minmag 0.00 -0.0 -> -0.0 -dqmng412 minmag 0.0 -0.00 -> -0.00 -dqmng413 minmag 0 -0.0 -> -0.0 -dqmng414 minmag 0 -0 -> -0 -dqmng415 minmag -0.0 -0 -> -0 -dqmng416 minmag -0 -0.100 -> -0 -dqmng417 minmag -0.100 -0.10 -> -0.10 -dqmng418 minmag -0.10 -0.1 -> -0.1 -dqmng419 minmag -0.1 -1.0 -> -0.1 -dqmng420 minmag -1.0 -1 -> -1 -dqmng421 minmag -1 -1.1 -> -1 -dqmng423 minmag -1.1 -Inf -> -1.1 --- same with operands reversed -dqmng431 minmag 1.1 Inf -> 1.1 -dqmng432 minmag 1 1.1 -> 1 -dqmng433 minmag 1.0 1 -> 1.0 -dqmng434 minmag 0.1 1.0 -> 0.1 -dqmng435 minmag 0.10 0.1 -> 0.10 -dqmng436 minmag 0.100 0.10 -> 0.100 -dqmng437 minmag 0 0.10 -> 0 -dqmng438 minmag 0.0 0 -> 0.0 -dqmng439 minmag -0 0.0 -> -0 -dqmng440 minmag -0.0 0.0 -> -0.0 -dqmng441 minmag -0.0 0.00 -> -0.0 -dqmng442 minmag -0.00 0.0 -> -0.00 -dqmng443 minmag -0.0 0 -> -0.0 -dqmng444 minmag -0 0 -> -0 -dqmng445 minmag -0 -0.0 -> -0 -dqmng446 minmag -0.100 -0 -> -0 -dqmng447 minmag -0.10 -0.100 -> -0.10 -dqmng448 minmag -0.1 -0.10 -> -0.1 -dqmng449 minmag -1.0 -0.1 -> -0.1 -dqmng450 minmag -1 -1.0 -> -1 -dqmng451 minmag -1.1 -1 -> -1 -dqmng453 minmag -Inf -1.1 -> -1.1 --- largies -dqmng460 minmag 1000 1E+3 -> 1000 -dqmng461 minmag 1E+3 1000 -> 1000 -dqmng462 minmag 1000 -1E+3 -> -1E+3 -dqmng463 minmag 1E+3 -384 -> -384 -dqmng464 minmag -384 1E+3 -> -384 -dqmng465 minmag -1E+3 1000 -> -1E+3 -dqmng466 minmag -384 -1E+3 -> -384 -dqmng467 minmag -1E+3 -384 -> -384 - --- subnormals -dqmng510 minmag 1.00E-6143 0 -> 0 -dqmng511 minmag 0.1E-6143 0 -> 0 -dqmng512 minmag 0.10E-6143 0 -> 0 -dqmng513 minmag 0.100E-6143 0 -> 0 -dqmng514 minmag 0.01E-6143 0 -> 0 -dqmng515 minmag 0.999E-6143 0 -> 0 -dqmng516 minmag 0.099E-6143 0 -> 0 -dqmng517 minmag 0.009E-6143 0 -> 0 -dqmng518 minmag 0.001E-6143 0 -> 0 -dqmng519 minmag 0.0009E-6143 0 -> 0 -dqmng520 minmag 0.0001E-6143 0 -> 0 - -dqmng530 minmag -1.00E-6143 0 -> 0 -dqmng531 minmag -0.1E-6143 0 -> 0 -dqmng532 minmag -0.10E-6143 0 -> 0 -dqmng533 minmag -0.100E-6143 0 -> 0 -dqmng534 minmag -0.01E-6143 0 -> 0 -dqmng535 minmag -0.999E-6143 0 -> 0 -dqmng536 minmag -0.099E-6143 0 -> 0 -dqmng537 minmag -0.009E-6143 0 -> 0 -dqmng538 minmag -0.001E-6143 0 -> 0 -dqmng539 minmag -0.0009E-6143 0 -> 0 -dqmng540 minmag -0.0001E-6143 0 -> 0 - - --- Null tests -dqmng900 minmag 10 # -> NaN Invalid_operation -dqmng901 minmag # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqMinMag.decTest -- decQuad minnummag -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqmng001 minmag -2 -2 -> -2 +dqmng002 minmag -2 -1 -> -1 +dqmng003 minmag -2 0 -> 0 +dqmng004 minmag -2 1 -> 1 +dqmng005 minmag -2 2 -> -2 +dqmng006 minmag -1 -2 -> -1 +dqmng007 minmag -1 -1 -> -1 +dqmng008 minmag -1 0 -> 0 +dqmng009 minmag -1 1 -> -1 +dqmng010 minmag -1 2 -> -1 +dqmng011 minmag 0 -2 -> 0 +dqmng012 minmag 0 -1 -> 0 +dqmng013 minmag 0 0 -> 0 +dqmng014 minmag 0 1 -> 0 +dqmng015 minmag 0 2 -> 0 +dqmng016 minmag 1 -2 -> 1 +dqmng017 minmag 1 -1 -> -1 +dqmng018 minmag 1 0 -> 0 +dqmng019 minmag 1 1 -> 1 +dqmng020 minmag 1 2 -> 1 +dqmng021 minmag 2 -2 -> -2 +dqmng022 minmag 2 -1 -> -1 +dqmng023 minmag 2 0 -> 0 +dqmng025 minmag 2 1 -> 1 +dqmng026 minmag 2 2 -> 2 + +-- extended zeros +dqmng030 minmag 0 0 -> 0 +dqmng031 minmag 0 -0 -> -0 +dqmng032 minmag 0 -0.0 -> -0.0 +dqmng033 minmag 0 0.0 -> 0.0 +dqmng034 minmag -0 0 -> -0 +dqmng035 minmag -0 -0 -> -0 +dqmng036 minmag -0 -0.0 -> -0 +dqmng037 minmag -0 0.0 -> -0 +dqmng038 minmag 0.0 0 -> 0.0 +dqmng039 minmag 0.0 -0 -> -0 +dqmng040 minmag 0.0 -0.0 -> -0.0 +dqmng041 minmag 0.0 0.0 -> 0.0 +dqmng042 minmag -0.0 0 -> -0.0 +dqmng043 minmag -0.0 -0 -> -0 +dqmng044 minmag -0.0 -0.0 -> -0.0 +dqmng045 minmag -0.0 0.0 -> -0.0 + +dqmng046 minmag 0E1 -0E1 -> -0E+1 +dqmng047 minmag -0E1 0E2 -> -0E+1 +dqmng048 minmag 0E2 0E1 -> 0E+1 +dqmng049 minmag 0E1 0E2 -> 0E+1 +dqmng050 minmag -0E3 -0E2 -> -0E+3 +dqmng051 minmag -0E2 -0E3 -> -0E+3 + +-- Specials +dqmng090 minmag Inf -Inf -> -Infinity +dqmng091 minmag Inf -1000 -> -1000 +dqmng092 minmag Inf -1 -> -1 +dqmng093 minmag Inf -0 -> -0 +dqmng094 minmag Inf 0 -> 0 +dqmng095 minmag Inf 1 -> 1 +dqmng096 minmag Inf 1000 -> 1000 +dqmng097 minmag Inf Inf -> Infinity +dqmng098 minmag -1000 Inf -> -1000 +dqmng099 minmag -Inf Inf -> -Infinity +dqmng100 minmag -1 Inf -> -1 +dqmng101 minmag -0 Inf -> -0 +dqmng102 minmag 0 Inf -> 0 +dqmng103 minmag 1 Inf -> 1 +dqmng104 minmag 1000 Inf -> 1000 +dqmng105 minmag Inf Inf -> Infinity + +dqmng120 minmag -Inf -Inf -> -Infinity +dqmng121 minmag -Inf -1000 -> -1000 +dqmng122 minmag -Inf -1 -> -1 +dqmng123 minmag -Inf -0 -> -0 +dqmng124 minmag -Inf 0 -> 0 +dqmng125 minmag -Inf 1 -> 1 +dqmng126 minmag -Inf 1000 -> 1000 +dqmng127 minmag -Inf Inf -> -Infinity +dqmng128 minmag -Inf -Inf -> -Infinity +dqmng129 minmag -1000 -Inf -> -1000 +dqmng130 minmag -1 -Inf -> -1 +dqmng131 minmag -0 -Inf -> -0 +dqmng132 minmag 0 -Inf -> 0 +dqmng133 minmag 1 -Inf -> 1 +dqmng134 minmag 1000 -Inf -> 1000 +dqmng135 minmag Inf -Inf -> -Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +dqmng141 minmag NaN -Inf -> -Infinity +dqmng142 minmag NaN -1000 -> -1000 +dqmng143 minmag NaN -1 -> -1 +dqmng144 minmag NaN -0 -> -0 +dqmng145 minmag NaN 0 -> 0 +dqmng146 minmag NaN 1 -> 1 +dqmng147 minmag NaN 1000 -> 1000 +dqmng148 minmag NaN Inf -> Infinity +dqmng149 minmag NaN NaN -> NaN +dqmng150 minmag -Inf NaN -> -Infinity +dqmng151 minmag -1000 NaN -> -1000 +dqmng152 minmag -1 -NaN -> -1 +dqmng153 minmag -0 NaN -> -0 +dqmng154 minmag 0 -NaN -> 0 +dqmng155 minmag 1 NaN -> 1 +dqmng156 minmag 1000 NaN -> 1000 +dqmng157 minmag Inf NaN -> Infinity + +dqmng161 minmag sNaN -Inf -> NaN Invalid_operation +dqmng162 minmag sNaN -1000 -> NaN Invalid_operation +dqmng163 minmag sNaN -1 -> NaN Invalid_operation +dqmng164 minmag sNaN -0 -> NaN Invalid_operation +dqmng165 minmag -sNaN 0 -> -NaN Invalid_operation +dqmng166 minmag -sNaN 1 -> -NaN Invalid_operation +dqmng167 minmag sNaN 1000 -> NaN Invalid_operation +dqmng168 minmag sNaN NaN -> NaN Invalid_operation +dqmng169 minmag sNaN sNaN -> NaN Invalid_operation +dqmng170 minmag NaN sNaN -> NaN Invalid_operation +dqmng171 minmag -Inf sNaN -> NaN Invalid_operation +dqmng172 minmag -1000 sNaN -> NaN Invalid_operation +dqmng173 minmag -1 sNaN -> NaN Invalid_operation +dqmng174 minmag -0 sNaN -> NaN Invalid_operation +dqmng175 minmag 0 sNaN -> NaN Invalid_operation +dqmng176 minmag 1 sNaN -> NaN Invalid_operation +dqmng177 minmag 1000 sNaN -> NaN Invalid_operation +dqmng178 minmag Inf sNaN -> NaN Invalid_operation +dqmng179 minmag NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqmng181 minmag NaN9 -Inf -> -Infinity +dqmng182 minmag -NaN8 9990 -> 9990 +dqmng183 minmag NaN71 Inf -> Infinity + +dqmng184 minmag NaN1 NaN54 -> NaN1 +dqmng185 minmag NaN22 -NaN53 -> NaN22 +dqmng186 minmag -NaN3 NaN6 -> -NaN3 +dqmng187 minmag -NaN44 NaN7 -> -NaN44 + +dqmng188 minmag -Inf NaN41 -> -Infinity +dqmng189 minmag -9999 -NaN33 -> -9999 +dqmng190 minmag Inf NaN2 -> Infinity + +dqmng191 minmag sNaN99 -Inf -> NaN99 Invalid_operation +dqmng192 minmag sNaN98 -11 -> NaN98 Invalid_operation +dqmng193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation +dqmng194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation +dqmng195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation +dqmng196 minmag -Inf sNaN92 -> NaN92 Invalid_operation +dqmng197 minmag 088 sNaN91 -> NaN91 Invalid_operation +dqmng198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation +dqmng199 minmag NaN sNaN86 -> NaN86 Invalid_operation + +-- old rounding checks +dqmng221 minmag -12345678000 1 -> 1 +dqmng222 minmag 1 -12345678000 -> 1 +dqmng223 minmag -1234567800 1 -> 1 +dqmng224 minmag 1 -1234567800 -> 1 +dqmng225 minmag -1234567890 1 -> 1 +dqmng226 minmag 1 -1234567890 -> 1 +dqmng227 minmag -1234567891 1 -> 1 +dqmng228 minmag 1 -1234567891 -> 1 +dqmng229 minmag -12345678901 1 -> 1 +dqmng230 minmag 1 -12345678901 -> 1 +dqmng231 minmag -1234567896 1 -> 1 +dqmng232 minmag 1 -1234567896 -> 1 +dqmng233 minmag 1234567891 1 -> 1 +dqmng234 minmag 1 1234567891 -> 1 +dqmng235 minmag 12345678901 1 -> 1 +dqmng236 minmag 1 12345678901 -> 1 +dqmng237 minmag 1234567896 1 -> 1 +dqmng238 minmag 1 1234567896 -> 1 + +-- from examples +dqmng280 minmag '3' '2' -> '2' +dqmng281 minmag '-10' '3' -> '3' +dqmng282 minmag '1.0' '1' -> '1.0' +dqmng283 minmag '1' '1.0' -> '1.0' +dqmng284 minmag '7' 'NaN' -> '7' + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +dqmng401 minmag Inf 1.1 -> 1.1 +dqmng402 minmag 1.1 1 -> 1 +dqmng403 minmag 1 1.0 -> 1.0 +dqmng404 minmag 1.0 0.1 -> 0.1 +dqmng405 minmag 0.1 0.10 -> 0.10 +dqmng406 minmag 0.10 0.100 -> 0.100 +dqmng407 minmag 0.10 0 -> 0 +dqmng408 minmag 0 0.0 -> 0.0 +dqmng409 minmag 0.0 -0 -> -0 +dqmng410 minmag 0.0 -0.0 -> -0.0 +dqmng411 minmag 0.00 -0.0 -> -0.0 +dqmng412 minmag 0.0 -0.00 -> -0.00 +dqmng413 minmag 0 -0.0 -> -0.0 +dqmng414 minmag 0 -0 -> -0 +dqmng415 minmag -0.0 -0 -> -0 +dqmng416 minmag -0 -0.100 -> -0 +dqmng417 minmag -0.100 -0.10 -> -0.10 +dqmng418 minmag -0.10 -0.1 -> -0.1 +dqmng419 minmag -0.1 -1.0 -> -0.1 +dqmng420 minmag -1.0 -1 -> -1 +dqmng421 minmag -1 -1.1 -> -1 +dqmng423 minmag -1.1 -Inf -> -1.1 +-- same with operands reversed +dqmng431 minmag 1.1 Inf -> 1.1 +dqmng432 minmag 1 1.1 -> 1 +dqmng433 minmag 1.0 1 -> 1.0 +dqmng434 minmag 0.1 1.0 -> 0.1 +dqmng435 minmag 0.10 0.1 -> 0.10 +dqmng436 minmag 0.100 0.10 -> 0.100 +dqmng437 minmag 0 0.10 -> 0 +dqmng438 minmag 0.0 0 -> 0.0 +dqmng439 minmag -0 0.0 -> -0 +dqmng440 minmag -0.0 0.0 -> -0.0 +dqmng441 minmag -0.0 0.00 -> -0.0 +dqmng442 minmag -0.00 0.0 -> -0.00 +dqmng443 minmag -0.0 0 -> -0.0 +dqmng444 minmag -0 0 -> -0 +dqmng445 minmag -0 -0.0 -> -0 +dqmng446 minmag -0.100 -0 -> -0 +dqmng447 minmag -0.10 -0.100 -> -0.10 +dqmng448 minmag -0.1 -0.10 -> -0.1 +dqmng449 minmag -1.0 -0.1 -> -0.1 +dqmng450 minmag -1 -1.0 -> -1 +dqmng451 minmag -1.1 -1 -> -1 +dqmng453 minmag -Inf -1.1 -> -1.1 +-- largies +dqmng460 minmag 1000 1E+3 -> 1000 +dqmng461 minmag 1E+3 1000 -> 1000 +dqmng462 minmag 1000 -1E+3 -> -1E+3 +dqmng463 minmag 1E+3 -384 -> -384 +dqmng464 minmag -384 1E+3 -> -384 +dqmng465 minmag -1E+3 1000 -> -1E+3 +dqmng466 minmag -384 -1E+3 -> -384 +dqmng467 minmag -1E+3 -384 -> -384 + +-- subnormals +dqmng510 minmag 1.00E-6143 0 -> 0 +dqmng511 minmag 0.1E-6143 0 -> 0 +dqmng512 minmag 0.10E-6143 0 -> 0 +dqmng513 minmag 0.100E-6143 0 -> 0 +dqmng514 minmag 0.01E-6143 0 -> 0 +dqmng515 minmag 0.999E-6143 0 -> 0 +dqmng516 minmag 0.099E-6143 0 -> 0 +dqmng517 minmag 0.009E-6143 0 -> 0 +dqmng518 minmag 0.001E-6143 0 -> 0 +dqmng519 minmag 0.0009E-6143 0 -> 0 +dqmng520 minmag 0.0001E-6143 0 -> 0 + +dqmng530 minmag -1.00E-6143 0 -> 0 +dqmng531 minmag -0.1E-6143 0 -> 0 +dqmng532 minmag -0.10E-6143 0 -> 0 +dqmng533 minmag -0.100E-6143 0 -> 0 +dqmng534 minmag -0.01E-6143 0 -> 0 +dqmng535 minmag -0.999E-6143 0 -> 0 +dqmng536 minmag -0.099E-6143 0 -> 0 +dqmng537 minmag -0.009E-6143 0 -> 0 +dqmng538 minmag -0.001E-6143 0 -> 0 +dqmng539 minmag -0.0009E-6143 0 -> 0 +dqmng540 minmag -0.0001E-6143 0 -> 0 + + +-- Null tests +dqmng900 minmag 10 # -> NaN Invalid_operation +dqmng901 minmag # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqMinus.decTest b/Lib/test/decimaltestdata/dqMinus.decTest index 7a00779..02e462e 100644 --- a/Lib/test/decimaltestdata/dqMinus.decTest +++ b/Lib/test/decimaltestdata/dqMinus.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- dqMinus.decTest -- decQuad 0-x -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check -dqmns001 minus +7.50 -> -7.50 - --- Infinities -dqmns011 minus Infinity -> -Infinity -dqmns012 minus -Infinity -> Infinity - --- NaNs, 0 payload -dqmns021 minus NaN -> NaN -dqmns022 minus -NaN -> -NaN -dqmns023 minus sNaN -> NaN Invalid_operation -dqmns024 minus -sNaN -> -NaN Invalid_operation - --- NaNs, non-0 payload -dqmns031 minus NaN13 -> NaN13 -dqmns032 minus -NaN13 -> -NaN13 -dqmns033 minus sNaN13 -> NaN13 Invalid_operation -dqmns034 minus -sNaN13 -> -NaN13 Invalid_operation -dqmns035 minus NaN70 -> NaN70 -dqmns036 minus -NaN70 -> -NaN70 -dqmns037 minus sNaN101 -> NaN101 Invalid_operation -dqmns038 minus -sNaN101 -> -NaN101 Invalid_operation - --- finites -dqmns101 minus 7 -> -7 -dqmns102 minus -7 -> 7 -dqmns103 minus 75 -> -75 -dqmns104 minus -75 -> 75 -dqmns105 minus 7.50 -> -7.50 -dqmns106 minus -7.50 -> 7.50 -dqmns107 minus 7.500 -> -7.500 -dqmns108 minus -7.500 -> 7.500 - --- zeros -dqmns111 minus 0 -> 0 -dqmns112 minus -0 -> 0 -dqmns113 minus 0E+4 -> 0E+4 -dqmns114 minus -0E+4 -> 0E+4 -dqmns115 minus 0.0000 -> 0.0000 -dqmns116 minus -0.0000 -> 0.0000 -dqmns117 minus 0E-141 -> 0E-141 -dqmns118 minus -0E-141 -> 0E-141 - --- full coefficients, alternating bits -dqmns121 minus 2682682682682682682682682682682682 -> -2682682682682682682682682682682682 -dqmns122 minus -2682682682682682682682682682682682 -> 2682682682682682682682682682682682 -dqmns123 minus 1341341341341341341341341341341341 -> -1341341341341341341341341341341341 -dqmns124 minus -1341341341341341341341341341341341 -> 1341341341341341341341341341341341 - --- Nmax, Nmin, Ntiny -dqmns131 minus 9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 -dqmns132 minus 1E-6143 -> -1E-6143 -dqmns133 minus 1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 -dqmns134 minus 1E-6176 -> -1E-6176 Subnormal - -dqmns135 minus -1E-6176 -> 1E-6176 Subnormal -dqmns136 minus -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqmns137 minus -1E-6143 -> 1E-6143 -dqmns138 minus -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +------------------------------------------------------------------------ +-- dqMinus.decTest -- decQuad 0-x -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check +dqmns001 minus +7.50 -> -7.50 + +-- Infinities +dqmns011 minus Infinity -> -Infinity +dqmns012 minus -Infinity -> Infinity + +-- NaNs, 0 payload +dqmns021 minus NaN -> NaN +dqmns022 minus -NaN -> -NaN +dqmns023 minus sNaN -> NaN Invalid_operation +dqmns024 minus -sNaN -> -NaN Invalid_operation + +-- NaNs, non-0 payload +dqmns031 minus NaN13 -> NaN13 +dqmns032 minus -NaN13 -> -NaN13 +dqmns033 minus sNaN13 -> NaN13 Invalid_operation +dqmns034 minus -sNaN13 -> -NaN13 Invalid_operation +dqmns035 minus NaN70 -> NaN70 +dqmns036 minus -NaN70 -> -NaN70 +dqmns037 minus sNaN101 -> NaN101 Invalid_operation +dqmns038 minus -sNaN101 -> -NaN101 Invalid_operation + +-- finites +dqmns101 minus 7 -> -7 +dqmns102 minus -7 -> 7 +dqmns103 minus 75 -> -75 +dqmns104 minus -75 -> 75 +dqmns105 minus 7.50 -> -7.50 +dqmns106 minus -7.50 -> 7.50 +dqmns107 minus 7.500 -> -7.500 +dqmns108 minus -7.500 -> 7.500 + +-- zeros +dqmns111 minus 0 -> 0 +dqmns112 minus -0 -> 0 +dqmns113 minus 0E+4 -> 0E+4 +dqmns114 minus -0E+4 -> 0E+4 +dqmns115 minus 0.0000 -> 0.0000 +dqmns116 minus -0.0000 -> 0.0000 +dqmns117 minus 0E-141 -> 0E-141 +dqmns118 minus -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +dqmns121 minus 2682682682682682682682682682682682 -> -2682682682682682682682682682682682 +dqmns122 minus -2682682682682682682682682682682682 -> 2682682682682682682682682682682682 +dqmns123 minus 1341341341341341341341341341341341 -> -1341341341341341341341341341341341 +dqmns124 minus -1341341341341341341341341341341341 -> 1341341341341341341341341341341341 + +-- Nmax, Nmin, Ntiny +dqmns131 minus 9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 +dqmns132 minus 1E-6143 -> -1E-6143 +dqmns133 minus 1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 +dqmns134 minus 1E-6176 -> -1E-6176 Subnormal + +dqmns135 minus -1E-6176 -> 1E-6176 Subnormal +dqmns136 minus -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqmns137 minus -1E-6143 -> 1E-6143 +dqmns138 minus -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 diff --git a/Lib/test/decimaltestdata/dqMultiply.decTest b/Lib/test/decimaltestdata/dqMultiply.decTest index 676c1f5..8387a85 100644 --- a/Lib/test/decimaltestdata/dqMultiply.decTest +++ b/Lib/test/decimaltestdata/dqMultiply.decTest @@ -1,589 +1,589 @@ ------------------------------------------------------------------------- --- dqMultiply.decTest -- decQuad multiplication -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests are for decQuads only; all arguments are --- representable in a decQuad -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqmul000 multiply 2 2 -> 4 -dqmul001 multiply 2 3 -> 6 -dqmul002 multiply 5 1 -> 5 -dqmul003 multiply 5 2 -> 10 -dqmul004 multiply 1.20 2 -> 2.40 -dqmul005 multiply 1.20 0 -> 0.00 -dqmul006 multiply 1.20 -2 -> -2.40 -dqmul007 multiply -1.20 2 -> -2.40 -dqmul008 multiply -1.20 0 -> -0.00 -dqmul009 multiply -1.20 -2 -> 2.40 -dqmul010 multiply 5.09 7.1 -> 36.139 -dqmul011 multiply 2.5 4 -> 10.0 -dqmul012 multiply 2.50 4 -> 10.00 -dqmul013 multiply 1.23456789 1.0000000000000000000000000000 -> 1.234567890000000000000000000000000 Rounded -dqmul015 multiply 2.50 4 -> 10.00 -dqmul016 multiply 9.99999999999999999 9.99999999999999999 -> 99.99999999999999980000000000000000 Inexact Rounded -dqmul017 multiply 9.99999999999999999 -9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded -dqmul018 multiply -9.99999999999999999 9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded -dqmul019 multiply -9.99999999999999999 -9.99999999999999999 -> 99.99999999999999980000000000000000 Inexact Rounded - --- zeros, etc. -dqmul021 multiply 0 0 -> 0 -dqmul022 multiply 0 -0 -> -0 -dqmul023 multiply -0 0 -> -0 -dqmul024 multiply -0 -0 -> 0 -dqmul025 multiply -0.0 -0.0 -> 0.00 -dqmul026 multiply -0.0 -0.0 -> 0.00 -dqmul027 multiply -0.0 -0.0 -> 0.00 -dqmul028 multiply -0.0 -0.0 -> 0.00 -dqmul030 multiply 5.00 1E-3 -> 0.00500 -dqmul031 multiply 00.00 0.000 -> 0.00000 -dqmul032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0 -dqmul033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0 -dqmul034 multiply -5.00 1E-3 -> -0.00500 -dqmul035 multiply -00.00 0.000 -> -0.00000 -dqmul036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0 -dqmul037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0 -dqmul038 multiply 5.00 -1E-3 -> -0.00500 -dqmul039 multiply 00.00 -0.000 -> -0.00000 -dqmul040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0 -dqmul041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0 -dqmul042 multiply -5.00 -1E-3 -> 0.00500 -dqmul043 multiply -00.00 -0.000 -> 0.00000 -dqmul044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0 -dqmul045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0 - --- examples from decarith -dqmul050 multiply 1.20 3 -> 3.60 -dqmul051 multiply 7 3 -> 21 -dqmul052 multiply 0.9 0.8 -> 0.72 -dqmul053 multiply 0.9 -0 -> -0.0 -dqmul054 multiply 654321 654321 -> 428135971041 - -dqmul060 multiply 123.45 1e7 -> 1.2345E+9 -dqmul061 multiply 123.45 1e8 -> 1.2345E+10 -dqmul062 multiply 123.45 1e+9 -> 1.2345E+11 -dqmul063 multiply 123.45 1e10 -> 1.2345E+12 -dqmul064 multiply 123.45 1e11 -> 1.2345E+13 -dqmul065 multiply 123.45 1e12 -> 1.2345E+14 -dqmul066 multiply 123.45 1e13 -> 1.2345E+15 - - --- test some intermediate lengths --- 1234567890123456 -dqmul080 multiply 0.1 1230123456456789 -> 123012345645678.9 -dqmul084 multiply 0.1 1230123456456789 -> 123012345645678.9 -dqmul090 multiply 1230123456456789 0.1 -> 123012345645678.9 -dqmul094 multiply 1230123456456789 0.1 -> 123012345645678.9 - --- test some more edge cases and carries -dqmul101 multiply 9 9 -> 81 -dqmul102 multiply 9 90 -> 810 -dqmul103 multiply 9 900 -> 8100 -dqmul104 multiply 9 9000 -> 81000 -dqmul105 multiply 9 90000 -> 810000 -dqmul106 multiply 9 900000 -> 8100000 -dqmul107 multiply 9 9000000 -> 81000000 -dqmul108 multiply 9 90000000 -> 810000000 -dqmul109 multiply 9 900000000 -> 8100000000 -dqmul110 multiply 9 9000000000 -> 81000000000 -dqmul111 multiply 9 90000000000 -> 810000000000 -dqmul112 multiply 9 900000000000 -> 8100000000000 -dqmul113 multiply 9 9000000000000 -> 81000000000000 -dqmul114 multiply 9 90000000000000 -> 810000000000000 -dqmul115 multiply 9 900000000000000 -> 8100000000000000 ---dqmul116 multiply 9 9000000000000000 -> 81000000000000000 ---dqmul117 multiply 9 90000000000000000 -> 810000000000000000 ---dqmul118 multiply 9 900000000000000000 -> 8100000000000000000 ---dqmul119 multiply 9 9000000000000000000 -> 81000000000000000000 ---dqmul120 multiply 9 90000000000000000000 -> 810000000000000000000 ---dqmul121 multiply 9 900000000000000000000 -> 8100000000000000000000 ---dqmul122 multiply 9 9000000000000000000000 -> 81000000000000000000000 ---dqmul123 multiply 9 90000000000000000000000 -> 810000000000000000000000 --- test some more edge cases without carries -dqmul131 multiply 3 3 -> 9 -dqmul132 multiply 3 30 -> 90 -dqmul133 multiply 3 300 -> 900 -dqmul134 multiply 3 3000 -> 9000 -dqmul135 multiply 3 30000 -> 90000 -dqmul136 multiply 3 300000 -> 900000 -dqmul137 multiply 3 3000000 -> 9000000 -dqmul138 multiply 3 30000000 -> 90000000 -dqmul139 multiply 3 300000000 -> 900000000 -dqmul140 multiply 3 3000000000 -> 9000000000 -dqmul141 multiply 3 30000000000 -> 90000000000 -dqmul142 multiply 3 300000000000 -> 900000000000 -dqmul143 multiply 3 3000000000000 -> 9000000000000 -dqmul144 multiply 3 30000000000000 -> 90000000000000 -dqmul145 multiply 3 300000000000000 -> 900000000000000 -dqmul146 multiply 3 3000000000000000 -> 9000000000000000 -dqmul147 multiply 3 30000000000000000 -> 90000000000000000 -dqmul148 multiply 3 300000000000000000 -> 900000000000000000 -dqmul149 multiply 3 3000000000000000000 -> 9000000000000000000 -dqmul150 multiply 3 30000000000000000000 -> 90000000000000000000 -dqmul151 multiply 3 300000000000000000000 -> 900000000000000000000 -dqmul152 multiply 3 3000000000000000000000 -> 9000000000000000000000 -dqmul153 multiply 3 30000000000000000000000 -> 90000000000000000000000 - -dqmul263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928296 Inexact Rounded - --- test some edge cases with exact rounding -dqmul301 multiply 900000000000000000 9 -> 8100000000000000000 -dqmul302 multiply 900000000000000000 90 -> 81000000000000000000 -dqmul303 multiply 900000000000000000 900 -> 810000000000000000000 -dqmul304 multiply 900000000000000000 9000 -> 8100000000000000000000 -dqmul305 multiply 900000000000000000 90000 -> 81000000000000000000000 -dqmul306 multiply 900000000000000000 900000 -> 810000000000000000000000 -dqmul307 multiply 900000000000000000 9000000 -> 8100000000000000000000000 -dqmul308 multiply 900000000000000000 90000000 -> 81000000000000000000000000 -dqmul309 multiply 900000000000000000 900000000 -> 810000000000000000000000000 -dqmul310 multiply 900000000000000000 9000000000 -> 8100000000000000000000000000 -dqmul311 multiply 900000000000000000 90000000000 -> 81000000000000000000000000000 -dqmul312 multiply 900000000000000000 900000000000 -> 810000000000000000000000000000 -dqmul313 multiply 900000000000000000 9000000000000 -> 8100000000000000000000000000000 -dqmul314 multiply 900000000000000000 90000000000000 -> 81000000000000000000000000000000 -dqmul315 multiply 900000000000000000 900000000000000 -> 810000000000000000000000000000000 -dqmul316 multiply 900000000000000000 9000000000000000 -> 8100000000000000000000000000000000 -dqmul317 multiply 9000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+34 Rounded -dqmul318 multiply 90000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+35 Rounded -dqmul319 multiply 900000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+36 Rounded -dqmul320 multiply 9000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+37 Rounded -dqmul321 multiply 90000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+38 Rounded -dqmul322 multiply 900000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+39 Rounded -dqmul323 multiply 9000000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+40 Rounded - --- tryzeros cases -dqmul504 multiply 0E-4260 1000E-4260 -> 0E-6176 Clamped -dqmul505 multiply 100E+4260 0E+4260 -> 0E+6111 Clamped - --- mixed with zeros -dqmul541 multiply 0 -1 -> -0 -dqmul542 multiply -0 -1 -> 0 -dqmul543 multiply 0 1 -> 0 -dqmul544 multiply -0 1 -> -0 -dqmul545 multiply -1 0 -> -0 -dqmul546 multiply -1 -0 -> 0 -dqmul547 multiply 1 0 -> 0 -dqmul548 multiply 1 -0 -> -0 - -dqmul551 multiply 0.0 -1 -> -0.0 -dqmul552 multiply -0.0 -1 -> 0.0 -dqmul553 multiply 0.0 1 -> 0.0 -dqmul554 multiply -0.0 1 -> -0.0 -dqmul555 multiply -1.0 0 -> -0.0 -dqmul556 multiply -1.0 -0 -> 0.0 -dqmul557 multiply 1.0 0 -> 0.0 -dqmul558 multiply 1.0 -0 -> -0.0 - -dqmul561 multiply 0 -1.0 -> -0.0 -dqmul562 multiply -0 -1.0 -> 0.0 -dqmul563 multiply 0 1.0 -> 0.0 -dqmul564 multiply -0 1.0 -> -0.0 -dqmul565 multiply -1 0.0 -> -0.0 -dqmul566 multiply -1 -0.0 -> 0.0 -dqmul567 multiply 1 0.0 -> 0.0 -dqmul568 multiply 1 -0.0 -> -0.0 - -dqmul571 multiply 0.0 -1.0 -> -0.00 -dqmul572 multiply -0.0 -1.0 -> 0.00 -dqmul573 multiply 0.0 1.0 -> 0.00 -dqmul574 multiply -0.0 1.0 -> -0.00 -dqmul575 multiply -1.0 0.0 -> -0.00 -dqmul576 multiply -1.0 -0.0 -> 0.00 -dqmul577 multiply 1.0 0.0 -> 0.00 -dqmul578 multiply 1.0 -0.0 -> -0.00 - - --- Specials -dqmul580 multiply Inf -Inf -> -Infinity -dqmul581 multiply Inf -1000 -> -Infinity -dqmul582 multiply Inf -1 -> -Infinity -dqmul583 multiply Inf -0 -> NaN Invalid_operation -dqmul584 multiply Inf 0 -> NaN Invalid_operation -dqmul585 multiply Inf 1 -> Infinity -dqmul586 multiply Inf 1000 -> Infinity -dqmul587 multiply Inf Inf -> Infinity -dqmul588 multiply -1000 Inf -> -Infinity -dqmul589 multiply -Inf Inf -> -Infinity -dqmul590 multiply -1 Inf -> -Infinity -dqmul591 multiply -0 Inf -> NaN Invalid_operation -dqmul592 multiply 0 Inf -> NaN Invalid_operation -dqmul593 multiply 1 Inf -> Infinity -dqmul594 multiply 1000 Inf -> Infinity -dqmul595 multiply Inf Inf -> Infinity - -dqmul600 multiply -Inf -Inf -> Infinity -dqmul601 multiply -Inf -1000 -> Infinity -dqmul602 multiply -Inf -1 -> Infinity -dqmul603 multiply -Inf -0 -> NaN Invalid_operation -dqmul604 multiply -Inf 0 -> NaN Invalid_operation -dqmul605 multiply -Inf 1 -> -Infinity -dqmul606 multiply -Inf 1000 -> -Infinity -dqmul607 multiply -Inf Inf -> -Infinity -dqmul608 multiply -1000 Inf -> -Infinity -dqmul609 multiply -Inf -Inf -> Infinity -dqmul610 multiply -1 -Inf -> Infinity -dqmul611 multiply -0 -Inf -> NaN Invalid_operation -dqmul612 multiply 0 -Inf -> NaN Invalid_operation -dqmul613 multiply 1 -Inf -> -Infinity -dqmul614 multiply 1000 -Inf -> -Infinity -dqmul615 multiply Inf -Inf -> -Infinity - -dqmul621 multiply NaN -Inf -> NaN -dqmul622 multiply NaN -1000 -> NaN -dqmul623 multiply NaN -1 -> NaN -dqmul624 multiply NaN -0 -> NaN -dqmul625 multiply NaN 0 -> NaN -dqmul626 multiply NaN 1 -> NaN -dqmul627 multiply NaN 1000 -> NaN -dqmul628 multiply NaN Inf -> NaN -dqmul629 multiply NaN NaN -> NaN -dqmul630 multiply -Inf NaN -> NaN -dqmul631 multiply -1000 NaN -> NaN -dqmul632 multiply -1 NaN -> NaN -dqmul633 multiply -0 NaN -> NaN -dqmul634 multiply 0 NaN -> NaN -dqmul635 multiply 1 NaN -> NaN -dqmul636 multiply 1000 NaN -> NaN -dqmul637 multiply Inf NaN -> NaN - -dqmul641 multiply sNaN -Inf -> NaN Invalid_operation -dqmul642 multiply sNaN -1000 -> NaN Invalid_operation -dqmul643 multiply sNaN -1 -> NaN Invalid_operation -dqmul644 multiply sNaN -0 -> NaN Invalid_operation -dqmul645 multiply sNaN 0 -> NaN Invalid_operation -dqmul646 multiply sNaN 1 -> NaN Invalid_operation -dqmul647 multiply sNaN 1000 -> NaN Invalid_operation -dqmul648 multiply sNaN NaN -> NaN Invalid_operation -dqmul649 multiply sNaN sNaN -> NaN Invalid_operation -dqmul650 multiply NaN sNaN -> NaN Invalid_operation -dqmul651 multiply -Inf sNaN -> NaN Invalid_operation -dqmul652 multiply -1000 sNaN -> NaN Invalid_operation -dqmul653 multiply -1 sNaN -> NaN Invalid_operation -dqmul654 multiply -0 sNaN -> NaN Invalid_operation -dqmul655 multiply 0 sNaN -> NaN Invalid_operation -dqmul656 multiply 1 sNaN -> NaN Invalid_operation -dqmul657 multiply 1000 sNaN -> NaN Invalid_operation -dqmul658 multiply Inf sNaN -> NaN Invalid_operation -dqmul659 multiply NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqmul661 multiply NaN9 -Inf -> NaN9 -dqmul662 multiply NaN8 999 -> NaN8 -dqmul663 multiply NaN71 Inf -> NaN71 -dqmul664 multiply NaN6 NaN5 -> NaN6 -dqmul665 multiply -Inf NaN4 -> NaN4 -dqmul666 multiply -999 NaN33 -> NaN33 -dqmul667 multiply Inf NaN2 -> NaN2 - -dqmul671 multiply sNaN99 -Inf -> NaN99 Invalid_operation -dqmul672 multiply sNaN98 -11 -> NaN98 Invalid_operation -dqmul673 multiply sNaN97 NaN -> NaN97 Invalid_operation -dqmul674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation -dqmul675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation -dqmul676 multiply -Inf sNaN92 -> NaN92 Invalid_operation -dqmul677 multiply 088 sNaN91 -> NaN91 Invalid_operation -dqmul678 multiply Inf sNaN90 -> NaN90 Invalid_operation -dqmul679 multiply NaN sNaN89 -> NaN89 Invalid_operation - -dqmul681 multiply -NaN9 -Inf -> -NaN9 -dqmul682 multiply -NaN8 999 -> -NaN8 -dqmul683 multiply -NaN71 Inf -> -NaN71 -dqmul684 multiply -NaN6 -NaN5 -> -NaN6 -dqmul685 multiply -Inf -NaN4 -> -NaN4 -dqmul686 multiply -999 -NaN33 -> -NaN33 -dqmul687 multiply Inf -NaN2 -> -NaN2 - -dqmul691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation -dqmul692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation -dqmul693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation -dqmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation -dqmul695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation -dqmul696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation -dqmul697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation -dqmul698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation -dqmul699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation - -dqmul701 multiply -NaN -Inf -> -NaN -dqmul702 multiply -NaN 999 -> -NaN -dqmul703 multiply -NaN Inf -> -NaN -dqmul704 multiply -NaN -NaN -> -NaN -dqmul705 multiply -Inf -NaN0 -> -NaN -dqmul706 multiply -999 -NaN -> -NaN -dqmul707 multiply Inf -NaN -> -NaN - -dqmul711 multiply -sNaN -Inf -> -NaN Invalid_operation -dqmul712 multiply -sNaN -11 -> -NaN Invalid_operation -dqmul713 multiply -sNaN00 NaN -> -NaN Invalid_operation -dqmul714 multiply -sNaN -sNaN -> -NaN Invalid_operation -dqmul715 multiply -NaN -sNaN -> -NaN Invalid_operation -dqmul716 multiply -Inf -sNaN -> -NaN Invalid_operation -dqmul717 multiply 088 -sNaN -> -NaN Invalid_operation -dqmul718 multiply Inf -sNaN -> -NaN Invalid_operation -dqmul719 multiply -NaN -sNaN -> -NaN Invalid_operation - --- overflow and underflow tests .. note subnormal results --- signs -dqmul751 multiply 1e+4277 1e+3311 -> Infinity Overflow Inexact Rounded -dqmul752 multiply 1e+4277 -1e+3311 -> -Infinity Overflow Inexact Rounded -dqmul753 multiply -1e+4277 1e+3311 -> -Infinity Overflow Inexact Rounded -dqmul754 multiply -1e+4277 -1e+3311 -> Infinity Overflow Inexact Rounded -dqmul755 multiply 1e-4277 1e-3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul756 multiply 1e-4277 -1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul757 multiply -1e-4277 1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul758 multiply -1e-4277 -1e-3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -dqmul760 multiply 1e-6069 1e-101 -> 1E-6170 Subnormal -dqmul761 multiply 1e-6069 1e-102 -> 1E-6171 Subnormal -dqmul762 multiply 1e-6069 1e-103 -> 1E-6172 Subnormal -dqmul763 multiply 1e-6069 1e-104 -> 1E-6173 Subnormal -dqmul764 multiply 1e-6069 1e-105 -> 1E-6174 Subnormal -dqmul765 multiply 1e-6069 1e-106 -> 1E-6175 Subnormal -dqmul766 multiply 1e-6069 1e-107 -> 1E-6176 Subnormal -dqmul767 multiply 1e-6069 1e-108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul768 multiply 1e-6069 1e-109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul769 multiply 1e-6069 1e-110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped --- [no equivalent of 'subnormal' for overflow] -dqmul770 multiply 1e+40 1e+6101 -> 1.000000000000000000000000000000E+6141 Clamped -dqmul771 multiply 1e+40 1e+6102 -> 1.0000000000000000000000000000000E+6142 Clamped -dqmul772 multiply 1e+40 1e+6103 -> 1.00000000000000000000000000000000E+6143 Clamped -dqmul773 multiply 1e+40 1e+6104 -> 1.000000000000000000000000000000000E+6144 Clamped -dqmul774 multiply 1e+40 1e+6105 -> Infinity Overflow Inexact Rounded -dqmul775 multiply 1e+40 1e+6106 -> Infinity Overflow Inexact Rounded -dqmul776 multiply 1e+40 1e+6107 -> Infinity Overflow Inexact Rounded -dqmul777 multiply 1e+40 1e+6108 -> Infinity Overflow Inexact Rounded -dqmul778 multiply 1e+40 1e+6109 -> Infinity Overflow Inexact Rounded -dqmul779 multiply 1e+40 1e+6110 -> Infinity Overflow Inexact Rounded - -dqmul801 multiply 1.0000E-6172 1 -> 1.0000E-6172 Subnormal -dqmul802 multiply 1.000E-6172 1e-1 -> 1.000E-6173 Subnormal -dqmul803 multiply 1.00E-6172 1e-2 -> 1.00E-6174 Subnormal -dqmul804 multiply 1.0E-6172 1e-3 -> 1.0E-6175 Subnormal -dqmul805 multiply 1.0E-6172 1e-4 -> 1E-6176 Subnormal Rounded -dqmul806 multiply 1.3E-6172 1e-4 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqmul807 multiply 1.5E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqmul808 multiply 1.7E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqmul809 multiply 2.3E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqmul810 multiply 2.5E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqmul811 multiply 2.7E-6172 1e-4 -> 3E-6176 Underflow Subnormal Inexact Rounded -dqmul812 multiply 1.49E-6172 1e-4 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqmul813 multiply 1.50E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqmul814 multiply 1.51E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqmul815 multiply 2.49E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqmul816 multiply 2.50E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded -dqmul817 multiply 2.51E-6172 1e-4 -> 3E-6176 Underflow Subnormal Inexact Rounded - -dqmul818 multiply 1E-6172 1e-4 -> 1E-6176 Subnormal -dqmul819 multiply 3E-6172 1e-5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul820 multiply 5E-6172 1e-5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul821 multiply 7E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqmul822 multiply 9E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqmul823 multiply 9.9E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded - -dqmul824 multiply 1E-6172 -1e-4 -> -1E-6176 Subnormal -dqmul825 multiply 3E-6172 -1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul826 multiply -5E-6172 1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul827 multiply 7E-6172 -1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqmul828 multiply -9E-6172 1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqmul829 multiply 9.9E-6172 -1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqmul830 multiply 3.0E-6172 -1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped - -dqmul831 multiply 1.0E-5977 1e-200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqmul832 multiply 1.0E-5977 1e-199 -> 1E-6176 Subnormal Rounded -dqmul833 multiply 1.0E-5977 1e-198 -> 1.0E-6175 Subnormal -dqmul834 multiply 2.0E-5977 2e-198 -> 4.0E-6175 Subnormal -dqmul835 multiply 4.0E-5977 4e-198 -> 1.60E-6174 Subnormal -dqmul836 multiply 10.0E-5977 10e-198 -> 1.000E-6173 Subnormal -dqmul837 multiply 30.0E-5977 30e-198 -> 9.000E-6173 Subnormal -dqmul838 multiply 40.0E-5982 40e-166 -> 1.6000E-6145 Subnormal -dqmul839 multiply 40.0E-5982 40e-165 -> 1.6000E-6144 Subnormal -dqmul840 multiply 40.0E-5982 40e-164 -> 1.6000E-6143 - --- Long operand overflow may be a different path -dqmul870 multiply 100 9.999E+6143 -> Infinity Inexact Overflow Rounded -dqmul871 multiply 100 -9.999E+6143 -> -Infinity Inexact Overflow Rounded -dqmul872 multiply 9.999E+6143 100 -> Infinity Inexact Overflow Rounded -dqmul873 multiply -9.999E+6143 100 -> -Infinity Inexact Overflow Rounded - --- check for double-rounded subnormals -dqmul881 multiply 1.2347E-6133 1.2347E-40 -> 1.524E-6173 Inexact Rounded Subnormal Underflow -dqmul882 multiply 1.234E-6133 1.234E-40 -> 1.523E-6173 Inexact Rounded Subnormal Underflow -dqmul883 multiply 1.23E-6133 1.23E-40 -> 1.513E-6173 Inexact Rounded Subnormal Underflow -dqmul884 multiply 1.2E-6133 1.2E-40 -> 1.44E-6173 Subnormal -dqmul885 multiply 1.2E-6133 1.2E-41 -> 1.44E-6174 Subnormal -dqmul886 multiply 1.2E-6133 1.2E-42 -> 1.4E-6175 Subnormal Inexact Rounded Underflow -dqmul887 multiply 1.2E-6133 1.3E-42 -> 1.6E-6175 Subnormal Inexact Rounded Underflow -dqmul888 multiply 1.3E-6133 1.3E-42 -> 1.7E-6175 Subnormal Inexact Rounded Underflow -dqmul889 multiply 1.3E-6133 1.3E-43 -> 2E-6176 Subnormal Inexact Rounded Underflow -dqmul890 multiply 1.3E-6134 1.3E-43 -> 0E-6176 Clamped Subnormal Inexact Rounded Underflow - -dqmul891 multiply 1.2345E-39 1.234E-6133 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow -dqmul892 multiply 1.23456E-39 1.234E-6133 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow -dqmul893 multiply 1.2345E-40 1.234E-6133 -> 1.523E-6173 Inexact Rounded Subnormal Underflow -dqmul894 multiply 1.23456E-40 1.234E-6133 -> 1.523E-6173 Inexact Rounded Subnormal Underflow -dqmul895 multiply 1.2345E-41 1.234E-6133 -> 1.52E-6174 Inexact Rounded Subnormal Underflow -dqmul896 multiply 1.23456E-41 1.234E-6133 -> 1.52E-6174 Inexact Rounded Subnormal Underflow - --- Now explore the case where we get a normal result with Underflow --- prove operands are exact -dqmul906 multiply 9.999999999999999999999999999999999E-6143 1 -> 9.999999999999999999999999999999999E-6143 -dqmul907 multiply 1 0.09999999999999999999999999999999999 -> 0.09999999999999999999999999999999999 --- the next rounds to Nmin -dqmul908 multiply 9.999999999999999999999999999999999E-6143 0.09999999999999999999999999999999999 -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded - --- hugest -dqmul909 multiply 9999999999999999999999999999999999 9999999999999999999999999999999999 -> 9.999999999999999999999999999999998E+67 Inexact Rounded --- VG case -dqmul910 multiply 8.81125000000001349436E-1548 8.000000000000000000E-1550 -> 7.049000000000010795488000000000000E-3097 Rounded - --- Examples from SQL proposal (Krishna Kulkarni) -precision: 34 -rounding: half_up -maxExponent: 6144 -minExponent: -6143 -dqmul911 multiply 130E-2 120E-2 -> 1.5600 -dqmul912 multiply 130E-2 12E-1 -> 1.560 -dqmul913 multiply 130E-2 1E0 -> 1.30 -dqmul914 multiply 1E2 1E4 -> 1E+6 - --- power-of-ten edge cases -dqmul1001 multiply 1 10 -> 10 -dqmul1002 multiply 1 100 -> 100 -dqmul1003 multiply 1 1000 -> 1000 -dqmul1004 multiply 1 10000 -> 10000 -dqmul1005 multiply 1 100000 -> 100000 -dqmul1006 multiply 1 1000000 -> 1000000 -dqmul1007 multiply 1 10000000 -> 10000000 -dqmul1008 multiply 1 100000000 -> 100000000 -dqmul1009 multiply 1 1000000000 -> 1000000000 -dqmul1010 multiply 1 10000000000 -> 10000000000 -dqmul1011 multiply 1 100000000000 -> 100000000000 -dqmul1012 multiply 1 1000000000000 -> 1000000000000 -dqmul1013 multiply 1 10000000000000 -> 10000000000000 -dqmul1014 multiply 1 100000000000000 -> 100000000000000 -dqmul1015 multiply 1 1000000000000000 -> 1000000000000000 - -dqmul1016 multiply 1 1000000000000000000 -> 1000000000000000000 -dqmul1017 multiply 1 100000000000000000000000000 -> 100000000000000000000000000 -dqmul1018 multiply 1 1000000000000000000000000000 -> 1000000000000000000000000000 -dqmul1019 multiply 1 10000000000000000000000000000 -> 10000000000000000000000000000 -dqmul1020 multiply 1 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 - -dqmul1021 multiply 10 1 -> 10 -dqmul1022 multiply 10 10 -> 100 -dqmul1023 multiply 10 100 -> 1000 -dqmul1024 multiply 10 1000 -> 10000 -dqmul1025 multiply 10 10000 -> 100000 -dqmul1026 multiply 10 100000 -> 1000000 -dqmul1027 multiply 10 1000000 -> 10000000 -dqmul1028 multiply 10 10000000 -> 100000000 -dqmul1029 multiply 10 100000000 -> 1000000000 -dqmul1030 multiply 10 1000000000 -> 10000000000 -dqmul1031 multiply 10 10000000000 -> 100000000000 -dqmul1032 multiply 10 100000000000 -> 1000000000000 -dqmul1033 multiply 10 1000000000000 -> 10000000000000 -dqmul1034 multiply 10 10000000000000 -> 100000000000000 -dqmul1035 multiply 10 100000000000000 -> 1000000000000000 - -dqmul1036 multiply 10 100000000000000000 -> 1000000000000000000 -dqmul1037 multiply 10 10000000000000000000000000 -> 100000000000000000000000000 -dqmul1038 multiply 10 100000000000000000000000000 -> 1000000000000000000000000000 -dqmul1039 multiply 10 1000000000000000000000000000 -> 10000000000000000000000000000 -dqmul1040 multiply 10 100000000000000000000000000000000 -> 1000000000000000000000000000000000 - -dqmul1041 multiply 100 0.1 -> 10.0 -dqmul1042 multiply 100 1 -> 100 -dqmul1043 multiply 100 10 -> 1000 -dqmul1044 multiply 100 100 -> 10000 -dqmul1045 multiply 100 1000 -> 100000 -dqmul1046 multiply 100 10000 -> 1000000 -dqmul1047 multiply 100 100000 -> 10000000 -dqmul1048 multiply 100 1000000 -> 100000000 -dqmul1049 multiply 100 10000000 -> 1000000000 -dqmul1050 multiply 100 100000000 -> 10000000000 -dqmul1051 multiply 100 1000000000 -> 100000000000 -dqmul1052 multiply 100 10000000000 -> 1000000000000 -dqmul1053 multiply 100 100000000000 -> 10000000000000 -dqmul1054 multiply 100 1000000000000 -> 100000000000000 -dqmul1055 multiply 100 10000000000000 -> 1000000000000000 - -dqmul1056 multiply 100 10000000000000000 -> 1000000000000000000 -dqmul1057 multiply 100 1000000000000000000000000 -> 100000000000000000000000000 -dqmul1058 multiply 100 10000000000000000000000000 -> 1000000000000000000000000000 -dqmul1059 multiply 100 100000000000000000000000000 -> 10000000000000000000000000000 -dqmul1060 multiply 100 10000000000000000000000000000000 -> 1000000000000000000000000000000000 - -dqmul1061 multiply 1000 0.01 -> 10.00 -dqmul1062 multiply 1000 0.1 -> 100.0 -dqmul1063 multiply 1000 1 -> 1000 -dqmul1064 multiply 1000 10 -> 10000 -dqmul1065 multiply 1000 100 -> 100000 -dqmul1066 multiply 1000 1000 -> 1000000 -dqmul1067 multiply 1000 10000 -> 10000000 -dqmul1068 multiply 1000 100000 -> 100000000 -dqmul1069 multiply 1000 1000000 -> 1000000000 -dqmul1070 multiply 1000 10000000 -> 10000000000 -dqmul1071 multiply 1000 100000000 -> 100000000000 -dqmul1072 multiply 1000 1000000000 -> 1000000000000 -dqmul1073 multiply 1000 10000000000 -> 10000000000000 -dqmul1074 multiply 1000 100000000000 -> 100000000000000 -dqmul1075 multiply 1000 1000000000000 -> 1000000000000000 - -dqmul1076 multiply 1000 1000000000000000 -> 1000000000000000000 -dqmul1077 multiply 1000 100000000000000000000000 -> 100000000000000000000000000 -dqmul1078 multiply 1000 1000000000000000000000000 -> 1000000000000000000000000000 -dqmul1079 multiply 1000 10000000000000000000000000 -> 10000000000000000000000000000 -dqmul1080 multiply 1000 1000000000000000000000000000000 -> 1000000000000000000000000000000000 - -dqmul1081 multiply 10000 0.001 -> 10.000 -dqmul1082 multiply 10000 0.01 -> 100.00 -dqmul1083 multiply 10000 0.1 -> 1000.0 -dqmul1084 multiply 10000 1 -> 10000 -dqmul1085 multiply 10000 10 -> 100000 -dqmul1086 multiply 10000 100 -> 1000000 -dqmul1087 multiply 10000 1000 -> 10000000 -dqmul1088 multiply 10000 10000 -> 100000000 -dqmul1089 multiply 10000 100000 -> 1000000000 -dqmul1090 multiply 10000 1000000 -> 10000000000 -dqmul1091 multiply 10000 10000000 -> 100000000000 -dqmul1092 multiply 10000 100000000 -> 1000000000000 -dqmul1093 multiply 10000 1000000000 -> 10000000000000 -dqmul1094 multiply 10000 10000000000 -> 100000000000000 -dqmul1095 multiply 10000 100000000000 -> 1000000000000000 - -dqmul1096 multiply 10000 100000000000000 -> 1000000000000000000 -dqmul1097 multiply 10000 10000000000000000000000 -> 100000000000000000000000000 -dqmul1098 multiply 10000 100000000000000000000000 -> 1000000000000000000000000000 -dqmul1099 multiply 10000 1000000000000000000000000 -> 10000000000000000000000000000 -dqmul1100 multiply 10000 100000000000000000000000000000 -> 1000000000000000000000000000000000 - -dqmul1107 multiply 10000 99999999999 -> 999999999990000 -dqmul1108 multiply 10000 99999999999 -> 999999999990000 - --- Null tests -dqmul9990 multiply 10 # -> NaN Invalid_operation -dqmul9991 multiply # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqMultiply.decTest -- decQuad multiplication -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests are for decQuads only; all arguments are +-- representable in a decQuad +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqmul000 multiply 2 2 -> 4 +dqmul001 multiply 2 3 -> 6 +dqmul002 multiply 5 1 -> 5 +dqmul003 multiply 5 2 -> 10 +dqmul004 multiply 1.20 2 -> 2.40 +dqmul005 multiply 1.20 0 -> 0.00 +dqmul006 multiply 1.20 -2 -> -2.40 +dqmul007 multiply -1.20 2 -> -2.40 +dqmul008 multiply -1.20 0 -> -0.00 +dqmul009 multiply -1.20 -2 -> 2.40 +dqmul010 multiply 5.09 7.1 -> 36.139 +dqmul011 multiply 2.5 4 -> 10.0 +dqmul012 multiply 2.50 4 -> 10.00 +dqmul013 multiply 1.23456789 1.0000000000000000000000000000 -> 1.234567890000000000000000000000000 Rounded +dqmul015 multiply 2.50 4 -> 10.00 +dqmul016 multiply 9.99999999999999999 9.99999999999999999 -> 99.99999999999999980000000000000000 Inexact Rounded +dqmul017 multiply 9.99999999999999999 -9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded +dqmul018 multiply -9.99999999999999999 9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded +dqmul019 multiply -9.99999999999999999 -9.99999999999999999 -> 99.99999999999999980000000000000000 Inexact Rounded + +-- zeros, etc. +dqmul021 multiply 0 0 -> 0 +dqmul022 multiply 0 -0 -> -0 +dqmul023 multiply -0 0 -> -0 +dqmul024 multiply -0 -0 -> 0 +dqmul025 multiply -0.0 -0.0 -> 0.00 +dqmul026 multiply -0.0 -0.0 -> 0.00 +dqmul027 multiply -0.0 -0.0 -> 0.00 +dqmul028 multiply -0.0 -0.0 -> 0.00 +dqmul030 multiply 5.00 1E-3 -> 0.00500 +dqmul031 multiply 00.00 0.000 -> 0.00000 +dqmul032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0 +dqmul033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0 +dqmul034 multiply -5.00 1E-3 -> -0.00500 +dqmul035 multiply -00.00 0.000 -> -0.00000 +dqmul036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0 +dqmul037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0 +dqmul038 multiply 5.00 -1E-3 -> -0.00500 +dqmul039 multiply 00.00 -0.000 -> -0.00000 +dqmul040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0 +dqmul041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0 +dqmul042 multiply -5.00 -1E-3 -> 0.00500 +dqmul043 multiply -00.00 -0.000 -> 0.00000 +dqmul044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0 +dqmul045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0 + +-- examples from decarith +dqmul050 multiply 1.20 3 -> 3.60 +dqmul051 multiply 7 3 -> 21 +dqmul052 multiply 0.9 0.8 -> 0.72 +dqmul053 multiply 0.9 -0 -> -0.0 +dqmul054 multiply 654321 654321 -> 428135971041 + +dqmul060 multiply 123.45 1e7 -> 1.2345E+9 +dqmul061 multiply 123.45 1e8 -> 1.2345E+10 +dqmul062 multiply 123.45 1e+9 -> 1.2345E+11 +dqmul063 multiply 123.45 1e10 -> 1.2345E+12 +dqmul064 multiply 123.45 1e11 -> 1.2345E+13 +dqmul065 multiply 123.45 1e12 -> 1.2345E+14 +dqmul066 multiply 123.45 1e13 -> 1.2345E+15 + + +-- test some intermediate lengths +-- 1234567890123456 +dqmul080 multiply 0.1 1230123456456789 -> 123012345645678.9 +dqmul084 multiply 0.1 1230123456456789 -> 123012345645678.9 +dqmul090 multiply 1230123456456789 0.1 -> 123012345645678.9 +dqmul094 multiply 1230123456456789 0.1 -> 123012345645678.9 + +-- test some more edge cases and carries +dqmul101 multiply 9 9 -> 81 +dqmul102 multiply 9 90 -> 810 +dqmul103 multiply 9 900 -> 8100 +dqmul104 multiply 9 9000 -> 81000 +dqmul105 multiply 9 90000 -> 810000 +dqmul106 multiply 9 900000 -> 8100000 +dqmul107 multiply 9 9000000 -> 81000000 +dqmul108 multiply 9 90000000 -> 810000000 +dqmul109 multiply 9 900000000 -> 8100000000 +dqmul110 multiply 9 9000000000 -> 81000000000 +dqmul111 multiply 9 90000000000 -> 810000000000 +dqmul112 multiply 9 900000000000 -> 8100000000000 +dqmul113 multiply 9 9000000000000 -> 81000000000000 +dqmul114 multiply 9 90000000000000 -> 810000000000000 +dqmul115 multiply 9 900000000000000 -> 8100000000000000 +--dqmul116 multiply 9 9000000000000000 -> 81000000000000000 +--dqmul117 multiply 9 90000000000000000 -> 810000000000000000 +--dqmul118 multiply 9 900000000000000000 -> 8100000000000000000 +--dqmul119 multiply 9 9000000000000000000 -> 81000000000000000000 +--dqmul120 multiply 9 90000000000000000000 -> 810000000000000000000 +--dqmul121 multiply 9 900000000000000000000 -> 8100000000000000000000 +--dqmul122 multiply 9 9000000000000000000000 -> 81000000000000000000000 +--dqmul123 multiply 9 90000000000000000000000 -> 810000000000000000000000 +-- test some more edge cases without carries +dqmul131 multiply 3 3 -> 9 +dqmul132 multiply 3 30 -> 90 +dqmul133 multiply 3 300 -> 900 +dqmul134 multiply 3 3000 -> 9000 +dqmul135 multiply 3 30000 -> 90000 +dqmul136 multiply 3 300000 -> 900000 +dqmul137 multiply 3 3000000 -> 9000000 +dqmul138 multiply 3 30000000 -> 90000000 +dqmul139 multiply 3 300000000 -> 900000000 +dqmul140 multiply 3 3000000000 -> 9000000000 +dqmul141 multiply 3 30000000000 -> 90000000000 +dqmul142 multiply 3 300000000000 -> 900000000000 +dqmul143 multiply 3 3000000000000 -> 9000000000000 +dqmul144 multiply 3 30000000000000 -> 90000000000000 +dqmul145 multiply 3 300000000000000 -> 900000000000000 +dqmul146 multiply 3 3000000000000000 -> 9000000000000000 +dqmul147 multiply 3 30000000000000000 -> 90000000000000000 +dqmul148 multiply 3 300000000000000000 -> 900000000000000000 +dqmul149 multiply 3 3000000000000000000 -> 9000000000000000000 +dqmul150 multiply 3 30000000000000000000 -> 90000000000000000000 +dqmul151 multiply 3 300000000000000000000 -> 900000000000000000000 +dqmul152 multiply 3 3000000000000000000000 -> 9000000000000000000000 +dqmul153 multiply 3 30000000000000000000000 -> 90000000000000000000000 + +dqmul263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928296 Inexact Rounded + +-- test some edge cases with exact rounding +dqmul301 multiply 900000000000000000 9 -> 8100000000000000000 +dqmul302 multiply 900000000000000000 90 -> 81000000000000000000 +dqmul303 multiply 900000000000000000 900 -> 810000000000000000000 +dqmul304 multiply 900000000000000000 9000 -> 8100000000000000000000 +dqmul305 multiply 900000000000000000 90000 -> 81000000000000000000000 +dqmul306 multiply 900000000000000000 900000 -> 810000000000000000000000 +dqmul307 multiply 900000000000000000 9000000 -> 8100000000000000000000000 +dqmul308 multiply 900000000000000000 90000000 -> 81000000000000000000000000 +dqmul309 multiply 900000000000000000 900000000 -> 810000000000000000000000000 +dqmul310 multiply 900000000000000000 9000000000 -> 8100000000000000000000000000 +dqmul311 multiply 900000000000000000 90000000000 -> 81000000000000000000000000000 +dqmul312 multiply 900000000000000000 900000000000 -> 810000000000000000000000000000 +dqmul313 multiply 900000000000000000 9000000000000 -> 8100000000000000000000000000000 +dqmul314 multiply 900000000000000000 90000000000000 -> 81000000000000000000000000000000 +dqmul315 multiply 900000000000000000 900000000000000 -> 810000000000000000000000000000000 +dqmul316 multiply 900000000000000000 9000000000000000 -> 8100000000000000000000000000000000 +dqmul317 multiply 9000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+34 Rounded +dqmul318 multiply 90000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+35 Rounded +dqmul319 multiply 900000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+36 Rounded +dqmul320 multiply 9000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+37 Rounded +dqmul321 multiply 90000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+38 Rounded +dqmul322 multiply 900000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+39 Rounded +dqmul323 multiply 9000000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+40 Rounded + +-- tryzeros cases +dqmul504 multiply 0E-4260 1000E-4260 -> 0E-6176 Clamped +dqmul505 multiply 100E+4260 0E+4260 -> 0E+6111 Clamped + +-- mixed with zeros +dqmul541 multiply 0 -1 -> -0 +dqmul542 multiply -0 -1 -> 0 +dqmul543 multiply 0 1 -> 0 +dqmul544 multiply -0 1 -> -0 +dqmul545 multiply -1 0 -> -0 +dqmul546 multiply -1 -0 -> 0 +dqmul547 multiply 1 0 -> 0 +dqmul548 multiply 1 -0 -> -0 + +dqmul551 multiply 0.0 -1 -> -0.0 +dqmul552 multiply -0.0 -1 -> 0.0 +dqmul553 multiply 0.0 1 -> 0.0 +dqmul554 multiply -0.0 1 -> -0.0 +dqmul555 multiply -1.0 0 -> -0.0 +dqmul556 multiply -1.0 -0 -> 0.0 +dqmul557 multiply 1.0 0 -> 0.0 +dqmul558 multiply 1.0 -0 -> -0.0 + +dqmul561 multiply 0 -1.0 -> -0.0 +dqmul562 multiply -0 -1.0 -> 0.0 +dqmul563 multiply 0 1.0 -> 0.0 +dqmul564 multiply -0 1.0 -> -0.0 +dqmul565 multiply -1 0.0 -> -0.0 +dqmul566 multiply -1 -0.0 -> 0.0 +dqmul567 multiply 1 0.0 -> 0.0 +dqmul568 multiply 1 -0.0 -> -0.0 + +dqmul571 multiply 0.0 -1.0 -> -0.00 +dqmul572 multiply -0.0 -1.0 -> 0.00 +dqmul573 multiply 0.0 1.0 -> 0.00 +dqmul574 multiply -0.0 1.0 -> -0.00 +dqmul575 multiply -1.0 0.0 -> -0.00 +dqmul576 multiply -1.0 -0.0 -> 0.00 +dqmul577 multiply 1.0 0.0 -> 0.00 +dqmul578 multiply 1.0 -0.0 -> -0.00 + + +-- Specials +dqmul580 multiply Inf -Inf -> -Infinity +dqmul581 multiply Inf -1000 -> -Infinity +dqmul582 multiply Inf -1 -> -Infinity +dqmul583 multiply Inf -0 -> NaN Invalid_operation +dqmul584 multiply Inf 0 -> NaN Invalid_operation +dqmul585 multiply Inf 1 -> Infinity +dqmul586 multiply Inf 1000 -> Infinity +dqmul587 multiply Inf Inf -> Infinity +dqmul588 multiply -1000 Inf -> -Infinity +dqmul589 multiply -Inf Inf -> -Infinity +dqmul590 multiply -1 Inf -> -Infinity +dqmul591 multiply -0 Inf -> NaN Invalid_operation +dqmul592 multiply 0 Inf -> NaN Invalid_operation +dqmul593 multiply 1 Inf -> Infinity +dqmul594 multiply 1000 Inf -> Infinity +dqmul595 multiply Inf Inf -> Infinity + +dqmul600 multiply -Inf -Inf -> Infinity +dqmul601 multiply -Inf -1000 -> Infinity +dqmul602 multiply -Inf -1 -> Infinity +dqmul603 multiply -Inf -0 -> NaN Invalid_operation +dqmul604 multiply -Inf 0 -> NaN Invalid_operation +dqmul605 multiply -Inf 1 -> -Infinity +dqmul606 multiply -Inf 1000 -> -Infinity +dqmul607 multiply -Inf Inf -> -Infinity +dqmul608 multiply -1000 Inf -> -Infinity +dqmul609 multiply -Inf -Inf -> Infinity +dqmul610 multiply -1 -Inf -> Infinity +dqmul611 multiply -0 -Inf -> NaN Invalid_operation +dqmul612 multiply 0 -Inf -> NaN Invalid_operation +dqmul613 multiply 1 -Inf -> -Infinity +dqmul614 multiply 1000 -Inf -> -Infinity +dqmul615 multiply Inf -Inf -> -Infinity + +dqmul621 multiply NaN -Inf -> NaN +dqmul622 multiply NaN -1000 -> NaN +dqmul623 multiply NaN -1 -> NaN +dqmul624 multiply NaN -0 -> NaN +dqmul625 multiply NaN 0 -> NaN +dqmul626 multiply NaN 1 -> NaN +dqmul627 multiply NaN 1000 -> NaN +dqmul628 multiply NaN Inf -> NaN +dqmul629 multiply NaN NaN -> NaN +dqmul630 multiply -Inf NaN -> NaN +dqmul631 multiply -1000 NaN -> NaN +dqmul632 multiply -1 NaN -> NaN +dqmul633 multiply -0 NaN -> NaN +dqmul634 multiply 0 NaN -> NaN +dqmul635 multiply 1 NaN -> NaN +dqmul636 multiply 1000 NaN -> NaN +dqmul637 multiply Inf NaN -> NaN + +dqmul641 multiply sNaN -Inf -> NaN Invalid_operation +dqmul642 multiply sNaN -1000 -> NaN Invalid_operation +dqmul643 multiply sNaN -1 -> NaN Invalid_operation +dqmul644 multiply sNaN -0 -> NaN Invalid_operation +dqmul645 multiply sNaN 0 -> NaN Invalid_operation +dqmul646 multiply sNaN 1 -> NaN Invalid_operation +dqmul647 multiply sNaN 1000 -> NaN Invalid_operation +dqmul648 multiply sNaN NaN -> NaN Invalid_operation +dqmul649 multiply sNaN sNaN -> NaN Invalid_operation +dqmul650 multiply NaN sNaN -> NaN Invalid_operation +dqmul651 multiply -Inf sNaN -> NaN Invalid_operation +dqmul652 multiply -1000 sNaN -> NaN Invalid_operation +dqmul653 multiply -1 sNaN -> NaN Invalid_operation +dqmul654 multiply -0 sNaN -> NaN Invalid_operation +dqmul655 multiply 0 sNaN -> NaN Invalid_operation +dqmul656 multiply 1 sNaN -> NaN Invalid_operation +dqmul657 multiply 1000 sNaN -> NaN Invalid_operation +dqmul658 multiply Inf sNaN -> NaN Invalid_operation +dqmul659 multiply NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqmul661 multiply NaN9 -Inf -> NaN9 +dqmul662 multiply NaN8 999 -> NaN8 +dqmul663 multiply NaN71 Inf -> NaN71 +dqmul664 multiply NaN6 NaN5 -> NaN6 +dqmul665 multiply -Inf NaN4 -> NaN4 +dqmul666 multiply -999 NaN33 -> NaN33 +dqmul667 multiply Inf NaN2 -> NaN2 + +dqmul671 multiply sNaN99 -Inf -> NaN99 Invalid_operation +dqmul672 multiply sNaN98 -11 -> NaN98 Invalid_operation +dqmul673 multiply sNaN97 NaN -> NaN97 Invalid_operation +dqmul674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation +dqmul675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation +dqmul676 multiply -Inf sNaN92 -> NaN92 Invalid_operation +dqmul677 multiply 088 sNaN91 -> NaN91 Invalid_operation +dqmul678 multiply Inf sNaN90 -> NaN90 Invalid_operation +dqmul679 multiply NaN sNaN89 -> NaN89 Invalid_operation + +dqmul681 multiply -NaN9 -Inf -> -NaN9 +dqmul682 multiply -NaN8 999 -> -NaN8 +dqmul683 multiply -NaN71 Inf -> -NaN71 +dqmul684 multiply -NaN6 -NaN5 -> -NaN6 +dqmul685 multiply -Inf -NaN4 -> -NaN4 +dqmul686 multiply -999 -NaN33 -> -NaN33 +dqmul687 multiply Inf -NaN2 -> -NaN2 + +dqmul691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation +dqmul692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation +dqmul693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation +dqmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation +dqmul695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation +dqmul696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation +dqmul697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation +dqmul698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation +dqmul699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation + +dqmul701 multiply -NaN -Inf -> -NaN +dqmul702 multiply -NaN 999 -> -NaN +dqmul703 multiply -NaN Inf -> -NaN +dqmul704 multiply -NaN -NaN -> -NaN +dqmul705 multiply -Inf -NaN0 -> -NaN +dqmul706 multiply -999 -NaN -> -NaN +dqmul707 multiply Inf -NaN -> -NaN + +dqmul711 multiply -sNaN -Inf -> -NaN Invalid_operation +dqmul712 multiply -sNaN -11 -> -NaN Invalid_operation +dqmul713 multiply -sNaN00 NaN -> -NaN Invalid_operation +dqmul714 multiply -sNaN -sNaN -> -NaN Invalid_operation +dqmul715 multiply -NaN -sNaN -> -NaN Invalid_operation +dqmul716 multiply -Inf -sNaN -> -NaN Invalid_operation +dqmul717 multiply 088 -sNaN -> -NaN Invalid_operation +dqmul718 multiply Inf -sNaN -> -NaN Invalid_operation +dqmul719 multiply -NaN -sNaN -> -NaN Invalid_operation + +-- overflow and underflow tests .. note subnormal results +-- signs +dqmul751 multiply 1e+4277 1e+3311 -> Infinity Overflow Inexact Rounded +dqmul752 multiply 1e+4277 -1e+3311 -> -Infinity Overflow Inexact Rounded +dqmul753 multiply -1e+4277 1e+3311 -> -Infinity Overflow Inexact Rounded +dqmul754 multiply -1e+4277 -1e+3311 -> Infinity Overflow Inexact Rounded +dqmul755 multiply 1e-4277 1e-3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul756 multiply 1e-4277 -1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul757 multiply -1e-4277 1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul758 multiply -1e-4277 -1e-3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +dqmul760 multiply 1e-6069 1e-101 -> 1E-6170 Subnormal +dqmul761 multiply 1e-6069 1e-102 -> 1E-6171 Subnormal +dqmul762 multiply 1e-6069 1e-103 -> 1E-6172 Subnormal +dqmul763 multiply 1e-6069 1e-104 -> 1E-6173 Subnormal +dqmul764 multiply 1e-6069 1e-105 -> 1E-6174 Subnormal +dqmul765 multiply 1e-6069 1e-106 -> 1E-6175 Subnormal +dqmul766 multiply 1e-6069 1e-107 -> 1E-6176 Subnormal +dqmul767 multiply 1e-6069 1e-108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul768 multiply 1e-6069 1e-109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul769 multiply 1e-6069 1e-110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +-- [no equivalent of 'subnormal' for overflow] +dqmul770 multiply 1e+40 1e+6101 -> 1.000000000000000000000000000000E+6141 Clamped +dqmul771 multiply 1e+40 1e+6102 -> 1.0000000000000000000000000000000E+6142 Clamped +dqmul772 multiply 1e+40 1e+6103 -> 1.00000000000000000000000000000000E+6143 Clamped +dqmul773 multiply 1e+40 1e+6104 -> 1.000000000000000000000000000000000E+6144 Clamped +dqmul774 multiply 1e+40 1e+6105 -> Infinity Overflow Inexact Rounded +dqmul775 multiply 1e+40 1e+6106 -> Infinity Overflow Inexact Rounded +dqmul776 multiply 1e+40 1e+6107 -> Infinity Overflow Inexact Rounded +dqmul777 multiply 1e+40 1e+6108 -> Infinity Overflow Inexact Rounded +dqmul778 multiply 1e+40 1e+6109 -> Infinity Overflow Inexact Rounded +dqmul779 multiply 1e+40 1e+6110 -> Infinity Overflow Inexact Rounded + +dqmul801 multiply 1.0000E-6172 1 -> 1.0000E-6172 Subnormal +dqmul802 multiply 1.000E-6172 1e-1 -> 1.000E-6173 Subnormal +dqmul803 multiply 1.00E-6172 1e-2 -> 1.00E-6174 Subnormal +dqmul804 multiply 1.0E-6172 1e-3 -> 1.0E-6175 Subnormal +dqmul805 multiply 1.0E-6172 1e-4 -> 1E-6176 Subnormal Rounded +dqmul806 multiply 1.3E-6172 1e-4 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqmul807 multiply 1.5E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqmul808 multiply 1.7E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqmul809 multiply 2.3E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqmul810 multiply 2.5E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqmul811 multiply 2.7E-6172 1e-4 -> 3E-6176 Underflow Subnormal Inexact Rounded +dqmul812 multiply 1.49E-6172 1e-4 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqmul813 multiply 1.50E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqmul814 multiply 1.51E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqmul815 multiply 2.49E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqmul816 multiply 2.50E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded +dqmul817 multiply 2.51E-6172 1e-4 -> 3E-6176 Underflow Subnormal Inexact Rounded + +dqmul818 multiply 1E-6172 1e-4 -> 1E-6176 Subnormal +dqmul819 multiply 3E-6172 1e-5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul820 multiply 5E-6172 1e-5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul821 multiply 7E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqmul822 multiply 9E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqmul823 multiply 9.9E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded + +dqmul824 multiply 1E-6172 -1e-4 -> -1E-6176 Subnormal +dqmul825 multiply 3E-6172 -1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul826 multiply -5E-6172 1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul827 multiply 7E-6172 -1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqmul828 multiply -9E-6172 1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqmul829 multiply 9.9E-6172 -1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqmul830 multiply 3.0E-6172 -1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped + +dqmul831 multiply 1.0E-5977 1e-200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqmul832 multiply 1.0E-5977 1e-199 -> 1E-6176 Subnormal Rounded +dqmul833 multiply 1.0E-5977 1e-198 -> 1.0E-6175 Subnormal +dqmul834 multiply 2.0E-5977 2e-198 -> 4.0E-6175 Subnormal +dqmul835 multiply 4.0E-5977 4e-198 -> 1.60E-6174 Subnormal +dqmul836 multiply 10.0E-5977 10e-198 -> 1.000E-6173 Subnormal +dqmul837 multiply 30.0E-5977 30e-198 -> 9.000E-6173 Subnormal +dqmul838 multiply 40.0E-5982 40e-166 -> 1.6000E-6145 Subnormal +dqmul839 multiply 40.0E-5982 40e-165 -> 1.6000E-6144 Subnormal +dqmul840 multiply 40.0E-5982 40e-164 -> 1.6000E-6143 + +-- Long operand overflow may be a different path +dqmul870 multiply 100 9.999E+6143 -> Infinity Inexact Overflow Rounded +dqmul871 multiply 100 -9.999E+6143 -> -Infinity Inexact Overflow Rounded +dqmul872 multiply 9.999E+6143 100 -> Infinity Inexact Overflow Rounded +dqmul873 multiply -9.999E+6143 100 -> -Infinity Inexact Overflow Rounded + +-- check for double-rounded subnormals +dqmul881 multiply 1.2347E-6133 1.2347E-40 -> 1.524E-6173 Inexact Rounded Subnormal Underflow +dqmul882 multiply 1.234E-6133 1.234E-40 -> 1.523E-6173 Inexact Rounded Subnormal Underflow +dqmul883 multiply 1.23E-6133 1.23E-40 -> 1.513E-6173 Inexact Rounded Subnormal Underflow +dqmul884 multiply 1.2E-6133 1.2E-40 -> 1.44E-6173 Subnormal +dqmul885 multiply 1.2E-6133 1.2E-41 -> 1.44E-6174 Subnormal +dqmul886 multiply 1.2E-6133 1.2E-42 -> 1.4E-6175 Subnormal Inexact Rounded Underflow +dqmul887 multiply 1.2E-6133 1.3E-42 -> 1.6E-6175 Subnormal Inexact Rounded Underflow +dqmul888 multiply 1.3E-6133 1.3E-42 -> 1.7E-6175 Subnormal Inexact Rounded Underflow +dqmul889 multiply 1.3E-6133 1.3E-43 -> 2E-6176 Subnormal Inexact Rounded Underflow +dqmul890 multiply 1.3E-6134 1.3E-43 -> 0E-6176 Clamped Subnormal Inexact Rounded Underflow + +dqmul891 multiply 1.2345E-39 1.234E-6133 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow +dqmul892 multiply 1.23456E-39 1.234E-6133 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow +dqmul893 multiply 1.2345E-40 1.234E-6133 -> 1.523E-6173 Inexact Rounded Subnormal Underflow +dqmul894 multiply 1.23456E-40 1.234E-6133 -> 1.523E-6173 Inexact Rounded Subnormal Underflow +dqmul895 multiply 1.2345E-41 1.234E-6133 -> 1.52E-6174 Inexact Rounded Subnormal Underflow +dqmul896 multiply 1.23456E-41 1.234E-6133 -> 1.52E-6174 Inexact Rounded Subnormal Underflow + +-- Now explore the case where we get a normal result with Underflow +-- prove operands are exact +dqmul906 multiply 9.999999999999999999999999999999999E-6143 1 -> 9.999999999999999999999999999999999E-6143 +dqmul907 multiply 1 0.09999999999999999999999999999999999 -> 0.09999999999999999999999999999999999 +-- the next rounds to Nmin +dqmul908 multiply 9.999999999999999999999999999999999E-6143 0.09999999999999999999999999999999999 -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded + +-- hugest +dqmul909 multiply 9999999999999999999999999999999999 9999999999999999999999999999999999 -> 9.999999999999999999999999999999998E+67 Inexact Rounded +-- VG case +dqmul910 multiply 8.81125000000001349436E-1548 8.000000000000000000E-1550 -> 7.049000000000010795488000000000000E-3097 Rounded + +-- Examples from SQL proposal (Krishna Kulkarni) +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 +dqmul911 multiply 130E-2 120E-2 -> 1.5600 +dqmul912 multiply 130E-2 12E-1 -> 1.560 +dqmul913 multiply 130E-2 1E0 -> 1.30 +dqmul914 multiply 1E2 1E4 -> 1E+6 + +-- power-of-ten edge cases +dqmul1001 multiply 1 10 -> 10 +dqmul1002 multiply 1 100 -> 100 +dqmul1003 multiply 1 1000 -> 1000 +dqmul1004 multiply 1 10000 -> 10000 +dqmul1005 multiply 1 100000 -> 100000 +dqmul1006 multiply 1 1000000 -> 1000000 +dqmul1007 multiply 1 10000000 -> 10000000 +dqmul1008 multiply 1 100000000 -> 100000000 +dqmul1009 multiply 1 1000000000 -> 1000000000 +dqmul1010 multiply 1 10000000000 -> 10000000000 +dqmul1011 multiply 1 100000000000 -> 100000000000 +dqmul1012 multiply 1 1000000000000 -> 1000000000000 +dqmul1013 multiply 1 10000000000000 -> 10000000000000 +dqmul1014 multiply 1 100000000000000 -> 100000000000000 +dqmul1015 multiply 1 1000000000000000 -> 1000000000000000 + +dqmul1016 multiply 1 1000000000000000000 -> 1000000000000000000 +dqmul1017 multiply 1 100000000000000000000000000 -> 100000000000000000000000000 +dqmul1018 multiply 1 1000000000000000000000000000 -> 1000000000000000000000000000 +dqmul1019 multiply 1 10000000000000000000000000000 -> 10000000000000000000000000000 +dqmul1020 multiply 1 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 + +dqmul1021 multiply 10 1 -> 10 +dqmul1022 multiply 10 10 -> 100 +dqmul1023 multiply 10 100 -> 1000 +dqmul1024 multiply 10 1000 -> 10000 +dqmul1025 multiply 10 10000 -> 100000 +dqmul1026 multiply 10 100000 -> 1000000 +dqmul1027 multiply 10 1000000 -> 10000000 +dqmul1028 multiply 10 10000000 -> 100000000 +dqmul1029 multiply 10 100000000 -> 1000000000 +dqmul1030 multiply 10 1000000000 -> 10000000000 +dqmul1031 multiply 10 10000000000 -> 100000000000 +dqmul1032 multiply 10 100000000000 -> 1000000000000 +dqmul1033 multiply 10 1000000000000 -> 10000000000000 +dqmul1034 multiply 10 10000000000000 -> 100000000000000 +dqmul1035 multiply 10 100000000000000 -> 1000000000000000 + +dqmul1036 multiply 10 100000000000000000 -> 1000000000000000000 +dqmul1037 multiply 10 10000000000000000000000000 -> 100000000000000000000000000 +dqmul1038 multiply 10 100000000000000000000000000 -> 1000000000000000000000000000 +dqmul1039 multiply 10 1000000000000000000000000000 -> 10000000000000000000000000000 +dqmul1040 multiply 10 100000000000000000000000000000000 -> 1000000000000000000000000000000000 + +dqmul1041 multiply 100 0.1 -> 10.0 +dqmul1042 multiply 100 1 -> 100 +dqmul1043 multiply 100 10 -> 1000 +dqmul1044 multiply 100 100 -> 10000 +dqmul1045 multiply 100 1000 -> 100000 +dqmul1046 multiply 100 10000 -> 1000000 +dqmul1047 multiply 100 100000 -> 10000000 +dqmul1048 multiply 100 1000000 -> 100000000 +dqmul1049 multiply 100 10000000 -> 1000000000 +dqmul1050 multiply 100 100000000 -> 10000000000 +dqmul1051 multiply 100 1000000000 -> 100000000000 +dqmul1052 multiply 100 10000000000 -> 1000000000000 +dqmul1053 multiply 100 100000000000 -> 10000000000000 +dqmul1054 multiply 100 1000000000000 -> 100000000000000 +dqmul1055 multiply 100 10000000000000 -> 1000000000000000 + +dqmul1056 multiply 100 10000000000000000 -> 1000000000000000000 +dqmul1057 multiply 100 1000000000000000000000000 -> 100000000000000000000000000 +dqmul1058 multiply 100 10000000000000000000000000 -> 1000000000000000000000000000 +dqmul1059 multiply 100 100000000000000000000000000 -> 10000000000000000000000000000 +dqmul1060 multiply 100 10000000000000000000000000000000 -> 1000000000000000000000000000000000 + +dqmul1061 multiply 1000 0.01 -> 10.00 +dqmul1062 multiply 1000 0.1 -> 100.0 +dqmul1063 multiply 1000 1 -> 1000 +dqmul1064 multiply 1000 10 -> 10000 +dqmul1065 multiply 1000 100 -> 100000 +dqmul1066 multiply 1000 1000 -> 1000000 +dqmul1067 multiply 1000 10000 -> 10000000 +dqmul1068 multiply 1000 100000 -> 100000000 +dqmul1069 multiply 1000 1000000 -> 1000000000 +dqmul1070 multiply 1000 10000000 -> 10000000000 +dqmul1071 multiply 1000 100000000 -> 100000000000 +dqmul1072 multiply 1000 1000000000 -> 1000000000000 +dqmul1073 multiply 1000 10000000000 -> 10000000000000 +dqmul1074 multiply 1000 100000000000 -> 100000000000000 +dqmul1075 multiply 1000 1000000000000 -> 1000000000000000 + +dqmul1076 multiply 1000 1000000000000000 -> 1000000000000000000 +dqmul1077 multiply 1000 100000000000000000000000 -> 100000000000000000000000000 +dqmul1078 multiply 1000 1000000000000000000000000 -> 1000000000000000000000000000 +dqmul1079 multiply 1000 10000000000000000000000000 -> 10000000000000000000000000000 +dqmul1080 multiply 1000 1000000000000000000000000000000 -> 1000000000000000000000000000000000 + +dqmul1081 multiply 10000 0.001 -> 10.000 +dqmul1082 multiply 10000 0.01 -> 100.00 +dqmul1083 multiply 10000 0.1 -> 1000.0 +dqmul1084 multiply 10000 1 -> 10000 +dqmul1085 multiply 10000 10 -> 100000 +dqmul1086 multiply 10000 100 -> 1000000 +dqmul1087 multiply 10000 1000 -> 10000000 +dqmul1088 multiply 10000 10000 -> 100000000 +dqmul1089 multiply 10000 100000 -> 1000000000 +dqmul1090 multiply 10000 1000000 -> 10000000000 +dqmul1091 multiply 10000 10000000 -> 100000000000 +dqmul1092 multiply 10000 100000000 -> 1000000000000 +dqmul1093 multiply 10000 1000000000 -> 10000000000000 +dqmul1094 multiply 10000 10000000000 -> 100000000000000 +dqmul1095 multiply 10000 100000000000 -> 1000000000000000 + +dqmul1096 multiply 10000 100000000000000 -> 1000000000000000000 +dqmul1097 multiply 10000 10000000000000000000000 -> 100000000000000000000000000 +dqmul1098 multiply 10000 100000000000000000000000 -> 1000000000000000000000000000 +dqmul1099 multiply 10000 1000000000000000000000000 -> 10000000000000000000000000000 +dqmul1100 multiply 10000 100000000000000000000000000000 -> 1000000000000000000000000000000000 + +dqmul1107 multiply 10000 99999999999 -> 999999999990000 +dqmul1108 multiply 10000 99999999999 -> 999999999990000 + +-- Null tests +dqmul9990 multiply 10 # -> NaN Invalid_operation +dqmul9991 multiply # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqNextMinus.decTest b/Lib/test/decimaltestdata/dqNextMinus.decTest index 34f3958..8177b58 100644 --- a/Lib/test/decimaltestdata/dqNextMinus.decTest +++ b/Lib/test/decimaltestdata/dqNextMinus.decTest @@ -1,126 +1,126 @@ ------------------------------------------------------------------------- --- dqNextMinus.decTest -- decQuad next that is less [754r nextdown] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - -dqnextm001 nextminus 0.9999999999999999999999999999999995 -> 0.9999999999999999999999999999999994 -dqnextm002 nextminus 0.9999999999999999999999999999999996 -> 0.9999999999999999999999999999999995 -dqnextm003 nextminus 0.9999999999999999999999999999999997 -> 0.9999999999999999999999999999999996 -dqnextm004 nextminus 0.9999999999999999999999999999999998 -> 0.9999999999999999999999999999999997 -dqnextm005 nextminus 0.9999999999999999999999999999999999 -> 0.9999999999999999999999999999999998 -dqnextm006 nextminus 1.000000000000000000000000000000000 -> 0.9999999999999999999999999999999999 -dqnextm007 nextminus 1.0 -> 0.9999999999999999999999999999999999 -dqnextm008 nextminus 1 -> 0.9999999999999999999999999999999999 -dqnextm009 nextminus 1.000000000000000000000000000000001 -> 1.000000000000000000000000000000000 -dqnextm010 nextminus 1.000000000000000000000000000000002 -> 1.000000000000000000000000000000001 -dqnextm011 nextminus 1.000000000000000000000000000000003 -> 1.000000000000000000000000000000002 -dqnextm012 nextminus 1.000000000000000000000000000000004 -> 1.000000000000000000000000000000003 -dqnextm013 nextminus 1.000000000000000000000000000000005 -> 1.000000000000000000000000000000004 -dqnextm014 nextminus 1.000000000000000000000000000000006 -> 1.000000000000000000000000000000005 -dqnextm015 nextminus 1.000000000000000000000000000000007 -> 1.000000000000000000000000000000006 -dqnextm016 nextminus 1.000000000000000000000000000000008 -> 1.000000000000000000000000000000007 -dqnextm017 nextminus 1.000000000000000000000000000000009 -> 1.000000000000000000000000000000008 -dqnextm018 nextminus 1.000000000000000000000000000000010 -> 1.000000000000000000000000000000009 -dqnextm019 nextminus 1.000000000000000000000000000000011 -> 1.000000000000000000000000000000010 -dqnextm020 nextminus 1.000000000000000000000000000000012 -> 1.000000000000000000000000000000011 - -dqnextm021 nextminus -0.9999999999999999999999999999999995 -> -0.9999999999999999999999999999999996 -dqnextm022 nextminus -0.9999999999999999999999999999999996 -> -0.9999999999999999999999999999999997 -dqnextm023 nextminus -0.9999999999999999999999999999999997 -> -0.9999999999999999999999999999999998 -dqnextm024 nextminus -0.9999999999999999999999999999999998 -> -0.9999999999999999999999999999999999 -dqnextm025 nextminus -0.9999999999999999999999999999999999 -> -1.000000000000000000000000000000000 -dqnextm026 nextminus -1.000000000000000000000000000000000 -> -1.000000000000000000000000000000001 -dqnextm027 nextminus -1.0 -> -1.000000000000000000000000000000001 -dqnextm028 nextminus -1 -> -1.000000000000000000000000000000001 -dqnextm029 nextminus -1.000000000000000000000000000000001 -> -1.000000000000000000000000000000002 -dqnextm030 nextminus -1.000000000000000000000000000000002 -> -1.000000000000000000000000000000003 -dqnextm031 nextminus -1.000000000000000000000000000000003 -> -1.000000000000000000000000000000004 -dqnextm032 nextminus -1.000000000000000000000000000000004 -> -1.000000000000000000000000000000005 -dqnextm033 nextminus -1.000000000000000000000000000000005 -> -1.000000000000000000000000000000006 -dqnextm034 nextminus -1.000000000000000000000000000000006 -> -1.000000000000000000000000000000007 -dqnextm035 nextminus -1.000000000000000000000000000000007 -> -1.000000000000000000000000000000008 -dqnextm036 nextminus -1.000000000000000000000000000000008 -> -1.000000000000000000000000000000009 -dqnextm037 nextminus -1.000000000000000000000000000000009 -> -1.000000000000000000000000000000010 -dqnextm038 nextminus -1.000000000000000000000000000000010 -> -1.000000000000000000000000000000011 -dqnextm039 nextminus -1.000000000000000000000000000000011 -> -1.000000000000000000000000000000012 - --- ultra-tiny inputs -dqnextm062 nextminus 1E-6176 -> 0E-6176 -dqnextm065 nextminus -1E-6176 -> -2E-6176 - --- Zeros -dqnextm100 nextminus -0 -> -1E-6176 -dqnextm101 nextminus 0 -> -1E-6176 -dqnextm102 nextminus 0.00 -> -1E-6176 -dqnextm103 nextminus -0.00 -> -1E-6176 -dqnextm104 nextminus 0E-300 -> -1E-6176 -dqnextm105 nextminus 0E+300 -> -1E-6176 -dqnextm106 nextminus 0E+30000 -> -1E-6176 -dqnextm107 nextminus -0E+30000 -> -1E-6176 - --- specials -dqnextm150 nextminus Inf -> 9.999999999999999999999999999999999E+6144 -dqnextm151 nextminus -Inf -> -Infinity -dqnextm152 nextminus NaN -> NaN -dqnextm153 nextminus sNaN -> NaN Invalid_operation -dqnextm154 nextminus NaN77 -> NaN77 -dqnextm155 nextminus sNaN88 -> NaN88 Invalid_operation -dqnextm156 nextminus -NaN -> -NaN -dqnextm157 nextminus -sNaN -> -NaN Invalid_operation -dqnextm158 nextminus -NaN77 -> -NaN77 -dqnextm159 nextminus -sNaN88 -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -dqnextm170 nextminus 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999998E+6144 -dqnextm171 nextminus 9.999999999999999999999999999999998E+6144 -> 9.999999999999999999999999999999997E+6144 -dqnextm172 nextminus 1E-6143 -> 9.99999999999999999999999999999999E-6144 -dqnextm173 nextminus 1.000000000000000000000000000000000E-6143 -> 9.99999999999999999999999999999999E-6144 -dqnextm174 nextminus 9E-6176 -> 8E-6176 -dqnextm175 nextminus 9.9E-6175 -> 9.8E-6175 -dqnextm176 nextminus 9.99999999999999999999999999999E-6147 -> 9.99999999999999999999999999998E-6147 -dqnextm177 nextminus 9.99999999999999999999999999999999E-6144 -> 9.99999999999999999999999999999998E-6144 -dqnextm178 nextminus 9.99999999999999999999999999999998E-6144 -> 9.99999999999999999999999999999997E-6144 -dqnextm179 nextminus 9.99999999999999999999999999999997E-6144 -> 9.99999999999999999999999999999996E-6144 -dqnextm180 nextminus 0E-6176 -> -1E-6176 -dqnextm181 nextminus 1E-6176 -> 0E-6176 -dqnextm182 nextminus 2E-6176 -> 1E-6176 - -dqnextm183 nextminus -0E-6176 -> -1E-6176 -dqnextm184 nextminus -1E-6176 -> -2E-6176 -dqnextm185 nextminus -2E-6176 -> -3E-6176 -dqnextm186 nextminus -10E-6176 -> -1.1E-6175 -dqnextm187 nextminus -100E-6176 -> -1.01E-6174 -dqnextm188 nextminus -100000E-6176 -> -1.00001E-6171 -dqnextm189 nextminus -1.00000000000000000000000000000E-6143 -> -1.000000000000000000000000000000001E-6143 -dqnextm190 nextminus -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000001E-6143 -dqnextm191 nextminus -1E-6143 -> -1.000000000000000000000000000000001E-6143 -dqnextm192 nextminus -9.999999999999999999999999999999998E+6144 -> -9.999999999999999999999999999999999E+6144 -dqnextm193 nextminus -9.999999999999999999999999999999999E+6144 -> -Infinity - --- Null tests -dqnextm900 nextminus # -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqNextMinus.decTest -- decQuad next that is less [754r nextdown] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +dqnextm001 nextminus 0.9999999999999999999999999999999995 -> 0.9999999999999999999999999999999994 +dqnextm002 nextminus 0.9999999999999999999999999999999996 -> 0.9999999999999999999999999999999995 +dqnextm003 nextminus 0.9999999999999999999999999999999997 -> 0.9999999999999999999999999999999996 +dqnextm004 nextminus 0.9999999999999999999999999999999998 -> 0.9999999999999999999999999999999997 +dqnextm005 nextminus 0.9999999999999999999999999999999999 -> 0.9999999999999999999999999999999998 +dqnextm006 nextminus 1.000000000000000000000000000000000 -> 0.9999999999999999999999999999999999 +dqnextm007 nextminus 1.0 -> 0.9999999999999999999999999999999999 +dqnextm008 nextminus 1 -> 0.9999999999999999999999999999999999 +dqnextm009 nextminus 1.000000000000000000000000000000001 -> 1.000000000000000000000000000000000 +dqnextm010 nextminus 1.000000000000000000000000000000002 -> 1.000000000000000000000000000000001 +dqnextm011 nextminus 1.000000000000000000000000000000003 -> 1.000000000000000000000000000000002 +dqnextm012 nextminus 1.000000000000000000000000000000004 -> 1.000000000000000000000000000000003 +dqnextm013 nextminus 1.000000000000000000000000000000005 -> 1.000000000000000000000000000000004 +dqnextm014 nextminus 1.000000000000000000000000000000006 -> 1.000000000000000000000000000000005 +dqnextm015 nextminus 1.000000000000000000000000000000007 -> 1.000000000000000000000000000000006 +dqnextm016 nextminus 1.000000000000000000000000000000008 -> 1.000000000000000000000000000000007 +dqnextm017 nextminus 1.000000000000000000000000000000009 -> 1.000000000000000000000000000000008 +dqnextm018 nextminus 1.000000000000000000000000000000010 -> 1.000000000000000000000000000000009 +dqnextm019 nextminus 1.000000000000000000000000000000011 -> 1.000000000000000000000000000000010 +dqnextm020 nextminus 1.000000000000000000000000000000012 -> 1.000000000000000000000000000000011 + +dqnextm021 nextminus -0.9999999999999999999999999999999995 -> -0.9999999999999999999999999999999996 +dqnextm022 nextminus -0.9999999999999999999999999999999996 -> -0.9999999999999999999999999999999997 +dqnextm023 nextminus -0.9999999999999999999999999999999997 -> -0.9999999999999999999999999999999998 +dqnextm024 nextminus -0.9999999999999999999999999999999998 -> -0.9999999999999999999999999999999999 +dqnextm025 nextminus -0.9999999999999999999999999999999999 -> -1.000000000000000000000000000000000 +dqnextm026 nextminus -1.000000000000000000000000000000000 -> -1.000000000000000000000000000000001 +dqnextm027 nextminus -1.0 -> -1.000000000000000000000000000000001 +dqnextm028 nextminus -1 -> -1.000000000000000000000000000000001 +dqnextm029 nextminus -1.000000000000000000000000000000001 -> -1.000000000000000000000000000000002 +dqnextm030 nextminus -1.000000000000000000000000000000002 -> -1.000000000000000000000000000000003 +dqnextm031 nextminus -1.000000000000000000000000000000003 -> -1.000000000000000000000000000000004 +dqnextm032 nextminus -1.000000000000000000000000000000004 -> -1.000000000000000000000000000000005 +dqnextm033 nextminus -1.000000000000000000000000000000005 -> -1.000000000000000000000000000000006 +dqnextm034 nextminus -1.000000000000000000000000000000006 -> -1.000000000000000000000000000000007 +dqnextm035 nextminus -1.000000000000000000000000000000007 -> -1.000000000000000000000000000000008 +dqnextm036 nextminus -1.000000000000000000000000000000008 -> -1.000000000000000000000000000000009 +dqnextm037 nextminus -1.000000000000000000000000000000009 -> -1.000000000000000000000000000000010 +dqnextm038 nextminus -1.000000000000000000000000000000010 -> -1.000000000000000000000000000000011 +dqnextm039 nextminus -1.000000000000000000000000000000011 -> -1.000000000000000000000000000000012 + +-- ultra-tiny inputs +dqnextm062 nextminus 1E-6176 -> 0E-6176 +dqnextm065 nextminus -1E-6176 -> -2E-6176 + +-- Zeros +dqnextm100 nextminus -0 -> -1E-6176 +dqnextm101 nextminus 0 -> -1E-6176 +dqnextm102 nextminus 0.00 -> -1E-6176 +dqnextm103 nextminus -0.00 -> -1E-6176 +dqnextm104 nextminus 0E-300 -> -1E-6176 +dqnextm105 nextminus 0E+300 -> -1E-6176 +dqnextm106 nextminus 0E+30000 -> -1E-6176 +dqnextm107 nextminus -0E+30000 -> -1E-6176 + +-- specials +dqnextm150 nextminus Inf -> 9.999999999999999999999999999999999E+6144 +dqnextm151 nextminus -Inf -> -Infinity +dqnextm152 nextminus NaN -> NaN +dqnextm153 nextminus sNaN -> NaN Invalid_operation +dqnextm154 nextminus NaN77 -> NaN77 +dqnextm155 nextminus sNaN88 -> NaN88 Invalid_operation +dqnextm156 nextminus -NaN -> -NaN +dqnextm157 nextminus -sNaN -> -NaN Invalid_operation +dqnextm158 nextminus -NaN77 -> -NaN77 +dqnextm159 nextminus -sNaN88 -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +dqnextm170 nextminus 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999998E+6144 +dqnextm171 nextminus 9.999999999999999999999999999999998E+6144 -> 9.999999999999999999999999999999997E+6144 +dqnextm172 nextminus 1E-6143 -> 9.99999999999999999999999999999999E-6144 +dqnextm173 nextminus 1.000000000000000000000000000000000E-6143 -> 9.99999999999999999999999999999999E-6144 +dqnextm174 nextminus 9E-6176 -> 8E-6176 +dqnextm175 nextminus 9.9E-6175 -> 9.8E-6175 +dqnextm176 nextminus 9.99999999999999999999999999999E-6147 -> 9.99999999999999999999999999998E-6147 +dqnextm177 nextminus 9.99999999999999999999999999999999E-6144 -> 9.99999999999999999999999999999998E-6144 +dqnextm178 nextminus 9.99999999999999999999999999999998E-6144 -> 9.99999999999999999999999999999997E-6144 +dqnextm179 nextminus 9.99999999999999999999999999999997E-6144 -> 9.99999999999999999999999999999996E-6144 +dqnextm180 nextminus 0E-6176 -> -1E-6176 +dqnextm181 nextminus 1E-6176 -> 0E-6176 +dqnextm182 nextminus 2E-6176 -> 1E-6176 + +dqnextm183 nextminus -0E-6176 -> -1E-6176 +dqnextm184 nextminus -1E-6176 -> -2E-6176 +dqnextm185 nextminus -2E-6176 -> -3E-6176 +dqnextm186 nextminus -10E-6176 -> -1.1E-6175 +dqnextm187 nextminus -100E-6176 -> -1.01E-6174 +dqnextm188 nextminus -100000E-6176 -> -1.00001E-6171 +dqnextm189 nextminus -1.00000000000000000000000000000E-6143 -> -1.000000000000000000000000000000001E-6143 +dqnextm190 nextminus -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000001E-6143 +dqnextm191 nextminus -1E-6143 -> -1.000000000000000000000000000000001E-6143 +dqnextm192 nextminus -9.999999999999999999999999999999998E+6144 -> -9.999999999999999999999999999999999E+6144 +dqnextm193 nextminus -9.999999999999999999999999999999999E+6144 -> -Infinity + +-- Null tests +dqnextm900 nextminus # -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqNextPlus.decTest b/Lib/test/decimaltestdata/dqNextPlus.decTest index ac3f04e..8c8e9cd 100644 --- a/Lib/test/decimaltestdata/dqNextPlus.decTest +++ b/Lib/test/decimaltestdata/dqNextPlus.decTest @@ -1,124 +1,124 @@ ------------------------------------------------------------------------- --- dqNextPlus.decTest -- decQuad next that is greater [754r nextup] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - -dqnextp001 nextplus 0.9999999999999999999999999999999995 -> 0.9999999999999999999999999999999996 -dqnextp002 nextplus 0.9999999999999999999999999999999996 -> 0.9999999999999999999999999999999997 -dqnextp003 nextplus 0.9999999999999999999999999999999997 -> 0.9999999999999999999999999999999998 -dqnextp004 nextplus 0.9999999999999999999999999999999998 -> 0.9999999999999999999999999999999999 -dqnextp005 nextplus 0.9999999999999999999999999999999999 -> 1.000000000000000000000000000000000 -dqnextp006 nextplus 1.000000000000000000000000000000000 -> 1.000000000000000000000000000000001 -dqnextp007 nextplus 1.0 -> 1.000000000000000000000000000000001 -dqnextp008 nextplus 1 -> 1.000000000000000000000000000000001 -dqnextp009 nextplus 1.000000000000000000000000000000001 -> 1.000000000000000000000000000000002 -dqnextp010 nextplus 1.000000000000000000000000000000002 -> 1.000000000000000000000000000000003 -dqnextp011 nextplus 1.000000000000000000000000000000003 -> 1.000000000000000000000000000000004 -dqnextp012 nextplus 1.000000000000000000000000000000004 -> 1.000000000000000000000000000000005 -dqnextp013 nextplus 1.000000000000000000000000000000005 -> 1.000000000000000000000000000000006 -dqnextp014 nextplus 1.000000000000000000000000000000006 -> 1.000000000000000000000000000000007 -dqnextp015 nextplus 1.000000000000000000000000000000007 -> 1.000000000000000000000000000000008 -dqnextp016 nextplus 1.000000000000000000000000000000008 -> 1.000000000000000000000000000000009 -dqnextp017 nextplus 1.000000000000000000000000000000009 -> 1.000000000000000000000000000000010 -dqnextp018 nextplus 1.000000000000000000000000000000010 -> 1.000000000000000000000000000000011 -dqnextp019 nextplus 1.000000000000000000000000000000011 -> 1.000000000000000000000000000000012 - -dqnextp021 nextplus -0.9999999999999999999999999999999995 -> -0.9999999999999999999999999999999994 -dqnextp022 nextplus -0.9999999999999999999999999999999996 -> -0.9999999999999999999999999999999995 -dqnextp023 nextplus -0.9999999999999999999999999999999997 -> -0.9999999999999999999999999999999996 -dqnextp024 nextplus -0.9999999999999999999999999999999998 -> -0.9999999999999999999999999999999997 -dqnextp025 nextplus -0.9999999999999999999999999999999999 -> -0.9999999999999999999999999999999998 -dqnextp026 nextplus -1.000000000000000000000000000000000 -> -0.9999999999999999999999999999999999 -dqnextp027 nextplus -1.0 -> -0.9999999999999999999999999999999999 -dqnextp028 nextplus -1 -> -0.9999999999999999999999999999999999 -dqnextp029 nextplus -1.000000000000000000000000000000001 -> -1.000000000000000000000000000000000 -dqnextp030 nextplus -1.000000000000000000000000000000002 -> -1.000000000000000000000000000000001 -dqnextp031 nextplus -1.000000000000000000000000000000003 -> -1.000000000000000000000000000000002 -dqnextp032 nextplus -1.000000000000000000000000000000004 -> -1.000000000000000000000000000000003 -dqnextp033 nextplus -1.000000000000000000000000000000005 -> -1.000000000000000000000000000000004 -dqnextp034 nextplus -1.000000000000000000000000000000006 -> -1.000000000000000000000000000000005 -dqnextp035 nextplus -1.000000000000000000000000000000007 -> -1.000000000000000000000000000000006 -dqnextp036 nextplus -1.000000000000000000000000000000008 -> -1.000000000000000000000000000000007 -dqnextp037 nextplus -1.000000000000000000000000000000009 -> -1.000000000000000000000000000000008 -dqnextp038 nextplus -1.000000000000000000000000000000010 -> -1.000000000000000000000000000000009 -dqnextp039 nextplus -1.000000000000000000000000000000011 -> -1.000000000000000000000000000000010 -dqnextp040 nextplus -1.000000000000000000000000000000012 -> -1.000000000000000000000000000000011 - --- Zeros -dqnextp100 nextplus 0 -> 1E-6176 -dqnextp101 nextplus 0.00 -> 1E-6176 -dqnextp102 nextplus 0E-300 -> 1E-6176 -dqnextp103 nextplus 0E+300 -> 1E-6176 -dqnextp104 nextplus 0E+30000 -> 1E-6176 -dqnextp105 nextplus -0 -> 1E-6176 -dqnextp106 nextplus -0.00 -> 1E-6176 -dqnextp107 nextplus -0E-300 -> 1E-6176 -dqnextp108 nextplus -0E+300 -> 1E-6176 -dqnextp109 nextplus -0E+30000 -> 1E-6176 - --- specials -dqnextp150 nextplus Inf -> Infinity -dqnextp151 nextplus -Inf -> -9.999999999999999999999999999999999E+6144 -dqnextp152 nextplus NaN -> NaN -dqnextp153 nextplus sNaN -> NaN Invalid_operation -dqnextp154 nextplus NaN77 -> NaN77 -dqnextp155 nextplus sNaN88 -> NaN88 Invalid_operation -dqnextp156 nextplus -NaN -> -NaN -dqnextp157 nextplus -sNaN -> -NaN Invalid_operation -dqnextp158 nextplus -NaN77 -> -NaN77 -dqnextp159 nextplus -sNaN88 -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -dqnextp170 nextplus -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999998E+6144 -dqnextp171 nextplus -9.999999999999999999999999999999998E+6144 -> -9.999999999999999999999999999999997E+6144 -dqnextp172 nextplus -1E-6143 -> -9.99999999999999999999999999999999E-6144 -dqnextp173 nextplus -1.000000000000000E-6143 -> -9.99999999999999999999999999999999E-6144 -dqnextp174 nextplus -9E-6176 -> -8E-6176 -dqnextp175 nextplus -9.9E-6175 -> -9.8E-6175 -dqnextp176 nextplus -9.99999999999999999999999999999E-6147 -> -9.99999999999999999999999999998E-6147 -dqnextp177 nextplus -9.99999999999999999999999999999999E-6144 -> -9.99999999999999999999999999999998E-6144 -dqnextp178 nextplus -9.99999999999999999999999999999998E-6144 -> -9.99999999999999999999999999999997E-6144 -dqnextp179 nextplus -9.99999999999999999999999999999997E-6144 -> -9.99999999999999999999999999999996E-6144 -dqnextp180 nextplus -0E-6176 -> 1E-6176 -dqnextp181 nextplus -1E-6176 -> -0E-6176 -dqnextp182 nextplus -2E-6176 -> -1E-6176 - -dqnextp183 nextplus 0E-6176 -> 1E-6176 -dqnextp184 nextplus 1E-6176 -> 2E-6176 -dqnextp185 nextplus 2E-6176 -> 3E-6176 -dqnextp186 nextplus 10E-6176 -> 1.1E-6175 -dqnextp187 nextplus 100E-6176 -> 1.01E-6174 -dqnextp188 nextplus 100000E-6176 -> 1.00001E-6171 -dqnextp189 nextplus 1.00000000000000000000000000000E-6143 -> 1.000000000000000000000000000000001E-6143 -dqnextp190 nextplus 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000001E-6143 -dqnextp191 nextplus 1E-6143 -> 1.000000000000000000000000000000001E-6143 -dqnextp192 nextplus 9.999999999999999999999999999999998E+6144 -> 9.999999999999999999999999999999999E+6144 -dqnextp193 nextplus 9.999999999999999999999999999999999E+6144 -> Infinity - --- Null tests -dqnextp900 nextplus # -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqNextPlus.decTest -- decQuad next that is greater [754r nextup] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +dqnextp001 nextplus 0.9999999999999999999999999999999995 -> 0.9999999999999999999999999999999996 +dqnextp002 nextplus 0.9999999999999999999999999999999996 -> 0.9999999999999999999999999999999997 +dqnextp003 nextplus 0.9999999999999999999999999999999997 -> 0.9999999999999999999999999999999998 +dqnextp004 nextplus 0.9999999999999999999999999999999998 -> 0.9999999999999999999999999999999999 +dqnextp005 nextplus 0.9999999999999999999999999999999999 -> 1.000000000000000000000000000000000 +dqnextp006 nextplus 1.000000000000000000000000000000000 -> 1.000000000000000000000000000000001 +dqnextp007 nextplus 1.0 -> 1.000000000000000000000000000000001 +dqnextp008 nextplus 1 -> 1.000000000000000000000000000000001 +dqnextp009 nextplus 1.000000000000000000000000000000001 -> 1.000000000000000000000000000000002 +dqnextp010 nextplus 1.000000000000000000000000000000002 -> 1.000000000000000000000000000000003 +dqnextp011 nextplus 1.000000000000000000000000000000003 -> 1.000000000000000000000000000000004 +dqnextp012 nextplus 1.000000000000000000000000000000004 -> 1.000000000000000000000000000000005 +dqnextp013 nextplus 1.000000000000000000000000000000005 -> 1.000000000000000000000000000000006 +dqnextp014 nextplus 1.000000000000000000000000000000006 -> 1.000000000000000000000000000000007 +dqnextp015 nextplus 1.000000000000000000000000000000007 -> 1.000000000000000000000000000000008 +dqnextp016 nextplus 1.000000000000000000000000000000008 -> 1.000000000000000000000000000000009 +dqnextp017 nextplus 1.000000000000000000000000000000009 -> 1.000000000000000000000000000000010 +dqnextp018 nextplus 1.000000000000000000000000000000010 -> 1.000000000000000000000000000000011 +dqnextp019 nextplus 1.000000000000000000000000000000011 -> 1.000000000000000000000000000000012 + +dqnextp021 nextplus -0.9999999999999999999999999999999995 -> -0.9999999999999999999999999999999994 +dqnextp022 nextplus -0.9999999999999999999999999999999996 -> -0.9999999999999999999999999999999995 +dqnextp023 nextplus -0.9999999999999999999999999999999997 -> -0.9999999999999999999999999999999996 +dqnextp024 nextplus -0.9999999999999999999999999999999998 -> -0.9999999999999999999999999999999997 +dqnextp025 nextplus -0.9999999999999999999999999999999999 -> -0.9999999999999999999999999999999998 +dqnextp026 nextplus -1.000000000000000000000000000000000 -> -0.9999999999999999999999999999999999 +dqnextp027 nextplus -1.0 -> -0.9999999999999999999999999999999999 +dqnextp028 nextplus -1 -> -0.9999999999999999999999999999999999 +dqnextp029 nextplus -1.000000000000000000000000000000001 -> -1.000000000000000000000000000000000 +dqnextp030 nextplus -1.000000000000000000000000000000002 -> -1.000000000000000000000000000000001 +dqnextp031 nextplus -1.000000000000000000000000000000003 -> -1.000000000000000000000000000000002 +dqnextp032 nextplus -1.000000000000000000000000000000004 -> -1.000000000000000000000000000000003 +dqnextp033 nextplus -1.000000000000000000000000000000005 -> -1.000000000000000000000000000000004 +dqnextp034 nextplus -1.000000000000000000000000000000006 -> -1.000000000000000000000000000000005 +dqnextp035 nextplus -1.000000000000000000000000000000007 -> -1.000000000000000000000000000000006 +dqnextp036 nextplus -1.000000000000000000000000000000008 -> -1.000000000000000000000000000000007 +dqnextp037 nextplus -1.000000000000000000000000000000009 -> -1.000000000000000000000000000000008 +dqnextp038 nextplus -1.000000000000000000000000000000010 -> -1.000000000000000000000000000000009 +dqnextp039 nextplus -1.000000000000000000000000000000011 -> -1.000000000000000000000000000000010 +dqnextp040 nextplus -1.000000000000000000000000000000012 -> -1.000000000000000000000000000000011 + +-- Zeros +dqnextp100 nextplus 0 -> 1E-6176 +dqnextp101 nextplus 0.00 -> 1E-6176 +dqnextp102 nextplus 0E-300 -> 1E-6176 +dqnextp103 nextplus 0E+300 -> 1E-6176 +dqnextp104 nextplus 0E+30000 -> 1E-6176 +dqnextp105 nextplus -0 -> 1E-6176 +dqnextp106 nextplus -0.00 -> 1E-6176 +dqnextp107 nextplus -0E-300 -> 1E-6176 +dqnextp108 nextplus -0E+300 -> 1E-6176 +dqnextp109 nextplus -0E+30000 -> 1E-6176 + +-- specials +dqnextp150 nextplus Inf -> Infinity +dqnextp151 nextplus -Inf -> -9.999999999999999999999999999999999E+6144 +dqnextp152 nextplus NaN -> NaN +dqnextp153 nextplus sNaN -> NaN Invalid_operation +dqnextp154 nextplus NaN77 -> NaN77 +dqnextp155 nextplus sNaN88 -> NaN88 Invalid_operation +dqnextp156 nextplus -NaN -> -NaN +dqnextp157 nextplus -sNaN -> -NaN Invalid_operation +dqnextp158 nextplus -NaN77 -> -NaN77 +dqnextp159 nextplus -sNaN88 -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +dqnextp170 nextplus -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999998E+6144 +dqnextp171 nextplus -9.999999999999999999999999999999998E+6144 -> -9.999999999999999999999999999999997E+6144 +dqnextp172 nextplus -1E-6143 -> -9.99999999999999999999999999999999E-6144 +dqnextp173 nextplus -1.000000000000000E-6143 -> -9.99999999999999999999999999999999E-6144 +dqnextp174 nextplus -9E-6176 -> -8E-6176 +dqnextp175 nextplus -9.9E-6175 -> -9.8E-6175 +dqnextp176 nextplus -9.99999999999999999999999999999E-6147 -> -9.99999999999999999999999999998E-6147 +dqnextp177 nextplus -9.99999999999999999999999999999999E-6144 -> -9.99999999999999999999999999999998E-6144 +dqnextp178 nextplus -9.99999999999999999999999999999998E-6144 -> -9.99999999999999999999999999999997E-6144 +dqnextp179 nextplus -9.99999999999999999999999999999997E-6144 -> -9.99999999999999999999999999999996E-6144 +dqnextp180 nextplus -0E-6176 -> 1E-6176 +dqnextp181 nextplus -1E-6176 -> -0E-6176 +dqnextp182 nextplus -2E-6176 -> -1E-6176 + +dqnextp183 nextplus 0E-6176 -> 1E-6176 +dqnextp184 nextplus 1E-6176 -> 2E-6176 +dqnextp185 nextplus 2E-6176 -> 3E-6176 +dqnextp186 nextplus 10E-6176 -> 1.1E-6175 +dqnextp187 nextplus 100E-6176 -> 1.01E-6174 +dqnextp188 nextplus 100000E-6176 -> 1.00001E-6171 +dqnextp189 nextplus 1.00000000000000000000000000000E-6143 -> 1.000000000000000000000000000000001E-6143 +dqnextp190 nextplus 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000001E-6143 +dqnextp191 nextplus 1E-6143 -> 1.000000000000000000000000000000001E-6143 +dqnextp192 nextplus 9.999999999999999999999999999999998E+6144 -> 9.999999999999999999999999999999999E+6144 +dqnextp193 nextplus 9.999999999999999999999999999999999E+6144 -> Infinity + +-- Null tests +dqnextp900 nextplus # -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqNextToward.decTest b/Lib/test/decimaltestdata/dqNextToward.decTest index e6d1e0b..107e7f5 100644 --- a/Lib/test/decimaltestdata/dqNextToward.decTest +++ b/Lib/test/decimaltestdata/dqNextToward.decTest @@ -1,375 +1,375 @@ ------------------------------------------------------------------------- --- dqNextToward.decTest -- decQuad next toward rhs [754r nextafter] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - - --- Sanity check with a scattering of numerics -dqnextt001 nexttoward 10 10 -> 10 -dqnextt002 nexttoward -10 -10 -> -10 -dqnextt003 nexttoward 1 10 -> 1.000000000000000000000000000000001 -dqnextt004 nexttoward 1 -10 -> 0.9999999999999999999999999999999999 -dqnextt005 nexttoward -1 10 -> -0.9999999999999999999999999999999999 -dqnextt006 nexttoward -1 -10 -> -1.000000000000000000000000000000001 -dqnextt007 nexttoward 0 10 -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt008 nexttoward 0 -10 -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt009 nexttoward 9.999999999999999999999999999999999E+6144 +Infinity -> Infinity Overflow Inexact Rounded -dqnextt010 nexttoward -9.999999999999999999999999999999999E+6144 -Infinity -> -Infinity Overflow Inexact Rounded -dqnextt011 nexttoward 9.999999999999999999999999999999999 10 -> 10.00000000000000000000000000000000 -dqnextt012 nexttoward 10 9.999999999999999999999999999999999 -> 9.999999999999999999999999999999999 -dqnextt013 nexttoward -9.999999999999999999999999999999999 -10 -> -10.00000000000000000000000000000000 -dqnextt014 nexttoward -10 -9.999999999999999999999999999999999 -> -9.999999999999999999999999999999999 -dqnextt015 nexttoward 9.999999999999999999999999999999998 10 -> 9.999999999999999999999999999999999 -dqnextt016 nexttoward 10 9.999999999999999999999999999999998 -> 9.999999999999999999999999999999999 -dqnextt017 nexttoward -9.999999999999999999999999999999998 -10 -> -9.999999999999999999999999999999999 -dqnextt018 nexttoward -10 -9.999999999999999999999999999999998 -> -9.999999999999999999999999999999999 - -------- lhs=rhs --- finites -dqnextt101 nexttoward 7 7 -> 7 -dqnextt102 nexttoward -7 -7 -> -7 -dqnextt103 nexttoward 75 75 -> 75 -dqnextt104 nexttoward -75 -75 -> -75 -dqnextt105 nexttoward 7.50 7.5 -> 7.50 -dqnextt106 nexttoward -7.50 -7.50 -> -7.50 -dqnextt107 nexttoward 7.500 7.5000 -> 7.500 -dqnextt108 nexttoward -7.500 -7.5 -> -7.500 - --- zeros -dqnextt111 nexttoward 0 0 -> 0 -dqnextt112 nexttoward -0 -0 -> -0 -dqnextt113 nexttoward 0E+4 0 -> 0E+4 -dqnextt114 nexttoward -0E+4 -0 -> -0E+4 -dqnextt115 nexttoward 0.00000000000 0.000000000000 -> 0E-11 -dqnextt116 nexttoward -0.00000000000 -0.00 -> -0E-11 -dqnextt117 nexttoward 0E-141 0 -> 0E-141 -dqnextt118 nexttoward -0E-141 -000 -> -0E-141 - --- full coefficients, alternating bits -dqnextt121 nexttoward 268268268 268268268 -> 268268268 -dqnextt122 nexttoward -268268268 -268268268 -> -268268268 -dqnextt123 nexttoward 134134134 134134134 -> 134134134 -dqnextt124 nexttoward -134134134 -134134134 -> -134134134 - --- Nmax, Nmin, Ntiny -dqnextt131 nexttoward 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 -dqnextt132 nexttoward 1E-6143 1E-6143 -> 1E-6143 -dqnextt133 nexttoward 1.000000000000000000000000000000000E-6143 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqnextt134 nexttoward 1E-6176 1E-6176 -> 1E-6176 - -dqnextt135 nexttoward -1E-6176 -1E-6176 -> -1E-6176 -dqnextt136 nexttoward -1.000000000000000000000000000000000E-6143 -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 -dqnextt137 nexttoward -1E-6143 -1E-6143 -> -1E-6143 -dqnextt138 nexttoward -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 - -------- lhs 0.9999999999999999999999999999999996 -dqnextt202 nexttoward 0.9999999999999999999999999999999996 Infinity -> 0.9999999999999999999999999999999997 -dqnextt203 nexttoward 0.9999999999999999999999999999999997 Infinity -> 0.9999999999999999999999999999999998 -dqnextt204 nexttoward 0.9999999999999999999999999999999998 Infinity -> 0.9999999999999999999999999999999999 -dqnextt205 nexttoward 0.9999999999999999999999999999999999 Infinity -> 1.000000000000000000000000000000000 -dqnextt206 nexttoward 1.000000000000000000000000000000000 Infinity -> 1.000000000000000000000000000000001 -dqnextt207 nexttoward 1.0 Infinity -> 1.000000000000000000000000000000001 -dqnextt208 nexttoward 1 Infinity -> 1.000000000000000000000000000000001 -dqnextt209 nexttoward 1.000000000000000000000000000000001 Infinity -> 1.000000000000000000000000000000002 -dqnextt210 nexttoward 1.000000000000000000000000000000002 Infinity -> 1.000000000000000000000000000000003 -dqnextt211 nexttoward 1.000000000000000000000000000000003 Infinity -> 1.000000000000000000000000000000004 -dqnextt212 nexttoward 1.000000000000000000000000000000004 Infinity -> 1.000000000000000000000000000000005 -dqnextt213 nexttoward 1.000000000000000000000000000000005 Infinity -> 1.000000000000000000000000000000006 -dqnextt214 nexttoward 1.000000000000000000000000000000006 Infinity -> 1.000000000000000000000000000000007 -dqnextt215 nexttoward 1.000000000000000000000000000000007 Infinity -> 1.000000000000000000000000000000008 -dqnextt216 nexttoward 1.000000000000000000000000000000008 Infinity -> 1.000000000000000000000000000000009 -dqnextt217 nexttoward 1.000000000000000000000000000000009 Infinity -> 1.000000000000000000000000000000010 -dqnextt218 nexttoward 1.000000000000000000000000000000010 Infinity -> 1.000000000000000000000000000000011 -dqnextt219 nexttoward 1.000000000000000000000000000000011 Infinity -> 1.000000000000000000000000000000012 - -dqnextt221 nexttoward -0.9999999999999999999999999999999995 Infinity -> -0.9999999999999999999999999999999994 -dqnextt222 nexttoward -0.9999999999999999999999999999999996 Infinity -> -0.9999999999999999999999999999999995 -dqnextt223 nexttoward -0.9999999999999999999999999999999997 Infinity -> -0.9999999999999999999999999999999996 -dqnextt224 nexttoward -0.9999999999999999999999999999999998 Infinity -> -0.9999999999999999999999999999999997 -dqnextt225 nexttoward -0.9999999999999999999999999999999999 Infinity -> -0.9999999999999999999999999999999998 -dqnextt226 nexttoward -1.000000000000000000000000000000000 Infinity -> -0.9999999999999999999999999999999999 -dqnextt227 nexttoward -1.0 Infinity -> -0.9999999999999999999999999999999999 -dqnextt228 nexttoward -1 Infinity -> -0.9999999999999999999999999999999999 -dqnextt229 nexttoward -1.000000000000000000000000000000001 Infinity -> -1.000000000000000000000000000000000 -dqnextt230 nexttoward -1.000000000000000000000000000000002 Infinity -> -1.000000000000000000000000000000001 -dqnextt231 nexttoward -1.000000000000000000000000000000003 Infinity -> -1.000000000000000000000000000000002 -dqnextt232 nexttoward -1.000000000000000000000000000000004 Infinity -> -1.000000000000000000000000000000003 -dqnextt233 nexttoward -1.000000000000000000000000000000005 Infinity -> -1.000000000000000000000000000000004 -dqnextt234 nexttoward -1.000000000000000000000000000000006 Infinity -> -1.000000000000000000000000000000005 -dqnextt235 nexttoward -1.000000000000000000000000000000007 Infinity -> -1.000000000000000000000000000000006 -dqnextt236 nexttoward -1.000000000000000000000000000000008 Infinity -> -1.000000000000000000000000000000007 -dqnextt237 nexttoward -1.000000000000000000000000000000009 Infinity -> -1.000000000000000000000000000000008 -dqnextt238 nexttoward -1.000000000000000000000000000000010 Infinity -> -1.000000000000000000000000000000009 -dqnextt239 nexttoward -1.000000000000000000000000000000011 Infinity -> -1.000000000000000000000000000000010 -dqnextt240 nexttoward -1.000000000000000000000000000000012 Infinity -> -1.000000000000000000000000000000011 - --- Zeros -dqnextt300 nexttoward 0 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt301 nexttoward 0.00 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt302 nexttoward 0E-300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt303 nexttoward 0E+300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt304 nexttoward 0E+30000 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt305 nexttoward -0 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt306 nexttoward -0.00 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt307 nexttoward -0E-300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt308 nexttoward -0E+300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt309 nexttoward -0E+30000 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded - --- specials -dqnextt350 nexttoward Inf Infinity -> Infinity -dqnextt351 nexttoward -Inf Infinity -> -9.999999999999999999999999999999999E+6144 -dqnextt352 nexttoward NaN Infinity -> NaN -dqnextt353 nexttoward sNaN Infinity -> NaN Invalid_operation -dqnextt354 nexttoward NaN77 Infinity -> NaN77 -dqnextt355 nexttoward sNaN88 Infinity -> NaN88 Invalid_operation -dqnextt356 nexttoward -NaN Infinity -> -NaN -dqnextt357 nexttoward -sNaN Infinity -> -NaN Invalid_operation -dqnextt358 nexttoward -NaN77 Infinity -> -NaN77 -dqnextt359 nexttoward -sNaN88 Infinity -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -dqnextt370 nexttoward -9.999999999999999999999999999999999E+6144 Infinity -> -9.999999999999999999999999999999998E+6144 -dqnextt371 nexttoward -9.999999999999999999999999999999998E+6144 Infinity -> -9.999999999999999999999999999999997E+6144 -dqnextt372 nexttoward -1E-6143 Infinity -> -9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded -dqnextt373 nexttoward -1.000000000000000E-6143 Infinity -> -9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded -dqnextt374 nexttoward -9E-6176 Infinity -> -8E-6176 Underflow Subnormal Inexact Rounded -dqnextt375 nexttoward -9.9E-6175 Infinity -> -9.8E-6175 Underflow Subnormal Inexact Rounded -dqnextt376 nexttoward -9.99999999999999999999999999999E-6147 Infinity -> -9.99999999999999999999999999998E-6147 Underflow Subnormal Inexact Rounded -dqnextt377 nexttoward -9.99999999999999999999999999999999E-6144 Infinity -> -9.99999999999999999999999999999998E-6144 Underflow Subnormal Inexact Rounded -dqnextt378 nexttoward -9.99999999999999999999999999999998E-6144 Infinity -> -9.99999999999999999999999999999997E-6144 Underflow Subnormal Inexact Rounded -dqnextt379 nexttoward -9.99999999999999999999999999999997E-6144 Infinity -> -9.99999999999999999999999999999996E-6144 Underflow Subnormal Inexact Rounded -dqnextt380 nexttoward -0E-6176 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt381 nexttoward -1E-6176 Infinity -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqnextt382 nexttoward -2E-6176 Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded - -dqnextt383 nexttoward 0E-6176 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt384 nexttoward 1E-6176 Infinity -> 2E-6176 Underflow Subnormal Inexact Rounded -dqnextt385 nexttoward 2E-6176 Infinity -> 3E-6176 Underflow Subnormal Inexact Rounded -dqnextt386 nexttoward 10E-6176 Infinity -> 1.1E-6175 Underflow Subnormal Inexact Rounded -dqnextt387 nexttoward 100E-6176 Infinity -> 1.01E-6174 Underflow Subnormal Inexact Rounded -dqnextt388 nexttoward 100000E-6176 Infinity -> 1.00001E-6171 Underflow Subnormal Inexact Rounded -dqnextt389 nexttoward 1.00000000000000000000000000000E-6143 Infinity -> 1.000000000000000000000000000000001E-6143 -dqnextt390 nexttoward 1.000000000000000000000000000000000E-6143 Infinity -> 1.000000000000000000000000000000001E-6143 -dqnextt391 nexttoward 1E-6143 Infinity -> 1.000000000000000000000000000000001E-6143 -dqnextt392 nexttoward 9.999999999999999999999999999999997E+6144 Infinity -> 9.999999999999999999999999999999998E+6144 -dqnextt393 nexttoward 9.999999999999999999999999999999998E+6144 Infinity -> 9.999999999999999999999999999999999E+6144 -dqnextt394 nexttoward 9.999999999999999999999999999999999E+6144 Infinity -> Infinity Overflow Inexact Rounded - -------- lhs>rhs -dqnextt401 nexttoward 0.9999999999999999999999999999999995 -Infinity -> 0.9999999999999999999999999999999994 -dqnextt402 nexttoward 0.9999999999999999999999999999999996 -Infinity -> 0.9999999999999999999999999999999995 -dqnextt403 nexttoward 0.9999999999999999999999999999999997 -Infinity -> 0.9999999999999999999999999999999996 -dqnextt404 nexttoward 0.9999999999999999999999999999999998 -Infinity -> 0.9999999999999999999999999999999997 -dqnextt405 nexttoward 0.9999999999999999999999999999999999 -Infinity -> 0.9999999999999999999999999999999998 -dqnextt406 nexttoward 1.000000000000000000000000000000000 -Infinity -> 0.9999999999999999999999999999999999 -dqnextt407 nexttoward 1.0 -Infinity -> 0.9999999999999999999999999999999999 -dqnextt408 nexttoward 1 -Infinity -> 0.9999999999999999999999999999999999 -dqnextt409 nexttoward 1.000000000000000000000000000000001 -Infinity -> 1.000000000000000000000000000000000 -dqnextt410 nexttoward 1.000000000000000000000000000000002 -Infinity -> 1.000000000000000000000000000000001 -dqnextt411 nexttoward 1.000000000000000000000000000000003 -Infinity -> 1.000000000000000000000000000000002 -dqnextt412 nexttoward 1.000000000000000000000000000000004 -Infinity -> 1.000000000000000000000000000000003 -dqnextt413 nexttoward 1.000000000000000000000000000000005 -Infinity -> 1.000000000000000000000000000000004 -dqnextt414 nexttoward 1.000000000000000000000000000000006 -Infinity -> 1.000000000000000000000000000000005 -dqnextt415 nexttoward 1.000000000000000000000000000000007 -Infinity -> 1.000000000000000000000000000000006 -dqnextt416 nexttoward 1.000000000000000000000000000000008 -Infinity -> 1.000000000000000000000000000000007 -dqnextt417 nexttoward 1.000000000000000000000000000000009 -Infinity -> 1.000000000000000000000000000000008 -dqnextt418 nexttoward 1.000000000000000000000000000000010 -Infinity -> 1.000000000000000000000000000000009 -dqnextt419 nexttoward 1.000000000000000000000000000000011 -Infinity -> 1.000000000000000000000000000000010 -dqnextt420 nexttoward 1.000000000000000000000000000000012 -Infinity -> 1.000000000000000000000000000000011 - -dqnextt421 nexttoward -0.9999999999999999999999999999999995 -Infinity -> -0.9999999999999999999999999999999996 -dqnextt422 nexttoward -0.9999999999999999999999999999999996 -Infinity -> -0.9999999999999999999999999999999997 -dqnextt423 nexttoward -0.9999999999999999999999999999999997 -Infinity -> -0.9999999999999999999999999999999998 -dqnextt424 nexttoward -0.9999999999999999999999999999999998 -Infinity -> -0.9999999999999999999999999999999999 -dqnextt425 nexttoward -0.9999999999999999999999999999999999 -Infinity -> -1.000000000000000000000000000000000 -dqnextt426 nexttoward -1.000000000000000000000000000000000 -Infinity -> -1.000000000000000000000000000000001 -dqnextt427 nexttoward -1.0 -Infinity -> -1.000000000000000000000000000000001 -dqnextt428 nexttoward -1 -Infinity -> -1.000000000000000000000000000000001 -dqnextt429 nexttoward -1.000000000000000000000000000000001 -Infinity -> -1.000000000000000000000000000000002 -dqnextt430 nexttoward -1.000000000000000000000000000000002 -Infinity -> -1.000000000000000000000000000000003 -dqnextt431 nexttoward -1.000000000000000000000000000000003 -Infinity -> -1.000000000000000000000000000000004 -dqnextt432 nexttoward -1.000000000000000000000000000000004 -Infinity -> -1.000000000000000000000000000000005 -dqnextt433 nexttoward -1.000000000000000000000000000000005 -Infinity -> -1.000000000000000000000000000000006 -dqnextt434 nexttoward -1.000000000000000000000000000000006 -Infinity -> -1.000000000000000000000000000000007 -dqnextt435 nexttoward -1.000000000000000000000000000000007 -Infinity -> -1.000000000000000000000000000000008 -dqnextt436 nexttoward -1.000000000000000000000000000000008 -Infinity -> -1.000000000000000000000000000000009 -dqnextt437 nexttoward -1.000000000000000000000000000000009 -Infinity -> -1.000000000000000000000000000000010 -dqnextt438 nexttoward -1.000000000000000000000000000000010 -Infinity -> -1.000000000000000000000000000000011 -dqnextt439 nexttoward -1.000000000000000000000000000000011 -Infinity -> -1.000000000000000000000000000000012 - --- Zeros -dqnextt500 nexttoward -0 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt501 nexttoward 0 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt502 nexttoward 0.00 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt503 nexttoward -0.00 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt504 nexttoward 0E-300 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt505 nexttoward 0E+300 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt506 nexttoward 0E+30000 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt507 nexttoward -0E+30000 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded - --- specials -dqnextt550 nexttoward Inf -Infinity -> 9.999999999999999999999999999999999E+6144 -dqnextt551 nexttoward -Inf -Infinity -> -Infinity -dqnextt552 nexttoward NaN -Infinity -> NaN -dqnextt553 nexttoward sNaN -Infinity -> NaN Invalid_operation -dqnextt554 nexttoward NaN77 -Infinity -> NaN77 -dqnextt555 nexttoward sNaN88 -Infinity -> NaN88 Invalid_operation -dqnextt556 nexttoward -NaN -Infinity -> -NaN -dqnextt557 nexttoward -sNaN -Infinity -> -NaN Invalid_operation -dqnextt558 nexttoward -NaN77 -Infinity -> -NaN77 -dqnextt559 nexttoward -sNaN88 -Infinity -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -dqnextt670 nexttoward 9.999999999999999999999999999999999E+6144 -Infinity -> 9.999999999999999999999999999999998E+6144 -dqnextt671 nexttoward 9.999999999999999999999999999999998E+6144 -Infinity -> 9.999999999999999999999999999999997E+6144 -dqnextt672 nexttoward 1E-6143 -Infinity -> 9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded -dqnextt673 nexttoward 1.000000000000000000000000000000000E-6143 -Infinity -> 9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded -dqnextt674 nexttoward 9E-6176 -Infinity -> 8E-6176 Underflow Subnormal Inexact Rounded -dqnextt675 nexttoward 9.9E-6175 -Infinity -> 9.8E-6175 Underflow Subnormal Inexact Rounded -dqnextt676 nexttoward 9.99999999999999999999999999999E-6147 -Infinity -> 9.99999999999999999999999999998E-6147 Underflow Subnormal Inexact Rounded -dqnextt677 nexttoward 9.99999999999999999999999999999999E-6144 -Infinity -> 9.99999999999999999999999999999998E-6144 Underflow Subnormal Inexact Rounded -dqnextt678 nexttoward 9.99999999999999999999999999999998E-6144 -Infinity -> 9.99999999999999999999999999999997E-6144 Underflow Subnormal Inexact Rounded -dqnextt679 nexttoward 9.99999999999999999999999999999997E-6144 -Infinity -> 9.99999999999999999999999999999996E-6144 Underflow Subnormal Inexact Rounded -dqnextt680 nexttoward 0E-6176 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt681 nexttoward 1E-6176 -Infinity -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqnextt682 nexttoward 2E-6176 -Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded - -dqnextt683 nexttoward -0E-6176 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt684 nexttoward -1E-6176 -Infinity -> -2E-6176 Underflow Subnormal Inexact Rounded -dqnextt685 nexttoward -2E-6176 -Infinity -> -3E-6176 Underflow Subnormal Inexact Rounded -dqnextt686 nexttoward -10E-6176 -Infinity -> -1.1E-6175 Underflow Subnormal Inexact Rounded -dqnextt687 nexttoward -100E-6176 -Infinity -> -1.01E-6174 Underflow Subnormal Inexact Rounded -dqnextt688 nexttoward -100000E-6176 -Infinity -> -1.00001E-6171 Underflow Subnormal Inexact Rounded -dqnextt689 nexttoward -1.00000000000000000000000000000E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143 -dqnextt690 nexttoward -1.000000000000000000000000000000000E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143 -dqnextt691 nexttoward -1E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143 -dqnextt692 nexttoward -9.999999999999999999999999999999998E+6144 -Infinity -> -9.999999999999999999999999999999999E+6144 -dqnextt693 nexttoward -9.999999999999999999999999999999999E+6144 -Infinity -> -Infinity Overflow Inexact Rounded - -------- Specials -dqnextt780 nexttoward -Inf -Inf -> -Infinity -dqnextt781 nexttoward -Inf -1000 -> -9.999999999999999999999999999999999E+6144 -dqnextt782 nexttoward -Inf -1 -> -9.999999999999999999999999999999999E+6144 -dqnextt783 nexttoward -Inf -0 -> -9.999999999999999999999999999999999E+6144 -dqnextt784 nexttoward -Inf 0 -> -9.999999999999999999999999999999999E+6144 -dqnextt785 nexttoward -Inf 1 -> -9.999999999999999999999999999999999E+6144 -dqnextt786 nexttoward -Inf 1000 -> -9.999999999999999999999999999999999E+6144 -dqnextt787 nexttoward -1000 -Inf -> -1000.000000000000000000000000000001 -dqnextt788 nexttoward -Inf -Inf -> -Infinity -dqnextt789 nexttoward -1 -Inf -> -1.000000000000000000000000000000001 -dqnextt790 nexttoward -0 -Inf -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt791 nexttoward 0 -Inf -> -1E-6176 Underflow Subnormal Inexact Rounded -dqnextt792 nexttoward 1 -Inf -> 0.9999999999999999999999999999999999 -dqnextt793 nexttoward 1000 -Inf -> 999.9999999999999999999999999999999 -dqnextt794 nexttoward Inf -Inf -> 9.999999999999999999999999999999999E+6144 - -dqnextt800 nexttoward Inf -Inf -> 9.999999999999999999999999999999999E+6144 -dqnextt801 nexttoward Inf -1000 -> 9.999999999999999999999999999999999E+6144 -dqnextt802 nexttoward Inf -1 -> 9.999999999999999999999999999999999E+6144 -dqnextt803 nexttoward Inf -0 -> 9.999999999999999999999999999999999E+6144 -dqnextt804 nexttoward Inf 0 -> 9.999999999999999999999999999999999E+6144 -dqnextt805 nexttoward Inf 1 -> 9.999999999999999999999999999999999E+6144 -dqnextt806 nexttoward Inf 1000 -> 9.999999999999999999999999999999999E+6144 -dqnextt807 nexttoward Inf Inf -> Infinity -dqnextt808 nexttoward -1000 Inf -> -999.9999999999999999999999999999999 -dqnextt809 nexttoward -Inf Inf -> -9.999999999999999999999999999999999E+6144 -dqnextt810 nexttoward -1 Inf -> -0.9999999999999999999999999999999999 -dqnextt811 nexttoward -0 Inf -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt812 nexttoward 0 Inf -> 1E-6176 Underflow Subnormal Inexact Rounded -dqnextt813 nexttoward 1 Inf -> 1.000000000000000000000000000000001 -dqnextt814 nexttoward 1000 Inf -> 1000.000000000000000000000000000001 -dqnextt815 nexttoward Inf Inf -> Infinity - -dqnextt821 nexttoward NaN -Inf -> NaN -dqnextt822 nexttoward NaN -1000 -> NaN -dqnextt823 nexttoward NaN -1 -> NaN -dqnextt824 nexttoward NaN -0 -> NaN -dqnextt825 nexttoward NaN 0 -> NaN -dqnextt826 nexttoward NaN 1 -> NaN -dqnextt827 nexttoward NaN 1000 -> NaN -dqnextt828 nexttoward NaN Inf -> NaN -dqnextt829 nexttoward NaN NaN -> NaN -dqnextt830 nexttoward -Inf NaN -> NaN -dqnextt831 nexttoward -1000 NaN -> NaN -dqnextt832 nexttoward -1 NaN -> NaN -dqnextt833 nexttoward -0 NaN -> NaN -dqnextt834 nexttoward 0 NaN -> NaN -dqnextt835 nexttoward 1 NaN -> NaN -dqnextt836 nexttoward 1000 NaN -> NaN -dqnextt837 nexttoward Inf NaN -> NaN - -dqnextt841 nexttoward sNaN -Inf -> NaN Invalid_operation -dqnextt842 nexttoward sNaN -1000 -> NaN Invalid_operation -dqnextt843 nexttoward sNaN -1 -> NaN Invalid_operation -dqnextt844 nexttoward sNaN -0 -> NaN Invalid_operation -dqnextt845 nexttoward sNaN 0 -> NaN Invalid_operation -dqnextt846 nexttoward sNaN 1 -> NaN Invalid_operation -dqnextt847 nexttoward sNaN 1000 -> NaN Invalid_operation -dqnextt848 nexttoward sNaN NaN -> NaN Invalid_operation -dqnextt849 nexttoward sNaN sNaN -> NaN Invalid_operation -dqnextt850 nexttoward NaN sNaN -> NaN Invalid_operation -dqnextt851 nexttoward -Inf sNaN -> NaN Invalid_operation -dqnextt852 nexttoward -1000 sNaN -> NaN Invalid_operation -dqnextt853 nexttoward -1 sNaN -> NaN Invalid_operation -dqnextt854 nexttoward -0 sNaN -> NaN Invalid_operation -dqnextt855 nexttoward 0 sNaN -> NaN Invalid_operation -dqnextt856 nexttoward 1 sNaN -> NaN Invalid_operation -dqnextt857 nexttoward 1000 sNaN -> NaN Invalid_operation -dqnextt858 nexttoward Inf sNaN -> NaN Invalid_operation -dqnextt859 nexttoward NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqnextt861 nexttoward NaN1 -Inf -> NaN1 -dqnextt862 nexttoward +NaN2 -1000 -> NaN2 -dqnextt863 nexttoward NaN3 1000 -> NaN3 -dqnextt864 nexttoward NaN4 Inf -> NaN4 -dqnextt865 nexttoward NaN5 +NaN6 -> NaN5 -dqnextt866 nexttoward -Inf NaN7 -> NaN7 -dqnextt867 nexttoward -1000 NaN8 -> NaN8 -dqnextt868 nexttoward 1000 NaN9 -> NaN9 -dqnextt869 nexttoward Inf +NaN10 -> NaN10 -dqnextt871 nexttoward sNaN11 -Inf -> NaN11 Invalid_operation -dqnextt872 nexttoward sNaN12 -1000 -> NaN12 Invalid_operation -dqnextt873 nexttoward sNaN13 1000 -> NaN13 Invalid_operation -dqnextt874 nexttoward sNaN14 NaN17 -> NaN14 Invalid_operation -dqnextt875 nexttoward sNaN15 sNaN18 -> NaN15 Invalid_operation -dqnextt876 nexttoward NaN16 sNaN19 -> NaN19 Invalid_operation -dqnextt877 nexttoward -Inf +sNaN20 -> NaN20 Invalid_operation -dqnextt878 nexttoward -1000 sNaN21 -> NaN21 Invalid_operation -dqnextt879 nexttoward 1000 sNaN22 -> NaN22 Invalid_operation -dqnextt880 nexttoward Inf sNaN23 -> NaN23 Invalid_operation -dqnextt881 nexttoward +NaN25 +sNaN24 -> NaN24 Invalid_operation -dqnextt882 nexttoward -NaN26 NaN28 -> -NaN26 -dqnextt883 nexttoward -sNaN27 sNaN29 -> -NaN27 Invalid_operation -dqnextt884 nexttoward 1000 -NaN30 -> -NaN30 -dqnextt885 nexttoward 1000 -sNaN31 -> -NaN31 Invalid_operation - --- Null tests -dqnextt900 nexttoward 1 # -> NaN Invalid_operation -dqnextt901 nexttoward # 1 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqNextToward.decTest -- decQuad next toward rhs [754r nextafter] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + + +-- Sanity check with a scattering of numerics +dqnextt001 nexttoward 10 10 -> 10 +dqnextt002 nexttoward -10 -10 -> -10 +dqnextt003 nexttoward 1 10 -> 1.000000000000000000000000000000001 +dqnextt004 nexttoward 1 -10 -> 0.9999999999999999999999999999999999 +dqnextt005 nexttoward -1 10 -> -0.9999999999999999999999999999999999 +dqnextt006 nexttoward -1 -10 -> -1.000000000000000000000000000000001 +dqnextt007 nexttoward 0 10 -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt008 nexttoward 0 -10 -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt009 nexttoward 9.999999999999999999999999999999999E+6144 +Infinity -> Infinity Overflow Inexact Rounded +dqnextt010 nexttoward -9.999999999999999999999999999999999E+6144 -Infinity -> -Infinity Overflow Inexact Rounded +dqnextt011 nexttoward 9.999999999999999999999999999999999 10 -> 10.00000000000000000000000000000000 +dqnextt012 nexttoward 10 9.999999999999999999999999999999999 -> 9.999999999999999999999999999999999 +dqnextt013 nexttoward -9.999999999999999999999999999999999 -10 -> -10.00000000000000000000000000000000 +dqnextt014 nexttoward -10 -9.999999999999999999999999999999999 -> -9.999999999999999999999999999999999 +dqnextt015 nexttoward 9.999999999999999999999999999999998 10 -> 9.999999999999999999999999999999999 +dqnextt016 nexttoward 10 9.999999999999999999999999999999998 -> 9.999999999999999999999999999999999 +dqnextt017 nexttoward -9.999999999999999999999999999999998 -10 -> -9.999999999999999999999999999999999 +dqnextt018 nexttoward -10 -9.999999999999999999999999999999998 -> -9.999999999999999999999999999999999 + +------- lhs=rhs +-- finites +dqnextt101 nexttoward 7 7 -> 7 +dqnextt102 nexttoward -7 -7 -> -7 +dqnextt103 nexttoward 75 75 -> 75 +dqnextt104 nexttoward -75 -75 -> -75 +dqnextt105 nexttoward 7.50 7.5 -> 7.50 +dqnextt106 nexttoward -7.50 -7.50 -> -7.50 +dqnextt107 nexttoward 7.500 7.5000 -> 7.500 +dqnextt108 nexttoward -7.500 -7.5 -> -7.500 + +-- zeros +dqnextt111 nexttoward 0 0 -> 0 +dqnextt112 nexttoward -0 -0 -> -0 +dqnextt113 nexttoward 0E+4 0 -> 0E+4 +dqnextt114 nexttoward -0E+4 -0 -> -0E+4 +dqnextt115 nexttoward 0.00000000000 0.000000000000 -> 0E-11 +dqnextt116 nexttoward -0.00000000000 -0.00 -> -0E-11 +dqnextt117 nexttoward 0E-141 0 -> 0E-141 +dqnextt118 nexttoward -0E-141 -000 -> -0E-141 + +-- full coefficients, alternating bits +dqnextt121 nexttoward 268268268 268268268 -> 268268268 +dqnextt122 nexttoward -268268268 -268268268 -> -268268268 +dqnextt123 nexttoward 134134134 134134134 -> 134134134 +dqnextt124 nexttoward -134134134 -134134134 -> -134134134 + +-- Nmax, Nmin, Ntiny +dqnextt131 nexttoward 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +dqnextt132 nexttoward 1E-6143 1E-6143 -> 1E-6143 +dqnextt133 nexttoward 1.000000000000000000000000000000000E-6143 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqnextt134 nexttoward 1E-6176 1E-6176 -> 1E-6176 + +dqnextt135 nexttoward -1E-6176 -1E-6176 -> -1E-6176 +dqnextt136 nexttoward -1.000000000000000000000000000000000E-6143 -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 +dqnextt137 nexttoward -1E-6143 -1E-6143 -> -1E-6143 +dqnextt138 nexttoward -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 + +------- lhs 0.9999999999999999999999999999999996 +dqnextt202 nexttoward 0.9999999999999999999999999999999996 Infinity -> 0.9999999999999999999999999999999997 +dqnextt203 nexttoward 0.9999999999999999999999999999999997 Infinity -> 0.9999999999999999999999999999999998 +dqnextt204 nexttoward 0.9999999999999999999999999999999998 Infinity -> 0.9999999999999999999999999999999999 +dqnextt205 nexttoward 0.9999999999999999999999999999999999 Infinity -> 1.000000000000000000000000000000000 +dqnextt206 nexttoward 1.000000000000000000000000000000000 Infinity -> 1.000000000000000000000000000000001 +dqnextt207 nexttoward 1.0 Infinity -> 1.000000000000000000000000000000001 +dqnextt208 nexttoward 1 Infinity -> 1.000000000000000000000000000000001 +dqnextt209 nexttoward 1.000000000000000000000000000000001 Infinity -> 1.000000000000000000000000000000002 +dqnextt210 nexttoward 1.000000000000000000000000000000002 Infinity -> 1.000000000000000000000000000000003 +dqnextt211 nexttoward 1.000000000000000000000000000000003 Infinity -> 1.000000000000000000000000000000004 +dqnextt212 nexttoward 1.000000000000000000000000000000004 Infinity -> 1.000000000000000000000000000000005 +dqnextt213 nexttoward 1.000000000000000000000000000000005 Infinity -> 1.000000000000000000000000000000006 +dqnextt214 nexttoward 1.000000000000000000000000000000006 Infinity -> 1.000000000000000000000000000000007 +dqnextt215 nexttoward 1.000000000000000000000000000000007 Infinity -> 1.000000000000000000000000000000008 +dqnextt216 nexttoward 1.000000000000000000000000000000008 Infinity -> 1.000000000000000000000000000000009 +dqnextt217 nexttoward 1.000000000000000000000000000000009 Infinity -> 1.000000000000000000000000000000010 +dqnextt218 nexttoward 1.000000000000000000000000000000010 Infinity -> 1.000000000000000000000000000000011 +dqnextt219 nexttoward 1.000000000000000000000000000000011 Infinity -> 1.000000000000000000000000000000012 + +dqnextt221 nexttoward -0.9999999999999999999999999999999995 Infinity -> -0.9999999999999999999999999999999994 +dqnextt222 nexttoward -0.9999999999999999999999999999999996 Infinity -> -0.9999999999999999999999999999999995 +dqnextt223 nexttoward -0.9999999999999999999999999999999997 Infinity -> -0.9999999999999999999999999999999996 +dqnextt224 nexttoward -0.9999999999999999999999999999999998 Infinity -> -0.9999999999999999999999999999999997 +dqnextt225 nexttoward -0.9999999999999999999999999999999999 Infinity -> -0.9999999999999999999999999999999998 +dqnextt226 nexttoward -1.000000000000000000000000000000000 Infinity -> -0.9999999999999999999999999999999999 +dqnextt227 nexttoward -1.0 Infinity -> -0.9999999999999999999999999999999999 +dqnextt228 nexttoward -1 Infinity -> -0.9999999999999999999999999999999999 +dqnextt229 nexttoward -1.000000000000000000000000000000001 Infinity -> -1.000000000000000000000000000000000 +dqnextt230 nexttoward -1.000000000000000000000000000000002 Infinity -> -1.000000000000000000000000000000001 +dqnextt231 nexttoward -1.000000000000000000000000000000003 Infinity -> -1.000000000000000000000000000000002 +dqnextt232 nexttoward -1.000000000000000000000000000000004 Infinity -> -1.000000000000000000000000000000003 +dqnextt233 nexttoward -1.000000000000000000000000000000005 Infinity -> -1.000000000000000000000000000000004 +dqnextt234 nexttoward -1.000000000000000000000000000000006 Infinity -> -1.000000000000000000000000000000005 +dqnextt235 nexttoward -1.000000000000000000000000000000007 Infinity -> -1.000000000000000000000000000000006 +dqnextt236 nexttoward -1.000000000000000000000000000000008 Infinity -> -1.000000000000000000000000000000007 +dqnextt237 nexttoward -1.000000000000000000000000000000009 Infinity -> -1.000000000000000000000000000000008 +dqnextt238 nexttoward -1.000000000000000000000000000000010 Infinity -> -1.000000000000000000000000000000009 +dqnextt239 nexttoward -1.000000000000000000000000000000011 Infinity -> -1.000000000000000000000000000000010 +dqnextt240 nexttoward -1.000000000000000000000000000000012 Infinity -> -1.000000000000000000000000000000011 + +-- Zeros +dqnextt300 nexttoward 0 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt301 nexttoward 0.00 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt302 nexttoward 0E-300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt303 nexttoward 0E+300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt304 nexttoward 0E+30000 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt305 nexttoward -0 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt306 nexttoward -0.00 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt307 nexttoward -0E-300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt308 nexttoward -0E+300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt309 nexttoward -0E+30000 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded + +-- specials +dqnextt350 nexttoward Inf Infinity -> Infinity +dqnextt351 nexttoward -Inf Infinity -> -9.999999999999999999999999999999999E+6144 +dqnextt352 nexttoward NaN Infinity -> NaN +dqnextt353 nexttoward sNaN Infinity -> NaN Invalid_operation +dqnextt354 nexttoward NaN77 Infinity -> NaN77 +dqnextt355 nexttoward sNaN88 Infinity -> NaN88 Invalid_operation +dqnextt356 nexttoward -NaN Infinity -> -NaN +dqnextt357 nexttoward -sNaN Infinity -> -NaN Invalid_operation +dqnextt358 nexttoward -NaN77 Infinity -> -NaN77 +dqnextt359 nexttoward -sNaN88 Infinity -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +dqnextt370 nexttoward -9.999999999999999999999999999999999E+6144 Infinity -> -9.999999999999999999999999999999998E+6144 +dqnextt371 nexttoward -9.999999999999999999999999999999998E+6144 Infinity -> -9.999999999999999999999999999999997E+6144 +dqnextt372 nexttoward -1E-6143 Infinity -> -9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded +dqnextt373 nexttoward -1.000000000000000E-6143 Infinity -> -9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded +dqnextt374 nexttoward -9E-6176 Infinity -> -8E-6176 Underflow Subnormal Inexact Rounded +dqnextt375 nexttoward -9.9E-6175 Infinity -> -9.8E-6175 Underflow Subnormal Inexact Rounded +dqnextt376 nexttoward -9.99999999999999999999999999999E-6147 Infinity -> -9.99999999999999999999999999998E-6147 Underflow Subnormal Inexact Rounded +dqnextt377 nexttoward -9.99999999999999999999999999999999E-6144 Infinity -> -9.99999999999999999999999999999998E-6144 Underflow Subnormal Inexact Rounded +dqnextt378 nexttoward -9.99999999999999999999999999999998E-6144 Infinity -> -9.99999999999999999999999999999997E-6144 Underflow Subnormal Inexact Rounded +dqnextt379 nexttoward -9.99999999999999999999999999999997E-6144 Infinity -> -9.99999999999999999999999999999996E-6144 Underflow Subnormal Inexact Rounded +dqnextt380 nexttoward -0E-6176 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt381 nexttoward -1E-6176 Infinity -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqnextt382 nexttoward -2E-6176 Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded + +dqnextt383 nexttoward 0E-6176 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt384 nexttoward 1E-6176 Infinity -> 2E-6176 Underflow Subnormal Inexact Rounded +dqnextt385 nexttoward 2E-6176 Infinity -> 3E-6176 Underflow Subnormal Inexact Rounded +dqnextt386 nexttoward 10E-6176 Infinity -> 1.1E-6175 Underflow Subnormal Inexact Rounded +dqnextt387 nexttoward 100E-6176 Infinity -> 1.01E-6174 Underflow Subnormal Inexact Rounded +dqnextt388 nexttoward 100000E-6176 Infinity -> 1.00001E-6171 Underflow Subnormal Inexact Rounded +dqnextt389 nexttoward 1.00000000000000000000000000000E-6143 Infinity -> 1.000000000000000000000000000000001E-6143 +dqnextt390 nexttoward 1.000000000000000000000000000000000E-6143 Infinity -> 1.000000000000000000000000000000001E-6143 +dqnextt391 nexttoward 1E-6143 Infinity -> 1.000000000000000000000000000000001E-6143 +dqnextt392 nexttoward 9.999999999999999999999999999999997E+6144 Infinity -> 9.999999999999999999999999999999998E+6144 +dqnextt393 nexttoward 9.999999999999999999999999999999998E+6144 Infinity -> 9.999999999999999999999999999999999E+6144 +dqnextt394 nexttoward 9.999999999999999999999999999999999E+6144 Infinity -> Infinity Overflow Inexact Rounded + +------- lhs>rhs +dqnextt401 nexttoward 0.9999999999999999999999999999999995 -Infinity -> 0.9999999999999999999999999999999994 +dqnextt402 nexttoward 0.9999999999999999999999999999999996 -Infinity -> 0.9999999999999999999999999999999995 +dqnextt403 nexttoward 0.9999999999999999999999999999999997 -Infinity -> 0.9999999999999999999999999999999996 +dqnextt404 nexttoward 0.9999999999999999999999999999999998 -Infinity -> 0.9999999999999999999999999999999997 +dqnextt405 nexttoward 0.9999999999999999999999999999999999 -Infinity -> 0.9999999999999999999999999999999998 +dqnextt406 nexttoward 1.000000000000000000000000000000000 -Infinity -> 0.9999999999999999999999999999999999 +dqnextt407 nexttoward 1.0 -Infinity -> 0.9999999999999999999999999999999999 +dqnextt408 nexttoward 1 -Infinity -> 0.9999999999999999999999999999999999 +dqnextt409 nexttoward 1.000000000000000000000000000000001 -Infinity -> 1.000000000000000000000000000000000 +dqnextt410 nexttoward 1.000000000000000000000000000000002 -Infinity -> 1.000000000000000000000000000000001 +dqnextt411 nexttoward 1.000000000000000000000000000000003 -Infinity -> 1.000000000000000000000000000000002 +dqnextt412 nexttoward 1.000000000000000000000000000000004 -Infinity -> 1.000000000000000000000000000000003 +dqnextt413 nexttoward 1.000000000000000000000000000000005 -Infinity -> 1.000000000000000000000000000000004 +dqnextt414 nexttoward 1.000000000000000000000000000000006 -Infinity -> 1.000000000000000000000000000000005 +dqnextt415 nexttoward 1.000000000000000000000000000000007 -Infinity -> 1.000000000000000000000000000000006 +dqnextt416 nexttoward 1.000000000000000000000000000000008 -Infinity -> 1.000000000000000000000000000000007 +dqnextt417 nexttoward 1.000000000000000000000000000000009 -Infinity -> 1.000000000000000000000000000000008 +dqnextt418 nexttoward 1.000000000000000000000000000000010 -Infinity -> 1.000000000000000000000000000000009 +dqnextt419 nexttoward 1.000000000000000000000000000000011 -Infinity -> 1.000000000000000000000000000000010 +dqnextt420 nexttoward 1.000000000000000000000000000000012 -Infinity -> 1.000000000000000000000000000000011 + +dqnextt421 nexttoward -0.9999999999999999999999999999999995 -Infinity -> -0.9999999999999999999999999999999996 +dqnextt422 nexttoward -0.9999999999999999999999999999999996 -Infinity -> -0.9999999999999999999999999999999997 +dqnextt423 nexttoward -0.9999999999999999999999999999999997 -Infinity -> -0.9999999999999999999999999999999998 +dqnextt424 nexttoward -0.9999999999999999999999999999999998 -Infinity -> -0.9999999999999999999999999999999999 +dqnextt425 nexttoward -0.9999999999999999999999999999999999 -Infinity -> -1.000000000000000000000000000000000 +dqnextt426 nexttoward -1.000000000000000000000000000000000 -Infinity -> -1.000000000000000000000000000000001 +dqnextt427 nexttoward -1.0 -Infinity -> -1.000000000000000000000000000000001 +dqnextt428 nexttoward -1 -Infinity -> -1.000000000000000000000000000000001 +dqnextt429 nexttoward -1.000000000000000000000000000000001 -Infinity -> -1.000000000000000000000000000000002 +dqnextt430 nexttoward -1.000000000000000000000000000000002 -Infinity -> -1.000000000000000000000000000000003 +dqnextt431 nexttoward -1.000000000000000000000000000000003 -Infinity -> -1.000000000000000000000000000000004 +dqnextt432 nexttoward -1.000000000000000000000000000000004 -Infinity -> -1.000000000000000000000000000000005 +dqnextt433 nexttoward -1.000000000000000000000000000000005 -Infinity -> -1.000000000000000000000000000000006 +dqnextt434 nexttoward -1.000000000000000000000000000000006 -Infinity -> -1.000000000000000000000000000000007 +dqnextt435 nexttoward -1.000000000000000000000000000000007 -Infinity -> -1.000000000000000000000000000000008 +dqnextt436 nexttoward -1.000000000000000000000000000000008 -Infinity -> -1.000000000000000000000000000000009 +dqnextt437 nexttoward -1.000000000000000000000000000000009 -Infinity -> -1.000000000000000000000000000000010 +dqnextt438 nexttoward -1.000000000000000000000000000000010 -Infinity -> -1.000000000000000000000000000000011 +dqnextt439 nexttoward -1.000000000000000000000000000000011 -Infinity -> -1.000000000000000000000000000000012 + +-- Zeros +dqnextt500 nexttoward -0 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt501 nexttoward 0 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt502 nexttoward 0.00 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt503 nexttoward -0.00 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt504 nexttoward 0E-300 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt505 nexttoward 0E+300 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt506 nexttoward 0E+30000 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt507 nexttoward -0E+30000 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded + +-- specials +dqnextt550 nexttoward Inf -Infinity -> 9.999999999999999999999999999999999E+6144 +dqnextt551 nexttoward -Inf -Infinity -> -Infinity +dqnextt552 nexttoward NaN -Infinity -> NaN +dqnextt553 nexttoward sNaN -Infinity -> NaN Invalid_operation +dqnextt554 nexttoward NaN77 -Infinity -> NaN77 +dqnextt555 nexttoward sNaN88 -Infinity -> NaN88 Invalid_operation +dqnextt556 nexttoward -NaN -Infinity -> -NaN +dqnextt557 nexttoward -sNaN -Infinity -> -NaN Invalid_operation +dqnextt558 nexttoward -NaN77 -Infinity -> -NaN77 +dqnextt559 nexttoward -sNaN88 -Infinity -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +dqnextt670 nexttoward 9.999999999999999999999999999999999E+6144 -Infinity -> 9.999999999999999999999999999999998E+6144 +dqnextt671 nexttoward 9.999999999999999999999999999999998E+6144 -Infinity -> 9.999999999999999999999999999999997E+6144 +dqnextt672 nexttoward 1E-6143 -Infinity -> 9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded +dqnextt673 nexttoward 1.000000000000000000000000000000000E-6143 -Infinity -> 9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded +dqnextt674 nexttoward 9E-6176 -Infinity -> 8E-6176 Underflow Subnormal Inexact Rounded +dqnextt675 nexttoward 9.9E-6175 -Infinity -> 9.8E-6175 Underflow Subnormal Inexact Rounded +dqnextt676 nexttoward 9.99999999999999999999999999999E-6147 -Infinity -> 9.99999999999999999999999999998E-6147 Underflow Subnormal Inexact Rounded +dqnextt677 nexttoward 9.99999999999999999999999999999999E-6144 -Infinity -> 9.99999999999999999999999999999998E-6144 Underflow Subnormal Inexact Rounded +dqnextt678 nexttoward 9.99999999999999999999999999999998E-6144 -Infinity -> 9.99999999999999999999999999999997E-6144 Underflow Subnormal Inexact Rounded +dqnextt679 nexttoward 9.99999999999999999999999999999997E-6144 -Infinity -> 9.99999999999999999999999999999996E-6144 Underflow Subnormal Inexact Rounded +dqnextt680 nexttoward 0E-6176 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt681 nexttoward 1E-6176 -Infinity -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqnextt682 nexttoward 2E-6176 -Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded + +dqnextt683 nexttoward -0E-6176 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt684 nexttoward -1E-6176 -Infinity -> -2E-6176 Underflow Subnormal Inexact Rounded +dqnextt685 nexttoward -2E-6176 -Infinity -> -3E-6176 Underflow Subnormal Inexact Rounded +dqnextt686 nexttoward -10E-6176 -Infinity -> -1.1E-6175 Underflow Subnormal Inexact Rounded +dqnextt687 nexttoward -100E-6176 -Infinity -> -1.01E-6174 Underflow Subnormal Inexact Rounded +dqnextt688 nexttoward -100000E-6176 -Infinity -> -1.00001E-6171 Underflow Subnormal Inexact Rounded +dqnextt689 nexttoward -1.00000000000000000000000000000E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143 +dqnextt690 nexttoward -1.000000000000000000000000000000000E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143 +dqnextt691 nexttoward -1E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143 +dqnextt692 nexttoward -9.999999999999999999999999999999998E+6144 -Infinity -> -9.999999999999999999999999999999999E+6144 +dqnextt693 nexttoward -9.999999999999999999999999999999999E+6144 -Infinity -> -Infinity Overflow Inexact Rounded + +------- Specials +dqnextt780 nexttoward -Inf -Inf -> -Infinity +dqnextt781 nexttoward -Inf -1000 -> -9.999999999999999999999999999999999E+6144 +dqnextt782 nexttoward -Inf -1 -> -9.999999999999999999999999999999999E+6144 +dqnextt783 nexttoward -Inf -0 -> -9.999999999999999999999999999999999E+6144 +dqnextt784 nexttoward -Inf 0 -> -9.999999999999999999999999999999999E+6144 +dqnextt785 nexttoward -Inf 1 -> -9.999999999999999999999999999999999E+6144 +dqnextt786 nexttoward -Inf 1000 -> -9.999999999999999999999999999999999E+6144 +dqnextt787 nexttoward -1000 -Inf -> -1000.000000000000000000000000000001 +dqnextt788 nexttoward -Inf -Inf -> -Infinity +dqnextt789 nexttoward -1 -Inf -> -1.000000000000000000000000000000001 +dqnextt790 nexttoward -0 -Inf -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt791 nexttoward 0 -Inf -> -1E-6176 Underflow Subnormal Inexact Rounded +dqnextt792 nexttoward 1 -Inf -> 0.9999999999999999999999999999999999 +dqnextt793 nexttoward 1000 -Inf -> 999.9999999999999999999999999999999 +dqnextt794 nexttoward Inf -Inf -> 9.999999999999999999999999999999999E+6144 + +dqnextt800 nexttoward Inf -Inf -> 9.999999999999999999999999999999999E+6144 +dqnextt801 nexttoward Inf -1000 -> 9.999999999999999999999999999999999E+6144 +dqnextt802 nexttoward Inf -1 -> 9.999999999999999999999999999999999E+6144 +dqnextt803 nexttoward Inf -0 -> 9.999999999999999999999999999999999E+6144 +dqnextt804 nexttoward Inf 0 -> 9.999999999999999999999999999999999E+6144 +dqnextt805 nexttoward Inf 1 -> 9.999999999999999999999999999999999E+6144 +dqnextt806 nexttoward Inf 1000 -> 9.999999999999999999999999999999999E+6144 +dqnextt807 nexttoward Inf Inf -> Infinity +dqnextt808 nexttoward -1000 Inf -> -999.9999999999999999999999999999999 +dqnextt809 nexttoward -Inf Inf -> -9.999999999999999999999999999999999E+6144 +dqnextt810 nexttoward -1 Inf -> -0.9999999999999999999999999999999999 +dqnextt811 nexttoward -0 Inf -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt812 nexttoward 0 Inf -> 1E-6176 Underflow Subnormal Inexact Rounded +dqnextt813 nexttoward 1 Inf -> 1.000000000000000000000000000000001 +dqnextt814 nexttoward 1000 Inf -> 1000.000000000000000000000000000001 +dqnextt815 nexttoward Inf Inf -> Infinity + +dqnextt821 nexttoward NaN -Inf -> NaN +dqnextt822 nexttoward NaN -1000 -> NaN +dqnextt823 nexttoward NaN -1 -> NaN +dqnextt824 nexttoward NaN -0 -> NaN +dqnextt825 nexttoward NaN 0 -> NaN +dqnextt826 nexttoward NaN 1 -> NaN +dqnextt827 nexttoward NaN 1000 -> NaN +dqnextt828 nexttoward NaN Inf -> NaN +dqnextt829 nexttoward NaN NaN -> NaN +dqnextt830 nexttoward -Inf NaN -> NaN +dqnextt831 nexttoward -1000 NaN -> NaN +dqnextt832 nexttoward -1 NaN -> NaN +dqnextt833 nexttoward -0 NaN -> NaN +dqnextt834 nexttoward 0 NaN -> NaN +dqnextt835 nexttoward 1 NaN -> NaN +dqnextt836 nexttoward 1000 NaN -> NaN +dqnextt837 nexttoward Inf NaN -> NaN + +dqnextt841 nexttoward sNaN -Inf -> NaN Invalid_operation +dqnextt842 nexttoward sNaN -1000 -> NaN Invalid_operation +dqnextt843 nexttoward sNaN -1 -> NaN Invalid_operation +dqnextt844 nexttoward sNaN -0 -> NaN Invalid_operation +dqnextt845 nexttoward sNaN 0 -> NaN Invalid_operation +dqnextt846 nexttoward sNaN 1 -> NaN Invalid_operation +dqnextt847 nexttoward sNaN 1000 -> NaN Invalid_operation +dqnextt848 nexttoward sNaN NaN -> NaN Invalid_operation +dqnextt849 nexttoward sNaN sNaN -> NaN Invalid_operation +dqnextt850 nexttoward NaN sNaN -> NaN Invalid_operation +dqnextt851 nexttoward -Inf sNaN -> NaN Invalid_operation +dqnextt852 nexttoward -1000 sNaN -> NaN Invalid_operation +dqnextt853 nexttoward -1 sNaN -> NaN Invalid_operation +dqnextt854 nexttoward -0 sNaN -> NaN Invalid_operation +dqnextt855 nexttoward 0 sNaN -> NaN Invalid_operation +dqnextt856 nexttoward 1 sNaN -> NaN Invalid_operation +dqnextt857 nexttoward 1000 sNaN -> NaN Invalid_operation +dqnextt858 nexttoward Inf sNaN -> NaN Invalid_operation +dqnextt859 nexttoward NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqnextt861 nexttoward NaN1 -Inf -> NaN1 +dqnextt862 nexttoward +NaN2 -1000 -> NaN2 +dqnextt863 nexttoward NaN3 1000 -> NaN3 +dqnextt864 nexttoward NaN4 Inf -> NaN4 +dqnextt865 nexttoward NaN5 +NaN6 -> NaN5 +dqnextt866 nexttoward -Inf NaN7 -> NaN7 +dqnextt867 nexttoward -1000 NaN8 -> NaN8 +dqnextt868 nexttoward 1000 NaN9 -> NaN9 +dqnextt869 nexttoward Inf +NaN10 -> NaN10 +dqnextt871 nexttoward sNaN11 -Inf -> NaN11 Invalid_operation +dqnextt872 nexttoward sNaN12 -1000 -> NaN12 Invalid_operation +dqnextt873 nexttoward sNaN13 1000 -> NaN13 Invalid_operation +dqnextt874 nexttoward sNaN14 NaN17 -> NaN14 Invalid_operation +dqnextt875 nexttoward sNaN15 sNaN18 -> NaN15 Invalid_operation +dqnextt876 nexttoward NaN16 sNaN19 -> NaN19 Invalid_operation +dqnextt877 nexttoward -Inf +sNaN20 -> NaN20 Invalid_operation +dqnextt878 nexttoward -1000 sNaN21 -> NaN21 Invalid_operation +dqnextt879 nexttoward 1000 sNaN22 -> NaN22 Invalid_operation +dqnextt880 nexttoward Inf sNaN23 -> NaN23 Invalid_operation +dqnextt881 nexttoward +NaN25 +sNaN24 -> NaN24 Invalid_operation +dqnextt882 nexttoward -NaN26 NaN28 -> -NaN26 +dqnextt883 nexttoward -sNaN27 sNaN29 -> -NaN27 Invalid_operation +dqnextt884 nexttoward 1000 -NaN30 -> -NaN30 +dqnextt885 nexttoward 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- Null tests +dqnextt900 nexttoward 1 # -> NaN Invalid_operation +dqnextt901 nexttoward # 1 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqOr.decTest b/Lib/test/decimaltestdata/dqOr.decTest index daa3c86..1fd34b2 100644 --- a/Lib/test/decimaltestdata/dqOr.decTest +++ b/Lib/test/decimaltestdata/dqOr.decTest @@ -1,401 +1,401 @@ ------------------------------------------------------------------------- --- dqOr.decTest -- digitwise logical OR for decQuads -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check (truth table) -dqor001 or 0 0 -> 0 -dqor002 or 0 1 -> 1 -dqor003 or 1 0 -> 1 -dqor004 or 1 1 -> 1 -dqor005 or 1100 1010 -> 1110 --- and at msd and msd-1 -dqor006 or 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 -dqor007 or 0000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 -dqor008 or 1000000000000000000000000000000000 0000000000000000000000000000000000 -> 1000000000000000000000000000000000 -dqor009 or 1000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 -dqor010 or 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 -dqor011 or 0000000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000 -dqor012 or 0100000000000000000000000000000000 0000000000000000000000000000000000 -> 100000000000000000000000000000000 -dqor013 or 0100000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000 - --- Various lengths -dqor601 or 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111111 -dqor602 or 1011111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111111 -dqor603 or 1101111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111111 -dqor604 or 1110111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111111111 -dqor605 or 1111011111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111111111 -dqor606 or 1111101111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111111111 -dqor607 or 1111110111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111111111111 -dqor608 or 1111111011111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111111111111 -dqor609 or 1111111101111111111111111111111111 1111111111111111111111111011111111 -> 1111111111111111111111111111111111 -dqor610 or 1111111110111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111111111111111 -dqor611 or 1111111111011111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111111111111111 -dqor612 or 1111111111101111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111111111111111 -dqor613 or 1111111111110111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111111111111111111 -dqor614 or 1111111111111011111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111111111111111111 -dqor615 or 1111111111111101111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111111111111111111 -dqor616 or 1111111111111110111111111111111111 1111111111111111110111111111111111 -> 1111111111111111111111111111111111 -dqor617 or 1111111111111111011111111111111111 1111111111111111101111111111111111 -> 1111111111111111111111111111111111 -dqor618 or 1111111111111111101111111111111111 1111111111111111011111111111111111 -> 1111111111111111111111111111111111 -dqor619 or 1111111111111111110111111111111111 1111111111111110111111111111111111 -> 1111111111111111111111111111111111 -dqor620 or 1111111111111111111011111111111111 1111111111111101111111111111111111 -> 1111111111111111111111111111111111 -dqor621 or 1111111111111111111101111111111111 1111111111111011111111111111111111 -> 1111111111111111111111111111111111 -dqor622 or 1111111111111111111110111111111111 1111111111110111111111111111111111 -> 1111111111111111111111111111111111 -dqor623 or 1111111111111111111111011111111111 1111111111101111111111111111111111 -> 1111111111111111111111111111111111 -dqor624 or 1111111111111111111111101111111111 1111111111011111111111111111111111 -> 1111111111111111111111111111111111 -dqor625 or 1111111111111111111111110111111111 1111111110111111111111111111111111 -> 1111111111111111111111111111111111 -dqor626 or 1111111111111111111111111011111111 1111111101111111111111111111111111 -> 1111111111111111111111111111111111 -dqor627 or 1111111111111111111111111101111111 1111111011111111111111111111111111 -> 1111111111111111111111111111111111 -dqor628 or 1111111111111111111111111110111111 1111110111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor629 or 1111111111111111111111111111011111 1111101111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor630 or 1111111111111111111111111111101111 1111011111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor631 or 1111111111111111111111111111110111 1110111111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor632 or 1111111111111111111111111111111011 1101111111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor633 or 1111111111111111111111111111111101 1011111111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor634 or 1111111111111111111111111111111110 0111111111111111111111111111111111 -> 1111111111111111111111111111111111 - -dqor641 or 1111111111111111111111111111111110 0111111111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor642 or 1111111111111111111111111111111101 1011111111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor643 or 1111111111111111111111111111111011 1101111111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor644 or 1111111111111111111111111111110111 1110111111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor645 or 1111111111111111111111111111101111 1111011111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor646 or 1111111111111111111111111111011111 1111101111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor647 or 1111111111111111111111111110111111 1111110111111111111111111111111111 -> 1111111111111111111111111111111111 -dqor648 or 1111111111111111111111111101111111 1111111011111111111111111111111111 -> 1111111111111111111111111111111111 -dqor649 or 1111111111111111111111111011111111 1111111101111111111111111111111111 -> 1111111111111111111111111111111111 -dqor650 or 1111111111111111111111110111111111 1111111110111111111111111111111111 -> 1111111111111111111111111111111111 -dqor651 or 1111111111111111111111101111111111 1111111111011111111111111111111111 -> 1111111111111111111111111111111111 -dqor652 or 1111111111111111111111011111111111 1111111111101111111111111111111111 -> 1111111111111111111111111111111111 -dqor653 or 1111111111111111111110111111111111 1111111111110111111111111111111111 -> 1111111111111111111111111111111111 -dqor654 or 1111111111111111111101111111111111 1111111111111011111111111111111111 -> 1111111111111111111111111111111111 -dqor655 or 1111111111111111111011111111111111 1111111111111101111111111111111111 -> 1111111111111111111111111111111111 -dqor656 or 1111111111111111110111111111111111 1111111111111110111111111111111111 -> 1111111111111111111111111111111111 -dqor657 or 1010101010101010101010101010101010 1010101010101010001010101010101010 -> 1010101010101010101010101010101010 -dqor658 or 1111111111111111011111111111111111 1111111111111111101111111111111111 -> 1111111111111111111111111111111111 -dqor659 or 1111111111111110111111111111111111 1111111111111111110111111111111111 -> 1111111111111111111111111111111111 -dqor660 or 1111111111111101111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111111111111111111 -dqor661 or 1111111111111011111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111111111111111111 -dqor662 or 1111111111110111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111111111111111111 -dqor663 or 1111111111101111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111111111111111 -dqor664 or 1111111111011111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111111111111111 -dqor665 or 1111111110111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111111111111111 -dqor666 or 0101010101010101010101010101010101 0101010101010101010101010001010101 -> 101010101010101010101010101010101 -dqor667 or 1111111011111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111111111111 -dqor668 or 1111110111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111111111111 -dqor669 or 1111101111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111111111 -dqor670 or 1111011111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111111111 -dqor671 or 1110111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111111111 -dqor672 or 1101111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111111 -dqor673 or 1011111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111111 -dqor674 or 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111111 -dqor675 or 0111111111111111111111111111111110 1111111111111111111111111111111110 -> 1111111111111111111111111111111110 -dqor676 or 1111111111111111111111111111111110 1111111111111111111111111111111110 -> 1111111111111111111111111111111110 - -dqor681 or 0111111111111111111111111111111111 0111111111011111111111111111111110 -> 111111111111111111111111111111111 -dqor682 or 1011111111111111111111111111111111 1011111110101111111111111111111101 -> 1011111111111111111111111111111111 -dqor683 or 1101111111111111111111111111111111 1101111101110111111111111111111011 -> 1101111111111111111111111111111111 -dqor684 or 1110111111111111111111111111111111 1110111011111011111111111111110111 -> 1110111111111111111111111111111111 -dqor685 or 1111011111111111111111111111111111 1111010111111101111111111111101111 -> 1111011111111111111111111111111111 -dqor686 or 1111101111111111111111111111111111 1111101111111110111111111111011111 -> 1111101111111111111111111111111111 -dqor687 or 1111110111111111111111111111111111 1111010111111111011111111110111111 -> 1111110111111111111111111111111111 -dqor688 or 1111111011111111111111111111111111 1110111011111111101111111101111111 -> 1111111011111111111111111111111111 -dqor689 or 1111111101111111111111111111111111 1101111101111111110111111011111111 -> 1111111101111111111111111111111111 -dqor690 or 1111111110111111111111111111111111 1011111110111111111011110111111110 -> 1111111110111111111111111111111111 -dqor691 or 1111111111011111111111111111111111 0111111111011111111101101111111101 -> 1111111111011111111111111111111111 -dqor692 or 1111111111101111111111111111111111 1111111111101111111110011111111011 -> 1111111111101111111111111111111111 -dqor693 or 1111111111110111111111111111111111 1111111111110111111110011111110111 -> 1111111111110111111111111111111111 -dqor694 or 1111111111111011111111111111111111 1111111111111011111101101111101111 -> 1111111111111011111111111111111111 -dqor695 or 1111111111111101111111111111111111 1111111111111101111011110111011111 -> 1111111111111101111111111111111111 -dqor696 or 1111111111111110111111111111111111 1111111111111110110111111010111111 -> 1111111111111110111111111111111111 -dqor697 or 1111111111111111011111111111111111 1111111111111111001111111101111111 -> 1111111111111111011111111111111111 -dqor698 or 1111111111111111101111111111111111 1111111111111111001111111010111111 -> 1111111111111111101111111111111111 -dqor699 or 1111111111111111110111111111111111 1111111111111110110111110111011111 -> 1111111111111111110111111111111111 -dqor700 or 1111111111111111111011111111111111 1111111111111101111011101111101111 -> 1111111111111111111011111111111111 -dqor701 or 1111111111111111111101111111111111 1111111111111011111101011111110111 -> 1111111111111111111101111111111111 -dqor702 or 1111111111111111111110111111111111 1111111111110111111110111111111011 -> 1111111111111111111110111111111111 -dqor703 or 1111111111111111111111011111111111 1111111111101111111101011111111101 -> 1111111111111111111111011111111111 -dqor704 or 1111111111111111111111101111111111 1111111111011111111011101111111110 -> 1111111111111111111111101111111111 -dqor705 or 1111111111111111111111110111111111 0111111110111111110111110111111111 -> 1111111111111111111111110111111111 -dqor706 or 1111111111111111111111111011111111 1011111101111111101111111011111111 -> 1111111111111111111111111011111111 -dqor707 or 1111111111111111111111111101111111 1101111011111111011111111101111111 -> 1111111111111111111111111101111111 -dqor708 or 1111111111111111111111111110111111 1110110111111110111111111110111111 -> 1111111111111111111111111110111111 -dqor709 or 1111111111111111111111111111011111 1111001111111101111111111111011111 -> 1111111111111111111111111111011111 -dqor710 or 1111111111111111111111111111101111 1111001111111011111111111111101111 -> 1111111111111111111111111111101111 -dqor711 or 1111111111111111111111111111110111 1110110111110111111111111111110111 -> 1111111111111111111111111111110111 -dqor712 or 1111111111111111111111111111111011 1101111011101111111111111111111011 -> 1111111111111111111111111111111011 -dqor713 or 1111111111111111111111111111111101 1011111101011111111111111111111101 -> 1111111111111111111111111111111101 -dqor714 or 1111111111111111111111111111111110 0111111110111111111111111111111110 -> 1111111111111111111111111111111110 - - - --- 1234567890123456 1234567890123456 1234567890123456 -dqor020 or 1111111111111111 1111111111111111 -> 1111111111111111 -dqor021 or 111111111111111 111111111111111 -> 111111111111111 -dqor022 or 11111111111111 11111111111111 -> 11111111111111 -dqor023 or 1111111111111 1111111111111 -> 1111111111111 -dqor024 or 111111111111 111111111111 -> 111111111111 -dqor025 or 11111111111 11111111111 -> 11111111111 -dqor026 or 1111111111 1111111111 -> 1111111111 -dqor027 or 111111111 111111111 -> 111111111 -dqor028 or 11111111 11111111 -> 11111111 -dqor029 or 1111111 1111111 -> 1111111 -dqor030 or 111111 111111 -> 111111 -dqor031 or 11111 11111 -> 11111 -dqor032 or 1111 1111 -> 1111 -dqor033 or 111 111 -> 111 -dqor034 or 11 11 -> 11 -dqor035 or 1 1 -> 1 -dqor036 or 0 0 -> 0 - -dqor042 or 111111110000000 1111111110000000 -> 1111111110000000 -dqor043 or 11111110000000 1000000100000000 -> 1011111110000000 -dqor044 or 1111110000000 1000001000000000 -> 1001111110000000 -dqor045 or 111110000000 1000010000000000 -> 1000111110000000 -dqor046 or 11110000000 1000100000000000 -> 1000111110000000 -dqor047 or 1110000000 1001000000000000 -> 1001001110000000 -dqor048 or 110000000 1010000000000000 -> 1010000110000000 -dqor049 or 10000000 1100000000000000 -> 1100000010000000 - -dqor090 or 011111111 111101111 -> 111111111 -dqor091 or 101111111 111101111 -> 111111111 -dqor092 or 110111111 111101111 -> 111111111 -dqor093 or 111011111 111101111 -> 111111111 -dqor094 or 111101111 111101111 -> 111101111 -dqor095 or 111110111 111101111 -> 111111111 -dqor096 or 111111011 111101111 -> 111111111 -dqor097 or 111111101 111101111 -> 111111111 -dqor098 or 111111110 111101111 -> 111111111 - -dqor100 or 111101111 011111111 -> 111111111 -dqor101 or 111101111 101111111 -> 111111111 -dqor102 or 111101111 110111111 -> 111111111 -dqor103 or 111101111 111011111 -> 111111111 -dqor104 or 111101111 111101111 -> 111101111 -dqor105 or 111101111 111110111 -> 111111111 -dqor106 or 111101111 111111011 -> 111111111 -dqor107 or 111101111 111111101 -> 111111111 -dqor108 or 111101111 111111110 -> 111111111 - --- non-0/1 should not be accepted, nor should signs -dqor220 or 111111112 111111111 -> NaN Invalid_operation -dqor221 or 333333333 333333333 -> NaN Invalid_operation -dqor222 or 555555555 555555555 -> NaN Invalid_operation -dqor223 or 777777777 777777777 -> NaN Invalid_operation -dqor224 or 999999999 999999999 -> NaN Invalid_operation -dqor225 or 222222222 999999999 -> NaN Invalid_operation -dqor226 or 444444444 999999999 -> NaN Invalid_operation -dqor227 or 666666666 999999999 -> NaN Invalid_operation -dqor228 or 888888888 999999999 -> NaN Invalid_operation -dqor229 or 999999999 222222222 -> NaN Invalid_operation -dqor230 or 999999999 444444444 -> NaN Invalid_operation -dqor231 or 999999999 666666666 -> NaN Invalid_operation -dqor232 or 999999999 888888888 -> NaN Invalid_operation --- a few randoms -dqor240 or 567468689 -934981942 -> NaN Invalid_operation -dqor241 or 567367689 934981942 -> NaN Invalid_operation -dqor242 or -631917772 -706014634 -> NaN Invalid_operation -dqor243 or -756253257 138579234 -> NaN Invalid_operation -dqor244 or 835590149 567435400 -> NaN Invalid_operation --- test MSD -dqor250 or 2000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqor251 or 7000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqor252 or 8000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqor253 or 9000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqor254 or 2000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqor255 or 7000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqor256 or 8000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqor257 or 9000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqor258 or 1000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation -dqor259 or 1000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation -dqor260 or 1000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation -dqor261 or 1000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation -dqor262 or 0000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation -dqor263 or 0000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation -dqor264 or 0000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation -dqor265 or 0000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation --- test MSD-1 -dqor270 or 0200000111000111000111001000000000 1000000111000111000111100000000010 -> NaN Invalid_operation -dqor271 or 0700000111000111000111000100000000 1000000111000111000111010000000100 -> NaN Invalid_operation -dqor272 or 0800000111000111000111000010000000 1000000111000111000111001000001000 -> NaN Invalid_operation -dqor273 or 0900000111000111000111000001000000 1000000111000111000111000100010000 -> NaN Invalid_operation -dqor274 or 1000000111000111000111000000100000 0200000111000111000111000010100000 -> NaN Invalid_operation -dqor275 or 1000000111000111000111000000010000 0700000111000111000111000001000000 -> NaN Invalid_operation -dqor276 or 1000000111000111000111000000001000 0800000111000111000111000010100000 -> NaN Invalid_operation -dqor277 or 1000000111000111000111000000000100 0900000111000111000111000000010000 -> NaN Invalid_operation --- test LSD -dqor280 or 0010000111000111000111000000000002 1000000111000111000111000100000001 -> NaN Invalid_operation -dqor281 or 0001000111000111000111000000000007 1000000111000111000111001000000011 -> NaN Invalid_operation -dqor282 or 0000000111000111000111100000000008 1000000111000111000111010000000001 -> NaN Invalid_operation -dqor283 or 0000000111000111000111010000000009 1000000111000111000111100000000001 -> NaN Invalid_operation -dqor284 or 1000000111000111000111001000000000 0001000111000111000111000000000002 -> NaN Invalid_operation -dqor285 or 1000000111000111000111000100000000 0010000111000111000111000000000007 -> NaN Invalid_operation -dqor286 or 1000000111000111000111000010000000 0100000111000111000111000000000008 -> NaN Invalid_operation -dqor287 or 1000000111000111000111000001000000 1000000111000111000111000000000009 -> NaN Invalid_operation --- test Middie -dqor288 or 0010000111000111000111000020000000 1000000111000111000111001000000000 -> NaN Invalid_operation -dqor289 or 0001000111000111000111000070000001 1000000111000111000111000100000000 -> NaN Invalid_operation -dqor290 or 0000000111000111000111100080000010 1000000111000111000111000010000000 -> NaN Invalid_operation -dqor291 or 0000000111000111000111010090000100 1000000111000111000111000001000000 -> NaN Invalid_operation -dqor292 or 1000000111000111000111001000001000 0000000111000111000111000020100000 -> NaN Invalid_operation -dqor293 or 1000000111000111000111000100010000 0000000111000111000111000070010000 -> NaN Invalid_operation -dqor294 or 1000000111000111000111000010100000 0000000111000111000111000080001000 -> NaN Invalid_operation -dqor295 or 1000000111000111000111000001000000 0000000111000111000111000090000100 -> NaN Invalid_operation --- signs -dqor296 or -1000000111000111000111000001000000 -0000001110001110001110010000000100 -> NaN Invalid_operation -dqor297 or -1000000111000111000111000001000000 0000001110001110001110000010000100 -> NaN Invalid_operation -dqor298 or 1000000111000111000111000001000000 -0000001110001110001110001000000100 -> NaN Invalid_operation -dqor299 or 1000000111000111000111000001000000 0000001110001110001110000011000100 -> 1000001111001111001111000011000100 - --- Nmax, Nmin, Ntiny-like -dqor331 or 2 9.99999999E+1999 -> NaN Invalid_operation -dqor332 or 3 1E-1999 -> NaN Invalid_operation -dqor333 or 4 1.00000000E-1999 -> NaN Invalid_operation -dqor334 or 5 1E-1009 -> NaN Invalid_operation -dqor335 or 6 -1E-1009 -> NaN Invalid_operation -dqor336 or 7 -1.00000000E-1999 -> NaN Invalid_operation -dqor337 or 8 -1E-1999 -> NaN Invalid_operation -dqor338 or 9 -9.99999999E+1999 -> NaN Invalid_operation -dqor341 or 9.99999999E+2999 -18 -> NaN Invalid_operation -dqor342 or 1E-2999 01 -> NaN Invalid_operation -dqor343 or 1.00000000E-2999 -18 -> NaN Invalid_operation -dqor344 or 1E-1009 18 -> NaN Invalid_operation -dqor345 or -1E-1009 -10 -> NaN Invalid_operation -dqor346 or -1.00000000E-2999 18 -> NaN Invalid_operation -dqor347 or -1E-2999 10 -> NaN Invalid_operation -dqor348 or -9.99999999E+2999 -18 -> NaN Invalid_operation - --- A few other non-integers -dqor361 or 1.0 1 -> NaN Invalid_operation -dqor362 or 1E+1 1 -> NaN Invalid_operation -dqor363 or 0.0 1 -> NaN Invalid_operation -dqor364 or 0E+1 1 -> NaN Invalid_operation -dqor365 or 9.9 1 -> NaN Invalid_operation -dqor366 or 9E+1 1 -> NaN Invalid_operation -dqor371 or 0 1.0 -> NaN Invalid_operation -dqor372 or 0 1E+1 -> NaN Invalid_operation -dqor373 or 0 0.0 -> NaN Invalid_operation -dqor374 or 0 0E+1 -> NaN Invalid_operation -dqor375 or 0 9.9 -> NaN Invalid_operation -dqor376 or 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -dqor780 or -Inf -Inf -> NaN Invalid_operation -dqor781 or -Inf -1000 -> NaN Invalid_operation -dqor782 or -Inf -1 -> NaN Invalid_operation -dqor783 or -Inf -0 -> NaN Invalid_operation -dqor784 or -Inf 0 -> NaN Invalid_operation -dqor785 or -Inf 1 -> NaN Invalid_operation -dqor786 or -Inf 1000 -> NaN Invalid_operation -dqor787 or -1000 -Inf -> NaN Invalid_operation -dqor788 or -Inf -Inf -> NaN Invalid_operation -dqor789 or -1 -Inf -> NaN Invalid_operation -dqor790 or -0 -Inf -> NaN Invalid_operation -dqor791 or 0 -Inf -> NaN Invalid_operation -dqor792 or 1 -Inf -> NaN Invalid_operation -dqor793 or 1000 -Inf -> NaN Invalid_operation -dqor794 or Inf -Inf -> NaN Invalid_operation - -dqor800 or Inf -Inf -> NaN Invalid_operation -dqor801 or Inf -1000 -> NaN Invalid_operation -dqor802 or Inf -1 -> NaN Invalid_operation -dqor803 or Inf -0 -> NaN Invalid_operation -dqor804 or Inf 0 -> NaN Invalid_operation -dqor805 or Inf 1 -> NaN Invalid_operation -dqor806 or Inf 1000 -> NaN Invalid_operation -dqor807 or Inf Inf -> NaN Invalid_operation -dqor808 or -1000 Inf -> NaN Invalid_operation -dqor809 or -Inf Inf -> NaN Invalid_operation -dqor810 or -1 Inf -> NaN Invalid_operation -dqor811 or -0 Inf -> NaN Invalid_operation -dqor812 or 0 Inf -> NaN Invalid_operation -dqor813 or 1 Inf -> NaN Invalid_operation -dqor814 or 1000 Inf -> NaN Invalid_operation -dqor815 or Inf Inf -> NaN Invalid_operation - -dqor821 or NaN -Inf -> NaN Invalid_operation -dqor822 or NaN -1000 -> NaN Invalid_operation -dqor823 or NaN -1 -> NaN Invalid_operation -dqor824 or NaN -0 -> NaN Invalid_operation -dqor825 or NaN 0 -> NaN Invalid_operation -dqor826 or NaN 1 -> NaN Invalid_operation -dqor827 or NaN 1000 -> NaN Invalid_operation -dqor828 or NaN Inf -> NaN Invalid_operation -dqor829 or NaN NaN -> NaN Invalid_operation -dqor830 or -Inf NaN -> NaN Invalid_operation -dqor831 or -1000 NaN -> NaN Invalid_operation -dqor832 or -1 NaN -> NaN Invalid_operation -dqor833 or -0 NaN -> NaN Invalid_operation -dqor834 or 0 NaN -> NaN Invalid_operation -dqor835 or 1 NaN -> NaN Invalid_operation -dqor836 or 1000 NaN -> NaN Invalid_operation -dqor837 or Inf NaN -> NaN Invalid_operation - -dqor841 or sNaN -Inf -> NaN Invalid_operation -dqor842 or sNaN -1000 -> NaN Invalid_operation -dqor843 or sNaN -1 -> NaN Invalid_operation -dqor844 or sNaN -0 -> NaN Invalid_operation -dqor845 or sNaN 0 -> NaN Invalid_operation -dqor846 or sNaN 1 -> NaN Invalid_operation -dqor847 or sNaN 1000 -> NaN Invalid_operation -dqor848 or sNaN NaN -> NaN Invalid_operation -dqor849 or sNaN sNaN -> NaN Invalid_operation -dqor850 or NaN sNaN -> NaN Invalid_operation -dqor851 or -Inf sNaN -> NaN Invalid_operation -dqor852 or -1000 sNaN -> NaN Invalid_operation -dqor853 or -1 sNaN -> NaN Invalid_operation -dqor854 or -0 sNaN -> NaN Invalid_operation -dqor855 or 0 sNaN -> NaN Invalid_operation -dqor856 or 1 sNaN -> NaN Invalid_operation -dqor857 or 1000 sNaN -> NaN Invalid_operation -dqor858 or Inf sNaN -> NaN Invalid_operation -dqor859 or NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqor861 or NaN1 -Inf -> NaN Invalid_operation -dqor862 or +NaN2 -1000 -> NaN Invalid_operation -dqor863 or NaN3 1000 -> NaN Invalid_operation -dqor864 or NaN4 Inf -> NaN Invalid_operation -dqor865 or NaN5 +NaN6 -> NaN Invalid_operation -dqor866 or -Inf NaN7 -> NaN Invalid_operation -dqor867 or -1000 NaN8 -> NaN Invalid_operation -dqor868 or 1000 NaN9 -> NaN Invalid_operation -dqor869 or Inf +NaN10 -> NaN Invalid_operation -dqor871 or sNaN11 -Inf -> NaN Invalid_operation -dqor872 or sNaN12 -1000 -> NaN Invalid_operation -dqor873 or sNaN13 1000 -> NaN Invalid_operation -dqor874 or sNaN14 NaN17 -> NaN Invalid_operation -dqor875 or sNaN15 sNaN18 -> NaN Invalid_operation -dqor876 or NaN16 sNaN19 -> NaN Invalid_operation -dqor877 or -Inf +sNaN20 -> NaN Invalid_operation -dqor878 or -1000 sNaN21 -> NaN Invalid_operation -dqor879 or 1000 sNaN22 -> NaN Invalid_operation -dqor880 or Inf sNaN23 -> NaN Invalid_operation -dqor881 or +NaN25 +sNaN24 -> NaN Invalid_operation -dqor882 or -NaN26 NaN28 -> NaN Invalid_operation -dqor883 or -sNaN27 sNaN29 -> NaN Invalid_operation -dqor884 or 1000 -NaN30 -> NaN Invalid_operation -dqor885 or 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqOr.decTest -- digitwise logical OR for decQuads -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check (truth table) +dqor001 or 0 0 -> 0 +dqor002 or 0 1 -> 1 +dqor003 or 1 0 -> 1 +dqor004 or 1 1 -> 1 +dqor005 or 1100 1010 -> 1110 +-- and at msd and msd-1 +dqor006 or 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 +dqor007 or 0000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 +dqor008 or 1000000000000000000000000000000000 0000000000000000000000000000000000 -> 1000000000000000000000000000000000 +dqor009 or 1000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 +dqor010 or 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 +dqor011 or 0000000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000 +dqor012 or 0100000000000000000000000000000000 0000000000000000000000000000000000 -> 100000000000000000000000000000000 +dqor013 or 0100000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000 + +-- Various lengths +dqor601 or 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111111 +dqor602 or 1011111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111111 +dqor603 or 1101111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111111 +dqor604 or 1110111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111111111 +dqor605 or 1111011111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111111111 +dqor606 or 1111101111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111111111 +dqor607 or 1111110111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111111111111 +dqor608 or 1111111011111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111111111111 +dqor609 or 1111111101111111111111111111111111 1111111111111111111111111011111111 -> 1111111111111111111111111111111111 +dqor610 or 1111111110111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111111111111111 +dqor611 or 1111111111011111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111111111111111 +dqor612 or 1111111111101111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111111111111111 +dqor613 or 1111111111110111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111111111111111111 +dqor614 or 1111111111111011111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111111111111111111 +dqor615 or 1111111111111101111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111111111111111111 +dqor616 or 1111111111111110111111111111111111 1111111111111111110111111111111111 -> 1111111111111111111111111111111111 +dqor617 or 1111111111111111011111111111111111 1111111111111111101111111111111111 -> 1111111111111111111111111111111111 +dqor618 or 1111111111111111101111111111111111 1111111111111111011111111111111111 -> 1111111111111111111111111111111111 +dqor619 or 1111111111111111110111111111111111 1111111111111110111111111111111111 -> 1111111111111111111111111111111111 +dqor620 or 1111111111111111111011111111111111 1111111111111101111111111111111111 -> 1111111111111111111111111111111111 +dqor621 or 1111111111111111111101111111111111 1111111111111011111111111111111111 -> 1111111111111111111111111111111111 +dqor622 or 1111111111111111111110111111111111 1111111111110111111111111111111111 -> 1111111111111111111111111111111111 +dqor623 or 1111111111111111111111011111111111 1111111111101111111111111111111111 -> 1111111111111111111111111111111111 +dqor624 or 1111111111111111111111101111111111 1111111111011111111111111111111111 -> 1111111111111111111111111111111111 +dqor625 or 1111111111111111111111110111111111 1111111110111111111111111111111111 -> 1111111111111111111111111111111111 +dqor626 or 1111111111111111111111111011111111 1111111101111111111111111111111111 -> 1111111111111111111111111111111111 +dqor627 or 1111111111111111111111111101111111 1111111011111111111111111111111111 -> 1111111111111111111111111111111111 +dqor628 or 1111111111111111111111111110111111 1111110111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor629 or 1111111111111111111111111111011111 1111101111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor630 or 1111111111111111111111111111101111 1111011111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor631 or 1111111111111111111111111111110111 1110111111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor632 or 1111111111111111111111111111111011 1101111111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor633 or 1111111111111111111111111111111101 1011111111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor634 or 1111111111111111111111111111111110 0111111111111111111111111111111111 -> 1111111111111111111111111111111111 + +dqor641 or 1111111111111111111111111111111110 0111111111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor642 or 1111111111111111111111111111111101 1011111111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor643 or 1111111111111111111111111111111011 1101111111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor644 or 1111111111111111111111111111110111 1110111111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor645 or 1111111111111111111111111111101111 1111011111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor646 or 1111111111111111111111111111011111 1111101111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor647 or 1111111111111111111111111110111111 1111110111111111111111111111111111 -> 1111111111111111111111111111111111 +dqor648 or 1111111111111111111111111101111111 1111111011111111111111111111111111 -> 1111111111111111111111111111111111 +dqor649 or 1111111111111111111111111011111111 1111111101111111111111111111111111 -> 1111111111111111111111111111111111 +dqor650 or 1111111111111111111111110111111111 1111111110111111111111111111111111 -> 1111111111111111111111111111111111 +dqor651 or 1111111111111111111111101111111111 1111111111011111111111111111111111 -> 1111111111111111111111111111111111 +dqor652 or 1111111111111111111111011111111111 1111111111101111111111111111111111 -> 1111111111111111111111111111111111 +dqor653 or 1111111111111111111110111111111111 1111111111110111111111111111111111 -> 1111111111111111111111111111111111 +dqor654 or 1111111111111111111101111111111111 1111111111111011111111111111111111 -> 1111111111111111111111111111111111 +dqor655 or 1111111111111111111011111111111111 1111111111111101111111111111111111 -> 1111111111111111111111111111111111 +dqor656 or 1111111111111111110111111111111111 1111111111111110111111111111111111 -> 1111111111111111111111111111111111 +dqor657 or 1010101010101010101010101010101010 1010101010101010001010101010101010 -> 1010101010101010101010101010101010 +dqor658 or 1111111111111111011111111111111111 1111111111111111101111111111111111 -> 1111111111111111111111111111111111 +dqor659 or 1111111111111110111111111111111111 1111111111111111110111111111111111 -> 1111111111111111111111111111111111 +dqor660 or 1111111111111101111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111111111111111111 +dqor661 or 1111111111111011111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111111111111111111 +dqor662 or 1111111111110111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111111111111111111 +dqor663 or 1111111111101111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111111111111111 +dqor664 or 1111111111011111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111111111111111 +dqor665 or 1111111110111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111111111111111 +dqor666 or 0101010101010101010101010101010101 0101010101010101010101010001010101 -> 101010101010101010101010101010101 +dqor667 or 1111111011111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111111111111 +dqor668 or 1111110111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111111111111 +dqor669 or 1111101111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111111111 +dqor670 or 1111011111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111111111 +dqor671 or 1110111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111111111 +dqor672 or 1101111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111111 +dqor673 or 1011111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111111 +dqor674 or 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111111 +dqor675 or 0111111111111111111111111111111110 1111111111111111111111111111111110 -> 1111111111111111111111111111111110 +dqor676 or 1111111111111111111111111111111110 1111111111111111111111111111111110 -> 1111111111111111111111111111111110 + +dqor681 or 0111111111111111111111111111111111 0111111111011111111111111111111110 -> 111111111111111111111111111111111 +dqor682 or 1011111111111111111111111111111111 1011111110101111111111111111111101 -> 1011111111111111111111111111111111 +dqor683 or 1101111111111111111111111111111111 1101111101110111111111111111111011 -> 1101111111111111111111111111111111 +dqor684 or 1110111111111111111111111111111111 1110111011111011111111111111110111 -> 1110111111111111111111111111111111 +dqor685 or 1111011111111111111111111111111111 1111010111111101111111111111101111 -> 1111011111111111111111111111111111 +dqor686 or 1111101111111111111111111111111111 1111101111111110111111111111011111 -> 1111101111111111111111111111111111 +dqor687 or 1111110111111111111111111111111111 1111010111111111011111111110111111 -> 1111110111111111111111111111111111 +dqor688 or 1111111011111111111111111111111111 1110111011111111101111111101111111 -> 1111111011111111111111111111111111 +dqor689 or 1111111101111111111111111111111111 1101111101111111110111111011111111 -> 1111111101111111111111111111111111 +dqor690 or 1111111110111111111111111111111111 1011111110111111111011110111111110 -> 1111111110111111111111111111111111 +dqor691 or 1111111111011111111111111111111111 0111111111011111111101101111111101 -> 1111111111011111111111111111111111 +dqor692 or 1111111111101111111111111111111111 1111111111101111111110011111111011 -> 1111111111101111111111111111111111 +dqor693 or 1111111111110111111111111111111111 1111111111110111111110011111110111 -> 1111111111110111111111111111111111 +dqor694 or 1111111111111011111111111111111111 1111111111111011111101101111101111 -> 1111111111111011111111111111111111 +dqor695 or 1111111111111101111111111111111111 1111111111111101111011110111011111 -> 1111111111111101111111111111111111 +dqor696 or 1111111111111110111111111111111111 1111111111111110110111111010111111 -> 1111111111111110111111111111111111 +dqor697 or 1111111111111111011111111111111111 1111111111111111001111111101111111 -> 1111111111111111011111111111111111 +dqor698 or 1111111111111111101111111111111111 1111111111111111001111111010111111 -> 1111111111111111101111111111111111 +dqor699 or 1111111111111111110111111111111111 1111111111111110110111110111011111 -> 1111111111111111110111111111111111 +dqor700 or 1111111111111111111011111111111111 1111111111111101111011101111101111 -> 1111111111111111111011111111111111 +dqor701 or 1111111111111111111101111111111111 1111111111111011111101011111110111 -> 1111111111111111111101111111111111 +dqor702 or 1111111111111111111110111111111111 1111111111110111111110111111111011 -> 1111111111111111111110111111111111 +dqor703 or 1111111111111111111111011111111111 1111111111101111111101011111111101 -> 1111111111111111111111011111111111 +dqor704 or 1111111111111111111111101111111111 1111111111011111111011101111111110 -> 1111111111111111111111101111111111 +dqor705 or 1111111111111111111111110111111111 0111111110111111110111110111111111 -> 1111111111111111111111110111111111 +dqor706 or 1111111111111111111111111011111111 1011111101111111101111111011111111 -> 1111111111111111111111111011111111 +dqor707 or 1111111111111111111111111101111111 1101111011111111011111111101111111 -> 1111111111111111111111111101111111 +dqor708 or 1111111111111111111111111110111111 1110110111111110111111111110111111 -> 1111111111111111111111111110111111 +dqor709 or 1111111111111111111111111111011111 1111001111111101111111111111011111 -> 1111111111111111111111111111011111 +dqor710 or 1111111111111111111111111111101111 1111001111111011111111111111101111 -> 1111111111111111111111111111101111 +dqor711 or 1111111111111111111111111111110111 1110110111110111111111111111110111 -> 1111111111111111111111111111110111 +dqor712 or 1111111111111111111111111111111011 1101111011101111111111111111111011 -> 1111111111111111111111111111111011 +dqor713 or 1111111111111111111111111111111101 1011111101011111111111111111111101 -> 1111111111111111111111111111111101 +dqor714 or 1111111111111111111111111111111110 0111111110111111111111111111111110 -> 1111111111111111111111111111111110 + + + +-- 1234567890123456 1234567890123456 1234567890123456 +dqor020 or 1111111111111111 1111111111111111 -> 1111111111111111 +dqor021 or 111111111111111 111111111111111 -> 111111111111111 +dqor022 or 11111111111111 11111111111111 -> 11111111111111 +dqor023 or 1111111111111 1111111111111 -> 1111111111111 +dqor024 or 111111111111 111111111111 -> 111111111111 +dqor025 or 11111111111 11111111111 -> 11111111111 +dqor026 or 1111111111 1111111111 -> 1111111111 +dqor027 or 111111111 111111111 -> 111111111 +dqor028 or 11111111 11111111 -> 11111111 +dqor029 or 1111111 1111111 -> 1111111 +dqor030 or 111111 111111 -> 111111 +dqor031 or 11111 11111 -> 11111 +dqor032 or 1111 1111 -> 1111 +dqor033 or 111 111 -> 111 +dqor034 or 11 11 -> 11 +dqor035 or 1 1 -> 1 +dqor036 or 0 0 -> 0 + +dqor042 or 111111110000000 1111111110000000 -> 1111111110000000 +dqor043 or 11111110000000 1000000100000000 -> 1011111110000000 +dqor044 or 1111110000000 1000001000000000 -> 1001111110000000 +dqor045 or 111110000000 1000010000000000 -> 1000111110000000 +dqor046 or 11110000000 1000100000000000 -> 1000111110000000 +dqor047 or 1110000000 1001000000000000 -> 1001001110000000 +dqor048 or 110000000 1010000000000000 -> 1010000110000000 +dqor049 or 10000000 1100000000000000 -> 1100000010000000 + +dqor090 or 011111111 111101111 -> 111111111 +dqor091 or 101111111 111101111 -> 111111111 +dqor092 or 110111111 111101111 -> 111111111 +dqor093 or 111011111 111101111 -> 111111111 +dqor094 or 111101111 111101111 -> 111101111 +dqor095 or 111110111 111101111 -> 111111111 +dqor096 or 111111011 111101111 -> 111111111 +dqor097 or 111111101 111101111 -> 111111111 +dqor098 or 111111110 111101111 -> 111111111 + +dqor100 or 111101111 011111111 -> 111111111 +dqor101 or 111101111 101111111 -> 111111111 +dqor102 or 111101111 110111111 -> 111111111 +dqor103 or 111101111 111011111 -> 111111111 +dqor104 or 111101111 111101111 -> 111101111 +dqor105 or 111101111 111110111 -> 111111111 +dqor106 or 111101111 111111011 -> 111111111 +dqor107 or 111101111 111111101 -> 111111111 +dqor108 or 111101111 111111110 -> 111111111 + +-- non-0/1 should not be accepted, nor should signs +dqor220 or 111111112 111111111 -> NaN Invalid_operation +dqor221 or 333333333 333333333 -> NaN Invalid_operation +dqor222 or 555555555 555555555 -> NaN Invalid_operation +dqor223 or 777777777 777777777 -> NaN Invalid_operation +dqor224 or 999999999 999999999 -> NaN Invalid_operation +dqor225 or 222222222 999999999 -> NaN Invalid_operation +dqor226 or 444444444 999999999 -> NaN Invalid_operation +dqor227 or 666666666 999999999 -> NaN Invalid_operation +dqor228 or 888888888 999999999 -> NaN Invalid_operation +dqor229 or 999999999 222222222 -> NaN Invalid_operation +dqor230 or 999999999 444444444 -> NaN Invalid_operation +dqor231 or 999999999 666666666 -> NaN Invalid_operation +dqor232 or 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +dqor240 or 567468689 -934981942 -> NaN Invalid_operation +dqor241 or 567367689 934981942 -> NaN Invalid_operation +dqor242 or -631917772 -706014634 -> NaN Invalid_operation +dqor243 or -756253257 138579234 -> NaN Invalid_operation +dqor244 or 835590149 567435400 -> NaN Invalid_operation +-- test MSD +dqor250 or 2000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqor251 or 7000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqor252 or 8000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqor253 or 9000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqor254 or 2000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqor255 or 7000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqor256 or 8000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqor257 or 9000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqor258 or 1000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation +dqor259 or 1000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation +dqor260 or 1000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation +dqor261 or 1000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation +dqor262 or 0000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation +dqor263 or 0000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation +dqor264 or 0000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation +dqor265 or 0000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation +-- test MSD-1 +dqor270 or 0200000111000111000111001000000000 1000000111000111000111100000000010 -> NaN Invalid_operation +dqor271 or 0700000111000111000111000100000000 1000000111000111000111010000000100 -> NaN Invalid_operation +dqor272 or 0800000111000111000111000010000000 1000000111000111000111001000001000 -> NaN Invalid_operation +dqor273 or 0900000111000111000111000001000000 1000000111000111000111000100010000 -> NaN Invalid_operation +dqor274 or 1000000111000111000111000000100000 0200000111000111000111000010100000 -> NaN Invalid_operation +dqor275 or 1000000111000111000111000000010000 0700000111000111000111000001000000 -> NaN Invalid_operation +dqor276 or 1000000111000111000111000000001000 0800000111000111000111000010100000 -> NaN Invalid_operation +dqor277 or 1000000111000111000111000000000100 0900000111000111000111000000010000 -> NaN Invalid_operation +-- test LSD +dqor280 or 0010000111000111000111000000000002 1000000111000111000111000100000001 -> NaN Invalid_operation +dqor281 or 0001000111000111000111000000000007 1000000111000111000111001000000011 -> NaN Invalid_operation +dqor282 or 0000000111000111000111100000000008 1000000111000111000111010000000001 -> NaN Invalid_operation +dqor283 or 0000000111000111000111010000000009 1000000111000111000111100000000001 -> NaN Invalid_operation +dqor284 or 1000000111000111000111001000000000 0001000111000111000111000000000002 -> NaN Invalid_operation +dqor285 or 1000000111000111000111000100000000 0010000111000111000111000000000007 -> NaN Invalid_operation +dqor286 or 1000000111000111000111000010000000 0100000111000111000111000000000008 -> NaN Invalid_operation +dqor287 or 1000000111000111000111000001000000 1000000111000111000111000000000009 -> NaN Invalid_operation +-- test Middie +dqor288 or 0010000111000111000111000020000000 1000000111000111000111001000000000 -> NaN Invalid_operation +dqor289 or 0001000111000111000111000070000001 1000000111000111000111000100000000 -> NaN Invalid_operation +dqor290 or 0000000111000111000111100080000010 1000000111000111000111000010000000 -> NaN Invalid_operation +dqor291 or 0000000111000111000111010090000100 1000000111000111000111000001000000 -> NaN Invalid_operation +dqor292 or 1000000111000111000111001000001000 0000000111000111000111000020100000 -> NaN Invalid_operation +dqor293 or 1000000111000111000111000100010000 0000000111000111000111000070010000 -> NaN Invalid_operation +dqor294 or 1000000111000111000111000010100000 0000000111000111000111000080001000 -> NaN Invalid_operation +dqor295 or 1000000111000111000111000001000000 0000000111000111000111000090000100 -> NaN Invalid_operation +-- signs +dqor296 or -1000000111000111000111000001000000 -0000001110001110001110010000000100 -> NaN Invalid_operation +dqor297 or -1000000111000111000111000001000000 0000001110001110001110000010000100 -> NaN Invalid_operation +dqor298 or 1000000111000111000111000001000000 -0000001110001110001110001000000100 -> NaN Invalid_operation +dqor299 or 1000000111000111000111000001000000 0000001110001110001110000011000100 -> 1000001111001111001111000011000100 + +-- Nmax, Nmin, Ntiny-like +dqor331 or 2 9.99999999E+1999 -> NaN Invalid_operation +dqor332 or 3 1E-1999 -> NaN Invalid_operation +dqor333 or 4 1.00000000E-1999 -> NaN Invalid_operation +dqor334 or 5 1E-1009 -> NaN Invalid_operation +dqor335 or 6 -1E-1009 -> NaN Invalid_operation +dqor336 or 7 -1.00000000E-1999 -> NaN Invalid_operation +dqor337 or 8 -1E-1999 -> NaN Invalid_operation +dqor338 or 9 -9.99999999E+1999 -> NaN Invalid_operation +dqor341 or 9.99999999E+2999 -18 -> NaN Invalid_operation +dqor342 or 1E-2999 01 -> NaN Invalid_operation +dqor343 or 1.00000000E-2999 -18 -> NaN Invalid_operation +dqor344 or 1E-1009 18 -> NaN Invalid_operation +dqor345 or -1E-1009 -10 -> NaN Invalid_operation +dqor346 or -1.00000000E-2999 18 -> NaN Invalid_operation +dqor347 or -1E-2999 10 -> NaN Invalid_operation +dqor348 or -9.99999999E+2999 -18 -> NaN Invalid_operation + +-- A few other non-integers +dqor361 or 1.0 1 -> NaN Invalid_operation +dqor362 or 1E+1 1 -> NaN Invalid_operation +dqor363 or 0.0 1 -> NaN Invalid_operation +dqor364 or 0E+1 1 -> NaN Invalid_operation +dqor365 or 9.9 1 -> NaN Invalid_operation +dqor366 or 9E+1 1 -> NaN Invalid_operation +dqor371 or 0 1.0 -> NaN Invalid_operation +dqor372 or 0 1E+1 -> NaN Invalid_operation +dqor373 or 0 0.0 -> NaN Invalid_operation +dqor374 or 0 0E+1 -> NaN Invalid_operation +dqor375 or 0 9.9 -> NaN Invalid_operation +dqor376 or 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +dqor780 or -Inf -Inf -> NaN Invalid_operation +dqor781 or -Inf -1000 -> NaN Invalid_operation +dqor782 or -Inf -1 -> NaN Invalid_operation +dqor783 or -Inf -0 -> NaN Invalid_operation +dqor784 or -Inf 0 -> NaN Invalid_operation +dqor785 or -Inf 1 -> NaN Invalid_operation +dqor786 or -Inf 1000 -> NaN Invalid_operation +dqor787 or -1000 -Inf -> NaN Invalid_operation +dqor788 or -Inf -Inf -> NaN Invalid_operation +dqor789 or -1 -Inf -> NaN Invalid_operation +dqor790 or -0 -Inf -> NaN Invalid_operation +dqor791 or 0 -Inf -> NaN Invalid_operation +dqor792 or 1 -Inf -> NaN Invalid_operation +dqor793 or 1000 -Inf -> NaN Invalid_operation +dqor794 or Inf -Inf -> NaN Invalid_operation + +dqor800 or Inf -Inf -> NaN Invalid_operation +dqor801 or Inf -1000 -> NaN Invalid_operation +dqor802 or Inf -1 -> NaN Invalid_operation +dqor803 or Inf -0 -> NaN Invalid_operation +dqor804 or Inf 0 -> NaN Invalid_operation +dqor805 or Inf 1 -> NaN Invalid_operation +dqor806 or Inf 1000 -> NaN Invalid_operation +dqor807 or Inf Inf -> NaN Invalid_operation +dqor808 or -1000 Inf -> NaN Invalid_operation +dqor809 or -Inf Inf -> NaN Invalid_operation +dqor810 or -1 Inf -> NaN Invalid_operation +dqor811 or -0 Inf -> NaN Invalid_operation +dqor812 or 0 Inf -> NaN Invalid_operation +dqor813 or 1 Inf -> NaN Invalid_operation +dqor814 or 1000 Inf -> NaN Invalid_operation +dqor815 or Inf Inf -> NaN Invalid_operation + +dqor821 or NaN -Inf -> NaN Invalid_operation +dqor822 or NaN -1000 -> NaN Invalid_operation +dqor823 or NaN -1 -> NaN Invalid_operation +dqor824 or NaN -0 -> NaN Invalid_operation +dqor825 or NaN 0 -> NaN Invalid_operation +dqor826 or NaN 1 -> NaN Invalid_operation +dqor827 or NaN 1000 -> NaN Invalid_operation +dqor828 or NaN Inf -> NaN Invalid_operation +dqor829 or NaN NaN -> NaN Invalid_operation +dqor830 or -Inf NaN -> NaN Invalid_operation +dqor831 or -1000 NaN -> NaN Invalid_operation +dqor832 or -1 NaN -> NaN Invalid_operation +dqor833 or -0 NaN -> NaN Invalid_operation +dqor834 or 0 NaN -> NaN Invalid_operation +dqor835 or 1 NaN -> NaN Invalid_operation +dqor836 or 1000 NaN -> NaN Invalid_operation +dqor837 or Inf NaN -> NaN Invalid_operation + +dqor841 or sNaN -Inf -> NaN Invalid_operation +dqor842 or sNaN -1000 -> NaN Invalid_operation +dqor843 or sNaN -1 -> NaN Invalid_operation +dqor844 or sNaN -0 -> NaN Invalid_operation +dqor845 or sNaN 0 -> NaN Invalid_operation +dqor846 or sNaN 1 -> NaN Invalid_operation +dqor847 or sNaN 1000 -> NaN Invalid_operation +dqor848 or sNaN NaN -> NaN Invalid_operation +dqor849 or sNaN sNaN -> NaN Invalid_operation +dqor850 or NaN sNaN -> NaN Invalid_operation +dqor851 or -Inf sNaN -> NaN Invalid_operation +dqor852 or -1000 sNaN -> NaN Invalid_operation +dqor853 or -1 sNaN -> NaN Invalid_operation +dqor854 or -0 sNaN -> NaN Invalid_operation +dqor855 or 0 sNaN -> NaN Invalid_operation +dqor856 or 1 sNaN -> NaN Invalid_operation +dqor857 or 1000 sNaN -> NaN Invalid_operation +dqor858 or Inf sNaN -> NaN Invalid_operation +dqor859 or NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqor861 or NaN1 -Inf -> NaN Invalid_operation +dqor862 or +NaN2 -1000 -> NaN Invalid_operation +dqor863 or NaN3 1000 -> NaN Invalid_operation +dqor864 or NaN4 Inf -> NaN Invalid_operation +dqor865 or NaN5 +NaN6 -> NaN Invalid_operation +dqor866 or -Inf NaN7 -> NaN Invalid_operation +dqor867 or -1000 NaN8 -> NaN Invalid_operation +dqor868 or 1000 NaN9 -> NaN Invalid_operation +dqor869 or Inf +NaN10 -> NaN Invalid_operation +dqor871 or sNaN11 -Inf -> NaN Invalid_operation +dqor872 or sNaN12 -1000 -> NaN Invalid_operation +dqor873 or sNaN13 1000 -> NaN Invalid_operation +dqor874 or sNaN14 NaN17 -> NaN Invalid_operation +dqor875 or sNaN15 sNaN18 -> NaN Invalid_operation +dqor876 or NaN16 sNaN19 -> NaN Invalid_operation +dqor877 or -Inf +sNaN20 -> NaN Invalid_operation +dqor878 or -1000 sNaN21 -> NaN Invalid_operation +dqor879 or 1000 sNaN22 -> NaN Invalid_operation +dqor880 or Inf sNaN23 -> NaN Invalid_operation +dqor881 or +NaN25 +sNaN24 -> NaN Invalid_operation +dqor882 or -NaN26 NaN28 -> NaN Invalid_operation +dqor883 or -sNaN27 sNaN29 -> NaN Invalid_operation +dqor884 or 1000 -NaN30 -> NaN Invalid_operation +dqor885 or 1000 -sNaN31 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqPlus.decTest b/Lib/test/decimaltestdata/dqPlus.decTest index df1a15c..8aecaab 100644 --- a/Lib/test/decimaltestdata/dqPlus.decTest +++ b/Lib/test/decimaltestdata/dqPlus.decTest @@ -1,88 +1,88 @@ ------------------------------------------------------------------------- --- dqPlus.decTest -- decQuad 0+x -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check -dqpls001 plus +7.50 -> 7.50 - --- Infinities -dqpls011 plus Infinity -> Infinity -dqpls012 plus -Infinity -> -Infinity - --- NaNs, 0 payload -ddqls021 plus NaN -> NaN -ddqls022 plus -NaN -> -NaN -ddqls023 plus sNaN -> NaN Invalid_operation -ddqls024 plus -sNaN -> -NaN Invalid_operation - --- NaNs, non-0 payload -ddqls031 plus NaN13 -> NaN13 -ddqls032 plus -NaN13 -> -NaN13 -ddqls033 plus sNaN13 -> NaN13 Invalid_operation -ddqls034 plus -sNaN13 -> -NaN13 Invalid_operation -ddqls035 plus NaN70 -> NaN70 -ddqls036 plus -NaN70 -> -NaN70 -ddqls037 plus sNaN101 -> NaN101 Invalid_operation -ddqls038 plus -sNaN101 -> -NaN101 Invalid_operation - --- finites -dqpls101 plus 7 -> 7 -dqpls102 plus -7 -> -7 -dqpls103 plus 75 -> 75 -dqpls104 plus -75 -> -75 -dqpls105 plus 7.50 -> 7.50 -dqpls106 plus -7.50 -> -7.50 -dqpls107 plus 7.500 -> 7.500 -dqpls108 plus -7.500 -> -7.500 - --- zeros -dqpls111 plus 0 -> 0 -dqpls112 plus -0 -> 0 -dqpls113 plus 0E+4 -> 0E+4 -dqpls114 plus -0E+4 -> 0E+4 -dqpls115 plus 0.0000 -> 0.0000 -dqpls116 plus -0.0000 -> 0.0000 -dqpls117 plus 0E-141 -> 0E-141 -dqpls118 plus -0E-141 -> 0E-141 - --- full coefficients, alternating bits -dqpls121 plus 2682682682682682682682682682682682 -> 2682682682682682682682682682682682 -dqpls122 plus -2682682682682682682682682682682682 -> -2682682682682682682682682682682682 -dqpls123 plus 1341341341341341341341341341341341 -> 1341341341341341341341341341341341 -dqpls124 plus -1341341341341341341341341341341341 -> -1341341341341341341341341341341341 - --- Nmax, Nmin, Ntiny -dqpls131 plus 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 -dqpls132 plus 1E-6143 -> 1E-6143 -dqpls133 plus 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 -dqpls134 plus 1E-6176 -> 1E-6176 Subnormal - -dqpls135 plus -1E-6176 -> -1E-6176 Subnormal -dqpls136 plus -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 -dqpls137 plus -1E-6143 -> -1E-6143 -dqpls138 plus -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 +------------------------------------------------------------------------ +-- dqPlus.decTest -- decQuad 0+x -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check +dqpls001 plus +7.50 -> 7.50 + +-- Infinities +dqpls011 plus Infinity -> Infinity +dqpls012 plus -Infinity -> -Infinity + +-- NaNs, 0 payload +ddqls021 plus NaN -> NaN +ddqls022 plus -NaN -> -NaN +ddqls023 plus sNaN -> NaN Invalid_operation +ddqls024 plus -sNaN -> -NaN Invalid_operation + +-- NaNs, non-0 payload +ddqls031 plus NaN13 -> NaN13 +ddqls032 plus -NaN13 -> -NaN13 +ddqls033 plus sNaN13 -> NaN13 Invalid_operation +ddqls034 plus -sNaN13 -> -NaN13 Invalid_operation +ddqls035 plus NaN70 -> NaN70 +ddqls036 plus -NaN70 -> -NaN70 +ddqls037 plus sNaN101 -> NaN101 Invalid_operation +ddqls038 plus -sNaN101 -> -NaN101 Invalid_operation + +-- finites +dqpls101 plus 7 -> 7 +dqpls102 plus -7 -> -7 +dqpls103 plus 75 -> 75 +dqpls104 plus -75 -> -75 +dqpls105 plus 7.50 -> 7.50 +dqpls106 plus -7.50 -> -7.50 +dqpls107 plus 7.500 -> 7.500 +dqpls108 plus -7.500 -> -7.500 + +-- zeros +dqpls111 plus 0 -> 0 +dqpls112 plus -0 -> 0 +dqpls113 plus 0E+4 -> 0E+4 +dqpls114 plus -0E+4 -> 0E+4 +dqpls115 plus 0.0000 -> 0.0000 +dqpls116 plus -0.0000 -> 0.0000 +dqpls117 plus 0E-141 -> 0E-141 +dqpls118 plus -0E-141 -> 0E-141 + +-- full coefficients, alternating bits +dqpls121 plus 2682682682682682682682682682682682 -> 2682682682682682682682682682682682 +dqpls122 plus -2682682682682682682682682682682682 -> -2682682682682682682682682682682682 +dqpls123 plus 1341341341341341341341341341341341 -> 1341341341341341341341341341341341 +dqpls124 plus -1341341341341341341341341341341341 -> -1341341341341341341341341341341341 + +-- Nmax, Nmin, Ntiny +dqpls131 plus 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +dqpls132 plus 1E-6143 -> 1E-6143 +dqpls133 plus 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143 +dqpls134 plus 1E-6176 -> 1E-6176 Subnormal + +dqpls135 plus -1E-6176 -> -1E-6176 Subnormal +dqpls136 plus -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143 +dqpls137 plus -1E-6143 -> -1E-6143 +dqpls138 plus -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 diff --git a/Lib/test/decimaltestdata/dqQuantize.decTest b/Lib/test/decimaltestdata/dqQuantize.decTest index 4ed39b4..51471c2 100644 --- a/Lib/test/decimaltestdata/dqQuantize.decTest +++ b/Lib/test/decimaltestdata/dqQuantize.decTest @@ -1,836 +1,836 @@ ------------------------------------------------------------------------- --- dqQuantize.decTest -- decQuad quantize operation -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Most of the tests here assume a "regular pattern", where the --- sign and coefficient are +1. --- 2004.03.15 Underflow for quantize is suppressed --- 2005.06.08 More extensive tests for 'does not fit' --- [Forked from quantize.decTest 2006.11.25] - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks -dqqua001 quantize 0 1e0 -> 0 -dqqua002 quantize 1 1e0 -> 1 -dqqua003 quantize 0.1 1e+2 -> 0E+2 Inexact Rounded -dqqua005 quantize 0.1 1e+1 -> 0E+1 Inexact Rounded -dqqua006 quantize 0.1 1e0 -> 0 Inexact Rounded -dqqua007 quantize 0.1 1e-1 -> 0.1 -dqqua008 quantize 0.1 1e-2 -> 0.10 -dqqua009 quantize 0.1 1e-3 -> 0.100 -dqqua010 quantize 0.9 1e+2 -> 0E+2 Inexact Rounded -dqqua011 quantize 0.9 1e+1 -> 0E+1 Inexact Rounded -dqqua012 quantize 0.9 1e+0 -> 1 Inexact Rounded -dqqua013 quantize 0.9 1e-1 -> 0.9 -dqqua014 quantize 0.9 1e-2 -> 0.90 -dqqua015 quantize 0.9 1e-3 -> 0.900 --- negatives -dqqua021 quantize -0 1e0 -> -0 -dqqua022 quantize -1 1e0 -> -1 -dqqua023 quantize -0.1 1e+2 -> -0E+2 Inexact Rounded -dqqua025 quantize -0.1 1e+1 -> -0E+1 Inexact Rounded -dqqua026 quantize -0.1 1e0 -> -0 Inexact Rounded -dqqua027 quantize -0.1 1e-1 -> -0.1 -dqqua028 quantize -0.1 1e-2 -> -0.10 -dqqua029 quantize -0.1 1e-3 -> -0.100 -dqqua030 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded -dqqua031 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded -dqqua032 quantize -0.9 1e+0 -> -1 Inexact Rounded -dqqua033 quantize -0.9 1e-1 -> -0.9 -dqqua034 quantize -0.9 1e-2 -> -0.90 -dqqua035 quantize -0.9 1e-3 -> -0.900 -dqqua036 quantize -0.5 1e+2 -> -0E+2 Inexact Rounded -dqqua037 quantize -0.5 1e+1 -> -0E+1 Inexact Rounded -dqqua038 quantize -0.5 1e+0 -> -0 Inexact Rounded -dqqua039 quantize -0.5 1e-1 -> -0.5 -dqqua040 quantize -0.5 1e-2 -> -0.50 -dqqua041 quantize -0.5 1e-3 -> -0.500 -dqqua042 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded -dqqua043 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded -dqqua044 quantize -0.9 1e+0 -> -1 Inexact Rounded -dqqua045 quantize -0.9 1e-1 -> -0.9 -dqqua046 quantize -0.9 1e-2 -> -0.90 -dqqua047 quantize -0.9 1e-3 -> -0.900 - --- examples from Specification -dqqua060 quantize 2.17 0.001 -> 2.170 -dqqua061 quantize 2.17 0.01 -> 2.17 -dqqua062 quantize 2.17 0.1 -> 2.2 Inexact Rounded -dqqua063 quantize 2.17 1e+0 -> 2 Inexact Rounded -dqqua064 quantize 2.17 1e+1 -> 0E+1 Inexact Rounded -dqqua065 quantize -Inf Inf -> -Infinity -dqqua066 quantize 2 Inf -> NaN Invalid_operation -dqqua067 quantize -0.1 1 -> -0 Inexact Rounded -dqqua068 quantize -0 1e+5 -> -0E+5 -dqqua069 quantize +123451234567899876543216789012345.6 1e-2 -> NaN Invalid_operation -dqqua070 quantize -987651234567899876543214335236450.6 1e-2 -> NaN Invalid_operation -dqqua071 quantize 217 1e-1 -> 217.0 -dqqua072 quantize 217 1e+0 -> 217 -dqqua073 quantize 217 1e+1 -> 2.2E+2 Inexact Rounded -dqqua074 quantize 217 1e+2 -> 2E+2 Inexact Rounded - --- general tests .. -dqqua089 quantize 12 1e+4 -> 0E+4 Inexact Rounded -dqqua090 quantize 12 1e+3 -> 0E+3 Inexact Rounded -dqqua091 quantize 12 1e+2 -> 0E+2 Inexact Rounded -dqqua092 quantize 12 1e+1 -> 1E+1 Inexact Rounded -dqqua093 quantize 1.2345 1e-2 -> 1.23 Inexact Rounded -dqqua094 quantize 1.2355 1e-2 -> 1.24 Inexact Rounded -dqqua095 quantize 1.2345 1e-6 -> 1.234500 -dqqua096 quantize 9.9999 1e-2 -> 10.00 Inexact Rounded -dqqua097 quantize 0.0001 1e-2 -> 0.00 Inexact Rounded -dqqua098 quantize 0.001 1e-2 -> 0.00 Inexact Rounded -dqqua099 quantize 0.009 1e-2 -> 0.01 Inexact Rounded -dqqua100 quantize 92 1e+2 -> 1E+2 Inexact Rounded - -dqqua101 quantize -1 1e0 -> -1 -dqqua102 quantize -1 1e-1 -> -1.0 -dqqua103 quantize -1 1e-2 -> -1.00 -dqqua104 quantize 0 1e0 -> 0 -dqqua105 quantize 0 1e-1 -> 0.0 -dqqua106 quantize 0 1e-2 -> 0.00 -dqqua107 quantize 0.00 1e0 -> 0 -dqqua108 quantize 0 1e+1 -> 0E+1 -dqqua109 quantize 0 1e+2 -> 0E+2 -dqqua110 quantize +1 1e0 -> 1 -dqqua111 quantize +1 1e-1 -> 1.0 -dqqua112 quantize +1 1e-2 -> 1.00 - -dqqua120 quantize 1.04 1e-3 -> 1.040 -dqqua121 quantize 1.04 1e-2 -> 1.04 -dqqua122 quantize 1.04 1e-1 -> 1.0 Inexact Rounded -dqqua123 quantize 1.04 1e0 -> 1 Inexact Rounded -dqqua124 quantize 1.05 1e-3 -> 1.050 -dqqua125 quantize 1.05 1e-2 -> 1.05 -dqqua126 quantize 1.05 1e-1 -> 1.0 Inexact Rounded -dqqua131 quantize 1.05 1e0 -> 1 Inexact Rounded -dqqua132 quantize 1.06 1e-3 -> 1.060 -dqqua133 quantize 1.06 1e-2 -> 1.06 -dqqua134 quantize 1.06 1e-1 -> 1.1 Inexact Rounded -dqqua135 quantize 1.06 1e0 -> 1 Inexact Rounded - -dqqua140 quantize -10 1e-2 -> -10.00 -dqqua141 quantize +1 1e-2 -> 1.00 -dqqua142 quantize +10 1e-2 -> 10.00 -dqqua143 quantize 1E+37 1e-2 -> NaN Invalid_operation -dqqua144 quantize 1E-37 1e-2 -> 0.00 Inexact Rounded -dqqua145 quantize 1E-3 1e-2 -> 0.00 Inexact Rounded -dqqua146 quantize 1E-2 1e-2 -> 0.01 -dqqua147 quantize 1E-1 1e-2 -> 0.10 -dqqua148 quantize 0E-37 1e-2 -> 0.00 - -dqqua150 quantize 1.0600 1e-5 -> 1.06000 -dqqua151 quantize 1.0600 1e-4 -> 1.0600 -dqqua152 quantize 1.0600 1e-3 -> 1.060 Rounded -dqqua153 quantize 1.0600 1e-2 -> 1.06 Rounded -dqqua154 quantize 1.0600 1e-1 -> 1.1 Inexact Rounded -dqqua155 quantize 1.0600 1e0 -> 1 Inexact Rounded - --- a couple where rounding was different in base tests -rounding: half_up -dqqua157 quantize -0.5 1e+0 -> -1 Inexact Rounded -dqqua158 quantize 1.05 1e-1 -> 1.1 Inexact Rounded -dqqua159 quantize 1.06 1e0 -> 1 Inexact Rounded -rounding: half_even - --- base tests with non-1 coefficients -dqqua161 quantize 0 -9e0 -> 0 -dqqua162 quantize 1 -7e0 -> 1 -dqqua163 quantize 0.1 -1e+2 -> 0E+2 Inexact Rounded -dqqua165 quantize 0.1 0e+1 -> 0E+1 Inexact Rounded -dqqua166 quantize 0.1 2e0 -> 0 Inexact Rounded -dqqua167 quantize 0.1 3e-1 -> 0.1 -dqqua168 quantize 0.1 44e-2 -> 0.10 -dqqua169 quantize 0.1 555e-3 -> 0.100 -dqqua170 quantize 0.9 6666e+2 -> 0E+2 Inexact Rounded -dqqua171 quantize 0.9 -777e+1 -> 0E+1 Inexact Rounded -dqqua172 quantize 0.9 -88e+0 -> 1 Inexact Rounded -dqqua173 quantize 0.9 -9e-1 -> 0.9 -dqqua174 quantize 0.9 0e-2 -> 0.90 -dqqua175 quantize 0.9 1.1e-3 -> 0.9000 --- negatives -dqqua181 quantize -0 1.1e0 -> -0.0 -dqqua182 quantize -1 -1e0 -> -1 -dqqua183 quantize -0.1 11e+2 -> -0E+2 Inexact Rounded -dqqua185 quantize -0.1 111e+1 -> -0E+1 Inexact Rounded -dqqua186 quantize -0.1 71e0 -> -0 Inexact Rounded -dqqua187 quantize -0.1 -91e-1 -> -0.1 -dqqua188 quantize -0.1 -.1e-2 -> -0.100 -dqqua189 quantize -0.1 -1e-3 -> -0.100 -dqqua190 quantize -0.9 0e+2 -> -0E+2 Inexact Rounded -dqqua191 quantize -0.9 -0e+1 -> -0E+1 Inexact Rounded -dqqua192 quantize -0.9 -10e+0 -> -1 Inexact Rounded -dqqua193 quantize -0.9 100e-1 -> -0.9 -dqqua194 quantize -0.9 999e-2 -> -0.90 - --- +ve exponents .. -dqqua201 quantize -1 1e+0 -> -1 -dqqua202 quantize -1 1e+1 -> -0E+1 Inexact Rounded -dqqua203 quantize -1 1e+2 -> -0E+2 Inexact Rounded -dqqua204 quantize 0 1e+0 -> 0 -dqqua205 quantize 0 1e+1 -> 0E+1 -dqqua206 quantize 0 1e+2 -> 0E+2 -dqqua207 quantize +1 1e+0 -> 1 -dqqua208 quantize +1 1e+1 -> 0E+1 Inexact Rounded -dqqua209 quantize +1 1e+2 -> 0E+2 Inexact Rounded - -dqqua220 quantize 1.04 1e+3 -> 0E+3 Inexact Rounded -dqqua221 quantize 1.04 1e+2 -> 0E+2 Inexact Rounded -dqqua222 quantize 1.04 1e+1 -> 0E+1 Inexact Rounded -dqqua223 quantize 1.04 1e+0 -> 1 Inexact Rounded -dqqua224 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded -dqqua225 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded -dqqua226 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded -dqqua227 quantize 1.05 1e+0 -> 1 Inexact Rounded -dqqua228 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded -dqqua229 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded -dqqua230 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded -dqqua231 quantize 1.05 1e+0 -> 1 Inexact Rounded -dqqua232 quantize 1.06 1e+3 -> 0E+3 Inexact Rounded -dqqua233 quantize 1.06 1e+2 -> 0E+2 Inexact Rounded -dqqua234 quantize 1.06 1e+1 -> 0E+1 Inexact Rounded -dqqua235 quantize 1.06 1e+0 -> 1 Inexact Rounded - -dqqua240 quantize -10 1e+1 -> -1E+1 Rounded -dqqua241 quantize +1 1e+1 -> 0E+1 Inexact Rounded -dqqua242 quantize +10 1e+1 -> 1E+1 Rounded -dqqua243 quantize 1E+1 1e+1 -> 1E+1 -- underneath this is E+1 -dqqua244 quantize 1E+2 1e+1 -> 1.0E+2 -- underneath this is E+1 -dqqua245 quantize 1E+3 1e+1 -> 1.00E+3 -- underneath this is E+1 -dqqua246 quantize 1E+4 1e+1 -> 1.000E+4 -- underneath this is E+1 -dqqua247 quantize 1E+5 1e+1 -> 1.0000E+5 -- underneath this is E+1 -dqqua248 quantize 1E+6 1e+1 -> 1.00000E+6 -- underneath this is E+1 -dqqua249 quantize 1E+7 1e+1 -> 1.000000E+7 -- underneath this is E+1 -dqqua250 quantize 1E+8 1e+1 -> 1.0000000E+8 -- underneath this is E+1 -dqqua251 quantize 1E+9 1e+1 -> 1.00000000E+9 -- underneath this is E+1 --- next one tries to add 9 zeros -dqqua252 quantize 1E+37 1e+1 -> NaN Invalid_operation -dqqua253 quantize 1E-37 1e+1 -> 0E+1 Inexact Rounded -dqqua254 quantize 1E-2 1e+1 -> 0E+1 Inexact Rounded -dqqua255 quantize 0E-37 1e+1 -> 0E+1 -dqqua256 quantize -0E-37 1e+1 -> -0E+1 -dqqua257 quantize -0E-1 1e+1 -> -0E+1 -dqqua258 quantize -0 1e+1 -> -0E+1 -dqqua259 quantize -0E+1 1e+1 -> -0E+1 - -dqqua260 quantize -10 1e+2 -> -0E+2 Inexact Rounded -dqqua261 quantize +1 1e+2 -> 0E+2 Inexact Rounded -dqqua262 quantize +10 1e+2 -> 0E+2 Inexact Rounded -dqqua263 quantize 1E+1 1e+2 -> 0E+2 Inexact Rounded -dqqua264 quantize 1E+2 1e+2 -> 1E+2 -dqqua265 quantize 1E+3 1e+2 -> 1.0E+3 -dqqua266 quantize 1E+4 1e+2 -> 1.00E+4 -dqqua267 quantize 1E+5 1e+2 -> 1.000E+5 -dqqua268 quantize 1E+6 1e+2 -> 1.0000E+6 -dqqua269 quantize 1E+7 1e+2 -> 1.00000E+7 -dqqua270 quantize 1E+8 1e+2 -> 1.000000E+8 -dqqua271 quantize 1E+9 1e+2 -> 1.0000000E+9 -dqqua272 quantize 1E+10 1e+2 -> 1.00000000E+10 -dqqua273 quantize 1E-10 1e+2 -> 0E+2 Inexact Rounded -dqqua274 quantize 1E-2 1e+2 -> 0E+2 Inexact Rounded -dqqua275 quantize 0E-10 1e+2 -> 0E+2 - -dqqua280 quantize -10 1e+3 -> -0E+3 Inexact Rounded -dqqua281 quantize +1 1e+3 -> 0E+3 Inexact Rounded -dqqua282 quantize +10 1e+3 -> 0E+3 Inexact Rounded -dqqua283 quantize 1E+1 1e+3 -> 0E+3 Inexact Rounded -dqqua284 quantize 1E+2 1e+3 -> 0E+3 Inexact Rounded -dqqua285 quantize 1E+3 1e+3 -> 1E+3 -dqqua286 quantize 1E+4 1e+3 -> 1.0E+4 -dqqua287 quantize 1E+5 1e+3 -> 1.00E+5 -dqqua288 quantize 1E+6 1e+3 -> 1.000E+6 -dqqua289 quantize 1E+7 1e+3 -> 1.0000E+7 -dqqua290 quantize 1E+8 1e+3 -> 1.00000E+8 -dqqua291 quantize 1E+9 1e+3 -> 1.000000E+9 -dqqua292 quantize 1E+10 1e+3 -> 1.0000000E+10 -dqqua293 quantize 1E-10 1e+3 -> 0E+3 Inexact Rounded -dqqua294 quantize 1E-2 1e+3 -> 0E+3 Inexact Rounded -dqqua295 quantize 0E-10 1e+3 -> 0E+3 - --- round up from below [sign wrong in JIT compiler once] -dqqua300 quantize 0.0078 1e-5 -> 0.00780 -dqqua301 quantize 0.0078 1e-4 -> 0.0078 -dqqua302 quantize 0.0078 1e-3 -> 0.008 Inexact Rounded -dqqua303 quantize 0.0078 1e-2 -> 0.01 Inexact Rounded -dqqua304 quantize 0.0078 1e-1 -> 0.0 Inexact Rounded -dqqua305 quantize 0.0078 1e0 -> 0 Inexact Rounded -dqqua306 quantize 0.0078 1e+1 -> 0E+1 Inexact Rounded -dqqua307 quantize 0.0078 1e+2 -> 0E+2 Inexact Rounded - -dqqua310 quantize -0.0078 1e-5 -> -0.00780 -dqqua311 quantize -0.0078 1e-4 -> -0.0078 -dqqua312 quantize -0.0078 1e-3 -> -0.008 Inexact Rounded -dqqua313 quantize -0.0078 1e-2 -> -0.01 Inexact Rounded -dqqua314 quantize -0.0078 1e-1 -> -0.0 Inexact Rounded -dqqua315 quantize -0.0078 1e0 -> -0 Inexact Rounded -dqqua316 quantize -0.0078 1e+1 -> -0E+1 Inexact Rounded -dqqua317 quantize -0.0078 1e+2 -> -0E+2 Inexact Rounded - -dqqua320 quantize 0.078 1e-5 -> 0.07800 -dqqua321 quantize 0.078 1e-4 -> 0.0780 -dqqua322 quantize 0.078 1e-3 -> 0.078 -dqqua323 quantize 0.078 1e-2 -> 0.08 Inexact Rounded -dqqua324 quantize 0.078 1e-1 -> 0.1 Inexact Rounded -dqqua325 quantize 0.078 1e0 -> 0 Inexact Rounded -dqqua326 quantize 0.078 1e+1 -> 0E+1 Inexact Rounded -dqqua327 quantize 0.078 1e+2 -> 0E+2 Inexact Rounded - -dqqua330 quantize -0.078 1e-5 -> -0.07800 -dqqua331 quantize -0.078 1e-4 -> -0.0780 -dqqua332 quantize -0.078 1e-3 -> -0.078 -dqqua333 quantize -0.078 1e-2 -> -0.08 Inexact Rounded -dqqua334 quantize -0.078 1e-1 -> -0.1 Inexact Rounded -dqqua335 quantize -0.078 1e0 -> -0 Inexact Rounded -dqqua336 quantize -0.078 1e+1 -> -0E+1 Inexact Rounded -dqqua337 quantize -0.078 1e+2 -> -0E+2 Inexact Rounded - -dqqua340 quantize 0.78 1e-5 -> 0.78000 -dqqua341 quantize 0.78 1e-4 -> 0.7800 -dqqua342 quantize 0.78 1e-3 -> 0.780 -dqqua343 quantize 0.78 1e-2 -> 0.78 -dqqua344 quantize 0.78 1e-1 -> 0.8 Inexact Rounded -dqqua345 quantize 0.78 1e0 -> 1 Inexact Rounded -dqqua346 quantize 0.78 1e+1 -> 0E+1 Inexact Rounded -dqqua347 quantize 0.78 1e+2 -> 0E+2 Inexact Rounded - -dqqua350 quantize -0.78 1e-5 -> -0.78000 -dqqua351 quantize -0.78 1e-4 -> -0.7800 -dqqua352 quantize -0.78 1e-3 -> -0.780 -dqqua353 quantize -0.78 1e-2 -> -0.78 -dqqua354 quantize -0.78 1e-1 -> -0.8 Inexact Rounded -dqqua355 quantize -0.78 1e0 -> -1 Inexact Rounded -dqqua356 quantize -0.78 1e+1 -> -0E+1 Inexact Rounded -dqqua357 quantize -0.78 1e+2 -> -0E+2 Inexact Rounded - -dqqua360 quantize 7.8 1e-5 -> 7.80000 -dqqua361 quantize 7.8 1e-4 -> 7.8000 -dqqua362 quantize 7.8 1e-3 -> 7.800 -dqqua363 quantize 7.8 1e-2 -> 7.80 -dqqua364 quantize 7.8 1e-1 -> 7.8 -dqqua365 quantize 7.8 1e0 -> 8 Inexact Rounded -dqqua366 quantize 7.8 1e+1 -> 1E+1 Inexact Rounded -dqqua367 quantize 7.8 1e+2 -> 0E+2 Inexact Rounded -dqqua368 quantize 7.8 1e+3 -> 0E+3 Inexact Rounded - -dqqua370 quantize -7.8 1e-5 -> -7.80000 -dqqua371 quantize -7.8 1e-4 -> -7.8000 -dqqua372 quantize -7.8 1e-3 -> -7.800 -dqqua373 quantize -7.8 1e-2 -> -7.80 -dqqua374 quantize -7.8 1e-1 -> -7.8 -dqqua375 quantize -7.8 1e0 -> -8 Inexact Rounded -dqqua376 quantize -7.8 1e+1 -> -1E+1 Inexact Rounded -dqqua377 quantize -7.8 1e+2 -> -0E+2 Inexact Rounded -dqqua378 quantize -7.8 1e+3 -> -0E+3 Inexact Rounded - --- some individuals -dqqua380 quantize 1122334455667788991234567352364.506 1e-2 -> 1122334455667788991234567352364.51 Inexact Rounded -dqqua381 quantize 11223344556677889912345673523645.06 1e-2 -> 11223344556677889912345673523645.06 -dqqua382 quantize 112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation -dqqua383 quantize 1122334455667788991234567352364506 1e-2 -> NaN Invalid_operation -dqqua384 quantize -1122334455667788991234567352364.506 1e-2 -> -1122334455667788991234567352364.51 Inexact Rounded -dqqua385 quantize -11223344556677889912345673523645.06 1e-2 -> -11223344556677889912345673523645.06 -dqqua386 quantize -112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation -dqqua387 quantize -1122334455667788991234567352364506 1e-2 -> NaN Invalid_operation - -rounding: down -dqqua389 quantize 112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation -rounding: half_up - --- and a few more from e-mail discussions -dqqua391 quantize 11223344556677889912345678912.34567 1e-3 -> 11223344556677889912345678912.346 Inexact Rounded -dqqua392 quantize 112233445566778899123456789123.4567 1e-3 -> 112233445566778899123456789123.457 Inexact Rounded -dqqua393 quantize 1122334455667788991234567891234567. 1e-3 -> NaN Invalid_operation - --- some 9999 round-up cases -dqqua400 quantize 9.999 1e-5 -> 9.99900 -dqqua401 quantize 9.999 1e-4 -> 9.9990 -dqqua402 quantize 9.999 1e-3 -> 9.999 -dqqua403 quantize 9.999 1e-2 -> 10.00 Inexact Rounded -dqqua404 quantize 9.999 1e-1 -> 10.0 Inexact Rounded -dqqua405 quantize 9.999 1e0 -> 10 Inexact Rounded -dqqua406 quantize 9.999 1e1 -> 1E+1 Inexact Rounded -dqqua407 quantize 9.999 1e2 -> 0E+2 Inexact Rounded - -dqqua410 quantize 0.999 1e-5 -> 0.99900 -dqqua411 quantize 0.999 1e-4 -> 0.9990 -dqqua412 quantize 0.999 1e-3 -> 0.999 -dqqua413 quantize 0.999 1e-2 -> 1.00 Inexact Rounded -dqqua414 quantize 0.999 1e-1 -> 1.0 Inexact Rounded -dqqua415 quantize 0.999 1e0 -> 1 Inexact Rounded -dqqua416 quantize 0.999 1e1 -> 0E+1 Inexact Rounded - -dqqua420 quantize 0.0999 1e-5 -> 0.09990 -dqqua421 quantize 0.0999 1e-4 -> 0.0999 -dqqua422 quantize 0.0999 1e-3 -> 0.100 Inexact Rounded -dqqua423 quantize 0.0999 1e-2 -> 0.10 Inexact Rounded -dqqua424 quantize 0.0999 1e-1 -> 0.1 Inexact Rounded -dqqua425 quantize 0.0999 1e0 -> 0 Inexact Rounded -dqqua426 quantize 0.0999 1e1 -> 0E+1 Inexact Rounded - -dqqua430 quantize 0.00999 1e-5 -> 0.00999 -dqqua431 quantize 0.00999 1e-4 -> 0.0100 Inexact Rounded -dqqua432 quantize 0.00999 1e-3 -> 0.010 Inexact Rounded -dqqua433 quantize 0.00999 1e-2 -> 0.01 Inexact Rounded -dqqua434 quantize 0.00999 1e-1 -> 0.0 Inexact Rounded -dqqua435 quantize 0.00999 1e0 -> 0 Inexact Rounded -dqqua436 quantize 0.00999 1e1 -> 0E+1 Inexact Rounded - -dqqua440 quantize 0.000999 1e-5 -> 0.00100 Inexact Rounded -dqqua441 quantize 0.000999 1e-4 -> 0.0010 Inexact Rounded -dqqua442 quantize 0.000999 1e-3 -> 0.001 Inexact Rounded -dqqua443 quantize 0.000999 1e-2 -> 0.00 Inexact Rounded -dqqua444 quantize 0.000999 1e-1 -> 0.0 Inexact Rounded -dqqua445 quantize 0.000999 1e0 -> 0 Inexact Rounded -dqqua446 quantize 0.000999 1e1 -> 0E+1 Inexact Rounded - -dqqua1001 quantize 0.000 0.001 -> 0.000 -dqqua1002 quantize 0.001 0.001 -> 0.001 -dqqua1003 quantize 0.0012 0.001 -> 0.001 Inexact Rounded -dqqua1004 quantize 0.0018 0.001 -> 0.002 Inexact Rounded -dqqua1005 quantize 0.501 0.001 -> 0.501 -dqqua1006 quantize 0.5012 0.001 -> 0.501 Inexact Rounded -dqqua1007 quantize 0.5018 0.001 -> 0.502 Inexact Rounded -dqqua1008 quantize 0.999 0.001 -> 0.999 - -dqqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded -dqqua482 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded -dqqua483 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded -dqqua484 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded -dqqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded -dqqua486 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded --- a potential double-round -dqqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded -dqqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded - -dqqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded -dqqua492 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded -dqqua493 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded -dqqua494 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded -dqqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded -dqqua496 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded -dqqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded -dqqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded - --- Zeros -dqqua500 quantize 0 1e1 -> 0E+1 -dqqua501 quantize 0 1e0 -> 0 -dqqua502 quantize 0 1e-1 -> 0.0 -dqqua503 quantize 0.0 1e-1 -> 0.0 -dqqua504 quantize 0.0 1e0 -> 0 -dqqua505 quantize 0.0 1e+1 -> 0E+1 -dqqua506 quantize 0E+1 1e-1 -> 0.0 -dqqua507 quantize 0E+1 1e0 -> 0 -dqqua508 quantize 0E+1 1e+1 -> 0E+1 -dqqua509 quantize -0 1e1 -> -0E+1 -dqqua510 quantize -0 1e0 -> -0 -dqqua511 quantize -0 1e-1 -> -0.0 -dqqua512 quantize -0.0 1e-1 -> -0.0 -dqqua513 quantize -0.0 1e0 -> -0 -dqqua514 quantize -0.0 1e+1 -> -0E+1 -dqqua515 quantize -0E+1 1e-1 -> -0.0 -dqqua516 quantize -0E+1 1e0 -> -0 -dqqua517 quantize -0E+1 1e+1 -> -0E+1 --- #519 here once a problem -dqqua518 quantize 0 0E-3 -> 0.000 -dqqua519 quantize 0 0E-33 -> 0E-33 -dqqua520 quantize 0.00000000000000000000000000000000 0E-33 -> 0E-33 -dqqua521 quantize 0.000000000000000000000000000000000 0E-33 -> 0E-33 - --- Some non-zeros with lots of padding on the right -dqqua523 quantize 1 0E-33 -> 1.000000000000000000000000000000000 -dqqua524 quantize 12 0E-32 -> 12.00000000000000000000000000000000 -dqqua525 quantize 123 0E-31 -> 123.0000000000000000000000000000000 -dqqua526 quantize 123 0E-32 -> NaN Invalid_operation -dqqua527 quantize 123.4 0E-31 -> 123.4000000000000000000000000000000 -dqqua528 quantize 123.4 0E-32 -> NaN Invalid_operation - --- Suspicious RHS values -dqqua530 quantize 1.234 1e359 -> 0E+359 Inexact Rounded -dqqua531 quantize 123.456 1e359 -> 0E+359 Inexact Rounded -dqqua532 quantize 1.234 1e359 -> 0E+359 Inexact Rounded -dqqua533 quantize 123.456 1e359 -> 0E+359 Inexact Rounded --- next four are "won't fit" overflows -dqqua536 quantize 1.234 1e-299 -> NaN Invalid_operation -dqqua537 quantize 123.456 1e-299 -> NaN Invalid_operation -dqqua538 quantize 1.234 1e-299 -> NaN Invalid_operation -dqqua539 quantize 123.456 1e-299 -> NaN Invalid_operation - -dqqua542 quantize 1.234E+299 1e299 -> 1E+299 Inexact Rounded -dqqua543 quantize 1.234E+298 1e299 -> 0E+299 Inexact Rounded -dqqua544 quantize 1.234 1e299 -> 0E+299 Inexact Rounded -dqqua547 quantize 0 1e-299 -> 0E-299 --- next two are "won't fit" overflows -dqqua548 quantize 1.234 1e-299 -> NaN Invalid_operation -dqqua549 quantize 1.234 1e-300 -> NaN Invalid_operation --- [more below] - --- Specials -dqqua580 quantize Inf -Inf -> Infinity -dqqua581 quantize Inf 1e-299 -> NaN Invalid_operation -dqqua582 quantize Inf 1e-1 -> NaN Invalid_operation -dqqua583 quantize Inf 1e0 -> NaN Invalid_operation -dqqua584 quantize Inf 1e1 -> NaN Invalid_operation -dqqua585 quantize Inf 1e299 -> NaN Invalid_operation -dqqua586 quantize Inf Inf -> Infinity -dqqua587 quantize -1000 Inf -> NaN Invalid_operation -dqqua588 quantize -Inf Inf -> -Infinity -dqqua589 quantize -1 Inf -> NaN Invalid_operation -dqqua590 quantize 0 Inf -> NaN Invalid_operation -dqqua591 quantize 1 Inf -> NaN Invalid_operation -dqqua592 quantize 1000 Inf -> NaN Invalid_operation -dqqua593 quantize Inf Inf -> Infinity -dqqua594 quantize Inf 1e-0 -> NaN Invalid_operation -dqqua595 quantize -0 Inf -> NaN Invalid_operation - -dqqua600 quantize -Inf -Inf -> -Infinity -dqqua601 quantize -Inf 1e-299 -> NaN Invalid_operation -dqqua602 quantize -Inf 1e-1 -> NaN Invalid_operation -dqqua603 quantize -Inf 1e0 -> NaN Invalid_operation -dqqua604 quantize -Inf 1e1 -> NaN Invalid_operation -dqqua605 quantize -Inf 1e299 -> NaN Invalid_operation -dqqua606 quantize -Inf Inf -> -Infinity -dqqua607 quantize -1000 Inf -> NaN Invalid_operation -dqqua608 quantize -Inf -Inf -> -Infinity -dqqua609 quantize -1 -Inf -> NaN Invalid_operation -dqqua610 quantize 0 -Inf -> NaN Invalid_operation -dqqua611 quantize 1 -Inf -> NaN Invalid_operation -dqqua612 quantize 1000 -Inf -> NaN Invalid_operation -dqqua613 quantize Inf -Inf -> Infinity -dqqua614 quantize -Inf 1e-0 -> NaN Invalid_operation -dqqua615 quantize -0 -Inf -> NaN Invalid_operation - -dqqua621 quantize NaN -Inf -> NaN -dqqua622 quantize NaN 1e-299 -> NaN -dqqua623 quantize NaN 1e-1 -> NaN -dqqua624 quantize NaN 1e0 -> NaN -dqqua625 quantize NaN 1e1 -> NaN -dqqua626 quantize NaN 1e299 -> NaN -dqqua627 quantize NaN Inf -> NaN -dqqua628 quantize NaN NaN -> NaN -dqqua629 quantize -Inf NaN -> NaN -dqqua630 quantize -1000 NaN -> NaN -dqqua631 quantize -1 NaN -> NaN -dqqua632 quantize 0 NaN -> NaN -dqqua633 quantize 1 NaN -> NaN -dqqua634 quantize 1000 NaN -> NaN -dqqua635 quantize Inf NaN -> NaN -dqqua636 quantize NaN 1e-0 -> NaN -dqqua637 quantize -0 NaN -> NaN - -dqqua641 quantize sNaN -Inf -> NaN Invalid_operation -dqqua642 quantize sNaN 1e-299 -> NaN Invalid_operation -dqqua643 quantize sNaN 1e-1 -> NaN Invalid_operation -dqqua644 quantize sNaN 1e0 -> NaN Invalid_operation -dqqua645 quantize sNaN 1e1 -> NaN Invalid_operation -dqqua646 quantize sNaN 1e299 -> NaN Invalid_operation -dqqua647 quantize sNaN NaN -> NaN Invalid_operation -dqqua648 quantize sNaN sNaN -> NaN Invalid_operation -dqqua649 quantize NaN sNaN -> NaN Invalid_operation -dqqua650 quantize -Inf sNaN -> NaN Invalid_operation -dqqua651 quantize -1000 sNaN -> NaN Invalid_operation -dqqua652 quantize -1 sNaN -> NaN Invalid_operation -dqqua653 quantize 0 sNaN -> NaN Invalid_operation -dqqua654 quantize 1 sNaN -> NaN Invalid_operation -dqqua655 quantize 1000 sNaN -> NaN Invalid_operation -dqqua656 quantize Inf sNaN -> NaN Invalid_operation -dqqua657 quantize NaN sNaN -> NaN Invalid_operation -dqqua658 quantize sNaN 1e-0 -> NaN Invalid_operation -dqqua659 quantize -0 sNaN -> NaN Invalid_operation - --- propagating NaNs -dqqua661 quantize NaN9 -Inf -> NaN9 -dqqua662 quantize NaN8 919 -> NaN8 -dqqua663 quantize NaN71 Inf -> NaN71 -dqqua664 quantize NaN6 NaN5 -> NaN6 -dqqua665 quantize -Inf NaN4 -> NaN4 -dqqua666 quantize -919 NaN31 -> NaN31 -dqqua667 quantize Inf NaN2 -> NaN2 - -dqqua671 quantize sNaN99 -Inf -> NaN99 Invalid_operation -dqqua672 quantize sNaN98 -11 -> NaN98 Invalid_operation -dqqua673 quantize sNaN97 NaN -> NaN97 Invalid_operation -dqqua674 quantize sNaN16 sNaN94 -> NaN16 Invalid_operation -dqqua675 quantize NaN95 sNaN93 -> NaN93 Invalid_operation -dqqua676 quantize -Inf sNaN92 -> NaN92 Invalid_operation -dqqua677 quantize 088 sNaN91 -> NaN91 Invalid_operation -dqqua678 quantize Inf sNaN90 -> NaN90 Invalid_operation -dqqua679 quantize NaN sNaN88 -> NaN88 Invalid_operation - -dqqua681 quantize -NaN9 -Inf -> -NaN9 -dqqua682 quantize -NaN8 919 -> -NaN8 -dqqua683 quantize -NaN71 Inf -> -NaN71 -dqqua684 quantize -NaN6 -NaN5 -> -NaN6 -dqqua685 quantize -Inf -NaN4 -> -NaN4 -dqqua686 quantize -919 -NaN31 -> -NaN31 -dqqua687 quantize Inf -NaN2 -> -NaN2 - -dqqua691 quantize -sNaN99 -Inf -> -NaN99 Invalid_operation -dqqua692 quantize -sNaN98 -11 -> -NaN98 Invalid_operation -dqqua693 quantize -sNaN97 NaN -> -NaN97 Invalid_operation -dqqua694 quantize -sNaN16 sNaN94 -> -NaN16 Invalid_operation -dqqua695 quantize -NaN95 -sNaN93 -> -NaN93 Invalid_operation -dqqua696 quantize -Inf -sNaN92 -> -NaN92 Invalid_operation -dqqua697 quantize 088 -sNaN91 -> -NaN91 Invalid_operation -dqqua698 quantize Inf -sNaN90 -> -NaN90 Invalid_operation -dqqua699 quantize NaN -sNaN88 -> -NaN88 Invalid_operation - --- subnormals and underflow -dqqua710 quantize 1.00E-6143 1e-6143 -> 1E-6143 Rounded -dqqua711 quantize 0.1E-6143 2e-6144 -> 1E-6144 Subnormal -dqqua712 quantize 0.10E-6143 3e-6144 -> 1E-6144 Subnormal Rounded -dqqua713 quantize 0.100E-6143 4e-6144 -> 1E-6144 Subnormal Rounded -dqqua714 quantize 0.01E-6143 5e-6145 -> 1E-6145 Subnormal --- next is rounded to Emin -dqqua715 quantize 0.999E-6143 1e-6143 -> 1E-6143 Inexact Rounded -dqqua716 quantize 0.099E-6143 10e-6144 -> 1E-6144 Inexact Rounded Subnormal - -dqqua717 quantize 0.009E-6143 1e-6145 -> 1E-6145 Inexact Rounded Subnormal -dqqua718 quantize 0.001E-6143 1e-6145 -> 0E-6145 Inexact Rounded -dqqua719 quantize 0.0009E-6143 1e-6145 -> 0E-6145 Inexact Rounded -dqqua720 quantize 0.0001E-6143 1e-6145 -> 0E-6145 Inexact Rounded - -dqqua730 quantize -1.00E-6143 1e-6143 -> -1E-6143 Rounded -dqqua731 quantize -0.1E-6143 1e-6143 -> -0E-6143 Rounded Inexact -dqqua732 quantize -0.10E-6143 1e-6143 -> -0E-6143 Rounded Inexact -dqqua733 quantize -0.100E-6143 1e-6143 -> -0E-6143 Rounded Inexact -dqqua734 quantize -0.01E-6143 1e-6143 -> -0E-6143 Inexact Rounded --- next is rounded to Emin -dqqua735 quantize -0.999E-6143 90e-6143 -> -1E-6143 Inexact Rounded -dqqua736 quantize -0.099E-6143 -1e-6143 -> -0E-6143 Inexact Rounded -dqqua737 quantize -0.009E-6143 -1e-6143 -> -0E-6143 Inexact Rounded -dqqua738 quantize -0.001E-6143 -0e-6143 -> -0E-6143 Inexact Rounded -dqqua739 quantize -0.0001E-6143 0e-6143 -> -0E-6143 Inexact Rounded - -dqqua740 quantize -1.00E-6143 1e-6144 -> -1.0E-6143 Rounded -dqqua741 quantize -0.1E-6143 1e-6144 -> -1E-6144 Subnormal -dqqua742 quantize -0.10E-6143 1e-6144 -> -1E-6144 Subnormal Rounded -dqqua743 quantize -0.100E-6143 1e-6144 -> -1E-6144 Subnormal Rounded -dqqua744 quantize -0.01E-6143 1e-6144 -> -0E-6144 Inexact Rounded --- next is rounded to Emin -dqqua745 quantize -0.999E-6143 1e-6144 -> -1.0E-6143 Inexact Rounded -dqqua746 quantize -0.099E-6143 1e-6144 -> -1E-6144 Inexact Rounded Subnormal -dqqua747 quantize -0.009E-6143 1e-6144 -> -0E-6144 Inexact Rounded -dqqua748 quantize -0.001E-6143 1e-6144 -> -0E-6144 Inexact Rounded -dqqua749 quantize -0.0001E-6143 1e-6144 -> -0E-6144 Inexact Rounded - -dqqua750 quantize -1.00E-6143 1e-6145 -> -1.00E-6143 -dqqua751 quantize -0.1E-6143 1e-6145 -> -1.0E-6144 Subnormal -dqqua752 quantize -0.10E-6143 1e-6145 -> -1.0E-6144 Subnormal -dqqua753 quantize -0.100E-6143 1e-6145 -> -1.0E-6144 Subnormal Rounded -dqqua754 quantize -0.01E-6143 1e-6145 -> -1E-6145 Subnormal --- next is rounded to Emin -dqqua755 quantize -0.999E-6143 1e-6145 -> -1.00E-6143 Inexact Rounded -dqqua756 quantize -0.099E-6143 1e-6145 -> -1.0E-6144 Inexact Rounded Subnormal -dqqua757 quantize -0.009E-6143 1e-6145 -> -1E-6145 Inexact Rounded Subnormal -dqqua758 quantize -0.001E-6143 1e-6145 -> -0E-6145 Inexact Rounded -dqqua759 quantize -0.0001E-6143 1e-6145 -> -0E-6145 Inexact Rounded - -dqqua760 quantize -1.00E-6143 1e-6146 -> -1.000E-6143 -dqqua761 quantize -0.1E-6143 1e-6146 -> -1.00E-6144 Subnormal -dqqua762 quantize -0.10E-6143 1e-6146 -> -1.00E-6144 Subnormal -dqqua763 quantize -0.100E-6143 1e-6146 -> -1.00E-6144 Subnormal -dqqua764 quantize -0.01E-6143 1e-6146 -> -1.0E-6145 Subnormal -dqqua765 quantize -0.999E-6143 1e-6146 -> -9.99E-6144 Subnormal -dqqua766 quantize -0.099E-6143 1e-6146 -> -9.9E-6145 Subnormal -dqqua767 quantize -0.009E-6143 1e-6146 -> -9E-6146 Subnormal -dqqua768 quantize -0.001E-6143 1e-6146 -> -1E-6146 Subnormal -dqqua769 quantize -0.0001E-6143 1e-6146 -> -0E-6146 Inexact Rounded - --- More from Fung Lee --- the next four would appear to be in error, but they are misleading (the --- operands will be clamped to a lower exponent) and so are omitted --- dqqua1021 quantize 8.666666666666000E+6144 1.000000000000000E+6144 -> 8.666666666666000000000000000000000E+6144 Clamped --- dqqua1022 quantize -8.666666666666000E+6144 1.000000000000000E+6144 -> -8.666666666666000000000000000000000E+6144 Clamped --- dqqua1027 quantize 8.666666666666000E+323 1E+31 -> NaN Invalid_operation --- dqqua1030 quantize 8.66666666E+3 1E+3 -> 9E+3 Inexact Rounded - --- Int and uInt32 edge values for testing conversions -dqqua1040 quantize -2147483646 0 -> -2147483646 -dqqua1041 quantize -2147483647 0 -> -2147483647 -dqqua1042 quantize -2147483648 0 -> -2147483648 -dqqua1043 quantize -2147483649 0 -> -2147483649 -dqqua1044 quantize 2147483646 0 -> 2147483646 -dqqua1045 quantize 2147483647 0 -> 2147483647 -dqqua1046 quantize 2147483648 0 -> 2147483648 -dqqua1047 quantize 2147483649 0 -> 2147483649 -dqqua1048 quantize 4294967294 0 -> 4294967294 -dqqua1049 quantize 4294967295 0 -> 4294967295 -dqqua1050 quantize 4294967296 0 -> 4294967296 -dqqua1051 quantize 4294967297 0 -> 4294967297 - --- Rounding swathe -rounding: half_even -dqqua1100 quantize 1.2300 1.00 -> 1.23 Rounded -dqqua1101 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -dqqua1102 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -dqqua1103 quantize 1.2350 1.00 -> 1.24 Inexact Rounded -dqqua1104 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -dqqua1105 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -dqqua1106 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -dqqua1107 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -dqqua1108 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -dqqua1109 quantize 1.2399 1.00 -> 1.24 Inexact Rounded - -rounding: half_up -dqqua1200 quantize 1.2300 1.00 -> 1.23 Rounded -dqqua1201 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -dqqua1202 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -dqqua1203 quantize 1.2350 1.00 -> 1.24 Inexact Rounded -dqqua1204 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -dqqua1205 quantize 1.2450 1.00 -> 1.25 Inexact Rounded -dqqua1206 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -dqqua1207 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -dqqua1208 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -dqqua1209 quantize 1.2399 1.00 -> 1.24 Inexact Rounded - -rounding: half_down -dqqua1300 quantize 1.2300 1.00 -> 1.23 Rounded -dqqua1301 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -dqqua1302 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -dqqua1303 quantize 1.2350 1.00 -> 1.23 Inexact Rounded -dqqua1304 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -dqqua1305 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -dqqua1306 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -dqqua1307 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -dqqua1308 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -dqqua1309 quantize 1.2399 1.00 -> 1.24 Inexact Rounded - -rounding: up -dqqua1400 quantize 1.2300 1.00 -> 1.23 Rounded -dqqua1401 quantize 1.2301 1.00 -> 1.24 Inexact Rounded -dqqua1402 quantize 1.2310 1.00 -> 1.24 Inexact Rounded -dqqua1403 quantize 1.2350 1.00 -> 1.24 Inexact Rounded -dqqua1404 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -dqqua1405 quantize 1.2450 1.00 -> 1.25 Inexact Rounded -dqqua1406 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -dqqua1407 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -dqqua1408 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -dqqua1409 quantize 1.2399 1.00 -> 1.24 Inexact Rounded -dqqua1411 quantize -1.2399 1.00 -> -1.24 Inexact Rounded - -rounding: down -dqqua1500 quantize 1.2300 1.00 -> 1.23 Rounded -dqqua1501 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -dqqua1502 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -dqqua1503 quantize 1.2350 1.00 -> 1.23 Inexact Rounded -dqqua1504 quantize 1.2351 1.00 -> 1.23 Inexact Rounded -dqqua1505 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -dqqua1506 quantize 1.2451 1.00 -> 1.24 Inexact Rounded -dqqua1507 quantize 1.2360 1.00 -> 1.23 Inexact Rounded -dqqua1508 quantize 1.2370 1.00 -> 1.23 Inexact Rounded -dqqua1509 quantize 1.2399 1.00 -> 1.23 Inexact Rounded -dqqua1511 quantize -1.2399 1.00 -> -1.23 Inexact Rounded - -rounding: ceiling -dqqua1600 quantize 1.2300 1.00 -> 1.23 Rounded -dqqua1601 quantize 1.2301 1.00 -> 1.24 Inexact Rounded -dqqua1602 quantize 1.2310 1.00 -> 1.24 Inexact Rounded -dqqua1603 quantize 1.2350 1.00 -> 1.24 Inexact Rounded -dqqua1604 quantize 1.2351 1.00 -> 1.24 Inexact Rounded -dqqua1605 quantize 1.2450 1.00 -> 1.25 Inexact Rounded -dqqua1606 quantize 1.2451 1.00 -> 1.25 Inexact Rounded -dqqua1607 quantize 1.2360 1.00 -> 1.24 Inexact Rounded -dqqua1608 quantize 1.2370 1.00 -> 1.24 Inexact Rounded -dqqua1609 quantize 1.2399 1.00 -> 1.24 Inexact Rounded -dqqua1611 quantize -1.2399 1.00 -> -1.23 Inexact Rounded - -rounding: floor -dqqua1700 quantize 1.2300 1.00 -> 1.23 Rounded -dqqua1701 quantize 1.2301 1.00 -> 1.23 Inexact Rounded -dqqua1702 quantize 1.2310 1.00 -> 1.23 Inexact Rounded -dqqua1703 quantize 1.2350 1.00 -> 1.23 Inexact Rounded -dqqua1704 quantize 1.2351 1.00 -> 1.23 Inexact Rounded -dqqua1705 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -dqqua1706 quantize 1.2451 1.00 -> 1.24 Inexact Rounded -dqqua1707 quantize 1.2360 1.00 -> 1.23 Inexact Rounded -dqqua1708 quantize 1.2370 1.00 -> 1.23 Inexact Rounded -dqqua1709 quantize 1.2399 1.00 -> 1.23 Inexact Rounded -dqqua1711 quantize -1.2399 1.00 -> -1.24 Inexact Rounded - -rounding: 05up -dqqua1800 quantize 1.2000 1.00 -> 1.20 Rounded -dqqua1801 quantize 1.2001 1.00 -> 1.21 Inexact Rounded -dqqua1802 quantize 1.2010 1.00 -> 1.21 Inexact Rounded -dqqua1803 quantize 1.2050 1.00 -> 1.21 Inexact Rounded -dqqua1804 quantize 1.2051 1.00 -> 1.21 Inexact Rounded -dqqua1807 quantize 1.2060 1.00 -> 1.21 Inexact Rounded -dqqua1808 quantize 1.2070 1.00 -> 1.21 Inexact Rounded -dqqua1809 quantize 1.2099 1.00 -> 1.21 Inexact Rounded -dqqua1811 quantize -1.2099 1.00 -> -1.21 Inexact Rounded - -dqqua1900 quantize 1.2100 1.00 -> 1.21 Rounded -dqqua1901 quantize 1.2101 1.00 -> 1.21 Inexact Rounded -dqqua1902 quantize 1.2110 1.00 -> 1.21 Inexact Rounded -dqqua1903 quantize 1.2150 1.00 -> 1.21 Inexact Rounded -dqqua1904 quantize 1.2151 1.00 -> 1.21 Inexact Rounded -dqqua1907 quantize 1.2160 1.00 -> 1.21 Inexact Rounded -dqqua1908 quantize 1.2170 1.00 -> 1.21 Inexact Rounded -dqqua1909 quantize 1.2199 1.00 -> 1.21 Inexact Rounded -dqqua1911 quantize -1.2199 1.00 -> -1.21 Inexact Rounded - -dqqua2000 quantize 1.2400 1.00 -> 1.24 Rounded -dqqua2001 quantize 1.2401 1.00 -> 1.24 Inexact Rounded -dqqua2002 quantize 1.2410 1.00 -> 1.24 Inexact Rounded -dqqua2003 quantize 1.2450 1.00 -> 1.24 Inexact Rounded -dqqua2004 quantize 1.2451 1.00 -> 1.24 Inexact Rounded -dqqua2007 quantize 1.2460 1.00 -> 1.24 Inexact Rounded -dqqua2008 quantize 1.2470 1.00 -> 1.24 Inexact Rounded -dqqua2009 quantize 1.2499 1.00 -> 1.24 Inexact Rounded -dqqua2011 quantize -1.2499 1.00 -> -1.24 Inexact Rounded - -dqqua2100 quantize 1.2500 1.00 -> 1.25 Rounded -dqqua2101 quantize 1.2501 1.00 -> 1.26 Inexact Rounded -dqqua2102 quantize 1.2510 1.00 -> 1.26 Inexact Rounded -dqqua2103 quantize 1.2550 1.00 -> 1.26 Inexact Rounded -dqqua2104 quantize 1.2551 1.00 -> 1.26 Inexact Rounded -dqqua2107 quantize 1.2560 1.00 -> 1.26 Inexact Rounded -dqqua2108 quantize 1.2570 1.00 -> 1.26 Inexact Rounded -dqqua2109 quantize 1.2599 1.00 -> 1.26 Inexact Rounded -dqqua2111 quantize -1.2599 1.00 -> -1.26 Inexact Rounded - -dqqua2200 quantize 1.2600 1.00 -> 1.26 Rounded -dqqua2201 quantize 1.2601 1.00 -> 1.26 Inexact Rounded -dqqua2202 quantize 1.2610 1.00 -> 1.26 Inexact Rounded -dqqua2203 quantize 1.2650 1.00 -> 1.26 Inexact Rounded -dqqua2204 quantize 1.2651 1.00 -> 1.26 Inexact Rounded -dqqua2207 quantize 1.2660 1.00 -> 1.26 Inexact Rounded -dqqua2208 quantize 1.2670 1.00 -> 1.26 Inexact Rounded -dqqua2209 quantize 1.2699 1.00 -> 1.26 Inexact Rounded -dqqua2211 quantize -1.2699 1.00 -> -1.26 Inexact Rounded - -dqqua2300 quantize 1.2900 1.00 -> 1.29 Rounded -dqqua2301 quantize 1.2901 1.00 -> 1.29 Inexact Rounded -dqqua2302 quantize 1.2910 1.00 -> 1.29 Inexact Rounded -dqqua2303 quantize 1.2950 1.00 -> 1.29 Inexact Rounded -dqqua2304 quantize 1.2951 1.00 -> 1.29 Inexact Rounded -dqqua2307 quantize 1.2960 1.00 -> 1.29 Inexact Rounded -dqqua2308 quantize 1.2970 1.00 -> 1.29 Inexact Rounded -dqqua2309 quantize 1.2999 1.00 -> 1.29 Inexact Rounded -dqqua2311 quantize -1.2999 1.00 -> -1.29 Inexact Rounded - --- Null tests -dqqua998 quantize 10 # -> NaN Invalid_operation -dqqua999 quantize # 1e10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqQuantize.decTest -- decQuad quantize operation -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Most of the tests here assume a "regular pattern", where the +-- sign and coefficient are +1. +-- 2004.03.15 Underflow for quantize is suppressed +-- 2005.06.08 More extensive tests for 'does not fit' +-- [Forked from quantize.decTest 2006.11.25] + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks +dqqua001 quantize 0 1e0 -> 0 +dqqua002 quantize 1 1e0 -> 1 +dqqua003 quantize 0.1 1e+2 -> 0E+2 Inexact Rounded +dqqua005 quantize 0.1 1e+1 -> 0E+1 Inexact Rounded +dqqua006 quantize 0.1 1e0 -> 0 Inexact Rounded +dqqua007 quantize 0.1 1e-1 -> 0.1 +dqqua008 quantize 0.1 1e-2 -> 0.10 +dqqua009 quantize 0.1 1e-3 -> 0.100 +dqqua010 quantize 0.9 1e+2 -> 0E+2 Inexact Rounded +dqqua011 quantize 0.9 1e+1 -> 0E+1 Inexact Rounded +dqqua012 quantize 0.9 1e+0 -> 1 Inexact Rounded +dqqua013 quantize 0.9 1e-1 -> 0.9 +dqqua014 quantize 0.9 1e-2 -> 0.90 +dqqua015 quantize 0.9 1e-3 -> 0.900 +-- negatives +dqqua021 quantize -0 1e0 -> -0 +dqqua022 quantize -1 1e0 -> -1 +dqqua023 quantize -0.1 1e+2 -> -0E+2 Inexact Rounded +dqqua025 quantize -0.1 1e+1 -> -0E+1 Inexact Rounded +dqqua026 quantize -0.1 1e0 -> -0 Inexact Rounded +dqqua027 quantize -0.1 1e-1 -> -0.1 +dqqua028 quantize -0.1 1e-2 -> -0.10 +dqqua029 quantize -0.1 1e-3 -> -0.100 +dqqua030 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded +dqqua031 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded +dqqua032 quantize -0.9 1e+0 -> -1 Inexact Rounded +dqqua033 quantize -0.9 1e-1 -> -0.9 +dqqua034 quantize -0.9 1e-2 -> -0.90 +dqqua035 quantize -0.9 1e-3 -> -0.900 +dqqua036 quantize -0.5 1e+2 -> -0E+2 Inexact Rounded +dqqua037 quantize -0.5 1e+1 -> -0E+1 Inexact Rounded +dqqua038 quantize -0.5 1e+0 -> -0 Inexact Rounded +dqqua039 quantize -0.5 1e-1 -> -0.5 +dqqua040 quantize -0.5 1e-2 -> -0.50 +dqqua041 quantize -0.5 1e-3 -> -0.500 +dqqua042 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded +dqqua043 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded +dqqua044 quantize -0.9 1e+0 -> -1 Inexact Rounded +dqqua045 quantize -0.9 1e-1 -> -0.9 +dqqua046 quantize -0.9 1e-2 -> -0.90 +dqqua047 quantize -0.9 1e-3 -> -0.900 + +-- examples from Specification +dqqua060 quantize 2.17 0.001 -> 2.170 +dqqua061 quantize 2.17 0.01 -> 2.17 +dqqua062 quantize 2.17 0.1 -> 2.2 Inexact Rounded +dqqua063 quantize 2.17 1e+0 -> 2 Inexact Rounded +dqqua064 quantize 2.17 1e+1 -> 0E+1 Inexact Rounded +dqqua065 quantize -Inf Inf -> -Infinity +dqqua066 quantize 2 Inf -> NaN Invalid_operation +dqqua067 quantize -0.1 1 -> -0 Inexact Rounded +dqqua068 quantize -0 1e+5 -> -0E+5 +dqqua069 quantize +123451234567899876543216789012345.6 1e-2 -> NaN Invalid_operation +dqqua070 quantize -987651234567899876543214335236450.6 1e-2 -> NaN Invalid_operation +dqqua071 quantize 217 1e-1 -> 217.0 +dqqua072 quantize 217 1e+0 -> 217 +dqqua073 quantize 217 1e+1 -> 2.2E+2 Inexact Rounded +dqqua074 quantize 217 1e+2 -> 2E+2 Inexact Rounded + +-- general tests .. +dqqua089 quantize 12 1e+4 -> 0E+4 Inexact Rounded +dqqua090 quantize 12 1e+3 -> 0E+3 Inexact Rounded +dqqua091 quantize 12 1e+2 -> 0E+2 Inexact Rounded +dqqua092 quantize 12 1e+1 -> 1E+1 Inexact Rounded +dqqua093 quantize 1.2345 1e-2 -> 1.23 Inexact Rounded +dqqua094 quantize 1.2355 1e-2 -> 1.24 Inexact Rounded +dqqua095 quantize 1.2345 1e-6 -> 1.234500 +dqqua096 quantize 9.9999 1e-2 -> 10.00 Inexact Rounded +dqqua097 quantize 0.0001 1e-2 -> 0.00 Inexact Rounded +dqqua098 quantize 0.001 1e-2 -> 0.00 Inexact Rounded +dqqua099 quantize 0.009 1e-2 -> 0.01 Inexact Rounded +dqqua100 quantize 92 1e+2 -> 1E+2 Inexact Rounded + +dqqua101 quantize -1 1e0 -> -1 +dqqua102 quantize -1 1e-1 -> -1.0 +dqqua103 quantize -1 1e-2 -> -1.00 +dqqua104 quantize 0 1e0 -> 0 +dqqua105 quantize 0 1e-1 -> 0.0 +dqqua106 quantize 0 1e-2 -> 0.00 +dqqua107 quantize 0.00 1e0 -> 0 +dqqua108 quantize 0 1e+1 -> 0E+1 +dqqua109 quantize 0 1e+2 -> 0E+2 +dqqua110 quantize +1 1e0 -> 1 +dqqua111 quantize +1 1e-1 -> 1.0 +dqqua112 quantize +1 1e-2 -> 1.00 + +dqqua120 quantize 1.04 1e-3 -> 1.040 +dqqua121 quantize 1.04 1e-2 -> 1.04 +dqqua122 quantize 1.04 1e-1 -> 1.0 Inexact Rounded +dqqua123 quantize 1.04 1e0 -> 1 Inexact Rounded +dqqua124 quantize 1.05 1e-3 -> 1.050 +dqqua125 quantize 1.05 1e-2 -> 1.05 +dqqua126 quantize 1.05 1e-1 -> 1.0 Inexact Rounded +dqqua131 quantize 1.05 1e0 -> 1 Inexact Rounded +dqqua132 quantize 1.06 1e-3 -> 1.060 +dqqua133 quantize 1.06 1e-2 -> 1.06 +dqqua134 quantize 1.06 1e-1 -> 1.1 Inexact Rounded +dqqua135 quantize 1.06 1e0 -> 1 Inexact Rounded + +dqqua140 quantize -10 1e-2 -> -10.00 +dqqua141 quantize +1 1e-2 -> 1.00 +dqqua142 quantize +10 1e-2 -> 10.00 +dqqua143 quantize 1E+37 1e-2 -> NaN Invalid_operation +dqqua144 quantize 1E-37 1e-2 -> 0.00 Inexact Rounded +dqqua145 quantize 1E-3 1e-2 -> 0.00 Inexact Rounded +dqqua146 quantize 1E-2 1e-2 -> 0.01 +dqqua147 quantize 1E-1 1e-2 -> 0.10 +dqqua148 quantize 0E-37 1e-2 -> 0.00 + +dqqua150 quantize 1.0600 1e-5 -> 1.06000 +dqqua151 quantize 1.0600 1e-4 -> 1.0600 +dqqua152 quantize 1.0600 1e-3 -> 1.060 Rounded +dqqua153 quantize 1.0600 1e-2 -> 1.06 Rounded +dqqua154 quantize 1.0600 1e-1 -> 1.1 Inexact Rounded +dqqua155 quantize 1.0600 1e0 -> 1 Inexact Rounded + +-- a couple where rounding was different in base tests +rounding: half_up +dqqua157 quantize -0.5 1e+0 -> -1 Inexact Rounded +dqqua158 quantize 1.05 1e-1 -> 1.1 Inexact Rounded +dqqua159 quantize 1.06 1e0 -> 1 Inexact Rounded +rounding: half_even + +-- base tests with non-1 coefficients +dqqua161 quantize 0 -9e0 -> 0 +dqqua162 quantize 1 -7e0 -> 1 +dqqua163 quantize 0.1 -1e+2 -> 0E+2 Inexact Rounded +dqqua165 quantize 0.1 0e+1 -> 0E+1 Inexact Rounded +dqqua166 quantize 0.1 2e0 -> 0 Inexact Rounded +dqqua167 quantize 0.1 3e-1 -> 0.1 +dqqua168 quantize 0.1 44e-2 -> 0.10 +dqqua169 quantize 0.1 555e-3 -> 0.100 +dqqua170 quantize 0.9 6666e+2 -> 0E+2 Inexact Rounded +dqqua171 quantize 0.9 -777e+1 -> 0E+1 Inexact Rounded +dqqua172 quantize 0.9 -88e+0 -> 1 Inexact Rounded +dqqua173 quantize 0.9 -9e-1 -> 0.9 +dqqua174 quantize 0.9 0e-2 -> 0.90 +dqqua175 quantize 0.9 1.1e-3 -> 0.9000 +-- negatives +dqqua181 quantize -0 1.1e0 -> -0.0 +dqqua182 quantize -1 -1e0 -> -1 +dqqua183 quantize -0.1 11e+2 -> -0E+2 Inexact Rounded +dqqua185 quantize -0.1 111e+1 -> -0E+1 Inexact Rounded +dqqua186 quantize -0.1 71e0 -> -0 Inexact Rounded +dqqua187 quantize -0.1 -91e-1 -> -0.1 +dqqua188 quantize -0.1 -.1e-2 -> -0.100 +dqqua189 quantize -0.1 -1e-3 -> -0.100 +dqqua190 quantize -0.9 0e+2 -> -0E+2 Inexact Rounded +dqqua191 quantize -0.9 -0e+1 -> -0E+1 Inexact Rounded +dqqua192 quantize -0.9 -10e+0 -> -1 Inexact Rounded +dqqua193 quantize -0.9 100e-1 -> -0.9 +dqqua194 quantize -0.9 999e-2 -> -0.90 + +-- +ve exponents .. +dqqua201 quantize -1 1e+0 -> -1 +dqqua202 quantize -1 1e+1 -> -0E+1 Inexact Rounded +dqqua203 quantize -1 1e+2 -> -0E+2 Inexact Rounded +dqqua204 quantize 0 1e+0 -> 0 +dqqua205 quantize 0 1e+1 -> 0E+1 +dqqua206 quantize 0 1e+2 -> 0E+2 +dqqua207 quantize +1 1e+0 -> 1 +dqqua208 quantize +1 1e+1 -> 0E+1 Inexact Rounded +dqqua209 quantize +1 1e+2 -> 0E+2 Inexact Rounded + +dqqua220 quantize 1.04 1e+3 -> 0E+3 Inexact Rounded +dqqua221 quantize 1.04 1e+2 -> 0E+2 Inexact Rounded +dqqua222 quantize 1.04 1e+1 -> 0E+1 Inexact Rounded +dqqua223 quantize 1.04 1e+0 -> 1 Inexact Rounded +dqqua224 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded +dqqua225 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded +dqqua226 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded +dqqua227 quantize 1.05 1e+0 -> 1 Inexact Rounded +dqqua228 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded +dqqua229 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded +dqqua230 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded +dqqua231 quantize 1.05 1e+0 -> 1 Inexact Rounded +dqqua232 quantize 1.06 1e+3 -> 0E+3 Inexact Rounded +dqqua233 quantize 1.06 1e+2 -> 0E+2 Inexact Rounded +dqqua234 quantize 1.06 1e+1 -> 0E+1 Inexact Rounded +dqqua235 quantize 1.06 1e+0 -> 1 Inexact Rounded + +dqqua240 quantize -10 1e+1 -> -1E+1 Rounded +dqqua241 quantize +1 1e+1 -> 0E+1 Inexact Rounded +dqqua242 quantize +10 1e+1 -> 1E+1 Rounded +dqqua243 quantize 1E+1 1e+1 -> 1E+1 -- underneath this is E+1 +dqqua244 quantize 1E+2 1e+1 -> 1.0E+2 -- underneath this is E+1 +dqqua245 quantize 1E+3 1e+1 -> 1.00E+3 -- underneath this is E+1 +dqqua246 quantize 1E+4 1e+1 -> 1.000E+4 -- underneath this is E+1 +dqqua247 quantize 1E+5 1e+1 -> 1.0000E+5 -- underneath this is E+1 +dqqua248 quantize 1E+6 1e+1 -> 1.00000E+6 -- underneath this is E+1 +dqqua249 quantize 1E+7 1e+1 -> 1.000000E+7 -- underneath this is E+1 +dqqua250 quantize 1E+8 1e+1 -> 1.0000000E+8 -- underneath this is E+1 +dqqua251 quantize 1E+9 1e+1 -> 1.00000000E+9 -- underneath this is E+1 +-- next one tries to add 9 zeros +dqqua252 quantize 1E+37 1e+1 -> NaN Invalid_operation +dqqua253 quantize 1E-37 1e+1 -> 0E+1 Inexact Rounded +dqqua254 quantize 1E-2 1e+1 -> 0E+1 Inexact Rounded +dqqua255 quantize 0E-37 1e+1 -> 0E+1 +dqqua256 quantize -0E-37 1e+1 -> -0E+1 +dqqua257 quantize -0E-1 1e+1 -> -0E+1 +dqqua258 quantize -0 1e+1 -> -0E+1 +dqqua259 quantize -0E+1 1e+1 -> -0E+1 + +dqqua260 quantize -10 1e+2 -> -0E+2 Inexact Rounded +dqqua261 quantize +1 1e+2 -> 0E+2 Inexact Rounded +dqqua262 quantize +10 1e+2 -> 0E+2 Inexact Rounded +dqqua263 quantize 1E+1 1e+2 -> 0E+2 Inexact Rounded +dqqua264 quantize 1E+2 1e+2 -> 1E+2 +dqqua265 quantize 1E+3 1e+2 -> 1.0E+3 +dqqua266 quantize 1E+4 1e+2 -> 1.00E+4 +dqqua267 quantize 1E+5 1e+2 -> 1.000E+5 +dqqua268 quantize 1E+6 1e+2 -> 1.0000E+6 +dqqua269 quantize 1E+7 1e+2 -> 1.00000E+7 +dqqua270 quantize 1E+8 1e+2 -> 1.000000E+8 +dqqua271 quantize 1E+9 1e+2 -> 1.0000000E+9 +dqqua272 quantize 1E+10 1e+2 -> 1.00000000E+10 +dqqua273 quantize 1E-10 1e+2 -> 0E+2 Inexact Rounded +dqqua274 quantize 1E-2 1e+2 -> 0E+2 Inexact Rounded +dqqua275 quantize 0E-10 1e+2 -> 0E+2 + +dqqua280 quantize -10 1e+3 -> -0E+3 Inexact Rounded +dqqua281 quantize +1 1e+3 -> 0E+3 Inexact Rounded +dqqua282 quantize +10 1e+3 -> 0E+3 Inexact Rounded +dqqua283 quantize 1E+1 1e+3 -> 0E+3 Inexact Rounded +dqqua284 quantize 1E+2 1e+3 -> 0E+3 Inexact Rounded +dqqua285 quantize 1E+3 1e+3 -> 1E+3 +dqqua286 quantize 1E+4 1e+3 -> 1.0E+4 +dqqua287 quantize 1E+5 1e+3 -> 1.00E+5 +dqqua288 quantize 1E+6 1e+3 -> 1.000E+6 +dqqua289 quantize 1E+7 1e+3 -> 1.0000E+7 +dqqua290 quantize 1E+8 1e+3 -> 1.00000E+8 +dqqua291 quantize 1E+9 1e+3 -> 1.000000E+9 +dqqua292 quantize 1E+10 1e+3 -> 1.0000000E+10 +dqqua293 quantize 1E-10 1e+3 -> 0E+3 Inexact Rounded +dqqua294 quantize 1E-2 1e+3 -> 0E+3 Inexact Rounded +dqqua295 quantize 0E-10 1e+3 -> 0E+3 + +-- round up from below [sign wrong in JIT compiler once] +dqqua300 quantize 0.0078 1e-5 -> 0.00780 +dqqua301 quantize 0.0078 1e-4 -> 0.0078 +dqqua302 quantize 0.0078 1e-3 -> 0.008 Inexact Rounded +dqqua303 quantize 0.0078 1e-2 -> 0.01 Inexact Rounded +dqqua304 quantize 0.0078 1e-1 -> 0.0 Inexact Rounded +dqqua305 quantize 0.0078 1e0 -> 0 Inexact Rounded +dqqua306 quantize 0.0078 1e+1 -> 0E+1 Inexact Rounded +dqqua307 quantize 0.0078 1e+2 -> 0E+2 Inexact Rounded + +dqqua310 quantize -0.0078 1e-5 -> -0.00780 +dqqua311 quantize -0.0078 1e-4 -> -0.0078 +dqqua312 quantize -0.0078 1e-3 -> -0.008 Inexact Rounded +dqqua313 quantize -0.0078 1e-2 -> -0.01 Inexact Rounded +dqqua314 quantize -0.0078 1e-1 -> -0.0 Inexact Rounded +dqqua315 quantize -0.0078 1e0 -> -0 Inexact Rounded +dqqua316 quantize -0.0078 1e+1 -> -0E+1 Inexact Rounded +dqqua317 quantize -0.0078 1e+2 -> -0E+2 Inexact Rounded + +dqqua320 quantize 0.078 1e-5 -> 0.07800 +dqqua321 quantize 0.078 1e-4 -> 0.0780 +dqqua322 quantize 0.078 1e-3 -> 0.078 +dqqua323 quantize 0.078 1e-2 -> 0.08 Inexact Rounded +dqqua324 quantize 0.078 1e-1 -> 0.1 Inexact Rounded +dqqua325 quantize 0.078 1e0 -> 0 Inexact Rounded +dqqua326 quantize 0.078 1e+1 -> 0E+1 Inexact Rounded +dqqua327 quantize 0.078 1e+2 -> 0E+2 Inexact Rounded + +dqqua330 quantize -0.078 1e-5 -> -0.07800 +dqqua331 quantize -0.078 1e-4 -> -0.0780 +dqqua332 quantize -0.078 1e-3 -> -0.078 +dqqua333 quantize -0.078 1e-2 -> -0.08 Inexact Rounded +dqqua334 quantize -0.078 1e-1 -> -0.1 Inexact Rounded +dqqua335 quantize -0.078 1e0 -> -0 Inexact Rounded +dqqua336 quantize -0.078 1e+1 -> -0E+1 Inexact Rounded +dqqua337 quantize -0.078 1e+2 -> -0E+2 Inexact Rounded + +dqqua340 quantize 0.78 1e-5 -> 0.78000 +dqqua341 quantize 0.78 1e-4 -> 0.7800 +dqqua342 quantize 0.78 1e-3 -> 0.780 +dqqua343 quantize 0.78 1e-2 -> 0.78 +dqqua344 quantize 0.78 1e-1 -> 0.8 Inexact Rounded +dqqua345 quantize 0.78 1e0 -> 1 Inexact Rounded +dqqua346 quantize 0.78 1e+1 -> 0E+1 Inexact Rounded +dqqua347 quantize 0.78 1e+2 -> 0E+2 Inexact Rounded + +dqqua350 quantize -0.78 1e-5 -> -0.78000 +dqqua351 quantize -0.78 1e-4 -> -0.7800 +dqqua352 quantize -0.78 1e-3 -> -0.780 +dqqua353 quantize -0.78 1e-2 -> -0.78 +dqqua354 quantize -0.78 1e-1 -> -0.8 Inexact Rounded +dqqua355 quantize -0.78 1e0 -> -1 Inexact Rounded +dqqua356 quantize -0.78 1e+1 -> -0E+1 Inexact Rounded +dqqua357 quantize -0.78 1e+2 -> -0E+2 Inexact Rounded + +dqqua360 quantize 7.8 1e-5 -> 7.80000 +dqqua361 quantize 7.8 1e-4 -> 7.8000 +dqqua362 quantize 7.8 1e-3 -> 7.800 +dqqua363 quantize 7.8 1e-2 -> 7.80 +dqqua364 quantize 7.8 1e-1 -> 7.8 +dqqua365 quantize 7.8 1e0 -> 8 Inexact Rounded +dqqua366 quantize 7.8 1e+1 -> 1E+1 Inexact Rounded +dqqua367 quantize 7.8 1e+2 -> 0E+2 Inexact Rounded +dqqua368 quantize 7.8 1e+3 -> 0E+3 Inexact Rounded + +dqqua370 quantize -7.8 1e-5 -> -7.80000 +dqqua371 quantize -7.8 1e-4 -> -7.8000 +dqqua372 quantize -7.8 1e-3 -> -7.800 +dqqua373 quantize -7.8 1e-2 -> -7.80 +dqqua374 quantize -7.8 1e-1 -> -7.8 +dqqua375 quantize -7.8 1e0 -> -8 Inexact Rounded +dqqua376 quantize -7.8 1e+1 -> -1E+1 Inexact Rounded +dqqua377 quantize -7.8 1e+2 -> -0E+2 Inexact Rounded +dqqua378 quantize -7.8 1e+3 -> -0E+3 Inexact Rounded + +-- some individuals +dqqua380 quantize 1122334455667788991234567352364.506 1e-2 -> 1122334455667788991234567352364.51 Inexact Rounded +dqqua381 quantize 11223344556677889912345673523645.06 1e-2 -> 11223344556677889912345673523645.06 +dqqua382 quantize 112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation +dqqua383 quantize 1122334455667788991234567352364506 1e-2 -> NaN Invalid_operation +dqqua384 quantize -1122334455667788991234567352364.506 1e-2 -> -1122334455667788991234567352364.51 Inexact Rounded +dqqua385 quantize -11223344556677889912345673523645.06 1e-2 -> -11223344556677889912345673523645.06 +dqqua386 quantize -112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation +dqqua387 quantize -1122334455667788991234567352364506 1e-2 -> NaN Invalid_operation + +rounding: down +dqqua389 quantize 112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation +rounding: half_up + +-- and a few more from e-mail discussions +dqqua391 quantize 11223344556677889912345678912.34567 1e-3 -> 11223344556677889912345678912.346 Inexact Rounded +dqqua392 quantize 112233445566778899123456789123.4567 1e-3 -> 112233445566778899123456789123.457 Inexact Rounded +dqqua393 quantize 1122334455667788991234567891234567. 1e-3 -> NaN Invalid_operation + +-- some 9999 round-up cases +dqqua400 quantize 9.999 1e-5 -> 9.99900 +dqqua401 quantize 9.999 1e-4 -> 9.9990 +dqqua402 quantize 9.999 1e-3 -> 9.999 +dqqua403 quantize 9.999 1e-2 -> 10.00 Inexact Rounded +dqqua404 quantize 9.999 1e-1 -> 10.0 Inexact Rounded +dqqua405 quantize 9.999 1e0 -> 10 Inexact Rounded +dqqua406 quantize 9.999 1e1 -> 1E+1 Inexact Rounded +dqqua407 quantize 9.999 1e2 -> 0E+2 Inexact Rounded + +dqqua410 quantize 0.999 1e-5 -> 0.99900 +dqqua411 quantize 0.999 1e-4 -> 0.9990 +dqqua412 quantize 0.999 1e-3 -> 0.999 +dqqua413 quantize 0.999 1e-2 -> 1.00 Inexact Rounded +dqqua414 quantize 0.999 1e-1 -> 1.0 Inexact Rounded +dqqua415 quantize 0.999 1e0 -> 1 Inexact Rounded +dqqua416 quantize 0.999 1e1 -> 0E+1 Inexact Rounded + +dqqua420 quantize 0.0999 1e-5 -> 0.09990 +dqqua421 quantize 0.0999 1e-4 -> 0.0999 +dqqua422 quantize 0.0999 1e-3 -> 0.100 Inexact Rounded +dqqua423 quantize 0.0999 1e-2 -> 0.10 Inexact Rounded +dqqua424 quantize 0.0999 1e-1 -> 0.1 Inexact Rounded +dqqua425 quantize 0.0999 1e0 -> 0 Inexact Rounded +dqqua426 quantize 0.0999 1e1 -> 0E+1 Inexact Rounded + +dqqua430 quantize 0.00999 1e-5 -> 0.00999 +dqqua431 quantize 0.00999 1e-4 -> 0.0100 Inexact Rounded +dqqua432 quantize 0.00999 1e-3 -> 0.010 Inexact Rounded +dqqua433 quantize 0.00999 1e-2 -> 0.01 Inexact Rounded +dqqua434 quantize 0.00999 1e-1 -> 0.0 Inexact Rounded +dqqua435 quantize 0.00999 1e0 -> 0 Inexact Rounded +dqqua436 quantize 0.00999 1e1 -> 0E+1 Inexact Rounded + +dqqua440 quantize 0.000999 1e-5 -> 0.00100 Inexact Rounded +dqqua441 quantize 0.000999 1e-4 -> 0.0010 Inexact Rounded +dqqua442 quantize 0.000999 1e-3 -> 0.001 Inexact Rounded +dqqua443 quantize 0.000999 1e-2 -> 0.00 Inexact Rounded +dqqua444 quantize 0.000999 1e-1 -> 0.0 Inexact Rounded +dqqua445 quantize 0.000999 1e0 -> 0 Inexact Rounded +dqqua446 quantize 0.000999 1e1 -> 0E+1 Inexact Rounded + +dqqua1001 quantize 0.000 0.001 -> 0.000 +dqqua1002 quantize 0.001 0.001 -> 0.001 +dqqua1003 quantize 0.0012 0.001 -> 0.001 Inexact Rounded +dqqua1004 quantize 0.0018 0.001 -> 0.002 Inexact Rounded +dqqua1005 quantize 0.501 0.001 -> 0.501 +dqqua1006 quantize 0.5012 0.001 -> 0.501 Inexact Rounded +dqqua1007 quantize 0.5018 0.001 -> 0.502 Inexact Rounded +dqqua1008 quantize 0.999 0.001 -> 0.999 + +dqqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded +dqqua482 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded +dqqua483 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded +dqqua484 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded +dqqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded +dqqua486 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded +-- a potential double-round +dqqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded +dqqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded + +dqqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded +dqqua492 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded +dqqua493 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded +dqqua494 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded +dqqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded +dqqua496 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded +dqqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded +dqqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded + +-- Zeros +dqqua500 quantize 0 1e1 -> 0E+1 +dqqua501 quantize 0 1e0 -> 0 +dqqua502 quantize 0 1e-1 -> 0.0 +dqqua503 quantize 0.0 1e-1 -> 0.0 +dqqua504 quantize 0.0 1e0 -> 0 +dqqua505 quantize 0.0 1e+1 -> 0E+1 +dqqua506 quantize 0E+1 1e-1 -> 0.0 +dqqua507 quantize 0E+1 1e0 -> 0 +dqqua508 quantize 0E+1 1e+1 -> 0E+1 +dqqua509 quantize -0 1e1 -> -0E+1 +dqqua510 quantize -0 1e0 -> -0 +dqqua511 quantize -0 1e-1 -> -0.0 +dqqua512 quantize -0.0 1e-1 -> -0.0 +dqqua513 quantize -0.0 1e0 -> -0 +dqqua514 quantize -0.0 1e+1 -> -0E+1 +dqqua515 quantize -0E+1 1e-1 -> -0.0 +dqqua516 quantize -0E+1 1e0 -> -0 +dqqua517 quantize -0E+1 1e+1 -> -0E+1 +-- #519 here once a problem +dqqua518 quantize 0 0E-3 -> 0.000 +dqqua519 quantize 0 0E-33 -> 0E-33 +dqqua520 quantize 0.00000000000000000000000000000000 0E-33 -> 0E-33 +dqqua521 quantize 0.000000000000000000000000000000000 0E-33 -> 0E-33 + +-- Some non-zeros with lots of padding on the right +dqqua523 quantize 1 0E-33 -> 1.000000000000000000000000000000000 +dqqua524 quantize 12 0E-32 -> 12.00000000000000000000000000000000 +dqqua525 quantize 123 0E-31 -> 123.0000000000000000000000000000000 +dqqua526 quantize 123 0E-32 -> NaN Invalid_operation +dqqua527 quantize 123.4 0E-31 -> 123.4000000000000000000000000000000 +dqqua528 quantize 123.4 0E-32 -> NaN Invalid_operation + +-- Suspicious RHS values +dqqua530 quantize 1.234 1e359 -> 0E+359 Inexact Rounded +dqqua531 quantize 123.456 1e359 -> 0E+359 Inexact Rounded +dqqua532 quantize 1.234 1e359 -> 0E+359 Inexact Rounded +dqqua533 quantize 123.456 1e359 -> 0E+359 Inexact Rounded +-- next four are "won't fit" overflows +dqqua536 quantize 1.234 1e-299 -> NaN Invalid_operation +dqqua537 quantize 123.456 1e-299 -> NaN Invalid_operation +dqqua538 quantize 1.234 1e-299 -> NaN Invalid_operation +dqqua539 quantize 123.456 1e-299 -> NaN Invalid_operation + +dqqua542 quantize 1.234E+299 1e299 -> 1E+299 Inexact Rounded +dqqua543 quantize 1.234E+298 1e299 -> 0E+299 Inexact Rounded +dqqua544 quantize 1.234 1e299 -> 0E+299 Inexact Rounded +dqqua547 quantize 0 1e-299 -> 0E-299 +-- next two are "won't fit" overflows +dqqua548 quantize 1.234 1e-299 -> NaN Invalid_operation +dqqua549 quantize 1.234 1e-300 -> NaN Invalid_operation +-- [more below] + +-- Specials +dqqua580 quantize Inf -Inf -> Infinity +dqqua581 quantize Inf 1e-299 -> NaN Invalid_operation +dqqua582 quantize Inf 1e-1 -> NaN Invalid_operation +dqqua583 quantize Inf 1e0 -> NaN Invalid_operation +dqqua584 quantize Inf 1e1 -> NaN Invalid_operation +dqqua585 quantize Inf 1e299 -> NaN Invalid_operation +dqqua586 quantize Inf Inf -> Infinity +dqqua587 quantize -1000 Inf -> NaN Invalid_operation +dqqua588 quantize -Inf Inf -> -Infinity +dqqua589 quantize -1 Inf -> NaN Invalid_operation +dqqua590 quantize 0 Inf -> NaN Invalid_operation +dqqua591 quantize 1 Inf -> NaN Invalid_operation +dqqua592 quantize 1000 Inf -> NaN Invalid_operation +dqqua593 quantize Inf Inf -> Infinity +dqqua594 quantize Inf 1e-0 -> NaN Invalid_operation +dqqua595 quantize -0 Inf -> NaN Invalid_operation + +dqqua600 quantize -Inf -Inf -> -Infinity +dqqua601 quantize -Inf 1e-299 -> NaN Invalid_operation +dqqua602 quantize -Inf 1e-1 -> NaN Invalid_operation +dqqua603 quantize -Inf 1e0 -> NaN Invalid_operation +dqqua604 quantize -Inf 1e1 -> NaN Invalid_operation +dqqua605 quantize -Inf 1e299 -> NaN Invalid_operation +dqqua606 quantize -Inf Inf -> -Infinity +dqqua607 quantize -1000 Inf -> NaN Invalid_operation +dqqua608 quantize -Inf -Inf -> -Infinity +dqqua609 quantize -1 -Inf -> NaN Invalid_operation +dqqua610 quantize 0 -Inf -> NaN Invalid_operation +dqqua611 quantize 1 -Inf -> NaN Invalid_operation +dqqua612 quantize 1000 -Inf -> NaN Invalid_operation +dqqua613 quantize Inf -Inf -> Infinity +dqqua614 quantize -Inf 1e-0 -> NaN Invalid_operation +dqqua615 quantize -0 -Inf -> NaN Invalid_operation + +dqqua621 quantize NaN -Inf -> NaN +dqqua622 quantize NaN 1e-299 -> NaN +dqqua623 quantize NaN 1e-1 -> NaN +dqqua624 quantize NaN 1e0 -> NaN +dqqua625 quantize NaN 1e1 -> NaN +dqqua626 quantize NaN 1e299 -> NaN +dqqua627 quantize NaN Inf -> NaN +dqqua628 quantize NaN NaN -> NaN +dqqua629 quantize -Inf NaN -> NaN +dqqua630 quantize -1000 NaN -> NaN +dqqua631 quantize -1 NaN -> NaN +dqqua632 quantize 0 NaN -> NaN +dqqua633 quantize 1 NaN -> NaN +dqqua634 quantize 1000 NaN -> NaN +dqqua635 quantize Inf NaN -> NaN +dqqua636 quantize NaN 1e-0 -> NaN +dqqua637 quantize -0 NaN -> NaN + +dqqua641 quantize sNaN -Inf -> NaN Invalid_operation +dqqua642 quantize sNaN 1e-299 -> NaN Invalid_operation +dqqua643 quantize sNaN 1e-1 -> NaN Invalid_operation +dqqua644 quantize sNaN 1e0 -> NaN Invalid_operation +dqqua645 quantize sNaN 1e1 -> NaN Invalid_operation +dqqua646 quantize sNaN 1e299 -> NaN Invalid_operation +dqqua647 quantize sNaN NaN -> NaN Invalid_operation +dqqua648 quantize sNaN sNaN -> NaN Invalid_operation +dqqua649 quantize NaN sNaN -> NaN Invalid_operation +dqqua650 quantize -Inf sNaN -> NaN Invalid_operation +dqqua651 quantize -1000 sNaN -> NaN Invalid_operation +dqqua652 quantize -1 sNaN -> NaN Invalid_operation +dqqua653 quantize 0 sNaN -> NaN Invalid_operation +dqqua654 quantize 1 sNaN -> NaN Invalid_operation +dqqua655 quantize 1000 sNaN -> NaN Invalid_operation +dqqua656 quantize Inf sNaN -> NaN Invalid_operation +dqqua657 quantize NaN sNaN -> NaN Invalid_operation +dqqua658 quantize sNaN 1e-0 -> NaN Invalid_operation +dqqua659 quantize -0 sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqqua661 quantize NaN9 -Inf -> NaN9 +dqqua662 quantize NaN8 919 -> NaN8 +dqqua663 quantize NaN71 Inf -> NaN71 +dqqua664 quantize NaN6 NaN5 -> NaN6 +dqqua665 quantize -Inf NaN4 -> NaN4 +dqqua666 quantize -919 NaN31 -> NaN31 +dqqua667 quantize Inf NaN2 -> NaN2 + +dqqua671 quantize sNaN99 -Inf -> NaN99 Invalid_operation +dqqua672 quantize sNaN98 -11 -> NaN98 Invalid_operation +dqqua673 quantize sNaN97 NaN -> NaN97 Invalid_operation +dqqua674 quantize sNaN16 sNaN94 -> NaN16 Invalid_operation +dqqua675 quantize NaN95 sNaN93 -> NaN93 Invalid_operation +dqqua676 quantize -Inf sNaN92 -> NaN92 Invalid_operation +dqqua677 quantize 088 sNaN91 -> NaN91 Invalid_operation +dqqua678 quantize Inf sNaN90 -> NaN90 Invalid_operation +dqqua679 quantize NaN sNaN88 -> NaN88 Invalid_operation + +dqqua681 quantize -NaN9 -Inf -> -NaN9 +dqqua682 quantize -NaN8 919 -> -NaN8 +dqqua683 quantize -NaN71 Inf -> -NaN71 +dqqua684 quantize -NaN6 -NaN5 -> -NaN6 +dqqua685 quantize -Inf -NaN4 -> -NaN4 +dqqua686 quantize -919 -NaN31 -> -NaN31 +dqqua687 quantize Inf -NaN2 -> -NaN2 + +dqqua691 quantize -sNaN99 -Inf -> -NaN99 Invalid_operation +dqqua692 quantize -sNaN98 -11 -> -NaN98 Invalid_operation +dqqua693 quantize -sNaN97 NaN -> -NaN97 Invalid_operation +dqqua694 quantize -sNaN16 sNaN94 -> -NaN16 Invalid_operation +dqqua695 quantize -NaN95 -sNaN93 -> -NaN93 Invalid_operation +dqqua696 quantize -Inf -sNaN92 -> -NaN92 Invalid_operation +dqqua697 quantize 088 -sNaN91 -> -NaN91 Invalid_operation +dqqua698 quantize Inf -sNaN90 -> -NaN90 Invalid_operation +dqqua699 quantize NaN -sNaN88 -> -NaN88 Invalid_operation + +-- subnormals and underflow +dqqua710 quantize 1.00E-6143 1e-6143 -> 1E-6143 Rounded +dqqua711 quantize 0.1E-6143 2e-6144 -> 1E-6144 Subnormal +dqqua712 quantize 0.10E-6143 3e-6144 -> 1E-6144 Subnormal Rounded +dqqua713 quantize 0.100E-6143 4e-6144 -> 1E-6144 Subnormal Rounded +dqqua714 quantize 0.01E-6143 5e-6145 -> 1E-6145 Subnormal +-- next is rounded to Emin +dqqua715 quantize 0.999E-6143 1e-6143 -> 1E-6143 Inexact Rounded +dqqua716 quantize 0.099E-6143 10e-6144 -> 1E-6144 Inexact Rounded Subnormal + +dqqua717 quantize 0.009E-6143 1e-6145 -> 1E-6145 Inexact Rounded Subnormal +dqqua718 quantize 0.001E-6143 1e-6145 -> 0E-6145 Inexact Rounded +dqqua719 quantize 0.0009E-6143 1e-6145 -> 0E-6145 Inexact Rounded +dqqua720 quantize 0.0001E-6143 1e-6145 -> 0E-6145 Inexact Rounded + +dqqua730 quantize -1.00E-6143 1e-6143 -> -1E-6143 Rounded +dqqua731 quantize -0.1E-6143 1e-6143 -> -0E-6143 Rounded Inexact +dqqua732 quantize -0.10E-6143 1e-6143 -> -0E-6143 Rounded Inexact +dqqua733 quantize -0.100E-6143 1e-6143 -> -0E-6143 Rounded Inexact +dqqua734 quantize -0.01E-6143 1e-6143 -> -0E-6143 Inexact Rounded +-- next is rounded to Emin +dqqua735 quantize -0.999E-6143 90e-6143 -> -1E-6143 Inexact Rounded +dqqua736 quantize -0.099E-6143 -1e-6143 -> -0E-6143 Inexact Rounded +dqqua737 quantize -0.009E-6143 -1e-6143 -> -0E-6143 Inexact Rounded +dqqua738 quantize -0.001E-6143 -0e-6143 -> -0E-6143 Inexact Rounded +dqqua739 quantize -0.0001E-6143 0e-6143 -> -0E-6143 Inexact Rounded + +dqqua740 quantize -1.00E-6143 1e-6144 -> -1.0E-6143 Rounded +dqqua741 quantize -0.1E-6143 1e-6144 -> -1E-6144 Subnormal +dqqua742 quantize -0.10E-6143 1e-6144 -> -1E-6144 Subnormal Rounded +dqqua743 quantize -0.100E-6143 1e-6144 -> -1E-6144 Subnormal Rounded +dqqua744 quantize -0.01E-6143 1e-6144 -> -0E-6144 Inexact Rounded +-- next is rounded to Emin +dqqua745 quantize -0.999E-6143 1e-6144 -> -1.0E-6143 Inexact Rounded +dqqua746 quantize -0.099E-6143 1e-6144 -> -1E-6144 Inexact Rounded Subnormal +dqqua747 quantize -0.009E-6143 1e-6144 -> -0E-6144 Inexact Rounded +dqqua748 quantize -0.001E-6143 1e-6144 -> -0E-6144 Inexact Rounded +dqqua749 quantize -0.0001E-6143 1e-6144 -> -0E-6144 Inexact Rounded + +dqqua750 quantize -1.00E-6143 1e-6145 -> -1.00E-6143 +dqqua751 quantize -0.1E-6143 1e-6145 -> -1.0E-6144 Subnormal +dqqua752 quantize -0.10E-6143 1e-6145 -> -1.0E-6144 Subnormal +dqqua753 quantize -0.100E-6143 1e-6145 -> -1.0E-6144 Subnormal Rounded +dqqua754 quantize -0.01E-6143 1e-6145 -> -1E-6145 Subnormal +-- next is rounded to Emin +dqqua755 quantize -0.999E-6143 1e-6145 -> -1.00E-6143 Inexact Rounded +dqqua756 quantize -0.099E-6143 1e-6145 -> -1.0E-6144 Inexact Rounded Subnormal +dqqua757 quantize -0.009E-6143 1e-6145 -> -1E-6145 Inexact Rounded Subnormal +dqqua758 quantize -0.001E-6143 1e-6145 -> -0E-6145 Inexact Rounded +dqqua759 quantize -0.0001E-6143 1e-6145 -> -0E-6145 Inexact Rounded + +dqqua760 quantize -1.00E-6143 1e-6146 -> -1.000E-6143 +dqqua761 quantize -0.1E-6143 1e-6146 -> -1.00E-6144 Subnormal +dqqua762 quantize -0.10E-6143 1e-6146 -> -1.00E-6144 Subnormal +dqqua763 quantize -0.100E-6143 1e-6146 -> -1.00E-6144 Subnormal +dqqua764 quantize -0.01E-6143 1e-6146 -> -1.0E-6145 Subnormal +dqqua765 quantize -0.999E-6143 1e-6146 -> -9.99E-6144 Subnormal +dqqua766 quantize -0.099E-6143 1e-6146 -> -9.9E-6145 Subnormal +dqqua767 quantize -0.009E-6143 1e-6146 -> -9E-6146 Subnormal +dqqua768 quantize -0.001E-6143 1e-6146 -> -1E-6146 Subnormal +dqqua769 quantize -0.0001E-6143 1e-6146 -> -0E-6146 Inexact Rounded + +-- More from Fung Lee +-- the next four would appear to be in error, but they are misleading (the +-- operands will be clamped to a lower exponent) and so are omitted +-- dqqua1021 quantize 8.666666666666000E+6144 1.000000000000000E+6144 -> 8.666666666666000000000000000000000E+6144 Clamped +-- dqqua1022 quantize -8.666666666666000E+6144 1.000000000000000E+6144 -> -8.666666666666000000000000000000000E+6144 Clamped +-- dqqua1027 quantize 8.666666666666000E+323 1E+31 -> NaN Invalid_operation +-- dqqua1030 quantize 8.66666666E+3 1E+3 -> 9E+3 Inexact Rounded + +-- Int and uInt32 edge values for testing conversions +dqqua1040 quantize -2147483646 0 -> -2147483646 +dqqua1041 quantize -2147483647 0 -> -2147483647 +dqqua1042 quantize -2147483648 0 -> -2147483648 +dqqua1043 quantize -2147483649 0 -> -2147483649 +dqqua1044 quantize 2147483646 0 -> 2147483646 +dqqua1045 quantize 2147483647 0 -> 2147483647 +dqqua1046 quantize 2147483648 0 -> 2147483648 +dqqua1047 quantize 2147483649 0 -> 2147483649 +dqqua1048 quantize 4294967294 0 -> 4294967294 +dqqua1049 quantize 4294967295 0 -> 4294967295 +dqqua1050 quantize 4294967296 0 -> 4294967296 +dqqua1051 quantize 4294967297 0 -> 4294967297 + +-- Rounding swathe +rounding: half_even +dqqua1100 quantize 1.2300 1.00 -> 1.23 Rounded +dqqua1101 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +dqqua1102 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +dqqua1103 quantize 1.2350 1.00 -> 1.24 Inexact Rounded +dqqua1104 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +dqqua1105 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +dqqua1106 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +dqqua1107 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +dqqua1108 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +dqqua1109 quantize 1.2399 1.00 -> 1.24 Inexact Rounded + +rounding: half_up +dqqua1200 quantize 1.2300 1.00 -> 1.23 Rounded +dqqua1201 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +dqqua1202 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +dqqua1203 quantize 1.2350 1.00 -> 1.24 Inexact Rounded +dqqua1204 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +dqqua1205 quantize 1.2450 1.00 -> 1.25 Inexact Rounded +dqqua1206 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +dqqua1207 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +dqqua1208 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +dqqua1209 quantize 1.2399 1.00 -> 1.24 Inexact Rounded + +rounding: half_down +dqqua1300 quantize 1.2300 1.00 -> 1.23 Rounded +dqqua1301 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +dqqua1302 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +dqqua1303 quantize 1.2350 1.00 -> 1.23 Inexact Rounded +dqqua1304 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +dqqua1305 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +dqqua1306 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +dqqua1307 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +dqqua1308 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +dqqua1309 quantize 1.2399 1.00 -> 1.24 Inexact Rounded + +rounding: up +dqqua1400 quantize 1.2300 1.00 -> 1.23 Rounded +dqqua1401 quantize 1.2301 1.00 -> 1.24 Inexact Rounded +dqqua1402 quantize 1.2310 1.00 -> 1.24 Inexact Rounded +dqqua1403 quantize 1.2350 1.00 -> 1.24 Inexact Rounded +dqqua1404 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +dqqua1405 quantize 1.2450 1.00 -> 1.25 Inexact Rounded +dqqua1406 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +dqqua1407 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +dqqua1408 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +dqqua1409 quantize 1.2399 1.00 -> 1.24 Inexact Rounded +dqqua1411 quantize -1.2399 1.00 -> -1.24 Inexact Rounded + +rounding: down +dqqua1500 quantize 1.2300 1.00 -> 1.23 Rounded +dqqua1501 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +dqqua1502 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +dqqua1503 quantize 1.2350 1.00 -> 1.23 Inexact Rounded +dqqua1504 quantize 1.2351 1.00 -> 1.23 Inexact Rounded +dqqua1505 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +dqqua1506 quantize 1.2451 1.00 -> 1.24 Inexact Rounded +dqqua1507 quantize 1.2360 1.00 -> 1.23 Inexact Rounded +dqqua1508 quantize 1.2370 1.00 -> 1.23 Inexact Rounded +dqqua1509 quantize 1.2399 1.00 -> 1.23 Inexact Rounded +dqqua1511 quantize -1.2399 1.00 -> -1.23 Inexact Rounded + +rounding: ceiling +dqqua1600 quantize 1.2300 1.00 -> 1.23 Rounded +dqqua1601 quantize 1.2301 1.00 -> 1.24 Inexact Rounded +dqqua1602 quantize 1.2310 1.00 -> 1.24 Inexact Rounded +dqqua1603 quantize 1.2350 1.00 -> 1.24 Inexact Rounded +dqqua1604 quantize 1.2351 1.00 -> 1.24 Inexact Rounded +dqqua1605 quantize 1.2450 1.00 -> 1.25 Inexact Rounded +dqqua1606 quantize 1.2451 1.00 -> 1.25 Inexact Rounded +dqqua1607 quantize 1.2360 1.00 -> 1.24 Inexact Rounded +dqqua1608 quantize 1.2370 1.00 -> 1.24 Inexact Rounded +dqqua1609 quantize 1.2399 1.00 -> 1.24 Inexact Rounded +dqqua1611 quantize -1.2399 1.00 -> -1.23 Inexact Rounded + +rounding: floor +dqqua1700 quantize 1.2300 1.00 -> 1.23 Rounded +dqqua1701 quantize 1.2301 1.00 -> 1.23 Inexact Rounded +dqqua1702 quantize 1.2310 1.00 -> 1.23 Inexact Rounded +dqqua1703 quantize 1.2350 1.00 -> 1.23 Inexact Rounded +dqqua1704 quantize 1.2351 1.00 -> 1.23 Inexact Rounded +dqqua1705 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +dqqua1706 quantize 1.2451 1.00 -> 1.24 Inexact Rounded +dqqua1707 quantize 1.2360 1.00 -> 1.23 Inexact Rounded +dqqua1708 quantize 1.2370 1.00 -> 1.23 Inexact Rounded +dqqua1709 quantize 1.2399 1.00 -> 1.23 Inexact Rounded +dqqua1711 quantize -1.2399 1.00 -> -1.24 Inexact Rounded + +rounding: 05up +dqqua1800 quantize 1.2000 1.00 -> 1.20 Rounded +dqqua1801 quantize 1.2001 1.00 -> 1.21 Inexact Rounded +dqqua1802 quantize 1.2010 1.00 -> 1.21 Inexact Rounded +dqqua1803 quantize 1.2050 1.00 -> 1.21 Inexact Rounded +dqqua1804 quantize 1.2051 1.00 -> 1.21 Inexact Rounded +dqqua1807 quantize 1.2060 1.00 -> 1.21 Inexact Rounded +dqqua1808 quantize 1.2070 1.00 -> 1.21 Inexact Rounded +dqqua1809 quantize 1.2099 1.00 -> 1.21 Inexact Rounded +dqqua1811 quantize -1.2099 1.00 -> -1.21 Inexact Rounded + +dqqua1900 quantize 1.2100 1.00 -> 1.21 Rounded +dqqua1901 quantize 1.2101 1.00 -> 1.21 Inexact Rounded +dqqua1902 quantize 1.2110 1.00 -> 1.21 Inexact Rounded +dqqua1903 quantize 1.2150 1.00 -> 1.21 Inexact Rounded +dqqua1904 quantize 1.2151 1.00 -> 1.21 Inexact Rounded +dqqua1907 quantize 1.2160 1.00 -> 1.21 Inexact Rounded +dqqua1908 quantize 1.2170 1.00 -> 1.21 Inexact Rounded +dqqua1909 quantize 1.2199 1.00 -> 1.21 Inexact Rounded +dqqua1911 quantize -1.2199 1.00 -> -1.21 Inexact Rounded + +dqqua2000 quantize 1.2400 1.00 -> 1.24 Rounded +dqqua2001 quantize 1.2401 1.00 -> 1.24 Inexact Rounded +dqqua2002 quantize 1.2410 1.00 -> 1.24 Inexact Rounded +dqqua2003 quantize 1.2450 1.00 -> 1.24 Inexact Rounded +dqqua2004 quantize 1.2451 1.00 -> 1.24 Inexact Rounded +dqqua2007 quantize 1.2460 1.00 -> 1.24 Inexact Rounded +dqqua2008 quantize 1.2470 1.00 -> 1.24 Inexact Rounded +dqqua2009 quantize 1.2499 1.00 -> 1.24 Inexact Rounded +dqqua2011 quantize -1.2499 1.00 -> -1.24 Inexact Rounded + +dqqua2100 quantize 1.2500 1.00 -> 1.25 Rounded +dqqua2101 quantize 1.2501 1.00 -> 1.26 Inexact Rounded +dqqua2102 quantize 1.2510 1.00 -> 1.26 Inexact Rounded +dqqua2103 quantize 1.2550 1.00 -> 1.26 Inexact Rounded +dqqua2104 quantize 1.2551 1.00 -> 1.26 Inexact Rounded +dqqua2107 quantize 1.2560 1.00 -> 1.26 Inexact Rounded +dqqua2108 quantize 1.2570 1.00 -> 1.26 Inexact Rounded +dqqua2109 quantize 1.2599 1.00 -> 1.26 Inexact Rounded +dqqua2111 quantize -1.2599 1.00 -> -1.26 Inexact Rounded + +dqqua2200 quantize 1.2600 1.00 -> 1.26 Rounded +dqqua2201 quantize 1.2601 1.00 -> 1.26 Inexact Rounded +dqqua2202 quantize 1.2610 1.00 -> 1.26 Inexact Rounded +dqqua2203 quantize 1.2650 1.00 -> 1.26 Inexact Rounded +dqqua2204 quantize 1.2651 1.00 -> 1.26 Inexact Rounded +dqqua2207 quantize 1.2660 1.00 -> 1.26 Inexact Rounded +dqqua2208 quantize 1.2670 1.00 -> 1.26 Inexact Rounded +dqqua2209 quantize 1.2699 1.00 -> 1.26 Inexact Rounded +dqqua2211 quantize -1.2699 1.00 -> -1.26 Inexact Rounded + +dqqua2300 quantize 1.2900 1.00 -> 1.29 Rounded +dqqua2301 quantize 1.2901 1.00 -> 1.29 Inexact Rounded +dqqua2302 quantize 1.2910 1.00 -> 1.29 Inexact Rounded +dqqua2303 quantize 1.2950 1.00 -> 1.29 Inexact Rounded +dqqua2304 quantize 1.2951 1.00 -> 1.29 Inexact Rounded +dqqua2307 quantize 1.2960 1.00 -> 1.29 Inexact Rounded +dqqua2308 quantize 1.2970 1.00 -> 1.29 Inexact Rounded +dqqua2309 quantize 1.2999 1.00 -> 1.29 Inexact Rounded +dqqua2311 quantize -1.2999 1.00 -> -1.29 Inexact Rounded + +-- Null tests +dqqua998 quantize 10 # -> NaN Invalid_operation +dqqua999 quantize # 1e10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqReduce.decTest b/Lib/test/decimaltestdata/dqReduce.decTest index 236574f..5635e6b 100644 --- a/Lib/test/decimaltestdata/dqReduce.decTest +++ b/Lib/test/decimaltestdata/dqReduce.decTest @@ -1,183 +1,183 @@ ------------------------------------------------------------------------- --- dqReduce.decTest -- remove trailing zeros from a decQuad -- --- Copyright (c) IBM Corporation, 2003, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- - -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - -dqred001 reduce '1' -> '1' -dqred002 reduce '-1' -> '-1' -dqred003 reduce '1.00' -> '1' -dqred004 reduce '-1.00' -> '-1' -dqred005 reduce '0' -> '0' -dqred006 reduce '0.00' -> '0' -dqred007 reduce '00.0' -> '0' -dqred008 reduce '00.00' -> '0' -dqred009 reduce '00' -> '0' -dqred010 reduce '0E+1' -> '0' -dqred011 reduce '0E+5' -> '0' - -dqred012 reduce '-2' -> '-2' -dqred013 reduce '2' -> '2' -dqred014 reduce '-2.00' -> '-2' -dqred015 reduce '2.00' -> '2' -dqred016 reduce '-0' -> '-0' -dqred017 reduce '-0.00' -> '-0' -dqred018 reduce '-00.0' -> '-0' -dqred019 reduce '-00.00' -> '-0' -dqred020 reduce '-00' -> '-0' -dqred021 reduce '-0E+5' -> '-0' -dqred022 reduce '-0E+1' -> '-0' - -dqred030 reduce '+0.1' -> '0.1' -dqred031 reduce '-0.1' -> '-0.1' -dqred032 reduce '+0.01' -> '0.01' -dqred033 reduce '-0.01' -> '-0.01' -dqred034 reduce '+0.001' -> '0.001' -dqred035 reduce '-0.001' -> '-0.001' -dqred036 reduce '+0.000001' -> '0.000001' -dqred037 reduce '-0.000001' -> '-0.000001' -dqred038 reduce '+0.000000000001' -> '1E-12' -dqred039 reduce '-0.000000000001' -> '-1E-12' - -dqred041 reduce 1.1 -> 1.1 -dqred042 reduce 1.10 -> 1.1 -dqred043 reduce 1.100 -> 1.1 -dqred044 reduce 1.110 -> 1.11 -dqred045 reduce -1.1 -> -1.1 -dqred046 reduce -1.10 -> -1.1 -dqred047 reduce -1.100 -> -1.1 -dqred048 reduce -1.110 -> -1.11 -dqred049 reduce 9.9 -> 9.9 -dqred050 reduce 9.90 -> 9.9 -dqred051 reduce 9.900 -> 9.9 -dqred052 reduce 9.990 -> 9.99 -dqred053 reduce -9.9 -> -9.9 -dqred054 reduce -9.90 -> -9.9 -dqred055 reduce -9.900 -> -9.9 -dqred056 reduce -9.990 -> -9.99 - --- some trailing fractional zeros with zeros in units -dqred060 reduce 10.0 -> 1E+1 -dqred061 reduce 10.00 -> 1E+1 -dqred062 reduce 100.0 -> 1E+2 -dqred063 reduce 100.00 -> 1E+2 -dqred064 reduce 1.1000E+3 -> 1.1E+3 -dqred065 reduce 1.10000E+3 -> 1.1E+3 -dqred066 reduce -10.0 -> -1E+1 -dqred067 reduce -10.00 -> -1E+1 -dqred068 reduce -100.0 -> -1E+2 -dqred069 reduce -100.00 -> -1E+2 -dqred070 reduce -1.1000E+3 -> -1.1E+3 -dqred071 reduce -1.10000E+3 -> -1.1E+3 - --- some insignificant trailing zeros with positive exponent -dqred080 reduce 10E+1 -> 1E+2 -dqred081 reduce 100E+1 -> 1E+3 -dqred082 reduce 1.0E+2 -> 1E+2 -dqred083 reduce 1.0E+3 -> 1E+3 -dqred084 reduce 1.1E+3 -> 1.1E+3 -dqred085 reduce 1.00E+3 -> 1E+3 -dqred086 reduce 1.10E+3 -> 1.1E+3 -dqred087 reduce -10E+1 -> -1E+2 -dqred088 reduce -100E+1 -> -1E+3 -dqred089 reduce -1.0E+2 -> -1E+2 -dqred090 reduce -1.0E+3 -> -1E+3 -dqred091 reduce -1.1E+3 -> -1.1E+3 -dqred092 reduce -1.00E+3 -> -1E+3 -dqred093 reduce -1.10E+3 -> -1.1E+3 - --- some significant trailing zeros, were we to be trimming -dqred100 reduce 11 -> 11 -dqred101 reduce 10 -> 1E+1 -dqred102 reduce 10. -> 1E+1 -dqred103 reduce 1.1E+1 -> 11 -dqred104 reduce 1.0E+1 -> 1E+1 -dqred105 reduce 1.10E+2 -> 1.1E+2 -dqred106 reduce 1.00E+2 -> 1E+2 -dqred107 reduce 1.100E+3 -> 1.1E+3 -dqred108 reduce 1.000E+3 -> 1E+3 -dqred109 reduce 1.000000E+6 -> 1E+6 -dqred110 reduce -11 -> -11 -dqred111 reduce -10 -> -1E+1 -dqred112 reduce -10. -> -1E+1 -dqred113 reduce -1.1E+1 -> -11 -dqred114 reduce -1.0E+1 -> -1E+1 -dqred115 reduce -1.10E+2 -> -1.1E+2 -dqred116 reduce -1.00E+2 -> -1E+2 -dqred117 reduce -1.100E+3 -> -1.1E+3 -dqred118 reduce -1.000E+3 -> -1E+3 -dqred119 reduce -1.00000E+5 -> -1E+5 -dqred120 reduce -1.000000E+6 -> -1E+6 -dqred121 reduce -10.00000E+6 -> -1E+7 -dqred122 reduce -100.0000E+6 -> -1E+8 -dqred123 reduce -1000.000E+6 -> -1E+9 -dqred124 reduce -10000.00E+6 -> -1E+10 -dqred125 reduce -100000.0E+6 -> -1E+11 -dqred126 reduce -1000000.E+6 -> -1E+12 - --- examples from decArith -dqred140 reduce '2.1' -> '2.1' -dqred141 reduce '-2.0' -> '-2' -dqred142 reduce '1.200' -> '1.2' -dqred143 reduce '-120' -> '-1.2E+2' -dqred144 reduce '120.00' -> '1.2E+2' -dqred145 reduce '0.00' -> '0' - --- Nmax, Nmin, Ntiny --- note origami effect on some of these -dqred151 reduce 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 -dqred152 reduce 9.999999999999999999999999000000000E+6140 -> 9.99999999999999999999999900000E+6140 -dqred153 reduce 9.999999999999999999999999999990000E+6144 -> 9.999999999999999999999999999990000E+6144 -dqred154 reduce 1E-6143 -> 1E-6143 -dqred155 reduce 1.000000000000000000000000000000000E-6143 -> 1E-6143 -dqred156 reduce 2.000E-6173 -> 2E-6173 Subnormal -dqred157 reduce 1E-6176 -> 1E-6176 Subnormal - -dqred161 reduce -1E-6176 -> -1E-6176 Subnormal -dqred162 reduce -2.000E-6173 -> -2E-6173 Subnormal -dqred163 reduce -1.000000000000000000000000000000000E-6143 -> -1E-6143 -dqred164 reduce -1E-6143 -> -1E-6143 -dqred165 reduce -9.999999999999999999999999000000000E+6140 -> -9.99999999999999999999999900000E+6140 -dqred166 reduce -9.999999999999999999999999999990000E+6144 -> -9.999999999999999999999999999990000E+6144 -dqred167 reduce -9.999999999999999999999999999999990E+6144 -> -9.999999999999999999999999999999990E+6144 -dqred168 reduce -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 -dqred169 reduce -9.999999999999999999999999999999990E+6144 -> -9.999999999999999999999999999999990E+6144 - - --- specials (reduce does not affect payload) -dqred820 reduce 'Inf' -> 'Infinity' -dqred821 reduce '-Inf' -> '-Infinity' -dqred822 reduce NaN -> NaN -dqred823 reduce sNaN -> NaN Invalid_operation -dqred824 reduce NaN101 -> NaN101 -dqred825 reduce sNaN010 -> NaN10 Invalid_operation -dqred827 reduce -NaN -> -NaN -dqred828 reduce -sNaN -> -NaN Invalid_operation -dqred829 reduce -NaN101 -> -NaN101 -dqred830 reduce -sNaN010 -> -NaN10 Invalid_operation - --- Null test -dqred900 reduce # -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqReduce.decTest -- remove trailing zeros from a decQuad -- +-- Copyright (c) IBM Corporation, 2003, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ + +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +dqred001 reduce '1' -> '1' +dqred002 reduce '-1' -> '-1' +dqred003 reduce '1.00' -> '1' +dqred004 reduce '-1.00' -> '-1' +dqred005 reduce '0' -> '0' +dqred006 reduce '0.00' -> '0' +dqred007 reduce '00.0' -> '0' +dqred008 reduce '00.00' -> '0' +dqred009 reduce '00' -> '0' +dqred010 reduce '0E+1' -> '0' +dqred011 reduce '0E+5' -> '0' + +dqred012 reduce '-2' -> '-2' +dqred013 reduce '2' -> '2' +dqred014 reduce '-2.00' -> '-2' +dqred015 reduce '2.00' -> '2' +dqred016 reduce '-0' -> '-0' +dqred017 reduce '-0.00' -> '-0' +dqred018 reduce '-00.0' -> '-0' +dqred019 reduce '-00.00' -> '-0' +dqred020 reduce '-00' -> '-0' +dqred021 reduce '-0E+5' -> '-0' +dqred022 reduce '-0E+1' -> '-0' + +dqred030 reduce '+0.1' -> '0.1' +dqred031 reduce '-0.1' -> '-0.1' +dqred032 reduce '+0.01' -> '0.01' +dqred033 reduce '-0.01' -> '-0.01' +dqred034 reduce '+0.001' -> '0.001' +dqred035 reduce '-0.001' -> '-0.001' +dqred036 reduce '+0.000001' -> '0.000001' +dqred037 reduce '-0.000001' -> '-0.000001' +dqred038 reduce '+0.000000000001' -> '1E-12' +dqred039 reduce '-0.000000000001' -> '-1E-12' + +dqred041 reduce 1.1 -> 1.1 +dqred042 reduce 1.10 -> 1.1 +dqred043 reduce 1.100 -> 1.1 +dqred044 reduce 1.110 -> 1.11 +dqred045 reduce -1.1 -> -1.1 +dqred046 reduce -1.10 -> -1.1 +dqred047 reduce -1.100 -> -1.1 +dqred048 reduce -1.110 -> -1.11 +dqred049 reduce 9.9 -> 9.9 +dqred050 reduce 9.90 -> 9.9 +dqred051 reduce 9.900 -> 9.9 +dqred052 reduce 9.990 -> 9.99 +dqred053 reduce -9.9 -> -9.9 +dqred054 reduce -9.90 -> -9.9 +dqred055 reduce -9.900 -> -9.9 +dqred056 reduce -9.990 -> -9.99 + +-- some trailing fractional zeros with zeros in units +dqred060 reduce 10.0 -> 1E+1 +dqred061 reduce 10.00 -> 1E+1 +dqred062 reduce 100.0 -> 1E+2 +dqred063 reduce 100.00 -> 1E+2 +dqred064 reduce 1.1000E+3 -> 1.1E+3 +dqred065 reduce 1.10000E+3 -> 1.1E+3 +dqred066 reduce -10.0 -> -1E+1 +dqred067 reduce -10.00 -> -1E+1 +dqred068 reduce -100.0 -> -1E+2 +dqred069 reduce -100.00 -> -1E+2 +dqred070 reduce -1.1000E+3 -> -1.1E+3 +dqred071 reduce -1.10000E+3 -> -1.1E+3 + +-- some insignificant trailing zeros with positive exponent +dqred080 reduce 10E+1 -> 1E+2 +dqred081 reduce 100E+1 -> 1E+3 +dqred082 reduce 1.0E+2 -> 1E+2 +dqred083 reduce 1.0E+3 -> 1E+3 +dqred084 reduce 1.1E+3 -> 1.1E+3 +dqred085 reduce 1.00E+3 -> 1E+3 +dqred086 reduce 1.10E+3 -> 1.1E+3 +dqred087 reduce -10E+1 -> -1E+2 +dqred088 reduce -100E+1 -> -1E+3 +dqred089 reduce -1.0E+2 -> -1E+2 +dqred090 reduce -1.0E+3 -> -1E+3 +dqred091 reduce -1.1E+3 -> -1.1E+3 +dqred092 reduce -1.00E+3 -> -1E+3 +dqred093 reduce -1.10E+3 -> -1.1E+3 + +-- some significant trailing zeros, were we to be trimming +dqred100 reduce 11 -> 11 +dqred101 reduce 10 -> 1E+1 +dqred102 reduce 10. -> 1E+1 +dqred103 reduce 1.1E+1 -> 11 +dqred104 reduce 1.0E+1 -> 1E+1 +dqred105 reduce 1.10E+2 -> 1.1E+2 +dqred106 reduce 1.00E+2 -> 1E+2 +dqred107 reduce 1.100E+3 -> 1.1E+3 +dqred108 reduce 1.000E+3 -> 1E+3 +dqred109 reduce 1.000000E+6 -> 1E+6 +dqred110 reduce -11 -> -11 +dqred111 reduce -10 -> -1E+1 +dqred112 reduce -10. -> -1E+1 +dqred113 reduce -1.1E+1 -> -11 +dqred114 reduce -1.0E+1 -> -1E+1 +dqred115 reduce -1.10E+2 -> -1.1E+2 +dqred116 reduce -1.00E+2 -> -1E+2 +dqred117 reduce -1.100E+3 -> -1.1E+3 +dqred118 reduce -1.000E+3 -> -1E+3 +dqred119 reduce -1.00000E+5 -> -1E+5 +dqred120 reduce -1.000000E+6 -> -1E+6 +dqred121 reduce -10.00000E+6 -> -1E+7 +dqred122 reduce -100.0000E+6 -> -1E+8 +dqred123 reduce -1000.000E+6 -> -1E+9 +dqred124 reduce -10000.00E+6 -> -1E+10 +dqred125 reduce -100000.0E+6 -> -1E+11 +dqred126 reduce -1000000.E+6 -> -1E+12 + +-- examples from decArith +dqred140 reduce '2.1' -> '2.1' +dqred141 reduce '-2.0' -> '-2' +dqred142 reduce '1.200' -> '1.2' +dqred143 reduce '-120' -> '-1.2E+2' +dqred144 reduce '120.00' -> '1.2E+2' +dqred145 reduce '0.00' -> '0' + +-- Nmax, Nmin, Ntiny +-- note origami effect on some of these +dqred151 reduce 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144 +dqred152 reduce 9.999999999999999999999999000000000E+6140 -> 9.99999999999999999999999900000E+6140 +dqred153 reduce 9.999999999999999999999999999990000E+6144 -> 9.999999999999999999999999999990000E+6144 +dqred154 reduce 1E-6143 -> 1E-6143 +dqred155 reduce 1.000000000000000000000000000000000E-6143 -> 1E-6143 +dqred156 reduce 2.000E-6173 -> 2E-6173 Subnormal +dqred157 reduce 1E-6176 -> 1E-6176 Subnormal + +dqred161 reduce -1E-6176 -> -1E-6176 Subnormal +dqred162 reduce -2.000E-6173 -> -2E-6173 Subnormal +dqred163 reduce -1.000000000000000000000000000000000E-6143 -> -1E-6143 +dqred164 reduce -1E-6143 -> -1E-6143 +dqred165 reduce -9.999999999999999999999999000000000E+6140 -> -9.99999999999999999999999900000E+6140 +dqred166 reduce -9.999999999999999999999999999990000E+6144 -> -9.999999999999999999999999999990000E+6144 +dqred167 reduce -9.999999999999999999999999999999990E+6144 -> -9.999999999999999999999999999999990E+6144 +dqred168 reduce -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144 +dqred169 reduce -9.999999999999999999999999999999990E+6144 -> -9.999999999999999999999999999999990E+6144 + + +-- specials (reduce does not affect payload) +dqred820 reduce 'Inf' -> 'Infinity' +dqred821 reduce '-Inf' -> '-Infinity' +dqred822 reduce NaN -> NaN +dqred823 reduce sNaN -> NaN Invalid_operation +dqred824 reduce NaN101 -> NaN101 +dqred825 reduce sNaN010 -> NaN10 Invalid_operation +dqred827 reduce -NaN -> -NaN +dqred828 reduce -sNaN -> -NaN Invalid_operation +dqred829 reduce -NaN101 -> -NaN101 +dqred830 reduce -sNaN010 -> -NaN10 Invalid_operation + +-- Null test +dqred900 reduce # -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqRemainder.decTest b/Lib/test/decimaltestdata/dqRemainder.decTest index bae8eae..090d3cf 100644 --- a/Lib/test/decimaltestdata/dqRemainder.decTest +++ b/Lib/test/decimaltestdata/dqRemainder.decTest @@ -1,597 +1,597 @@ ------------------------------------------------------------------------- --- dqRemainder.decTest -- decQuad remainder -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks (as base, above) -dqrem001 remainder 1 1 -> 0 -dqrem002 remainder 2 1 -> 0 -dqrem003 remainder 1 2 -> 1 -dqrem004 remainder 2 2 -> 0 -dqrem005 remainder 0 1 -> 0 -dqrem006 remainder 0 2 -> 0 -dqrem007 remainder 1 3 -> 1 -dqrem008 remainder 2 3 -> 2 -dqrem009 remainder 3 3 -> 0 - -dqrem010 remainder 2.4 1 -> 0.4 -dqrem011 remainder 2.4 -1 -> 0.4 -dqrem012 remainder -2.4 1 -> -0.4 -dqrem013 remainder -2.4 -1 -> -0.4 -dqrem014 remainder 2.40 1 -> 0.40 -dqrem015 remainder 2.400 1 -> 0.400 -dqrem016 remainder 2.4 2 -> 0.4 -dqrem017 remainder 2.400 2 -> 0.400 -dqrem018 remainder 2. 2 -> 0 -dqrem019 remainder 20 20 -> 0 - -dqrem020 remainder 187 187 -> 0 -dqrem021 remainder 5 2 -> 1 -dqrem022 remainder 5 2.0 -> 1.0 -dqrem023 remainder 5 2.000 -> 1.000 -dqrem024 remainder 5 0.200 -> 0.000 -dqrem025 remainder 5 0.200 -> 0.000 - -dqrem030 remainder 1 2 -> 1 -dqrem031 remainder 1 4 -> 1 -dqrem032 remainder 1 8 -> 1 - -dqrem033 remainder 1 16 -> 1 -dqrem034 remainder 1 32 -> 1 -dqrem035 remainder 1 64 -> 1 -dqrem040 remainder 1 -2 -> 1 -dqrem041 remainder 1 -4 -> 1 -dqrem042 remainder 1 -8 -> 1 -dqrem043 remainder 1 -16 -> 1 -dqrem044 remainder 1 -32 -> 1 -dqrem045 remainder 1 -64 -> 1 -dqrem050 remainder -1 2 -> -1 -dqrem051 remainder -1 4 -> -1 -dqrem052 remainder -1 8 -> -1 -dqrem053 remainder -1 16 -> -1 -dqrem054 remainder -1 32 -> -1 -dqrem055 remainder -1 64 -> -1 -dqrem060 remainder -1 -2 -> -1 -dqrem061 remainder -1 -4 -> -1 -dqrem062 remainder -1 -8 -> -1 -dqrem063 remainder -1 -16 -> -1 -dqrem064 remainder -1 -32 -> -1 -dqrem065 remainder -1 -64 -> -1 - -dqrem066 remainder 999999999 1 -> 0 -dqrem067 remainder 999999999.4 1 -> 0.4 -dqrem068 remainder 999999999.5 1 -> 0.5 -dqrem069 remainder 999999999.9 1 -> 0.9 -dqrem070 remainder 999999999.999 1 -> 0.999 -dqrem071 remainder 999999.999999 1 -> 0.999999 -dqrem072 remainder 9 1 -> 0 - -dqrem080 remainder 0. 1 -> 0 -dqrem081 remainder .0 1 -> 0.0 -dqrem082 remainder 0.00 1 -> 0.00 -dqrem083 remainder 0.00E+9 1 -> 0 -dqrem084 remainder 0.00E+3 1 -> 0 -dqrem085 remainder 0.00E+2 1 -> 0 -dqrem086 remainder 0.00E+1 1 -> 0.0 -dqrem087 remainder 0.00E+0 1 -> 0.00 -dqrem088 remainder 0.00E-0 1 -> 0.00 -dqrem089 remainder 0.00E-1 1 -> 0.000 -dqrem090 remainder 0.00E-2 1 -> 0.0000 -dqrem091 remainder 0.00E-3 1 -> 0.00000 -dqrem092 remainder 0.00E-4 1 -> 0.000000 -dqrem093 remainder 0.00E-5 1 -> 0E-7 -dqrem094 remainder 0.00E-6 1 -> 0E-8 -dqrem095 remainder 0.0000E-50 1 -> 0E-54 - --- Various flavours of remainder by 0 -dqrem101 remainder 0 0 -> NaN Division_undefined -dqrem102 remainder 0 -0 -> NaN Division_undefined -dqrem103 remainder -0 0 -> NaN Division_undefined -dqrem104 remainder -0 -0 -> NaN Division_undefined -dqrem105 remainder 0.0E5 0 -> NaN Division_undefined -dqrem106 remainder 0.000 0 -> NaN Division_undefined --- [Some think this next group should be Division_by_zero exception, but --- IEEE 854 is explicit that it is Invalid operation .. for --- remainder-near, anyway] -dqrem107 remainder 0.0001 0 -> NaN Invalid_operation -dqrem108 remainder 0.01 0 -> NaN Invalid_operation -dqrem109 remainder 0.1 0 -> NaN Invalid_operation -dqrem110 remainder 1 0 -> NaN Invalid_operation -dqrem111 remainder 1 0.0 -> NaN Invalid_operation -dqrem112 remainder 10 0.0 -> NaN Invalid_operation -dqrem113 remainder 1E+100 0.0 -> NaN Invalid_operation -dqrem114 remainder 1E+380 0 -> NaN Invalid_operation -dqrem115 remainder 0.0001 -0 -> NaN Invalid_operation -dqrem116 remainder 0.01 -0 -> NaN Invalid_operation -dqrem119 remainder 0.1 -0 -> NaN Invalid_operation -dqrem120 remainder 1 -0 -> NaN Invalid_operation -dqrem121 remainder 1 -0.0 -> NaN Invalid_operation -dqrem122 remainder 10 -0.0 -> NaN Invalid_operation -dqrem123 remainder 1E+100 -0.0 -> NaN Invalid_operation -dqrem124 remainder 1E+384 -0 -> NaN Invalid_operation --- and zeros on left -dqrem130 remainder 0 1 -> 0 -dqrem131 remainder 0 -1 -> 0 -dqrem132 remainder 0.0 1 -> 0.0 -dqrem133 remainder 0.0 -1 -> 0.0 -dqrem134 remainder -0 1 -> -0 -dqrem135 remainder -0 -1 -> -0 -dqrem136 remainder -0.0 1 -> -0.0 -dqrem137 remainder -0.0 -1 -> -0.0 - --- 0.5ers -dqrem143 remainder 0.5 2 -> 0.5 -dqrem144 remainder 0.5 2.1 -> 0.5 -dqrem145 remainder 0.5 2.01 -> 0.50 -dqrem146 remainder 0.5 2.001 -> 0.500 -dqrem147 remainder 0.50 2 -> 0.50 -dqrem148 remainder 0.50 2.01 -> 0.50 -dqrem149 remainder 0.50 2.001 -> 0.500 - --- steadies -dqrem150 remainder 1 1 -> 0 -dqrem151 remainder 1 2 -> 1 -dqrem152 remainder 1 3 -> 1 -dqrem153 remainder 1 4 -> 1 -dqrem154 remainder 1 5 -> 1 -dqrem155 remainder 1 6 -> 1 -dqrem156 remainder 1 7 -> 1 -dqrem157 remainder 1 8 -> 1 -dqrem158 remainder 1 9 -> 1 -dqrem159 remainder 1 10 -> 1 -dqrem160 remainder 1 1 -> 0 -dqrem161 remainder 2 1 -> 0 -dqrem162 remainder 3 1 -> 0 -dqrem163 remainder 4 1 -> 0 -dqrem164 remainder 5 1 -> 0 -dqrem165 remainder 6 1 -> 0 -dqrem166 remainder 7 1 -> 0 -dqrem167 remainder 8 1 -> 0 -dqrem168 remainder 9 1 -> 0 -dqrem169 remainder 10 1 -> 0 - --- some differences from remainderNear -dqrem171 remainder 0.4 1.020 -> 0.400 -dqrem172 remainder 0.50 1.020 -> 0.500 -dqrem173 remainder 0.51 1.020 -> 0.510 -dqrem174 remainder 0.52 1.020 -> 0.520 -dqrem175 remainder 0.6 1.020 -> 0.600 - --- More flavours of remainder by 0 -dqrem201 remainder 0 0 -> NaN Division_undefined -dqrem202 remainder 0.0E5 0 -> NaN Division_undefined -dqrem203 remainder 0.000 0 -> NaN Division_undefined -dqrem204 remainder 0.0001 0 -> NaN Invalid_operation -dqrem205 remainder 0.01 0 -> NaN Invalid_operation -dqrem206 remainder 0.1 0 -> NaN Invalid_operation -dqrem207 remainder 1 0 -> NaN Invalid_operation -dqrem208 remainder 1 0.0 -> NaN Invalid_operation -dqrem209 remainder 10 0.0 -> NaN Invalid_operation -dqrem210 remainder 1E+100 0.0 -> NaN Invalid_operation -dqrem211 remainder 1E+380 0 -> NaN Invalid_operation - --- some differences from remainderNear -dqrem231 remainder -0.4 1.020 -> -0.400 -dqrem232 remainder -0.50 1.020 -> -0.500 -dqrem233 remainder -0.51 1.020 -> -0.510 -dqrem234 remainder -0.52 1.020 -> -0.520 -dqrem235 remainder -0.6 1.020 -> -0.600 - --- high Xs -dqrem240 remainder 1E+2 1.00 -> 0.00 - --- dqrem3xx are from DiagBigDecimal -dqrem301 remainder 1 3 -> 1 -dqrem302 remainder 5 5 -> 0 -dqrem303 remainder 13 10 -> 3 -dqrem304 remainder 13 50 -> 13 -dqrem305 remainder 13 100 -> 13 -dqrem306 remainder 13 1000 -> 13 -dqrem307 remainder .13 1 -> 0.13 -dqrem308 remainder 0.133 1 -> 0.133 -dqrem309 remainder 0.1033 1 -> 0.1033 -dqrem310 remainder 1.033 1 -> 0.033 -dqrem311 remainder 10.33 1 -> 0.33 -dqrem312 remainder 10.33 10 -> 0.33 -dqrem313 remainder 103.3 1 -> 0.3 -dqrem314 remainder 133 10 -> 3 -dqrem315 remainder 1033 10 -> 3 -dqrem316 remainder 1033 50 -> 33 -dqrem317 remainder 101.0 3 -> 2.0 -dqrem318 remainder 102.0 3 -> 0.0 -dqrem319 remainder 103.0 3 -> 1.0 -dqrem320 remainder 2.40 1 -> 0.40 -dqrem321 remainder 2.400 1 -> 0.400 -dqrem322 remainder 2.4 1 -> 0.4 -dqrem323 remainder 2.4 2 -> 0.4 -dqrem324 remainder 2.400 2 -> 0.400 -dqrem325 remainder 1 0.3 -> 0.1 -dqrem326 remainder 1 0.30 -> 0.10 -dqrem327 remainder 1 0.300 -> 0.100 -dqrem328 remainder 1 0.3000 -> 0.1000 -dqrem329 remainder 1.0 0.3 -> 0.1 -dqrem330 remainder 1.00 0.3 -> 0.10 -dqrem331 remainder 1.000 0.3 -> 0.100 -dqrem332 remainder 1.0000 0.3 -> 0.1000 -dqrem333 remainder 0.5 2 -> 0.5 -dqrem334 remainder 0.5 2.1 -> 0.5 -dqrem335 remainder 0.5 2.01 -> 0.50 -dqrem336 remainder 0.5 2.001 -> 0.500 -dqrem337 remainder 0.50 2 -> 0.50 -dqrem338 remainder 0.50 2.01 -> 0.50 -dqrem339 remainder 0.50 2.001 -> 0.500 - -dqrem340 remainder 0.5 0.5000001 -> 0.5000000 -dqrem341 remainder 0.5 0.50000001 -> 0.50000000 -dqrem342 remainder 0.5 0.500000001 -> 0.500000000 -dqrem343 remainder 0.5 0.5000000001 -> 0.5000000000 -dqrem344 remainder 0.5 0.50000000001 -> 0.50000000000 -dqrem345 remainder 0.5 0.4999999 -> 1E-7 -dqrem346 remainder 0.5 0.49999999 -> 1E-8 -dqrem347 remainder 0.5 0.499999999 -> 1E-9 -dqrem348 remainder 0.5 0.4999999999 -> 1E-10 -dqrem349 remainder 0.5 0.49999999999 -> 1E-11 -dqrem350 remainder 0.5 0.499999999999 -> 1E-12 - -dqrem351 remainder 0.03 7 -> 0.03 -dqrem352 remainder 5 2 -> 1 -dqrem353 remainder 4.1 2 -> 0.1 -dqrem354 remainder 4.01 2 -> 0.01 -dqrem355 remainder 4.001 2 -> 0.001 -dqrem356 remainder 4.0001 2 -> 0.0001 -dqrem357 remainder 4.00001 2 -> 0.00001 -dqrem358 remainder 4.000001 2 -> 0.000001 -dqrem359 remainder 4.0000001 2 -> 1E-7 - -dqrem360 remainder 1.2 0.7345 -> 0.4655 -dqrem361 remainder 0.8 12 -> 0.8 -dqrem362 remainder 0.8 0.2 -> 0.0 -dqrem363 remainder 0.8 0.3 -> 0.2 -dqrem364 remainder 0.800 12 -> 0.800 -dqrem365 remainder 0.800 1.7 -> 0.800 -dqrem366 remainder 2.400 2 -> 0.400 - -dqrem371 remainder 2.400 2 -> 0.400 - -dqrem381 remainder 12345 1 -> 0 -dqrem382 remainder 12345 1.0001 -> 0.7657 -dqrem383 remainder 12345 1.001 -> 0.668 -dqrem384 remainder 12345 1.01 -> 0.78 -dqrem385 remainder 12345 1.1 -> 0.8 -dqrem386 remainder 12355 4 -> 3 -dqrem387 remainder 12345 4 -> 1 -dqrem388 remainder 12355 4.0001 -> 2.6912 -dqrem389 remainder 12345 4.0001 -> 0.6914 -dqrem390 remainder 12345 4.9 -> 1.9 -dqrem391 remainder 12345 4.99 -> 4.73 -dqrem392 remainder 12345 4.999 -> 2.469 -dqrem393 remainder 12345 4.9999 -> 0.2469 -dqrem394 remainder 12345 5 -> 0 -dqrem395 remainder 12345 5.0001 -> 4.7532 -dqrem396 remainder 12345 5.001 -> 2.532 -dqrem397 remainder 12345 5.01 -> 0.36 -dqrem398 remainder 12345 5.1 -> 3.0 - --- the nasty division-by-1 cases -dqrem401 remainder 0.5 1 -> 0.5 -dqrem402 remainder 0.55 1 -> 0.55 -dqrem403 remainder 0.555 1 -> 0.555 -dqrem404 remainder 0.5555 1 -> 0.5555 -dqrem405 remainder 0.55555 1 -> 0.55555 -dqrem406 remainder 0.555555 1 -> 0.555555 -dqrem407 remainder 0.5555555 1 -> 0.5555555 -dqrem408 remainder 0.55555555 1 -> 0.55555555 -dqrem409 remainder 0.555555555 1 -> 0.555555555 - --- folddowns -dqrem421 remainder 1E+6144 1 -> NaN Division_impossible -dqrem422 remainder 1E+6144 1E+6143 -> 0E+6111 Clamped -dqrem423 remainder 1E+6144 2E+6143 -> 0E+6111 Clamped -dqrem424 remainder 1E+6144 3E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped -dqrem425 remainder 1E+6144 4E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped -dqrem426 remainder 1E+6144 5E+6143 -> 0E+6111 Clamped -dqrem427 remainder 1E+6144 6E+6143 -> 4.00000000000000000000000000000000E+6143 Clamped -dqrem428 remainder 1E+6144 7E+6143 -> 3.00000000000000000000000000000000E+6143 Clamped -dqrem429 remainder 1E+6144 8E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped -dqrem430 remainder 1E+6144 9E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped --- tinies -dqrem431 remainder 1E-6175 1E-6176 -> 0E-6176 -dqrem432 remainder 1E-6175 2E-6176 -> 0E-6176 -dqrem433 remainder 1E-6175 3E-6176 -> 1E-6176 Subnormal -dqrem434 remainder 1E-6175 4E-6176 -> 2E-6176 Subnormal -dqrem435 remainder 1E-6175 5E-6176 -> 0E-6176 -dqrem436 remainder 1E-6175 6E-6176 -> 4E-6176 Subnormal -dqrem437 remainder 1E-6175 7E-6176 -> 3E-6176 Subnormal -dqrem438 remainder 1E-6175 8E-6176 -> 2E-6176 Subnormal -dqrem439 remainder 1E-6175 9E-6176 -> 1E-6176 Subnormal -dqrem440 remainder 1E-6175 10E-6176 -> 0E-6176 -dqrem441 remainder 1E-6175 11E-6176 -> 1.0E-6175 Subnormal -dqrem442 remainder 100E-6175 11E-6176 -> 1.0E-6175 Subnormal -dqrem443 remainder 100E-6175 20E-6176 -> 0E-6176 -dqrem444 remainder 100E-6175 21E-6176 -> 1.3E-6175 Subnormal -dqrem445 remainder 100E-6175 30E-6176 -> 1.0E-6175 Subnormal - --- zero signs -dqrem650 remainder 1 1 -> 0 -dqrem651 remainder -1 1 -> -0 -dqrem652 remainder 1 -1 -> 0 -dqrem653 remainder -1 -1 -> -0 -dqrem654 remainder 0 1 -> 0 -dqrem655 remainder -0 1 -> -0 -dqrem656 remainder 0 -1 -> 0 -dqrem657 remainder -0 -1 -> -0 -dqrem658 remainder 0.00 1 -> 0.00 -dqrem659 remainder -0.00 1 -> -0.00 - --- Specials -dqrem680 remainder Inf -Inf -> NaN Invalid_operation -dqrem681 remainder Inf -1000 -> NaN Invalid_operation -dqrem682 remainder Inf -1 -> NaN Invalid_operation -dqrem683 remainder Inf 0 -> NaN Invalid_operation -dqrem684 remainder Inf -0 -> NaN Invalid_operation -dqrem685 remainder Inf 1 -> NaN Invalid_operation -dqrem686 remainder Inf 1000 -> NaN Invalid_operation -dqrem687 remainder Inf Inf -> NaN Invalid_operation -dqrem688 remainder -1000 Inf -> -1000 -dqrem689 remainder -Inf Inf -> NaN Invalid_operation -dqrem691 remainder -1 Inf -> -1 -dqrem692 remainder 0 Inf -> 0 -dqrem693 remainder -0 Inf -> -0 -dqrem694 remainder 1 Inf -> 1 -dqrem695 remainder 1000 Inf -> 1000 -dqrem696 remainder Inf Inf -> NaN Invalid_operation - -dqrem700 remainder -Inf -Inf -> NaN Invalid_operation -dqrem701 remainder -Inf -1000 -> NaN Invalid_operation -dqrem702 remainder -Inf -1 -> NaN Invalid_operation -dqrem703 remainder -Inf -0 -> NaN Invalid_operation -dqrem704 remainder -Inf 0 -> NaN Invalid_operation -dqrem705 remainder -Inf 1 -> NaN Invalid_operation -dqrem706 remainder -Inf 1000 -> NaN Invalid_operation -dqrem707 remainder -Inf Inf -> NaN Invalid_operation -dqrem708 remainder -Inf -Inf -> NaN Invalid_operation -dqrem709 remainder -1000 Inf -> -1000 -dqrem710 remainder -1 -Inf -> -1 -dqrem711 remainder -0 -Inf -> -0 -dqrem712 remainder 0 -Inf -> 0 -dqrem713 remainder 1 -Inf -> 1 -dqrem714 remainder 1000 -Inf -> 1000 -dqrem715 remainder Inf -Inf -> NaN Invalid_operation - -dqrem721 remainder NaN -Inf -> NaN -dqrem722 remainder NaN -1000 -> NaN -dqrem723 remainder NaN -1 -> NaN -dqrem724 remainder NaN -0 -> NaN -dqrem725 remainder -NaN 0 -> -NaN -dqrem726 remainder NaN 1 -> NaN -dqrem727 remainder NaN 1000 -> NaN -dqrem728 remainder NaN Inf -> NaN -dqrem729 remainder NaN -NaN -> NaN -dqrem730 remainder -Inf NaN -> NaN -dqrem731 remainder -1000 NaN -> NaN -dqrem732 remainder -1 NaN -> NaN -dqrem733 remainder -0 -NaN -> -NaN -dqrem734 remainder 0 NaN -> NaN -dqrem735 remainder 1 -NaN -> -NaN -dqrem736 remainder 1000 NaN -> NaN -dqrem737 remainder Inf NaN -> NaN - -dqrem741 remainder sNaN -Inf -> NaN Invalid_operation -dqrem742 remainder sNaN -1000 -> NaN Invalid_operation -dqrem743 remainder -sNaN -1 -> -NaN Invalid_operation -dqrem744 remainder sNaN -0 -> NaN Invalid_operation -dqrem745 remainder sNaN 0 -> NaN Invalid_operation -dqrem746 remainder sNaN 1 -> NaN Invalid_operation -dqrem747 remainder sNaN 1000 -> NaN Invalid_operation -dqrem749 remainder sNaN NaN -> NaN Invalid_operation -dqrem750 remainder sNaN sNaN -> NaN Invalid_operation -dqrem751 remainder NaN sNaN -> NaN Invalid_operation -dqrem752 remainder -Inf sNaN -> NaN Invalid_operation -dqrem753 remainder -1000 sNaN -> NaN Invalid_operation -dqrem754 remainder -1 sNaN -> NaN Invalid_operation -dqrem755 remainder -0 sNaN -> NaN Invalid_operation -dqrem756 remainder 0 sNaN -> NaN Invalid_operation -dqrem757 remainder 1 sNaN -> NaN Invalid_operation -dqrem758 remainder 1000 sNaN -> NaN Invalid_operation -dqrem759 remainder Inf -sNaN -> -NaN Invalid_operation - --- propaging NaNs -dqrem760 remainder NaN1 NaN7 -> NaN1 -dqrem761 remainder sNaN2 NaN8 -> NaN2 Invalid_operation -dqrem762 remainder NaN3 sNaN9 -> NaN9 Invalid_operation -dqrem763 remainder sNaN4 sNaN10 -> NaN4 Invalid_operation -dqrem764 remainder 15 NaN11 -> NaN11 -dqrem765 remainder NaN6 NaN12 -> NaN6 -dqrem766 remainder Inf NaN13 -> NaN13 -dqrem767 remainder NaN14 -Inf -> NaN14 -dqrem768 remainder 0 NaN15 -> NaN15 -dqrem769 remainder NaN16 -0 -> NaN16 - --- edge cases of impossible -dqrem770 remainder 1234568888888887777777777890123456 10 -> 6 -dqrem771 remainder 1234568888888887777777777890123456 1 -> 0 -dqrem772 remainder 1234568888888887777777777890123456 0.1 -> NaN Division_impossible -dqrem773 remainder 1234568888888887777777777890123456 0.01 -> NaN Division_impossible - --- long operand checks -dqrem801 remainder 12345678000 100 -> 0 -dqrem802 remainder 1 12345678000 -> 1 -dqrem803 remainder 1234567800 10 -> 0 -dqrem804 remainder 1 1234567800 -> 1 -dqrem805 remainder 1234567890 10 -> 0 -dqrem806 remainder 1 1234567890 -> 1 -dqrem807 remainder 1234567891 10 -> 1 -dqrem808 remainder 1 1234567891 -> 1 -dqrem809 remainder 12345678901 100 -> 1 -dqrem810 remainder 1 12345678901 -> 1 -dqrem811 remainder 1234567896 10 -> 6 -dqrem812 remainder 1 1234567896 -> 1 - -dqrem821 remainder 12345678000 100 -> 0 -dqrem822 remainder 1 12345678000 -> 1 -dqrem823 remainder 1234567800 10 -> 0 -dqrem824 remainder 1 1234567800 -> 1 -dqrem825 remainder 1234567890 10 -> 0 -dqrem826 remainder 1 1234567890 -> 1 -dqrem827 remainder 1234567891 10 -> 1 -dqrem828 remainder 1 1234567891 -> 1 -dqrem829 remainder 12345678901 100 -> 1 -dqrem830 remainder 1 12345678901 -> 1 -dqrem831 remainder 1234567896 10 -> 6 -dqrem832 remainder 1 1234567896 -> 1 - --- from divideint -dqrem840 remainder 100000000.0 1 -> 0.0 -dqrem841 remainder 100000000.4 1 -> 0.4 -dqrem842 remainder 100000000.5 1 -> 0.5 -dqrem843 remainder 100000000.9 1 -> 0.9 -dqrem844 remainder 100000000.999 1 -> 0.999 -dqrem850 remainder 100000003 5 -> 3 -dqrem851 remainder 10000003 5 -> 3 -dqrem852 remainder 1000003 5 -> 3 -dqrem853 remainder 100003 5 -> 3 -dqrem854 remainder 10003 5 -> 3 -dqrem855 remainder 1003 5 -> 3 -dqrem856 remainder 103 5 -> 3 -dqrem857 remainder 13 5 -> 3 -dqrem858 remainder 1 5 -> 1 - --- Vladimir's cases 1234567890123456 -dqrem860 remainder 123.0e1 1000000000000000 -> 1230 -dqrem861 remainder 1230 1000000000000000 -> 1230 -dqrem862 remainder 12.3e2 1000000000000000 -> 1230 -dqrem863 remainder 1.23e3 1000000000000000 -> 1230 -dqrem864 remainder 123e1 1000000000000000 -> 1230 -dqrem870 remainder 123e1 1000000000000000 -> 1230 -dqrem871 remainder 123e1 100000000000000 -> 1230 -dqrem872 remainder 123e1 10000000000000 -> 1230 -dqrem873 remainder 123e1 1000000000000 -> 1230 -dqrem874 remainder 123e1 100000000000 -> 1230 -dqrem875 remainder 123e1 10000000000 -> 1230 -dqrem876 remainder 123e1 1000000000 -> 1230 -dqrem877 remainder 123e1 100000000 -> 1230 -dqrem878 remainder 1230 100000000 -> 1230 -dqrem879 remainder 123e1 10000000 -> 1230 -dqrem880 remainder 123e1 1000000 -> 1230 -dqrem881 remainder 123e1 100000 -> 1230 -dqrem882 remainder 123e1 10000 -> 1230 -dqrem883 remainder 123e1 1000 -> 230 -dqrem884 remainder 123e1 100 -> 30 -dqrem885 remainder 123e1 10 -> 0 -dqrem886 remainder 123e1 1 -> 0 - -dqrem890 remainder 123e1 2000000000000000 -> 1230 -dqrem891 remainder 123e1 200000000000000 -> 1230 -dqrem892 remainder 123e1 20000000000000 -> 1230 -dqrem893 remainder 123e1 2000000000000 -> 1230 -dqrem894 remainder 123e1 200000000000 -> 1230 -dqrem895 remainder 123e1 20000000000 -> 1230 -dqrem896 remainder 123e1 2000000000 -> 1230 -dqrem897 remainder 123e1 200000000 -> 1230 -dqrem899 remainder 123e1 20000000 -> 1230 -dqrem900 remainder 123e1 2000000 -> 1230 -dqrem901 remainder 123e1 200000 -> 1230 -dqrem902 remainder 123e1 20000 -> 1230 -dqrem903 remainder 123e1 2000 -> 1230 -dqrem904 remainder 123e1 200 -> 30 -dqrem905 remainder 123e1 20 -> 10 -dqrem906 remainder 123e1 2 -> 0 - -dqrem910 remainder 123e1 5000000000000000 -> 1230 -dqrem911 remainder 123e1 500000000000000 -> 1230 -dqrem912 remainder 123e1 50000000000000 -> 1230 -dqrem913 remainder 123e1 5000000000000 -> 1230 -dqrem914 remainder 123e1 500000000000 -> 1230 -dqrem915 remainder 123e1 50000000000 -> 1230 -dqrem916 remainder 123e1 5000000000 -> 1230 -dqrem917 remainder 123e1 500000000 -> 1230 -dqrem919 remainder 123e1 50000000 -> 1230 -dqrem920 remainder 123e1 5000000 -> 1230 -dqrem921 remainder 123e1 500000 -> 1230 -dqrem922 remainder 123e1 50000 -> 1230 -dqrem923 remainder 123e1 5000 -> 1230 -dqrem924 remainder 123e1 500 -> 230 -dqrem925 remainder 123e1 50 -> 30 -dqrem926 remainder 123e1 5 -> 0 - -dqrem930 remainder 123e1 9000000000000000 -> 1230 -dqrem931 remainder 123e1 900000000000000 -> 1230 -dqrem932 remainder 123e1 90000000000000 -> 1230 -dqrem933 remainder 123e1 9000000000000 -> 1230 -dqrem934 remainder 123e1 900000000000 -> 1230 -dqrem935 remainder 123e1 90000000000 -> 1230 -dqrem936 remainder 123e1 9000000000 -> 1230 -dqrem937 remainder 123e1 900000000 -> 1230 -dqrem939 remainder 123e1 90000000 -> 1230 -dqrem940 remainder 123e1 9000000 -> 1230 -dqrem941 remainder 123e1 900000 -> 1230 -dqrem942 remainder 123e1 90000 -> 1230 -dqrem943 remainder 123e1 9000 -> 1230 -dqrem944 remainder 123e1 900 -> 330 -dqrem945 remainder 123e1 90 -> 60 -dqrem946 remainder 123e1 9 -> 6 - -dqrem950 remainder 123e1 1000000000000000 -> 1230 -dqrem961 remainder 123e1 2999999999999999 -> 1230 -dqrem962 remainder 123e1 3999999999999999 -> 1230 -dqrem963 remainder 123e1 4999999999999999 -> 1230 -dqrem964 remainder 123e1 5999999999999999 -> 1230 -dqrem965 remainder 123e1 6999999999999999 -> 1230 -dqrem966 remainder 123e1 7999999999999999 -> 1230 -dqrem967 remainder 123e1 8999999999999999 -> 1230 -dqrem968 remainder 123e1 9999999999999999 -> 1230 -dqrem969 remainder 123e1 9876543210987654 -> 1230 - -dqrem980 remainder 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally - --- overflow and underflow tests [from divide] -dqrem1051 remainder 1e+277 1e-311 -> NaN Division_impossible -dqrem1052 remainder 1e+277 -1e-311 -> NaN Division_impossible -dqrem1053 remainder -1e+277 1e-311 -> NaN Division_impossible -dqrem1054 remainder -1e+277 -1e-311 -> NaN Division_impossible -dqrem1055 remainder 1e-277 1e+311 -> 1E-277 -dqrem1056 remainder 1e-277 -1e+311 -> 1E-277 -dqrem1057 remainder -1e-277 1e+311 -> -1E-277 -dqrem1058 remainder -1e-277 -1e+311 -> -1E-277 - --- Gyuris example -dqrem1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143 - --- destructive subtract -dqrem1120 remainder 1234567890123456789012345678901234 1.000000000000000000000000000000001 -> 0.765432109876543210987654321098768 -dqrem1121 remainder 1234567890123456789012345678901234 1.00000000000000000000000000000001 -> 0.65432109876543210987654321098779 -dqrem1122 remainder 1234567890123456789012345678901234 1.0000000000000000000000000000001 -> 0.5432109876543210987654321098890 -dqrem1123 remainder 1234567890123456789012345678901255 4.000000000000000000000000000000001 -> 2.691358027469135802746913580274687 -dqrem1124 remainder 1234567890123456789012345678901234 4.000000000000000000000000000000001 -> 1.691358027469135802746913580274692 -dqrem1125 remainder 1234567890123456789012345678901234 4.9999999999999999999999999999999 -> 3.6913578024691357802469135780251 -dqrem1126 remainder 1234567890123456789012345678901234 4.99999999999999999999999999999999 -> 1.46913578024691357802469135780247 -dqrem1127 remainder 1234567890123456789012345678901234 4.999999999999999999999999999999999 -> 4.246913578024691357802469135780246 -dqrem1128 remainder 1234567890123456789012345678901234 5.0000000000000000000000000000001 -> 4.3086421975308642197530864219759 - --- Null tests -dqrem1000 remainder 10 # -> NaN Invalid_operation -dqrem1001 remainder # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqRemainder.decTest -- decQuad remainder -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks (as base, above) +dqrem001 remainder 1 1 -> 0 +dqrem002 remainder 2 1 -> 0 +dqrem003 remainder 1 2 -> 1 +dqrem004 remainder 2 2 -> 0 +dqrem005 remainder 0 1 -> 0 +dqrem006 remainder 0 2 -> 0 +dqrem007 remainder 1 3 -> 1 +dqrem008 remainder 2 3 -> 2 +dqrem009 remainder 3 3 -> 0 + +dqrem010 remainder 2.4 1 -> 0.4 +dqrem011 remainder 2.4 -1 -> 0.4 +dqrem012 remainder -2.4 1 -> -0.4 +dqrem013 remainder -2.4 -1 -> -0.4 +dqrem014 remainder 2.40 1 -> 0.40 +dqrem015 remainder 2.400 1 -> 0.400 +dqrem016 remainder 2.4 2 -> 0.4 +dqrem017 remainder 2.400 2 -> 0.400 +dqrem018 remainder 2. 2 -> 0 +dqrem019 remainder 20 20 -> 0 + +dqrem020 remainder 187 187 -> 0 +dqrem021 remainder 5 2 -> 1 +dqrem022 remainder 5 2.0 -> 1.0 +dqrem023 remainder 5 2.000 -> 1.000 +dqrem024 remainder 5 0.200 -> 0.000 +dqrem025 remainder 5 0.200 -> 0.000 + +dqrem030 remainder 1 2 -> 1 +dqrem031 remainder 1 4 -> 1 +dqrem032 remainder 1 8 -> 1 + +dqrem033 remainder 1 16 -> 1 +dqrem034 remainder 1 32 -> 1 +dqrem035 remainder 1 64 -> 1 +dqrem040 remainder 1 -2 -> 1 +dqrem041 remainder 1 -4 -> 1 +dqrem042 remainder 1 -8 -> 1 +dqrem043 remainder 1 -16 -> 1 +dqrem044 remainder 1 -32 -> 1 +dqrem045 remainder 1 -64 -> 1 +dqrem050 remainder -1 2 -> -1 +dqrem051 remainder -1 4 -> -1 +dqrem052 remainder -1 8 -> -1 +dqrem053 remainder -1 16 -> -1 +dqrem054 remainder -1 32 -> -1 +dqrem055 remainder -1 64 -> -1 +dqrem060 remainder -1 -2 -> -1 +dqrem061 remainder -1 -4 -> -1 +dqrem062 remainder -1 -8 -> -1 +dqrem063 remainder -1 -16 -> -1 +dqrem064 remainder -1 -32 -> -1 +dqrem065 remainder -1 -64 -> -1 + +dqrem066 remainder 999999999 1 -> 0 +dqrem067 remainder 999999999.4 1 -> 0.4 +dqrem068 remainder 999999999.5 1 -> 0.5 +dqrem069 remainder 999999999.9 1 -> 0.9 +dqrem070 remainder 999999999.999 1 -> 0.999 +dqrem071 remainder 999999.999999 1 -> 0.999999 +dqrem072 remainder 9 1 -> 0 + +dqrem080 remainder 0. 1 -> 0 +dqrem081 remainder .0 1 -> 0.0 +dqrem082 remainder 0.00 1 -> 0.00 +dqrem083 remainder 0.00E+9 1 -> 0 +dqrem084 remainder 0.00E+3 1 -> 0 +dqrem085 remainder 0.00E+2 1 -> 0 +dqrem086 remainder 0.00E+1 1 -> 0.0 +dqrem087 remainder 0.00E+0 1 -> 0.00 +dqrem088 remainder 0.00E-0 1 -> 0.00 +dqrem089 remainder 0.00E-1 1 -> 0.000 +dqrem090 remainder 0.00E-2 1 -> 0.0000 +dqrem091 remainder 0.00E-3 1 -> 0.00000 +dqrem092 remainder 0.00E-4 1 -> 0.000000 +dqrem093 remainder 0.00E-5 1 -> 0E-7 +dqrem094 remainder 0.00E-6 1 -> 0E-8 +dqrem095 remainder 0.0000E-50 1 -> 0E-54 + +-- Various flavours of remainder by 0 +dqrem101 remainder 0 0 -> NaN Division_undefined +dqrem102 remainder 0 -0 -> NaN Division_undefined +dqrem103 remainder -0 0 -> NaN Division_undefined +dqrem104 remainder -0 -0 -> NaN Division_undefined +dqrem105 remainder 0.0E5 0 -> NaN Division_undefined +dqrem106 remainder 0.000 0 -> NaN Division_undefined +-- [Some think this next group should be Division_by_zero exception, but +-- IEEE 854 is explicit that it is Invalid operation .. for +-- remainder-near, anyway] +dqrem107 remainder 0.0001 0 -> NaN Invalid_operation +dqrem108 remainder 0.01 0 -> NaN Invalid_operation +dqrem109 remainder 0.1 0 -> NaN Invalid_operation +dqrem110 remainder 1 0 -> NaN Invalid_operation +dqrem111 remainder 1 0.0 -> NaN Invalid_operation +dqrem112 remainder 10 0.0 -> NaN Invalid_operation +dqrem113 remainder 1E+100 0.0 -> NaN Invalid_operation +dqrem114 remainder 1E+380 0 -> NaN Invalid_operation +dqrem115 remainder 0.0001 -0 -> NaN Invalid_operation +dqrem116 remainder 0.01 -0 -> NaN Invalid_operation +dqrem119 remainder 0.1 -0 -> NaN Invalid_operation +dqrem120 remainder 1 -0 -> NaN Invalid_operation +dqrem121 remainder 1 -0.0 -> NaN Invalid_operation +dqrem122 remainder 10 -0.0 -> NaN Invalid_operation +dqrem123 remainder 1E+100 -0.0 -> NaN Invalid_operation +dqrem124 remainder 1E+384 -0 -> NaN Invalid_operation +-- and zeros on left +dqrem130 remainder 0 1 -> 0 +dqrem131 remainder 0 -1 -> 0 +dqrem132 remainder 0.0 1 -> 0.0 +dqrem133 remainder 0.0 -1 -> 0.0 +dqrem134 remainder -0 1 -> -0 +dqrem135 remainder -0 -1 -> -0 +dqrem136 remainder -0.0 1 -> -0.0 +dqrem137 remainder -0.0 -1 -> -0.0 + +-- 0.5ers +dqrem143 remainder 0.5 2 -> 0.5 +dqrem144 remainder 0.5 2.1 -> 0.5 +dqrem145 remainder 0.5 2.01 -> 0.50 +dqrem146 remainder 0.5 2.001 -> 0.500 +dqrem147 remainder 0.50 2 -> 0.50 +dqrem148 remainder 0.50 2.01 -> 0.50 +dqrem149 remainder 0.50 2.001 -> 0.500 + +-- steadies +dqrem150 remainder 1 1 -> 0 +dqrem151 remainder 1 2 -> 1 +dqrem152 remainder 1 3 -> 1 +dqrem153 remainder 1 4 -> 1 +dqrem154 remainder 1 5 -> 1 +dqrem155 remainder 1 6 -> 1 +dqrem156 remainder 1 7 -> 1 +dqrem157 remainder 1 8 -> 1 +dqrem158 remainder 1 9 -> 1 +dqrem159 remainder 1 10 -> 1 +dqrem160 remainder 1 1 -> 0 +dqrem161 remainder 2 1 -> 0 +dqrem162 remainder 3 1 -> 0 +dqrem163 remainder 4 1 -> 0 +dqrem164 remainder 5 1 -> 0 +dqrem165 remainder 6 1 -> 0 +dqrem166 remainder 7 1 -> 0 +dqrem167 remainder 8 1 -> 0 +dqrem168 remainder 9 1 -> 0 +dqrem169 remainder 10 1 -> 0 + +-- some differences from remainderNear +dqrem171 remainder 0.4 1.020 -> 0.400 +dqrem172 remainder 0.50 1.020 -> 0.500 +dqrem173 remainder 0.51 1.020 -> 0.510 +dqrem174 remainder 0.52 1.020 -> 0.520 +dqrem175 remainder 0.6 1.020 -> 0.600 + +-- More flavours of remainder by 0 +dqrem201 remainder 0 0 -> NaN Division_undefined +dqrem202 remainder 0.0E5 0 -> NaN Division_undefined +dqrem203 remainder 0.000 0 -> NaN Division_undefined +dqrem204 remainder 0.0001 0 -> NaN Invalid_operation +dqrem205 remainder 0.01 0 -> NaN Invalid_operation +dqrem206 remainder 0.1 0 -> NaN Invalid_operation +dqrem207 remainder 1 0 -> NaN Invalid_operation +dqrem208 remainder 1 0.0 -> NaN Invalid_operation +dqrem209 remainder 10 0.0 -> NaN Invalid_operation +dqrem210 remainder 1E+100 0.0 -> NaN Invalid_operation +dqrem211 remainder 1E+380 0 -> NaN Invalid_operation + +-- some differences from remainderNear +dqrem231 remainder -0.4 1.020 -> -0.400 +dqrem232 remainder -0.50 1.020 -> -0.500 +dqrem233 remainder -0.51 1.020 -> -0.510 +dqrem234 remainder -0.52 1.020 -> -0.520 +dqrem235 remainder -0.6 1.020 -> -0.600 + +-- high Xs +dqrem240 remainder 1E+2 1.00 -> 0.00 + +-- dqrem3xx are from DiagBigDecimal +dqrem301 remainder 1 3 -> 1 +dqrem302 remainder 5 5 -> 0 +dqrem303 remainder 13 10 -> 3 +dqrem304 remainder 13 50 -> 13 +dqrem305 remainder 13 100 -> 13 +dqrem306 remainder 13 1000 -> 13 +dqrem307 remainder .13 1 -> 0.13 +dqrem308 remainder 0.133 1 -> 0.133 +dqrem309 remainder 0.1033 1 -> 0.1033 +dqrem310 remainder 1.033 1 -> 0.033 +dqrem311 remainder 10.33 1 -> 0.33 +dqrem312 remainder 10.33 10 -> 0.33 +dqrem313 remainder 103.3 1 -> 0.3 +dqrem314 remainder 133 10 -> 3 +dqrem315 remainder 1033 10 -> 3 +dqrem316 remainder 1033 50 -> 33 +dqrem317 remainder 101.0 3 -> 2.0 +dqrem318 remainder 102.0 3 -> 0.0 +dqrem319 remainder 103.0 3 -> 1.0 +dqrem320 remainder 2.40 1 -> 0.40 +dqrem321 remainder 2.400 1 -> 0.400 +dqrem322 remainder 2.4 1 -> 0.4 +dqrem323 remainder 2.4 2 -> 0.4 +dqrem324 remainder 2.400 2 -> 0.400 +dqrem325 remainder 1 0.3 -> 0.1 +dqrem326 remainder 1 0.30 -> 0.10 +dqrem327 remainder 1 0.300 -> 0.100 +dqrem328 remainder 1 0.3000 -> 0.1000 +dqrem329 remainder 1.0 0.3 -> 0.1 +dqrem330 remainder 1.00 0.3 -> 0.10 +dqrem331 remainder 1.000 0.3 -> 0.100 +dqrem332 remainder 1.0000 0.3 -> 0.1000 +dqrem333 remainder 0.5 2 -> 0.5 +dqrem334 remainder 0.5 2.1 -> 0.5 +dqrem335 remainder 0.5 2.01 -> 0.50 +dqrem336 remainder 0.5 2.001 -> 0.500 +dqrem337 remainder 0.50 2 -> 0.50 +dqrem338 remainder 0.50 2.01 -> 0.50 +dqrem339 remainder 0.50 2.001 -> 0.500 + +dqrem340 remainder 0.5 0.5000001 -> 0.5000000 +dqrem341 remainder 0.5 0.50000001 -> 0.50000000 +dqrem342 remainder 0.5 0.500000001 -> 0.500000000 +dqrem343 remainder 0.5 0.5000000001 -> 0.5000000000 +dqrem344 remainder 0.5 0.50000000001 -> 0.50000000000 +dqrem345 remainder 0.5 0.4999999 -> 1E-7 +dqrem346 remainder 0.5 0.49999999 -> 1E-8 +dqrem347 remainder 0.5 0.499999999 -> 1E-9 +dqrem348 remainder 0.5 0.4999999999 -> 1E-10 +dqrem349 remainder 0.5 0.49999999999 -> 1E-11 +dqrem350 remainder 0.5 0.499999999999 -> 1E-12 + +dqrem351 remainder 0.03 7 -> 0.03 +dqrem352 remainder 5 2 -> 1 +dqrem353 remainder 4.1 2 -> 0.1 +dqrem354 remainder 4.01 2 -> 0.01 +dqrem355 remainder 4.001 2 -> 0.001 +dqrem356 remainder 4.0001 2 -> 0.0001 +dqrem357 remainder 4.00001 2 -> 0.00001 +dqrem358 remainder 4.000001 2 -> 0.000001 +dqrem359 remainder 4.0000001 2 -> 1E-7 + +dqrem360 remainder 1.2 0.7345 -> 0.4655 +dqrem361 remainder 0.8 12 -> 0.8 +dqrem362 remainder 0.8 0.2 -> 0.0 +dqrem363 remainder 0.8 0.3 -> 0.2 +dqrem364 remainder 0.800 12 -> 0.800 +dqrem365 remainder 0.800 1.7 -> 0.800 +dqrem366 remainder 2.400 2 -> 0.400 + +dqrem371 remainder 2.400 2 -> 0.400 + +dqrem381 remainder 12345 1 -> 0 +dqrem382 remainder 12345 1.0001 -> 0.7657 +dqrem383 remainder 12345 1.001 -> 0.668 +dqrem384 remainder 12345 1.01 -> 0.78 +dqrem385 remainder 12345 1.1 -> 0.8 +dqrem386 remainder 12355 4 -> 3 +dqrem387 remainder 12345 4 -> 1 +dqrem388 remainder 12355 4.0001 -> 2.6912 +dqrem389 remainder 12345 4.0001 -> 0.6914 +dqrem390 remainder 12345 4.9 -> 1.9 +dqrem391 remainder 12345 4.99 -> 4.73 +dqrem392 remainder 12345 4.999 -> 2.469 +dqrem393 remainder 12345 4.9999 -> 0.2469 +dqrem394 remainder 12345 5 -> 0 +dqrem395 remainder 12345 5.0001 -> 4.7532 +dqrem396 remainder 12345 5.001 -> 2.532 +dqrem397 remainder 12345 5.01 -> 0.36 +dqrem398 remainder 12345 5.1 -> 3.0 + +-- the nasty division-by-1 cases +dqrem401 remainder 0.5 1 -> 0.5 +dqrem402 remainder 0.55 1 -> 0.55 +dqrem403 remainder 0.555 1 -> 0.555 +dqrem404 remainder 0.5555 1 -> 0.5555 +dqrem405 remainder 0.55555 1 -> 0.55555 +dqrem406 remainder 0.555555 1 -> 0.555555 +dqrem407 remainder 0.5555555 1 -> 0.5555555 +dqrem408 remainder 0.55555555 1 -> 0.55555555 +dqrem409 remainder 0.555555555 1 -> 0.555555555 + +-- folddowns +dqrem421 remainder 1E+6144 1 -> NaN Division_impossible +dqrem422 remainder 1E+6144 1E+6143 -> 0E+6111 Clamped +dqrem423 remainder 1E+6144 2E+6143 -> 0E+6111 Clamped +dqrem424 remainder 1E+6144 3E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped +dqrem425 remainder 1E+6144 4E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped +dqrem426 remainder 1E+6144 5E+6143 -> 0E+6111 Clamped +dqrem427 remainder 1E+6144 6E+6143 -> 4.00000000000000000000000000000000E+6143 Clamped +dqrem428 remainder 1E+6144 7E+6143 -> 3.00000000000000000000000000000000E+6143 Clamped +dqrem429 remainder 1E+6144 8E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped +dqrem430 remainder 1E+6144 9E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped +-- tinies +dqrem431 remainder 1E-6175 1E-6176 -> 0E-6176 +dqrem432 remainder 1E-6175 2E-6176 -> 0E-6176 +dqrem433 remainder 1E-6175 3E-6176 -> 1E-6176 Subnormal +dqrem434 remainder 1E-6175 4E-6176 -> 2E-6176 Subnormal +dqrem435 remainder 1E-6175 5E-6176 -> 0E-6176 +dqrem436 remainder 1E-6175 6E-6176 -> 4E-6176 Subnormal +dqrem437 remainder 1E-6175 7E-6176 -> 3E-6176 Subnormal +dqrem438 remainder 1E-6175 8E-6176 -> 2E-6176 Subnormal +dqrem439 remainder 1E-6175 9E-6176 -> 1E-6176 Subnormal +dqrem440 remainder 1E-6175 10E-6176 -> 0E-6176 +dqrem441 remainder 1E-6175 11E-6176 -> 1.0E-6175 Subnormal +dqrem442 remainder 100E-6175 11E-6176 -> 1.0E-6175 Subnormal +dqrem443 remainder 100E-6175 20E-6176 -> 0E-6176 +dqrem444 remainder 100E-6175 21E-6176 -> 1.3E-6175 Subnormal +dqrem445 remainder 100E-6175 30E-6176 -> 1.0E-6175 Subnormal + +-- zero signs +dqrem650 remainder 1 1 -> 0 +dqrem651 remainder -1 1 -> -0 +dqrem652 remainder 1 -1 -> 0 +dqrem653 remainder -1 -1 -> -0 +dqrem654 remainder 0 1 -> 0 +dqrem655 remainder -0 1 -> -0 +dqrem656 remainder 0 -1 -> 0 +dqrem657 remainder -0 -1 -> -0 +dqrem658 remainder 0.00 1 -> 0.00 +dqrem659 remainder -0.00 1 -> -0.00 + +-- Specials +dqrem680 remainder Inf -Inf -> NaN Invalid_operation +dqrem681 remainder Inf -1000 -> NaN Invalid_operation +dqrem682 remainder Inf -1 -> NaN Invalid_operation +dqrem683 remainder Inf 0 -> NaN Invalid_operation +dqrem684 remainder Inf -0 -> NaN Invalid_operation +dqrem685 remainder Inf 1 -> NaN Invalid_operation +dqrem686 remainder Inf 1000 -> NaN Invalid_operation +dqrem687 remainder Inf Inf -> NaN Invalid_operation +dqrem688 remainder -1000 Inf -> -1000 +dqrem689 remainder -Inf Inf -> NaN Invalid_operation +dqrem691 remainder -1 Inf -> -1 +dqrem692 remainder 0 Inf -> 0 +dqrem693 remainder -0 Inf -> -0 +dqrem694 remainder 1 Inf -> 1 +dqrem695 remainder 1000 Inf -> 1000 +dqrem696 remainder Inf Inf -> NaN Invalid_operation + +dqrem700 remainder -Inf -Inf -> NaN Invalid_operation +dqrem701 remainder -Inf -1000 -> NaN Invalid_operation +dqrem702 remainder -Inf -1 -> NaN Invalid_operation +dqrem703 remainder -Inf -0 -> NaN Invalid_operation +dqrem704 remainder -Inf 0 -> NaN Invalid_operation +dqrem705 remainder -Inf 1 -> NaN Invalid_operation +dqrem706 remainder -Inf 1000 -> NaN Invalid_operation +dqrem707 remainder -Inf Inf -> NaN Invalid_operation +dqrem708 remainder -Inf -Inf -> NaN Invalid_operation +dqrem709 remainder -1000 Inf -> -1000 +dqrem710 remainder -1 -Inf -> -1 +dqrem711 remainder -0 -Inf -> -0 +dqrem712 remainder 0 -Inf -> 0 +dqrem713 remainder 1 -Inf -> 1 +dqrem714 remainder 1000 -Inf -> 1000 +dqrem715 remainder Inf -Inf -> NaN Invalid_operation + +dqrem721 remainder NaN -Inf -> NaN +dqrem722 remainder NaN -1000 -> NaN +dqrem723 remainder NaN -1 -> NaN +dqrem724 remainder NaN -0 -> NaN +dqrem725 remainder -NaN 0 -> -NaN +dqrem726 remainder NaN 1 -> NaN +dqrem727 remainder NaN 1000 -> NaN +dqrem728 remainder NaN Inf -> NaN +dqrem729 remainder NaN -NaN -> NaN +dqrem730 remainder -Inf NaN -> NaN +dqrem731 remainder -1000 NaN -> NaN +dqrem732 remainder -1 NaN -> NaN +dqrem733 remainder -0 -NaN -> -NaN +dqrem734 remainder 0 NaN -> NaN +dqrem735 remainder 1 -NaN -> -NaN +dqrem736 remainder 1000 NaN -> NaN +dqrem737 remainder Inf NaN -> NaN + +dqrem741 remainder sNaN -Inf -> NaN Invalid_operation +dqrem742 remainder sNaN -1000 -> NaN Invalid_operation +dqrem743 remainder -sNaN -1 -> -NaN Invalid_operation +dqrem744 remainder sNaN -0 -> NaN Invalid_operation +dqrem745 remainder sNaN 0 -> NaN Invalid_operation +dqrem746 remainder sNaN 1 -> NaN Invalid_operation +dqrem747 remainder sNaN 1000 -> NaN Invalid_operation +dqrem749 remainder sNaN NaN -> NaN Invalid_operation +dqrem750 remainder sNaN sNaN -> NaN Invalid_operation +dqrem751 remainder NaN sNaN -> NaN Invalid_operation +dqrem752 remainder -Inf sNaN -> NaN Invalid_operation +dqrem753 remainder -1000 sNaN -> NaN Invalid_operation +dqrem754 remainder -1 sNaN -> NaN Invalid_operation +dqrem755 remainder -0 sNaN -> NaN Invalid_operation +dqrem756 remainder 0 sNaN -> NaN Invalid_operation +dqrem757 remainder 1 sNaN -> NaN Invalid_operation +dqrem758 remainder 1000 sNaN -> NaN Invalid_operation +dqrem759 remainder Inf -sNaN -> -NaN Invalid_operation + +-- propaging NaNs +dqrem760 remainder NaN1 NaN7 -> NaN1 +dqrem761 remainder sNaN2 NaN8 -> NaN2 Invalid_operation +dqrem762 remainder NaN3 sNaN9 -> NaN9 Invalid_operation +dqrem763 remainder sNaN4 sNaN10 -> NaN4 Invalid_operation +dqrem764 remainder 15 NaN11 -> NaN11 +dqrem765 remainder NaN6 NaN12 -> NaN6 +dqrem766 remainder Inf NaN13 -> NaN13 +dqrem767 remainder NaN14 -Inf -> NaN14 +dqrem768 remainder 0 NaN15 -> NaN15 +dqrem769 remainder NaN16 -0 -> NaN16 + +-- edge cases of impossible +dqrem770 remainder 1234568888888887777777777890123456 10 -> 6 +dqrem771 remainder 1234568888888887777777777890123456 1 -> 0 +dqrem772 remainder 1234568888888887777777777890123456 0.1 -> NaN Division_impossible +dqrem773 remainder 1234568888888887777777777890123456 0.01 -> NaN Division_impossible + +-- long operand checks +dqrem801 remainder 12345678000 100 -> 0 +dqrem802 remainder 1 12345678000 -> 1 +dqrem803 remainder 1234567800 10 -> 0 +dqrem804 remainder 1 1234567800 -> 1 +dqrem805 remainder 1234567890 10 -> 0 +dqrem806 remainder 1 1234567890 -> 1 +dqrem807 remainder 1234567891 10 -> 1 +dqrem808 remainder 1 1234567891 -> 1 +dqrem809 remainder 12345678901 100 -> 1 +dqrem810 remainder 1 12345678901 -> 1 +dqrem811 remainder 1234567896 10 -> 6 +dqrem812 remainder 1 1234567896 -> 1 + +dqrem821 remainder 12345678000 100 -> 0 +dqrem822 remainder 1 12345678000 -> 1 +dqrem823 remainder 1234567800 10 -> 0 +dqrem824 remainder 1 1234567800 -> 1 +dqrem825 remainder 1234567890 10 -> 0 +dqrem826 remainder 1 1234567890 -> 1 +dqrem827 remainder 1234567891 10 -> 1 +dqrem828 remainder 1 1234567891 -> 1 +dqrem829 remainder 12345678901 100 -> 1 +dqrem830 remainder 1 12345678901 -> 1 +dqrem831 remainder 1234567896 10 -> 6 +dqrem832 remainder 1 1234567896 -> 1 + +-- from divideint +dqrem840 remainder 100000000.0 1 -> 0.0 +dqrem841 remainder 100000000.4 1 -> 0.4 +dqrem842 remainder 100000000.5 1 -> 0.5 +dqrem843 remainder 100000000.9 1 -> 0.9 +dqrem844 remainder 100000000.999 1 -> 0.999 +dqrem850 remainder 100000003 5 -> 3 +dqrem851 remainder 10000003 5 -> 3 +dqrem852 remainder 1000003 5 -> 3 +dqrem853 remainder 100003 5 -> 3 +dqrem854 remainder 10003 5 -> 3 +dqrem855 remainder 1003 5 -> 3 +dqrem856 remainder 103 5 -> 3 +dqrem857 remainder 13 5 -> 3 +dqrem858 remainder 1 5 -> 1 + +-- Vladimir's cases 1234567890123456 +dqrem860 remainder 123.0e1 1000000000000000 -> 1230 +dqrem861 remainder 1230 1000000000000000 -> 1230 +dqrem862 remainder 12.3e2 1000000000000000 -> 1230 +dqrem863 remainder 1.23e3 1000000000000000 -> 1230 +dqrem864 remainder 123e1 1000000000000000 -> 1230 +dqrem870 remainder 123e1 1000000000000000 -> 1230 +dqrem871 remainder 123e1 100000000000000 -> 1230 +dqrem872 remainder 123e1 10000000000000 -> 1230 +dqrem873 remainder 123e1 1000000000000 -> 1230 +dqrem874 remainder 123e1 100000000000 -> 1230 +dqrem875 remainder 123e1 10000000000 -> 1230 +dqrem876 remainder 123e1 1000000000 -> 1230 +dqrem877 remainder 123e1 100000000 -> 1230 +dqrem878 remainder 1230 100000000 -> 1230 +dqrem879 remainder 123e1 10000000 -> 1230 +dqrem880 remainder 123e1 1000000 -> 1230 +dqrem881 remainder 123e1 100000 -> 1230 +dqrem882 remainder 123e1 10000 -> 1230 +dqrem883 remainder 123e1 1000 -> 230 +dqrem884 remainder 123e1 100 -> 30 +dqrem885 remainder 123e1 10 -> 0 +dqrem886 remainder 123e1 1 -> 0 + +dqrem890 remainder 123e1 2000000000000000 -> 1230 +dqrem891 remainder 123e1 200000000000000 -> 1230 +dqrem892 remainder 123e1 20000000000000 -> 1230 +dqrem893 remainder 123e1 2000000000000 -> 1230 +dqrem894 remainder 123e1 200000000000 -> 1230 +dqrem895 remainder 123e1 20000000000 -> 1230 +dqrem896 remainder 123e1 2000000000 -> 1230 +dqrem897 remainder 123e1 200000000 -> 1230 +dqrem899 remainder 123e1 20000000 -> 1230 +dqrem900 remainder 123e1 2000000 -> 1230 +dqrem901 remainder 123e1 200000 -> 1230 +dqrem902 remainder 123e1 20000 -> 1230 +dqrem903 remainder 123e1 2000 -> 1230 +dqrem904 remainder 123e1 200 -> 30 +dqrem905 remainder 123e1 20 -> 10 +dqrem906 remainder 123e1 2 -> 0 + +dqrem910 remainder 123e1 5000000000000000 -> 1230 +dqrem911 remainder 123e1 500000000000000 -> 1230 +dqrem912 remainder 123e1 50000000000000 -> 1230 +dqrem913 remainder 123e1 5000000000000 -> 1230 +dqrem914 remainder 123e1 500000000000 -> 1230 +dqrem915 remainder 123e1 50000000000 -> 1230 +dqrem916 remainder 123e1 5000000000 -> 1230 +dqrem917 remainder 123e1 500000000 -> 1230 +dqrem919 remainder 123e1 50000000 -> 1230 +dqrem920 remainder 123e1 5000000 -> 1230 +dqrem921 remainder 123e1 500000 -> 1230 +dqrem922 remainder 123e1 50000 -> 1230 +dqrem923 remainder 123e1 5000 -> 1230 +dqrem924 remainder 123e1 500 -> 230 +dqrem925 remainder 123e1 50 -> 30 +dqrem926 remainder 123e1 5 -> 0 + +dqrem930 remainder 123e1 9000000000000000 -> 1230 +dqrem931 remainder 123e1 900000000000000 -> 1230 +dqrem932 remainder 123e1 90000000000000 -> 1230 +dqrem933 remainder 123e1 9000000000000 -> 1230 +dqrem934 remainder 123e1 900000000000 -> 1230 +dqrem935 remainder 123e1 90000000000 -> 1230 +dqrem936 remainder 123e1 9000000000 -> 1230 +dqrem937 remainder 123e1 900000000 -> 1230 +dqrem939 remainder 123e1 90000000 -> 1230 +dqrem940 remainder 123e1 9000000 -> 1230 +dqrem941 remainder 123e1 900000 -> 1230 +dqrem942 remainder 123e1 90000 -> 1230 +dqrem943 remainder 123e1 9000 -> 1230 +dqrem944 remainder 123e1 900 -> 330 +dqrem945 remainder 123e1 90 -> 60 +dqrem946 remainder 123e1 9 -> 6 + +dqrem950 remainder 123e1 1000000000000000 -> 1230 +dqrem961 remainder 123e1 2999999999999999 -> 1230 +dqrem962 remainder 123e1 3999999999999999 -> 1230 +dqrem963 remainder 123e1 4999999999999999 -> 1230 +dqrem964 remainder 123e1 5999999999999999 -> 1230 +dqrem965 remainder 123e1 6999999999999999 -> 1230 +dqrem966 remainder 123e1 7999999999999999 -> 1230 +dqrem967 remainder 123e1 8999999999999999 -> 1230 +dqrem968 remainder 123e1 9999999999999999 -> 1230 +dqrem969 remainder 123e1 9876543210987654 -> 1230 + +dqrem980 remainder 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally + +-- overflow and underflow tests [from divide] +dqrem1051 remainder 1e+277 1e-311 -> NaN Division_impossible +dqrem1052 remainder 1e+277 -1e-311 -> NaN Division_impossible +dqrem1053 remainder -1e+277 1e-311 -> NaN Division_impossible +dqrem1054 remainder -1e+277 -1e-311 -> NaN Division_impossible +dqrem1055 remainder 1e-277 1e+311 -> 1E-277 +dqrem1056 remainder 1e-277 -1e+311 -> 1E-277 +dqrem1057 remainder -1e-277 1e+311 -> -1E-277 +dqrem1058 remainder -1e-277 -1e+311 -> -1E-277 + +-- Gyuris example +dqrem1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143 + +-- destructive subtract +dqrem1120 remainder 1234567890123456789012345678901234 1.000000000000000000000000000000001 -> 0.765432109876543210987654321098768 +dqrem1121 remainder 1234567890123456789012345678901234 1.00000000000000000000000000000001 -> 0.65432109876543210987654321098779 +dqrem1122 remainder 1234567890123456789012345678901234 1.0000000000000000000000000000001 -> 0.5432109876543210987654321098890 +dqrem1123 remainder 1234567890123456789012345678901255 4.000000000000000000000000000000001 -> 2.691358027469135802746913580274687 +dqrem1124 remainder 1234567890123456789012345678901234 4.000000000000000000000000000000001 -> 1.691358027469135802746913580274692 +dqrem1125 remainder 1234567890123456789012345678901234 4.9999999999999999999999999999999 -> 3.6913578024691357802469135780251 +dqrem1126 remainder 1234567890123456789012345678901234 4.99999999999999999999999999999999 -> 1.46913578024691357802469135780247 +dqrem1127 remainder 1234567890123456789012345678901234 4.999999999999999999999999999999999 -> 4.246913578024691357802469135780246 +dqrem1128 remainder 1234567890123456789012345678901234 5.0000000000000000000000000000001 -> 4.3086421975308642197530864219759 + +-- Null tests +dqrem1000 remainder 10 # -> NaN Invalid_operation +dqrem1001 remainder # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqRemainderNear.decTest b/Lib/test/decimaltestdata/dqRemainderNear.decTest index b850626..0dd273f 100644 --- a/Lib/test/decimaltestdata/dqRemainderNear.decTest +++ b/Lib/test/decimaltestdata/dqRemainderNear.decTest @@ -1,631 +1,631 @@ ------------------------------------------------------------------------- --- dqRemainderNear.decTest -- decQuad remainder-near -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- sanity checks (as base, above) -dqrmn001 remaindernear 1 1 -> 0 -dqrmn002 remaindernear 2 1 -> 0 -dqrmn003 remaindernear 1 2 -> 1 -dqrmn004 remaindernear 2 2 -> 0 -dqrmn005 remaindernear 0 1 -> 0 -dqrmn006 remaindernear 0 2 -> 0 -dqrmn007 remaindernear 1 3 -> 1 -dqrmn008 remaindernear 2 3 -> -1 -dqrmn009 remaindernear 3 3 -> 0 - -dqrmn010 remaindernear 2.4 1 -> 0.4 -dqrmn011 remaindernear 2.4 -1 -> 0.4 -dqrmn012 remaindernear -2.4 1 -> -0.4 -dqrmn013 remaindernear -2.4 -1 -> -0.4 -dqrmn014 remaindernear 2.40 1 -> 0.40 -dqrmn015 remaindernear 2.400 1 -> 0.400 -dqrmn016 remaindernear 2.4 2 -> 0.4 -dqrmn017 remaindernear 2.400 2 -> 0.400 -dqrmn018 remaindernear 2. 2 -> 0 -dqrmn019 remaindernear 20 20 -> 0 - -dqrmn020 remaindernear 187 187 -> 0 -dqrmn021 remaindernear 5 2 -> 1 -dqrmn022 remaindernear 5 2.0 -> 1.0 -dqrmn023 remaindernear 5 2.000 -> 1.000 -dqrmn024 remaindernear 5 0.200 -> 0.000 -dqrmn025 remaindernear 5 0.200 -> 0.000 - -dqrmn030 remaindernear 1 2 -> 1 -dqrmn031 remaindernear 1 4 -> 1 -dqrmn032 remaindernear 1 8 -> 1 - -dqrmn033 remaindernear 1 16 -> 1 -dqrmn034 remaindernear 1 32 -> 1 -dqrmn035 remaindernear 1 64 -> 1 -dqrmn040 remaindernear 1 -2 -> 1 -dqrmn041 remaindernear 1 -4 -> 1 -dqrmn042 remaindernear 1 -8 -> 1 -dqrmn043 remaindernear 1 -16 -> 1 -dqrmn044 remaindernear 1 -32 -> 1 -dqrmn045 remaindernear 1 -64 -> 1 -dqrmn050 remaindernear -1 2 -> -1 -dqrmn051 remaindernear -1 4 -> -1 -dqrmn052 remaindernear -1 8 -> -1 -dqrmn053 remaindernear -1 16 -> -1 -dqrmn054 remaindernear -1 32 -> -1 -dqrmn055 remaindernear -1 64 -> -1 -dqrmn060 remaindernear -1 -2 -> -1 -dqrmn061 remaindernear -1 -4 -> -1 -dqrmn062 remaindernear -1 -8 -> -1 -dqrmn063 remaindernear -1 -16 -> -1 -dqrmn064 remaindernear -1 -32 -> -1 -dqrmn065 remaindernear -1 -64 -> -1 - -dqrmn066 remaindernear 9.9 1 -> -0.1 -dqrmn067 remaindernear 99.7 1 -> -0.3 -dqrmn068 remaindernear 999999999 1 -> 0 -dqrmn069 remaindernear 999999999.4 1 -> 0.4 -dqrmn070 remaindernear 999999999.5 1 -> -0.5 -dqrmn071 remaindernear 999999999.9 1 -> -0.1 -dqrmn072 remaindernear 999999999.999 1 -> -0.001 -dqrmn073 remaindernear 999999.999999 1 -> -0.000001 -dqrmn074 remaindernear 9 1 -> 0 -dqrmn075 remaindernear 9999999999999999 1 -> 0 -dqrmn076 remaindernear 9999999999999999 2 -> -1 -dqrmn077 remaindernear 9999999999999999 3 -> 0 -dqrmn078 remaindernear 9999999999999999 4 -> -1 - -dqrmn080 remaindernear 0. 1 -> 0 -dqrmn081 remaindernear .0 1 -> 0.0 -dqrmn082 remaindernear 0.00 1 -> 0.00 -dqrmn083 remaindernear 0.00E+9 1 -> 0 -dqrmn084 remaindernear 0.00E+3 1 -> 0 -dqrmn085 remaindernear 0.00E+2 1 -> 0 -dqrmn086 remaindernear 0.00E+1 1 -> 0.0 -dqrmn087 remaindernear 0.00E+0 1 -> 0.00 -dqrmn088 remaindernear 0.00E-0 1 -> 0.00 -dqrmn089 remaindernear 0.00E-1 1 -> 0.000 -dqrmn090 remaindernear 0.00E-2 1 -> 0.0000 -dqrmn091 remaindernear 0.00E-3 1 -> 0.00000 -dqrmn092 remaindernear 0.00E-4 1 -> 0.000000 -dqrmn093 remaindernear 0.00E-5 1 -> 0E-7 -dqrmn094 remaindernear 0.00E-6 1 -> 0E-8 -dqrmn095 remaindernear 0.0000E-50 1 -> 0E-54 - --- Various flavours of remaindernear by 0 -dqrmn101 remaindernear 0 0 -> NaN Division_undefined -dqrmn102 remaindernear 0 -0 -> NaN Division_undefined -dqrmn103 remaindernear -0 0 -> NaN Division_undefined -dqrmn104 remaindernear -0 -0 -> NaN Division_undefined -dqrmn105 remaindernear 0.0E5 0 -> NaN Division_undefined -dqrmn106 remaindernear 0.000 0 -> NaN Division_undefined --- [Some think this next group should be Division_by_zero exception, but --- IEEE 854 is explicit that it is Invalid operation .. for --- remainder-near, anyway] -dqrmn107 remaindernear 0.0001 0 -> NaN Invalid_operation -dqrmn108 remaindernear 0.01 0 -> NaN Invalid_operation -dqrmn109 remaindernear 0.1 0 -> NaN Invalid_operation -dqrmn110 remaindernear 1 0 -> NaN Invalid_operation -dqrmn111 remaindernear 1 0.0 -> NaN Invalid_operation -dqrmn112 remaindernear 10 0.0 -> NaN Invalid_operation -dqrmn113 remaindernear 1E+100 0.0 -> NaN Invalid_operation -dqrmn114 remaindernear 1E+380 0 -> NaN Invalid_operation -dqrmn115 remaindernear 0.0001 -0 -> NaN Invalid_operation -dqrmn116 remaindernear 0.01 -0 -> NaN Invalid_operation -dqrmn119 remaindernear 0.1 -0 -> NaN Invalid_operation -dqrmn120 remaindernear 1 -0 -> NaN Invalid_operation -dqrmn121 remaindernear 1 -0.0 -> NaN Invalid_operation -dqrmn122 remaindernear 10 -0.0 -> NaN Invalid_operation -dqrmn123 remaindernear 1E+100 -0.0 -> NaN Invalid_operation -dqrmn124 remaindernear 1E+384 -0 -> NaN Invalid_operation --- and zeros on left -dqrmn130 remaindernear 0 1 -> 0 -dqrmn131 remaindernear 0 -1 -> 0 -dqrmn132 remaindernear 0.0 1 -> 0.0 -dqrmn133 remaindernear 0.0 -1 -> 0.0 -dqrmn134 remaindernear -0 1 -> -0 -dqrmn135 remaindernear -0 -1 -> -0 -dqrmn136 remaindernear -0.0 1 -> -0.0 -dqrmn137 remaindernear -0.0 -1 -> -0.0 - --- 0.5ers -dqrmn143 remaindernear 0.5 2 -> 0.5 -dqrmn144 remaindernear 0.5 2.1 -> 0.5 -dqrmn145 remaindernear 0.5 2.01 -> 0.50 -dqrmn146 remaindernear 0.5 2.001 -> 0.500 -dqrmn147 remaindernear 0.50 2 -> 0.50 -dqrmn148 remaindernear 0.50 2.01 -> 0.50 -dqrmn149 remaindernear 0.50 2.001 -> 0.500 - --- steadies -dqrmn150 remaindernear 1 1 -> 0 -dqrmn151 remaindernear 1 2 -> 1 -dqrmn152 remaindernear 1 3 -> 1 -dqrmn153 remaindernear 1 4 -> 1 -dqrmn154 remaindernear 1 5 -> 1 -dqrmn155 remaindernear 1 6 -> 1 -dqrmn156 remaindernear 1 7 -> 1 -dqrmn157 remaindernear 1 8 -> 1 -dqrmn158 remaindernear 1 9 -> 1 -dqrmn159 remaindernear 1 10 -> 1 -dqrmn160 remaindernear 1 1 -> 0 -dqrmn161 remaindernear 2 1 -> 0 -dqrmn162 remaindernear 3 1 -> 0 -dqrmn163 remaindernear 4 1 -> 0 -dqrmn164 remaindernear 5 1 -> 0 -dqrmn165 remaindernear 6 1 -> 0 -dqrmn166 remaindernear 7 1 -> 0 -dqrmn167 remaindernear 8 1 -> 0 -dqrmn168 remaindernear 9 1 -> 0 -dqrmn169 remaindernear 10 1 -> 0 - --- some differences from remainder -dqrmn171 remaindernear 0.4 1.020 -> 0.400 -dqrmn172 remaindernear 0.50 1.020 -> 0.500 -dqrmn173 remaindernear 0.51 1.020 -> 0.510 -dqrmn174 remaindernear 0.52 1.020 -> -0.500 -dqrmn175 remaindernear 0.6 1.020 -> -0.420 - --- More flavours of remaindernear by 0 -dqrmn201 remaindernear 0 0 -> NaN Division_undefined -dqrmn202 remaindernear 0.0E5 0 -> NaN Division_undefined -dqrmn203 remaindernear 0.000 0 -> NaN Division_undefined -dqrmn204 remaindernear 0.0001 0 -> NaN Invalid_operation -dqrmn205 remaindernear 0.01 0 -> NaN Invalid_operation -dqrmn206 remaindernear 0.1 0 -> NaN Invalid_operation -dqrmn207 remaindernear 1 0 -> NaN Invalid_operation -dqrmn208 remaindernear 1 0.0 -> NaN Invalid_operation -dqrmn209 remaindernear 10 0.0 -> NaN Invalid_operation -dqrmn210 remaindernear 1E+100 0.0 -> NaN Invalid_operation -dqrmn211 remaindernear 1E+380 0 -> NaN Invalid_operation - --- tests from the extended specification -dqrmn221 remaindernear 2.1 3 -> -0.9 -dqrmn222 remaindernear 10 6 -> -2 -dqrmn223 remaindernear 10 3 -> 1 -dqrmn224 remaindernear -10 3 -> -1 -dqrmn225 remaindernear 10.2 1 -> 0.2 -dqrmn226 remaindernear 10 0.3 -> 0.1 -dqrmn227 remaindernear 3.6 1.3 -> -0.3 - --- some differences from remainder -dqrmn231 remaindernear -0.4 1.020 -> -0.400 -dqrmn232 remaindernear -0.50 1.020 -> -0.500 -dqrmn233 remaindernear -0.51 1.020 -> -0.510 -dqrmn234 remaindernear -0.52 1.020 -> 0.500 -dqrmn235 remaindernear -0.6 1.020 -> 0.420 - --- high Xs -dqrmn240 remaindernear 1E+2 1.00 -> 0.00 - --- dqrmn3xx are from DiagBigDecimal -dqrmn301 remaindernear 1 3 -> 1 -dqrmn302 remaindernear 5 5 -> 0 -dqrmn303 remaindernear 13 10 -> 3 -dqrmn304 remaindernear 13 50 -> 13 -dqrmn305 remaindernear 13 100 -> 13 -dqrmn306 remaindernear 13 1000 -> 13 -dqrmn307 remaindernear .13 1 -> 0.13 -dqrmn308 remaindernear 0.133 1 -> 0.133 -dqrmn309 remaindernear 0.1033 1 -> 0.1033 -dqrmn310 remaindernear 1.033 1 -> 0.033 -dqrmn311 remaindernear 10.33 1 -> 0.33 -dqrmn312 remaindernear 10.33 10 -> 0.33 -dqrmn313 remaindernear 103.3 1 -> 0.3 -dqrmn314 remaindernear 133 10 -> 3 -dqrmn315 remaindernear 1033 10 -> 3 -dqrmn316 remaindernear 1033 50 -> -17 -dqrmn317 remaindernear 101.0 3 -> -1.0 -dqrmn318 remaindernear 102.0 3 -> 0.0 -dqrmn319 remaindernear 103.0 3 -> 1.0 -dqrmn320 remaindernear 2.40 1 -> 0.40 -dqrmn321 remaindernear 2.400 1 -> 0.400 -dqrmn322 remaindernear 2.4 1 -> 0.4 -dqrmn323 remaindernear 2.4 2 -> 0.4 -dqrmn324 remaindernear 2.400 2 -> 0.400 -dqrmn325 remaindernear 1 0.3 -> 0.1 -dqrmn326 remaindernear 1 0.30 -> 0.10 -dqrmn327 remaindernear 1 0.300 -> 0.100 -dqrmn328 remaindernear 1 0.3000 -> 0.1000 -dqrmn329 remaindernear 1.0 0.3 -> 0.1 -dqrmn330 remaindernear 1.00 0.3 -> 0.10 -dqrmn331 remaindernear 1.000 0.3 -> 0.100 -dqrmn332 remaindernear 1.0000 0.3 -> 0.1000 -dqrmn333 remaindernear 0.5 2 -> 0.5 -dqrmn334 remaindernear 0.5 2.1 -> 0.5 -dqrmn335 remaindernear 0.5 2.01 -> 0.50 -dqrmn336 remaindernear 0.5 2.001 -> 0.500 -dqrmn337 remaindernear 0.50 2 -> 0.50 -dqrmn338 remaindernear 0.50 2.01 -> 0.50 -dqrmn339 remaindernear 0.50 2.001 -> 0.500 - -dqrmn340 remaindernear 0.5 0.5000001 -> -1E-7 -dqrmn341 remaindernear 0.5 0.50000001 -> -1E-8 -dqrmn342 remaindernear 0.5 0.500000001 -> -1E-9 -dqrmn343 remaindernear 0.5 0.5000000001 -> -1E-10 -dqrmn344 remaindernear 0.5 0.50000000001 -> -1E-11 -dqrmn345 remaindernear 0.5 0.4999999 -> 1E-7 -dqrmn346 remaindernear 0.5 0.49999999 -> 1E-8 -dqrmn347 remaindernear 0.5 0.499999999 -> 1E-9 -dqrmn348 remaindernear 0.5 0.4999999999 -> 1E-10 -dqrmn349 remaindernear 0.5 0.49999999999 -> 1E-11 -dqrmn350 remaindernear 0.5 0.499999999999 -> 1E-12 - -dqrmn351 remaindernear 0.03 7 -> 0.03 -dqrmn352 remaindernear 5 2 -> 1 -dqrmn353 remaindernear 4.1 2 -> 0.1 -dqrmn354 remaindernear 4.01 2 -> 0.01 -dqrmn355 remaindernear 4.001 2 -> 0.001 -dqrmn356 remaindernear 4.0001 2 -> 0.0001 -dqrmn357 remaindernear 4.00001 2 -> 0.00001 -dqrmn358 remaindernear 4.000001 2 -> 0.000001 -dqrmn359 remaindernear 4.0000001 2 -> 1E-7 - -dqrmn360 remaindernear 1.2 0.7345 -> -0.2690 -dqrmn361 remaindernear 0.8 12 -> 0.8 -dqrmn362 remaindernear 0.8 0.2 -> 0.0 -dqrmn363 remaindernear 0.8 0.3 -> -0.1 -dqrmn364 remaindernear 0.800 12 -> 0.800 -dqrmn365 remaindernear 0.800 1.7 -> 0.800 -dqrmn366 remaindernear 2.400 2 -> 0.400 - --- round to even -dqrmn371 remaindernear 121 2 -> 1 -dqrmn372 remaindernear 122 2 -> 0 -dqrmn373 remaindernear 123 2 -> -1 -dqrmn374 remaindernear 124 2 -> 0 -dqrmn375 remaindernear 125 2 -> 1 -dqrmn376 remaindernear 126 2 -> 0 -dqrmn377 remaindernear 127 2 -> -1 - -dqrmn381 remaindernear 12345 1 -> 0 -dqrmn382 remaindernear 12345 1.0001 -> -0.2344 -dqrmn383 remaindernear 12345 1.001 -> -0.333 -dqrmn384 remaindernear 12345 1.01 -> -0.23 -dqrmn385 remaindernear 12345 1.1 -> -0.3 -dqrmn386 remaindernear 12355 4 -> -1 -dqrmn387 remaindernear 12345 4 -> 1 -dqrmn388 remaindernear 12355 4.0001 -> -1.3089 -dqrmn389 remaindernear 12345 4.0001 -> 0.6914 -dqrmn390 remaindernear 12345 4.9 -> 1.9 -dqrmn391 remaindernear 12345 4.99 -> -0.26 -dqrmn392 remaindernear 12345 4.999 -> 2.469 -dqrmn393 remaindernear 12345 4.9999 -> 0.2469 -dqrmn394 remaindernear 12345 5 -> 0 -dqrmn395 remaindernear 12345 5.0001 -> -0.2469 -dqrmn396 remaindernear 12345 5.001 -> -2.469 -dqrmn397 remaindernear 12345 5.01 -> 0.36 -dqrmn398 remaindernear 12345 5.1 -> -2.1 - --- the nasty division-by-1 cases -dqrmn401 remaindernear 0.4 1 -> 0.4 -dqrmn402 remaindernear 0.45 1 -> 0.45 -dqrmn403 remaindernear 0.455 1 -> 0.455 -dqrmn404 remaindernear 0.4555 1 -> 0.4555 -dqrmn405 remaindernear 0.45555 1 -> 0.45555 -dqrmn406 remaindernear 0.455555 1 -> 0.455555 -dqrmn407 remaindernear 0.4555555 1 -> 0.4555555 -dqrmn408 remaindernear 0.45555555 1 -> 0.45555555 -dqrmn409 remaindernear 0.455555555 1 -> 0.455555555 --- with spill... [412 exercises sticktab loop] -dqrmn411 remaindernear 0.5 1 -> 0.5 -dqrmn412 remaindernear 0.55 1 -> -0.45 -dqrmn413 remaindernear 0.555 1 -> -0.445 -dqrmn414 remaindernear 0.5555 1 -> -0.4445 -dqrmn415 remaindernear 0.55555 1 -> -0.44445 -dqrmn416 remaindernear 0.555555 1 -> -0.444445 -dqrmn417 remaindernear 0.5555555 1 -> -0.4444445 -dqrmn418 remaindernear 0.55555555 1 -> -0.44444445 -dqrmn419 remaindernear 0.555555555 1 -> -0.444444445 - --- folddowns -dqrmn421 remaindernear 1E+6144 1 -> NaN Division_impossible -dqrmn422 remaindernear 1E+6144 1E+6143 -> 0E+6111 Clamped -dqrmn423 remaindernear 1E+6144 2E+6143 -> 0E+6111 Clamped -dqrmn424 remaindernear 1E+6144 3E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped -dqrmn425 remaindernear 1E+6144 4E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped -dqrmn426 remaindernear 1E+6144 5E+6143 -> 0E+6111 Clamped -dqrmn427 remaindernear 1E+6144 6E+6143 -> -2.00000000000000000000000000000000E+6143 Clamped -dqrmn428 remaindernear 1E+6144 7E+6143 -> 3.00000000000000000000000000000000E+6143 Clamped -dqrmn429 remaindernear 1E+6144 8E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped -dqrmn430 remaindernear 1E+6144 9E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped --- tinies -dqrmn431 remaindernear 1E-6175 1E-6176 -> 0E-6176 -dqrmn432 remaindernear 1E-6175 2E-6176 -> 0E-6176 -dqrmn433 remaindernear 1E-6175 3E-6176 -> 1E-6176 Subnormal -dqrmn434 remaindernear 1E-6175 4E-6176 -> 2E-6176 Subnormal -dqrmn435 remaindernear 1E-6175 5E-6176 -> 0E-6176 -dqrmn436 remaindernear 1E-6175 6E-6176 -> -2E-6176 Subnormal -dqrmn437 remaindernear 1E-6175 7E-6176 -> 3E-6176 Subnormal -dqrmn438 remaindernear 1E-6175 8E-6176 -> 2E-6176 Subnormal -dqrmn439 remaindernear 1E-6175 9E-6176 -> 1E-6176 Subnormal -dqrmn440 remaindernear 1E-6175 10E-6176 -> 0E-6176 -dqrmn441 remaindernear 1E-6175 11E-6176 -> -1E-6176 Subnormal -dqrmn442 remaindernear 100E-6175 11E-6176 -> -1E-6176 Subnormal -dqrmn443 remaindernear 100E-6175 20E-6176 -> 0E-6176 -dqrmn444 remaindernear 100E-6175 21E-6176 -> -8E-6176 Subnormal -dqrmn445 remaindernear 100E-6175 30E-6176 -> 1.0E-6175 Subnormal - --- zero signs -dqrmn650 remaindernear 1 1 -> 0 -dqrmn651 remaindernear -1 1 -> -0 -dqrmn652 remaindernear 1 -1 -> 0 -dqrmn653 remaindernear -1 -1 -> -0 -dqrmn654 remaindernear 0 1 -> 0 -dqrmn655 remaindernear -0 1 -> -0 -dqrmn656 remaindernear 0 -1 -> 0 -dqrmn657 remaindernear -0 -1 -> -0 -dqrmn658 remaindernear 0.00 1 -> 0.00 -dqrmn659 remaindernear -0.00 1 -> -0.00 - --- Specials -dqrmn680 remaindernear Inf -Inf -> NaN Invalid_operation -dqrmn681 remaindernear Inf -1000 -> NaN Invalid_operation -dqrmn682 remaindernear Inf -1 -> NaN Invalid_operation -dqrmn683 remaindernear Inf 0 -> NaN Invalid_operation -dqrmn684 remaindernear Inf -0 -> NaN Invalid_operation -dqrmn685 remaindernear Inf 1 -> NaN Invalid_operation -dqrmn686 remaindernear Inf 1000 -> NaN Invalid_operation -dqrmn687 remaindernear Inf Inf -> NaN Invalid_operation -dqrmn688 remaindernear -1000 Inf -> -1000 -dqrmn689 remaindernear -Inf Inf -> NaN Invalid_operation -dqrmn691 remaindernear -1 Inf -> -1 -dqrmn692 remaindernear 0 Inf -> 0 -dqrmn693 remaindernear -0 Inf -> -0 -dqrmn694 remaindernear 1 Inf -> 1 -dqrmn695 remaindernear 1000 Inf -> 1000 -dqrmn696 remaindernear Inf Inf -> NaN Invalid_operation - -dqrmn700 remaindernear -Inf -Inf -> NaN Invalid_operation -dqrmn701 remaindernear -Inf -1000 -> NaN Invalid_operation -dqrmn702 remaindernear -Inf -1 -> NaN Invalid_operation -dqrmn703 remaindernear -Inf -0 -> NaN Invalid_operation -dqrmn704 remaindernear -Inf 0 -> NaN Invalid_operation -dqrmn705 remaindernear -Inf 1 -> NaN Invalid_operation -dqrmn706 remaindernear -Inf 1000 -> NaN Invalid_operation -dqrmn707 remaindernear -Inf Inf -> NaN Invalid_operation -dqrmn708 remaindernear -Inf -Inf -> NaN Invalid_operation -dqrmn709 remaindernear -1000 Inf -> -1000 -dqrmn710 remaindernear -1 -Inf -> -1 -dqrmn711 remaindernear -0 -Inf -> -0 -dqrmn712 remaindernear 0 -Inf -> 0 -dqrmn713 remaindernear 1 -Inf -> 1 -dqrmn714 remaindernear 1000 -Inf -> 1000 -dqrmn715 remaindernear Inf -Inf -> NaN Invalid_operation - -dqrmn721 remaindernear NaN -Inf -> NaN -dqrmn722 remaindernear NaN -1000 -> NaN -dqrmn723 remaindernear NaN -1 -> NaN -dqrmn724 remaindernear NaN -0 -> NaN -dqrmn725 remaindernear -NaN 0 -> -NaN -dqrmn726 remaindernear NaN 1 -> NaN -dqrmn727 remaindernear NaN 1000 -> NaN -dqrmn728 remaindernear NaN Inf -> NaN -dqrmn729 remaindernear NaN -NaN -> NaN -dqrmn730 remaindernear -Inf NaN -> NaN -dqrmn731 remaindernear -1000 NaN -> NaN -dqrmn732 remaindernear -1 NaN -> NaN -dqrmn733 remaindernear -0 -NaN -> -NaN -dqrmn734 remaindernear 0 NaN -> NaN -dqrmn735 remaindernear 1 -NaN -> -NaN -dqrmn736 remaindernear 1000 NaN -> NaN -dqrmn737 remaindernear Inf NaN -> NaN - -dqrmn741 remaindernear sNaN -Inf -> NaN Invalid_operation -dqrmn742 remaindernear sNaN -1000 -> NaN Invalid_operation -dqrmn743 remaindernear -sNaN -1 -> -NaN Invalid_operation -dqrmn744 remaindernear sNaN -0 -> NaN Invalid_operation -dqrmn745 remaindernear sNaN 0 -> NaN Invalid_operation -dqrmn746 remaindernear sNaN 1 -> NaN Invalid_operation -dqrmn747 remaindernear sNaN 1000 -> NaN Invalid_operation -dqrmn749 remaindernear sNaN NaN -> NaN Invalid_operation -dqrmn750 remaindernear sNaN sNaN -> NaN Invalid_operation -dqrmn751 remaindernear NaN sNaN -> NaN Invalid_operation -dqrmn752 remaindernear -Inf sNaN -> NaN Invalid_operation -dqrmn753 remaindernear -1000 sNaN -> NaN Invalid_operation -dqrmn754 remaindernear -1 sNaN -> NaN Invalid_operation -dqrmn755 remaindernear -0 sNaN -> NaN Invalid_operation -dqrmn756 remaindernear 0 sNaN -> NaN Invalid_operation -dqrmn757 remaindernear 1 sNaN -> NaN Invalid_operation -dqrmn758 remaindernear 1000 sNaN -> NaN Invalid_operation -dqrmn759 remaindernear Inf -sNaN -> -NaN Invalid_operation - --- propaging NaNs -dqrmn760 remaindernear NaN1 NaN7 -> NaN1 -dqrmn761 remaindernear sNaN2 NaN8 -> NaN2 Invalid_operation -dqrmn762 remaindernear NaN3 sNaN9 -> NaN9 Invalid_operation -dqrmn763 remaindernear sNaN4 sNaN10 -> NaN4 Invalid_operation -dqrmn764 remaindernear 15 NaN11 -> NaN11 -dqrmn765 remaindernear NaN6 NaN12 -> NaN6 -dqrmn766 remaindernear Inf NaN13 -> NaN13 -dqrmn767 remaindernear NaN14 -Inf -> NaN14 -dqrmn768 remaindernear 0 NaN15 -> NaN15 -dqrmn769 remaindernear NaN16 -0 -> NaN16 - --- edge cases of impossible -dqrmn770 remaindernear 1234500000000000000000067890123456 10 -> -4 -dqrmn771 remaindernear 1234500000000000000000067890123456 1 -> 0 -dqrmn772 remaindernear 1234500000000000000000067890123456 0.1 -> NaN Division_impossible -dqrmn773 remaindernear 1234500000000000000000067890123456 0.01 -> NaN Division_impossible - --- long operand checks -dqrmn801 remaindernear 12345678000 100 -> 0 -dqrmn802 remaindernear 1 12345678000 -> 1 -dqrmn803 remaindernear 1234567800 10 -> 0 -dqrmn804 remaindernear 1 1234567800 -> 1 -dqrmn805 remaindernear 1234567890 10 -> 0 -dqrmn806 remaindernear 1 1234567890 -> 1 -dqrmn807 remaindernear 1234567891 10 -> 1 -dqrmn808 remaindernear 1 1234567891 -> 1 -dqrmn809 remaindernear 12345678901 100 -> 1 -dqrmn810 remaindernear 1 12345678901 -> 1 -dqrmn811 remaindernear 1234567896 10 -> -4 -dqrmn812 remaindernear 1 1234567896 -> 1 - -dqrmn821 remaindernear 12345678000 100 -> 0 -dqrmn822 remaindernear 1 12345678000 -> 1 -dqrmn823 remaindernear 1234567800 10 -> 0 -dqrmn824 remaindernear 1 1234567800 -> 1 -dqrmn825 remaindernear 1234567890 10 -> 0 -dqrmn826 remaindernear 1 1234567890 -> 1 -dqrmn827 remaindernear 1234567891 10 -> 1 -dqrmn828 remaindernear 1 1234567891 -> 1 -dqrmn829 remaindernear 12345678901 100 -> 1 -dqrmn830 remaindernear 1 12345678901 -> 1 -dqrmn831 remaindernear 1234567896 10 -> -4 -dqrmn832 remaindernear 1 1234567896 -> 1 - --- from divideint -dqrmn840 remaindernear 100000000.0 1 -> 0.0 -dqrmn841 remaindernear 100000000.4 1 -> 0.4 -dqrmn842 remaindernear 100000000.5 1 -> 0.5 -dqrmn843 remaindernear 100000000.9 1 -> -0.1 -dqrmn844 remaindernear 100000000.999 1 -> -0.001 -dqrmn850 remaindernear 100000003 5 -> -2 -dqrmn851 remaindernear 10000003 5 -> -2 -dqrmn852 remaindernear 1000003 5 -> -2 -dqrmn853 remaindernear 100003 5 -> -2 -dqrmn854 remaindernear 10003 5 -> -2 -dqrmn855 remaindernear 1003 5 -> -2 -dqrmn856 remaindernear 103 5 -> -2 -dqrmn857 remaindernear 13 5 -> -2 -dqrmn858 remaindernear 1 5 -> 1 - --- Vladimir's cases 1234567890123456 -dqrmn860 remaindernear 123.0e1 1000000000000000 -> 1230 -dqrmn861 remaindernear 1230 1000000000000000 -> 1230 -dqrmn862 remaindernear 12.3e2 1000000000000000 -> 1230 -dqrmn863 remaindernear 1.23e3 1000000000000000 -> 1230 -dqrmn864 remaindernear 123e1 1000000000000000 -> 1230 -dqrmn870 remaindernear 123e1 1000000000000000 -> 1230 -dqrmn871 remaindernear 123e1 100000000000000 -> 1230 -dqrmn872 remaindernear 123e1 10000000000000 -> 1230 -dqrmn873 remaindernear 123e1 1000000000000 -> 1230 -dqrmn874 remaindernear 123e1 100000000000 -> 1230 -dqrmn875 remaindernear 123e1 10000000000 -> 1230 -dqrmn876 remaindernear 123e1 1000000000 -> 1230 -dqrmn877 remaindernear 123e1 100000000 -> 1230 -dqrmn878 remaindernear 1230 100000000 -> 1230 -dqrmn879 remaindernear 123e1 10000000 -> 1230 -dqrmn880 remaindernear 123e1 1000000 -> 1230 -dqrmn881 remaindernear 123e1 100000 -> 1230 -dqrmn882 remaindernear 123e1 10000 -> 1230 -dqrmn883 remaindernear 123e1 1000 -> 230 -dqrmn884 remaindernear 123e1 100 -> 30 -dqrmn885 remaindernear 123e1 10 -> 0 -dqrmn886 remaindernear 123e1 1 -> 0 - -dqrmn890 remaindernear 123e1 2000000000000000 -> 1230 -dqrmn891 remaindernear 123e1 200000000000000 -> 1230 -dqrmn892 remaindernear 123e1 20000000000000 -> 1230 -dqrmn893 remaindernear 123e1 2000000000000 -> 1230 -dqrmn894 remaindernear 123e1 200000000000 -> 1230 -dqrmn895 remaindernear 123e1 20000000000 -> 1230 -dqrmn896 remaindernear 123e1 2000000000 -> 1230 -dqrmn897 remaindernear 123e1 200000000 -> 1230 -dqrmn899 remaindernear 123e1 20000000 -> 1230 -dqrmn900 remaindernear 123e1 2000000 -> 1230 -dqrmn901 remaindernear 123e1 200000 -> 1230 -dqrmn902 remaindernear 123e1 20000 -> 1230 -dqrmn903 remaindernear 123e1 2000 -> -770 -dqrmn904 remaindernear 123e1 200 -> 30 -dqrmn905 remaindernear 123e1 20 -> -10 -dqrmn906 remaindernear 123e1 2 -> 0 - -dqrmn910 remaindernear 123e1 5000000000000000 -> 1230 -dqrmn911 remaindernear 123e1 500000000000000 -> 1230 -dqrmn912 remaindernear 123e1 50000000000000 -> 1230 -dqrmn913 remaindernear 123e1 5000000000000 -> 1230 -dqrmn914 remaindernear 123e1 500000000000 -> 1230 -dqrmn915 remaindernear 123e1 50000000000 -> 1230 -dqrmn916 remaindernear 123e1 5000000000 -> 1230 -dqrmn917 remaindernear 123e1 500000000 -> 1230 -dqrmn919 remaindernear 123e1 50000000 -> 1230 -dqrmn920 remaindernear 123e1 5000000 -> 1230 -dqrmn921 remaindernear 123e1 500000 -> 1230 -dqrmn922 remaindernear 123e1 50000 -> 1230 -dqrmn923 remaindernear 123e1 5000 -> 1230 -dqrmn924 remaindernear 123e1 500 -> 230 -dqrmn925 remaindernear 123e1 50 -> -20 -dqrmn926 remaindernear 123e1 5 -> 0 - -dqrmn930 remaindernear 123e1 9000000000000000 -> 1230 -dqrmn931 remaindernear 123e1 900000000000000 -> 1230 -dqrmn932 remaindernear 123e1 90000000000000 -> 1230 -dqrmn933 remaindernear 123e1 9000000000000 -> 1230 -dqrmn934 remaindernear 123e1 900000000000 -> 1230 -dqrmn935 remaindernear 123e1 90000000000 -> 1230 -dqrmn936 remaindernear 123e1 9000000000 -> 1230 -dqrmn937 remaindernear 123e1 900000000 -> 1230 -dqrmn939 remaindernear 123e1 90000000 -> 1230 -dqrmn940 remaindernear 123e1 9000000 -> 1230 -dqrmn941 remaindernear 123e1 900000 -> 1230 -dqrmn942 remaindernear 123e1 90000 -> 1230 -dqrmn943 remaindernear 123e1 9000 -> 1230 -dqrmn944 remaindernear 123e1 900 -> 330 -dqrmn945 remaindernear 123e1 90 -> -30 -dqrmn946 remaindernear 123e1 9 -> -3 - -dqrmn950 remaindernear 123e1 1000000000000000 -> 1230 -dqrmn961 remaindernear 123e1 2999999999999999 -> 1230 -dqrmn962 remaindernear 123e1 3999999999999999 -> 1230 -dqrmn963 remaindernear 123e1 4999999999999999 -> 1230 -dqrmn964 remaindernear 123e1 5999999999999999 -> 1230 -dqrmn965 remaindernear 123e1 6999999999999999 -> 1230 -dqrmn966 remaindernear 123e1 7999999999999999 -> 1230 -dqrmn967 remaindernear 123e1 8999999999999999 -> 1230 -dqrmn968 remaindernear 123e1 9999999999999999 -> 1230 -dqrmn969 remaindernear 123e1 9876543210987654 -> 1230 - -dqrmn980 remaindernear 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally - --- overflow and underflow tests [from divide] -dqrmn1051 remaindernear 1e+277 1e-311 -> NaN Division_impossible -dqrmn1052 remaindernear 1e+277 -1e-311 -> NaN Division_impossible -dqrmn1053 remaindernear -1e+277 1e-311 -> NaN Division_impossible -dqrmn1054 remaindernear -1e+277 -1e-311 -> NaN Division_impossible -dqrmn1055 remaindernear 1e-277 1e+311 -> 1E-277 -dqrmn1056 remaindernear 1e-277 -1e+311 -> 1E-277 -dqrmn1057 remaindernear -1e-277 1e+311 -> -1E-277 -dqrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277 - --- Gyuris example -dqrmn1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143 - --- destructive subtract -dqrmn1101 remaindernear 1234567890123456789012345678901234 1.000000000000000000000000000000001 -> -0.234567890123456789012345678901233 -dqrmn1102 remaindernear 1234567890123456789012345678901234 1.00000000000000000000000000000001 -> -0.34567890123456789012345678901222 -dqrmn1103 remaindernear 1234567890123456789012345678901234 1.0000000000000000000000000000001 -> -0.4567890123456789012345678901111 -dqrmn1104 remaindernear 1234567890123456789012345678901255 4.000000000000000000000000000000001 -> -1.308641972530864197253086419725314 -dqrmn1105 remaindernear 1234567890123456789012345678901234 4.000000000000000000000000000000001 -> 1.691358027469135802746913580274692 -dqrmn1106 remaindernear 1234567890123456789012345678901234 4.9999999999999999999999999999999 -> -1.3086421975308642197530864219748 -dqrmn1107 remaindernear 1234567890123456789012345678901234 4.99999999999999999999999999999999 -> 1.46913578024691357802469135780247 -dqrmn1108 remaindernear 1234567890123456789012345678901234 4.999999999999999999999999999999999 -> -0.753086421975308642197530864219753 -dqrmn1109 remaindernear 1234567890123456789012345678901234 5.000000000000000000000000000000001 -> -1.246913578024691357802469135780247 -dqrmn1110 remaindernear 1234567890123456789012345678901234 5.00000000000000000000000000000001 -> 1.53086421975308642197530864219754 -dqrmn1111 remaindernear 1234567890123456789012345678901234 5.0000000000000000000000000000001 -> -0.6913578024691357802469135780242 - --- Null tests -dqrmn1000 remaindernear 10 # -> NaN Invalid_operation -dqrmn1001 remaindernear # 10 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- dqRemainderNear.decTest -- decQuad remainder-near -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- sanity checks (as base, above) +dqrmn001 remaindernear 1 1 -> 0 +dqrmn002 remaindernear 2 1 -> 0 +dqrmn003 remaindernear 1 2 -> 1 +dqrmn004 remaindernear 2 2 -> 0 +dqrmn005 remaindernear 0 1 -> 0 +dqrmn006 remaindernear 0 2 -> 0 +dqrmn007 remaindernear 1 3 -> 1 +dqrmn008 remaindernear 2 3 -> -1 +dqrmn009 remaindernear 3 3 -> 0 + +dqrmn010 remaindernear 2.4 1 -> 0.4 +dqrmn011 remaindernear 2.4 -1 -> 0.4 +dqrmn012 remaindernear -2.4 1 -> -0.4 +dqrmn013 remaindernear -2.4 -1 -> -0.4 +dqrmn014 remaindernear 2.40 1 -> 0.40 +dqrmn015 remaindernear 2.400 1 -> 0.400 +dqrmn016 remaindernear 2.4 2 -> 0.4 +dqrmn017 remaindernear 2.400 2 -> 0.400 +dqrmn018 remaindernear 2. 2 -> 0 +dqrmn019 remaindernear 20 20 -> 0 + +dqrmn020 remaindernear 187 187 -> 0 +dqrmn021 remaindernear 5 2 -> 1 +dqrmn022 remaindernear 5 2.0 -> 1.0 +dqrmn023 remaindernear 5 2.000 -> 1.000 +dqrmn024 remaindernear 5 0.200 -> 0.000 +dqrmn025 remaindernear 5 0.200 -> 0.000 + +dqrmn030 remaindernear 1 2 -> 1 +dqrmn031 remaindernear 1 4 -> 1 +dqrmn032 remaindernear 1 8 -> 1 + +dqrmn033 remaindernear 1 16 -> 1 +dqrmn034 remaindernear 1 32 -> 1 +dqrmn035 remaindernear 1 64 -> 1 +dqrmn040 remaindernear 1 -2 -> 1 +dqrmn041 remaindernear 1 -4 -> 1 +dqrmn042 remaindernear 1 -8 -> 1 +dqrmn043 remaindernear 1 -16 -> 1 +dqrmn044 remaindernear 1 -32 -> 1 +dqrmn045 remaindernear 1 -64 -> 1 +dqrmn050 remaindernear -1 2 -> -1 +dqrmn051 remaindernear -1 4 -> -1 +dqrmn052 remaindernear -1 8 -> -1 +dqrmn053 remaindernear -1 16 -> -1 +dqrmn054 remaindernear -1 32 -> -1 +dqrmn055 remaindernear -1 64 -> -1 +dqrmn060 remaindernear -1 -2 -> -1 +dqrmn061 remaindernear -1 -4 -> -1 +dqrmn062 remaindernear -1 -8 -> -1 +dqrmn063 remaindernear -1 -16 -> -1 +dqrmn064 remaindernear -1 -32 -> -1 +dqrmn065 remaindernear -1 -64 -> -1 + +dqrmn066 remaindernear 9.9 1 -> -0.1 +dqrmn067 remaindernear 99.7 1 -> -0.3 +dqrmn068 remaindernear 999999999 1 -> 0 +dqrmn069 remaindernear 999999999.4 1 -> 0.4 +dqrmn070 remaindernear 999999999.5 1 -> -0.5 +dqrmn071 remaindernear 999999999.9 1 -> -0.1 +dqrmn072 remaindernear 999999999.999 1 -> -0.001 +dqrmn073 remaindernear 999999.999999 1 -> -0.000001 +dqrmn074 remaindernear 9 1 -> 0 +dqrmn075 remaindernear 9999999999999999 1 -> 0 +dqrmn076 remaindernear 9999999999999999 2 -> -1 +dqrmn077 remaindernear 9999999999999999 3 -> 0 +dqrmn078 remaindernear 9999999999999999 4 -> -1 + +dqrmn080 remaindernear 0. 1 -> 0 +dqrmn081 remaindernear .0 1 -> 0.0 +dqrmn082 remaindernear 0.00 1 -> 0.00 +dqrmn083 remaindernear 0.00E+9 1 -> 0 +dqrmn084 remaindernear 0.00E+3 1 -> 0 +dqrmn085 remaindernear 0.00E+2 1 -> 0 +dqrmn086 remaindernear 0.00E+1 1 -> 0.0 +dqrmn087 remaindernear 0.00E+0 1 -> 0.00 +dqrmn088 remaindernear 0.00E-0 1 -> 0.00 +dqrmn089 remaindernear 0.00E-1 1 -> 0.000 +dqrmn090 remaindernear 0.00E-2 1 -> 0.0000 +dqrmn091 remaindernear 0.00E-3 1 -> 0.00000 +dqrmn092 remaindernear 0.00E-4 1 -> 0.000000 +dqrmn093 remaindernear 0.00E-5 1 -> 0E-7 +dqrmn094 remaindernear 0.00E-6 1 -> 0E-8 +dqrmn095 remaindernear 0.0000E-50 1 -> 0E-54 + +-- Various flavours of remaindernear by 0 +dqrmn101 remaindernear 0 0 -> NaN Division_undefined +dqrmn102 remaindernear 0 -0 -> NaN Division_undefined +dqrmn103 remaindernear -0 0 -> NaN Division_undefined +dqrmn104 remaindernear -0 -0 -> NaN Division_undefined +dqrmn105 remaindernear 0.0E5 0 -> NaN Division_undefined +dqrmn106 remaindernear 0.000 0 -> NaN Division_undefined +-- [Some think this next group should be Division_by_zero exception, but +-- IEEE 854 is explicit that it is Invalid operation .. for +-- remainder-near, anyway] +dqrmn107 remaindernear 0.0001 0 -> NaN Invalid_operation +dqrmn108 remaindernear 0.01 0 -> NaN Invalid_operation +dqrmn109 remaindernear 0.1 0 -> NaN Invalid_operation +dqrmn110 remaindernear 1 0 -> NaN Invalid_operation +dqrmn111 remaindernear 1 0.0 -> NaN Invalid_operation +dqrmn112 remaindernear 10 0.0 -> NaN Invalid_operation +dqrmn113 remaindernear 1E+100 0.0 -> NaN Invalid_operation +dqrmn114 remaindernear 1E+380 0 -> NaN Invalid_operation +dqrmn115 remaindernear 0.0001 -0 -> NaN Invalid_operation +dqrmn116 remaindernear 0.01 -0 -> NaN Invalid_operation +dqrmn119 remaindernear 0.1 -0 -> NaN Invalid_operation +dqrmn120 remaindernear 1 -0 -> NaN Invalid_operation +dqrmn121 remaindernear 1 -0.0 -> NaN Invalid_operation +dqrmn122 remaindernear 10 -0.0 -> NaN Invalid_operation +dqrmn123 remaindernear 1E+100 -0.0 -> NaN Invalid_operation +dqrmn124 remaindernear 1E+384 -0 -> NaN Invalid_operation +-- and zeros on left +dqrmn130 remaindernear 0 1 -> 0 +dqrmn131 remaindernear 0 -1 -> 0 +dqrmn132 remaindernear 0.0 1 -> 0.0 +dqrmn133 remaindernear 0.0 -1 -> 0.0 +dqrmn134 remaindernear -0 1 -> -0 +dqrmn135 remaindernear -0 -1 -> -0 +dqrmn136 remaindernear -0.0 1 -> -0.0 +dqrmn137 remaindernear -0.0 -1 -> -0.0 + +-- 0.5ers +dqrmn143 remaindernear 0.5 2 -> 0.5 +dqrmn144 remaindernear 0.5 2.1 -> 0.5 +dqrmn145 remaindernear 0.5 2.01 -> 0.50 +dqrmn146 remaindernear 0.5 2.001 -> 0.500 +dqrmn147 remaindernear 0.50 2 -> 0.50 +dqrmn148 remaindernear 0.50 2.01 -> 0.50 +dqrmn149 remaindernear 0.50 2.001 -> 0.500 + +-- steadies +dqrmn150 remaindernear 1 1 -> 0 +dqrmn151 remaindernear 1 2 -> 1 +dqrmn152 remaindernear 1 3 -> 1 +dqrmn153 remaindernear 1 4 -> 1 +dqrmn154 remaindernear 1 5 -> 1 +dqrmn155 remaindernear 1 6 -> 1 +dqrmn156 remaindernear 1 7 -> 1 +dqrmn157 remaindernear 1 8 -> 1 +dqrmn158 remaindernear 1 9 -> 1 +dqrmn159 remaindernear 1 10 -> 1 +dqrmn160 remaindernear 1 1 -> 0 +dqrmn161 remaindernear 2 1 -> 0 +dqrmn162 remaindernear 3 1 -> 0 +dqrmn163 remaindernear 4 1 -> 0 +dqrmn164 remaindernear 5 1 -> 0 +dqrmn165 remaindernear 6 1 -> 0 +dqrmn166 remaindernear 7 1 -> 0 +dqrmn167 remaindernear 8 1 -> 0 +dqrmn168 remaindernear 9 1 -> 0 +dqrmn169 remaindernear 10 1 -> 0 + +-- some differences from remainder +dqrmn171 remaindernear 0.4 1.020 -> 0.400 +dqrmn172 remaindernear 0.50 1.020 -> 0.500 +dqrmn173 remaindernear 0.51 1.020 -> 0.510 +dqrmn174 remaindernear 0.52 1.020 -> -0.500 +dqrmn175 remaindernear 0.6 1.020 -> -0.420 + +-- More flavours of remaindernear by 0 +dqrmn201 remaindernear 0 0 -> NaN Division_undefined +dqrmn202 remaindernear 0.0E5 0 -> NaN Division_undefined +dqrmn203 remaindernear 0.000 0 -> NaN Division_undefined +dqrmn204 remaindernear 0.0001 0 -> NaN Invalid_operation +dqrmn205 remaindernear 0.01 0 -> NaN Invalid_operation +dqrmn206 remaindernear 0.1 0 -> NaN Invalid_operation +dqrmn207 remaindernear 1 0 -> NaN Invalid_operation +dqrmn208 remaindernear 1 0.0 -> NaN Invalid_operation +dqrmn209 remaindernear 10 0.0 -> NaN Invalid_operation +dqrmn210 remaindernear 1E+100 0.0 -> NaN Invalid_operation +dqrmn211 remaindernear 1E+380 0 -> NaN Invalid_operation + +-- tests from the extended specification +dqrmn221 remaindernear 2.1 3 -> -0.9 +dqrmn222 remaindernear 10 6 -> -2 +dqrmn223 remaindernear 10 3 -> 1 +dqrmn224 remaindernear -10 3 -> -1 +dqrmn225 remaindernear 10.2 1 -> 0.2 +dqrmn226 remaindernear 10 0.3 -> 0.1 +dqrmn227 remaindernear 3.6 1.3 -> -0.3 + +-- some differences from remainder +dqrmn231 remaindernear -0.4 1.020 -> -0.400 +dqrmn232 remaindernear -0.50 1.020 -> -0.500 +dqrmn233 remaindernear -0.51 1.020 -> -0.510 +dqrmn234 remaindernear -0.52 1.020 -> 0.500 +dqrmn235 remaindernear -0.6 1.020 -> 0.420 + +-- high Xs +dqrmn240 remaindernear 1E+2 1.00 -> 0.00 + +-- dqrmn3xx are from DiagBigDecimal +dqrmn301 remaindernear 1 3 -> 1 +dqrmn302 remaindernear 5 5 -> 0 +dqrmn303 remaindernear 13 10 -> 3 +dqrmn304 remaindernear 13 50 -> 13 +dqrmn305 remaindernear 13 100 -> 13 +dqrmn306 remaindernear 13 1000 -> 13 +dqrmn307 remaindernear .13 1 -> 0.13 +dqrmn308 remaindernear 0.133 1 -> 0.133 +dqrmn309 remaindernear 0.1033 1 -> 0.1033 +dqrmn310 remaindernear 1.033 1 -> 0.033 +dqrmn311 remaindernear 10.33 1 -> 0.33 +dqrmn312 remaindernear 10.33 10 -> 0.33 +dqrmn313 remaindernear 103.3 1 -> 0.3 +dqrmn314 remaindernear 133 10 -> 3 +dqrmn315 remaindernear 1033 10 -> 3 +dqrmn316 remaindernear 1033 50 -> -17 +dqrmn317 remaindernear 101.0 3 -> -1.0 +dqrmn318 remaindernear 102.0 3 -> 0.0 +dqrmn319 remaindernear 103.0 3 -> 1.0 +dqrmn320 remaindernear 2.40 1 -> 0.40 +dqrmn321 remaindernear 2.400 1 -> 0.400 +dqrmn322 remaindernear 2.4 1 -> 0.4 +dqrmn323 remaindernear 2.4 2 -> 0.4 +dqrmn324 remaindernear 2.400 2 -> 0.400 +dqrmn325 remaindernear 1 0.3 -> 0.1 +dqrmn326 remaindernear 1 0.30 -> 0.10 +dqrmn327 remaindernear 1 0.300 -> 0.100 +dqrmn328 remaindernear 1 0.3000 -> 0.1000 +dqrmn329 remaindernear 1.0 0.3 -> 0.1 +dqrmn330 remaindernear 1.00 0.3 -> 0.10 +dqrmn331 remaindernear 1.000 0.3 -> 0.100 +dqrmn332 remaindernear 1.0000 0.3 -> 0.1000 +dqrmn333 remaindernear 0.5 2 -> 0.5 +dqrmn334 remaindernear 0.5 2.1 -> 0.5 +dqrmn335 remaindernear 0.5 2.01 -> 0.50 +dqrmn336 remaindernear 0.5 2.001 -> 0.500 +dqrmn337 remaindernear 0.50 2 -> 0.50 +dqrmn338 remaindernear 0.50 2.01 -> 0.50 +dqrmn339 remaindernear 0.50 2.001 -> 0.500 + +dqrmn340 remaindernear 0.5 0.5000001 -> -1E-7 +dqrmn341 remaindernear 0.5 0.50000001 -> -1E-8 +dqrmn342 remaindernear 0.5 0.500000001 -> -1E-9 +dqrmn343 remaindernear 0.5 0.5000000001 -> -1E-10 +dqrmn344 remaindernear 0.5 0.50000000001 -> -1E-11 +dqrmn345 remaindernear 0.5 0.4999999 -> 1E-7 +dqrmn346 remaindernear 0.5 0.49999999 -> 1E-8 +dqrmn347 remaindernear 0.5 0.499999999 -> 1E-9 +dqrmn348 remaindernear 0.5 0.4999999999 -> 1E-10 +dqrmn349 remaindernear 0.5 0.49999999999 -> 1E-11 +dqrmn350 remaindernear 0.5 0.499999999999 -> 1E-12 + +dqrmn351 remaindernear 0.03 7 -> 0.03 +dqrmn352 remaindernear 5 2 -> 1 +dqrmn353 remaindernear 4.1 2 -> 0.1 +dqrmn354 remaindernear 4.01 2 -> 0.01 +dqrmn355 remaindernear 4.001 2 -> 0.001 +dqrmn356 remaindernear 4.0001 2 -> 0.0001 +dqrmn357 remaindernear 4.00001 2 -> 0.00001 +dqrmn358 remaindernear 4.000001 2 -> 0.000001 +dqrmn359 remaindernear 4.0000001 2 -> 1E-7 + +dqrmn360 remaindernear 1.2 0.7345 -> -0.2690 +dqrmn361 remaindernear 0.8 12 -> 0.8 +dqrmn362 remaindernear 0.8 0.2 -> 0.0 +dqrmn363 remaindernear 0.8 0.3 -> -0.1 +dqrmn364 remaindernear 0.800 12 -> 0.800 +dqrmn365 remaindernear 0.800 1.7 -> 0.800 +dqrmn366 remaindernear 2.400 2 -> 0.400 + +-- round to even +dqrmn371 remaindernear 121 2 -> 1 +dqrmn372 remaindernear 122 2 -> 0 +dqrmn373 remaindernear 123 2 -> -1 +dqrmn374 remaindernear 124 2 -> 0 +dqrmn375 remaindernear 125 2 -> 1 +dqrmn376 remaindernear 126 2 -> 0 +dqrmn377 remaindernear 127 2 -> -1 + +dqrmn381 remaindernear 12345 1 -> 0 +dqrmn382 remaindernear 12345 1.0001 -> -0.2344 +dqrmn383 remaindernear 12345 1.001 -> -0.333 +dqrmn384 remaindernear 12345 1.01 -> -0.23 +dqrmn385 remaindernear 12345 1.1 -> -0.3 +dqrmn386 remaindernear 12355 4 -> -1 +dqrmn387 remaindernear 12345 4 -> 1 +dqrmn388 remaindernear 12355 4.0001 -> -1.3089 +dqrmn389 remaindernear 12345 4.0001 -> 0.6914 +dqrmn390 remaindernear 12345 4.9 -> 1.9 +dqrmn391 remaindernear 12345 4.99 -> -0.26 +dqrmn392 remaindernear 12345 4.999 -> 2.469 +dqrmn393 remaindernear 12345 4.9999 -> 0.2469 +dqrmn394 remaindernear 12345 5 -> 0 +dqrmn395 remaindernear 12345 5.0001 -> -0.2469 +dqrmn396 remaindernear 12345 5.001 -> -2.469 +dqrmn397 remaindernear 12345 5.01 -> 0.36 +dqrmn398 remaindernear 12345 5.1 -> -2.1 + +-- the nasty division-by-1 cases +dqrmn401 remaindernear 0.4 1 -> 0.4 +dqrmn402 remaindernear 0.45 1 -> 0.45 +dqrmn403 remaindernear 0.455 1 -> 0.455 +dqrmn404 remaindernear 0.4555 1 -> 0.4555 +dqrmn405 remaindernear 0.45555 1 -> 0.45555 +dqrmn406 remaindernear 0.455555 1 -> 0.455555 +dqrmn407 remaindernear 0.4555555 1 -> 0.4555555 +dqrmn408 remaindernear 0.45555555 1 -> 0.45555555 +dqrmn409 remaindernear 0.455555555 1 -> 0.455555555 +-- with spill... [412 exercises sticktab loop] +dqrmn411 remaindernear 0.5 1 -> 0.5 +dqrmn412 remaindernear 0.55 1 -> -0.45 +dqrmn413 remaindernear 0.555 1 -> -0.445 +dqrmn414 remaindernear 0.5555 1 -> -0.4445 +dqrmn415 remaindernear 0.55555 1 -> -0.44445 +dqrmn416 remaindernear 0.555555 1 -> -0.444445 +dqrmn417 remaindernear 0.5555555 1 -> -0.4444445 +dqrmn418 remaindernear 0.55555555 1 -> -0.44444445 +dqrmn419 remaindernear 0.555555555 1 -> -0.444444445 + +-- folddowns +dqrmn421 remaindernear 1E+6144 1 -> NaN Division_impossible +dqrmn422 remaindernear 1E+6144 1E+6143 -> 0E+6111 Clamped +dqrmn423 remaindernear 1E+6144 2E+6143 -> 0E+6111 Clamped +dqrmn424 remaindernear 1E+6144 3E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped +dqrmn425 remaindernear 1E+6144 4E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped +dqrmn426 remaindernear 1E+6144 5E+6143 -> 0E+6111 Clamped +dqrmn427 remaindernear 1E+6144 6E+6143 -> -2.00000000000000000000000000000000E+6143 Clamped +dqrmn428 remaindernear 1E+6144 7E+6143 -> 3.00000000000000000000000000000000E+6143 Clamped +dqrmn429 remaindernear 1E+6144 8E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped +dqrmn430 remaindernear 1E+6144 9E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped +-- tinies +dqrmn431 remaindernear 1E-6175 1E-6176 -> 0E-6176 +dqrmn432 remaindernear 1E-6175 2E-6176 -> 0E-6176 +dqrmn433 remaindernear 1E-6175 3E-6176 -> 1E-6176 Subnormal +dqrmn434 remaindernear 1E-6175 4E-6176 -> 2E-6176 Subnormal +dqrmn435 remaindernear 1E-6175 5E-6176 -> 0E-6176 +dqrmn436 remaindernear 1E-6175 6E-6176 -> -2E-6176 Subnormal +dqrmn437 remaindernear 1E-6175 7E-6176 -> 3E-6176 Subnormal +dqrmn438 remaindernear 1E-6175 8E-6176 -> 2E-6176 Subnormal +dqrmn439 remaindernear 1E-6175 9E-6176 -> 1E-6176 Subnormal +dqrmn440 remaindernear 1E-6175 10E-6176 -> 0E-6176 +dqrmn441 remaindernear 1E-6175 11E-6176 -> -1E-6176 Subnormal +dqrmn442 remaindernear 100E-6175 11E-6176 -> -1E-6176 Subnormal +dqrmn443 remaindernear 100E-6175 20E-6176 -> 0E-6176 +dqrmn444 remaindernear 100E-6175 21E-6176 -> -8E-6176 Subnormal +dqrmn445 remaindernear 100E-6175 30E-6176 -> 1.0E-6175 Subnormal + +-- zero signs +dqrmn650 remaindernear 1 1 -> 0 +dqrmn651 remaindernear -1 1 -> -0 +dqrmn652 remaindernear 1 -1 -> 0 +dqrmn653 remaindernear -1 -1 -> -0 +dqrmn654 remaindernear 0 1 -> 0 +dqrmn655 remaindernear -0 1 -> -0 +dqrmn656 remaindernear 0 -1 -> 0 +dqrmn657 remaindernear -0 -1 -> -0 +dqrmn658 remaindernear 0.00 1 -> 0.00 +dqrmn659 remaindernear -0.00 1 -> -0.00 + +-- Specials +dqrmn680 remaindernear Inf -Inf -> NaN Invalid_operation +dqrmn681 remaindernear Inf -1000 -> NaN Invalid_operation +dqrmn682 remaindernear Inf -1 -> NaN Invalid_operation +dqrmn683 remaindernear Inf 0 -> NaN Invalid_operation +dqrmn684 remaindernear Inf -0 -> NaN Invalid_operation +dqrmn685 remaindernear Inf 1 -> NaN Invalid_operation +dqrmn686 remaindernear Inf 1000 -> NaN Invalid_operation +dqrmn687 remaindernear Inf Inf -> NaN Invalid_operation +dqrmn688 remaindernear -1000 Inf -> -1000 +dqrmn689 remaindernear -Inf Inf -> NaN Invalid_operation +dqrmn691 remaindernear -1 Inf -> -1 +dqrmn692 remaindernear 0 Inf -> 0 +dqrmn693 remaindernear -0 Inf -> -0 +dqrmn694 remaindernear 1 Inf -> 1 +dqrmn695 remaindernear 1000 Inf -> 1000 +dqrmn696 remaindernear Inf Inf -> NaN Invalid_operation + +dqrmn700 remaindernear -Inf -Inf -> NaN Invalid_operation +dqrmn701 remaindernear -Inf -1000 -> NaN Invalid_operation +dqrmn702 remaindernear -Inf -1 -> NaN Invalid_operation +dqrmn703 remaindernear -Inf -0 -> NaN Invalid_operation +dqrmn704 remaindernear -Inf 0 -> NaN Invalid_operation +dqrmn705 remaindernear -Inf 1 -> NaN Invalid_operation +dqrmn706 remaindernear -Inf 1000 -> NaN Invalid_operation +dqrmn707 remaindernear -Inf Inf -> NaN Invalid_operation +dqrmn708 remaindernear -Inf -Inf -> NaN Invalid_operation +dqrmn709 remaindernear -1000 Inf -> -1000 +dqrmn710 remaindernear -1 -Inf -> -1 +dqrmn711 remaindernear -0 -Inf -> -0 +dqrmn712 remaindernear 0 -Inf -> 0 +dqrmn713 remaindernear 1 -Inf -> 1 +dqrmn714 remaindernear 1000 -Inf -> 1000 +dqrmn715 remaindernear Inf -Inf -> NaN Invalid_operation + +dqrmn721 remaindernear NaN -Inf -> NaN +dqrmn722 remaindernear NaN -1000 -> NaN +dqrmn723 remaindernear NaN -1 -> NaN +dqrmn724 remaindernear NaN -0 -> NaN +dqrmn725 remaindernear -NaN 0 -> -NaN +dqrmn726 remaindernear NaN 1 -> NaN +dqrmn727 remaindernear NaN 1000 -> NaN +dqrmn728 remaindernear NaN Inf -> NaN +dqrmn729 remaindernear NaN -NaN -> NaN +dqrmn730 remaindernear -Inf NaN -> NaN +dqrmn731 remaindernear -1000 NaN -> NaN +dqrmn732 remaindernear -1 NaN -> NaN +dqrmn733 remaindernear -0 -NaN -> -NaN +dqrmn734 remaindernear 0 NaN -> NaN +dqrmn735 remaindernear 1 -NaN -> -NaN +dqrmn736 remaindernear 1000 NaN -> NaN +dqrmn737 remaindernear Inf NaN -> NaN + +dqrmn741 remaindernear sNaN -Inf -> NaN Invalid_operation +dqrmn742 remaindernear sNaN -1000 -> NaN Invalid_operation +dqrmn743 remaindernear -sNaN -1 -> -NaN Invalid_operation +dqrmn744 remaindernear sNaN -0 -> NaN Invalid_operation +dqrmn745 remaindernear sNaN 0 -> NaN Invalid_operation +dqrmn746 remaindernear sNaN 1 -> NaN Invalid_operation +dqrmn747 remaindernear sNaN 1000 -> NaN Invalid_operation +dqrmn749 remaindernear sNaN NaN -> NaN Invalid_operation +dqrmn750 remaindernear sNaN sNaN -> NaN Invalid_operation +dqrmn751 remaindernear NaN sNaN -> NaN Invalid_operation +dqrmn752 remaindernear -Inf sNaN -> NaN Invalid_operation +dqrmn753 remaindernear -1000 sNaN -> NaN Invalid_operation +dqrmn754 remaindernear -1 sNaN -> NaN Invalid_operation +dqrmn755 remaindernear -0 sNaN -> NaN Invalid_operation +dqrmn756 remaindernear 0 sNaN -> NaN Invalid_operation +dqrmn757 remaindernear 1 sNaN -> NaN Invalid_operation +dqrmn758 remaindernear 1000 sNaN -> NaN Invalid_operation +dqrmn759 remaindernear Inf -sNaN -> -NaN Invalid_operation + +-- propaging NaNs +dqrmn760 remaindernear NaN1 NaN7 -> NaN1 +dqrmn761 remaindernear sNaN2 NaN8 -> NaN2 Invalid_operation +dqrmn762 remaindernear NaN3 sNaN9 -> NaN9 Invalid_operation +dqrmn763 remaindernear sNaN4 sNaN10 -> NaN4 Invalid_operation +dqrmn764 remaindernear 15 NaN11 -> NaN11 +dqrmn765 remaindernear NaN6 NaN12 -> NaN6 +dqrmn766 remaindernear Inf NaN13 -> NaN13 +dqrmn767 remaindernear NaN14 -Inf -> NaN14 +dqrmn768 remaindernear 0 NaN15 -> NaN15 +dqrmn769 remaindernear NaN16 -0 -> NaN16 + +-- edge cases of impossible +dqrmn770 remaindernear 1234500000000000000000067890123456 10 -> -4 +dqrmn771 remaindernear 1234500000000000000000067890123456 1 -> 0 +dqrmn772 remaindernear 1234500000000000000000067890123456 0.1 -> NaN Division_impossible +dqrmn773 remaindernear 1234500000000000000000067890123456 0.01 -> NaN Division_impossible + +-- long operand checks +dqrmn801 remaindernear 12345678000 100 -> 0 +dqrmn802 remaindernear 1 12345678000 -> 1 +dqrmn803 remaindernear 1234567800 10 -> 0 +dqrmn804 remaindernear 1 1234567800 -> 1 +dqrmn805 remaindernear 1234567890 10 -> 0 +dqrmn806 remaindernear 1 1234567890 -> 1 +dqrmn807 remaindernear 1234567891 10 -> 1 +dqrmn808 remaindernear 1 1234567891 -> 1 +dqrmn809 remaindernear 12345678901 100 -> 1 +dqrmn810 remaindernear 1 12345678901 -> 1 +dqrmn811 remaindernear 1234567896 10 -> -4 +dqrmn812 remaindernear 1 1234567896 -> 1 + +dqrmn821 remaindernear 12345678000 100 -> 0 +dqrmn822 remaindernear 1 12345678000 -> 1 +dqrmn823 remaindernear 1234567800 10 -> 0 +dqrmn824 remaindernear 1 1234567800 -> 1 +dqrmn825 remaindernear 1234567890 10 -> 0 +dqrmn826 remaindernear 1 1234567890 -> 1 +dqrmn827 remaindernear 1234567891 10 -> 1 +dqrmn828 remaindernear 1 1234567891 -> 1 +dqrmn829 remaindernear 12345678901 100 -> 1 +dqrmn830 remaindernear 1 12345678901 -> 1 +dqrmn831 remaindernear 1234567896 10 -> -4 +dqrmn832 remaindernear 1 1234567896 -> 1 + +-- from divideint +dqrmn840 remaindernear 100000000.0 1 -> 0.0 +dqrmn841 remaindernear 100000000.4 1 -> 0.4 +dqrmn842 remaindernear 100000000.5 1 -> 0.5 +dqrmn843 remaindernear 100000000.9 1 -> -0.1 +dqrmn844 remaindernear 100000000.999 1 -> -0.001 +dqrmn850 remaindernear 100000003 5 -> -2 +dqrmn851 remaindernear 10000003 5 -> -2 +dqrmn852 remaindernear 1000003 5 -> -2 +dqrmn853 remaindernear 100003 5 -> -2 +dqrmn854 remaindernear 10003 5 -> -2 +dqrmn855 remaindernear 1003 5 -> -2 +dqrmn856 remaindernear 103 5 -> -2 +dqrmn857 remaindernear 13 5 -> -2 +dqrmn858 remaindernear 1 5 -> 1 + +-- Vladimir's cases 1234567890123456 +dqrmn860 remaindernear 123.0e1 1000000000000000 -> 1230 +dqrmn861 remaindernear 1230 1000000000000000 -> 1230 +dqrmn862 remaindernear 12.3e2 1000000000000000 -> 1230 +dqrmn863 remaindernear 1.23e3 1000000000000000 -> 1230 +dqrmn864 remaindernear 123e1 1000000000000000 -> 1230 +dqrmn870 remaindernear 123e1 1000000000000000 -> 1230 +dqrmn871 remaindernear 123e1 100000000000000 -> 1230 +dqrmn872 remaindernear 123e1 10000000000000 -> 1230 +dqrmn873 remaindernear 123e1 1000000000000 -> 1230 +dqrmn874 remaindernear 123e1 100000000000 -> 1230 +dqrmn875 remaindernear 123e1 10000000000 -> 1230 +dqrmn876 remaindernear 123e1 1000000000 -> 1230 +dqrmn877 remaindernear 123e1 100000000 -> 1230 +dqrmn878 remaindernear 1230 100000000 -> 1230 +dqrmn879 remaindernear 123e1 10000000 -> 1230 +dqrmn880 remaindernear 123e1 1000000 -> 1230 +dqrmn881 remaindernear 123e1 100000 -> 1230 +dqrmn882 remaindernear 123e1 10000 -> 1230 +dqrmn883 remaindernear 123e1 1000 -> 230 +dqrmn884 remaindernear 123e1 100 -> 30 +dqrmn885 remaindernear 123e1 10 -> 0 +dqrmn886 remaindernear 123e1 1 -> 0 + +dqrmn890 remaindernear 123e1 2000000000000000 -> 1230 +dqrmn891 remaindernear 123e1 200000000000000 -> 1230 +dqrmn892 remaindernear 123e1 20000000000000 -> 1230 +dqrmn893 remaindernear 123e1 2000000000000 -> 1230 +dqrmn894 remaindernear 123e1 200000000000 -> 1230 +dqrmn895 remaindernear 123e1 20000000000 -> 1230 +dqrmn896 remaindernear 123e1 2000000000 -> 1230 +dqrmn897 remaindernear 123e1 200000000 -> 1230 +dqrmn899 remaindernear 123e1 20000000 -> 1230 +dqrmn900 remaindernear 123e1 2000000 -> 1230 +dqrmn901 remaindernear 123e1 200000 -> 1230 +dqrmn902 remaindernear 123e1 20000 -> 1230 +dqrmn903 remaindernear 123e1 2000 -> -770 +dqrmn904 remaindernear 123e1 200 -> 30 +dqrmn905 remaindernear 123e1 20 -> -10 +dqrmn906 remaindernear 123e1 2 -> 0 + +dqrmn910 remaindernear 123e1 5000000000000000 -> 1230 +dqrmn911 remaindernear 123e1 500000000000000 -> 1230 +dqrmn912 remaindernear 123e1 50000000000000 -> 1230 +dqrmn913 remaindernear 123e1 5000000000000 -> 1230 +dqrmn914 remaindernear 123e1 500000000000 -> 1230 +dqrmn915 remaindernear 123e1 50000000000 -> 1230 +dqrmn916 remaindernear 123e1 5000000000 -> 1230 +dqrmn917 remaindernear 123e1 500000000 -> 1230 +dqrmn919 remaindernear 123e1 50000000 -> 1230 +dqrmn920 remaindernear 123e1 5000000 -> 1230 +dqrmn921 remaindernear 123e1 500000 -> 1230 +dqrmn922 remaindernear 123e1 50000 -> 1230 +dqrmn923 remaindernear 123e1 5000 -> 1230 +dqrmn924 remaindernear 123e1 500 -> 230 +dqrmn925 remaindernear 123e1 50 -> -20 +dqrmn926 remaindernear 123e1 5 -> 0 + +dqrmn930 remaindernear 123e1 9000000000000000 -> 1230 +dqrmn931 remaindernear 123e1 900000000000000 -> 1230 +dqrmn932 remaindernear 123e1 90000000000000 -> 1230 +dqrmn933 remaindernear 123e1 9000000000000 -> 1230 +dqrmn934 remaindernear 123e1 900000000000 -> 1230 +dqrmn935 remaindernear 123e1 90000000000 -> 1230 +dqrmn936 remaindernear 123e1 9000000000 -> 1230 +dqrmn937 remaindernear 123e1 900000000 -> 1230 +dqrmn939 remaindernear 123e1 90000000 -> 1230 +dqrmn940 remaindernear 123e1 9000000 -> 1230 +dqrmn941 remaindernear 123e1 900000 -> 1230 +dqrmn942 remaindernear 123e1 90000 -> 1230 +dqrmn943 remaindernear 123e1 9000 -> 1230 +dqrmn944 remaindernear 123e1 900 -> 330 +dqrmn945 remaindernear 123e1 90 -> -30 +dqrmn946 remaindernear 123e1 9 -> -3 + +dqrmn950 remaindernear 123e1 1000000000000000 -> 1230 +dqrmn961 remaindernear 123e1 2999999999999999 -> 1230 +dqrmn962 remaindernear 123e1 3999999999999999 -> 1230 +dqrmn963 remaindernear 123e1 4999999999999999 -> 1230 +dqrmn964 remaindernear 123e1 5999999999999999 -> 1230 +dqrmn965 remaindernear 123e1 6999999999999999 -> 1230 +dqrmn966 remaindernear 123e1 7999999999999999 -> 1230 +dqrmn967 remaindernear 123e1 8999999999999999 -> 1230 +dqrmn968 remaindernear 123e1 9999999999999999 -> 1230 +dqrmn969 remaindernear 123e1 9876543210987654 -> 1230 + +dqrmn980 remaindernear 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally + +-- overflow and underflow tests [from divide] +dqrmn1051 remaindernear 1e+277 1e-311 -> NaN Division_impossible +dqrmn1052 remaindernear 1e+277 -1e-311 -> NaN Division_impossible +dqrmn1053 remaindernear -1e+277 1e-311 -> NaN Division_impossible +dqrmn1054 remaindernear -1e+277 -1e-311 -> NaN Division_impossible +dqrmn1055 remaindernear 1e-277 1e+311 -> 1E-277 +dqrmn1056 remaindernear 1e-277 -1e+311 -> 1E-277 +dqrmn1057 remaindernear -1e-277 1e+311 -> -1E-277 +dqrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277 + +-- Gyuris example +dqrmn1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143 + +-- destructive subtract +dqrmn1101 remaindernear 1234567890123456789012345678901234 1.000000000000000000000000000000001 -> -0.234567890123456789012345678901233 +dqrmn1102 remaindernear 1234567890123456789012345678901234 1.00000000000000000000000000000001 -> -0.34567890123456789012345678901222 +dqrmn1103 remaindernear 1234567890123456789012345678901234 1.0000000000000000000000000000001 -> -0.4567890123456789012345678901111 +dqrmn1104 remaindernear 1234567890123456789012345678901255 4.000000000000000000000000000000001 -> -1.308641972530864197253086419725314 +dqrmn1105 remaindernear 1234567890123456789012345678901234 4.000000000000000000000000000000001 -> 1.691358027469135802746913580274692 +dqrmn1106 remaindernear 1234567890123456789012345678901234 4.9999999999999999999999999999999 -> -1.3086421975308642197530864219748 +dqrmn1107 remaindernear 1234567890123456789012345678901234 4.99999999999999999999999999999999 -> 1.46913578024691357802469135780247 +dqrmn1108 remaindernear 1234567890123456789012345678901234 4.999999999999999999999999999999999 -> -0.753086421975308642197530864219753 +dqrmn1109 remaindernear 1234567890123456789012345678901234 5.000000000000000000000000000000001 -> -1.246913578024691357802469135780247 +dqrmn1110 remaindernear 1234567890123456789012345678901234 5.00000000000000000000000000000001 -> 1.53086421975308642197530864219754 +dqrmn1111 remaindernear 1234567890123456789012345678901234 5.0000000000000000000000000000001 -> -0.6913578024691357802469135780242 + +-- Null tests +dqrmn1000 remaindernear 10 # -> NaN Invalid_operation +dqrmn1001 remaindernear # 10 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/dqRotate.decTest b/Lib/test/decimaltestdata/dqRotate.decTest index 858b823..edcf9ee 100644 --- a/Lib/test/decimaltestdata/dqRotate.decTest +++ b/Lib/test/decimaltestdata/dqRotate.decTest @@ -1,298 +1,298 @@ ------------------------------------------------------------------------- --- dqRotate.decTest -- rotate decQuad coefficient left or right -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check -dqrot001 rotate 0 0 -> 0 -dqrot002 rotate 0 2 -> 0 -dqrot003 rotate 1 2 -> 100 -dqrot004 rotate 1 33 -> 1000000000000000000000000000000000 -dqrot005 rotate 1 34 -> 1 -dqrot006 rotate 1 -1 -> 1000000000000000000000000000000000 -dqrot007 rotate 0 -2 -> 0 -dqrot008 rotate 1234567890123456789012345678901234 -1 -> 4123456789012345678901234567890123 -dqrot009 rotate 1234567890123456789012345678901234 -33 -> 2345678901234567890123456789012341 -dqrot010 rotate 1234567890123456789012345678901234 -34 -> 1234567890123456789012345678901234 -dqrot011 rotate 9934567890123456789012345678901234 -33 -> 9345678901234567890123456789012349 -dqrot012 rotate 9934567890123456789012345678901234 -34 -> 9934567890123456789012345678901234 - --- rhs must be an integer -dqrot015 rotate 1 1.5 -> NaN Invalid_operation -dqrot016 rotate 1 1.0 -> NaN Invalid_operation -dqrot017 rotate 1 0.1 -> NaN Invalid_operation -dqrot018 rotate 1 0.0 -> NaN Invalid_operation -dqrot019 rotate 1 1E+1 -> NaN Invalid_operation -dqrot020 rotate 1 1E+99 -> NaN Invalid_operation -dqrot021 rotate 1 Inf -> NaN Invalid_operation -dqrot022 rotate 1 -Inf -> NaN Invalid_operation --- and |rhs| <= precision -dqrot025 rotate 1 -1000 -> NaN Invalid_operation -dqrot026 rotate 1 -35 -> NaN Invalid_operation -dqrot027 rotate 1 35 -> NaN Invalid_operation -dqrot028 rotate 1 1000 -> NaN Invalid_operation - --- full pattern -dqrot030 rotate 1234567890123456789012345678901234 -34 -> 1234567890123456789012345678901234 -dqrot031 rotate 1234567890123456789012345678901234 -33 -> 2345678901234567890123456789012341 -dqrot032 rotate 1234567890123456789012345678901234 -32 -> 3456789012345678901234567890123412 -dqrot033 rotate 1234567890123456789012345678901234 -31 -> 4567890123456789012345678901234123 -dqrot034 rotate 1234567890123456789012345678901234 -30 -> 5678901234567890123456789012341234 -dqrot035 rotate 1234567890123456789012345678901234 -29 -> 6789012345678901234567890123412345 -dqrot036 rotate 1234567890123456789012345678901234 -28 -> 7890123456789012345678901234123456 -dqrot037 rotate 1234567890123456789012345678901234 -27 -> 8901234567890123456789012341234567 -dqrot038 rotate 1234567890123456789012345678901234 -26 -> 9012345678901234567890123412345678 -dqrot039 rotate 1234567890123456789012345678901234 -25 -> 123456789012345678901234123456789 -dqrot040 rotate 1234567890123456789012345678901234 -24 -> 1234567890123456789012341234567890 -dqrot041 rotate 1234567890123456789012345678901234 -23 -> 2345678901234567890123412345678901 -dqrot042 rotate 1234567890123456789012345678901234 -22 -> 3456789012345678901234123456789012 -dqrot043 rotate 1234567890123456789012345678901234 -21 -> 4567890123456789012341234567890123 -dqrot044 rotate 1234567890123456789012345678901234 -20 -> 5678901234567890123412345678901234 -dqrot045 rotate 1234567890123456789012345678901234 -19 -> 6789012345678901234123456789012345 -dqrot047 rotate 1234567890123456789012345678901234 -18 -> 7890123456789012341234567890123456 -dqrot048 rotate 1234567890123456789012345678901234 -17 -> 8901234567890123412345678901234567 -dqrot049 rotate 1234567890123456789012345678901234 -16 -> 9012345678901234123456789012345678 -dqrot050 rotate 1234567890123456789012345678901234 -15 -> 123456789012341234567890123456789 -dqrot051 rotate 1234567890123456789012345678901234 -14 -> 1234567890123412345678901234567890 -dqrot052 rotate 1234567890123456789012345678901234 -13 -> 2345678901234123456789012345678901 -dqrot053 rotate 1234567890123456789012345678901234 -12 -> 3456789012341234567890123456789012 -dqrot054 rotate 1234567890123456789012345678901234 -11 -> 4567890123412345678901234567890123 -dqrot055 rotate 1234567890123456789012345678901234 -10 -> 5678901234123456789012345678901234 -dqrot056 rotate 1234567890123456789012345678901234 -9 -> 6789012341234567890123456789012345 -dqrot057 rotate 1234567890123456789012345678901234 -8 -> 7890123412345678901234567890123456 -dqrot058 rotate 1234567890123456789012345678901234 -7 -> 8901234123456789012345678901234567 -dqrot059 rotate 1234567890123456789012345678901234 -6 -> 9012341234567890123456789012345678 -dqrot060 rotate 1234567890123456789012345678901234 -5 -> 123412345678901234567890123456789 -dqrot061 rotate 1234567890123456789012345678901234 -4 -> 1234123456789012345678901234567890 -dqrot062 rotate 1234567890123456789012345678901234 -3 -> 2341234567890123456789012345678901 -dqrot063 rotate 1234567890123456789012345678901234 -2 -> 3412345678901234567890123456789012 -dqrot064 rotate 1234567890123456789012345678901234 -1 -> 4123456789012345678901234567890123 -dqrot065 rotate 1234567890123456789012345678901234 -0 -> 1234567890123456789012345678901234 - -dqrot066 rotate 1234567890123456789012345678901234 +0 -> 1234567890123456789012345678901234 -dqrot067 rotate 1234567890123456789012345678901234 +1 -> 2345678901234567890123456789012341 -dqrot068 rotate 1234567890123456789012345678901234 +2 -> 3456789012345678901234567890123412 -dqrot069 rotate 1234567890123456789012345678901234 +3 -> 4567890123456789012345678901234123 -dqrot070 rotate 1234567890123456789012345678901234 +4 -> 5678901234567890123456789012341234 -dqrot071 rotate 1234567890123456789012345678901234 +5 -> 6789012345678901234567890123412345 -dqrot072 rotate 1234567890123456789012345678901234 +6 -> 7890123456789012345678901234123456 -dqrot073 rotate 1234567890123456789012345678901234 +7 -> 8901234567890123456789012341234567 -dqrot074 rotate 1234567890123456789012345678901234 +8 -> 9012345678901234567890123412345678 -dqrot075 rotate 1234567890123456789012345678901234 +9 -> 123456789012345678901234123456789 -dqrot076 rotate 1234567890123456789012345678901234 +10 -> 1234567890123456789012341234567890 -dqrot077 rotate 1234567890123456789012345678901234 +11 -> 2345678901234567890123412345678901 -dqrot078 rotate 1234567890123456789012345678901234 +12 -> 3456789012345678901234123456789012 -dqrot079 rotate 1234567890123456789012345678901234 +13 -> 4567890123456789012341234567890123 -dqrot080 rotate 1234567890123456789012345678901234 +14 -> 5678901234567890123412345678901234 -dqrot081 rotate 1234567890123456789012345678901234 +15 -> 6789012345678901234123456789012345 -dqrot082 rotate 1234567890123456789012345678901234 +16 -> 7890123456789012341234567890123456 -dqrot083 rotate 1234567890123456789012345678901234 +17 -> 8901234567890123412345678901234567 -dqrot084 rotate 1234567890123456789012345678901234 +18 -> 9012345678901234123456789012345678 -dqrot085 rotate 1234567890123456789012345678901234 +19 -> 123456789012341234567890123456789 -dqrot086 rotate 1234567890123456789012345678901234 +20 -> 1234567890123412345678901234567890 -dqrot087 rotate 1234567890123456789012345678901234 +21 -> 2345678901234123456789012345678901 -dqrot088 rotate 1234567890123456789012345678901234 +22 -> 3456789012341234567890123456789012 -dqrot089 rotate 1234567890123456789012345678901234 +23 -> 4567890123412345678901234567890123 -dqrot090 rotate 1234567890123456789012345678901234 +24 -> 5678901234123456789012345678901234 -dqrot091 rotate 1234567890123456789012345678901234 +25 -> 6789012341234567890123456789012345 -dqrot092 rotate 1234567890123456789012345678901234 +26 -> 7890123412345678901234567890123456 -dqrot093 rotate 1234567890123456789012345678901234 +27 -> 8901234123456789012345678901234567 -dqrot094 rotate 1234567890123456789012345678901234 +28 -> 9012341234567890123456789012345678 -dqrot095 rotate 1234567890123456789012345678901234 +29 -> 123412345678901234567890123456789 -dqrot096 rotate 1234567890123456789012345678901234 +30 -> 1234123456789012345678901234567890 -dqrot097 rotate 1234567890123456789012345678901234 +31 -> 2341234567890123456789012345678901 -dqrot098 rotate 1234567890123456789012345678901234 +32 -> 3412345678901234567890123456789012 -dqrot099 rotate 1234567890123456789012345678901234 +33 -> 4123456789012345678901234567890123 -dqrot100 rotate 1234567890123456789012345678901234 +34 -> 1234567890123456789012345678901234 - --- zeros -dqrot270 rotate 0E-10 +29 -> 0E-10 -dqrot271 rotate 0E-10 -29 -> 0E-10 -dqrot272 rotate 0.000 +29 -> 0.000 -dqrot273 rotate 0.000 -29 -> 0.000 -dqrot274 rotate 0E+10 +29 -> 0E+10 -dqrot275 rotate 0E+10 -29 -> 0E+10 -dqrot276 rotate -0E-10 +29 -> -0E-10 -dqrot277 rotate -0E-10 -29 -> -0E-10 -dqrot278 rotate -0.000 +29 -> -0.000 -dqrot279 rotate -0.000 -29 -> -0.000 -dqrot280 rotate -0E+10 +29 -> -0E+10 -dqrot281 rotate -0E+10 -29 -> -0E+10 - --- Nmax, Nmin, Ntiny -dqrot141 rotate 9.999999999999999999999999999999999E+6144 -1 -> 9.999999999999999999999999999999999E+6144 -dqrot142 rotate 9.999999999999999999999999999999999E+6144 -33 -> 9.999999999999999999999999999999999E+6144 -dqrot143 rotate 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999999E+6144 -dqrot144 rotate 9.999999999999999999999999999999999E+6144 33 -> 9.999999999999999999999999999999999E+6144 -dqrot145 rotate 1E-6143 -1 -> 1.000000000000000000000000000000000E-6110 -dqrot146 rotate 1E-6143 -33 -> 1.0E-6142 -dqrot147 rotate 1E-6143 1 -> 1.0E-6142 -dqrot148 rotate 1E-6143 33 -> 1.000000000000000000000000000000000E-6110 -dqrot151 rotate 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 -dqrot152 rotate 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176 -dqrot153 rotate 1.000000000000000000000000000000000E-6143 1 -> 1E-6176 -dqrot154 rotate 1.000000000000000000000000000000000E-6143 33 -> 1.00000000000000000000000000000000E-6144 -dqrot155 rotate 9.000000000000000000000000000000000E-6143 -1 -> 9.00000000000000000000000000000000E-6144 -dqrot156 rotate 9.000000000000000000000000000000000E-6143 -33 -> 9E-6176 -dqrot157 rotate 9.000000000000000000000000000000000E-6143 1 -> 9E-6176 -dqrot158 rotate 9.000000000000000000000000000000000E-6143 33 -> 9.00000000000000000000000000000000E-6144 -dqrot160 rotate 1E-6176 -1 -> 1.000000000000000000000000000000000E-6143 -dqrot161 rotate 1E-6176 -33 -> 1.0E-6175 -dqrot162 rotate 1E-6176 1 -> 1.0E-6175 -dqrot163 rotate 1E-6176 33 -> 1.000000000000000000000000000000000E-6143 --- negatives -dqrot171 rotate -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144 -dqrot172 rotate -9.999999999999999999999999999999999E+6144 -33 -> -9.999999999999999999999999999999999E+6144 -dqrot173 rotate -9.999999999999999999999999999999999E+6144 1 -> -9.999999999999999999999999999999999E+6144 -dqrot174 rotate -9.999999999999999999999999999999999E+6144 33 -> -9.999999999999999999999999999999999E+6144 -dqrot175 rotate -1E-6143 -1 -> -1.000000000000000000000000000000000E-6110 -dqrot176 rotate -1E-6143 -33 -> -1.0E-6142 -dqrot177 rotate -1E-6143 1 -> -1.0E-6142 -dqrot178 rotate -1E-6143 33 -> -1.000000000000000000000000000000000E-6110 -dqrot181 rotate -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144 -dqrot182 rotate -1.000000000000000000000000000000000E-6143 -33 -> -1E-6176 -dqrot183 rotate -1.000000000000000000000000000000000E-6143 1 -> -1E-6176 -dqrot184 rotate -1.000000000000000000000000000000000E-6143 33 -> -1.00000000000000000000000000000000E-6144 -dqrot185 rotate -9.000000000000000000000000000000000E-6143 -1 -> -9.00000000000000000000000000000000E-6144 -dqrot186 rotate -9.000000000000000000000000000000000E-6143 -33 -> -9E-6176 -dqrot187 rotate -9.000000000000000000000000000000000E-6143 1 -> -9E-6176 -dqrot188 rotate -9.000000000000000000000000000000000E-6143 33 -> -9.00000000000000000000000000000000E-6144 -dqrot190 rotate -1E-6176 -1 -> -1.000000000000000000000000000000000E-6143 -dqrot191 rotate -1E-6176 -33 -> -1.0E-6175 -dqrot192 rotate -1E-6176 1 -> -1.0E-6175 -dqrot193 rotate -1E-6176 33 -> -1.000000000000000000000000000000000E-6143 - --- more negatives (of sanities) -dqrot201 rotate -0 0 -> -0 -dqrot202 rotate -0 2 -> -0 -dqrot203 rotate -1 2 -> -100 -dqrot204 rotate -1 33 -> -1000000000000000000000000000000000 -dqrot205 rotate -1 34 -> -1 -dqrot206 rotate -1 -1 -> -1000000000000000000000000000000000 -dqrot207 rotate -0 -2 -> -0 -dqrot208 rotate -1234567890123456789012345678901234 -1 -> -4123456789012345678901234567890123 -dqrot209 rotate -1234567890123456789012345678901234 -33 -> -2345678901234567890123456789012341 -dqrot210 rotate -1234567890123456789012345678901234 -34 -> -1234567890123456789012345678901234 -dqrot211 rotate -9934567890123456789012345678901234 -33 -> -9345678901234567890123456789012349 -dqrot212 rotate -9934567890123456789012345678901234 -34 -> -9934567890123456789012345678901234 - - --- Specials; NaNs are handled as usual -dqrot781 rotate -Inf -8 -> -Infinity -dqrot782 rotate -Inf -1 -> -Infinity -dqrot783 rotate -Inf -0 -> -Infinity -dqrot784 rotate -Inf 0 -> -Infinity -dqrot785 rotate -Inf 1 -> -Infinity -dqrot786 rotate -Inf 8 -> -Infinity -dqrot787 rotate -1000 -Inf -> NaN Invalid_operation -dqrot788 rotate -Inf -Inf -> NaN Invalid_operation -dqrot789 rotate -1 -Inf -> NaN Invalid_operation -dqrot790 rotate -0 -Inf -> NaN Invalid_operation -dqrot791 rotate 0 -Inf -> NaN Invalid_operation -dqrot792 rotate 1 -Inf -> NaN Invalid_operation -dqrot793 rotate 1000 -Inf -> NaN Invalid_operation -dqrot794 rotate Inf -Inf -> NaN Invalid_operation - -dqrot800 rotate Inf -Inf -> NaN Invalid_operation -dqrot801 rotate Inf -8 -> Infinity -dqrot802 rotate Inf -1 -> Infinity -dqrot803 rotate Inf -0 -> Infinity -dqrot804 rotate Inf 0 -> Infinity -dqrot805 rotate Inf 1 -> Infinity -dqrot806 rotate Inf 8 -> Infinity -dqrot807 rotate Inf Inf -> NaN Invalid_operation -dqrot808 rotate -1000 Inf -> NaN Invalid_operation -dqrot809 rotate -Inf Inf -> NaN Invalid_operation -dqrot810 rotate -1 Inf -> NaN Invalid_operation -dqrot811 rotate -0 Inf -> NaN Invalid_operation -dqrot812 rotate 0 Inf -> NaN Invalid_operation -dqrot813 rotate 1 Inf -> NaN Invalid_operation -dqrot814 rotate 1000 Inf -> NaN Invalid_operation -dqrot815 rotate Inf Inf -> NaN Invalid_operation - -dqrot821 rotate NaN -Inf -> NaN -dqrot822 rotate NaN -1000 -> NaN -dqrot823 rotate NaN -1 -> NaN -dqrot824 rotate NaN -0 -> NaN -dqrot825 rotate NaN 0 -> NaN -dqrot826 rotate NaN 1 -> NaN -dqrot827 rotate NaN 1000 -> NaN -dqrot828 rotate NaN Inf -> NaN -dqrot829 rotate NaN NaN -> NaN -dqrot830 rotate -Inf NaN -> NaN -dqrot831 rotate -1000 NaN -> NaN -dqrot832 rotate -1 NaN -> NaN -dqrot833 rotate -0 NaN -> NaN -dqrot834 rotate 0 NaN -> NaN -dqrot835 rotate 1 NaN -> NaN -dqrot836 rotate 1000 NaN -> NaN -dqrot837 rotate Inf NaN -> NaN - -dqrot841 rotate sNaN -Inf -> NaN Invalid_operation -dqrot842 rotate sNaN -1000 -> NaN Invalid_operation -dqrot843 rotate sNaN -1 -> NaN Invalid_operation -dqrot844 rotate sNaN -0 -> NaN Invalid_operation -dqrot845 rotate sNaN 0 -> NaN Invalid_operation -dqrot846 rotate sNaN 1 -> NaN Invalid_operation -dqrot847 rotate sNaN 1000 -> NaN Invalid_operation -dqrot848 rotate sNaN NaN -> NaN Invalid_operation -dqrot849 rotate sNaN sNaN -> NaN Invalid_operation -dqrot850 rotate NaN sNaN -> NaN Invalid_operation -dqrot851 rotate -Inf sNaN -> NaN Invalid_operation -dqrot852 rotate -1000 sNaN -> NaN Invalid_operation -dqrot853 rotate -1 sNaN -> NaN Invalid_operation -dqrot854 rotate -0 sNaN -> NaN Invalid_operation -dqrot855 rotate 0 sNaN -> NaN Invalid_operation -dqrot856 rotate 1 sNaN -> NaN Invalid_operation -dqrot857 rotate 1000 sNaN -> NaN Invalid_operation -dqrot858 rotate Inf sNaN -> NaN Invalid_operation -dqrot859 rotate NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqrot861 rotate NaN1 -Inf -> NaN1 -dqrot862 rotate +NaN2 -1000 -> NaN2 -dqrot863 rotate NaN3 1000 -> NaN3 -dqrot864 rotate NaN4 Inf -> NaN4 -dqrot865 rotate NaN5 +NaN6 -> NaN5 -dqrot866 rotate -Inf NaN7 -> NaN7 -dqrot867 rotate -1000 NaN8 -> NaN8 -dqrot868 rotate 1000 NaN9 -> NaN9 -dqrot869 rotate Inf +NaN10 -> NaN10 -dqrot871 rotate sNaN11 -Inf -> NaN11 Invalid_operation -dqrot872 rotate sNaN12 -1000 -> NaN12 Invalid_operation -dqrot873 rotate sNaN13 1000 -> NaN13 Invalid_operation -dqrot874 rotate sNaN14 NaN17 -> NaN14 Invalid_operation -dqrot875 rotate sNaN15 sNaN18 -> NaN15 Invalid_operation -dqrot876 rotate NaN16 sNaN19 -> NaN19 Invalid_operation -dqrot877 rotate -Inf +sNaN20 -> NaN20 Invalid_operation -dqrot878 rotate -1000 sNaN21 -> NaN21 Invalid_operation -dqrot879 rotate 1000 sNaN22 -> NaN22 Invalid_operation -dqrot880 rotate Inf sNaN23 -> NaN23 Invalid_operation -dqrot881 rotate +NaN25 +sNaN24 -> NaN24 Invalid_operation -dqrot882 rotate -NaN26 NaN28 -> -NaN26 -dqrot883 rotate -sNaN27 sNaN29 -> -NaN27 Invalid_operation -dqrot884 rotate 1000 -NaN30 -> -NaN30 -dqrot885 rotate 1000 -sNaN31 -> -NaN31 Invalid_operation +------------------------------------------------------------------------ +-- dqRotate.decTest -- rotate decQuad coefficient left or right -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check +dqrot001 rotate 0 0 -> 0 +dqrot002 rotate 0 2 -> 0 +dqrot003 rotate 1 2 -> 100 +dqrot004 rotate 1 33 -> 1000000000000000000000000000000000 +dqrot005 rotate 1 34 -> 1 +dqrot006 rotate 1 -1 -> 1000000000000000000000000000000000 +dqrot007 rotate 0 -2 -> 0 +dqrot008 rotate 1234567890123456789012345678901234 -1 -> 4123456789012345678901234567890123 +dqrot009 rotate 1234567890123456789012345678901234 -33 -> 2345678901234567890123456789012341 +dqrot010 rotate 1234567890123456789012345678901234 -34 -> 1234567890123456789012345678901234 +dqrot011 rotate 9934567890123456789012345678901234 -33 -> 9345678901234567890123456789012349 +dqrot012 rotate 9934567890123456789012345678901234 -34 -> 9934567890123456789012345678901234 + +-- rhs must be an integer +dqrot015 rotate 1 1.5 -> NaN Invalid_operation +dqrot016 rotate 1 1.0 -> NaN Invalid_operation +dqrot017 rotate 1 0.1 -> NaN Invalid_operation +dqrot018 rotate 1 0.0 -> NaN Invalid_operation +dqrot019 rotate 1 1E+1 -> NaN Invalid_operation +dqrot020 rotate 1 1E+99 -> NaN Invalid_operation +dqrot021 rotate 1 Inf -> NaN Invalid_operation +dqrot022 rotate 1 -Inf -> NaN Invalid_operation +-- and |rhs| <= precision +dqrot025 rotate 1 -1000 -> NaN Invalid_operation +dqrot026 rotate 1 -35 -> NaN Invalid_operation +dqrot027 rotate 1 35 -> NaN Invalid_operation +dqrot028 rotate 1 1000 -> NaN Invalid_operation + +-- full pattern +dqrot030 rotate 1234567890123456789012345678901234 -34 -> 1234567890123456789012345678901234 +dqrot031 rotate 1234567890123456789012345678901234 -33 -> 2345678901234567890123456789012341 +dqrot032 rotate 1234567890123456789012345678901234 -32 -> 3456789012345678901234567890123412 +dqrot033 rotate 1234567890123456789012345678901234 -31 -> 4567890123456789012345678901234123 +dqrot034 rotate 1234567890123456789012345678901234 -30 -> 5678901234567890123456789012341234 +dqrot035 rotate 1234567890123456789012345678901234 -29 -> 6789012345678901234567890123412345 +dqrot036 rotate 1234567890123456789012345678901234 -28 -> 7890123456789012345678901234123456 +dqrot037 rotate 1234567890123456789012345678901234 -27 -> 8901234567890123456789012341234567 +dqrot038 rotate 1234567890123456789012345678901234 -26 -> 9012345678901234567890123412345678 +dqrot039 rotate 1234567890123456789012345678901234 -25 -> 123456789012345678901234123456789 +dqrot040 rotate 1234567890123456789012345678901234 -24 -> 1234567890123456789012341234567890 +dqrot041 rotate 1234567890123456789012345678901234 -23 -> 2345678901234567890123412345678901 +dqrot042 rotate 1234567890123456789012345678901234 -22 -> 3456789012345678901234123456789012 +dqrot043 rotate 1234567890123456789012345678901234 -21 -> 4567890123456789012341234567890123 +dqrot044 rotate 1234567890123456789012345678901234 -20 -> 5678901234567890123412345678901234 +dqrot045 rotate 1234567890123456789012345678901234 -19 -> 6789012345678901234123456789012345 +dqrot047 rotate 1234567890123456789012345678901234 -18 -> 7890123456789012341234567890123456 +dqrot048 rotate 1234567890123456789012345678901234 -17 -> 8901234567890123412345678901234567 +dqrot049 rotate 1234567890123456789012345678901234 -16 -> 9012345678901234123456789012345678 +dqrot050 rotate 1234567890123456789012345678901234 -15 -> 123456789012341234567890123456789 +dqrot051 rotate 1234567890123456789012345678901234 -14 -> 1234567890123412345678901234567890 +dqrot052 rotate 1234567890123456789012345678901234 -13 -> 2345678901234123456789012345678901 +dqrot053 rotate 1234567890123456789012345678901234 -12 -> 3456789012341234567890123456789012 +dqrot054 rotate 1234567890123456789012345678901234 -11 -> 4567890123412345678901234567890123 +dqrot055 rotate 1234567890123456789012345678901234 -10 -> 5678901234123456789012345678901234 +dqrot056 rotate 1234567890123456789012345678901234 -9 -> 6789012341234567890123456789012345 +dqrot057 rotate 1234567890123456789012345678901234 -8 -> 7890123412345678901234567890123456 +dqrot058 rotate 1234567890123456789012345678901234 -7 -> 8901234123456789012345678901234567 +dqrot059 rotate 1234567890123456789012345678901234 -6 -> 9012341234567890123456789012345678 +dqrot060 rotate 1234567890123456789012345678901234 -5 -> 123412345678901234567890123456789 +dqrot061 rotate 1234567890123456789012345678901234 -4 -> 1234123456789012345678901234567890 +dqrot062 rotate 1234567890123456789012345678901234 -3 -> 2341234567890123456789012345678901 +dqrot063 rotate 1234567890123456789012345678901234 -2 -> 3412345678901234567890123456789012 +dqrot064 rotate 1234567890123456789012345678901234 -1 -> 4123456789012345678901234567890123 +dqrot065 rotate 1234567890123456789012345678901234 -0 -> 1234567890123456789012345678901234 + +dqrot066 rotate 1234567890123456789012345678901234 +0 -> 1234567890123456789012345678901234 +dqrot067 rotate 1234567890123456789012345678901234 +1 -> 2345678901234567890123456789012341 +dqrot068 rotate 1234567890123456789012345678901234 +2 -> 3456789012345678901234567890123412 +dqrot069 rotate 1234567890123456789012345678901234 +3 -> 4567890123456789012345678901234123 +dqrot070 rotate 1234567890123456789012345678901234 +4 -> 5678901234567890123456789012341234 +dqrot071 rotate 1234567890123456789012345678901234 +5 -> 6789012345678901234567890123412345 +dqrot072 rotate 1234567890123456789012345678901234 +6 -> 7890123456789012345678901234123456 +dqrot073 rotate 1234567890123456789012345678901234 +7 -> 8901234567890123456789012341234567 +dqrot074 rotate 1234567890123456789012345678901234 +8 -> 9012345678901234567890123412345678 +dqrot075 rotate 1234567890123456789012345678901234 +9 -> 123456789012345678901234123456789 +dqrot076 rotate 1234567890123456789012345678901234 +10 -> 1234567890123456789012341234567890 +dqrot077 rotate 1234567890123456789012345678901234 +11 -> 2345678901234567890123412345678901 +dqrot078 rotate 1234567890123456789012345678901234 +12 -> 3456789012345678901234123456789012 +dqrot079 rotate 1234567890123456789012345678901234 +13 -> 4567890123456789012341234567890123 +dqrot080 rotate 1234567890123456789012345678901234 +14 -> 5678901234567890123412345678901234 +dqrot081 rotate 1234567890123456789012345678901234 +15 -> 6789012345678901234123456789012345 +dqrot082 rotate 1234567890123456789012345678901234 +16 -> 7890123456789012341234567890123456 +dqrot083 rotate 1234567890123456789012345678901234 +17 -> 8901234567890123412345678901234567 +dqrot084 rotate 1234567890123456789012345678901234 +18 -> 9012345678901234123456789012345678 +dqrot085 rotate 1234567890123456789012345678901234 +19 -> 123456789012341234567890123456789 +dqrot086 rotate 1234567890123456789012345678901234 +20 -> 1234567890123412345678901234567890 +dqrot087 rotate 1234567890123456789012345678901234 +21 -> 2345678901234123456789012345678901 +dqrot088 rotate 1234567890123456789012345678901234 +22 -> 3456789012341234567890123456789012 +dqrot089 rotate 1234567890123456789012345678901234 +23 -> 4567890123412345678901234567890123 +dqrot090 rotate 1234567890123456789012345678901234 +24 -> 5678901234123456789012345678901234 +dqrot091 rotate 1234567890123456789012345678901234 +25 -> 6789012341234567890123456789012345 +dqrot092 rotate 1234567890123456789012345678901234 +26 -> 7890123412345678901234567890123456 +dqrot093 rotate 1234567890123456789012345678901234 +27 -> 8901234123456789012345678901234567 +dqrot094 rotate 1234567890123456789012345678901234 +28 -> 9012341234567890123456789012345678 +dqrot095 rotate 1234567890123456789012345678901234 +29 -> 123412345678901234567890123456789 +dqrot096 rotate 1234567890123456789012345678901234 +30 -> 1234123456789012345678901234567890 +dqrot097 rotate 1234567890123456789012345678901234 +31 -> 2341234567890123456789012345678901 +dqrot098 rotate 1234567890123456789012345678901234 +32 -> 3412345678901234567890123456789012 +dqrot099 rotate 1234567890123456789012345678901234 +33 -> 4123456789012345678901234567890123 +dqrot100 rotate 1234567890123456789012345678901234 +34 -> 1234567890123456789012345678901234 + +-- zeros +dqrot270 rotate 0E-10 +29 -> 0E-10 +dqrot271 rotate 0E-10 -29 -> 0E-10 +dqrot272 rotate 0.000 +29 -> 0.000 +dqrot273 rotate 0.000 -29 -> 0.000 +dqrot274 rotate 0E+10 +29 -> 0E+10 +dqrot275 rotate 0E+10 -29 -> 0E+10 +dqrot276 rotate -0E-10 +29 -> -0E-10 +dqrot277 rotate -0E-10 -29 -> -0E-10 +dqrot278 rotate -0.000 +29 -> -0.000 +dqrot279 rotate -0.000 -29 -> -0.000 +dqrot280 rotate -0E+10 +29 -> -0E+10 +dqrot281 rotate -0E+10 -29 -> -0E+10 + +-- Nmax, Nmin, Ntiny +dqrot141 rotate 9.999999999999999999999999999999999E+6144 -1 -> 9.999999999999999999999999999999999E+6144 +dqrot142 rotate 9.999999999999999999999999999999999E+6144 -33 -> 9.999999999999999999999999999999999E+6144 +dqrot143 rotate 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999999E+6144 +dqrot144 rotate 9.999999999999999999999999999999999E+6144 33 -> 9.999999999999999999999999999999999E+6144 +dqrot145 rotate 1E-6143 -1 -> 1.000000000000000000000000000000000E-6110 +dqrot146 rotate 1E-6143 -33 -> 1.0E-6142 +dqrot147 rotate 1E-6143 1 -> 1.0E-6142 +dqrot148 rotate 1E-6143 33 -> 1.000000000000000000000000000000000E-6110 +dqrot151 rotate 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 +dqrot152 rotate 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176 +dqrot153 rotate 1.000000000000000000000000000000000E-6143 1 -> 1E-6176 +dqrot154 rotate 1.000000000000000000000000000000000E-6143 33 -> 1.00000000000000000000000000000000E-6144 +dqrot155 rotate 9.000000000000000000000000000000000E-6143 -1 -> 9.00000000000000000000000000000000E-6144 +dqrot156 rotate 9.000000000000000000000000000000000E-6143 -33 -> 9E-6176 +dqrot157 rotate 9.000000000000000000000000000000000E-6143 1 -> 9E-6176 +dqrot158 rotate 9.000000000000000000000000000000000E-6143 33 -> 9.00000000000000000000000000000000E-6144 +dqrot160 rotate 1E-6176 -1 -> 1.000000000000000000000000000000000E-6143 +dqrot161 rotate 1E-6176 -33 -> 1.0E-6175 +dqrot162 rotate 1E-6176 1 -> 1.0E-6175 +dqrot163 rotate 1E-6176 33 -> 1.000000000000000000000000000000000E-6143 +-- negatives +dqrot171 rotate -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144 +dqrot172 rotate -9.999999999999999999999999999999999E+6144 -33 -> -9.999999999999999999999999999999999E+6144 +dqrot173 rotate -9.999999999999999999999999999999999E+6144 1 -> -9.999999999999999999999999999999999E+6144 +dqrot174 rotate -9.999999999999999999999999999999999E+6144 33 -> -9.999999999999999999999999999999999E+6144 +dqrot175 rotate -1E-6143 -1 -> -1.000000000000000000000000000000000E-6110 +dqrot176 rotate -1E-6143 -33 -> -1.0E-6142 +dqrot177 rotate -1E-6143 1 -> -1.0E-6142 +dqrot178 rotate -1E-6143 33 -> -1.000000000000000000000000000000000E-6110 +dqrot181 rotate -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144 +dqrot182 rotate -1.000000000000000000000000000000000E-6143 -33 -> -1E-6176 +dqrot183 rotate -1.000000000000000000000000000000000E-6143 1 -> -1E-6176 +dqrot184 rotate -1.000000000000000000000000000000000E-6143 33 -> -1.00000000000000000000000000000000E-6144 +dqrot185 rotate -9.000000000000000000000000000000000E-6143 -1 -> -9.00000000000000000000000000000000E-6144 +dqrot186 rotate -9.000000000000000000000000000000000E-6143 -33 -> -9E-6176 +dqrot187 rotate -9.000000000000000000000000000000000E-6143 1 -> -9E-6176 +dqrot188 rotate -9.000000000000000000000000000000000E-6143 33 -> -9.00000000000000000000000000000000E-6144 +dqrot190 rotate -1E-6176 -1 -> -1.000000000000000000000000000000000E-6143 +dqrot191 rotate -1E-6176 -33 -> -1.0E-6175 +dqrot192 rotate -1E-6176 1 -> -1.0E-6175 +dqrot193 rotate -1E-6176 33 -> -1.000000000000000000000000000000000E-6143 + +-- more negatives (of sanities) +dqrot201 rotate -0 0 -> -0 +dqrot202 rotate -0 2 -> -0 +dqrot203 rotate -1 2 -> -100 +dqrot204 rotate -1 33 -> -1000000000000000000000000000000000 +dqrot205 rotate -1 34 -> -1 +dqrot206 rotate -1 -1 -> -1000000000000000000000000000000000 +dqrot207 rotate -0 -2 -> -0 +dqrot208 rotate -1234567890123456789012345678901234 -1 -> -4123456789012345678901234567890123 +dqrot209 rotate -1234567890123456789012345678901234 -33 -> -2345678901234567890123456789012341 +dqrot210 rotate -1234567890123456789012345678901234 -34 -> -1234567890123456789012345678901234 +dqrot211 rotate -9934567890123456789012345678901234 -33 -> -9345678901234567890123456789012349 +dqrot212 rotate -9934567890123456789012345678901234 -34 -> -9934567890123456789012345678901234 + + +-- Specials; NaNs are handled as usual +dqrot781 rotate -Inf -8 -> -Infinity +dqrot782 rotate -Inf -1 -> -Infinity +dqrot783 rotate -Inf -0 -> -Infinity +dqrot784 rotate -Inf 0 -> -Infinity +dqrot785 rotate -Inf 1 -> -Infinity +dqrot786 rotate -Inf 8 -> -Infinity +dqrot787 rotate -1000 -Inf -> NaN Invalid_operation +dqrot788 rotate -Inf -Inf -> NaN Invalid_operation +dqrot789 rotate -1 -Inf -> NaN Invalid_operation +dqrot790 rotate -0 -Inf -> NaN Invalid_operation +dqrot791 rotate 0 -Inf -> NaN Invalid_operation +dqrot792 rotate 1 -Inf -> NaN Invalid_operation +dqrot793 rotate 1000 -Inf -> NaN Invalid_operation +dqrot794 rotate Inf -Inf -> NaN Invalid_operation + +dqrot800 rotate Inf -Inf -> NaN Invalid_operation +dqrot801 rotate Inf -8 -> Infinity +dqrot802 rotate Inf -1 -> Infinity +dqrot803 rotate Inf -0 -> Infinity +dqrot804 rotate Inf 0 -> Infinity +dqrot805 rotate Inf 1 -> Infinity +dqrot806 rotate Inf 8 -> Infinity +dqrot807 rotate Inf Inf -> NaN Invalid_operation +dqrot808 rotate -1000 Inf -> NaN Invalid_operation +dqrot809 rotate -Inf Inf -> NaN Invalid_operation +dqrot810 rotate -1 Inf -> NaN Invalid_operation +dqrot811 rotate -0 Inf -> NaN Invalid_operation +dqrot812 rotate 0 Inf -> NaN Invalid_operation +dqrot813 rotate 1 Inf -> NaN Invalid_operation +dqrot814 rotate 1000 Inf -> NaN Invalid_operation +dqrot815 rotate Inf Inf -> NaN Invalid_operation + +dqrot821 rotate NaN -Inf -> NaN +dqrot822 rotate NaN -1000 -> NaN +dqrot823 rotate NaN -1 -> NaN +dqrot824 rotate NaN -0 -> NaN +dqrot825 rotate NaN 0 -> NaN +dqrot826 rotate NaN 1 -> NaN +dqrot827 rotate NaN 1000 -> NaN +dqrot828 rotate NaN Inf -> NaN +dqrot829 rotate NaN NaN -> NaN +dqrot830 rotate -Inf NaN -> NaN +dqrot831 rotate -1000 NaN -> NaN +dqrot832 rotate -1 NaN -> NaN +dqrot833 rotate -0 NaN -> NaN +dqrot834 rotate 0 NaN -> NaN +dqrot835 rotate 1 NaN -> NaN +dqrot836 rotate 1000 NaN -> NaN +dqrot837 rotate Inf NaN -> NaN + +dqrot841 rotate sNaN -Inf -> NaN Invalid_operation +dqrot842 rotate sNaN -1000 -> NaN Invalid_operation +dqrot843 rotate sNaN -1 -> NaN Invalid_operation +dqrot844 rotate sNaN -0 -> NaN Invalid_operation +dqrot845 rotate sNaN 0 -> NaN Invalid_operation +dqrot846 rotate sNaN 1 -> NaN Invalid_operation +dqrot847 rotate sNaN 1000 -> NaN Invalid_operation +dqrot848 rotate sNaN NaN -> NaN Invalid_operation +dqrot849 rotate sNaN sNaN -> NaN Invalid_operation +dqrot850 rotate NaN sNaN -> NaN Invalid_operation +dqrot851 rotate -Inf sNaN -> NaN Invalid_operation +dqrot852 rotate -1000 sNaN -> NaN Invalid_operation +dqrot853 rotate -1 sNaN -> NaN Invalid_operation +dqrot854 rotate -0 sNaN -> NaN Invalid_operation +dqrot855 rotate 0 sNaN -> NaN Invalid_operation +dqrot856 rotate 1 sNaN -> NaN Invalid_operation +dqrot857 rotate 1000 sNaN -> NaN Invalid_operation +dqrot858 rotate Inf sNaN -> NaN Invalid_operation +dqrot859 rotate NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqrot861 rotate NaN1 -Inf -> NaN1 +dqrot862 rotate +NaN2 -1000 -> NaN2 +dqrot863 rotate NaN3 1000 -> NaN3 +dqrot864 rotate NaN4 Inf -> NaN4 +dqrot865 rotate NaN5 +NaN6 -> NaN5 +dqrot866 rotate -Inf NaN7 -> NaN7 +dqrot867 rotate -1000 NaN8 -> NaN8 +dqrot868 rotate 1000 NaN9 -> NaN9 +dqrot869 rotate Inf +NaN10 -> NaN10 +dqrot871 rotate sNaN11 -Inf -> NaN11 Invalid_operation +dqrot872 rotate sNaN12 -1000 -> NaN12 Invalid_operation +dqrot873 rotate sNaN13 1000 -> NaN13 Invalid_operation +dqrot874 rotate sNaN14 NaN17 -> NaN14 Invalid_operation +dqrot875 rotate sNaN15 sNaN18 -> NaN15 Invalid_operation +dqrot876 rotate NaN16 sNaN19 -> NaN19 Invalid_operation +dqrot877 rotate -Inf +sNaN20 -> NaN20 Invalid_operation +dqrot878 rotate -1000 sNaN21 -> NaN21 Invalid_operation +dqrot879 rotate 1000 sNaN22 -> NaN22 Invalid_operation +dqrot880 rotate Inf sNaN23 -> NaN23 Invalid_operation +dqrot881 rotate +NaN25 +sNaN24 -> NaN24 Invalid_operation +dqrot882 rotate -NaN26 NaN28 -> -NaN26 +dqrot883 rotate -sNaN27 sNaN29 -> -NaN27 Invalid_operation +dqrot884 rotate 1000 -NaN30 -> -NaN30 +dqrot885 rotate 1000 -sNaN31 -> -NaN31 Invalid_operation diff --git a/Lib/test/decimaltestdata/dqSameQuantum.decTest b/Lib/test/decimaltestdata/dqSameQuantum.decTest index 2f356bb..257cda8 100644 --- a/Lib/test/decimaltestdata/dqSameQuantum.decTest +++ b/Lib/test/decimaltestdata/dqSameQuantum.decTest @@ -1,389 +1,389 @@ ------------------------------------------------------------------------- --- dqSameQuantum.decTest -- check decQuad quantums match -- --- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- All operands and results are decQuads. -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - -dqsamq001 samequantum 0 0 -> 1 -dqsamq002 samequantum 0 1 -> 1 -dqsamq003 samequantum 1 0 -> 1 -dqsamq004 samequantum 1 1 -> 1 - -dqsamq011 samequantum 10 1E+1 -> 0 -dqsamq012 samequantum 10E+1 10E+1 -> 1 -dqsamq013 samequantum 100 10E+1 -> 0 -dqsamq014 samequantum 100 1E+2 -> 0 -dqsamq015 samequantum 0.1 1E-2 -> 0 -dqsamq016 samequantum 0.1 1E-1 -> 1 -dqsamq017 samequantum 0.1 1E-0 -> 0 -dqsamq018 samequantum 999 999 -> 1 -dqsamq019 samequantum 999E-1 99.9 -> 1 -dqsamq020 samequantum 111E-1 22.2 -> 1 -dqsamq021 samequantum 111E-1 1234.2 -> 1 - --- zeros -dqsamq030 samequantum 0.0 1.1 -> 1 -dqsamq031 samequantum 0.0 1.11 -> 0 -dqsamq032 samequantum 0.0 0 -> 0 -dqsamq033 samequantum 0.0 0.0 -> 1 -dqsamq034 samequantum 0.0 0.00 -> 0 -dqsamq035 samequantum 0E+1 0E+0 -> 0 -dqsamq036 samequantum 0E+1 0E+1 -> 1 -dqsamq037 samequantum 0E+1 0E+2 -> 0 -dqsamq038 samequantum 0E-17 0E-16 -> 0 -dqsamq039 samequantum 0E-17 0E-17 -> 1 -dqsamq040 samequantum 0E-17 0E-18 -> 0 -dqsamq041 samequantum 0E-17 0.0E-15 -> 0 -dqsamq042 samequantum 0E-17 0.0E-16 -> 1 -dqsamq043 samequantum 0E-17 0.0E-17 -> 0 -dqsamq044 samequantum -0E-17 0.0E-16 -> 1 -dqsamq045 samequantum 0E-17 -0.0E-17 -> 0 -dqsamq046 samequantum 0E-17 -0.0E-16 -> 1 -dqsamq047 samequantum -0E-17 0.0E-17 -> 0 -dqsamq048 samequantum -0E-17 -0.0E-16 -> 1 -dqsamq049 samequantum -0E-17 -0.0E-17 -> 0 - --- Nmax, Nmin, Ntiny -dqsamq051 samequantum 9.99999999999999999999999999999999E+6144 9.99999999999999999999999999999999E+6144 -> 1 -dqsamq052 samequantum 1E-6143 1E-6143 -> 1 -dqsamq053 samequantum 1.00000000000000000000000000000000E-6143 1.00000000000000000000000000000000E-6143 -> 1 -dqsamq054 samequantum 1E-6176 1E-6176 -> 1 -dqsamq055 samequantum 9.99999999999999999999999999999999E+6144 9.99999999999999999999999999999999E+6144 -> 1 -dqsamq056 samequantum 1E-6143 1E-6143 -> 1 -dqsamq057 samequantum 1.00000000000000000000000000000000E-6143 1.00000000000000000000000000000000E-6143 -> 1 -dqsamq058 samequantum 1E-6176 1E-6176 -> 1 - -dqsamq061 samequantum -1E-6176 -1E-6176 -> 1 -dqsamq062 samequantum -1.00000000000000000000000000000000E-6143 -1.00000000000000000000000000000000E-6143 -> 1 -dqsamq063 samequantum -1E-6143 -1E-6143 -> 1 -dqsamq064 samequantum -9.99999999999999999999999999999999E+6144 -9.99999999999999999999999999999999E+6144 -> 1 -dqsamq065 samequantum -1E-6176 -1E-6176 -> 1 -dqsamq066 samequantum -1.00000000000000000000000000000000E-6143 -1.00000000000000000000000000000000E-6143 -> 1 -dqsamq067 samequantum -1E-6143 -1E-6143 -> 1 -dqsamq068 samequantum -9.99999999999999999999999999999999E+6144 -9.99999999999999999999999999999999E+6144 -> 1 - -dqsamq071 samequantum -4E-6176 -1E-6176 -> 1 -dqsamq072 samequantum -4.00000000000000000000000000000000E-6143 -1.00000000000000000000000000004000E-6143 -> 1 -dqsamq073 samequantum -4E-6143 -1E-6143 -> 1 -dqsamq074 samequantum -4.99999999999999999999999999999999E+6144 -9.99949999999999999999999999999999E+6144 -> 1 -dqsamq075 samequantum -4E-6176 -1E-6176 -> 1 -dqsamq076 samequantum -4.00000000000000000000000000000000E-6143 -1.00400000000000000000000000000000E-6143 -> 1 -dqsamq077 samequantum -4E-6143 -1E-6143 -> 1 -dqsamq078 samequantum -4.99999999999999999999999999999999E+6144 -9.94999999999999999999999999999999E+6144 -> 1 - -dqsamq081 samequantum -4E-1006 -1E-6176 -> 0 -dqsamq082 samequantum -4.00000000000000000000000000000000E-6143 -1.00004000000000000000000000000000E-6136 -> 0 -dqsamq083 samequantum -4E-6140 -1E-6143 -> 0 -dqsamq084 samequantum -4.99999999999999999999999999999999E+6144 -9.99949999999999999999999999999999E+6136 -> 0 -dqsamq085 samequantum -4E-1006 -1E-6176 -> 0 -dqsamq086 samequantum -4.00000000000000000000000000000000E-6143 -1.00400000000000000000000000000000E-6136 -> 0 -dqsamq087 samequantum -4E-6133 -1E-6143 -> 0 -dqsamq088 samequantum -4.99999999999999999999999999999999E+6144 -9.94999999999999999999999999999999E+6136 -> 0 - --- specials & combinations -dqsamq0110 samequantum -Inf -Inf -> 1 -dqsamq0111 samequantum -Inf Inf -> 1 -dqsamq0112 samequantum -Inf NaN -> 0 -dqsamq0113 samequantum -Inf -7E+3 -> 0 -dqsamq0114 samequantum -Inf -7 -> 0 -dqsamq0115 samequantum -Inf -7E-3 -> 0 -dqsamq0116 samequantum -Inf -0E-3 -> 0 -dqsamq0117 samequantum -Inf -0 -> 0 -dqsamq0118 samequantum -Inf -0E+3 -> 0 -dqsamq0119 samequantum -Inf 0E-3 -> 0 -dqsamq0120 samequantum -Inf 0 -> 0 -dqsamq0121 samequantum -Inf 0E+3 -> 0 -dqsamq0122 samequantum -Inf 7E-3 -> 0 -dqsamq0123 samequantum -Inf 7 -> 0 -dqsamq0124 samequantum -Inf 7E+3 -> 0 -dqsamq0125 samequantum -Inf sNaN -> 0 - -dqsamq0210 samequantum Inf -Inf -> 1 -dqsamq0211 samequantum Inf Inf -> 1 -dqsamq0212 samequantum Inf NaN -> 0 -dqsamq0213 samequantum Inf -7E+3 -> 0 -dqsamq0214 samequantum Inf -7 -> 0 -dqsamq0215 samequantum Inf -7E-3 -> 0 -dqsamq0216 samequantum Inf -0E-3 -> 0 -dqsamq0217 samequantum Inf -0 -> 0 -dqsamq0218 samequantum Inf -0E+3 -> 0 -dqsamq0219 samequantum Inf 0E-3 -> 0 -dqsamq0220 samequantum Inf 0 -> 0 -dqsamq0221 samequantum Inf 0E+3 -> 0 -dqsamq0222 samequantum Inf 7E-3 -> 0 -dqsamq0223 samequantum Inf 7 -> 0 -dqsamq0224 samequantum Inf 7E+3 -> 0 -dqsamq0225 samequantum Inf sNaN -> 0 - -dqsamq0310 samequantum NaN -Inf -> 0 -dqsamq0311 samequantum NaN Inf -> 0 -dqsamq0312 samequantum NaN NaN -> 1 -dqsamq0313 samequantum NaN -7E+3 -> 0 -dqsamq0314 samequantum NaN -7 -> 0 -dqsamq0315 samequantum NaN -7E-3 -> 0 -dqsamq0316 samequantum NaN -0E-3 -> 0 -dqsamq0317 samequantum NaN -0 -> 0 -dqsamq0318 samequantum NaN -0E+3 -> 0 -dqsamq0319 samequantum NaN 0E-3 -> 0 -dqsamq0320 samequantum NaN 0 -> 0 -dqsamq0321 samequantum NaN 0E+3 -> 0 -dqsamq0322 samequantum NaN 7E-3 -> 0 -dqsamq0323 samequantum NaN 7 -> 0 -dqsamq0324 samequantum NaN 7E+3 -> 0 -dqsamq0325 samequantum NaN sNaN -> 1 - -dqsamq0410 samequantum -7E+3 -Inf -> 0 -dqsamq0411 samequantum -7E+3 Inf -> 0 -dqsamq0412 samequantum -7E+3 NaN -> 0 -dqsamq0413 samequantum -7E+3 -7E+3 -> 1 -dqsamq0414 samequantum -7E+3 -7 -> 0 -dqsamq0415 samequantum -7E+3 -7E-3 -> 0 -dqsamq0416 samequantum -7E+3 -0E-3 -> 0 -dqsamq0417 samequantum -7E+3 -0 -> 0 -dqsamq0418 samequantum -7E+3 -0E+3 -> 1 -dqsamq0419 samequantum -7E+3 0E-3 -> 0 -dqsamq0420 samequantum -7E+3 0 -> 0 -dqsamq0421 samequantum -7E+3 0E+3 -> 1 -dqsamq0422 samequantum -7E+3 7E-3 -> 0 -dqsamq0423 samequantum -7E+3 7 -> 0 -dqsamq0424 samequantum -7E+3 7E+3 -> 1 -dqsamq0425 samequantum -7E+3 sNaN -> 0 - -dqsamq0510 samequantum -7 -Inf -> 0 -dqsamq0511 samequantum -7 Inf -> 0 -dqsamq0512 samequantum -7 NaN -> 0 -dqsamq0513 samequantum -7 -7E+3 -> 0 -dqsamq0514 samequantum -7 -7 -> 1 -dqsamq0515 samequantum -7 -7E-3 -> 0 -dqsamq0516 samequantum -7 -0E-3 -> 0 -dqsamq0517 samequantum -7 -0 -> 1 -dqsamq0518 samequantum -7 -0E+3 -> 0 -dqsamq0519 samequantum -7 0E-3 -> 0 -dqsamq0520 samequantum -7 0 -> 1 -dqsamq0521 samequantum -7 0E+3 -> 0 -dqsamq0522 samequantum -7 7E-3 -> 0 -dqsamq0523 samequantum -7 7 -> 1 -dqsamq0524 samequantum -7 7E+3 -> 0 -dqsamq0525 samequantum -7 sNaN -> 0 - -dqsamq0610 samequantum -7E-3 -Inf -> 0 -dqsamq0611 samequantum -7E-3 Inf -> 0 -dqsamq0612 samequantum -7E-3 NaN -> 0 -dqsamq0613 samequantum -7E-3 -7E+3 -> 0 -dqsamq0614 samequantum -7E-3 -7 -> 0 -dqsamq0615 samequantum -7E-3 -7E-3 -> 1 -dqsamq0616 samequantum -7E-3 -0E-3 -> 1 -dqsamq0617 samequantum -7E-3 -0 -> 0 -dqsamq0618 samequantum -7E-3 -0E+3 -> 0 -dqsamq0619 samequantum -7E-3 0E-3 -> 1 -dqsamq0620 samequantum -7E-3 0 -> 0 -dqsamq0621 samequantum -7E-3 0E+3 -> 0 -dqsamq0622 samequantum -7E-3 7E-3 -> 1 -dqsamq0623 samequantum -7E-3 7 -> 0 -dqsamq0624 samequantum -7E-3 7E+3 -> 0 -dqsamq0625 samequantum -7E-3 sNaN -> 0 - -dqsamq0710 samequantum -0E-3 -Inf -> 0 -dqsamq0711 samequantum -0E-3 Inf -> 0 -dqsamq0712 samequantum -0E-3 NaN -> 0 -dqsamq0713 samequantum -0E-3 -7E+3 -> 0 -dqsamq0714 samequantum -0E-3 -7 -> 0 -dqsamq0715 samequantum -0E-3 -7E-3 -> 1 -dqsamq0716 samequantum -0E-3 -0E-3 -> 1 -dqsamq0717 samequantum -0E-3 -0 -> 0 -dqsamq0718 samequantum -0E-3 -0E+3 -> 0 -dqsamq0719 samequantum -0E-3 0E-3 -> 1 -dqsamq0720 samequantum -0E-3 0 -> 0 -dqsamq0721 samequantum -0E-3 0E+3 -> 0 -dqsamq0722 samequantum -0E-3 7E-3 -> 1 -dqsamq0723 samequantum -0E-3 7 -> 0 -dqsamq0724 samequantum -0E-3 7E+3 -> 0 -dqsamq0725 samequantum -0E-3 sNaN -> 0 - -dqsamq0810 samequantum -0 -Inf -> 0 -dqsamq0811 samequantum -0 Inf -> 0 -dqsamq0812 samequantum -0 NaN -> 0 -dqsamq0813 samequantum -0 -7E+3 -> 0 -dqsamq0814 samequantum -0 -7 -> 1 -dqsamq0815 samequantum -0 -7E-3 -> 0 -dqsamq0816 samequantum -0 -0E-3 -> 0 -dqsamq0817 samequantum -0 -0 -> 1 -dqsamq0818 samequantum -0 -0E+3 -> 0 -dqsamq0819 samequantum -0 0E-3 -> 0 -dqsamq0820 samequantum -0 0 -> 1 -dqsamq0821 samequantum -0 0E+3 -> 0 -dqsamq0822 samequantum -0 7E-3 -> 0 -dqsamq0823 samequantum -0 7 -> 1 -dqsamq0824 samequantum -0 7E+3 -> 0 -dqsamq0825 samequantum -0 sNaN -> 0 - -dqsamq0910 samequantum -0E+3 -Inf -> 0 -dqsamq0911 samequantum -0E+3 Inf -> 0 -dqsamq0912 samequantum -0E+3 NaN -> 0 -dqsamq0913 samequantum -0E+3 -7E+3 -> 1 -dqsamq0914 samequantum -0E+3 -7 -> 0 -dqsamq0915 samequantum -0E+3 -7E-3 -> 0 -dqsamq0916 samequantum -0E+3 -0E-3 -> 0 -dqsamq0917 samequantum -0E+3 -0 -> 0 -dqsamq0918 samequantum -0E+3 -0E+3 -> 1 -dqsamq0919 samequantum -0E+3 0E-3 -> 0 -dqsamq0920 samequantum -0E+3 0 -> 0 -dqsamq0921 samequantum -0E+3 0E+3 -> 1 -dqsamq0922 samequantum -0E+3 7E-3 -> 0 -dqsamq0923 samequantum -0E+3 7 -> 0 -dqsamq0924 samequantum -0E+3 7E+3 -> 1 -dqsamq0925 samequantum -0E+3 sNaN -> 0 - -dqsamq1110 samequantum 0E-3 -Inf -> 0 -dqsamq1111 samequantum 0E-3 Inf -> 0 -dqsamq1112 samequantum 0E-3 NaN -> 0 -dqsamq1113 samequantum 0E-3 -7E+3 -> 0 -dqsamq1114 samequantum 0E-3 -7 -> 0 -dqsamq1115 samequantum 0E-3 -7E-3 -> 1 -dqsamq1116 samequantum 0E-3 -0E-3 -> 1 -dqsamq1117 samequantum 0E-3 -0 -> 0 -dqsamq1118 samequantum 0E-3 -0E+3 -> 0 -dqsamq1119 samequantum 0E-3 0E-3 -> 1 -dqsamq1120 samequantum 0E-3 0 -> 0 -dqsamq1121 samequantum 0E-3 0E+3 -> 0 -dqsamq1122 samequantum 0E-3 7E-3 -> 1 -dqsamq1123 samequantum 0E-3 7 -> 0 -dqsamq1124 samequantum 0E-3 7E+3 -> 0 -dqsamq1125 samequantum 0E-3 sNaN -> 0 - -dqsamq1210 samequantum 0 -Inf -> 0 -dqsamq1211 samequantum 0 Inf -> 0 -dqsamq1212 samequantum 0 NaN -> 0 -dqsamq1213 samequantum 0 -7E+3 -> 0 -dqsamq1214 samequantum 0 -7 -> 1 -dqsamq1215 samequantum 0 -7E-3 -> 0 -dqsamq1216 samequantum 0 -0E-3 -> 0 -dqsamq1217 samequantum 0 -0 -> 1 -dqsamq1218 samequantum 0 -0E+3 -> 0 -dqsamq1219 samequantum 0 0E-3 -> 0 -dqsamq1220 samequantum 0 0 -> 1 -dqsamq1221 samequantum 0 0E+3 -> 0 -dqsamq1222 samequantum 0 7E-3 -> 0 -dqsamq1223 samequantum 0 7 -> 1 -dqsamq1224 samequantum 0 7E+3 -> 0 -dqsamq1225 samequantum 0 sNaN -> 0 - -dqsamq1310 samequantum 0E+3 -Inf -> 0 -dqsamq1311 samequantum 0E+3 Inf -> 0 -dqsamq1312 samequantum 0E+3 NaN -> 0 -dqsamq1313 samequantum 0E+3 -7E+3 -> 1 -dqsamq1314 samequantum 0E+3 -7 -> 0 -dqsamq1315 samequantum 0E+3 -7E-3 -> 0 -dqsamq1316 samequantum 0E+3 -0E-3 -> 0 -dqsamq1317 samequantum 0E+3 -0 -> 0 -dqsamq1318 samequantum 0E+3 -0E+3 -> 1 -dqsamq1319 samequantum 0E+3 0E-3 -> 0 -dqsamq1320 samequantum 0E+3 0 -> 0 -dqsamq1321 samequantum 0E+3 0E+3 -> 1 -dqsamq1322 samequantum 0E+3 7E-3 -> 0 -dqsamq1323 samequantum 0E+3 7 -> 0 -dqsamq1324 samequantum 0E+3 7E+3 -> 1 -dqsamq1325 samequantum 0E+3 sNaN -> 0 - -dqsamq1410 samequantum 7E-3 -Inf -> 0 -dqsamq1411 samequantum 7E-3 Inf -> 0 -dqsamq1412 samequantum 7E-3 NaN -> 0 -dqsamq1413 samequantum 7E-3 -7E+3 -> 0 -dqsamq1414 samequantum 7E-3 -7 -> 0 -dqsamq1415 samequantum 7E-3 -7E-3 -> 1 -dqsamq1416 samequantum 7E-3 -0E-3 -> 1 -dqsamq1417 samequantum 7E-3 -0 -> 0 -dqsamq1418 samequantum 7E-3 -0E+3 -> 0 -dqsamq1419 samequantum 7E-3 0E-3 -> 1 -dqsamq1420 samequantum 7E-3 0 -> 0 -dqsamq1421 samequantum 7E-3 0E+3 -> 0 -dqsamq1422 samequantum 7E-3 7E-3 -> 1 -dqsamq1423 samequantum 7E-3 7 -> 0 -dqsamq1424 samequantum 7E-3 7E+3 -> 0 -dqsamq1425 samequantum 7E-3 sNaN -> 0 - -dqsamq1510 samequantum 7 -Inf -> 0 -dqsamq1511 samequantum 7 Inf -> 0 -dqsamq1512 samequantum 7 NaN -> 0 -dqsamq1513 samequantum 7 -7E+3 -> 0 -dqsamq1514 samequantum 7 -7 -> 1 -dqsamq1515 samequantum 7 -7E-3 -> 0 -dqsamq1516 samequantum 7 -0E-3 -> 0 -dqsamq1517 samequantum 7 -0 -> 1 -dqsamq1518 samequantum 7 -0E+3 -> 0 -dqsamq1519 samequantum 7 0E-3 -> 0 -dqsamq1520 samequantum 7 0 -> 1 -dqsamq1521 samequantum 7 0E+3 -> 0 -dqsamq1522 samequantum 7 7E-3 -> 0 -dqsamq1523 samequantum 7 7 -> 1 -dqsamq1524 samequantum 7 7E+3 -> 0 -dqsamq1525 samequantum 7 sNaN -> 0 - -dqsamq1610 samequantum 7E+3 -Inf -> 0 -dqsamq1611 samequantum 7E+3 Inf -> 0 -dqsamq1612 samequantum 7E+3 NaN -> 0 -dqsamq1613 samequantum 7E+3 -7E+3 -> 1 -dqsamq1614 samequantum 7E+3 -7 -> 0 -dqsamq1615 samequantum 7E+3 -7E-3 -> 0 -dqsamq1616 samequantum 7E+3 -0E-3 -> 0 -dqsamq1617 samequantum 7E+3 -0 -> 0 -dqsamq1618 samequantum 7E+3 -0E+3 -> 1 -dqsamq1619 samequantum 7E+3 0E-3 -> 0 -dqsamq1620 samequantum 7E+3 0 -> 0 -dqsamq1621 samequantum 7E+3 0E+3 -> 1 -dqsamq1622 samequantum 7E+3 7E-3 -> 0 -dqsamq1623 samequantum 7E+3 7 -> 0 -dqsamq1624 samequantum 7E+3 7E+3 -> 1 -dqsamq1625 samequantum 7E+3 sNaN -> 0 - -dqsamq1710 samequantum sNaN -Inf -> 0 -dqsamq1711 samequantum sNaN Inf -> 0 -dqsamq1712 samequantum sNaN NaN -> 1 -dqsamq1713 samequantum sNaN -7E+3 -> 0 -dqsamq1714 samequantum sNaN -7 -> 0 -dqsamq1715 samequantum sNaN -7E-3 -> 0 -dqsamq1716 samequantum sNaN -0E-3 -> 0 -dqsamq1717 samequantum sNaN -0 -> 0 -dqsamq1718 samequantum sNaN -0E+3 -> 0 -dqsamq1719 samequantum sNaN 0E-3 -> 0 -dqsamq1720 samequantum sNaN 0 -> 0 -dqsamq1721 samequantum sNaN 0E+3 -> 0 -dqsamq1722 samequantum sNaN 7E-3 -> 0 -dqsamq1723 samequantum sNaN 7 -> 0 -dqsamq1724 samequantum sNaN 7E+3 -> 0 -dqsamq1725 samequantum sNaN sNaN -> 1 --- noisy NaNs -dqsamq1730 samequantum sNaN3 sNaN3 -> 1 -dqsamq1731 samequantum sNaN3 sNaN4 -> 1 -dqsamq1732 samequantum NaN3 NaN3 -> 1 -dqsamq1733 samequantum NaN3 NaN4 -> 1 -dqsamq1734 samequantum sNaN3 3 -> 0 -dqsamq1735 samequantum NaN3 3 -> 0 -dqsamq1736 samequantum 4 sNaN4 -> 0 -dqsamq1737 samequantum 3 NaN3 -> 0 -dqsamq1738 samequantum Inf sNaN4 -> 0 -dqsamq1739 samequantum -Inf NaN3 -> 0 - +------------------------------------------------------------------------ +-- dqSameQuantum.decTest -- check decQuad quantums match -- +-- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- All operands and results are decQuads. +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +dqsamq001 samequantum 0 0 -> 1 +dqsamq002 samequantum 0 1 -> 1 +dqsamq003 samequantum 1 0 -> 1 +dqsamq004 samequantum 1 1 -> 1 + +dqsamq011 samequantum 10 1E+1 -> 0 +dqsamq012 samequantum 10E+1 10E+1 -> 1 +dqsamq013 samequantum 100 10E+1 -> 0 +dqsamq014 samequantum 100 1E+2 -> 0 +dqsamq015 samequantum 0.1 1E-2 -> 0 +dqsamq016 samequantum 0.1 1E-1 -> 1 +dqsamq017 samequantum 0.1 1E-0 -> 0 +dqsamq018 samequantum 999 999 -> 1 +dqsamq019 samequantum 999E-1 99.9 -> 1 +dqsamq020 samequantum 111E-1 22.2 -> 1 +dqsamq021 samequantum 111E-1 1234.2 -> 1 + +-- zeros +dqsamq030 samequantum 0.0 1.1 -> 1 +dqsamq031 samequantum 0.0 1.11 -> 0 +dqsamq032 samequantum 0.0 0 -> 0 +dqsamq033 samequantum 0.0 0.0 -> 1 +dqsamq034 samequantum 0.0 0.00 -> 0 +dqsamq035 samequantum 0E+1 0E+0 -> 0 +dqsamq036 samequantum 0E+1 0E+1 -> 1 +dqsamq037 samequantum 0E+1 0E+2 -> 0 +dqsamq038 samequantum 0E-17 0E-16 -> 0 +dqsamq039 samequantum 0E-17 0E-17 -> 1 +dqsamq040 samequantum 0E-17 0E-18 -> 0 +dqsamq041 samequantum 0E-17 0.0E-15 -> 0 +dqsamq042 samequantum 0E-17 0.0E-16 -> 1 +dqsamq043 samequantum 0E-17 0.0E-17 -> 0 +dqsamq044 samequantum -0E-17 0.0E-16 -> 1 +dqsamq045 samequantum 0E-17 -0.0E-17 -> 0 +dqsamq046 samequantum 0E-17 -0.0E-16 -> 1 +dqsamq047 samequantum -0E-17 0.0E-17 -> 0 +dqsamq048 samequantum -0E-17 -0.0E-16 -> 1 +dqsamq049 samequantum -0E-17 -0.0E-17 -> 0 + +-- Nmax, Nmin, Ntiny +dqsamq051 samequantum 9.99999999999999999999999999999999E+6144 9.99999999999999999999999999999999E+6144 -> 1 +dqsamq052 samequantum 1E-6143 1E-6143 -> 1 +dqsamq053 samequantum 1.00000000000000000000000000000000E-6143 1.00000000000000000000000000000000E-6143 -> 1 +dqsamq054 samequantum 1E-6176 1E-6176 -> 1 +dqsamq055 samequantum 9.99999999999999999999999999999999E+6144 9.99999999999999999999999999999999E+6144 -> 1 +dqsamq056 samequantum 1E-6143 1E-6143 -> 1 +dqsamq057 samequantum 1.00000000000000000000000000000000E-6143 1.00000000000000000000000000000000E-6143 -> 1 +dqsamq058 samequantum 1E-6176 1E-6176 -> 1 + +dqsamq061 samequantum -1E-6176 -1E-6176 -> 1 +dqsamq062 samequantum -1.00000000000000000000000000000000E-6143 -1.00000000000000000000000000000000E-6143 -> 1 +dqsamq063 samequantum -1E-6143 -1E-6143 -> 1 +dqsamq064 samequantum -9.99999999999999999999999999999999E+6144 -9.99999999999999999999999999999999E+6144 -> 1 +dqsamq065 samequantum -1E-6176 -1E-6176 -> 1 +dqsamq066 samequantum -1.00000000000000000000000000000000E-6143 -1.00000000000000000000000000000000E-6143 -> 1 +dqsamq067 samequantum -1E-6143 -1E-6143 -> 1 +dqsamq068 samequantum -9.99999999999999999999999999999999E+6144 -9.99999999999999999999999999999999E+6144 -> 1 + +dqsamq071 samequantum -4E-6176 -1E-6176 -> 1 +dqsamq072 samequantum -4.00000000000000000000000000000000E-6143 -1.00000000000000000000000000004000E-6143 -> 1 +dqsamq073 samequantum -4E-6143 -1E-6143 -> 1 +dqsamq074 samequantum -4.99999999999999999999999999999999E+6144 -9.99949999999999999999999999999999E+6144 -> 1 +dqsamq075 samequantum -4E-6176 -1E-6176 -> 1 +dqsamq076 samequantum -4.00000000000000000000000000000000E-6143 -1.00400000000000000000000000000000E-6143 -> 1 +dqsamq077 samequantum -4E-6143 -1E-6143 -> 1 +dqsamq078 samequantum -4.99999999999999999999999999999999E+6144 -9.94999999999999999999999999999999E+6144 -> 1 + +dqsamq081 samequantum -4E-1006 -1E-6176 -> 0 +dqsamq082 samequantum -4.00000000000000000000000000000000E-6143 -1.00004000000000000000000000000000E-6136 -> 0 +dqsamq083 samequantum -4E-6140 -1E-6143 -> 0 +dqsamq084 samequantum -4.99999999999999999999999999999999E+6144 -9.99949999999999999999999999999999E+6136 -> 0 +dqsamq085 samequantum -4E-1006 -1E-6176 -> 0 +dqsamq086 samequantum -4.00000000000000000000000000000000E-6143 -1.00400000000000000000000000000000E-6136 -> 0 +dqsamq087 samequantum -4E-6133 -1E-6143 -> 0 +dqsamq088 samequantum -4.99999999999999999999999999999999E+6144 -9.94999999999999999999999999999999E+6136 -> 0 + +-- specials & combinations +dqsamq0110 samequantum -Inf -Inf -> 1 +dqsamq0111 samequantum -Inf Inf -> 1 +dqsamq0112 samequantum -Inf NaN -> 0 +dqsamq0113 samequantum -Inf -7E+3 -> 0 +dqsamq0114 samequantum -Inf -7 -> 0 +dqsamq0115 samequantum -Inf -7E-3 -> 0 +dqsamq0116 samequantum -Inf -0E-3 -> 0 +dqsamq0117 samequantum -Inf -0 -> 0 +dqsamq0118 samequantum -Inf -0E+3 -> 0 +dqsamq0119 samequantum -Inf 0E-3 -> 0 +dqsamq0120 samequantum -Inf 0 -> 0 +dqsamq0121 samequantum -Inf 0E+3 -> 0 +dqsamq0122 samequantum -Inf 7E-3 -> 0 +dqsamq0123 samequantum -Inf 7 -> 0 +dqsamq0124 samequantum -Inf 7E+3 -> 0 +dqsamq0125 samequantum -Inf sNaN -> 0 + +dqsamq0210 samequantum Inf -Inf -> 1 +dqsamq0211 samequantum Inf Inf -> 1 +dqsamq0212 samequantum Inf NaN -> 0 +dqsamq0213 samequantum Inf -7E+3 -> 0 +dqsamq0214 samequantum Inf -7 -> 0 +dqsamq0215 samequantum Inf -7E-3 -> 0 +dqsamq0216 samequantum Inf -0E-3 -> 0 +dqsamq0217 samequantum Inf -0 -> 0 +dqsamq0218 samequantum Inf -0E+3 -> 0 +dqsamq0219 samequantum Inf 0E-3 -> 0 +dqsamq0220 samequantum Inf 0 -> 0 +dqsamq0221 samequantum Inf 0E+3 -> 0 +dqsamq0222 samequantum Inf 7E-3 -> 0 +dqsamq0223 samequantum Inf 7 -> 0 +dqsamq0224 samequantum Inf 7E+3 -> 0 +dqsamq0225 samequantum Inf sNaN -> 0 + +dqsamq0310 samequantum NaN -Inf -> 0 +dqsamq0311 samequantum NaN Inf -> 0 +dqsamq0312 samequantum NaN NaN -> 1 +dqsamq0313 samequantum NaN -7E+3 -> 0 +dqsamq0314 samequantum NaN -7 -> 0 +dqsamq0315 samequantum NaN -7E-3 -> 0 +dqsamq0316 samequantum NaN -0E-3 -> 0 +dqsamq0317 samequantum NaN -0 -> 0 +dqsamq0318 samequantum NaN -0E+3 -> 0 +dqsamq0319 samequantum NaN 0E-3 -> 0 +dqsamq0320 samequantum NaN 0 -> 0 +dqsamq0321 samequantum NaN 0E+3 -> 0 +dqsamq0322 samequantum NaN 7E-3 -> 0 +dqsamq0323 samequantum NaN 7 -> 0 +dqsamq0324 samequantum NaN 7E+3 -> 0 +dqsamq0325 samequantum NaN sNaN -> 1 + +dqsamq0410 samequantum -7E+3 -Inf -> 0 +dqsamq0411 samequantum -7E+3 Inf -> 0 +dqsamq0412 samequantum -7E+3 NaN -> 0 +dqsamq0413 samequantum -7E+3 -7E+3 -> 1 +dqsamq0414 samequantum -7E+3 -7 -> 0 +dqsamq0415 samequantum -7E+3 -7E-3 -> 0 +dqsamq0416 samequantum -7E+3 -0E-3 -> 0 +dqsamq0417 samequantum -7E+3 -0 -> 0 +dqsamq0418 samequantum -7E+3 -0E+3 -> 1 +dqsamq0419 samequantum -7E+3 0E-3 -> 0 +dqsamq0420 samequantum -7E+3 0 -> 0 +dqsamq0421 samequantum -7E+3 0E+3 -> 1 +dqsamq0422 samequantum -7E+3 7E-3 -> 0 +dqsamq0423 samequantum -7E+3 7 -> 0 +dqsamq0424 samequantum -7E+3 7E+3 -> 1 +dqsamq0425 samequantum -7E+3 sNaN -> 0 + +dqsamq0510 samequantum -7 -Inf -> 0 +dqsamq0511 samequantum -7 Inf -> 0 +dqsamq0512 samequantum -7 NaN -> 0 +dqsamq0513 samequantum -7 -7E+3 -> 0 +dqsamq0514 samequantum -7 -7 -> 1 +dqsamq0515 samequantum -7 -7E-3 -> 0 +dqsamq0516 samequantum -7 -0E-3 -> 0 +dqsamq0517 samequantum -7 -0 -> 1 +dqsamq0518 samequantum -7 -0E+3 -> 0 +dqsamq0519 samequantum -7 0E-3 -> 0 +dqsamq0520 samequantum -7 0 -> 1 +dqsamq0521 samequantum -7 0E+3 -> 0 +dqsamq0522 samequantum -7 7E-3 -> 0 +dqsamq0523 samequantum -7 7 -> 1 +dqsamq0524 samequantum -7 7E+3 -> 0 +dqsamq0525 samequantum -7 sNaN -> 0 + +dqsamq0610 samequantum -7E-3 -Inf -> 0 +dqsamq0611 samequantum -7E-3 Inf -> 0 +dqsamq0612 samequantum -7E-3 NaN -> 0 +dqsamq0613 samequantum -7E-3 -7E+3 -> 0 +dqsamq0614 samequantum -7E-3 -7 -> 0 +dqsamq0615 samequantum -7E-3 -7E-3 -> 1 +dqsamq0616 samequantum -7E-3 -0E-3 -> 1 +dqsamq0617 samequantum -7E-3 -0 -> 0 +dqsamq0618 samequantum -7E-3 -0E+3 -> 0 +dqsamq0619 samequantum -7E-3 0E-3 -> 1 +dqsamq0620 samequantum -7E-3 0 -> 0 +dqsamq0621 samequantum -7E-3 0E+3 -> 0 +dqsamq0622 samequantum -7E-3 7E-3 -> 1 +dqsamq0623 samequantum -7E-3 7 -> 0 +dqsamq0624 samequantum -7E-3 7E+3 -> 0 +dqsamq0625 samequantum -7E-3 sNaN -> 0 + +dqsamq0710 samequantum -0E-3 -Inf -> 0 +dqsamq0711 samequantum -0E-3 Inf -> 0 +dqsamq0712 samequantum -0E-3 NaN -> 0 +dqsamq0713 samequantum -0E-3 -7E+3 -> 0 +dqsamq0714 samequantum -0E-3 -7 -> 0 +dqsamq0715 samequantum -0E-3 -7E-3 -> 1 +dqsamq0716 samequantum -0E-3 -0E-3 -> 1 +dqsamq0717 samequantum -0E-3 -0 -> 0 +dqsamq0718 samequantum -0E-3 -0E+3 -> 0 +dqsamq0719 samequantum -0E-3 0E-3 -> 1 +dqsamq0720 samequantum -0E-3 0 -> 0 +dqsamq0721 samequantum -0E-3 0E+3 -> 0 +dqsamq0722 samequantum -0E-3 7E-3 -> 1 +dqsamq0723 samequantum -0E-3 7 -> 0 +dqsamq0724 samequantum -0E-3 7E+3 -> 0 +dqsamq0725 samequantum -0E-3 sNaN -> 0 + +dqsamq0810 samequantum -0 -Inf -> 0 +dqsamq0811 samequantum -0 Inf -> 0 +dqsamq0812 samequantum -0 NaN -> 0 +dqsamq0813 samequantum -0 -7E+3 -> 0 +dqsamq0814 samequantum -0 -7 -> 1 +dqsamq0815 samequantum -0 -7E-3 -> 0 +dqsamq0816 samequantum -0 -0E-3 -> 0 +dqsamq0817 samequantum -0 -0 -> 1 +dqsamq0818 samequantum -0 -0E+3 -> 0 +dqsamq0819 samequantum -0 0E-3 -> 0 +dqsamq0820 samequantum -0 0 -> 1 +dqsamq0821 samequantum -0 0E+3 -> 0 +dqsamq0822 samequantum -0 7E-3 -> 0 +dqsamq0823 samequantum -0 7 -> 1 +dqsamq0824 samequantum -0 7E+3 -> 0 +dqsamq0825 samequantum -0 sNaN -> 0 + +dqsamq0910 samequantum -0E+3 -Inf -> 0 +dqsamq0911 samequantum -0E+3 Inf -> 0 +dqsamq0912 samequantum -0E+3 NaN -> 0 +dqsamq0913 samequantum -0E+3 -7E+3 -> 1 +dqsamq0914 samequantum -0E+3 -7 -> 0 +dqsamq0915 samequantum -0E+3 -7E-3 -> 0 +dqsamq0916 samequantum -0E+3 -0E-3 -> 0 +dqsamq0917 samequantum -0E+3 -0 -> 0 +dqsamq0918 samequantum -0E+3 -0E+3 -> 1 +dqsamq0919 samequantum -0E+3 0E-3 -> 0 +dqsamq0920 samequantum -0E+3 0 -> 0 +dqsamq0921 samequantum -0E+3 0E+3 -> 1 +dqsamq0922 samequantum -0E+3 7E-3 -> 0 +dqsamq0923 samequantum -0E+3 7 -> 0 +dqsamq0924 samequantum -0E+3 7E+3 -> 1 +dqsamq0925 samequantum -0E+3 sNaN -> 0 + +dqsamq1110 samequantum 0E-3 -Inf -> 0 +dqsamq1111 samequantum 0E-3 Inf -> 0 +dqsamq1112 samequantum 0E-3 NaN -> 0 +dqsamq1113 samequantum 0E-3 -7E+3 -> 0 +dqsamq1114 samequantum 0E-3 -7 -> 0 +dqsamq1115 samequantum 0E-3 -7E-3 -> 1 +dqsamq1116 samequantum 0E-3 -0E-3 -> 1 +dqsamq1117 samequantum 0E-3 -0 -> 0 +dqsamq1118 samequantum 0E-3 -0E+3 -> 0 +dqsamq1119 samequantum 0E-3 0E-3 -> 1 +dqsamq1120 samequantum 0E-3 0 -> 0 +dqsamq1121 samequantum 0E-3 0E+3 -> 0 +dqsamq1122 samequantum 0E-3 7E-3 -> 1 +dqsamq1123 samequantum 0E-3 7 -> 0 +dqsamq1124 samequantum 0E-3 7E+3 -> 0 +dqsamq1125 samequantum 0E-3 sNaN -> 0 + +dqsamq1210 samequantum 0 -Inf -> 0 +dqsamq1211 samequantum 0 Inf -> 0 +dqsamq1212 samequantum 0 NaN -> 0 +dqsamq1213 samequantum 0 -7E+3 -> 0 +dqsamq1214 samequantum 0 -7 -> 1 +dqsamq1215 samequantum 0 -7E-3 -> 0 +dqsamq1216 samequantum 0 -0E-3 -> 0 +dqsamq1217 samequantum 0 -0 -> 1 +dqsamq1218 samequantum 0 -0E+3 -> 0 +dqsamq1219 samequantum 0 0E-3 -> 0 +dqsamq1220 samequantum 0 0 -> 1 +dqsamq1221 samequantum 0 0E+3 -> 0 +dqsamq1222 samequantum 0 7E-3 -> 0 +dqsamq1223 samequantum 0 7 -> 1 +dqsamq1224 samequantum 0 7E+3 -> 0 +dqsamq1225 samequantum 0 sNaN -> 0 + +dqsamq1310 samequantum 0E+3 -Inf -> 0 +dqsamq1311 samequantum 0E+3 Inf -> 0 +dqsamq1312 samequantum 0E+3 NaN -> 0 +dqsamq1313 samequantum 0E+3 -7E+3 -> 1 +dqsamq1314 samequantum 0E+3 -7 -> 0 +dqsamq1315 samequantum 0E+3 -7E-3 -> 0 +dqsamq1316 samequantum 0E+3 -0E-3 -> 0 +dqsamq1317 samequantum 0E+3 -0 -> 0 +dqsamq1318 samequantum 0E+3 -0E+3 -> 1 +dqsamq1319 samequantum 0E+3 0E-3 -> 0 +dqsamq1320 samequantum 0E+3 0 -> 0 +dqsamq1321 samequantum 0E+3 0E+3 -> 1 +dqsamq1322 samequantum 0E+3 7E-3 -> 0 +dqsamq1323 samequantum 0E+3 7 -> 0 +dqsamq1324 samequantum 0E+3 7E+3 -> 1 +dqsamq1325 samequantum 0E+3 sNaN -> 0 + +dqsamq1410 samequantum 7E-3 -Inf -> 0 +dqsamq1411 samequantum 7E-3 Inf -> 0 +dqsamq1412 samequantum 7E-3 NaN -> 0 +dqsamq1413 samequantum 7E-3 -7E+3 -> 0 +dqsamq1414 samequantum 7E-3 -7 -> 0 +dqsamq1415 samequantum 7E-3 -7E-3 -> 1 +dqsamq1416 samequantum 7E-3 -0E-3 -> 1 +dqsamq1417 samequantum 7E-3 -0 -> 0 +dqsamq1418 samequantum 7E-3 -0E+3 -> 0 +dqsamq1419 samequantum 7E-3 0E-3 -> 1 +dqsamq1420 samequantum 7E-3 0 -> 0 +dqsamq1421 samequantum 7E-3 0E+3 -> 0 +dqsamq1422 samequantum 7E-3 7E-3 -> 1 +dqsamq1423 samequantum 7E-3 7 -> 0 +dqsamq1424 samequantum 7E-3 7E+3 -> 0 +dqsamq1425 samequantum 7E-3 sNaN -> 0 + +dqsamq1510 samequantum 7 -Inf -> 0 +dqsamq1511 samequantum 7 Inf -> 0 +dqsamq1512 samequantum 7 NaN -> 0 +dqsamq1513 samequantum 7 -7E+3 -> 0 +dqsamq1514 samequantum 7 -7 -> 1 +dqsamq1515 samequantum 7 -7E-3 -> 0 +dqsamq1516 samequantum 7 -0E-3 -> 0 +dqsamq1517 samequantum 7 -0 -> 1 +dqsamq1518 samequantum 7 -0E+3 -> 0 +dqsamq1519 samequantum 7 0E-3 -> 0 +dqsamq1520 samequantum 7 0 -> 1 +dqsamq1521 samequantum 7 0E+3 -> 0 +dqsamq1522 samequantum 7 7E-3 -> 0 +dqsamq1523 samequantum 7 7 -> 1 +dqsamq1524 samequantum 7 7E+3 -> 0 +dqsamq1525 samequantum 7 sNaN -> 0 + +dqsamq1610 samequantum 7E+3 -Inf -> 0 +dqsamq1611 samequantum 7E+3 Inf -> 0 +dqsamq1612 samequantum 7E+3 NaN -> 0 +dqsamq1613 samequantum 7E+3 -7E+3 -> 1 +dqsamq1614 samequantum 7E+3 -7 -> 0 +dqsamq1615 samequantum 7E+3 -7E-3 -> 0 +dqsamq1616 samequantum 7E+3 -0E-3 -> 0 +dqsamq1617 samequantum 7E+3 -0 -> 0 +dqsamq1618 samequantum 7E+3 -0E+3 -> 1 +dqsamq1619 samequantum 7E+3 0E-3 -> 0 +dqsamq1620 samequantum 7E+3 0 -> 0 +dqsamq1621 samequantum 7E+3 0E+3 -> 1 +dqsamq1622 samequantum 7E+3 7E-3 -> 0 +dqsamq1623 samequantum 7E+3 7 -> 0 +dqsamq1624 samequantum 7E+3 7E+3 -> 1 +dqsamq1625 samequantum 7E+3 sNaN -> 0 + +dqsamq1710 samequantum sNaN -Inf -> 0 +dqsamq1711 samequantum sNaN Inf -> 0 +dqsamq1712 samequantum sNaN NaN -> 1 +dqsamq1713 samequantum sNaN -7E+3 -> 0 +dqsamq1714 samequantum sNaN -7 -> 0 +dqsamq1715 samequantum sNaN -7E-3 -> 0 +dqsamq1716 samequantum sNaN -0E-3 -> 0 +dqsamq1717 samequantum sNaN -0 -> 0 +dqsamq1718 samequantum sNaN -0E+3 -> 0 +dqsamq1719 samequantum sNaN 0E-3 -> 0 +dqsamq1720 samequantum sNaN 0 -> 0 +dqsamq1721 samequantum sNaN 0E+3 -> 0 +dqsamq1722 samequantum sNaN 7E-3 -> 0 +dqsamq1723 samequantum sNaN 7 -> 0 +dqsamq1724 samequantum sNaN 7E+3 -> 0 +dqsamq1725 samequantum sNaN sNaN -> 1 +-- noisy NaNs +dqsamq1730 samequantum sNaN3 sNaN3 -> 1 +dqsamq1731 samequantum sNaN3 sNaN4 -> 1 +dqsamq1732 samequantum NaN3 NaN3 -> 1 +dqsamq1733 samequantum NaN3 NaN4 -> 1 +dqsamq1734 samequantum sNaN3 3 -> 0 +dqsamq1735 samequantum NaN3 3 -> 0 +dqsamq1736 samequantum 4 sNaN4 -> 0 +dqsamq1737 samequantum 3 NaN3 -> 0 +dqsamq1738 samequantum Inf sNaN4 -> 0 +dqsamq1739 samequantum -Inf NaN3 -> 0 + diff --git a/Lib/test/decimaltestdata/dqScaleB.decTest b/Lib/test/decimaltestdata/dqScaleB.decTest index 01e1191..045dc58 100644 --- a/Lib/test/decimaltestdata/dqScaleB.decTest +++ b/Lib/test/decimaltestdata/dqScaleB.decTest @@ -1,260 +1,260 @@ ------------------------------------------------------------------------- --- dqScalebB.decTest -- scale a decQuad by powers of 10 -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Max |rhs| is 2*(6144+34) = 12356 - --- Sanity checks -dqscb001 scaleb 7.50 10 -> 7.50E+10 -dqscb002 scaleb 7.50 3 -> 7.50E+3 -dqscb003 scaleb 7.50 2 -> 750 -dqscb004 scaleb 7.50 1 -> 75.0 -dqscb005 scaleb 7.50 0 -> 7.50 -dqscb006 scaleb 7.50 -1 -> 0.750 -dqscb007 scaleb 7.50 -2 -> 0.0750 -dqscb008 scaleb 7.50 -10 -> 7.50E-10 -dqscb009 scaleb -7.50 3 -> -7.50E+3 -dqscb010 scaleb -7.50 2 -> -750 -dqscb011 scaleb -7.50 1 -> -75.0 -dqscb012 scaleb -7.50 0 -> -7.50 -dqscb013 scaleb -7.50 -1 -> -0.750 - --- Infinities -dqscb014 scaleb Infinity 1 -> Infinity -dqscb015 scaleb -Infinity 2 -> -Infinity -dqscb016 scaleb Infinity -1 -> Infinity -dqscb017 scaleb -Infinity -2 -> -Infinity - --- Next two are somewhat undefined in 754r; treat as non-integer -dqscb018 scaleb 10 Infinity -> NaN Invalid_operation -dqscb019 scaleb 10 -Infinity -> NaN Invalid_operation - --- NaNs are undefined in 754r; assume usual processing --- NaNs, 0 payload -dqscb021 scaleb NaN 1 -> NaN -dqscb022 scaleb -NaN -1 -> -NaN -dqscb023 scaleb sNaN 1 -> NaN Invalid_operation -dqscb024 scaleb -sNaN 1 -> -NaN Invalid_operation -dqscb025 scaleb 4 NaN -> NaN -dqscb026 scaleb -Inf -NaN -> -NaN -dqscb027 scaleb 4 sNaN -> NaN Invalid_operation -dqscb028 scaleb Inf -sNaN -> -NaN Invalid_operation - --- non-integer RHS -dqscb030 scaleb 1.23 1 -> 12.3 -dqscb031 scaleb 1.23 1.00 -> NaN Invalid_operation -dqscb032 scaleb 1.23 1.1 -> NaN Invalid_operation -dqscb033 scaleb 1.23 1.01 -> NaN Invalid_operation -dqscb034 scaleb 1.23 0.01 -> NaN Invalid_operation -dqscb035 scaleb 1.23 0.11 -> NaN Invalid_operation -dqscb036 scaleb 1.23 0.999999999 -> NaN Invalid_operation -dqscb037 scaleb 1.23 -1 -> 0.123 -dqscb0614 scaleb 1.23 -1.00 -> NaN Invalid_operation -dqscb039 scaleb 1.23 -1.1 -> NaN Invalid_operation -dqscb040 scaleb 1.23 -1.01 -> NaN Invalid_operation -dqscb041 scaleb 1.23 -0.01 -> NaN Invalid_operation -dqscb042 scaleb 1.23 -0.11 -> NaN Invalid_operation -dqscb043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation -dqscb044 scaleb 1.23 0.1 -> NaN Invalid_operation -dqscb045 scaleb 1.23 1E+1 -> NaN Invalid_operation -dqscb046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation -dqscb047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation - --- out-of range RHS -dqscb120 scaleb 1.23 12355 -> Infinity Overflow Inexact Rounded -dqscb121 scaleb 1.23 12356 -> Infinity Overflow Inexact Rounded -dqscb122 scaleb 1.23 12357 -> NaN Invalid_operation -dqscb123 scaleb 1.23 12358 -> NaN Invalid_operation -dqscb124 scaleb 1.23 -12355 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqscb125 scaleb 1.23 -12356 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqscb126 scaleb 1.23 -12357 -> NaN Invalid_operation -dqscb127 scaleb 1.23 -12358 -> NaN Invalid_operation - --- NaNs, non-0 payload --- propagating NaNs -dqscb861 scaleb NaN01 -Inf -> NaN1 -dqscb862 scaleb -NaN02 -1000 -> -NaN2 -dqscb863 scaleb NaN03 1000 -> NaN3 -dqscb864 scaleb NaN04 Inf -> NaN4 -dqscb865 scaleb NaN05 NaN61 -> NaN5 -dqscb866 scaleb -Inf -NaN71 -> -NaN71 -dqscb867 scaleb -1000 NaN81 -> NaN81 -dqscb868 scaleb 1000 NaN91 -> NaN91 -dqscb869 scaleb Inf NaN101 -> NaN101 -dqscb871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation -dqscb872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation -dqscb873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation -dqscb874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation -dqscb875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation -dqscb876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation -dqscb877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation -dqscb878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation -dqscb879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation -dqscb880 scaleb Inf sNaN231 -> NaN231 Invalid_operation -dqscb881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation - --- finites -dqscb051 scaleb 7 -2 -> 0.07 -dqscb052 scaleb -7 -2 -> -0.07 -dqscb053 scaleb 75 -2 -> 0.75 -dqscb054 scaleb -75 -2 -> -0.75 -dqscb055 scaleb 7.50 -2 -> 0.0750 -dqscb056 scaleb -7.50 -2 -> -0.0750 -dqscb057 scaleb 7.500 -2 -> 0.07500 -dqscb058 scaleb -7.500 -2 -> -0.07500 -dqscb061 scaleb 7 -1 -> 0.7 -dqscb062 scaleb -7 -1 -> -0.7 -dqscb063 scaleb 75 -1 -> 7.5 -dqscb064 scaleb -75 -1 -> -7.5 -dqscb065 scaleb 7.50 -1 -> 0.750 -dqscb066 scaleb -7.50 -1 -> -0.750 -dqscb067 scaleb 7.500 -1 -> 0.7500 -dqscb068 scaleb -7.500 -1 -> -0.7500 -dqscb071 scaleb 7 0 -> 7 -dqscb072 scaleb -7 0 -> -7 -dqscb073 scaleb 75 0 -> 75 -dqscb074 scaleb -75 0 -> -75 -dqscb075 scaleb 7.50 0 -> 7.50 -dqscb076 scaleb -7.50 0 -> -7.50 -dqscb077 scaleb 7.500 0 -> 7.500 -dqscb078 scaleb -7.500 0 -> -7.500 -dqscb081 scaleb 7 1 -> 7E+1 -dqscb082 scaleb -7 1 -> -7E+1 -dqscb083 scaleb 75 1 -> 7.5E+2 -dqscb084 scaleb -75 1 -> -7.5E+2 -dqscb085 scaleb 7.50 1 -> 75.0 -dqscb086 scaleb -7.50 1 -> -75.0 -dqscb087 scaleb 7.500 1 -> 75.00 -dqscb088 scaleb -7.500 1 -> -75.00 -dqscb091 scaleb 7 2 -> 7E+2 -dqscb092 scaleb -7 2 -> -7E+2 -dqscb093 scaleb 75 2 -> 7.5E+3 -dqscb094 scaleb -75 2 -> -7.5E+3 -dqscb095 scaleb 7.50 2 -> 750 -dqscb096 scaleb -7.50 2 -> -750 -dqscb097 scaleb 7.500 2 -> 750.0 -dqscb098 scaleb -7.500 2 -> -750.0 - --- zeros -dqscb111 scaleb 0 1 -> 0E+1 -dqscb112 scaleb -0 2 -> -0E+2 -dqscb113 scaleb 0E+4 3 -> 0E+7 -dqscb114 scaleb -0E+4 4 -> -0E+8 -dqscb115 scaleb 0.0000 5 -> 0E+1 -dqscb116 scaleb -0.0000 6 -> -0E+2 -dqscb117 scaleb 0E-141 7 -> 0E-134 -dqscb118 scaleb -0E-141 8 -> -0E-133 - --- Nmax, Nmin, Ntiny -dqscb132 scaleb 9.999999999999999999999999999999999E+6144 +6144 -> Infinity Overflow Inexact Rounded -dqscb133 scaleb 9.999999999999999999999999999999999E+6144 +10 -> Infinity Overflow Inexact Rounded -dqscb134 scaleb 9.999999999999999999999999999999999E+6144 +1 -> Infinity Overflow Inexact Rounded -dqscb135 scaleb 9.999999999999999999999999999999999E+6144 0 -> 9.999999999999999999999999999999999E+6144 -dqscb136 scaleb 9.999999999999999999999999999999999E+6144 -1 -> 9.999999999999999999999999999999999E+6143 -dqscb137 scaleb 1E-6143 +1 -> 1E-6142 -dqscb1614 scaleb 1E-6143 -0 -> 1E-6143 -dqscb139 scaleb 1E-6143 -1 -> 1E-6144 Subnormal -dqscb140 scaleb 1.000000000000000000000000000000000E-6143 +1 -> 1.000000000000000000000000000000000E-6142 -dqscb141 scaleb 1.000000000000000000000000000000000E-6143 0 -> 1.000000000000000000000000000000000E-6143 -dqscb142 scaleb 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded -dqscb143 scaleb 1E-6176 +1 -> 1E-6175 Subnormal -dqscb144 scaleb 1E-6176 -0 -> 1E-6176 Subnormal -dqscb145 scaleb 1E-6176 -1 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped - -dqscb150 scaleb -1E-6176 +1 -> -1E-6175 Subnormal -dqscb151 scaleb -1E-6176 -0 -> -1E-6176 Subnormal -dqscb152 scaleb -1E-6176 -1 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqscb153 scaleb -1.000000000000000000000000000000000E-6143 +1 -> -1.000000000000000000000000000000000E-6142 -dqscb154 scaleb -1.000000000000000000000000000000000E-6143 +0 -> -1.000000000000000000000000000000000E-6143 -dqscb155 scaleb -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144 Subnormal Rounded -dqscb156 scaleb -1E-6143 +1 -> -1E-6142 -dqscb157 scaleb -1E-6143 -0 -> -1E-6143 -dqscb158 scaleb -1E-6143 -1 -> -1E-6144 Subnormal -dqscb159 scaleb -9.999999999999999999999999999999999E+6144 +1 -> -Infinity Overflow Inexact Rounded -dqscb160 scaleb -9.999999999999999999999999999999999E+6144 +0 -> -9.999999999999999999999999999999999E+6144 -dqscb161 scaleb -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6143 -dqscb162 scaleb -9E+6144 +1 -> -Infinity Overflow Inexact Rounded -dqscb163 scaleb -1E+6144 +1 -> -Infinity Overflow Inexact Rounded - --- some Origami --- (these check that overflow is being done correctly) -dqscb171 scaleb 1000E+6109 +1 -> 1.000E+6113 -dqscb172 scaleb 1000E+6110 +1 -> 1.000E+6114 -dqscb173 scaleb 1000E+6111 +1 -> 1.0000E+6115 Clamped -dqscb174 scaleb 1000E+6112 +1 -> 1.00000E+6116 Clamped -dqscb175 scaleb 1000E+6113 +1 -> 1.000000E+6117 Clamped -dqscb176 scaleb 1000E+6114 +1 -> 1.0000000E+6118 Clamped -dqscb177 scaleb 1000E+6131 +1 -> 1.000000000000000000000000E+6135 Clamped -dqscb178 scaleb 1000E+6132 +1 -> 1.0000000000000000000000000E+6136 Clamped -dqscb179 scaleb 1000E+6133 +1 -> 1.00000000000000000000000000E+6137 Clamped -dqscb180 scaleb 1000E+6134 +1 -> 1.000000000000000000000000000E+6138 Clamped -dqscb181 scaleb 1000E+6135 +1 -> 1.0000000000000000000000000000E+6139 Clamped -dqscb182 scaleb 1000E+6136 +1 -> 1.00000000000000000000000000000E+6140 Clamped -dqscb183 scaleb 1000E+6137 +1 -> 1.000000000000000000000000000000E+6141 Clamped -dqscb184 scaleb 1000E+6138 +1 -> 1.0000000000000000000000000000000E+6142 Clamped -dqscb185 scaleb 1000E+6139 +1 -> 1.00000000000000000000000000000000E+6143 Clamped -dqscb186 scaleb 1000E+6140 +1 -> 1.000000000000000000000000000000000E+6144 Clamped -dqscb187 scaleb 1000E+6141 +1 -> Infinity Overflow Inexact Rounded - --- and a few more subnormal truncations --- (these check that underflow is being done correctly) -dqscb221 scaleb 1.000000000000000000000000000000000E-6143 0 -> 1.000000000000000000000000000000000E-6143 -dqscb222 scaleb 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded -dqscb223 scaleb 1.000000000000000000000000000000000E-6143 -2 -> 1.0000000000000000000000000000000E-6145 Subnormal Rounded -dqscb224 scaleb 1.000000000000000000000000000000000E-6143 -3 -> 1.000000000000000000000000000000E-6146 Subnormal Rounded -dqscb225 scaleb 1.000000000000000000000000000000000E-6143 -4 -> 1.00000000000000000000000000000E-6147 Subnormal Rounded -dqscb226 scaleb 1.000000000000000000000000000000000E-6143 -5 -> 1.0000000000000000000000000000E-6148 Subnormal Rounded -dqscb227 scaleb 1.000000000000000000000000000000000E-6143 -6 -> 1.000000000000000000000000000E-6149 Subnormal Rounded -dqscb228 scaleb 1.000000000000000000000000000000000E-6143 -7 -> 1.00000000000000000000000000E-6150 Subnormal Rounded -dqscb229 scaleb 1.000000000000000000000000000000000E-6143 -8 -> 1.0000000000000000000000000E-6151 Subnormal Rounded -dqscb230 scaleb 1.000000000000000000000000000000000E-6143 -9 -> 1.000000000000000000000000E-6152 Subnormal Rounded -dqscb231 scaleb 1.000000000000000000000000000000000E-6143 -10 -> 1.00000000000000000000000E-6153 Subnormal Rounded -dqscb232 scaleb 1.000000000000000000000000000000000E-6143 -11 -> 1.0000000000000000000000E-6154 Subnormal Rounded -dqscb233 scaleb 1.000000000000000000000000000000000E-6143 -12 -> 1.000000000000000000000E-6155 Subnormal Rounded -dqscb234 scaleb 1.000000000000000000000000000000000E-6143 -13 -> 1.00000000000000000000E-6156 Subnormal Rounded -dqscb235 scaleb 1.000000000000000000000000000000000E-6143 -14 -> 1.0000000000000000000E-6157 Subnormal Rounded -dqscb236 scaleb 1.000000000000000000000000000000000E-6143 -15 -> 1.000000000000000000E-6158 Subnormal Rounded -dqscb237 scaleb 1.000000000000000000000000000000000E-6143 -16 -> 1.00000000000000000E-6159 Subnormal Rounded -dqscb238 scaleb 1.000000000000000000000000000000000E-6143 -17 -> 1.0000000000000000E-6160 Subnormal Rounded -dqscb239 scaleb 1.000000000000000000000000000000000E-6143 -18 -> 1.000000000000000E-6161 Subnormal Rounded -dqscb202 scaleb 1.000000000000000000000000000000000E-6143 -19 -> 1.00000000000000E-6162 Subnormal Rounded -dqscb203 scaleb 1.000000000000000000000000000000000E-6143 -20 -> 1.0000000000000E-6163 Subnormal Rounded -dqscb204 scaleb 1.000000000000000000000000000000000E-6143 -21 -> 1.000000000000E-6164 Subnormal Rounded -dqscb205 scaleb 1.000000000000000000000000000000000E-6143 -22 -> 1.00000000000E-6165 Subnormal Rounded -dqscb206 scaleb 1.000000000000000000000000000000000E-6143 -23 -> 1.0000000000E-6166 Subnormal Rounded -dqscb207 scaleb 1.000000000000000000000000000000000E-6143 -24 -> 1.000000000E-6167 Subnormal Rounded -dqscb208 scaleb 1.000000000000000000000000000000000E-6143 -25 -> 1.00000000E-6168 Subnormal Rounded -dqscb209 scaleb 1.000000000000000000000000000000000E-6143 -26 -> 1.0000000E-6169 Subnormal Rounded -dqscb210 scaleb 1.000000000000000000000000000000000E-6143 -27 -> 1.000000E-6170 Subnormal Rounded -dqscb211 scaleb 1.000000000000000000000000000000000E-6143 -28 -> 1.00000E-6171 Subnormal Rounded -dqscb212 scaleb 1.000000000000000000000000000000000E-6143 -29 -> 1.0000E-6172 Subnormal Rounded -dqscb213 scaleb 1.000000000000000000000000000000000E-6143 -30 -> 1.000E-6173 Subnormal Rounded -dqscb214 scaleb 1.000000000000000000000000000000000E-6143 -31 -> 1.00E-6174 Subnormal Rounded -dqscb215 scaleb 1.000000000000000000000000000000000E-6143 -32 -> 1.0E-6175 Subnormal Rounded -dqscb216 scaleb 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176 Subnormal Rounded -dqscb217 scaleb 1.000000000000000000000000000000000E-6143 -34 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped -dqscb218 scaleb 1.000000000000000000000000000000000E-6143 -35 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +------------------------------------------------------------------------ +-- dqScalebB.decTest -- scale a decQuad by powers of 10 -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Max |rhs| is 2*(6144+34) = 12356 + +-- Sanity checks +dqscb001 scaleb 7.50 10 -> 7.50E+10 +dqscb002 scaleb 7.50 3 -> 7.50E+3 +dqscb003 scaleb 7.50 2 -> 750 +dqscb004 scaleb 7.50 1 -> 75.0 +dqscb005 scaleb 7.50 0 -> 7.50 +dqscb006 scaleb 7.50 -1 -> 0.750 +dqscb007 scaleb 7.50 -2 -> 0.0750 +dqscb008 scaleb 7.50 -10 -> 7.50E-10 +dqscb009 scaleb -7.50 3 -> -7.50E+3 +dqscb010 scaleb -7.50 2 -> -750 +dqscb011 scaleb -7.50 1 -> -75.0 +dqscb012 scaleb -7.50 0 -> -7.50 +dqscb013 scaleb -7.50 -1 -> -0.750 + +-- Infinities +dqscb014 scaleb Infinity 1 -> Infinity +dqscb015 scaleb -Infinity 2 -> -Infinity +dqscb016 scaleb Infinity -1 -> Infinity +dqscb017 scaleb -Infinity -2 -> -Infinity + +-- Next two are somewhat undefined in 754r; treat as non-integer +dqscb018 scaleb 10 Infinity -> NaN Invalid_operation +dqscb019 scaleb 10 -Infinity -> NaN Invalid_operation + +-- NaNs are undefined in 754r; assume usual processing +-- NaNs, 0 payload +dqscb021 scaleb NaN 1 -> NaN +dqscb022 scaleb -NaN -1 -> -NaN +dqscb023 scaleb sNaN 1 -> NaN Invalid_operation +dqscb024 scaleb -sNaN 1 -> -NaN Invalid_operation +dqscb025 scaleb 4 NaN -> NaN +dqscb026 scaleb -Inf -NaN -> -NaN +dqscb027 scaleb 4 sNaN -> NaN Invalid_operation +dqscb028 scaleb Inf -sNaN -> -NaN Invalid_operation + +-- non-integer RHS +dqscb030 scaleb 1.23 1 -> 12.3 +dqscb031 scaleb 1.23 1.00 -> NaN Invalid_operation +dqscb032 scaleb 1.23 1.1 -> NaN Invalid_operation +dqscb033 scaleb 1.23 1.01 -> NaN Invalid_operation +dqscb034 scaleb 1.23 0.01 -> NaN Invalid_operation +dqscb035 scaleb 1.23 0.11 -> NaN Invalid_operation +dqscb036 scaleb 1.23 0.999999999 -> NaN Invalid_operation +dqscb037 scaleb 1.23 -1 -> 0.123 +dqscb0614 scaleb 1.23 -1.00 -> NaN Invalid_operation +dqscb039 scaleb 1.23 -1.1 -> NaN Invalid_operation +dqscb040 scaleb 1.23 -1.01 -> NaN Invalid_operation +dqscb041 scaleb 1.23 -0.01 -> NaN Invalid_operation +dqscb042 scaleb 1.23 -0.11 -> NaN Invalid_operation +dqscb043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation +dqscb044 scaleb 1.23 0.1 -> NaN Invalid_operation +dqscb045 scaleb 1.23 1E+1 -> NaN Invalid_operation +dqscb046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation +dqscb047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation + +-- out-of range RHS +dqscb120 scaleb 1.23 12355 -> Infinity Overflow Inexact Rounded +dqscb121 scaleb 1.23 12356 -> Infinity Overflow Inexact Rounded +dqscb122 scaleb 1.23 12357 -> NaN Invalid_operation +dqscb123 scaleb 1.23 12358 -> NaN Invalid_operation +dqscb124 scaleb 1.23 -12355 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqscb125 scaleb 1.23 -12356 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqscb126 scaleb 1.23 -12357 -> NaN Invalid_operation +dqscb127 scaleb 1.23 -12358 -> NaN Invalid_operation + +-- NaNs, non-0 payload +-- propagating NaNs +dqscb861 scaleb NaN01 -Inf -> NaN1 +dqscb862 scaleb -NaN02 -1000 -> -NaN2 +dqscb863 scaleb NaN03 1000 -> NaN3 +dqscb864 scaleb NaN04 Inf -> NaN4 +dqscb865 scaleb NaN05 NaN61 -> NaN5 +dqscb866 scaleb -Inf -NaN71 -> -NaN71 +dqscb867 scaleb -1000 NaN81 -> NaN81 +dqscb868 scaleb 1000 NaN91 -> NaN91 +dqscb869 scaleb Inf NaN101 -> NaN101 +dqscb871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation +dqscb872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation +dqscb873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation +dqscb874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation +dqscb875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation +dqscb876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation +dqscb877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation +dqscb878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation +dqscb879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation +dqscb880 scaleb Inf sNaN231 -> NaN231 Invalid_operation +dqscb881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation + +-- finites +dqscb051 scaleb 7 -2 -> 0.07 +dqscb052 scaleb -7 -2 -> -0.07 +dqscb053 scaleb 75 -2 -> 0.75 +dqscb054 scaleb -75 -2 -> -0.75 +dqscb055 scaleb 7.50 -2 -> 0.0750 +dqscb056 scaleb -7.50 -2 -> -0.0750 +dqscb057 scaleb 7.500 -2 -> 0.07500 +dqscb058 scaleb -7.500 -2 -> -0.07500 +dqscb061 scaleb 7 -1 -> 0.7 +dqscb062 scaleb -7 -1 -> -0.7 +dqscb063 scaleb 75 -1 -> 7.5 +dqscb064 scaleb -75 -1 -> -7.5 +dqscb065 scaleb 7.50 -1 -> 0.750 +dqscb066 scaleb -7.50 -1 -> -0.750 +dqscb067 scaleb 7.500 -1 -> 0.7500 +dqscb068 scaleb -7.500 -1 -> -0.7500 +dqscb071 scaleb 7 0 -> 7 +dqscb072 scaleb -7 0 -> -7 +dqscb073 scaleb 75 0 -> 75 +dqscb074 scaleb -75 0 -> -75 +dqscb075 scaleb 7.50 0 -> 7.50 +dqscb076 scaleb -7.50 0 -> -7.50 +dqscb077 scaleb 7.500 0 -> 7.500 +dqscb078 scaleb -7.500 0 -> -7.500 +dqscb081 scaleb 7 1 -> 7E+1 +dqscb082 scaleb -7 1 -> -7E+1 +dqscb083 scaleb 75 1 -> 7.5E+2 +dqscb084 scaleb -75 1 -> -7.5E+2 +dqscb085 scaleb 7.50 1 -> 75.0 +dqscb086 scaleb -7.50 1 -> -75.0 +dqscb087 scaleb 7.500 1 -> 75.00 +dqscb088 scaleb -7.500 1 -> -75.00 +dqscb091 scaleb 7 2 -> 7E+2 +dqscb092 scaleb -7 2 -> -7E+2 +dqscb093 scaleb 75 2 -> 7.5E+3 +dqscb094 scaleb -75 2 -> -7.5E+3 +dqscb095 scaleb 7.50 2 -> 750 +dqscb096 scaleb -7.50 2 -> -750 +dqscb097 scaleb 7.500 2 -> 750.0 +dqscb098 scaleb -7.500 2 -> -750.0 + +-- zeros +dqscb111 scaleb 0 1 -> 0E+1 +dqscb112 scaleb -0 2 -> -0E+2 +dqscb113 scaleb 0E+4 3 -> 0E+7 +dqscb114 scaleb -0E+4 4 -> -0E+8 +dqscb115 scaleb 0.0000 5 -> 0E+1 +dqscb116 scaleb -0.0000 6 -> -0E+2 +dqscb117 scaleb 0E-141 7 -> 0E-134 +dqscb118 scaleb -0E-141 8 -> -0E-133 + +-- Nmax, Nmin, Ntiny +dqscb132 scaleb 9.999999999999999999999999999999999E+6144 +6144 -> Infinity Overflow Inexact Rounded +dqscb133 scaleb 9.999999999999999999999999999999999E+6144 +10 -> Infinity Overflow Inexact Rounded +dqscb134 scaleb 9.999999999999999999999999999999999E+6144 +1 -> Infinity Overflow Inexact Rounded +dqscb135 scaleb 9.999999999999999999999999999999999E+6144 0 -> 9.999999999999999999999999999999999E+6144 +dqscb136 scaleb 9.999999999999999999999999999999999E+6144 -1 -> 9.999999999999999999999999999999999E+6143 +dqscb137 scaleb 1E-6143 +1 -> 1E-6142 +dqscb1614 scaleb 1E-6143 -0 -> 1E-6143 +dqscb139 scaleb 1E-6143 -1 -> 1E-6144 Subnormal +dqscb140 scaleb 1.000000000000000000000000000000000E-6143 +1 -> 1.000000000000000000000000000000000E-6142 +dqscb141 scaleb 1.000000000000000000000000000000000E-6143 0 -> 1.000000000000000000000000000000000E-6143 +dqscb142 scaleb 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded +dqscb143 scaleb 1E-6176 +1 -> 1E-6175 Subnormal +dqscb144 scaleb 1E-6176 -0 -> 1E-6176 Subnormal +dqscb145 scaleb 1E-6176 -1 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped + +dqscb150 scaleb -1E-6176 +1 -> -1E-6175 Subnormal +dqscb151 scaleb -1E-6176 -0 -> -1E-6176 Subnormal +dqscb152 scaleb -1E-6176 -1 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqscb153 scaleb -1.000000000000000000000000000000000E-6143 +1 -> -1.000000000000000000000000000000000E-6142 +dqscb154 scaleb -1.000000000000000000000000000000000E-6143 +0 -> -1.000000000000000000000000000000000E-6143 +dqscb155 scaleb -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144 Subnormal Rounded +dqscb156 scaleb -1E-6143 +1 -> -1E-6142 +dqscb157 scaleb -1E-6143 -0 -> -1E-6143 +dqscb158 scaleb -1E-6143 -1 -> -1E-6144 Subnormal +dqscb159 scaleb -9.999999999999999999999999999999999E+6144 +1 -> -Infinity Overflow Inexact Rounded +dqscb160 scaleb -9.999999999999999999999999999999999E+6144 +0 -> -9.999999999999999999999999999999999E+6144 +dqscb161 scaleb -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6143 +dqscb162 scaleb -9E+6144 +1 -> -Infinity Overflow Inexact Rounded +dqscb163 scaleb -1E+6144 +1 -> -Infinity Overflow Inexact Rounded + +-- some Origami +-- (these check that overflow is being done correctly) +dqscb171 scaleb 1000E+6109 +1 -> 1.000E+6113 +dqscb172 scaleb 1000E+6110 +1 -> 1.000E+6114 +dqscb173 scaleb 1000E+6111 +1 -> 1.0000E+6115 Clamped +dqscb174 scaleb 1000E+6112 +1 -> 1.00000E+6116 Clamped +dqscb175 scaleb 1000E+6113 +1 -> 1.000000E+6117 Clamped +dqscb176 scaleb 1000E+6114 +1 -> 1.0000000E+6118 Clamped +dqscb177 scaleb 1000E+6131 +1 -> 1.000000000000000000000000E+6135 Clamped +dqscb178 scaleb 1000E+6132 +1 -> 1.0000000000000000000000000E+6136 Clamped +dqscb179 scaleb 1000E+6133 +1 -> 1.00000000000000000000000000E+6137 Clamped +dqscb180 scaleb 1000E+6134 +1 -> 1.000000000000000000000000000E+6138 Clamped +dqscb181 scaleb 1000E+6135 +1 -> 1.0000000000000000000000000000E+6139 Clamped +dqscb182 scaleb 1000E+6136 +1 -> 1.00000000000000000000000000000E+6140 Clamped +dqscb183 scaleb 1000E+6137 +1 -> 1.000000000000000000000000000000E+6141 Clamped +dqscb184 scaleb 1000E+6138 +1 -> 1.0000000000000000000000000000000E+6142 Clamped +dqscb185 scaleb 1000E+6139 +1 -> 1.00000000000000000000000000000000E+6143 Clamped +dqscb186 scaleb 1000E+6140 +1 -> 1.000000000000000000000000000000000E+6144 Clamped +dqscb187 scaleb 1000E+6141 +1 -> Infinity Overflow Inexact Rounded + +-- and a few more subnormal truncations +-- (these check that underflow is being done correctly) +dqscb221 scaleb 1.000000000000000000000000000000000E-6143 0 -> 1.000000000000000000000000000000000E-6143 +dqscb222 scaleb 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded +dqscb223 scaleb 1.000000000000000000000000000000000E-6143 -2 -> 1.0000000000000000000000000000000E-6145 Subnormal Rounded +dqscb224 scaleb 1.000000000000000000000000000000000E-6143 -3 -> 1.000000000000000000000000000000E-6146 Subnormal Rounded +dqscb225 scaleb 1.000000000000000000000000000000000E-6143 -4 -> 1.00000000000000000000000000000E-6147 Subnormal Rounded +dqscb226 scaleb 1.000000000000000000000000000000000E-6143 -5 -> 1.0000000000000000000000000000E-6148 Subnormal Rounded +dqscb227 scaleb 1.000000000000000000000000000000000E-6143 -6 -> 1.000000000000000000000000000E-6149 Subnormal Rounded +dqscb228 scaleb 1.000000000000000000000000000000000E-6143 -7 -> 1.00000000000000000000000000E-6150 Subnormal Rounded +dqscb229 scaleb 1.000000000000000000000000000000000E-6143 -8 -> 1.0000000000000000000000000E-6151 Subnormal Rounded +dqscb230 scaleb 1.000000000000000000000000000000000E-6143 -9 -> 1.000000000000000000000000E-6152 Subnormal Rounded +dqscb231 scaleb 1.000000000000000000000000000000000E-6143 -10 -> 1.00000000000000000000000E-6153 Subnormal Rounded +dqscb232 scaleb 1.000000000000000000000000000000000E-6143 -11 -> 1.0000000000000000000000E-6154 Subnormal Rounded +dqscb233 scaleb 1.000000000000000000000000000000000E-6143 -12 -> 1.000000000000000000000E-6155 Subnormal Rounded +dqscb234 scaleb 1.000000000000000000000000000000000E-6143 -13 -> 1.00000000000000000000E-6156 Subnormal Rounded +dqscb235 scaleb 1.000000000000000000000000000000000E-6143 -14 -> 1.0000000000000000000E-6157 Subnormal Rounded +dqscb236 scaleb 1.000000000000000000000000000000000E-6143 -15 -> 1.000000000000000000E-6158 Subnormal Rounded +dqscb237 scaleb 1.000000000000000000000000000000000E-6143 -16 -> 1.00000000000000000E-6159 Subnormal Rounded +dqscb238 scaleb 1.000000000000000000000000000000000E-6143 -17 -> 1.0000000000000000E-6160 Subnormal Rounded +dqscb239 scaleb 1.000000000000000000000000000000000E-6143 -18 -> 1.000000000000000E-6161 Subnormal Rounded +dqscb202 scaleb 1.000000000000000000000000000000000E-6143 -19 -> 1.00000000000000E-6162 Subnormal Rounded +dqscb203 scaleb 1.000000000000000000000000000000000E-6143 -20 -> 1.0000000000000E-6163 Subnormal Rounded +dqscb204 scaleb 1.000000000000000000000000000000000E-6143 -21 -> 1.000000000000E-6164 Subnormal Rounded +dqscb205 scaleb 1.000000000000000000000000000000000E-6143 -22 -> 1.00000000000E-6165 Subnormal Rounded +dqscb206 scaleb 1.000000000000000000000000000000000E-6143 -23 -> 1.0000000000E-6166 Subnormal Rounded +dqscb207 scaleb 1.000000000000000000000000000000000E-6143 -24 -> 1.000000000E-6167 Subnormal Rounded +dqscb208 scaleb 1.000000000000000000000000000000000E-6143 -25 -> 1.00000000E-6168 Subnormal Rounded +dqscb209 scaleb 1.000000000000000000000000000000000E-6143 -26 -> 1.0000000E-6169 Subnormal Rounded +dqscb210 scaleb 1.000000000000000000000000000000000E-6143 -27 -> 1.000000E-6170 Subnormal Rounded +dqscb211 scaleb 1.000000000000000000000000000000000E-6143 -28 -> 1.00000E-6171 Subnormal Rounded +dqscb212 scaleb 1.000000000000000000000000000000000E-6143 -29 -> 1.0000E-6172 Subnormal Rounded +dqscb213 scaleb 1.000000000000000000000000000000000E-6143 -30 -> 1.000E-6173 Subnormal Rounded +dqscb214 scaleb 1.000000000000000000000000000000000E-6143 -31 -> 1.00E-6174 Subnormal Rounded +dqscb215 scaleb 1.000000000000000000000000000000000E-6143 -32 -> 1.0E-6175 Subnormal Rounded +dqscb216 scaleb 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176 Subnormal Rounded +dqscb217 scaleb 1.000000000000000000000000000000000E-6143 -34 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped +dqscb218 scaleb 1.000000000000000000000000000000000E-6143 -35 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped diff --git a/Lib/test/decimaltestdata/dqShift.decTest b/Lib/test/decimaltestdata/dqShift.decTest index 4ee836e..6d69213 100644 --- a/Lib/test/decimaltestdata/dqShift.decTest +++ b/Lib/test/decimaltestdata/dqShift.decTest @@ -1,298 +1,298 @@ ------------------------------------------------------------------------- --- dqShift.decTest -- shift decQuad coefficient left or right -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check -dqshi001 shift 0 0 -> 0 -dqshi002 shift 0 2 -> 0 -dqshi003 shift 1 2 -> 100 -dqshi004 shift 1 33 -> 1000000000000000000000000000000000 -dqshi005 shift 1 34 -> 0 -dqshi006 shift 1 -1 -> 0 -dqshi007 shift 0 -2 -> 0 -dqshi008 shift 1234567890123456789012345678901234 -1 -> 123456789012345678901234567890123 -dqshi009 shift 1234567890123456789012345678901234 -33 -> 1 -dqshi010 shift 1234567890123456789012345678901234 -34 -> 0 -dqshi011 shift 9934567890123456789012345678901234 -33 -> 9 -dqshi012 shift 9934567890123456789012345678901234 -34 -> 0 - --- rhs must be an integer -dqshi015 shift 1 1.5 -> NaN Invalid_operation -dqshi016 shift 1 1.0 -> NaN Invalid_operation -dqshi017 shift 1 0.1 -> NaN Invalid_operation -dqshi018 shift 1 0.0 -> NaN Invalid_operation -dqshi019 shift 1 1E+1 -> NaN Invalid_operation -dqshi020 shift 1 1E+99 -> NaN Invalid_operation -dqshi021 shift 1 Inf -> NaN Invalid_operation -dqshi022 shift 1 -Inf -> NaN Invalid_operation --- and |rhs| <= precision -dqshi025 shift 1 -1000 -> NaN Invalid_operation -dqshi026 shift 1 -35 -> NaN Invalid_operation -dqshi027 shift 1 35 -> NaN Invalid_operation -dqshi028 shift 1 1000 -> NaN Invalid_operation - --- full shifting pattern -dqshi030 shift 1234567890123456789012345678901234 -34 -> 0 -dqshi031 shift 1234567890123456789012345678901234 -33 -> 1 -dqshi032 shift 1234567890123456789012345678901234 -32 -> 12 -dqshi033 shift 1234567890123456789012345678901234 -31 -> 123 -dqshi034 shift 1234567890123456789012345678901234 -30 -> 1234 -dqshi035 shift 1234567890123456789012345678901234 -29 -> 12345 -dqshi036 shift 1234567890123456789012345678901234 -28 -> 123456 -dqshi037 shift 1234567890123456789012345678901234 -27 -> 1234567 -dqshi038 shift 1234567890123456789012345678901234 -26 -> 12345678 -dqshi039 shift 1234567890123456789012345678901234 -25 -> 123456789 -dqshi040 shift 1234567890123456789012345678901234 -24 -> 1234567890 -dqshi041 shift 1234567890123456789012345678901234 -23 -> 12345678901 -dqshi042 shift 1234567890123456789012345678901234 -22 -> 123456789012 -dqshi043 shift 1234567890123456789012345678901234 -21 -> 1234567890123 -dqshi044 shift 1234567890123456789012345678901234 -20 -> 12345678901234 -dqshi045 shift 1234567890123456789012345678901234 -19 -> 123456789012345 -dqshi047 shift 1234567890123456789012345678901234 -18 -> 1234567890123456 -dqshi048 shift 1234567890123456789012345678901234 -17 -> 12345678901234567 -dqshi049 shift 1234567890123456789012345678901234 -16 -> 123456789012345678 -dqshi050 shift 1234567890123456789012345678901234 -15 -> 1234567890123456789 -dqshi051 shift 1234567890123456789012345678901234 -14 -> 12345678901234567890 -dqshi052 shift 1234567890123456789012345678901234 -13 -> 123456789012345678901 -dqshi053 shift 1234567890123456789012345678901234 -12 -> 1234567890123456789012 -dqshi054 shift 1234567890123456789012345678901234 -11 -> 12345678901234567890123 -dqshi055 shift 1234567890123456789012345678901234 -10 -> 123456789012345678901234 -dqshi056 shift 1234567890123456789012345678901234 -9 -> 1234567890123456789012345 -dqshi057 shift 1234567890123456789012345678901234 -8 -> 12345678901234567890123456 -dqshi058 shift 1234567890123456789012345678901234 -7 -> 123456789012345678901234567 -dqshi059 shift 1234567890123456789012345678901234 -6 -> 1234567890123456789012345678 -dqshi060 shift 1234567890123456789012345678901234 -5 -> 12345678901234567890123456789 -dqshi061 shift 1234567890123456789012345678901234 -4 -> 123456789012345678901234567890 -dqshi062 shift 1234567890123456789012345678901234 -3 -> 1234567890123456789012345678901 -dqshi063 shift 1234567890123456789012345678901234 -2 -> 12345678901234567890123456789012 -dqshi064 shift 1234567890123456789012345678901234 -1 -> 123456789012345678901234567890123 -dqshi065 shift 1234567890123456789012345678901234 -0 -> 1234567890123456789012345678901234 - -dqshi066 shift 1234567890123456789012345678901234 +0 -> 1234567890123456789012345678901234 -dqshi067 shift 1234567890123456789012345678901234 +1 -> 2345678901234567890123456789012340 -dqshi068 shift 1234567890123456789012345678901234 +2 -> 3456789012345678901234567890123400 -dqshi069 shift 1234567890123456789012345678901234 +3 -> 4567890123456789012345678901234000 -dqshi070 shift 1234567890123456789012345678901234 +4 -> 5678901234567890123456789012340000 -dqshi071 shift 1234567890123456789012345678901234 +5 -> 6789012345678901234567890123400000 -dqshi072 shift 1234567890123456789012345678901234 +6 -> 7890123456789012345678901234000000 -dqshi073 shift 1234567890123456789012345678901234 +7 -> 8901234567890123456789012340000000 -dqshi074 shift 1234567890123456789012345678901234 +8 -> 9012345678901234567890123400000000 -dqshi075 shift 1234567890123456789012345678901234 +9 -> 123456789012345678901234000000000 -dqshi076 shift 1234567890123456789012345678901234 +10 -> 1234567890123456789012340000000000 -dqshi077 shift 1234567890123456789012345678901234 +11 -> 2345678901234567890123400000000000 -dqshi078 shift 1234567890123456789012345678901234 +12 -> 3456789012345678901234000000000000 -dqshi079 shift 1234567890123456789012345678901234 +13 -> 4567890123456789012340000000000000 -dqshi080 shift 1234567890123456789012345678901234 +14 -> 5678901234567890123400000000000000 -dqshi081 shift 1234567890123456789012345678901234 +15 -> 6789012345678901234000000000000000 -dqshi082 shift 1234567890123456789012345678901234 +16 -> 7890123456789012340000000000000000 -dqshi083 shift 1234567890123456789012345678901234 +17 -> 8901234567890123400000000000000000 -dqshi084 shift 1234567890123456789012345678901234 +18 -> 9012345678901234000000000000000000 -dqshi085 shift 1234567890123456789012345678901234 +19 -> 123456789012340000000000000000000 -dqshi086 shift 1234567890123456789012345678901234 +20 -> 1234567890123400000000000000000000 -dqshi087 shift 1234567890123456789012345678901234 +21 -> 2345678901234000000000000000000000 -dqshi088 shift 1234567890123456789012345678901234 +22 -> 3456789012340000000000000000000000 -dqshi089 shift 1234567890123456789012345678901234 +23 -> 4567890123400000000000000000000000 -dqshi090 shift 1234567890123456789012345678901234 +24 -> 5678901234000000000000000000000000 -dqshi091 shift 1234567890123456789012345678901234 +25 -> 6789012340000000000000000000000000 -dqshi092 shift 1234567890123456789012345678901234 +26 -> 7890123400000000000000000000000000 -dqshi093 shift 1234567890123456789012345678901234 +27 -> 8901234000000000000000000000000000 -dqshi094 shift 1234567890123456789012345678901234 +28 -> 9012340000000000000000000000000000 -dqshi095 shift 1234567890123456789012345678901234 +29 -> 123400000000000000000000000000000 -dqshi096 shift 1234567890123456789012345678901234 +30 -> 1234000000000000000000000000000000 -dqshi097 shift 1234567890123456789012345678901234 +31 -> 2340000000000000000000000000000000 -dqshi098 shift 1234567890123456789012345678901234 +32 -> 3400000000000000000000000000000000 -dqshi099 shift 1234567890123456789012345678901234 +33 -> 4000000000000000000000000000000000 -dqshi100 shift 1234567890123456789012345678901234 +34 -> 0 - --- zeros -dqshi270 shift 0E-10 +29 -> 0E-10 -dqshi271 shift 0E-10 -29 -> 0E-10 -dqshi272 shift 0.000 +29 -> 0.000 -dqshi273 shift 0.000 -29 -> 0.000 -dqshi274 shift 0E+10 +29 -> 0E+10 -dqshi275 shift 0E+10 -29 -> 0E+10 -dqshi276 shift -0E-10 +29 -> -0E-10 -dqshi277 shift -0E-10 -29 -> -0E-10 -dqshi278 shift -0.000 +29 -> -0.000 -dqshi279 shift -0.000 -29 -> -0.000 -dqshi280 shift -0E+10 +29 -> -0E+10 -dqshi281 shift -0E+10 -29 -> -0E+10 - --- Nmax, Nmin, Ntiny -dqshi141 shift 9.999999999999999999999999999999999E+6144 -1 -> 9.99999999999999999999999999999999E+6143 -dqshi142 shift 9.999999999999999999999999999999999E+6144 -33 -> 9E+6111 -dqshi143 shift 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999990E+6144 -dqshi144 shift 9.999999999999999999999999999999999E+6144 33 -> 9.000000000000000000000000000000000E+6144 -dqshi145 shift 1E-6143 -1 -> 0E-6143 -dqshi146 shift 1E-6143 -33 -> 0E-6143 -dqshi147 shift 1E-6143 1 -> 1.0E-6142 -dqshi148 shift 1E-6143 33 -> 1.000000000000000000000000000000000E-6110 -dqshi151 shift 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 -dqshi152 shift 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176 -dqshi153 shift 1.000000000000000000000000000000000E-6143 1 -> 0E-6176 -dqshi154 shift 1.000000000000000000000000000000000E-6143 33 -> 0E-6176 -dqshi155 shift 9.000000000000000000000000000000000E-6143 -1 -> 9.00000000000000000000000000000000E-6144 -dqshi156 shift 9.000000000000000000000000000000000E-6143 -33 -> 9E-6176 -dqshi157 shift 9.000000000000000000000000000000000E-6143 1 -> 0E-6176 -dqshi158 shift 9.000000000000000000000000000000000E-6143 33 -> 0E-6176 -dqshi160 shift 1E-6176 -1 -> 0E-6176 -dqshi161 shift 1E-6176 -33 -> 0E-6176 -dqshi162 shift 1E-6176 1 -> 1.0E-6175 -dqshi163 shift 1E-6176 33 -> 1.000000000000000000000000000000000E-6143 --- negatives -dqshi171 shift -9.999999999999999999999999999999999E+6144 -1 -> -9.99999999999999999999999999999999E+6143 -dqshi172 shift -9.999999999999999999999999999999999E+6144 -33 -> -9E+6111 -dqshi173 shift -9.999999999999999999999999999999999E+6144 1 -> -9.999999999999999999999999999999990E+6144 -dqshi174 shift -9.999999999999999999999999999999999E+6144 33 -> -9.000000000000000000000000000000000E+6144 -dqshi175 shift -1E-6143 -1 -> -0E-6143 -dqshi176 shift -1E-6143 -33 -> -0E-6143 -dqshi177 shift -1E-6143 1 -> -1.0E-6142 -dqshi178 shift -1E-6143 33 -> -1.000000000000000000000000000000000E-6110 -dqshi181 shift -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144 -dqshi182 shift -1.000000000000000000000000000000000E-6143 -33 -> -1E-6176 -dqshi183 shift -1.000000000000000000000000000000000E-6143 1 -> -0E-6176 -dqshi184 shift -1.000000000000000000000000000000000E-6143 33 -> -0E-6176 -dqshi185 shift -9.000000000000000000000000000000000E-6143 -1 -> -9.00000000000000000000000000000000E-6144 -dqshi186 shift -9.000000000000000000000000000000000E-6143 -33 -> -9E-6176 -dqshi187 shift -9.000000000000000000000000000000000E-6143 1 -> -0E-6176 -dqshi188 shift -9.000000000000000000000000000000000E-6143 33 -> -0E-6176 -dqshi190 shift -1E-6176 -1 -> -0E-6176 -dqshi191 shift -1E-6176 -33 -> -0E-6176 -dqshi192 shift -1E-6176 1 -> -1.0E-6175 -dqshi193 shift -1E-6176 33 -> -1.000000000000000000000000000000000E-6143 - --- more negatives (of sanities) -dqshi201 shift -0 0 -> -0 -dqshi202 shift -0 2 -> -0 -dqshi203 shift -1 2 -> -100 -dqshi204 shift -1 33 -> -1000000000000000000000000000000000 -dqshi205 shift -1 34 -> -0 -dqshi206 shift -1 -1 -> -0 -dqshi207 shift -0 -2 -> -0 -dqshi208 shift -1234567890123456789012345678901234 -1 -> -123456789012345678901234567890123 -dqshi209 shift -1234567890123456789012345678901234 -33 -> -1 -dqshi210 shift -1234567890123456789012345678901234 -34 -> -0 -dqshi211 shift -9934567890123456789012345678901234 -33 -> -9 -dqshi212 shift -9934567890123456789012345678901234 -34 -> -0 - - --- Specials; NaNs are handled as usual -dqshi781 shift -Inf -8 -> -Infinity -dqshi782 shift -Inf -1 -> -Infinity -dqshi783 shift -Inf -0 -> -Infinity -dqshi784 shift -Inf 0 -> -Infinity -dqshi785 shift -Inf 1 -> -Infinity -dqshi786 shift -Inf 8 -> -Infinity -dqshi787 shift -1000 -Inf -> NaN Invalid_operation -dqshi788 shift -Inf -Inf -> NaN Invalid_operation -dqshi789 shift -1 -Inf -> NaN Invalid_operation -dqshi790 shift -0 -Inf -> NaN Invalid_operation -dqshi791 shift 0 -Inf -> NaN Invalid_operation -dqshi792 shift 1 -Inf -> NaN Invalid_operation -dqshi793 shift 1000 -Inf -> NaN Invalid_operation -dqshi794 shift Inf -Inf -> NaN Invalid_operation - -dqshi800 shift Inf -Inf -> NaN Invalid_operation -dqshi801 shift Inf -8 -> Infinity -dqshi802 shift Inf -1 -> Infinity -dqshi803 shift Inf -0 -> Infinity -dqshi804 shift Inf 0 -> Infinity -dqshi805 shift Inf 1 -> Infinity -dqshi806 shift Inf 8 -> Infinity -dqshi807 shift Inf Inf -> NaN Invalid_operation -dqshi808 shift -1000 Inf -> NaN Invalid_operation -dqshi809 shift -Inf Inf -> NaN Invalid_operation -dqshi810 shift -1 Inf -> NaN Invalid_operation -dqshi811 shift -0 Inf -> NaN Invalid_operation -dqshi812 shift 0 Inf -> NaN Invalid_operation -dqshi813 shift 1 Inf -> NaN Invalid_operation -dqshi814 shift 1000 Inf -> NaN Invalid_operation -dqshi815 shift Inf Inf -> NaN Invalid_operation - -dqshi821 shift NaN -Inf -> NaN -dqshi822 shift NaN -1000 -> NaN -dqshi823 shift NaN -1 -> NaN -dqshi824 shift NaN -0 -> NaN -dqshi825 shift NaN 0 -> NaN -dqshi826 shift NaN 1 -> NaN -dqshi827 shift NaN 1000 -> NaN -dqshi828 shift NaN Inf -> NaN -dqshi829 shift NaN NaN -> NaN -dqshi830 shift -Inf NaN -> NaN -dqshi831 shift -1000 NaN -> NaN -dqshi832 shift -1 NaN -> NaN -dqshi833 shift -0 NaN -> NaN -dqshi834 shift 0 NaN -> NaN -dqshi835 shift 1 NaN -> NaN -dqshi836 shift 1000 NaN -> NaN -dqshi837 shift Inf NaN -> NaN - -dqshi841 shift sNaN -Inf -> NaN Invalid_operation -dqshi842 shift sNaN -1000 -> NaN Invalid_operation -dqshi843 shift sNaN -1 -> NaN Invalid_operation -dqshi844 shift sNaN -0 -> NaN Invalid_operation -dqshi845 shift sNaN 0 -> NaN Invalid_operation -dqshi846 shift sNaN 1 -> NaN Invalid_operation -dqshi847 shift sNaN 1000 -> NaN Invalid_operation -dqshi848 shift sNaN NaN -> NaN Invalid_operation -dqshi849 shift sNaN sNaN -> NaN Invalid_operation -dqshi850 shift NaN sNaN -> NaN Invalid_operation -dqshi851 shift -Inf sNaN -> NaN Invalid_operation -dqshi852 shift -1000 sNaN -> NaN Invalid_operation -dqshi853 shift -1 sNaN -> NaN Invalid_operation -dqshi854 shift -0 sNaN -> NaN Invalid_operation -dqshi855 shift 0 sNaN -> NaN Invalid_operation -dqshi856 shift 1 sNaN -> NaN Invalid_operation -dqshi857 shift 1000 sNaN -> NaN Invalid_operation -dqshi858 shift Inf sNaN -> NaN Invalid_operation -dqshi859 shift NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqshi861 shift NaN1 -Inf -> NaN1 -dqshi862 shift +NaN2 -1000 -> NaN2 -dqshi863 shift NaN3 1000 -> NaN3 -dqshi864 shift NaN4 Inf -> NaN4 -dqshi865 shift NaN5 +NaN6 -> NaN5 -dqshi866 shift -Inf NaN7 -> NaN7 -dqshi867 shift -1000 NaN8 -> NaN8 -dqshi868 shift 1000 NaN9 -> NaN9 -dqshi869 shift Inf +NaN10 -> NaN10 -dqshi871 shift sNaN11 -Inf -> NaN11 Invalid_operation -dqshi872 shift sNaN12 -1000 -> NaN12 Invalid_operation -dqshi873 shift sNaN13 1000 -> NaN13 Invalid_operation -dqshi874 shift sNaN14 NaN17 -> NaN14 Invalid_operation -dqshi875 shift sNaN15 sNaN18 -> NaN15 Invalid_operation -dqshi876 shift NaN16 sNaN19 -> NaN19 Invalid_operation -dqshi877 shift -Inf +sNaN20 -> NaN20 Invalid_operation -dqshi878 shift -1000 sNaN21 -> NaN21 Invalid_operation -dqshi879 shift 1000 sNaN22 -> NaN22 Invalid_operation -dqshi880 shift Inf sNaN23 -> NaN23 Invalid_operation -dqshi881 shift +NaN25 +sNaN24 -> NaN24 Invalid_operation -dqshi882 shift -NaN26 NaN28 -> -NaN26 -dqshi883 shift -sNaN27 sNaN29 -> -NaN27 Invalid_operation -dqshi884 shift 1000 -NaN30 -> -NaN30 -dqshi885 shift 1000 -sNaN31 -> -NaN31 Invalid_operation +------------------------------------------------------------------------ +-- dqShift.decTest -- shift decQuad coefficient left or right -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check +dqshi001 shift 0 0 -> 0 +dqshi002 shift 0 2 -> 0 +dqshi003 shift 1 2 -> 100 +dqshi004 shift 1 33 -> 1000000000000000000000000000000000 +dqshi005 shift 1 34 -> 0 +dqshi006 shift 1 -1 -> 0 +dqshi007 shift 0 -2 -> 0 +dqshi008 shift 1234567890123456789012345678901234 -1 -> 123456789012345678901234567890123 +dqshi009 shift 1234567890123456789012345678901234 -33 -> 1 +dqshi010 shift 1234567890123456789012345678901234 -34 -> 0 +dqshi011 shift 9934567890123456789012345678901234 -33 -> 9 +dqshi012 shift 9934567890123456789012345678901234 -34 -> 0 + +-- rhs must be an integer +dqshi015 shift 1 1.5 -> NaN Invalid_operation +dqshi016 shift 1 1.0 -> NaN Invalid_operation +dqshi017 shift 1 0.1 -> NaN Invalid_operation +dqshi018 shift 1 0.0 -> NaN Invalid_operation +dqshi019 shift 1 1E+1 -> NaN Invalid_operation +dqshi020 shift 1 1E+99 -> NaN Invalid_operation +dqshi021 shift 1 Inf -> NaN Invalid_operation +dqshi022 shift 1 -Inf -> NaN Invalid_operation +-- and |rhs| <= precision +dqshi025 shift 1 -1000 -> NaN Invalid_operation +dqshi026 shift 1 -35 -> NaN Invalid_operation +dqshi027 shift 1 35 -> NaN Invalid_operation +dqshi028 shift 1 1000 -> NaN Invalid_operation + +-- full shifting pattern +dqshi030 shift 1234567890123456789012345678901234 -34 -> 0 +dqshi031 shift 1234567890123456789012345678901234 -33 -> 1 +dqshi032 shift 1234567890123456789012345678901234 -32 -> 12 +dqshi033 shift 1234567890123456789012345678901234 -31 -> 123 +dqshi034 shift 1234567890123456789012345678901234 -30 -> 1234 +dqshi035 shift 1234567890123456789012345678901234 -29 -> 12345 +dqshi036 shift 1234567890123456789012345678901234 -28 -> 123456 +dqshi037 shift 1234567890123456789012345678901234 -27 -> 1234567 +dqshi038 shift 1234567890123456789012345678901234 -26 -> 12345678 +dqshi039 shift 1234567890123456789012345678901234 -25 -> 123456789 +dqshi040 shift 1234567890123456789012345678901234 -24 -> 1234567890 +dqshi041 shift 1234567890123456789012345678901234 -23 -> 12345678901 +dqshi042 shift 1234567890123456789012345678901234 -22 -> 123456789012 +dqshi043 shift 1234567890123456789012345678901234 -21 -> 1234567890123 +dqshi044 shift 1234567890123456789012345678901234 -20 -> 12345678901234 +dqshi045 shift 1234567890123456789012345678901234 -19 -> 123456789012345 +dqshi047 shift 1234567890123456789012345678901234 -18 -> 1234567890123456 +dqshi048 shift 1234567890123456789012345678901234 -17 -> 12345678901234567 +dqshi049 shift 1234567890123456789012345678901234 -16 -> 123456789012345678 +dqshi050 shift 1234567890123456789012345678901234 -15 -> 1234567890123456789 +dqshi051 shift 1234567890123456789012345678901234 -14 -> 12345678901234567890 +dqshi052 shift 1234567890123456789012345678901234 -13 -> 123456789012345678901 +dqshi053 shift 1234567890123456789012345678901234 -12 -> 1234567890123456789012 +dqshi054 shift 1234567890123456789012345678901234 -11 -> 12345678901234567890123 +dqshi055 shift 1234567890123456789012345678901234 -10 -> 123456789012345678901234 +dqshi056 shift 1234567890123456789012345678901234 -9 -> 1234567890123456789012345 +dqshi057 shift 1234567890123456789012345678901234 -8 -> 12345678901234567890123456 +dqshi058 shift 1234567890123456789012345678901234 -7 -> 123456789012345678901234567 +dqshi059 shift 1234567890123456789012345678901234 -6 -> 1234567890123456789012345678 +dqshi060 shift 1234567890123456789012345678901234 -5 -> 12345678901234567890123456789 +dqshi061 shift 1234567890123456789012345678901234 -4 -> 123456789012345678901234567890 +dqshi062 shift 1234567890123456789012345678901234 -3 -> 1234567890123456789012345678901 +dqshi063 shift 1234567890123456789012345678901234 -2 -> 12345678901234567890123456789012 +dqshi064 shift 1234567890123456789012345678901234 -1 -> 123456789012345678901234567890123 +dqshi065 shift 1234567890123456789012345678901234 -0 -> 1234567890123456789012345678901234 + +dqshi066 shift 1234567890123456789012345678901234 +0 -> 1234567890123456789012345678901234 +dqshi067 shift 1234567890123456789012345678901234 +1 -> 2345678901234567890123456789012340 +dqshi068 shift 1234567890123456789012345678901234 +2 -> 3456789012345678901234567890123400 +dqshi069 shift 1234567890123456789012345678901234 +3 -> 4567890123456789012345678901234000 +dqshi070 shift 1234567890123456789012345678901234 +4 -> 5678901234567890123456789012340000 +dqshi071 shift 1234567890123456789012345678901234 +5 -> 6789012345678901234567890123400000 +dqshi072 shift 1234567890123456789012345678901234 +6 -> 7890123456789012345678901234000000 +dqshi073 shift 1234567890123456789012345678901234 +7 -> 8901234567890123456789012340000000 +dqshi074 shift 1234567890123456789012345678901234 +8 -> 9012345678901234567890123400000000 +dqshi075 shift 1234567890123456789012345678901234 +9 -> 123456789012345678901234000000000 +dqshi076 shift 1234567890123456789012345678901234 +10 -> 1234567890123456789012340000000000 +dqshi077 shift 1234567890123456789012345678901234 +11 -> 2345678901234567890123400000000000 +dqshi078 shift 1234567890123456789012345678901234 +12 -> 3456789012345678901234000000000000 +dqshi079 shift 1234567890123456789012345678901234 +13 -> 4567890123456789012340000000000000 +dqshi080 shift 1234567890123456789012345678901234 +14 -> 5678901234567890123400000000000000 +dqshi081 shift 1234567890123456789012345678901234 +15 -> 6789012345678901234000000000000000 +dqshi082 shift 1234567890123456789012345678901234 +16 -> 7890123456789012340000000000000000 +dqshi083 shift 1234567890123456789012345678901234 +17 -> 8901234567890123400000000000000000 +dqshi084 shift 1234567890123456789012345678901234 +18 -> 9012345678901234000000000000000000 +dqshi085 shift 1234567890123456789012345678901234 +19 -> 123456789012340000000000000000000 +dqshi086 shift 1234567890123456789012345678901234 +20 -> 1234567890123400000000000000000000 +dqshi087 shift 1234567890123456789012345678901234 +21 -> 2345678901234000000000000000000000 +dqshi088 shift 1234567890123456789012345678901234 +22 -> 3456789012340000000000000000000000 +dqshi089 shift 1234567890123456789012345678901234 +23 -> 4567890123400000000000000000000000 +dqshi090 shift 1234567890123456789012345678901234 +24 -> 5678901234000000000000000000000000 +dqshi091 shift 1234567890123456789012345678901234 +25 -> 6789012340000000000000000000000000 +dqshi092 shift 1234567890123456789012345678901234 +26 -> 7890123400000000000000000000000000 +dqshi093 shift 1234567890123456789012345678901234 +27 -> 8901234000000000000000000000000000 +dqshi094 shift 1234567890123456789012345678901234 +28 -> 9012340000000000000000000000000000 +dqshi095 shift 1234567890123456789012345678901234 +29 -> 123400000000000000000000000000000 +dqshi096 shift 1234567890123456789012345678901234 +30 -> 1234000000000000000000000000000000 +dqshi097 shift 1234567890123456789012345678901234 +31 -> 2340000000000000000000000000000000 +dqshi098 shift 1234567890123456789012345678901234 +32 -> 3400000000000000000000000000000000 +dqshi099 shift 1234567890123456789012345678901234 +33 -> 4000000000000000000000000000000000 +dqshi100 shift 1234567890123456789012345678901234 +34 -> 0 + +-- zeros +dqshi270 shift 0E-10 +29 -> 0E-10 +dqshi271 shift 0E-10 -29 -> 0E-10 +dqshi272 shift 0.000 +29 -> 0.000 +dqshi273 shift 0.000 -29 -> 0.000 +dqshi274 shift 0E+10 +29 -> 0E+10 +dqshi275 shift 0E+10 -29 -> 0E+10 +dqshi276 shift -0E-10 +29 -> -0E-10 +dqshi277 shift -0E-10 -29 -> -0E-10 +dqshi278 shift -0.000 +29 -> -0.000 +dqshi279 shift -0.000 -29 -> -0.000 +dqshi280 shift -0E+10 +29 -> -0E+10 +dqshi281 shift -0E+10 -29 -> -0E+10 + +-- Nmax, Nmin, Ntiny +dqshi141 shift 9.999999999999999999999999999999999E+6144 -1 -> 9.99999999999999999999999999999999E+6143 +dqshi142 shift 9.999999999999999999999999999999999E+6144 -33 -> 9E+6111 +dqshi143 shift 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999990E+6144 +dqshi144 shift 9.999999999999999999999999999999999E+6144 33 -> 9.000000000000000000000000000000000E+6144 +dqshi145 shift 1E-6143 -1 -> 0E-6143 +dqshi146 shift 1E-6143 -33 -> 0E-6143 +dqshi147 shift 1E-6143 1 -> 1.0E-6142 +dqshi148 shift 1E-6143 33 -> 1.000000000000000000000000000000000E-6110 +dqshi151 shift 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 +dqshi152 shift 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176 +dqshi153 shift 1.000000000000000000000000000000000E-6143 1 -> 0E-6176 +dqshi154 shift 1.000000000000000000000000000000000E-6143 33 -> 0E-6176 +dqshi155 shift 9.000000000000000000000000000000000E-6143 -1 -> 9.00000000000000000000000000000000E-6144 +dqshi156 shift 9.000000000000000000000000000000000E-6143 -33 -> 9E-6176 +dqshi157 shift 9.000000000000000000000000000000000E-6143 1 -> 0E-6176 +dqshi158 shift 9.000000000000000000000000000000000E-6143 33 -> 0E-6176 +dqshi160 shift 1E-6176 -1 -> 0E-6176 +dqshi161 shift 1E-6176 -33 -> 0E-6176 +dqshi162 shift 1E-6176 1 -> 1.0E-6175 +dqshi163 shift 1E-6176 33 -> 1.000000000000000000000000000000000E-6143 +-- negatives +dqshi171 shift -9.999999999999999999999999999999999E+6144 -1 -> -9.99999999999999999999999999999999E+6143 +dqshi172 shift -9.999999999999999999999999999999999E+6144 -33 -> -9E+6111 +dqshi173 shift -9.999999999999999999999999999999999E+6144 1 -> -9.999999999999999999999999999999990E+6144 +dqshi174 shift -9.999999999999999999999999999999999E+6144 33 -> -9.000000000000000000000000000000000E+6144 +dqshi175 shift -1E-6143 -1 -> -0E-6143 +dqshi176 shift -1E-6143 -33 -> -0E-6143 +dqshi177 shift -1E-6143 1 -> -1.0E-6142 +dqshi178 shift -1E-6143 33 -> -1.000000000000000000000000000000000E-6110 +dqshi181 shift -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144 +dqshi182 shift -1.000000000000000000000000000000000E-6143 -33 -> -1E-6176 +dqshi183 shift -1.000000000000000000000000000000000E-6143 1 -> -0E-6176 +dqshi184 shift -1.000000000000000000000000000000000E-6143 33 -> -0E-6176 +dqshi185 shift -9.000000000000000000000000000000000E-6143 -1 -> -9.00000000000000000000000000000000E-6144 +dqshi186 shift -9.000000000000000000000000000000000E-6143 -33 -> -9E-6176 +dqshi187 shift -9.000000000000000000000000000000000E-6143 1 -> -0E-6176 +dqshi188 shift -9.000000000000000000000000000000000E-6143 33 -> -0E-6176 +dqshi190 shift -1E-6176 -1 -> -0E-6176 +dqshi191 shift -1E-6176 -33 -> -0E-6176 +dqshi192 shift -1E-6176 1 -> -1.0E-6175 +dqshi193 shift -1E-6176 33 -> -1.000000000000000000000000000000000E-6143 + +-- more negatives (of sanities) +dqshi201 shift -0 0 -> -0 +dqshi202 shift -0 2 -> -0 +dqshi203 shift -1 2 -> -100 +dqshi204 shift -1 33 -> -1000000000000000000000000000000000 +dqshi205 shift -1 34 -> -0 +dqshi206 shift -1 -1 -> -0 +dqshi207 shift -0 -2 -> -0 +dqshi208 shift -1234567890123456789012345678901234 -1 -> -123456789012345678901234567890123 +dqshi209 shift -1234567890123456789012345678901234 -33 -> -1 +dqshi210 shift -1234567890123456789012345678901234 -34 -> -0 +dqshi211 shift -9934567890123456789012345678901234 -33 -> -9 +dqshi212 shift -9934567890123456789012345678901234 -34 -> -0 + + +-- Specials; NaNs are handled as usual +dqshi781 shift -Inf -8 -> -Infinity +dqshi782 shift -Inf -1 -> -Infinity +dqshi783 shift -Inf -0 -> -Infinity +dqshi784 shift -Inf 0 -> -Infinity +dqshi785 shift -Inf 1 -> -Infinity +dqshi786 shift -Inf 8 -> -Infinity +dqshi787 shift -1000 -Inf -> NaN Invalid_operation +dqshi788 shift -Inf -Inf -> NaN Invalid_operation +dqshi789 shift -1 -Inf -> NaN Invalid_operation +dqshi790 shift -0 -Inf -> NaN Invalid_operation +dqshi791 shift 0 -Inf -> NaN Invalid_operation +dqshi792 shift 1 -Inf -> NaN Invalid_operation +dqshi793 shift 1000 -Inf -> NaN Invalid_operation +dqshi794 shift Inf -Inf -> NaN Invalid_operation + +dqshi800 shift Inf -Inf -> NaN Invalid_operation +dqshi801 shift Inf -8 -> Infinity +dqshi802 shift Inf -1 -> Infinity +dqshi803 shift Inf -0 -> Infinity +dqshi804 shift Inf 0 -> Infinity +dqshi805 shift Inf 1 -> Infinity +dqshi806 shift Inf 8 -> Infinity +dqshi807 shift Inf Inf -> NaN Invalid_operation +dqshi808 shift -1000 Inf -> NaN Invalid_operation +dqshi809 shift -Inf Inf -> NaN Invalid_operation +dqshi810 shift -1 Inf -> NaN Invalid_operation +dqshi811 shift -0 Inf -> NaN Invalid_operation +dqshi812 shift 0 Inf -> NaN Invalid_operation +dqshi813 shift 1 Inf -> NaN Invalid_operation +dqshi814 shift 1000 Inf -> NaN Invalid_operation +dqshi815 shift Inf Inf -> NaN Invalid_operation + +dqshi821 shift NaN -Inf -> NaN +dqshi822 shift NaN -1000 -> NaN +dqshi823 shift NaN -1 -> NaN +dqshi824 shift NaN -0 -> NaN +dqshi825 shift NaN 0 -> NaN +dqshi826 shift NaN 1 -> NaN +dqshi827 shift NaN 1000 -> NaN +dqshi828 shift NaN Inf -> NaN +dqshi829 shift NaN NaN -> NaN +dqshi830 shift -Inf NaN -> NaN +dqshi831 shift -1000 NaN -> NaN +dqshi832 shift -1 NaN -> NaN +dqshi833 shift -0 NaN -> NaN +dqshi834 shift 0 NaN -> NaN +dqshi835 shift 1 NaN -> NaN +dqshi836 shift 1000 NaN -> NaN +dqshi837 shift Inf NaN -> NaN + +dqshi841 shift sNaN -Inf -> NaN Invalid_operation +dqshi842 shift sNaN -1000 -> NaN Invalid_operation +dqshi843 shift sNaN -1 -> NaN Invalid_operation +dqshi844 shift sNaN -0 -> NaN Invalid_operation +dqshi845 shift sNaN 0 -> NaN Invalid_operation +dqshi846 shift sNaN 1 -> NaN Invalid_operation +dqshi847 shift sNaN 1000 -> NaN Invalid_operation +dqshi848 shift sNaN NaN -> NaN Invalid_operation +dqshi849 shift sNaN sNaN -> NaN Invalid_operation +dqshi850 shift NaN sNaN -> NaN Invalid_operation +dqshi851 shift -Inf sNaN -> NaN Invalid_operation +dqshi852 shift -1000 sNaN -> NaN Invalid_operation +dqshi853 shift -1 sNaN -> NaN Invalid_operation +dqshi854 shift -0 sNaN -> NaN Invalid_operation +dqshi855 shift 0 sNaN -> NaN Invalid_operation +dqshi856 shift 1 sNaN -> NaN Invalid_operation +dqshi857 shift 1000 sNaN -> NaN Invalid_operation +dqshi858 shift Inf sNaN -> NaN Invalid_operation +dqshi859 shift NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqshi861 shift NaN1 -Inf -> NaN1 +dqshi862 shift +NaN2 -1000 -> NaN2 +dqshi863 shift NaN3 1000 -> NaN3 +dqshi864 shift NaN4 Inf -> NaN4 +dqshi865 shift NaN5 +NaN6 -> NaN5 +dqshi866 shift -Inf NaN7 -> NaN7 +dqshi867 shift -1000 NaN8 -> NaN8 +dqshi868 shift 1000 NaN9 -> NaN9 +dqshi869 shift Inf +NaN10 -> NaN10 +dqshi871 shift sNaN11 -Inf -> NaN11 Invalid_operation +dqshi872 shift sNaN12 -1000 -> NaN12 Invalid_operation +dqshi873 shift sNaN13 1000 -> NaN13 Invalid_operation +dqshi874 shift sNaN14 NaN17 -> NaN14 Invalid_operation +dqshi875 shift sNaN15 sNaN18 -> NaN15 Invalid_operation +dqshi876 shift NaN16 sNaN19 -> NaN19 Invalid_operation +dqshi877 shift -Inf +sNaN20 -> NaN20 Invalid_operation +dqshi878 shift -1000 sNaN21 -> NaN21 Invalid_operation +dqshi879 shift 1000 sNaN22 -> NaN22 Invalid_operation +dqshi880 shift Inf sNaN23 -> NaN23 Invalid_operation +dqshi881 shift +NaN25 +sNaN24 -> NaN24 Invalid_operation +dqshi882 shift -NaN26 NaN28 -> -NaN26 +dqshi883 shift -sNaN27 sNaN29 -> -NaN27 Invalid_operation +dqshi884 shift 1000 -NaN30 -> -NaN30 +dqshi885 shift 1000 -sNaN31 -> -NaN31 Invalid_operation diff --git a/Lib/test/decimaltestdata/dqSubtract.decTest b/Lib/test/decimaltestdata/dqSubtract.decTest index f3b9227..34572f6 100644 --- a/Lib/test/decimaltestdata/dqSubtract.decTest +++ b/Lib/test/decimaltestdata/dqSubtract.decTest @@ -1,635 +1,635 @@ ------------------------------------------------------------------------- --- dqSubtract.decTest -- decQuad subtraction -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests are for decQuads only; all arguments are --- representable in a decQuad -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- [first group are 'quick confidence check'] -dqsub001 subtract 0 0 -> '0' -dqsub002 subtract 1 1 -> '0' -dqsub003 subtract 1 2 -> '-1' -dqsub004 subtract 2 1 -> '1' -dqsub005 subtract 2 2 -> '0' -dqsub006 subtract 3 2 -> '1' -dqsub007 subtract 2 3 -> '-1' - -dqsub011 subtract -0 0 -> '-0' -dqsub012 subtract -1 1 -> '-2' -dqsub013 subtract -1 2 -> '-3' -dqsub014 subtract -2 1 -> '-3' -dqsub015 subtract -2 2 -> '-4' -dqsub016 subtract -3 2 -> '-5' -dqsub017 subtract -2 3 -> '-5' - -dqsub021 subtract 0 -0 -> '0' -dqsub022 subtract 1 -1 -> '2' -dqsub023 subtract 1 -2 -> '3' -dqsub024 subtract 2 -1 -> '3' -dqsub025 subtract 2 -2 -> '4' -dqsub026 subtract 3 -2 -> '5' -dqsub027 subtract 2 -3 -> '5' - -dqsub030 subtract 11 1 -> 10 -dqsub031 subtract 10 1 -> 9 -dqsub032 subtract 9 1 -> 8 -dqsub033 subtract 1 1 -> 0 -dqsub034 subtract 0 1 -> -1 -dqsub035 subtract -1 1 -> -2 -dqsub036 subtract -9 1 -> -10 -dqsub037 subtract -10 1 -> -11 -dqsub038 subtract -11 1 -> -12 - -dqsub040 subtract '5.75' '3.3' -> '2.45' -dqsub041 subtract '5' '-3' -> '8' -dqsub042 subtract '-5' '-3' -> '-2' -dqsub043 subtract '-7' '2.5' -> '-9.5' -dqsub044 subtract '0.7' '0.3' -> '0.4' -dqsub045 subtract '1.3' '0.3' -> '1.0' -dqsub046 subtract '1.25' '1.25' -> '0.00' - -dqsub050 subtract '1.23456789' '1.00000000' -> '0.23456789' -dqsub051 subtract '1.23456789' '1.00000089' -> '0.23456700' - -dqsub060 subtract '70' '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded -dqsub061 subtract '700' '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded -dqsub062 subtract '7000' '10000e+34' -> '-9.999999999999999999999999999999999E+37' Inexact Rounded -dqsub063 subtract '70000' '10000e+34' -> '-9.999999999999999999999999999999993E+37' Rounded -dqsub064 subtract '700000' '10000e+34' -> '-9.999999999999999999999999999999930E+37' Rounded - -- symmetry: -dqsub065 subtract '10000e+34' '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqsub066 subtract '10000e+34' '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded -dqsub067 subtract '10000e+34' '7000' -> '9.999999999999999999999999999999999E+37' Inexact Rounded -dqsub068 subtract '10000e+34' '70000' -> '9.999999999999999999999999999999993E+37' Rounded -dqsub069 subtract '10000e+34' '700000' -> '9.999999999999999999999999999999930E+37' Rounded - - -- some of the next group are really constructor tests -dqsub090 subtract '00.0' '0.0' -> '0.0' -dqsub091 subtract '00.0' '0.00' -> '0.00' -dqsub092 subtract '0.00' '00.0' -> '0.00' -dqsub093 subtract '00.0' '0.00' -> '0.00' -dqsub094 subtract '0.00' '00.0' -> '0.00' -dqsub095 subtract '3' '.3' -> '2.7' -dqsub096 subtract '3.' '.3' -> '2.7' -dqsub097 subtract '3.0' '.3' -> '2.7' -dqsub098 subtract '3.00' '.3' -> '2.70' -dqsub099 subtract '3' '3' -> '0' -dqsub100 subtract '3' '+3' -> '0' -dqsub101 subtract '3' '-3' -> '6' -dqsub102 subtract '3' '0.3' -> '2.7' -dqsub103 subtract '3.' '0.3' -> '2.7' -dqsub104 subtract '3.0' '0.3' -> '2.7' -dqsub105 subtract '3.00' '0.3' -> '2.70' -dqsub106 subtract '3' '3.0' -> '0.0' -dqsub107 subtract '3' '+3.0' -> '0.0' -dqsub108 subtract '3' '-3.0' -> '6.0' - --- the above all from add; massaged and extended. Now some new ones... --- [particularly important for comparisons] --- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7 --- with input rounding. -dqsub120 subtract '10.23456784' '10.23456789' -> '-5E-8' -dqsub121 subtract '10.23456785' '10.23456789' -> '-4E-8' -dqsub122 subtract '10.23456786' '10.23456789' -> '-3E-8' -dqsub123 subtract '10.23456787' '10.23456789' -> '-2E-8' -dqsub124 subtract '10.23456788' '10.23456789' -> '-1E-8' -dqsub125 subtract '10.23456789' '10.23456789' -> '0E-8' -dqsub126 subtract '10.23456790' '10.23456789' -> '1E-8' -dqsub127 subtract '10.23456791' '10.23456789' -> '2E-8' -dqsub128 subtract '10.23456792' '10.23456789' -> '3E-8' -dqsub129 subtract '10.23456793' '10.23456789' -> '4E-8' -dqsub130 subtract '10.23456794' '10.23456789' -> '5E-8' -dqsub131 subtract '10.23456781' '10.23456786' -> '-5E-8' -dqsub132 subtract '10.23456782' '10.23456786' -> '-4E-8' -dqsub133 subtract '10.23456783' '10.23456786' -> '-3E-8' -dqsub134 subtract '10.23456784' '10.23456786' -> '-2E-8' -dqsub135 subtract '10.23456785' '10.23456786' -> '-1E-8' -dqsub136 subtract '10.23456786' '10.23456786' -> '0E-8' -dqsub137 subtract '10.23456787' '10.23456786' -> '1E-8' -dqsub138 subtract '10.23456788' '10.23456786' -> '2E-8' -dqsub139 subtract '10.23456789' '10.23456786' -> '3E-8' -dqsub140 subtract '10.23456790' '10.23456786' -> '4E-8' -dqsub141 subtract '10.23456791' '10.23456786' -> '5E-8' -dqsub142 subtract '1' '0.999999999' -> '1E-9' -dqsub143 subtract '0.999999999' '1' -> '-1E-9' -dqsub144 subtract '-10.23456780' '-10.23456786' -> '6E-8' -dqsub145 subtract '-10.23456790' '-10.23456786' -> '-4E-8' -dqsub146 subtract '-10.23456791' '-10.23456786' -> '-5E-8' - --- additional scaled arithmetic tests [0.97 problem] -dqsub160 subtract '0' '.1' -> '-0.1' -dqsub161 subtract '00' '.97983' -> '-0.97983' -dqsub162 subtract '0' '.9' -> '-0.9' -dqsub163 subtract '0' '0.102' -> '-0.102' -dqsub164 subtract '0' '.4' -> '-0.4' -dqsub165 subtract '0' '.307' -> '-0.307' -dqsub166 subtract '0' '.43822' -> '-0.43822' -dqsub167 subtract '0' '.911' -> '-0.911' -dqsub168 subtract '.0' '.02' -> '-0.02' -dqsub169 subtract '00' '.392' -> '-0.392' -dqsub170 subtract '0' '.26' -> '-0.26' -dqsub171 subtract '0' '0.51' -> '-0.51' -dqsub172 subtract '0' '.2234' -> '-0.2234' -dqsub173 subtract '0' '.2' -> '-0.2' -dqsub174 subtract '.0' '.0008' -> '-0.0008' --- 0. on left -dqsub180 subtract '0.0' '-.1' -> '0.1' -dqsub181 subtract '0.00' '-.97983' -> '0.97983' -dqsub182 subtract '0.0' '-.9' -> '0.9' -dqsub183 subtract '0.0' '-0.102' -> '0.102' -dqsub184 subtract '0.0' '-.4' -> '0.4' -dqsub185 subtract '0.0' '-.307' -> '0.307' -dqsub186 subtract '0.0' '-.43822' -> '0.43822' -dqsub187 subtract '0.0' '-.911' -> '0.911' -dqsub188 subtract '0.0' '-.02' -> '0.02' -dqsub189 subtract '0.00' '-.392' -> '0.392' -dqsub190 subtract '0.0' '-.26' -> '0.26' -dqsub191 subtract '0.0' '-0.51' -> '0.51' -dqsub192 subtract '0.0' '-.2234' -> '0.2234' -dqsub193 subtract '0.0' '-.2' -> '0.2' -dqsub194 subtract '0.0' '-.0008' -> '0.0008' --- negatives of same -dqsub200 subtract '0' '-.1' -> '0.1' -dqsub201 subtract '00' '-.97983' -> '0.97983' -dqsub202 subtract '0' '-.9' -> '0.9' -dqsub203 subtract '0' '-0.102' -> '0.102' -dqsub204 subtract '0' '-.4' -> '0.4' -dqsub205 subtract '0' '-.307' -> '0.307' -dqsub206 subtract '0' '-.43822' -> '0.43822' -dqsub207 subtract '0' '-.911' -> '0.911' -dqsub208 subtract '.0' '-.02' -> '0.02' -dqsub209 subtract '00' '-.392' -> '0.392' -dqsub210 subtract '0' '-.26' -> '0.26' -dqsub211 subtract '0' '-0.51' -> '0.51' -dqsub212 subtract '0' '-.2234' -> '0.2234' -dqsub213 subtract '0' '-.2' -> '0.2' -dqsub214 subtract '.0' '-.0008' -> '0.0008' - --- more fixed, LHS swaps [really the same as testcases under add] -dqsub220 subtract '-56267E-12' 0 -> '-5.6267E-8' -dqsub221 subtract '-56267E-11' 0 -> '-5.6267E-7' -dqsub222 subtract '-56267E-10' 0 -> '-0.0000056267' -dqsub223 subtract '-56267E-9' 0 -> '-0.000056267' -dqsub224 subtract '-56267E-8' 0 -> '-0.00056267' -dqsub225 subtract '-56267E-7' 0 -> '-0.0056267' -dqsub226 subtract '-56267E-6' 0 -> '-0.056267' -dqsub227 subtract '-56267E-5' 0 -> '-0.56267' -dqsub228 subtract '-56267E-2' 0 -> '-562.67' -dqsub229 subtract '-56267E-1' 0 -> '-5626.7' -dqsub230 subtract '-56267E-0' 0 -> '-56267' --- symmetry ... -dqsub240 subtract 0 '-56267E-12' -> '5.6267E-8' -dqsub241 subtract 0 '-56267E-11' -> '5.6267E-7' -dqsub242 subtract 0 '-56267E-10' -> '0.0000056267' -dqsub243 subtract 0 '-56267E-9' -> '0.000056267' -dqsub244 subtract 0 '-56267E-8' -> '0.00056267' -dqsub245 subtract 0 '-56267E-7' -> '0.0056267' -dqsub246 subtract 0 '-56267E-6' -> '0.056267' -dqsub247 subtract 0 '-56267E-5' -> '0.56267' -dqsub248 subtract 0 '-56267E-2' -> '562.67' -dqsub249 subtract 0 '-56267E-1' -> '5626.7' -dqsub250 subtract 0 '-56267E-0' -> '56267' - --- now some more from the 'new' add -dqsub301 subtract '1.23456789' '1.00000000' -> '0.23456789' -dqsub302 subtract '1.23456789' '1.00000011' -> '0.23456778' - --- some carrying effects -dqsub321 subtract '0.9998' '0.0000' -> '0.9998' -dqsub322 subtract '0.9998' '0.0001' -> '0.9997' -dqsub323 subtract '0.9998' '0.0002' -> '0.9996' -dqsub324 subtract '0.9998' '0.0003' -> '0.9995' -dqsub325 subtract '0.9998' '-0.0000' -> '0.9998' -dqsub326 subtract '0.9998' '-0.0001' -> '0.9999' -dqsub327 subtract '0.9998' '-0.0002' -> '1.0000' -dqsub328 subtract '0.9998' '-0.0003' -> '1.0001' - --- internal boundaries -dqsub346 subtract '10000e+9' '7' -> '9999999999993' -dqsub347 subtract '10000e+9' '70' -> '9999999999930' -dqsub348 subtract '10000e+9' '700' -> '9999999999300' -dqsub349 subtract '10000e+9' '7000' -> '9999999993000' -dqsub350 subtract '10000e+9' '70000' -> '9999999930000' -dqsub351 subtract '10000e+9' '700000' -> '9999999300000' -dqsub352 subtract '7' '10000e+9' -> '-9999999999993' -dqsub353 subtract '70' '10000e+9' -> '-9999999999930' -dqsub354 subtract '700' '10000e+9' -> '-9999999999300' -dqsub355 subtract '7000' '10000e+9' -> '-9999999993000' -dqsub356 subtract '70000' '10000e+9' -> '-9999999930000' -dqsub357 subtract '700000' '10000e+9' -> '-9999999300000' - --- zero preservation -dqsub361 subtract 1 '0.0001' -> '0.9999' -dqsub362 subtract 1 '0.00001' -> '0.99999' -dqsub363 subtract 1 '0.000001' -> '0.999999' -dqsub364 subtract 1 '0.0000000000000000000000000000000001' -> '0.9999999999999999999999999999999999' -dqsub365 subtract 1 '0.00000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded -dqsub366 subtract 1 '0.000000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded - --- some funny zeros [in case of bad signum] -dqsub370 subtract 1 0 -> 1 -dqsub371 subtract 1 0. -> 1 -dqsub372 subtract 1 .0 -> 1.0 -dqsub373 subtract 1 0.0 -> 1.0 -dqsub374 subtract 0 1 -> -1 -dqsub375 subtract 0. 1 -> -1 -dqsub376 subtract .0 1 -> -1.0 -dqsub377 subtract 0.0 1 -> -1.0 - --- leading 0 digit before round -dqsub910 subtract -103519362 -51897955.3 -> -51621406.7 -dqsub911 subtract 159579.444 89827.5229 -> 69751.9211 - -dqsub920 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234566 -> 299.9999999999999999999999999999999 Inexact Rounded -dqsub921 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234565 -> 300.0000000000000000000000000000000 Inexact Rounded -dqsub922 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234565 -> 99.99999999999999999999999999999995 -dqsub923 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234564 -> 99.99999999999999999999999999999996 -dqsub924 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234540 -> 100.0000000000000000000000000000002 Rounded -dqsub925 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234560 -> 90.00000000000000000000000000000000 -dqsub926 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234561 -> 89.99999999999999999999999999999999 -dqsub927 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234566 -> 89.99999999999999999999999999999994 -dqsub928 subtract 101.0000000000000000000000000123456 91.00000000000000000000000001234566 -> 9.99999999999999999999999999999994 -dqsub929 subtract 101.0000000000000000000000000123456 99.00000000000000000000000001234566 -> 1.99999999999999999999999999999994 - --- more LHS swaps [were fixed] -dqsub390 subtract '-56267E-10' 0 -> '-0.0000056267' -dqsub391 subtract '-56267E-6' 0 -> '-0.056267' -dqsub392 subtract '-56267E-5' 0 -> '-0.56267' -dqsub393 subtract '-56267E-4' 0 -> '-5.6267' -dqsub394 subtract '-56267E-3' 0 -> '-56.267' -dqsub395 subtract '-56267E-2' 0 -> '-562.67' -dqsub396 subtract '-56267E-1' 0 -> '-5626.7' -dqsub397 subtract '-56267E-0' 0 -> '-56267' -dqsub398 subtract '-5E-10' 0 -> '-5E-10' -dqsub399 subtract '-5E-7' 0 -> '-5E-7' -dqsub400 subtract '-5E-6' 0 -> '-0.000005' -dqsub401 subtract '-5E-5' 0 -> '-0.00005' -dqsub402 subtract '-5E-4' 0 -> '-0.0005' -dqsub403 subtract '-5E-1' 0 -> '-0.5' -dqsub404 subtract '-5E0' 0 -> '-5' -dqsub405 subtract '-5E1' 0 -> '-50' -dqsub406 subtract '-5E5' 0 -> '-500000' -dqsub407 subtract '-5E33' 0 -> '-5000000000000000000000000000000000' -dqsub408 subtract '-5E34' 0 -> '-5.000000000000000000000000000000000E+34' Rounded -dqsub409 subtract '-5E35' 0 -> '-5.000000000000000000000000000000000E+35' Rounded -dqsub410 subtract '-5E36' 0 -> '-5.000000000000000000000000000000000E+36' Rounded -dqsub411 subtract '-5E100' 0 -> '-5.000000000000000000000000000000000E+100' Rounded - --- more RHS swaps [were fixed] -dqsub420 subtract 0 '-56267E-10' -> '0.0000056267' -dqsub421 subtract 0 '-56267E-6' -> '0.056267' -dqsub422 subtract 0 '-56267E-5' -> '0.56267' -dqsub423 subtract 0 '-56267E-4' -> '5.6267' -dqsub424 subtract 0 '-56267E-3' -> '56.267' -dqsub425 subtract 0 '-56267E-2' -> '562.67' -dqsub426 subtract 0 '-56267E-1' -> '5626.7' -dqsub427 subtract 0 '-56267E-0' -> '56267' -dqsub428 subtract 0 '-5E-10' -> '5E-10' -dqsub429 subtract 0 '-5E-7' -> '5E-7' -dqsub430 subtract 0 '-5E-6' -> '0.000005' -dqsub431 subtract 0 '-5E-5' -> '0.00005' -dqsub432 subtract 0 '-5E-4' -> '0.0005' -dqsub433 subtract 0 '-5E-1' -> '0.5' -dqsub434 subtract 0 '-5E0' -> '5' -dqsub435 subtract 0 '-5E1' -> '50' -dqsub436 subtract 0 '-5E5' -> '500000' -dqsub437 subtract 0 '-5E33' -> '5000000000000000000000000000000000' -dqsub438 subtract 0 '-5E34' -> '5.000000000000000000000000000000000E+34' Rounded -dqsub439 subtract 0 '-5E35' -> '5.000000000000000000000000000000000E+35' Rounded -dqsub440 subtract 0 '-5E36' -> '5.000000000000000000000000000000000E+36' Rounded -dqsub441 subtract 0 '-5E100' -> '5.000000000000000000000000000000000E+100' Rounded - - --- try borderline precision, with carries, etc. -dqsub461 subtract '1E+16' '1' -> '9999999999999999' -dqsub462 subtract '1E+12' '-1.111' -> '1000000000001.111' -dqsub463 subtract '1.111' '-1E+12' -> '1000000000001.111' -dqsub464 subtract '-1' '-1E+16' -> '9999999999999999' -dqsub465 subtract '7E+15' '1' -> '6999999999999999' -dqsub466 subtract '7E+12' '-1.111' -> '7000000000001.111' -dqsub467 subtract '1.111' '-7E+12' -> '7000000000001.111' -dqsub468 subtract '-1' '-7E+15' -> '6999999999999999' - --- 1234567890123456 1234567890123456 1 23456789012345 -dqsub470 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555563' -> '1.000000000000000000000000000000001' Inexact Rounded -dqsub471 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555562' -> '1.000000000000000000000000000000001' Inexact Rounded -dqsub472 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555561' -> '1.000000000000000000000000000000000' Inexact Rounded -dqsub473 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555560' -> '1.000000000000000000000000000000000' Inexact Rounded -dqsub474 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555559' -> '1.000000000000000000000000000000000' Inexact Rounded -dqsub475 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555558' -> '1.000000000000000000000000000000000' Inexact Rounded -dqsub476 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555557' -> '1.000000000000000000000000000000000' Inexact Rounded -dqsub477 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555556' -> '1.000000000000000000000000000000000' Rounded -dqsub478 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999' -dqsub479 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555554' -> '0.9999999999999999999999999999999998' -dqsub480 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555553' -> '0.9999999999999999999999999999999997' -dqsub481 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555552' -> '0.9999999999999999999999999999999996' -dqsub482 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555551' -> '0.9999999999999999999999999999999995' -dqsub483 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555550' -> '0.9999999999999999999999999999999994' - --- and some more, including residue effects and different roundings -rounding: half_up -dqsub500 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789' -dqsub501 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub502 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub503 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub504 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub505 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub506 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub507 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub508 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub509 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub510 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub511 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub512 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub513 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub514 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub515 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub516 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788' -dqsub517 subtract '1231234555555555555555555567456789' 1.000000001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub518 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub519 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456788' Inexact Rounded - -rounding: half_even -dqsub520 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789' -dqsub521 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub522 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub523 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub524 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub525 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub526 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub527 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456789' Inexact Rounded -dqsub528 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub529 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub530 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub531 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub532 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub533 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub534 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub535 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub536 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788' -dqsub537 subtract '1231234555555555555555555567456789' 1.00000001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub538 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub539 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456788' Inexact Rounded --- critical few with even bottom digit... -dqsub540 subtract '1231234555555555555555555567456788' 0.499999999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub541 subtract '1231234555555555555555555567456788' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub542 subtract '1231234555555555555555555567456788' 0.500000001 -> '1231234555555555555555555567456787' Inexact Rounded - -rounding: down -dqsub550 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789' -dqsub551 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub552 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub553 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub554 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub555 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub556 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub557 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub558 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub559 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub560 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub561 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub562 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub563 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub564 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub565 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded -dqsub566 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788' -dqsub567 subtract '1231234555555555555555555567456789' 1.00000001 -> '1231234555555555555555555567456787' Inexact Rounded -dqsub568 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456787' Inexact Rounded -dqsub569 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456787' Inexact Rounded - --- symmetry... -rounding: half_up -dqsub600 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' -dqsub601 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub602 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub603 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub604 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub605 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub606 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub607 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub608 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub609 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub610 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub611 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub612 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub613 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub614 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub615 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub616 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' -dqsub617 subtract 1.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub618 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub619 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded - -rounding: half_even -dqsub620 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' -dqsub621 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub622 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub623 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub624 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub625 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub626 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub627 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded -dqsub628 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub629 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub630 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub631 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub632 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub633 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub634 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub635 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub636 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' -dqsub637 subtract 1.00000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub638 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub639 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded --- critical few with even bottom digit... -dqsub640 subtract 0.499999999 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub641 subtract 0.5 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub642 subtract 0.500000001 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456787' Inexact Rounded - -rounding: down -dqsub650 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' -dqsub651 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub652 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub653 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub654 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub655 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub656 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub657 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub658 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub659 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub660 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub661 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub662 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub663 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub664 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub665 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded -dqsub666 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' -dqsub667 subtract 1.00000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded -dqsub668 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded -dqsub669 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded - - --- lots of leading zeros in intermediate result, and showing effects of --- input rounding would have affected the following -rounding: half_up -dqsub670 subtract '1234567456789' '1234567456788.1' -> 0.9 -dqsub671 subtract '1234567456789' '1234567456788.9' -> 0.1 -dqsub672 subtract '1234567456789' '1234567456789.1' -> -0.1 -dqsub673 subtract '1234567456789' '1234567456789.5' -> -0.5 -dqsub674 subtract '1234567456789' '1234567456789.9' -> -0.9 - -rounding: half_even -dqsub680 subtract '1234567456789' '1234567456788.1' -> 0.9 -dqsub681 subtract '1234567456789' '1234567456788.9' -> 0.1 -dqsub682 subtract '1234567456789' '1234567456789.1' -> -0.1 -dqsub683 subtract '1234567456789' '1234567456789.5' -> -0.5 -dqsub684 subtract '1234567456789' '1234567456789.9' -> -0.9 - -dqsub685 subtract '1234567456788' '1234567456787.1' -> 0.9 -dqsub686 subtract '1234567456788' '1234567456787.9' -> 0.1 -dqsub687 subtract '1234567456788' '1234567456788.1' -> -0.1 -dqsub688 subtract '1234567456788' '1234567456788.5' -> -0.5 -dqsub689 subtract '1234567456788' '1234567456788.9' -> -0.9 - -rounding: down -dqsub690 subtract '1234567456789' '1234567456788.1' -> 0.9 -dqsub691 subtract '1234567456789' '1234567456788.9' -> 0.1 -dqsub692 subtract '1234567456789' '1234567456789.1' -> -0.1 -dqsub693 subtract '1234567456789' '1234567456789.5' -> -0.5 -dqsub694 subtract '1234567456789' '1234567456789.9' -> -0.9 - --- Specials -dqsub780 subtract -Inf Inf -> -Infinity -dqsub781 subtract -Inf 1000 -> -Infinity -dqsub782 subtract -Inf 1 -> -Infinity -dqsub783 subtract -Inf -0 -> -Infinity -dqsub784 subtract -Inf -1 -> -Infinity -dqsub785 subtract -Inf -1000 -> -Infinity -dqsub787 subtract -1000 Inf -> -Infinity -dqsub788 subtract -Inf Inf -> -Infinity -dqsub789 subtract -1 Inf -> -Infinity -dqsub790 subtract 0 Inf -> -Infinity -dqsub791 subtract 1 Inf -> -Infinity -dqsub792 subtract 1000 Inf -> -Infinity - -dqsub800 subtract Inf Inf -> NaN Invalid_operation -dqsub801 subtract Inf 1000 -> Infinity -dqsub802 subtract Inf 1 -> Infinity -dqsub803 subtract Inf 0 -> Infinity -dqsub804 subtract Inf -0 -> Infinity -dqsub805 subtract Inf -1 -> Infinity -dqsub806 subtract Inf -1000 -> Infinity -dqsub807 subtract Inf -Inf -> Infinity -dqsub808 subtract -1000 -Inf -> Infinity -dqsub809 subtract -Inf -Inf -> NaN Invalid_operation -dqsub810 subtract -1 -Inf -> Infinity -dqsub811 subtract -0 -Inf -> Infinity -dqsub812 subtract 0 -Inf -> Infinity -dqsub813 subtract 1 -Inf -> Infinity -dqsub814 subtract 1000 -Inf -> Infinity -dqsub815 subtract Inf -Inf -> Infinity - -dqsub821 subtract NaN Inf -> NaN -dqsub822 subtract -NaN 1000 -> -NaN -dqsub823 subtract NaN 1 -> NaN -dqsub824 subtract NaN 0 -> NaN -dqsub825 subtract NaN -0 -> NaN -dqsub826 subtract NaN -1 -> NaN -dqsub827 subtract NaN -1000 -> NaN -dqsub828 subtract NaN -Inf -> NaN -dqsub829 subtract -NaN NaN -> -NaN -dqsub830 subtract -Inf NaN -> NaN -dqsub831 subtract -1000 NaN -> NaN -dqsub832 subtract -1 NaN -> NaN -dqsub833 subtract -0 NaN -> NaN -dqsub834 subtract 0 NaN -> NaN -dqsub835 subtract 1 NaN -> NaN -dqsub836 subtract 1000 -NaN -> -NaN -dqsub837 subtract Inf NaN -> NaN - -dqsub841 subtract sNaN Inf -> NaN Invalid_operation -dqsub842 subtract -sNaN 1000 -> -NaN Invalid_operation -dqsub843 subtract sNaN 1 -> NaN Invalid_operation -dqsub844 subtract sNaN 0 -> NaN Invalid_operation -dqsub845 subtract sNaN -0 -> NaN Invalid_operation -dqsub846 subtract sNaN -1 -> NaN Invalid_operation -dqsub847 subtract sNaN -1000 -> NaN Invalid_operation -dqsub848 subtract sNaN NaN -> NaN Invalid_operation -dqsub849 subtract sNaN sNaN -> NaN Invalid_operation -dqsub850 subtract NaN sNaN -> NaN Invalid_operation -dqsub851 subtract -Inf -sNaN -> -NaN Invalid_operation -dqsub852 subtract -1000 sNaN -> NaN Invalid_operation -dqsub853 subtract -1 sNaN -> NaN Invalid_operation -dqsub854 subtract -0 sNaN -> NaN Invalid_operation -dqsub855 subtract 0 sNaN -> NaN Invalid_operation -dqsub856 subtract 1 sNaN -> NaN Invalid_operation -dqsub857 subtract 1000 sNaN -> NaN Invalid_operation -dqsub858 subtract Inf sNaN -> NaN Invalid_operation -dqsub859 subtract NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqsub861 subtract NaN01 -Inf -> NaN1 -dqsub862 subtract -NaN02 -1000 -> -NaN2 -dqsub863 subtract NaN03 1000 -> NaN3 -dqsub864 subtract NaN04 Inf -> NaN4 -dqsub865 subtract NaN05 NaN61 -> NaN5 -dqsub866 subtract -Inf -NaN71 -> -NaN71 -dqsub867 subtract -1000 NaN81 -> NaN81 -dqsub868 subtract 1000 NaN91 -> NaN91 -dqsub869 subtract Inf NaN101 -> NaN101 -dqsub871 subtract sNaN011 -Inf -> NaN11 Invalid_operation -dqsub872 subtract sNaN012 -1000 -> NaN12 Invalid_operation -dqsub873 subtract -sNaN013 1000 -> -NaN13 Invalid_operation -dqsub874 subtract sNaN014 NaN171 -> NaN14 Invalid_operation -dqsub875 subtract sNaN015 sNaN181 -> NaN15 Invalid_operation -dqsub876 subtract NaN016 sNaN191 -> NaN191 Invalid_operation -dqsub877 subtract -Inf sNaN201 -> NaN201 Invalid_operation -dqsub878 subtract -1000 sNaN211 -> NaN211 Invalid_operation -dqsub879 subtract 1000 -sNaN221 -> -NaN221 Invalid_operation -dqsub880 subtract Inf sNaN231 -> NaN231 Invalid_operation -dqsub881 subtract NaN025 sNaN241 -> NaN241 Invalid_operation - --- edge case spills -dqsub901 subtract 2.E-3 1.002 -> -1.000 -dqsub902 subtract 2.0E-3 1.002 -> -1.0000 -dqsub903 subtract 2.00E-3 1.0020 -> -1.00000 -dqsub904 subtract 2.000E-3 1.00200 -> -1.000000 -dqsub905 subtract 2.0000E-3 1.002000 -> -1.0000000 -dqsub906 subtract 2.00000E-3 1.0020000 -> -1.00000000 -dqsub907 subtract 2.000000E-3 1.00200000 -> -1.000000000 -dqsub908 subtract 2.0000000E-3 1.002000000 -> -1.0000000000 - --- subnormals and overflows covered under Add - --- Examples from SQL proposal (Krishna Kulkarni) -dqsub1125 subtract 130E-2 120E-2 -> 0.10 -dqsub1126 subtract 130E-2 12E-1 -> 0.10 -dqsub1127 subtract 130E-2 1E0 -> 0.30 -dqsub1128 subtract 1E2 1E4 -> -9.9E+3 - --- Null tests -dqsub9990 subtract 10 # -> NaN Invalid_operation -dqsub9991 subtract # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqSubtract.decTest -- decQuad subtraction -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests are for decQuads only; all arguments are +-- representable in a decQuad +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- [first group are 'quick confidence check'] +dqsub001 subtract 0 0 -> '0' +dqsub002 subtract 1 1 -> '0' +dqsub003 subtract 1 2 -> '-1' +dqsub004 subtract 2 1 -> '1' +dqsub005 subtract 2 2 -> '0' +dqsub006 subtract 3 2 -> '1' +dqsub007 subtract 2 3 -> '-1' + +dqsub011 subtract -0 0 -> '-0' +dqsub012 subtract -1 1 -> '-2' +dqsub013 subtract -1 2 -> '-3' +dqsub014 subtract -2 1 -> '-3' +dqsub015 subtract -2 2 -> '-4' +dqsub016 subtract -3 2 -> '-5' +dqsub017 subtract -2 3 -> '-5' + +dqsub021 subtract 0 -0 -> '0' +dqsub022 subtract 1 -1 -> '2' +dqsub023 subtract 1 -2 -> '3' +dqsub024 subtract 2 -1 -> '3' +dqsub025 subtract 2 -2 -> '4' +dqsub026 subtract 3 -2 -> '5' +dqsub027 subtract 2 -3 -> '5' + +dqsub030 subtract 11 1 -> 10 +dqsub031 subtract 10 1 -> 9 +dqsub032 subtract 9 1 -> 8 +dqsub033 subtract 1 1 -> 0 +dqsub034 subtract 0 1 -> -1 +dqsub035 subtract -1 1 -> -2 +dqsub036 subtract -9 1 -> -10 +dqsub037 subtract -10 1 -> -11 +dqsub038 subtract -11 1 -> -12 + +dqsub040 subtract '5.75' '3.3' -> '2.45' +dqsub041 subtract '5' '-3' -> '8' +dqsub042 subtract '-5' '-3' -> '-2' +dqsub043 subtract '-7' '2.5' -> '-9.5' +dqsub044 subtract '0.7' '0.3' -> '0.4' +dqsub045 subtract '1.3' '0.3' -> '1.0' +dqsub046 subtract '1.25' '1.25' -> '0.00' + +dqsub050 subtract '1.23456789' '1.00000000' -> '0.23456789' +dqsub051 subtract '1.23456789' '1.00000089' -> '0.23456700' + +dqsub060 subtract '70' '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded +dqsub061 subtract '700' '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded +dqsub062 subtract '7000' '10000e+34' -> '-9.999999999999999999999999999999999E+37' Inexact Rounded +dqsub063 subtract '70000' '10000e+34' -> '-9.999999999999999999999999999999993E+37' Rounded +dqsub064 subtract '700000' '10000e+34' -> '-9.999999999999999999999999999999930E+37' Rounded + -- symmetry: +dqsub065 subtract '10000e+34' '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqsub066 subtract '10000e+34' '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded +dqsub067 subtract '10000e+34' '7000' -> '9.999999999999999999999999999999999E+37' Inexact Rounded +dqsub068 subtract '10000e+34' '70000' -> '9.999999999999999999999999999999993E+37' Rounded +dqsub069 subtract '10000e+34' '700000' -> '9.999999999999999999999999999999930E+37' Rounded + + -- some of the next group are really constructor tests +dqsub090 subtract '00.0' '0.0' -> '0.0' +dqsub091 subtract '00.0' '0.00' -> '0.00' +dqsub092 subtract '0.00' '00.0' -> '0.00' +dqsub093 subtract '00.0' '0.00' -> '0.00' +dqsub094 subtract '0.00' '00.0' -> '0.00' +dqsub095 subtract '3' '.3' -> '2.7' +dqsub096 subtract '3.' '.3' -> '2.7' +dqsub097 subtract '3.0' '.3' -> '2.7' +dqsub098 subtract '3.00' '.3' -> '2.70' +dqsub099 subtract '3' '3' -> '0' +dqsub100 subtract '3' '+3' -> '0' +dqsub101 subtract '3' '-3' -> '6' +dqsub102 subtract '3' '0.3' -> '2.7' +dqsub103 subtract '3.' '0.3' -> '2.7' +dqsub104 subtract '3.0' '0.3' -> '2.7' +dqsub105 subtract '3.00' '0.3' -> '2.70' +dqsub106 subtract '3' '3.0' -> '0.0' +dqsub107 subtract '3' '+3.0' -> '0.0' +dqsub108 subtract '3' '-3.0' -> '6.0' + +-- the above all from add; massaged and extended. Now some new ones... +-- [particularly important for comparisons] +-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7 +-- with input rounding. +dqsub120 subtract '10.23456784' '10.23456789' -> '-5E-8' +dqsub121 subtract '10.23456785' '10.23456789' -> '-4E-8' +dqsub122 subtract '10.23456786' '10.23456789' -> '-3E-8' +dqsub123 subtract '10.23456787' '10.23456789' -> '-2E-8' +dqsub124 subtract '10.23456788' '10.23456789' -> '-1E-8' +dqsub125 subtract '10.23456789' '10.23456789' -> '0E-8' +dqsub126 subtract '10.23456790' '10.23456789' -> '1E-8' +dqsub127 subtract '10.23456791' '10.23456789' -> '2E-8' +dqsub128 subtract '10.23456792' '10.23456789' -> '3E-8' +dqsub129 subtract '10.23456793' '10.23456789' -> '4E-8' +dqsub130 subtract '10.23456794' '10.23456789' -> '5E-8' +dqsub131 subtract '10.23456781' '10.23456786' -> '-5E-8' +dqsub132 subtract '10.23456782' '10.23456786' -> '-4E-8' +dqsub133 subtract '10.23456783' '10.23456786' -> '-3E-8' +dqsub134 subtract '10.23456784' '10.23456786' -> '-2E-8' +dqsub135 subtract '10.23456785' '10.23456786' -> '-1E-8' +dqsub136 subtract '10.23456786' '10.23456786' -> '0E-8' +dqsub137 subtract '10.23456787' '10.23456786' -> '1E-8' +dqsub138 subtract '10.23456788' '10.23456786' -> '2E-8' +dqsub139 subtract '10.23456789' '10.23456786' -> '3E-8' +dqsub140 subtract '10.23456790' '10.23456786' -> '4E-8' +dqsub141 subtract '10.23456791' '10.23456786' -> '5E-8' +dqsub142 subtract '1' '0.999999999' -> '1E-9' +dqsub143 subtract '0.999999999' '1' -> '-1E-9' +dqsub144 subtract '-10.23456780' '-10.23456786' -> '6E-8' +dqsub145 subtract '-10.23456790' '-10.23456786' -> '-4E-8' +dqsub146 subtract '-10.23456791' '-10.23456786' -> '-5E-8' + +-- additional scaled arithmetic tests [0.97 problem] +dqsub160 subtract '0' '.1' -> '-0.1' +dqsub161 subtract '00' '.97983' -> '-0.97983' +dqsub162 subtract '0' '.9' -> '-0.9' +dqsub163 subtract '0' '0.102' -> '-0.102' +dqsub164 subtract '0' '.4' -> '-0.4' +dqsub165 subtract '0' '.307' -> '-0.307' +dqsub166 subtract '0' '.43822' -> '-0.43822' +dqsub167 subtract '0' '.911' -> '-0.911' +dqsub168 subtract '.0' '.02' -> '-0.02' +dqsub169 subtract '00' '.392' -> '-0.392' +dqsub170 subtract '0' '.26' -> '-0.26' +dqsub171 subtract '0' '0.51' -> '-0.51' +dqsub172 subtract '0' '.2234' -> '-0.2234' +dqsub173 subtract '0' '.2' -> '-0.2' +dqsub174 subtract '.0' '.0008' -> '-0.0008' +-- 0. on left +dqsub180 subtract '0.0' '-.1' -> '0.1' +dqsub181 subtract '0.00' '-.97983' -> '0.97983' +dqsub182 subtract '0.0' '-.9' -> '0.9' +dqsub183 subtract '0.0' '-0.102' -> '0.102' +dqsub184 subtract '0.0' '-.4' -> '0.4' +dqsub185 subtract '0.0' '-.307' -> '0.307' +dqsub186 subtract '0.0' '-.43822' -> '0.43822' +dqsub187 subtract '0.0' '-.911' -> '0.911' +dqsub188 subtract '0.0' '-.02' -> '0.02' +dqsub189 subtract '0.00' '-.392' -> '0.392' +dqsub190 subtract '0.0' '-.26' -> '0.26' +dqsub191 subtract '0.0' '-0.51' -> '0.51' +dqsub192 subtract '0.0' '-.2234' -> '0.2234' +dqsub193 subtract '0.0' '-.2' -> '0.2' +dqsub194 subtract '0.0' '-.0008' -> '0.0008' +-- negatives of same +dqsub200 subtract '0' '-.1' -> '0.1' +dqsub201 subtract '00' '-.97983' -> '0.97983' +dqsub202 subtract '0' '-.9' -> '0.9' +dqsub203 subtract '0' '-0.102' -> '0.102' +dqsub204 subtract '0' '-.4' -> '0.4' +dqsub205 subtract '0' '-.307' -> '0.307' +dqsub206 subtract '0' '-.43822' -> '0.43822' +dqsub207 subtract '0' '-.911' -> '0.911' +dqsub208 subtract '.0' '-.02' -> '0.02' +dqsub209 subtract '00' '-.392' -> '0.392' +dqsub210 subtract '0' '-.26' -> '0.26' +dqsub211 subtract '0' '-0.51' -> '0.51' +dqsub212 subtract '0' '-.2234' -> '0.2234' +dqsub213 subtract '0' '-.2' -> '0.2' +dqsub214 subtract '.0' '-.0008' -> '0.0008' + +-- more fixed, LHS swaps [really the same as testcases under add] +dqsub220 subtract '-56267E-12' 0 -> '-5.6267E-8' +dqsub221 subtract '-56267E-11' 0 -> '-5.6267E-7' +dqsub222 subtract '-56267E-10' 0 -> '-0.0000056267' +dqsub223 subtract '-56267E-9' 0 -> '-0.000056267' +dqsub224 subtract '-56267E-8' 0 -> '-0.00056267' +dqsub225 subtract '-56267E-7' 0 -> '-0.0056267' +dqsub226 subtract '-56267E-6' 0 -> '-0.056267' +dqsub227 subtract '-56267E-5' 0 -> '-0.56267' +dqsub228 subtract '-56267E-2' 0 -> '-562.67' +dqsub229 subtract '-56267E-1' 0 -> '-5626.7' +dqsub230 subtract '-56267E-0' 0 -> '-56267' +-- symmetry ... +dqsub240 subtract 0 '-56267E-12' -> '5.6267E-8' +dqsub241 subtract 0 '-56267E-11' -> '5.6267E-7' +dqsub242 subtract 0 '-56267E-10' -> '0.0000056267' +dqsub243 subtract 0 '-56267E-9' -> '0.000056267' +dqsub244 subtract 0 '-56267E-8' -> '0.00056267' +dqsub245 subtract 0 '-56267E-7' -> '0.0056267' +dqsub246 subtract 0 '-56267E-6' -> '0.056267' +dqsub247 subtract 0 '-56267E-5' -> '0.56267' +dqsub248 subtract 0 '-56267E-2' -> '562.67' +dqsub249 subtract 0 '-56267E-1' -> '5626.7' +dqsub250 subtract 0 '-56267E-0' -> '56267' + +-- now some more from the 'new' add +dqsub301 subtract '1.23456789' '1.00000000' -> '0.23456789' +dqsub302 subtract '1.23456789' '1.00000011' -> '0.23456778' + +-- some carrying effects +dqsub321 subtract '0.9998' '0.0000' -> '0.9998' +dqsub322 subtract '0.9998' '0.0001' -> '0.9997' +dqsub323 subtract '0.9998' '0.0002' -> '0.9996' +dqsub324 subtract '0.9998' '0.0003' -> '0.9995' +dqsub325 subtract '0.9998' '-0.0000' -> '0.9998' +dqsub326 subtract '0.9998' '-0.0001' -> '0.9999' +dqsub327 subtract '0.9998' '-0.0002' -> '1.0000' +dqsub328 subtract '0.9998' '-0.0003' -> '1.0001' + +-- internal boundaries +dqsub346 subtract '10000e+9' '7' -> '9999999999993' +dqsub347 subtract '10000e+9' '70' -> '9999999999930' +dqsub348 subtract '10000e+9' '700' -> '9999999999300' +dqsub349 subtract '10000e+9' '7000' -> '9999999993000' +dqsub350 subtract '10000e+9' '70000' -> '9999999930000' +dqsub351 subtract '10000e+9' '700000' -> '9999999300000' +dqsub352 subtract '7' '10000e+9' -> '-9999999999993' +dqsub353 subtract '70' '10000e+9' -> '-9999999999930' +dqsub354 subtract '700' '10000e+9' -> '-9999999999300' +dqsub355 subtract '7000' '10000e+9' -> '-9999999993000' +dqsub356 subtract '70000' '10000e+9' -> '-9999999930000' +dqsub357 subtract '700000' '10000e+9' -> '-9999999300000' + +-- zero preservation +dqsub361 subtract 1 '0.0001' -> '0.9999' +dqsub362 subtract 1 '0.00001' -> '0.99999' +dqsub363 subtract 1 '0.000001' -> '0.999999' +dqsub364 subtract 1 '0.0000000000000000000000000000000001' -> '0.9999999999999999999999999999999999' +dqsub365 subtract 1 '0.00000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded +dqsub366 subtract 1 '0.000000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded + +-- some funny zeros [in case of bad signum] +dqsub370 subtract 1 0 -> 1 +dqsub371 subtract 1 0. -> 1 +dqsub372 subtract 1 .0 -> 1.0 +dqsub373 subtract 1 0.0 -> 1.0 +dqsub374 subtract 0 1 -> -1 +dqsub375 subtract 0. 1 -> -1 +dqsub376 subtract .0 1 -> -1.0 +dqsub377 subtract 0.0 1 -> -1.0 + +-- leading 0 digit before round +dqsub910 subtract -103519362 -51897955.3 -> -51621406.7 +dqsub911 subtract 159579.444 89827.5229 -> 69751.9211 + +dqsub920 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234566 -> 299.9999999999999999999999999999999 Inexact Rounded +dqsub921 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234565 -> 300.0000000000000000000000000000000 Inexact Rounded +dqsub922 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234565 -> 99.99999999999999999999999999999995 +dqsub923 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234564 -> 99.99999999999999999999999999999996 +dqsub924 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234540 -> 100.0000000000000000000000000000002 Rounded +dqsub925 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234560 -> 90.00000000000000000000000000000000 +dqsub926 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234561 -> 89.99999999999999999999999999999999 +dqsub927 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234566 -> 89.99999999999999999999999999999994 +dqsub928 subtract 101.0000000000000000000000000123456 91.00000000000000000000000001234566 -> 9.99999999999999999999999999999994 +dqsub929 subtract 101.0000000000000000000000000123456 99.00000000000000000000000001234566 -> 1.99999999999999999999999999999994 + +-- more LHS swaps [were fixed] +dqsub390 subtract '-56267E-10' 0 -> '-0.0000056267' +dqsub391 subtract '-56267E-6' 0 -> '-0.056267' +dqsub392 subtract '-56267E-5' 0 -> '-0.56267' +dqsub393 subtract '-56267E-4' 0 -> '-5.6267' +dqsub394 subtract '-56267E-3' 0 -> '-56.267' +dqsub395 subtract '-56267E-2' 0 -> '-562.67' +dqsub396 subtract '-56267E-1' 0 -> '-5626.7' +dqsub397 subtract '-56267E-0' 0 -> '-56267' +dqsub398 subtract '-5E-10' 0 -> '-5E-10' +dqsub399 subtract '-5E-7' 0 -> '-5E-7' +dqsub400 subtract '-5E-6' 0 -> '-0.000005' +dqsub401 subtract '-5E-5' 0 -> '-0.00005' +dqsub402 subtract '-5E-4' 0 -> '-0.0005' +dqsub403 subtract '-5E-1' 0 -> '-0.5' +dqsub404 subtract '-5E0' 0 -> '-5' +dqsub405 subtract '-5E1' 0 -> '-50' +dqsub406 subtract '-5E5' 0 -> '-500000' +dqsub407 subtract '-5E33' 0 -> '-5000000000000000000000000000000000' +dqsub408 subtract '-5E34' 0 -> '-5.000000000000000000000000000000000E+34' Rounded +dqsub409 subtract '-5E35' 0 -> '-5.000000000000000000000000000000000E+35' Rounded +dqsub410 subtract '-5E36' 0 -> '-5.000000000000000000000000000000000E+36' Rounded +dqsub411 subtract '-5E100' 0 -> '-5.000000000000000000000000000000000E+100' Rounded + +-- more RHS swaps [were fixed] +dqsub420 subtract 0 '-56267E-10' -> '0.0000056267' +dqsub421 subtract 0 '-56267E-6' -> '0.056267' +dqsub422 subtract 0 '-56267E-5' -> '0.56267' +dqsub423 subtract 0 '-56267E-4' -> '5.6267' +dqsub424 subtract 0 '-56267E-3' -> '56.267' +dqsub425 subtract 0 '-56267E-2' -> '562.67' +dqsub426 subtract 0 '-56267E-1' -> '5626.7' +dqsub427 subtract 0 '-56267E-0' -> '56267' +dqsub428 subtract 0 '-5E-10' -> '5E-10' +dqsub429 subtract 0 '-5E-7' -> '5E-7' +dqsub430 subtract 0 '-5E-6' -> '0.000005' +dqsub431 subtract 0 '-5E-5' -> '0.00005' +dqsub432 subtract 0 '-5E-4' -> '0.0005' +dqsub433 subtract 0 '-5E-1' -> '0.5' +dqsub434 subtract 0 '-5E0' -> '5' +dqsub435 subtract 0 '-5E1' -> '50' +dqsub436 subtract 0 '-5E5' -> '500000' +dqsub437 subtract 0 '-5E33' -> '5000000000000000000000000000000000' +dqsub438 subtract 0 '-5E34' -> '5.000000000000000000000000000000000E+34' Rounded +dqsub439 subtract 0 '-5E35' -> '5.000000000000000000000000000000000E+35' Rounded +dqsub440 subtract 0 '-5E36' -> '5.000000000000000000000000000000000E+36' Rounded +dqsub441 subtract 0 '-5E100' -> '5.000000000000000000000000000000000E+100' Rounded + + +-- try borderline precision, with carries, etc. +dqsub461 subtract '1E+16' '1' -> '9999999999999999' +dqsub462 subtract '1E+12' '-1.111' -> '1000000000001.111' +dqsub463 subtract '1.111' '-1E+12' -> '1000000000001.111' +dqsub464 subtract '-1' '-1E+16' -> '9999999999999999' +dqsub465 subtract '7E+15' '1' -> '6999999999999999' +dqsub466 subtract '7E+12' '-1.111' -> '7000000000001.111' +dqsub467 subtract '1.111' '-7E+12' -> '7000000000001.111' +dqsub468 subtract '-1' '-7E+15' -> '6999999999999999' + +-- 1234567890123456 1234567890123456 1 23456789012345 +dqsub470 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555563' -> '1.000000000000000000000000000000001' Inexact Rounded +dqsub471 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555562' -> '1.000000000000000000000000000000001' Inexact Rounded +dqsub472 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555561' -> '1.000000000000000000000000000000000' Inexact Rounded +dqsub473 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555560' -> '1.000000000000000000000000000000000' Inexact Rounded +dqsub474 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555559' -> '1.000000000000000000000000000000000' Inexact Rounded +dqsub475 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555558' -> '1.000000000000000000000000000000000' Inexact Rounded +dqsub476 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555557' -> '1.000000000000000000000000000000000' Inexact Rounded +dqsub477 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555556' -> '1.000000000000000000000000000000000' Rounded +dqsub478 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999' +dqsub479 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555554' -> '0.9999999999999999999999999999999998' +dqsub480 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555553' -> '0.9999999999999999999999999999999997' +dqsub481 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555552' -> '0.9999999999999999999999999999999996' +dqsub482 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555551' -> '0.9999999999999999999999999999999995' +dqsub483 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555550' -> '0.9999999999999999999999999999999994' + +-- and some more, including residue effects and different roundings +rounding: half_up +dqsub500 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789' +dqsub501 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub502 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub503 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub504 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub505 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub506 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub507 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub508 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub509 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub510 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub511 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub512 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub513 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub514 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub515 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub516 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788' +dqsub517 subtract '1231234555555555555555555567456789' 1.000000001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub518 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub519 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456788' Inexact Rounded + +rounding: half_even +dqsub520 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789' +dqsub521 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub522 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub523 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub524 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub525 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub526 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub527 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456789' Inexact Rounded +dqsub528 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub529 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub530 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub531 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub532 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub533 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub534 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub535 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub536 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788' +dqsub537 subtract '1231234555555555555555555567456789' 1.00000001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub538 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub539 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456788' Inexact Rounded +-- critical few with even bottom digit... +dqsub540 subtract '1231234555555555555555555567456788' 0.499999999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub541 subtract '1231234555555555555555555567456788' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub542 subtract '1231234555555555555555555567456788' 0.500000001 -> '1231234555555555555555555567456787' Inexact Rounded + +rounding: down +dqsub550 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789' +dqsub551 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub552 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub553 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub554 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub555 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub556 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub557 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub558 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub559 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub560 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub561 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub562 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub563 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub564 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub565 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded +dqsub566 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788' +dqsub567 subtract '1231234555555555555555555567456789' 1.00000001 -> '1231234555555555555555555567456787' Inexact Rounded +dqsub568 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456787' Inexact Rounded +dqsub569 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456787' Inexact Rounded + +-- symmetry... +rounding: half_up +dqsub600 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' +dqsub601 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub602 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub603 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub604 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub605 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub606 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub607 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub608 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub609 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub610 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub611 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub612 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub613 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub614 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub615 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub616 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' +dqsub617 subtract 1.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub618 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub619 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded + +rounding: half_even +dqsub620 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' +dqsub621 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub622 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub623 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub624 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub625 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub626 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub627 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded +dqsub628 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub629 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub630 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub631 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub632 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub633 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub634 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub635 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub636 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' +dqsub637 subtract 1.00000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub638 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub639 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +-- critical few with even bottom digit... +dqsub640 subtract 0.499999999 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub641 subtract 0.5 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub642 subtract 0.500000001 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456787' Inexact Rounded + +rounding: down +dqsub650 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' +dqsub651 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub652 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub653 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub654 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub655 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub656 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub657 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub658 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub659 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub660 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub661 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub662 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub663 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub664 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub665 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded +dqsub666 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' +dqsub667 subtract 1.00000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded +dqsub668 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded +dqsub669 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded + + +-- lots of leading zeros in intermediate result, and showing effects of +-- input rounding would have affected the following +rounding: half_up +dqsub670 subtract '1234567456789' '1234567456788.1' -> 0.9 +dqsub671 subtract '1234567456789' '1234567456788.9' -> 0.1 +dqsub672 subtract '1234567456789' '1234567456789.1' -> -0.1 +dqsub673 subtract '1234567456789' '1234567456789.5' -> -0.5 +dqsub674 subtract '1234567456789' '1234567456789.9' -> -0.9 + +rounding: half_even +dqsub680 subtract '1234567456789' '1234567456788.1' -> 0.9 +dqsub681 subtract '1234567456789' '1234567456788.9' -> 0.1 +dqsub682 subtract '1234567456789' '1234567456789.1' -> -0.1 +dqsub683 subtract '1234567456789' '1234567456789.5' -> -0.5 +dqsub684 subtract '1234567456789' '1234567456789.9' -> -0.9 + +dqsub685 subtract '1234567456788' '1234567456787.1' -> 0.9 +dqsub686 subtract '1234567456788' '1234567456787.9' -> 0.1 +dqsub687 subtract '1234567456788' '1234567456788.1' -> -0.1 +dqsub688 subtract '1234567456788' '1234567456788.5' -> -0.5 +dqsub689 subtract '1234567456788' '1234567456788.9' -> -0.9 + +rounding: down +dqsub690 subtract '1234567456789' '1234567456788.1' -> 0.9 +dqsub691 subtract '1234567456789' '1234567456788.9' -> 0.1 +dqsub692 subtract '1234567456789' '1234567456789.1' -> -0.1 +dqsub693 subtract '1234567456789' '1234567456789.5' -> -0.5 +dqsub694 subtract '1234567456789' '1234567456789.9' -> -0.9 + +-- Specials +dqsub780 subtract -Inf Inf -> -Infinity +dqsub781 subtract -Inf 1000 -> -Infinity +dqsub782 subtract -Inf 1 -> -Infinity +dqsub783 subtract -Inf -0 -> -Infinity +dqsub784 subtract -Inf -1 -> -Infinity +dqsub785 subtract -Inf -1000 -> -Infinity +dqsub787 subtract -1000 Inf -> -Infinity +dqsub788 subtract -Inf Inf -> -Infinity +dqsub789 subtract -1 Inf -> -Infinity +dqsub790 subtract 0 Inf -> -Infinity +dqsub791 subtract 1 Inf -> -Infinity +dqsub792 subtract 1000 Inf -> -Infinity + +dqsub800 subtract Inf Inf -> NaN Invalid_operation +dqsub801 subtract Inf 1000 -> Infinity +dqsub802 subtract Inf 1 -> Infinity +dqsub803 subtract Inf 0 -> Infinity +dqsub804 subtract Inf -0 -> Infinity +dqsub805 subtract Inf -1 -> Infinity +dqsub806 subtract Inf -1000 -> Infinity +dqsub807 subtract Inf -Inf -> Infinity +dqsub808 subtract -1000 -Inf -> Infinity +dqsub809 subtract -Inf -Inf -> NaN Invalid_operation +dqsub810 subtract -1 -Inf -> Infinity +dqsub811 subtract -0 -Inf -> Infinity +dqsub812 subtract 0 -Inf -> Infinity +dqsub813 subtract 1 -Inf -> Infinity +dqsub814 subtract 1000 -Inf -> Infinity +dqsub815 subtract Inf -Inf -> Infinity + +dqsub821 subtract NaN Inf -> NaN +dqsub822 subtract -NaN 1000 -> -NaN +dqsub823 subtract NaN 1 -> NaN +dqsub824 subtract NaN 0 -> NaN +dqsub825 subtract NaN -0 -> NaN +dqsub826 subtract NaN -1 -> NaN +dqsub827 subtract NaN -1000 -> NaN +dqsub828 subtract NaN -Inf -> NaN +dqsub829 subtract -NaN NaN -> -NaN +dqsub830 subtract -Inf NaN -> NaN +dqsub831 subtract -1000 NaN -> NaN +dqsub832 subtract -1 NaN -> NaN +dqsub833 subtract -0 NaN -> NaN +dqsub834 subtract 0 NaN -> NaN +dqsub835 subtract 1 NaN -> NaN +dqsub836 subtract 1000 -NaN -> -NaN +dqsub837 subtract Inf NaN -> NaN + +dqsub841 subtract sNaN Inf -> NaN Invalid_operation +dqsub842 subtract -sNaN 1000 -> -NaN Invalid_operation +dqsub843 subtract sNaN 1 -> NaN Invalid_operation +dqsub844 subtract sNaN 0 -> NaN Invalid_operation +dqsub845 subtract sNaN -0 -> NaN Invalid_operation +dqsub846 subtract sNaN -1 -> NaN Invalid_operation +dqsub847 subtract sNaN -1000 -> NaN Invalid_operation +dqsub848 subtract sNaN NaN -> NaN Invalid_operation +dqsub849 subtract sNaN sNaN -> NaN Invalid_operation +dqsub850 subtract NaN sNaN -> NaN Invalid_operation +dqsub851 subtract -Inf -sNaN -> -NaN Invalid_operation +dqsub852 subtract -1000 sNaN -> NaN Invalid_operation +dqsub853 subtract -1 sNaN -> NaN Invalid_operation +dqsub854 subtract -0 sNaN -> NaN Invalid_operation +dqsub855 subtract 0 sNaN -> NaN Invalid_operation +dqsub856 subtract 1 sNaN -> NaN Invalid_operation +dqsub857 subtract 1000 sNaN -> NaN Invalid_operation +dqsub858 subtract Inf sNaN -> NaN Invalid_operation +dqsub859 subtract NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqsub861 subtract NaN01 -Inf -> NaN1 +dqsub862 subtract -NaN02 -1000 -> -NaN2 +dqsub863 subtract NaN03 1000 -> NaN3 +dqsub864 subtract NaN04 Inf -> NaN4 +dqsub865 subtract NaN05 NaN61 -> NaN5 +dqsub866 subtract -Inf -NaN71 -> -NaN71 +dqsub867 subtract -1000 NaN81 -> NaN81 +dqsub868 subtract 1000 NaN91 -> NaN91 +dqsub869 subtract Inf NaN101 -> NaN101 +dqsub871 subtract sNaN011 -Inf -> NaN11 Invalid_operation +dqsub872 subtract sNaN012 -1000 -> NaN12 Invalid_operation +dqsub873 subtract -sNaN013 1000 -> -NaN13 Invalid_operation +dqsub874 subtract sNaN014 NaN171 -> NaN14 Invalid_operation +dqsub875 subtract sNaN015 sNaN181 -> NaN15 Invalid_operation +dqsub876 subtract NaN016 sNaN191 -> NaN191 Invalid_operation +dqsub877 subtract -Inf sNaN201 -> NaN201 Invalid_operation +dqsub878 subtract -1000 sNaN211 -> NaN211 Invalid_operation +dqsub879 subtract 1000 -sNaN221 -> -NaN221 Invalid_operation +dqsub880 subtract Inf sNaN231 -> NaN231 Invalid_operation +dqsub881 subtract NaN025 sNaN241 -> NaN241 Invalid_operation + +-- edge case spills +dqsub901 subtract 2.E-3 1.002 -> -1.000 +dqsub902 subtract 2.0E-3 1.002 -> -1.0000 +dqsub903 subtract 2.00E-3 1.0020 -> -1.00000 +dqsub904 subtract 2.000E-3 1.00200 -> -1.000000 +dqsub905 subtract 2.0000E-3 1.002000 -> -1.0000000 +dqsub906 subtract 2.00000E-3 1.0020000 -> -1.00000000 +dqsub907 subtract 2.000000E-3 1.00200000 -> -1.000000000 +dqsub908 subtract 2.0000000E-3 1.002000000 -> -1.0000000000 + +-- subnormals and overflows covered under Add + +-- Examples from SQL proposal (Krishna Kulkarni) +dqsub1125 subtract 130E-2 120E-2 -> 0.10 +dqsub1126 subtract 130E-2 12E-1 -> 0.10 +dqsub1127 subtract 130E-2 1E0 -> 0.30 +dqsub1128 subtract 1E2 1E4 -> -9.9E+3 + +-- Null tests +dqsub9990 subtract 10 # -> NaN Invalid_operation +dqsub9991 subtract # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dqToIntegral.decTest b/Lib/test/decimaltestdata/dqToIntegral.decTest index eb12387..3055de5 100644 --- a/Lib/test/decimaltestdata/dqToIntegral.decTest +++ b/Lib/test/decimaltestdata/dqToIntegral.decTest @@ -1,257 +1,257 @@ ------------------------------------------------------------------------- --- dqToIntegral.decTest -- round Quad to integral value -- --- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests tests the extended specification 'round-to-integral --- value-exact' operations (from IEEE 854, later modified in 754r). --- All non-zero results are defined as being those from either copy or --- quantize, so those are assumed to have been tested extensively --- elsewhere; the tests here are for integrity, rounding mode, etc. --- Also, it is assumed the test harness will use these tests for both --- ToIntegralExact (which does set Inexact) and the fixed-name --- functions (which do not set Inexact). - --- Note that decNumber implements an earlier definition of toIntegral --- which never sets Inexact; the decTest operator for that is called --- 'tointegral' instead of 'tointegralx'. - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - -dqintx001 tointegralx 0 -> 0 -dqintx002 tointegralx 0.0 -> 0 -dqintx003 tointegralx 0.1 -> 0 Inexact Rounded -dqintx004 tointegralx 0.2 -> 0 Inexact Rounded -dqintx005 tointegralx 0.3 -> 0 Inexact Rounded -dqintx006 tointegralx 0.4 -> 0 Inexact Rounded -dqintx007 tointegralx 0.5 -> 0 Inexact Rounded -dqintx008 tointegralx 0.6 -> 1 Inexact Rounded -dqintx009 tointegralx 0.7 -> 1 Inexact Rounded -dqintx010 tointegralx 0.8 -> 1 Inexact Rounded -dqintx011 tointegralx 0.9 -> 1 Inexact Rounded -dqintx012 tointegralx 1 -> 1 -dqintx013 tointegralx 1.0 -> 1 Rounded -dqintx014 tointegralx 1.1 -> 1 Inexact Rounded -dqintx015 tointegralx 1.2 -> 1 Inexact Rounded -dqintx016 tointegralx 1.3 -> 1 Inexact Rounded -dqintx017 tointegralx 1.4 -> 1 Inexact Rounded -dqintx018 tointegralx 1.5 -> 2 Inexact Rounded -dqintx019 tointegralx 1.6 -> 2 Inexact Rounded -dqintx020 tointegralx 1.7 -> 2 Inexact Rounded -dqintx021 tointegralx 1.8 -> 2 Inexact Rounded -dqintx022 tointegralx 1.9 -> 2 Inexact Rounded --- negatives -dqintx031 tointegralx -0 -> -0 -dqintx032 tointegralx -0.0 -> -0 -dqintx033 tointegralx -0.1 -> -0 Inexact Rounded -dqintx034 tointegralx -0.2 -> -0 Inexact Rounded -dqintx035 tointegralx -0.3 -> -0 Inexact Rounded -dqintx036 tointegralx -0.4 -> -0 Inexact Rounded -dqintx037 tointegralx -0.5 -> -0 Inexact Rounded -dqintx038 tointegralx -0.6 -> -1 Inexact Rounded -dqintx039 tointegralx -0.7 -> -1 Inexact Rounded -dqintx040 tointegralx -0.8 -> -1 Inexact Rounded -dqintx041 tointegralx -0.9 -> -1 Inexact Rounded -dqintx042 tointegralx -1 -> -1 -dqintx043 tointegralx -1.0 -> -1 Rounded -dqintx044 tointegralx -1.1 -> -1 Inexact Rounded -dqintx045 tointegralx -1.2 -> -1 Inexact Rounded -dqintx046 tointegralx -1.3 -> -1 Inexact Rounded -dqintx047 tointegralx -1.4 -> -1 Inexact Rounded -dqintx048 tointegralx -1.5 -> -2 Inexact Rounded -dqintx049 tointegralx -1.6 -> -2 Inexact Rounded -dqintx050 tointegralx -1.7 -> -2 Inexact Rounded -dqintx051 tointegralx -1.8 -> -2 Inexact Rounded -dqintx052 tointegralx -1.9 -> -2 Inexact Rounded --- next two would be NaN using quantize(x, 0) -dqintx053 tointegralx 10E+60 -> 1.0E+61 -dqintx054 tointegralx -10E+60 -> -1.0E+61 - --- numbers around precision -dqintx060 tointegralx '56267E-17' -> '0' Inexact Rounded -dqintx061 tointegralx '56267E-5' -> '1' Inexact Rounded -dqintx062 tointegralx '56267E-2' -> '563' Inexact Rounded -dqintx063 tointegralx '56267E-1' -> '5627' Inexact Rounded -dqintx065 tointegralx '56267E-0' -> '56267' -dqintx066 tointegralx '56267E+0' -> '56267' -dqintx067 tointegralx '56267E+1' -> '5.6267E+5' -dqintx068 tointegralx '56267E+9' -> '5.6267E+13' -dqintx069 tointegralx '56267E+10' -> '5.6267E+14' -dqintx070 tointegralx '56267E+11' -> '5.6267E+15' -dqintx071 tointegralx '56267E+12' -> '5.6267E+16' -dqintx072 tointegralx '56267E+13' -> '5.6267E+17' -dqintx073 tointegralx '1.23E+96' -> '1.23E+96' -dqintx074 tointegralx '1.23E+6144' -> #47ffd300000000000000000000000000 Clamped - -dqintx080 tointegralx '-56267E-10' -> '-0' Inexact Rounded -dqintx081 tointegralx '-56267E-5' -> '-1' Inexact Rounded -dqintx082 tointegralx '-56267E-2' -> '-563' Inexact Rounded -dqintx083 tointegralx '-56267E-1' -> '-5627' Inexact Rounded -dqintx085 tointegralx '-56267E-0' -> '-56267' -dqintx086 tointegralx '-56267E+0' -> '-56267' -dqintx087 tointegralx '-56267E+1' -> '-5.6267E+5' -dqintx088 tointegralx '-56267E+9' -> '-5.6267E+13' -dqintx089 tointegralx '-56267E+10' -> '-5.6267E+14' -dqintx090 tointegralx '-56267E+11' -> '-5.6267E+15' -dqintx091 tointegralx '-56267E+12' -> '-5.6267E+16' -dqintx092 tointegralx '-56267E+13' -> '-5.6267E+17' -dqintx093 tointegralx '-1.23E+96' -> '-1.23E+96' -dqintx094 tointegralx '-1.23E+6144' -> #c7ffd300000000000000000000000000 Clamped - --- subnormal inputs -dqintx100 tointegralx 1E-299 -> 0 Inexact Rounded -dqintx101 tointegralx 0.1E-299 -> 0 Inexact Rounded -dqintx102 tointegralx 0.01E-299 -> 0 Inexact Rounded -dqintx103 tointegralx 0E-299 -> 0 - --- specials and zeros -dqintx120 tointegralx 'Inf' -> Infinity -dqintx121 tointegralx '-Inf' -> -Infinity -dqintx122 tointegralx NaN -> NaN -dqintx123 tointegralx sNaN -> NaN Invalid_operation -dqintx124 tointegralx 0 -> 0 -dqintx125 tointegralx -0 -> -0 -dqintx126 tointegralx 0.000 -> 0 -dqintx127 tointegralx 0.00 -> 0 -dqintx128 tointegralx 0.0 -> 0 -dqintx129 tointegralx 0 -> 0 -dqintx130 tointegralx 0E-3 -> 0 -dqintx131 tointegralx 0E-2 -> 0 -dqintx132 tointegralx 0E-1 -> 0 -dqintx133 tointegralx 0E-0 -> 0 -dqintx134 tointegralx 0E+1 -> 0E+1 -dqintx135 tointegralx 0E+2 -> 0E+2 -dqintx136 tointegralx 0E+3 -> 0E+3 -dqintx137 tointegralx 0E+4 -> 0E+4 -dqintx138 tointegralx 0E+5 -> 0E+5 -dqintx139 tointegralx -0.000 -> -0 -dqintx140 tointegralx -0.00 -> -0 -dqintx141 tointegralx -0.0 -> -0 -dqintx142 tointegralx -0 -> -0 -dqintx143 tointegralx -0E-3 -> -0 -dqintx144 tointegralx -0E-2 -> -0 -dqintx145 tointegralx -0E-1 -> -0 -dqintx146 tointegralx -0E-0 -> -0 -dqintx147 tointegralx -0E+1 -> -0E+1 -dqintx148 tointegralx -0E+2 -> -0E+2 -dqintx149 tointegralx -0E+3 -> -0E+3 -dqintx150 tointegralx -0E+4 -> -0E+4 -dqintx151 tointegralx -0E+5 -> -0E+5 --- propagating NaNs -dqintx152 tointegralx NaN808 -> NaN808 -dqintx153 tointegralx sNaN080 -> NaN80 Invalid_operation -dqintx154 tointegralx -NaN808 -> -NaN808 -dqintx155 tointegralx -sNaN080 -> -NaN80 Invalid_operation -dqintx156 tointegralx -NaN -> -NaN -dqintx157 tointegralx -sNaN -> -NaN Invalid_operation - --- examples -rounding: half_up -dqintx200 tointegralx 2.1 -> 2 Inexact Rounded -dqintx201 tointegralx 100 -> 100 -dqintx202 tointegralx 100.0 -> 100 Rounded -dqintx203 tointegralx 101.5 -> 102 Inexact Rounded -dqintx204 tointegralx -101.5 -> -102 Inexact Rounded -dqintx205 tointegralx 10E+5 -> 1.0E+6 -dqintx206 tointegralx 7.89E+77 -> 7.89E+77 -dqintx207 tointegralx -Inf -> -Infinity - - --- all rounding modes -rounding: half_even -dqintx210 tointegralx 55.5 -> 56 Inexact Rounded -dqintx211 tointegralx 56.5 -> 56 Inexact Rounded -dqintx212 tointegralx 57.5 -> 58 Inexact Rounded -dqintx213 tointegralx -55.5 -> -56 Inexact Rounded -dqintx214 tointegralx -56.5 -> -56 Inexact Rounded -dqintx215 tointegralx -57.5 -> -58 Inexact Rounded - -rounding: half_up - -dqintx220 tointegralx 55.5 -> 56 Inexact Rounded -dqintx221 tointegralx 56.5 -> 57 Inexact Rounded -dqintx222 tointegralx 57.5 -> 58 Inexact Rounded -dqintx223 tointegralx -55.5 -> -56 Inexact Rounded -dqintx224 tointegralx -56.5 -> -57 Inexact Rounded -dqintx225 tointegralx -57.5 -> -58 Inexact Rounded - -rounding: half_down - -dqintx230 tointegralx 55.5 -> 55 Inexact Rounded -dqintx231 tointegralx 56.5 -> 56 Inexact Rounded -dqintx232 tointegralx 57.5 -> 57 Inexact Rounded -dqintx233 tointegralx -55.5 -> -55 Inexact Rounded -dqintx234 tointegralx -56.5 -> -56 Inexact Rounded -dqintx235 tointegralx -57.5 -> -57 Inexact Rounded - -rounding: up - -dqintx240 tointegralx 55.3 -> 56 Inexact Rounded -dqintx241 tointegralx 56.3 -> 57 Inexact Rounded -dqintx242 tointegralx 57.3 -> 58 Inexact Rounded -dqintx243 tointegralx -55.3 -> -56 Inexact Rounded -dqintx244 tointegralx -56.3 -> -57 Inexact Rounded -dqintx245 tointegralx -57.3 -> -58 Inexact Rounded - -rounding: down - -dqintx250 tointegralx 55.7 -> 55 Inexact Rounded -dqintx251 tointegralx 56.7 -> 56 Inexact Rounded -dqintx252 tointegralx 57.7 -> 57 Inexact Rounded -dqintx253 tointegralx -55.7 -> -55 Inexact Rounded -dqintx254 tointegralx -56.7 -> -56 Inexact Rounded -dqintx255 tointegralx -57.7 -> -57 Inexact Rounded - -rounding: ceiling - -dqintx260 tointegralx 55.3 -> 56 Inexact Rounded -dqintx261 tointegralx 56.3 -> 57 Inexact Rounded -dqintx262 tointegralx 57.3 -> 58 Inexact Rounded -dqintx263 tointegralx -55.3 -> -55 Inexact Rounded -dqintx264 tointegralx -56.3 -> -56 Inexact Rounded -dqintx265 tointegralx -57.3 -> -57 Inexact Rounded - -rounding: floor - -dqintx270 tointegralx 55.7 -> 55 Inexact Rounded -dqintx271 tointegralx 56.7 -> 56 Inexact Rounded -dqintx272 tointegralx 57.7 -> 57 Inexact Rounded -dqintx273 tointegralx -55.7 -> -56 Inexact Rounded -dqintx274 tointegralx -56.7 -> -57 Inexact Rounded -dqintx275 tointegralx -57.7 -> -58 Inexact Rounded - --- Int and uInt32 edge values for testing conversions -dqintx300 tointegralx -2147483646 -> -2147483646 -dqintx301 tointegralx -2147483647 -> -2147483647 -dqintx302 tointegralx -2147483648 -> -2147483648 -dqintx303 tointegralx -2147483649 -> -2147483649 -dqintx304 tointegralx 2147483646 -> 2147483646 -dqintx305 tointegralx 2147483647 -> 2147483647 -dqintx306 tointegralx 2147483648 -> 2147483648 -dqintx307 tointegralx 2147483649 -> 2147483649 -dqintx308 tointegralx 4294967294 -> 4294967294 -dqintx309 tointegralx 4294967295 -> 4294967295 -dqintx310 tointegralx 4294967296 -> 4294967296 -dqintx311 tointegralx 4294967297 -> 4294967297 - +------------------------------------------------------------------------ +-- dqToIntegral.decTest -- round Quad to integral value -- +-- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests tests the extended specification 'round-to-integral +-- value-exact' operations (from IEEE 854, later modified in 754r). +-- All non-zero results are defined as being those from either copy or +-- quantize, so those are assumed to have been tested extensively +-- elsewhere; the tests here are for integrity, rounding mode, etc. +-- Also, it is assumed the test harness will use these tests for both +-- ToIntegralExact (which does set Inexact) and the fixed-name +-- functions (which do not set Inexact). + +-- Note that decNumber implements an earlier definition of toIntegral +-- which never sets Inexact; the decTest operator for that is called +-- 'tointegral' instead of 'tointegralx'. + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +dqintx001 tointegralx 0 -> 0 +dqintx002 tointegralx 0.0 -> 0 +dqintx003 tointegralx 0.1 -> 0 Inexact Rounded +dqintx004 tointegralx 0.2 -> 0 Inexact Rounded +dqintx005 tointegralx 0.3 -> 0 Inexact Rounded +dqintx006 tointegralx 0.4 -> 0 Inexact Rounded +dqintx007 tointegralx 0.5 -> 0 Inexact Rounded +dqintx008 tointegralx 0.6 -> 1 Inexact Rounded +dqintx009 tointegralx 0.7 -> 1 Inexact Rounded +dqintx010 tointegralx 0.8 -> 1 Inexact Rounded +dqintx011 tointegralx 0.9 -> 1 Inexact Rounded +dqintx012 tointegralx 1 -> 1 +dqintx013 tointegralx 1.0 -> 1 Rounded +dqintx014 tointegralx 1.1 -> 1 Inexact Rounded +dqintx015 tointegralx 1.2 -> 1 Inexact Rounded +dqintx016 tointegralx 1.3 -> 1 Inexact Rounded +dqintx017 tointegralx 1.4 -> 1 Inexact Rounded +dqintx018 tointegralx 1.5 -> 2 Inexact Rounded +dqintx019 tointegralx 1.6 -> 2 Inexact Rounded +dqintx020 tointegralx 1.7 -> 2 Inexact Rounded +dqintx021 tointegralx 1.8 -> 2 Inexact Rounded +dqintx022 tointegralx 1.9 -> 2 Inexact Rounded +-- negatives +dqintx031 tointegralx -0 -> -0 +dqintx032 tointegralx -0.0 -> -0 +dqintx033 tointegralx -0.1 -> -0 Inexact Rounded +dqintx034 tointegralx -0.2 -> -0 Inexact Rounded +dqintx035 tointegralx -0.3 -> -0 Inexact Rounded +dqintx036 tointegralx -0.4 -> -0 Inexact Rounded +dqintx037 tointegralx -0.5 -> -0 Inexact Rounded +dqintx038 tointegralx -0.6 -> -1 Inexact Rounded +dqintx039 tointegralx -0.7 -> -1 Inexact Rounded +dqintx040 tointegralx -0.8 -> -1 Inexact Rounded +dqintx041 tointegralx -0.9 -> -1 Inexact Rounded +dqintx042 tointegralx -1 -> -1 +dqintx043 tointegralx -1.0 -> -1 Rounded +dqintx044 tointegralx -1.1 -> -1 Inexact Rounded +dqintx045 tointegralx -1.2 -> -1 Inexact Rounded +dqintx046 tointegralx -1.3 -> -1 Inexact Rounded +dqintx047 tointegralx -1.4 -> -1 Inexact Rounded +dqintx048 tointegralx -1.5 -> -2 Inexact Rounded +dqintx049 tointegralx -1.6 -> -2 Inexact Rounded +dqintx050 tointegralx -1.7 -> -2 Inexact Rounded +dqintx051 tointegralx -1.8 -> -2 Inexact Rounded +dqintx052 tointegralx -1.9 -> -2 Inexact Rounded +-- next two would be NaN using quantize(x, 0) +dqintx053 tointegralx 10E+60 -> 1.0E+61 +dqintx054 tointegralx -10E+60 -> -1.0E+61 + +-- numbers around precision +dqintx060 tointegralx '56267E-17' -> '0' Inexact Rounded +dqintx061 tointegralx '56267E-5' -> '1' Inexact Rounded +dqintx062 tointegralx '56267E-2' -> '563' Inexact Rounded +dqintx063 tointegralx '56267E-1' -> '5627' Inexact Rounded +dqintx065 tointegralx '56267E-0' -> '56267' +dqintx066 tointegralx '56267E+0' -> '56267' +dqintx067 tointegralx '56267E+1' -> '5.6267E+5' +dqintx068 tointegralx '56267E+9' -> '5.6267E+13' +dqintx069 tointegralx '56267E+10' -> '5.6267E+14' +dqintx070 tointegralx '56267E+11' -> '5.6267E+15' +dqintx071 tointegralx '56267E+12' -> '5.6267E+16' +dqintx072 tointegralx '56267E+13' -> '5.6267E+17' +dqintx073 tointegralx '1.23E+96' -> '1.23E+96' +dqintx074 tointegralx '1.23E+6144' -> #47ffd300000000000000000000000000 Clamped + +dqintx080 tointegralx '-56267E-10' -> '-0' Inexact Rounded +dqintx081 tointegralx '-56267E-5' -> '-1' Inexact Rounded +dqintx082 tointegralx '-56267E-2' -> '-563' Inexact Rounded +dqintx083 tointegralx '-56267E-1' -> '-5627' Inexact Rounded +dqintx085 tointegralx '-56267E-0' -> '-56267' +dqintx086 tointegralx '-56267E+0' -> '-56267' +dqintx087 tointegralx '-56267E+1' -> '-5.6267E+5' +dqintx088 tointegralx '-56267E+9' -> '-5.6267E+13' +dqintx089 tointegralx '-56267E+10' -> '-5.6267E+14' +dqintx090 tointegralx '-56267E+11' -> '-5.6267E+15' +dqintx091 tointegralx '-56267E+12' -> '-5.6267E+16' +dqintx092 tointegralx '-56267E+13' -> '-5.6267E+17' +dqintx093 tointegralx '-1.23E+96' -> '-1.23E+96' +dqintx094 tointegralx '-1.23E+6144' -> #c7ffd300000000000000000000000000 Clamped + +-- subnormal inputs +dqintx100 tointegralx 1E-299 -> 0 Inexact Rounded +dqintx101 tointegralx 0.1E-299 -> 0 Inexact Rounded +dqintx102 tointegralx 0.01E-299 -> 0 Inexact Rounded +dqintx103 tointegralx 0E-299 -> 0 + +-- specials and zeros +dqintx120 tointegralx 'Inf' -> Infinity +dqintx121 tointegralx '-Inf' -> -Infinity +dqintx122 tointegralx NaN -> NaN +dqintx123 tointegralx sNaN -> NaN Invalid_operation +dqintx124 tointegralx 0 -> 0 +dqintx125 tointegralx -0 -> -0 +dqintx126 tointegralx 0.000 -> 0 +dqintx127 tointegralx 0.00 -> 0 +dqintx128 tointegralx 0.0 -> 0 +dqintx129 tointegralx 0 -> 0 +dqintx130 tointegralx 0E-3 -> 0 +dqintx131 tointegralx 0E-2 -> 0 +dqintx132 tointegralx 0E-1 -> 0 +dqintx133 tointegralx 0E-0 -> 0 +dqintx134 tointegralx 0E+1 -> 0E+1 +dqintx135 tointegralx 0E+2 -> 0E+2 +dqintx136 tointegralx 0E+3 -> 0E+3 +dqintx137 tointegralx 0E+4 -> 0E+4 +dqintx138 tointegralx 0E+5 -> 0E+5 +dqintx139 tointegralx -0.000 -> -0 +dqintx140 tointegralx -0.00 -> -0 +dqintx141 tointegralx -0.0 -> -0 +dqintx142 tointegralx -0 -> -0 +dqintx143 tointegralx -0E-3 -> -0 +dqintx144 tointegralx -0E-2 -> -0 +dqintx145 tointegralx -0E-1 -> -0 +dqintx146 tointegralx -0E-0 -> -0 +dqintx147 tointegralx -0E+1 -> -0E+1 +dqintx148 tointegralx -0E+2 -> -0E+2 +dqintx149 tointegralx -0E+3 -> -0E+3 +dqintx150 tointegralx -0E+4 -> -0E+4 +dqintx151 tointegralx -0E+5 -> -0E+5 +-- propagating NaNs +dqintx152 tointegralx NaN808 -> NaN808 +dqintx153 tointegralx sNaN080 -> NaN80 Invalid_operation +dqintx154 tointegralx -NaN808 -> -NaN808 +dqintx155 tointegralx -sNaN080 -> -NaN80 Invalid_operation +dqintx156 tointegralx -NaN -> -NaN +dqintx157 tointegralx -sNaN -> -NaN Invalid_operation + +-- examples +rounding: half_up +dqintx200 tointegralx 2.1 -> 2 Inexact Rounded +dqintx201 tointegralx 100 -> 100 +dqintx202 tointegralx 100.0 -> 100 Rounded +dqintx203 tointegralx 101.5 -> 102 Inexact Rounded +dqintx204 tointegralx -101.5 -> -102 Inexact Rounded +dqintx205 tointegralx 10E+5 -> 1.0E+6 +dqintx206 tointegralx 7.89E+77 -> 7.89E+77 +dqintx207 tointegralx -Inf -> -Infinity + + +-- all rounding modes +rounding: half_even +dqintx210 tointegralx 55.5 -> 56 Inexact Rounded +dqintx211 tointegralx 56.5 -> 56 Inexact Rounded +dqintx212 tointegralx 57.5 -> 58 Inexact Rounded +dqintx213 tointegralx -55.5 -> -56 Inexact Rounded +dqintx214 tointegralx -56.5 -> -56 Inexact Rounded +dqintx215 tointegralx -57.5 -> -58 Inexact Rounded + +rounding: half_up + +dqintx220 tointegralx 55.5 -> 56 Inexact Rounded +dqintx221 tointegralx 56.5 -> 57 Inexact Rounded +dqintx222 tointegralx 57.5 -> 58 Inexact Rounded +dqintx223 tointegralx -55.5 -> -56 Inexact Rounded +dqintx224 tointegralx -56.5 -> -57 Inexact Rounded +dqintx225 tointegralx -57.5 -> -58 Inexact Rounded + +rounding: half_down + +dqintx230 tointegralx 55.5 -> 55 Inexact Rounded +dqintx231 tointegralx 56.5 -> 56 Inexact Rounded +dqintx232 tointegralx 57.5 -> 57 Inexact Rounded +dqintx233 tointegralx -55.5 -> -55 Inexact Rounded +dqintx234 tointegralx -56.5 -> -56 Inexact Rounded +dqintx235 tointegralx -57.5 -> -57 Inexact Rounded + +rounding: up + +dqintx240 tointegralx 55.3 -> 56 Inexact Rounded +dqintx241 tointegralx 56.3 -> 57 Inexact Rounded +dqintx242 tointegralx 57.3 -> 58 Inexact Rounded +dqintx243 tointegralx -55.3 -> -56 Inexact Rounded +dqintx244 tointegralx -56.3 -> -57 Inexact Rounded +dqintx245 tointegralx -57.3 -> -58 Inexact Rounded + +rounding: down + +dqintx250 tointegralx 55.7 -> 55 Inexact Rounded +dqintx251 tointegralx 56.7 -> 56 Inexact Rounded +dqintx252 tointegralx 57.7 -> 57 Inexact Rounded +dqintx253 tointegralx -55.7 -> -55 Inexact Rounded +dqintx254 tointegralx -56.7 -> -56 Inexact Rounded +dqintx255 tointegralx -57.7 -> -57 Inexact Rounded + +rounding: ceiling + +dqintx260 tointegralx 55.3 -> 56 Inexact Rounded +dqintx261 tointegralx 56.3 -> 57 Inexact Rounded +dqintx262 tointegralx 57.3 -> 58 Inexact Rounded +dqintx263 tointegralx -55.3 -> -55 Inexact Rounded +dqintx264 tointegralx -56.3 -> -56 Inexact Rounded +dqintx265 tointegralx -57.3 -> -57 Inexact Rounded + +rounding: floor + +dqintx270 tointegralx 55.7 -> 55 Inexact Rounded +dqintx271 tointegralx 56.7 -> 56 Inexact Rounded +dqintx272 tointegralx 57.7 -> 57 Inexact Rounded +dqintx273 tointegralx -55.7 -> -56 Inexact Rounded +dqintx274 tointegralx -56.7 -> -57 Inexact Rounded +dqintx275 tointegralx -57.7 -> -58 Inexact Rounded + +-- Int and uInt32 edge values for testing conversions +dqintx300 tointegralx -2147483646 -> -2147483646 +dqintx301 tointegralx -2147483647 -> -2147483647 +dqintx302 tointegralx -2147483648 -> -2147483648 +dqintx303 tointegralx -2147483649 -> -2147483649 +dqintx304 tointegralx 2147483646 -> 2147483646 +dqintx305 tointegralx 2147483647 -> 2147483647 +dqintx306 tointegralx 2147483648 -> 2147483648 +dqintx307 tointegralx 2147483649 -> 2147483649 +dqintx308 tointegralx 4294967294 -> 4294967294 +dqintx309 tointegralx 4294967295 -> 4294967295 +dqintx310 tointegralx 4294967296 -> 4294967296 +dqintx311 tointegralx 4294967297 -> 4294967297 + diff --git a/Lib/test/decimaltestdata/dqXor.decTest b/Lib/test/decimaltestdata/dqXor.decTest index fbb32e4..2216e9e 100644 --- a/Lib/test/decimaltestdata/dqXor.decTest +++ b/Lib/test/decimaltestdata/dqXor.decTest @@ -1,410 +1,410 @@ ------------------------------------------------------------------------- --- dqXor.decTest -- digitwise logical XOR for decQuads -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -clamp: 1 -precision: 34 -maxExponent: 6144 -minExponent: -6143 -rounding: half_even - --- Sanity check (truth table) -dqxor001 xor 0 0 -> 0 -dqxor002 xor 0 1 -> 1 -dqxor003 xor 1 0 -> 1 -dqxor004 xor 1 1 -> 0 -dqxor005 xor 1100 1010 -> 110 --- and at msd and msd-1 -dqxor006 xor 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 -dqxor007 xor 0000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 -dqxor008 xor 1000000000000000000000000000000000 0000000000000000000000000000000000 -> 1000000000000000000000000000000000 -dqxor009 xor 1000000000000000000000000000000000 1000000000000000000000000000000000 -> 0 -dqxor010 xor 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 -dqxor011 xor 0000000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000 -dqxor012 xor 0100000000000000000000000000000000 0000000000000000000000000000000000 -> 100000000000000000000000000000000 -dqxor013 xor 0100000000000000000000000000000000 0100000000000000000000000000000000 -> 0 - --- Various lengths --- 1234567890123456789012345678901234 -dqxor601 xor 0111111111111111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000000000000000 -dqxor602 xor 1011111111111111111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000000000000000 -dqxor603 xor 1101111111111111111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000000000000000 -dqxor604 xor 1110111111111111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000000000000 -dqxor605 xor 1111011111111111111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000000000000 -dqxor606 xor 1111101111111111111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000000000000 -dqxor607 xor 1111110111111111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000000000 -dqxor608 xor 1111111011111111111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000000000 -dqxor609 xor 1111111101111111111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000000000 -dqxor610 xor 1111111110111111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000000 -dqxor611 xor 1111111111011111111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000000 -dqxor612 xor 1111111111101111111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000000 -dqxor613 xor 1111111111110111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000 -dqxor614 xor 1111111111111011111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000 -dqxor615 xor 1111111111111101111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000 -dqxor616 xor 1111111111111110111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000 -dqxor617 xor 1111111111111111011111111111111111 1111111111111111111111111111111111 -> 100000000000000000 -dqxor618 xor 1111111111111111101111111111111111 1111111111111111111111111111111111 -> 10000000000000000 -dqxor619 xor 1111111111111111110111111111111111 1111111111111111111111111111111111 -> 1000000000000000 -dqxor620 xor 1111111111111111111011111111111111 1111111111111111111111111111111111 -> 100000000000000 -dqxor621 xor 1111111111111111111101111111111111 1111111111111111111111111111111111 -> 10000000000000 -dqxor622 xor 1111111111111111111110111111111111 1111111111111111111111111111111111 -> 1000000000000 -dqxor623 xor 1111111111111111111111011111111111 1111111111111111111111111111111111 -> 100000000000 -dqxor624 xor 1111111111111111111111101111111111 1111111111111111111111111111111111 -> 10000000000 -dqxor625 xor 1111111111111111111111110111111111 1111111111111111111111111111111111 -> 1000000000 -dqxor626 xor 1111111111111111111111111011111111 1111111111111111111111111111111111 -> 100000000 -dqxor627 xor 1111111111111111111111111101111111 1111111111111111111111111111111111 -> 10000000 -dqxor628 xor 1111111111111111111111111110111111 1111111111111111111111111111111111 -> 1000000 -dqxor629 xor 1111111111111111111111111111011111 1111111111111111111111111111111111 -> 100000 -dqxor630 xor 1111111111111111111111111111101111 1111111111111111111111111111111111 -> 10000 -dqxor631 xor 1111111111111111111111111111110111 1111111111111111111111111111111111 -> 1000 -dqxor632 xor 1111111111111111111111111111111011 1111111111111111111111111111111111 -> 100 -dqxor633 xor 1111111111111111111111111111111101 1111111111111111111111111111111111 -> 10 -dqxor634 xor 1111111111111111111111111111111110 1111111111111111111111111111111111 -> 1 - -dqxor641 xor 1111111111111111111111111111111111 0111111111111111111111111111111111 -> 1000000000000000000000000000000000 -dqxor642 xor 1111111111111111111111111111111111 1011111111111111111111111111111111 -> 100000000000000000000000000000000 -dqxor643 xor 1111111111111111111111111111111111 1101111111111111111111111111111111 -> 10000000000000000000000000000000 -dqxor644 xor 1111111111111111111111111111111111 1110111111111111111111111111111111 -> 1000000000000000000000000000000 -dqxor645 xor 1111111111111111111111111111111111 1111011111111111111111111111111111 -> 100000000000000000000000000000 -dqxor646 xor 1111111111111111111111111111111111 1111101111111111111111111111111111 -> 10000000000000000000000000000 -dqxor647 xor 1111111111111111111111111111111111 1111110111111111111111111111111111 -> 1000000000000000000000000000 -dqxor648 xor 1111111111111111111111111111111111 1111111011111111111111111111111111 -> 100000000000000000000000000 -dqxor649 xor 1111111111111111111111111111111111 1111111101111111111111111111111111 -> 10000000000000000000000000 -dqxor650 xor 1111111111111111111111111111111111 1111111110111111111111111111111111 -> 1000000000000000000000000 -dqxor651 xor 1111111111111111111111111111111111 1111111111011111111111111111111111 -> 100000000000000000000000 -dqxor652 xor 1111111111111111111111111111111111 1111111111101111111111111111111111 -> 10000000000000000000000 -dqxor653 xor 1111111111111111111111111111111111 1111111111110111111111111111111111 -> 1000000000000000000000 -dqxor654 xor 1111111111111111111111111111111111 1111111111111011111111111111111111 -> 100000000000000000000 -dqxor655 xor 1111111111111111111111111111111111 1111111111111101111111111111111111 -> 10000000000000000000 -dqxor656 xor 1111111111111111111111111111111111 1111111111111110111111111111111111 -> 1000000000000000000 -dqxor657 xor 1111111111111111111111111111111111 1111111111111111011111111111111111 -> 100000000000000000 -dqxor658 xor 1111111111111111111111111111111111 1111111111111111101111111111111111 -> 10000000000000000 -dqxor659 xor 1111111111111111111111111111111111 1111111111111111110111111111111111 -> 1000000000000000 -dqxor660 xor 1111111111111111111111111111111111 1111111111111111111011111111111111 -> 100000000000000 -dqxor661 xor 1111111111111111111111111111111111 1111111111111111111101111111111111 -> 10000000000000 -dqxor662 xor 1111111111111111111111111111111111 1111111111111111111110111111111111 -> 1000000000000 -dqxor663 xor 1111111111111111111111111111111111 1111111111111111111111011111111111 -> 100000000000 -dqxor664 xor 1111111111111111111111111111111111 1111111111111111111111101111111111 -> 10000000000 -dqxor665 xor 1111111111111111111111111111111111 1111111111111111111111110111111111 -> 1000000000 -dqxor666 xor 1111111111111111111111111111111111 1111111111111111111111111011111111 -> 100000000 -dqxor667 xor 1111111111111111111111111111111111 1111111111111111111111111101111111 -> 10000000 -dqxor668 xor 1111111111111111111111111111111111 1111111111111111111111111110111111 -> 1000000 -dqxor669 xor 1111111111111111111111111111111111 1111111111111111111111111111011111 -> 100000 -dqxor670 xor 1111111111111111111111111111111111 1111111111111111111111111111101111 -> 10000 -dqxor671 xor 1111111111111111111111111111111111 1111111111111111111111111111110111 -> 1000 -dqxor672 xor 1111111111111111111111111111111111 1111111111111111111111111111111011 -> 100 -dqxor673 xor 1111111111111111111111111111111111 1111111111111111111111111111111101 -> 10 -dqxor674 xor 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1 -dqxor675 xor 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 1000000000000000000000000000000001 -dqxor676 xor 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1 - - -dqxor021 xor 1111111110000000 1111111110000000 -> 0 -dqxor022 xor 111111110000000 111111110000000 -> 0 -dqxor023 xor 11111110000000 11111110000000 -> 0 -dqxor024 xor 1111110000000 1111110000000 -> 0 -dqxor025 xor 111110000000 111110000000 -> 0 -dqxor026 xor 11110000000 11110000000 -> 0 -dqxor027 xor 1110000000 1110000000 -> 0 -dqxor028 xor 110000000 110000000 -> 0 -dqxor029 xor 10000000 10000000 -> 0 -dqxor030 xor 1000000 1000000 -> 0 -dqxor031 xor 100000 100000 -> 0 -dqxor032 xor 10000 10000 -> 0 -dqxor033 xor 1000 1000 -> 0 -dqxor034 xor 100 100 -> 0 -dqxor035 xor 10 10 -> 0 -dqxor036 xor 1 1 -> 0 - -dqxor040 xor 111111111 111111111111 -> 111000000000 -dqxor041 xor 11111111 111111111111 -> 111100000000 -dqxor042 xor 11111111 111111111 -> 100000000 -dqxor043 xor 1111111 100000010 -> 101111101 -dqxor044 xor 111111 100000100 -> 100111011 -dqxor045 xor 11111 100001000 -> 100010111 -dqxor046 xor 1111 100010000 -> 100011111 -dqxor047 xor 111 100100000 -> 100100111 -dqxor048 xor 11 101000000 -> 101000011 -dqxor049 xor 1 110000000 -> 110000001 - -dqxor050 xor 1111111111 1 -> 1111111110 -dqxor051 xor 111111111 1 -> 111111110 -dqxor052 xor 11111111 1 -> 11111110 -dqxor053 xor 1111111 1 -> 1111110 -dqxor054 xor 111111 1 -> 111110 -dqxor055 xor 11111 1 -> 11110 -dqxor056 xor 1111 1 -> 1110 -dqxor057 xor 111 1 -> 110 -dqxor058 xor 11 1 -> 10 -dqxor059 xor 1 1 -> 0 - -dqxor060 xor 1111111111 0 -> 1111111111 -dqxor061 xor 111111111 0 -> 111111111 -dqxor062 xor 11111111 0 -> 11111111 -dqxor063 xor 1111111 0 -> 1111111 -dqxor064 xor 111111 0 -> 111111 -dqxor065 xor 11111 0 -> 11111 -dqxor066 xor 1111 0 -> 1111 -dqxor067 xor 111 0 -> 111 -dqxor068 xor 11 0 -> 11 -dqxor069 xor 1 0 -> 1 - -dqxor070 xor 1 1111111111 -> 1111111110 -dqxor071 xor 1 111111111 -> 111111110 -dqxor072 xor 1 11111111 -> 11111110 -dqxor073 xor 1 1111111 -> 1111110 -dqxor074 xor 1 111111 -> 111110 -dqxor075 xor 1 11111 -> 11110 -dqxor076 xor 1 1111 -> 1110 -dqxor077 xor 1 111 -> 110 -dqxor078 xor 1 11 -> 10 -dqxor079 xor 1 1 -> 0 - -dqxor080 xor 0 1111111111 -> 1111111111 -dqxor081 xor 0 111111111 -> 111111111 -dqxor082 xor 0 11111111 -> 11111111 -dqxor083 xor 0 1111111 -> 1111111 -dqxor084 xor 0 111111 -> 111111 -dqxor085 xor 0 11111 -> 11111 -dqxor086 xor 0 1111 -> 1111 -dqxor087 xor 0 111 -> 111 -dqxor088 xor 0 11 -> 11 -dqxor089 xor 0 1 -> 1 - -dqxor090 xor 011111111 111101111 -> 100010000 -dqxor091 xor 101111111 111101111 -> 10010000 -dqxor092 xor 110111111 111101111 -> 1010000 -dqxor093 xor 111011111 111101111 -> 110000 -dqxor094 xor 111101111 111101111 -> 0 -dqxor095 xor 111110111 111101111 -> 11000 -dqxor096 xor 111111011 111101111 -> 10100 -dqxor097 xor 111111101 111101111 -> 10010 -dqxor098 xor 111111110 111101111 -> 10001 - -dqxor100 xor 111101111 011111111 -> 100010000 -dqxor101 xor 111101111 101111111 -> 10010000 -dqxor102 xor 111101111 110111111 -> 1010000 -dqxor103 xor 111101111 111011111 -> 110000 -dqxor104 xor 111101111 111101111 -> 0 -dqxor105 xor 111101111 111110111 -> 11000 -dqxor106 xor 111101111 111111011 -> 10100 -dqxor107 xor 111101111 111111101 -> 10010 -dqxor108 xor 111101111 111111110 -> 10001 - --- non-0/1 should not be accepted, nor should signs -dqxor220 xor 111111112 111111111 -> NaN Invalid_operation -dqxor221 xor 333333333 333333333 -> NaN Invalid_operation -dqxor222 xor 555555555 555555555 -> NaN Invalid_operation -dqxor223 xor 777777777 777777777 -> NaN Invalid_operation -dqxor224 xor 999999999 999999999 -> NaN Invalid_operation -dqxor225 xor 222222222 999999999 -> NaN Invalid_operation -dqxor226 xor 444444444 999999999 -> NaN Invalid_operation -dqxor227 xor 666666666 999999999 -> NaN Invalid_operation -dqxor228 xor 888888888 999999999 -> NaN Invalid_operation -dqxor229 xor 999999999 222222222 -> NaN Invalid_operation -dqxor230 xor 999999999 444444444 -> NaN Invalid_operation -dqxor231 xor 999999999 666666666 -> NaN Invalid_operation -dqxor232 xor 999999999 888888888 -> NaN Invalid_operation --- a few randoms -dqxor240 xor 567468689 -934981942 -> NaN Invalid_operation -dqxor241 xor 567367689 934981942 -> NaN Invalid_operation -dqxor242 xor -631917772 -706014634 -> NaN Invalid_operation -dqxor243 xor -756253257 138579234 -> NaN Invalid_operation -dqxor244 xor 835590149 567435400 -> NaN Invalid_operation --- test MSD -dqxor250 xor 2000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqxor251 xor 7000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqxor252 xor 8000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqxor253 xor 9000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation -dqxor254 xor 2000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqxor255 xor 7000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqxor256 xor 8000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqxor257 xor 9000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation -dqxor258 xor 1000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation -dqxor259 xor 1000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation -dqxor260 xor 1000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation -dqxor261 xor 1000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation -dqxor262 xor 0000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation -dqxor263 xor 0000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation -dqxor264 xor 0000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation -dqxor265 xor 0000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation --- test MSD-1 -dqxor270 xor 0200000111000111000111001000000000 1000000111000111000111100000000010 -> NaN Invalid_operation -dqxor271 xor 0700000111000111000111000100000000 1000000111000111000111010000000100 -> NaN Invalid_operation -dqxor272 xor 0800000111000111000111000010000000 1000000111000111000111001000001000 -> NaN Invalid_operation -dqxor273 xor 0900000111000111000111000001000000 1000000111000111000111000100010000 -> NaN Invalid_operation -dqxor274 xor 1000000111000111000111000000100000 0200000111000111000111000010100000 -> NaN Invalid_operation -dqxor275 xor 1000000111000111000111000000010000 0700000111000111000111000001000000 -> NaN Invalid_operation -dqxor276 xor 1000000111000111000111000000001000 0800000111000111000111000010100000 -> NaN Invalid_operation -dqxor277 xor 1000000111000111000111000000000100 0900000111000111000111000000010000 -> NaN Invalid_operation --- test LSD -dqxor280 xor 0010000111000111000111000000000002 1000000111000111000111000100000001 -> NaN Invalid_operation -dqxor281 xor 0001000111000111000111000000000007 1000000111000111000111001000000011 -> NaN Invalid_operation -dqxor282 xor 0000000111000111000111100000000008 1000000111000111000111010000000001 -> NaN Invalid_operation -dqxor283 xor 0000000111000111000111010000000009 1000000111000111000111100000000001 -> NaN Invalid_operation -dqxor284 xor 1000000111000111000111001000000000 0001000111000111000111000000000002 -> NaN Invalid_operation -dqxor285 xor 1000000111000111000111000100000000 0010000111000111000111000000000007 -> NaN Invalid_operation -dqxor286 xor 1000000111000111000111000010000000 0100000111000111000111000000000008 -> NaN Invalid_operation -dqxor287 xor 1000000111000111000111000001000000 1000000111000111000111000000000009 -> NaN Invalid_operation --- test Middie -dqxor288 xor 0010000111000111000111000020000000 1000000111000111000111001000000000 -> NaN Invalid_operation -dqxor289 xor 0001000111000111000111000070000001 1000000111000111000111000100000000 -> NaN Invalid_operation -dqxor290 xor 0000000111000111000111100080000010 1000000111000111000111000010000000 -> NaN Invalid_operation -dqxor291 xor 0000000111000111000111010090000100 1000000111000111000111000001000000 -> NaN Invalid_operation -dqxor292 xor 1000000111000111000111001000001000 0000000111000111000111000020100000 -> NaN Invalid_operation -dqxor293 xor 1000000111000111000111000100010000 0000000111000111000111000070010000 -> NaN Invalid_operation -dqxor294 xor 1000000111000111000111000010100000 0000000111000111000111000080001000 -> NaN Invalid_operation -dqxor295 xor 1000000111000111000111000001000000 0000000111000111000111000090000100 -> NaN Invalid_operation --- signs -dqxor296 xor -1000000111000111000111000001000000 -0000001110001110001110010000000100 -> NaN Invalid_operation -dqxor297 xor -1000000111000111000111000001000000 0000001110001110001110000010000100 -> NaN Invalid_operation -dqxor298 xor 1000000111000111000111000001000000 -0000001110001110001110001000000100 -> NaN Invalid_operation -dqxor299 xor 1000000111000111000111000001000000 0000001110001110001110000011000100 -> 1000001001001001001001000010000100 - --- Nmax, Nmin, Ntiny-like -dqxor331 xor 2 9.99999999E+999 -> NaN Invalid_operation -dqxor332 xor 3 1E-999 -> NaN Invalid_operation -dqxor333 xor 4 1.00000000E-2821 -> NaN Invalid_operation -dqxor334 xor 5 1E-900 -> NaN Invalid_operation -dqxor335 xor 6 -1E-900 -> NaN Invalid_operation -dqxor336 xor 7 -1.00000000E-999 -> NaN Invalid_operation -dqxor337 xor 8 -1E-999 -> NaN Invalid_operation -dqxor338 xor 9 -9.99999999E+999 -> NaN Invalid_operation -dqxor341 xor 9.99999999E+999 -18 -> NaN Invalid_operation -dqxor342 xor 1E-999 01 -> NaN Invalid_operation -dqxor343 xor 1.00000000E-999 -18 -> NaN Invalid_operation -dqxor344 xor 1E-908 18 -> NaN Invalid_operation -dqxor345 xor -1E-907 -10 -> NaN Invalid_operation -dqxor346 xor -1.00000000E-999 18 -> NaN Invalid_operation -dqxor347 xor -1E-999 10 -> NaN Invalid_operation -dqxor348 xor -9.99999999E+2991 -18 -> NaN Invalid_operation - --- A few other non-integers -dqxor361 xor 1.0 1 -> NaN Invalid_operation -dqxor362 xor 1E+1 1 -> NaN Invalid_operation -dqxor363 xor 0.0 1 -> NaN Invalid_operation -dqxor364 xor 0E+1 1 -> NaN Invalid_operation -dqxor365 xor 9.9 1 -> NaN Invalid_operation -dqxor366 xor 9E+1 1 -> NaN Invalid_operation -dqxor371 xor 0 1.0 -> NaN Invalid_operation -dqxor372 xor 0 1E+1 -> NaN Invalid_operation -dqxor373 xor 0 0.0 -> NaN Invalid_operation -dqxor374 xor 0 0E+1 -> NaN Invalid_operation -dqxor375 xor 0 9.9 -> NaN Invalid_operation -dqxor376 xor 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -dqxor780 xor -Inf -Inf -> NaN Invalid_operation -dqxor781 xor -Inf -1000 -> NaN Invalid_operation -dqxor782 xor -Inf -1 -> NaN Invalid_operation -dqxor783 xor -Inf -0 -> NaN Invalid_operation -dqxor784 xor -Inf 0 -> NaN Invalid_operation -dqxor785 xor -Inf 1 -> NaN Invalid_operation -dqxor786 xor -Inf 1000 -> NaN Invalid_operation -dqxor787 xor -1000 -Inf -> NaN Invalid_operation -dqxor788 xor -Inf -Inf -> NaN Invalid_operation -dqxor789 xor -1 -Inf -> NaN Invalid_operation -dqxor790 xor -0 -Inf -> NaN Invalid_operation -dqxor791 xor 0 -Inf -> NaN Invalid_operation -dqxor792 xor 1 -Inf -> NaN Invalid_operation -dqxor793 xor 1000 -Inf -> NaN Invalid_operation -dqxor794 xor Inf -Inf -> NaN Invalid_operation - -dqxor800 xor Inf -Inf -> NaN Invalid_operation -dqxor801 xor Inf -1000 -> NaN Invalid_operation -dqxor802 xor Inf -1 -> NaN Invalid_operation -dqxor803 xor Inf -0 -> NaN Invalid_operation -dqxor804 xor Inf 0 -> NaN Invalid_operation -dqxor805 xor Inf 1 -> NaN Invalid_operation -dqxor806 xor Inf 1000 -> NaN Invalid_operation -dqxor807 xor Inf Inf -> NaN Invalid_operation -dqxor808 xor -1000 Inf -> NaN Invalid_operation -dqxor809 xor -Inf Inf -> NaN Invalid_operation -dqxor810 xor -1 Inf -> NaN Invalid_operation -dqxor811 xor -0 Inf -> NaN Invalid_operation -dqxor812 xor 0 Inf -> NaN Invalid_operation -dqxor813 xor 1 Inf -> NaN Invalid_operation -dqxor814 xor 1000 Inf -> NaN Invalid_operation -dqxor815 xor Inf Inf -> NaN Invalid_operation - -dqxor821 xor NaN -Inf -> NaN Invalid_operation -dqxor822 xor NaN -1000 -> NaN Invalid_operation -dqxor823 xor NaN -1 -> NaN Invalid_operation -dqxor824 xor NaN -0 -> NaN Invalid_operation -dqxor825 xor NaN 0 -> NaN Invalid_operation -dqxor826 xor NaN 1 -> NaN Invalid_operation -dqxor827 xor NaN 1000 -> NaN Invalid_operation -dqxor828 xor NaN Inf -> NaN Invalid_operation -dqxor829 xor NaN NaN -> NaN Invalid_operation -dqxor830 xor -Inf NaN -> NaN Invalid_operation -dqxor831 xor -1000 NaN -> NaN Invalid_operation -dqxor832 xor -1 NaN -> NaN Invalid_operation -dqxor833 xor -0 NaN -> NaN Invalid_operation -dqxor834 xor 0 NaN -> NaN Invalid_operation -dqxor835 xor 1 NaN -> NaN Invalid_operation -dqxor836 xor 1000 NaN -> NaN Invalid_operation -dqxor837 xor Inf NaN -> NaN Invalid_operation - -dqxor841 xor sNaN -Inf -> NaN Invalid_operation -dqxor842 xor sNaN -1000 -> NaN Invalid_operation -dqxor843 xor sNaN -1 -> NaN Invalid_operation -dqxor844 xor sNaN -0 -> NaN Invalid_operation -dqxor845 xor sNaN 0 -> NaN Invalid_operation -dqxor846 xor sNaN 1 -> NaN Invalid_operation -dqxor847 xor sNaN 1000 -> NaN Invalid_operation -dqxor848 xor sNaN NaN -> NaN Invalid_operation -dqxor849 xor sNaN sNaN -> NaN Invalid_operation -dqxor850 xor NaN sNaN -> NaN Invalid_operation -dqxor851 xor -Inf sNaN -> NaN Invalid_operation -dqxor852 xor -1000 sNaN -> NaN Invalid_operation -dqxor853 xor -1 sNaN -> NaN Invalid_operation -dqxor854 xor -0 sNaN -> NaN Invalid_operation -dqxor855 xor 0 sNaN -> NaN Invalid_operation -dqxor856 xor 1 sNaN -> NaN Invalid_operation -dqxor857 xor 1000 sNaN -> NaN Invalid_operation -dqxor858 xor Inf sNaN -> NaN Invalid_operation -dqxor859 xor NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -dqxor861 xor NaN1 -Inf -> NaN Invalid_operation -dqxor862 xor +NaN2 -1000 -> NaN Invalid_operation -dqxor863 xor NaN3 1000 -> NaN Invalid_operation -dqxor864 xor NaN4 Inf -> NaN Invalid_operation -dqxor865 xor NaN5 +NaN6 -> NaN Invalid_operation -dqxor866 xor -Inf NaN7 -> NaN Invalid_operation -dqxor867 xor -1000 NaN8 -> NaN Invalid_operation -dqxor868 xor 1000 NaN9 -> NaN Invalid_operation -dqxor869 xor Inf +NaN10 -> NaN Invalid_operation -dqxor871 xor sNaN11 -Inf -> NaN Invalid_operation -dqxor872 xor sNaN12 -1000 -> NaN Invalid_operation -dqxor873 xor sNaN13 1000 -> NaN Invalid_operation -dqxor874 xor sNaN14 NaN17 -> NaN Invalid_operation -dqxor875 xor sNaN15 sNaN18 -> NaN Invalid_operation -dqxor876 xor NaN16 sNaN19 -> NaN Invalid_operation -dqxor877 xor -Inf +sNaN20 -> NaN Invalid_operation -dqxor878 xor -1000 sNaN21 -> NaN Invalid_operation -dqxor879 xor 1000 sNaN22 -> NaN Invalid_operation -dqxor880 xor Inf sNaN23 -> NaN Invalid_operation -dqxor881 xor +NaN25 +sNaN24 -> NaN Invalid_operation -dqxor882 xor -NaN26 NaN28 -> NaN Invalid_operation -dqxor883 xor -sNaN27 sNaN29 -> NaN Invalid_operation -dqxor884 xor 1000 -NaN30 -> NaN Invalid_operation -dqxor885 xor 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- dqXor.decTest -- digitwise logical XOR for decQuads -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +clamp: 1 +precision: 34 +maxExponent: 6144 +minExponent: -6143 +rounding: half_even + +-- Sanity check (truth table) +dqxor001 xor 0 0 -> 0 +dqxor002 xor 0 1 -> 1 +dqxor003 xor 1 0 -> 1 +dqxor004 xor 1 1 -> 0 +dqxor005 xor 1100 1010 -> 110 +-- and at msd and msd-1 +dqxor006 xor 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 +dqxor007 xor 0000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 +dqxor008 xor 1000000000000000000000000000000000 0000000000000000000000000000000000 -> 1000000000000000000000000000000000 +dqxor009 xor 1000000000000000000000000000000000 1000000000000000000000000000000000 -> 0 +dqxor010 xor 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0 +dqxor011 xor 0000000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000 +dqxor012 xor 0100000000000000000000000000000000 0000000000000000000000000000000000 -> 100000000000000000000000000000000 +dqxor013 xor 0100000000000000000000000000000000 0100000000000000000000000000000000 -> 0 + +-- Various lengths +-- 1234567890123456789012345678901234 +dqxor601 xor 0111111111111111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000000000000000 +dqxor602 xor 1011111111111111111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000000000000000 +dqxor603 xor 1101111111111111111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000000000000000 +dqxor604 xor 1110111111111111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000000000000 +dqxor605 xor 1111011111111111111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000000000000 +dqxor606 xor 1111101111111111111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000000000000 +dqxor607 xor 1111110111111111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000000000 +dqxor608 xor 1111111011111111111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000000000 +dqxor609 xor 1111111101111111111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000000000 +dqxor610 xor 1111111110111111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000000 +dqxor611 xor 1111111111011111111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000000 +dqxor612 xor 1111111111101111111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000000 +dqxor613 xor 1111111111110111111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000000 +dqxor614 xor 1111111111111011111111111111111111 1111111111111111111111111111111111 -> 100000000000000000000 +dqxor615 xor 1111111111111101111111111111111111 1111111111111111111111111111111111 -> 10000000000000000000 +dqxor616 xor 1111111111111110111111111111111111 1111111111111111111111111111111111 -> 1000000000000000000 +dqxor617 xor 1111111111111111011111111111111111 1111111111111111111111111111111111 -> 100000000000000000 +dqxor618 xor 1111111111111111101111111111111111 1111111111111111111111111111111111 -> 10000000000000000 +dqxor619 xor 1111111111111111110111111111111111 1111111111111111111111111111111111 -> 1000000000000000 +dqxor620 xor 1111111111111111111011111111111111 1111111111111111111111111111111111 -> 100000000000000 +dqxor621 xor 1111111111111111111101111111111111 1111111111111111111111111111111111 -> 10000000000000 +dqxor622 xor 1111111111111111111110111111111111 1111111111111111111111111111111111 -> 1000000000000 +dqxor623 xor 1111111111111111111111011111111111 1111111111111111111111111111111111 -> 100000000000 +dqxor624 xor 1111111111111111111111101111111111 1111111111111111111111111111111111 -> 10000000000 +dqxor625 xor 1111111111111111111111110111111111 1111111111111111111111111111111111 -> 1000000000 +dqxor626 xor 1111111111111111111111111011111111 1111111111111111111111111111111111 -> 100000000 +dqxor627 xor 1111111111111111111111111101111111 1111111111111111111111111111111111 -> 10000000 +dqxor628 xor 1111111111111111111111111110111111 1111111111111111111111111111111111 -> 1000000 +dqxor629 xor 1111111111111111111111111111011111 1111111111111111111111111111111111 -> 100000 +dqxor630 xor 1111111111111111111111111111101111 1111111111111111111111111111111111 -> 10000 +dqxor631 xor 1111111111111111111111111111110111 1111111111111111111111111111111111 -> 1000 +dqxor632 xor 1111111111111111111111111111111011 1111111111111111111111111111111111 -> 100 +dqxor633 xor 1111111111111111111111111111111101 1111111111111111111111111111111111 -> 10 +dqxor634 xor 1111111111111111111111111111111110 1111111111111111111111111111111111 -> 1 + +dqxor641 xor 1111111111111111111111111111111111 0111111111111111111111111111111111 -> 1000000000000000000000000000000000 +dqxor642 xor 1111111111111111111111111111111111 1011111111111111111111111111111111 -> 100000000000000000000000000000000 +dqxor643 xor 1111111111111111111111111111111111 1101111111111111111111111111111111 -> 10000000000000000000000000000000 +dqxor644 xor 1111111111111111111111111111111111 1110111111111111111111111111111111 -> 1000000000000000000000000000000 +dqxor645 xor 1111111111111111111111111111111111 1111011111111111111111111111111111 -> 100000000000000000000000000000 +dqxor646 xor 1111111111111111111111111111111111 1111101111111111111111111111111111 -> 10000000000000000000000000000 +dqxor647 xor 1111111111111111111111111111111111 1111110111111111111111111111111111 -> 1000000000000000000000000000 +dqxor648 xor 1111111111111111111111111111111111 1111111011111111111111111111111111 -> 100000000000000000000000000 +dqxor649 xor 1111111111111111111111111111111111 1111111101111111111111111111111111 -> 10000000000000000000000000 +dqxor650 xor 1111111111111111111111111111111111 1111111110111111111111111111111111 -> 1000000000000000000000000 +dqxor651 xor 1111111111111111111111111111111111 1111111111011111111111111111111111 -> 100000000000000000000000 +dqxor652 xor 1111111111111111111111111111111111 1111111111101111111111111111111111 -> 10000000000000000000000 +dqxor653 xor 1111111111111111111111111111111111 1111111111110111111111111111111111 -> 1000000000000000000000 +dqxor654 xor 1111111111111111111111111111111111 1111111111111011111111111111111111 -> 100000000000000000000 +dqxor655 xor 1111111111111111111111111111111111 1111111111111101111111111111111111 -> 10000000000000000000 +dqxor656 xor 1111111111111111111111111111111111 1111111111111110111111111111111111 -> 1000000000000000000 +dqxor657 xor 1111111111111111111111111111111111 1111111111111111011111111111111111 -> 100000000000000000 +dqxor658 xor 1111111111111111111111111111111111 1111111111111111101111111111111111 -> 10000000000000000 +dqxor659 xor 1111111111111111111111111111111111 1111111111111111110111111111111111 -> 1000000000000000 +dqxor660 xor 1111111111111111111111111111111111 1111111111111111111011111111111111 -> 100000000000000 +dqxor661 xor 1111111111111111111111111111111111 1111111111111111111101111111111111 -> 10000000000000 +dqxor662 xor 1111111111111111111111111111111111 1111111111111111111110111111111111 -> 1000000000000 +dqxor663 xor 1111111111111111111111111111111111 1111111111111111111111011111111111 -> 100000000000 +dqxor664 xor 1111111111111111111111111111111111 1111111111111111111111101111111111 -> 10000000000 +dqxor665 xor 1111111111111111111111111111111111 1111111111111111111111110111111111 -> 1000000000 +dqxor666 xor 1111111111111111111111111111111111 1111111111111111111111111011111111 -> 100000000 +dqxor667 xor 1111111111111111111111111111111111 1111111111111111111111111101111111 -> 10000000 +dqxor668 xor 1111111111111111111111111111111111 1111111111111111111111111110111111 -> 1000000 +dqxor669 xor 1111111111111111111111111111111111 1111111111111111111111111111011111 -> 100000 +dqxor670 xor 1111111111111111111111111111111111 1111111111111111111111111111101111 -> 10000 +dqxor671 xor 1111111111111111111111111111111111 1111111111111111111111111111110111 -> 1000 +dqxor672 xor 1111111111111111111111111111111111 1111111111111111111111111111111011 -> 100 +dqxor673 xor 1111111111111111111111111111111111 1111111111111111111111111111111101 -> 10 +dqxor674 xor 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1 +dqxor675 xor 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 1000000000000000000000000000000001 +dqxor676 xor 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1 + + +dqxor021 xor 1111111110000000 1111111110000000 -> 0 +dqxor022 xor 111111110000000 111111110000000 -> 0 +dqxor023 xor 11111110000000 11111110000000 -> 0 +dqxor024 xor 1111110000000 1111110000000 -> 0 +dqxor025 xor 111110000000 111110000000 -> 0 +dqxor026 xor 11110000000 11110000000 -> 0 +dqxor027 xor 1110000000 1110000000 -> 0 +dqxor028 xor 110000000 110000000 -> 0 +dqxor029 xor 10000000 10000000 -> 0 +dqxor030 xor 1000000 1000000 -> 0 +dqxor031 xor 100000 100000 -> 0 +dqxor032 xor 10000 10000 -> 0 +dqxor033 xor 1000 1000 -> 0 +dqxor034 xor 100 100 -> 0 +dqxor035 xor 10 10 -> 0 +dqxor036 xor 1 1 -> 0 + +dqxor040 xor 111111111 111111111111 -> 111000000000 +dqxor041 xor 11111111 111111111111 -> 111100000000 +dqxor042 xor 11111111 111111111 -> 100000000 +dqxor043 xor 1111111 100000010 -> 101111101 +dqxor044 xor 111111 100000100 -> 100111011 +dqxor045 xor 11111 100001000 -> 100010111 +dqxor046 xor 1111 100010000 -> 100011111 +dqxor047 xor 111 100100000 -> 100100111 +dqxor048 xor 11 101000000 -> 101000011 +dqxor049 xor 1 110000000 -> 110000001 + +dqxor050 xor 1111111111 1 -> 1111111110 +dqxor051 xor 111111111 1 -> 111111110 +dqxor052 xor 11111111 1 -> 11111110 +dqxor053 xor 1111111 1 -> 1111110 +dqxor054 xor 111111 1 -> 111110 +dqxor055 xor 11111 1 -> 11110 +dqxor056 xor 1111 1 -> 1110 +dqxor057 xor 111 1 -> 110 +dqxor058 xor 11 1 -> 10 +dqxor059 xor 1 1 -> 0 + +dqxor060 xor 1111111111 0 -> 1111111111 +dqxor061 xor 111111111 0 -> 111111111 +dqxor062 xor 11111111 0 -> 11111111 +dqxor063 xor 1111111 0 -> 1111111 +dqxor064 xor 111111 0 -> 111111 +dqxor065 xor 11111 0 -> 11111 +dqxor066 xor 1111 0 -> 1111 +dqxor067 xor 111 0 -> 111 +dqxor068 xor 11 0 -> 11 +dqxor069 xor 1 0 -> 1 + +dqxor070 xor 1 1111111111 -> 1111111110 +dqxor071 xor 1 111111111 -> 111111110 +dqxor072 xor 1 11111111 -> 11111110 +dqxor073 xor 1 1111111 -> 1111110 +dqxor074 xor 1 111111 -> 111110 +dqxor075 xor 1 11111 -> 11110 +dqxor076 xor 1 1111 -> 1110 +dqxor077 xor 1 111 -> 110 +dqxor078 xor 1 11 -> 10 +dqxor079 xor 1 1 -> 0 + +dqxor080 xor 0 1111111111 -> 1111111111 +dqxor081 xor 0 111111111 -> 111111111 +dqxor082 xor 0 11111111 -> 11111111 +dqxor083 xor 0 1111111 -> 1111111 +dqxor084 xor 0 111111 -> 111111 +dqxor085 xor 0 11111 -> 11111 +dqxor086 xor 0 1111 -> 1111 +dqxor087 xor 0 111 -> 111 +dqxor088 xor 0 11 -> 11 +dqxor089 xor 0 1 -> 1 + +dqxor090 xor 011111111 111101111 -> 100010000 +dqxor091 xor 101111111 111101111 -> 10010000 +dqxor092 xor 110111111 111101111 -> 1010000 +dqxor093 xor 111011111 111101111 -> 110000 +dqxor094 xor 111101111 111101111 -> 0 +dqxor095 xor 111110111 111101111 -> 11000 +dqxor096 xor 111111011 111101111 -> 10100 +dqxor097 xor 111111101 111101111 -> 10010 +dqxor098 xor 111111110 111101111 -> 10001 + +dqxor100 xor 111101111 011111111 -> 100010000 +dqxor101 xor 111101111 101111111 -> 10010000 +dqxor102 xor 111101111 110111111 -> 1010000 +dqxor103 xor 111101111 111011111 -> 110000 +dqxor104 xor 111101111 111101111 -> 0 +dqxor105 xor 111101111 111110111 -> 11000 +dqxor106 xor 111101111 111111011 -> 10100 +dqxor107 xor 111101111 111111101 -> 10010 +dqxor108 xor 111101111 111111110 -> 10001 + +-- non-0/1 should not be accepted, nor should signs +dqxor220 xor 111111112 111111111 -> NaN Invalid_operation +dqxor221 xor 333333333 333333333 -> NaN Invalid_operation +dqxor222 xor 555555555 555555555 -> NaN Invalid_operation +dqxor223 xor 777777777 777777777 -> NaN Invalid_operation +dqxor224 xor 999999999 999999999 -> NaN Invalid_operation +dqxor225 xor 222222222 999999999 -> NaN Invalid_operation +dqxor226 xor 444444444 999999999 -> NaN Invalid_operation +dqxor227 xor 666666666 999999999 -> NaN Invalid_operation +dqxor228 xor 888888888 999999999 -> NaN Invalid_operation +dqxor229 xor 999999999 222222222 -> NaN Invalid_operation +dqxor230 xor 999999999 444444444 -> NaN Invalid_operation +dqxor231 xor 999999999 666666666 -> NaN Invalid_operation +dqxor232 xor 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +dqxor240 xor 567468689 -934981942 -> NaN Invalid_operation +dqxor241 xor 567367689 934981942 -> NaN Invalid_operation +dqxor242 xor -631917772 -706014634 -> NaN Invalid_operation +dqxor243 xor -756253257 138579234 -> NaN Invalid_operation +dqxor244 xor 835590149 567435400 -> NaN Invalid_operation +-- test MSD +dqxor250 xor 2000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqxor251 xor 7000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqxor252 xor 8000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqxor253 xor 9000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation +dqxor254 xor 2000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqxor255 xor 7000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqxor256 xor 8000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqxor257 xor 9000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation +dqxor258 xor 1000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation +dqxor259 xor 1000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation +dqxor260 xor 1000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation +dqxor261 xor 1000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation +dqxor262 xor 0000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation +dqxor263 xor 0000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation +dqxor264 xor 0000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation +dqxor265 xor 0000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation +-- test MSD-1 +dqxor270 xor 0200000111000111000111001000000000 1000000111000111000111100000000010 -> NaN Invalid_operation +dqxor271 xor 0700000111000111000111000100000000 1000000111000111000111010000000100 -> NaN Invalid_operation +dqxor272 xor 0800000111000111000111000010000000 1000000111000111000111001000001000 -> NaN Invalid_operation +dqxor273 xor 0900000111000111000111000001000000 1000000111000111000111000100010000 -> NaN Invalid_operation +dqxor274 xor 1000000111000111000111000000100000 0200000111000111000111000010100000 -> NaN Invalid_operation +dqxor275 xor 1000000111000111000111000000010000 0700000111000111000111000001000000 -> NaN Invalid_operation +dqxor276 xor 1000000111000111000111000000001000 0800000111000111000111000010100000 -> NaN Invalid_operation +dqxor277 xor 1000000111000111000111000000000100 0900000111000111000111000000010000 -> NaN Invalid_operation +-- test LSD +dqxor280 xor 0010000111000111000111000000000002 1000000111000111000111000100000001 -> NaN Invalid_operation +dqxor281 xor 0001000111000111000111000000000007 1000000111000111000111001000000011 -> NaN Invalid_operation +dqxor282 xor 0000000111000111000111100000000008 1000000111000111000111010000000001 -> NaN Invalid_operation +dqxor283 xor 0000000111000111000111010000000009 1000000111000111000111100000000001 -> NaN Invalid_operation +dqxor284 xor 1000000111000111000111001000000000 0001000111000111000111000000000002 -> NaN Invalid_operation +dqxor285 xor 1000000111000111000111000100000000 0010000111000111000111000000000007 -> NaN Invalid_operation +dqxor286 xor 1000000111000111000111000010000000 0100000111000111000111000000000008 -> NaN Invalid_operation +dqxor287 xor 1000000111000111000111000001000000 1000000111000111000111000000000009 -> NaN Invalid_operation +-- test Middie +dqxor288 xor 0010000111000111000111000020000000 1000000111000111000111001000000000 -> NaN Invalid_operation +dqxor289 xor 0001000111000111000111000070000001 1000000111000111000111000100000000 -> NaN Invalid_operation +dqxor290 xor 0000000111000111000111100080000010 1000000111000111000111000010000000 -> NaN Invalid_operation +dqxor291 xor 0000000111000111000111010090000100 1000000111000111000111000001000000 -> NaN Invalid_operation +dqxor292 xor 1000000111000111000111001000001000 0000000111000111000111000020100000 -> NaN Invalid_operation +dqxor293 xor 1000000111000111000111000100010000 0000000111000111000111000070010000 -> NaN Invalid_operation +dqxor294 xor 1000000111000111000111000010100000 0000000111000111000111000080001000 -> NaN Invalid_operation +dqxor295 xor 1000000111000111000111000001000000 0000000111000111000111000090000100 -> NaN Invalid_operation +-- signs +dqxor296 xor -1000000111000111000111000001000000 -0000001110001110001110010000000100 -> NaN Invalid_operation +dqxor297 xor -1000000111000111000111000001000000 0000001110001110001110000010000100 -> NaN Invalid_operation +dqxor298 xor 1000000111000111000111000001000000 -0000001110001110001110001000000100 -> NaN Invalid_operation +dqxor299 xor 1000000111000111000111000001000000 0000001110001110001110000011000100 -> 1000001001001001001001000010000100 + +-- Nmax, Nmin, Ntiny-like +dqxor331 xor 2 9.99999999E+999 -> NaN Invalid_operation +dqxor332 xor 3 1E-999 -> NaN Invalid_operation +dqxor333 xor 4 1.00000000E-2821 -> NaN Invalid_operation +dqxor334 xor 5 1E-900 -> NaN Invalid_operation +dqxor335 xor 6 -1E-900 -> NaN Invalid_operation +dqxor336 xor 7 -1.00000000E-999 -> NaN Invalid_operation +dqxor337 xor 8 -1E-999 -> NaN Invalid_operation +dqxor338 xor 9 -9.99999999E+999 -> NaN Invalid_operation +dqxor341 xor 9.99999999E+999 -18 -> NaN Invalid_operation +dqxor342 xor 1E-999 01 -> NaN Invalid_operation +dqxor343 xor 1.00000000E-999 -18 -> NaN Invalid_operation +dqxor344 xor 1E-908 18 -> NaN Invalid_operation +dqxor345 xor -1E-907 -10 -> NaN Invalid_operation +dqxor346 xor -1.00000000E-999 18 -> NaN Invalid_operation +dqxor347 xor -1E-999 10 -> NaN Invalid_operation +dqxor348 xor -9.99999999E+2991 -18 -> NaN Invalid_operation + +-- A few other non-integers +dqxor361 xor 1.0 1 -> NaN Invalid_operation +dqxor362 xor 1E+1 1 -> NaN Invalid_operation +dqxor363 xor 0.0 1 -> NaN Invalid_operation +dqxor364 xor 0E+1 1 -> NaN Invalid_operation +dqxor365 xor 9.9 1 -> NaN Invalid_operation +dqxor366 xor 9E+1 1 -> NaN Invalid_operation +dqxor371 xor 0 1.0 -> NaN Invalid_operation +dqxor372 xor 0 1E+1 -> NaN Invalid_operation +dqxor373 xor 0 0.0 -> NaN Invalid_operation +dqxor374 xor 0 0E+1 -> NaN Invalid_operation +dqxor375 xor 0 9.9 -> NaN Invalid_operation +dqxor376 xor 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +dqxor780 xor -Inf -Inf -> NaN Invalid_operation +dqxor781 xor -Inf -1000 -> NaN Invalid_operation +dqxor782 xor -Inf -1 -> NaN Invalid_operation +dqxor783 xor -Inf -0 -> NaN Invalid_operation +dqxor784 xor -Inf 0 -> NaN Invalid_operation +dqxor785 xor -Inf 1 -> NaN Invalid_operation +dqxor786 xor -Inf 1000 -> NaN Invalid_operation +dqxor787 xor -1000 -Inf -> NaN Invalid_operation +dqxor788 xor -Inf -Inf -> NaN Invalid_operation +dqxor789 xor -1 -Inf -> NaN Invalid_operation +dqxor790 xor -0 -Inf -> NaN Invalid_operation +dqxor791 xor 0 -Inf -> NaN Invalid_operation +dqxor792 xor 1 -Inf -> NaN Invalid_operation +dqxor793 xor 1000 -Inf -> NaN Invalid_operation +dqxor794 xor Inf -Inf -> NaN Invalid_operation + +dqxor800 xor Inf -Inf -> NaN Invalid_operation +dqxor801 xor Inf -1000 -> NaN Invalid_operation +dqxor802 xor Inf -1 -> NaN Invalid_operation +dqxor803 xor Inf -0 -> NaN Invalid_operation +dqxor804 xor Inf 0 -> NaN Invalid_operation +dqxor805 xor Inf 1 -> NaN Invalid_operation +dqxor806 xor Inf 1000 -> NaN Invalid_operation +dqxor807 xor Inf Inf -> NaN Invalid_operation +dqxor808 xor -1000 Inf -> NaN Invalid_operation +dqxor809 xor -Inf Inf -> NaN Invalid_operation +dqxor810 xor -1 Inf -> NaN Invalid_operation +dqxor811 xor -0 Inf -> NaN Invalid_operation +dqxor812 xor 0 Inf -> NaN Invalid_operation +dqxor813 xor 1 Inf -> NaN Invalid_operation +dqxor814 xor 1000 Inf -> NaN Invalid_operation +dqxor815 xor Inf Inf -> NaN Invalid_operation + +dqxor821 xor NaN -Inf -> NaN Invalid_operation +dqxor822 xor NaN -1000 -> NaN Invalid_operation +dqxor823 xor NaN -1 -> NaN Invalid_operation +dqxor824 xor NaN -0 -> NaN Invalid_operation +dqxor825 xor NaN 0 -> NaN Invalid_operation +dqxor826 xor NaN 1 -> NaN Invalid_operation +dqxor827 xor NaN 1000 -> NaN Invalid_operation +dqxor828 xor NaN Inf -> NaN Invalid_operation +dqxor829 xor NaN NaN -> NaN Invalid_operation +dqxor830 xor -Inf NaN -> NaN Invalid_operation +dqxor831 xor -1000 NaN -> NaN Invalid_operation +dqxor832 xor -1 NaN -> NaN Invalid_operation +dqxor833 xor -0 NaN -> NaN Invalid_operation +dqxor834 xor 0 NaN -> NaN Invalid_operation +dqxor835 xor 1 NaN -> NaN Invalid_operation +dqxor836 xor 1000 NaN -> NaN Invalid_operation +dqxor837 xor Inf NaN -> NaN Invalid_operation + +dqxor841 xor sNaN -Inf -> NaN Invalid_operation +dqxor842 xor sNaN -1000 -> NaN Invalid_operation +dqxor843 xor sNaN -1 -> NaN Invalid_operation +dqxor844 xor sNaN -0 -> NaN Invalid_operation +dqxor845 xor sNaN 0 -> NaN Invalid_operation +dqxor846 xor sNaN 1 -> NaN Invalid_operation +dqxor847 xor sNaN 1000 -> NaN Invalid_operation +dqxor848 xor sNaN NaN -> NaN Invalid_operation +dqxor849 xor sNaN sNaN -> NaN Invalid_operation +dqxor850 xor NaN sNaN -> NaN Invalid_operation +dqxor851 xor -Inf sNaN -> NaN Invalid_operation +dqxor852 xor -1000 sNaN -> NaN Invalid_operation +dqxor853 xor -1 sNaN -> NaN Invalid_operation +dqxor854 xor -0 sNaN -> NaN Invalid_operation +dqxor855 xor 0 sNaN -> NaN Invalid_operation +dqxor856 xor 1 sNaN -> NaN Invalid_operation +dqxor857 xor 1000 sNaN -> NaN Invalid_operation +dqxor858 xor Inf sNaN -> NaN Invalid_operation +dqxor859 xor NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +dqxor861 xor NaN1 -Inf -> NaN Invalid_operation +dqxor862 xor +NaN2 -1000 -> NaN Invalid_operation +dqxor863 xor NaN3 1000 -> NaN Invalid_operation +dqxor864 xor NaN4 Inf -> NaN Invalid_operation +dqxor865 xor NaN5 +NaN6 -> NaN Invalid_operation +dqxor866 xor -Inf NaN7 -> NaN Invalid_operation +dqxor867 xor -1000 NaN8 -> NaN Invalid_operation +dqxor868 xor 1000 NaN9 -> NaN Invalid_operation +dqxor869 xor Inf +NaN10 -> NaN Invalid_operation +dqxor871 xor sNaN11 -Inf -> NaN Invalid_operation +dqxor872 xor sNaN12 -1000 -> NaN Invalid_operation +dqxor873 xor sNaN13 1000 -> NaN Invalid_operation +dqxor874 xor sNaN14 NaN17 -> NaN Invalid_operation +dqxor875 xor sNaN15 sNaN18 -> NaN Invalid_operation +dqxor876 xor NaN16 sNaN19 -> NaN Invalid_operation +dqxor877 xor -Inf +sNaN20 -> NaN Invalid_operation +dqxor878 xor -1000 sNaN21 -> NaN Invalid_operation +dqxor879 xor 1000 sNaN22 -> NaN Invalid_operation +dqxor880 xor Inf sNaN23 -> NaN Invalid_operation +dqxor881 xor +NaN25 +sNaN24 -> NaN Invalid_operation +dqxor882 xor -NaN26 NaN28 -> NaN Invalid_operation +dqxor883 xor -sNaN27 sNaN29 -> NaN Invalid_operation +dqxor884 xor 1000 -NaN30 -> NaN Invalid_operation +dqxor885 xor 1000 -sNaN31 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/dsBase.decTest b/Lib/test/decimaltestdata/dsBase.decTest index 8ac45fc..5e5e5a5 100644 --- a/Lib/test/decimaltestdata/dsBase.decTest +++ b/Lib/test/decimaltestdata/dsBase.decTest @@ -1,1062 +1,1062 @@ ------------------------------------------------------------------------- --- dsBase.decTest -- base decSingle <--> string conversions -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This file tests base conversions from string to a decimal number --- and back to a string (in Scientific form) - --- Note that unlike other operations the operand is subject to rounding --- to conform to emax and precision settings (that is, numbers will --- conform to rules and exponent will be in permitted range). The --- 'left hand side', therefore, may have numbers that cannot be --- represented in a decSingle. Some testcases go to the limit of the --- next-wider format, and hence these testcases may also be used to --- test narrowing and widening operations. - -extended: 1 -clamp: 1 -precision: 7 -maxExponent: 96 -minExponent: -95 -rounding: half_even - -dsbas001 toSci 0 -> 0 -dsbas002 toSci 1 -> 1 -dsbas003 toSci 1.0 -> 1.0 -dsbas004 toSci 1.00 -> 1.00 -dsbas005 toSci 10 -> 10 -dsbas006 toSci 1000 -> 1000 -dsbas007 toSci 10.0 -> 10.0 -dsbas008 toSci 10.1 -> 10.1 -dsbas009 toSci 10.4 -> 10.4 -dsbas010 toSci 10.5 -> 10.5 -dsbas011 toSci 10.6 -> 10.6 -dsbas012 toSci 10.9 -> 10.9 -dsbas013 toSci 11.0 -> 11.0 -dsbas014 toSci 1.234 -> 1.234 -dsbas015 toSci 0.123 -> 0.123 -dsbas016 toSci 0.012 -> 0.012 -dsbas017 toSci -0 -> -0 -dsbas018 toSci -0.0 -> -0.0 -dsbas019 toSci -00.00 -> -0.00 - -dsbas021 toSci -1 -> -1 -dsbas022 toSci -1.0 -> -1.0 -dsbas023 toSci -0.1 -> -0.1 -dsbas024 toSci -9.1 -> -9.1 -dsbas025 toSci -9.11 -> -9.11 -dsbas026 toSci -9.119 -> -9.119 -dsbas027 toSci -9.999 -> -9.999 - -dsbas030 toSci '1234.567' -> '1234.567' -dsbas031 toSci '1234.000' -> '1234.000' -dsbas032 toSci '1234912' -> '1234912' -dsbas033 toSci '0.00001234567' -> '0.00001234567' -dsbas034 toSci '0.000001234567' -> '0.000001234567' -dsbas035 toSci '0.0000001234567' -> '1.234567E-7' -dsbas036 toSci '0.00000001234567' -> '1.234567E-8' - -dsbas037 toSci '0.1234564' -> '0.1234564' -dsbas038 toSci '0.1234565' -> '0.1234565' - --- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax) -dsbsn001 toSci -9.999999E+96 -> -9.999999E+96 -dsbsn002 toSci -1E-95 -> -1E-95 -dsbsn003 toSci -1E-101 -> -1E-101 Subnormal -dsbsn004 toSci -0 -> -0 -dsbsn005 toSci +0 -> 0 -dsbsn006 toSci +1E-101 -> 1E-101 Subnormal -dsbsn007 toSci +1E-95 -> 1E-95 -dsbsn008 toSci +9.999999E+96 -> 9.999999E+96 - --- String [many more examples are implicitly tested elsewhere] --- strings without E cannot generate E in result -dsbas040 toSci "12" -> '12' -dsbas041 toSci "-76" -> '-76' -dsbas042 toSci "12.76" -> '12.76' -dsbas043 toSci "+12.76" -> '12.76' -dsbas044 toSci "012.76" -> '12.76' -dsbas045 toSci "+0.003" -> '0.003' -dsbas046 toSci "17." -> '17' -dsbas047 toSci ".5" -> '0.5' -dsbas048 toSci "044" -> '44' -dsbas049 toSci "0044" -> '44' -dsbas050 toSci "0.0005" -> '0.0005' -dsbas051 toSci "00.00005" -> '0.00005' -dsbas052 toSci "0.000005" -> '0.000005' -dsbas053 toSci "0.0000050" -> '0.0000050' -dsbas054 toSci "0.0000005" -> '5E-7' -dsbas055 toSci "0.00000005" -> '5E-8' -dsbas056 toSci "12678.54" -> '12678.54' -dsbas057 toSci "2678.543" -> '2678.543' -dsbas058 toSci "345678.5" -> '345678.5' -dsbas059 toSci "0678.5432" -> '678.5432' -dsbas060 toSci "678.5432" -> '678.5432' -dsbas061 toSci "+678.5432" -> '678.5432' -dsbas062 toSci "+0678.5432" -> '678.5432' -dsbas063 toSci "+00678.5432" -> '678.5432' -dsbas064 toSci "-678.5432" -> '-678.5432' -dsbas065 toSci "-0678.5432" -> '-678.5432' -dsbas066 toSci "-00678.5432" -> '-678.5432' --- examples -dsbas067 toSci "5E-6" -> '0.000005' -dsbas068 toSci "50E-7" -> '0.0000050' -dsbas069 toSci "5E-7" -> '5E-7' - --- [No exotics as no Unicode] - --- rounded with dots in all (including edge) places -dsbas071 toSci .1234567890123456 -> 0.1234568 Inexact Rounded -dsbas072 toSci 1.234567890123456 -> 1.234568 Inexact Rounded -dsbas073 toSci 12.34567890123456 -> 12.34568 Inexact Rounded -dsbas074 toSci 123.4567890123456 -> 123.4568 Inexact Rounded -dsbas075 toSci 1234.567890123456 -> 1234.568 Inexact Rounded -dsbas076 toSci 12345.67890123456 -> 12345.68 Inexact Rounded -dsbas077 toSci 123456.7890123456 -> 123456.8 Inexact Rounded -dsbas078 toSci 1234567.890123456 -> 1234568 Inexact Rounded -dsbas079 toSci 12345678.90123456 -> 1.234568E+7 Inexact Rounded -dsbas080 toSci 123456789.0123456 -> 1.234568E+8 Inexact Rounded -dsbas081 toSci 1234567890.123456 -> 1.234568E+9 Inexact Rounded -dsbas082 toSci 12345678901.23456 -> 1.234568E+10 Inexact Rounded -dsbas083 toSci 123456789012.3456 -> 1.234568E+11 Inexact Rounded -dsbas084 toSci 1234567890123.456 -> 1.234568E+12 Inexact Rounded -dsbas085 toSci 12345678901234.56 -> 1.234568E+13 Inexact Rounded -dsbas086 toSci 123456789012345.6 -> 1.234568E+14 Inexact Rounded -dsbas087 toSci 1234567890123456. -> 1.234568E+15 Inexact Rounded -dsbas088 toSci 1234567890123456 -> 1.234568E+15 Inexact Rounded - --- Numbers with E -dsbas130 toSci "0.000E-1" -> '0.0000' -dsbas131 toSci "0.000E-2" -> '0.00000' -dsbas132 toSci "0.000E-3" -> '0.000000' -dsbas133 toSci "0.000E-4" -> '0E-7' -dsbas134 toSci "0.00E-2" -> '0.0000' -dsbas135 toSci "0.00E-3" -> '0.00000' -dsbas136 toSci "0.00E-4" -> '0.000000' -dsbas137 toSci "0.00E-5" -> '0E-7' -dsbas138 toSci "+0E+9" -> '0E+9' -dsbas139 toSci "-0E+9" -> '-0E+9' -dsbas140 toSci "1E+9" -> '1E+9' -dsbas141 toSci "1e+09" -> '1E+9' -dsbas142 toSci "1E+90" -> '1E+90' -dsbas143 toSci "+1E+009" -> '1E+9' -dsbas144 toSci "0E+9" -> '0E+9' -dsbas145 toSci "1E+9" -> '1E+9' -dsbas146 toSci "1E+09" -> '1E+9' -dsbas147 toSci "1e+90" -> '1E+90' -dsbas148 toSci "1E+009" -> '1E+9' -dsbas149 toSci "000E+9" -> '0E+9' -dsbas150 toSci "1E9" -> '1E+9' -dsbas151 toSci "1e09" -> '1E+9' -dsbas152 toSci "1E90" -> '1E+90' -dsbas153 toSci "1E009" -> '1E+9' -dsbas154 toSci "0E9" -> '0E+9' -dsbas155 toSci "0.000e+0" -> '0.000' -dsbas156 toSci "0.000E-1" -> '0.0000' -dsbas157 toSci "4E+9" -> '4E+9' -dsbas158 toSci "44E+9" -> '4.4E+10' -dsbas159 toSci "0.73e-7" -> '7.3E-8' -dsbas160 toSci "00E+9" -> '0E+9' -dsbas161 toSci "00E-9" -> '0E-9' -dsbas162 toSci "10E+9" -> '1.0E+10' -dsbas163 toSci "10E+09" -> '1.0E+10' -dsbas164 toSci "10e+90" -> '1.0E+91' -dsbas165 toSci "10E+009" -> '1.0E+10' -dsbas166 toSci "100e+9" -> '1.00E+11' -dsbas167 toSci "100e+09" -> '1.00E+11' -dsbas168 toSci "100E+90" -> '1.00E+92' -dsbas169 toSci "100e+009" -> '1.00E+11' - -dsbas170 toSci "1.265" -> '1.265' -dsbas171 toSci "1.265E-20" -> '1.265E-20' -dsbas172 toSci "1.265E-8" -> '1.265E-8' -dsbas173 toSci "1.265E-4" -> '0.0001265' -dsbas174 toSci "1.265E-3" -> '0.001265' -dsbas175 toSci "1.265E-2" -> '0.01265' -dsbas176 toSci "1.265E-1" -> '0.1265' -dsbas177 toSci "1.265E-0" -> '1.265' -dsbas178 toSci "1.265E+1" -> '12.65' -dsbas179 toSci "1.265E+2" -> '126.5' -dsbas180 toSci "1.265E+3" -> '1265' -dsbas181 toSci "1.265E+4" -> '1.265E+4' -dsbas182 toSci "1.265E+8" -> '1.265E+8' -dsbas183 toSci "1.265E+20" -> '1.265E+20' - -dsbas190 toSci "12.65" -> '12.65' -dsbas191 toSci "12.65E-20" -> '1.265E-19' -dsbas192 toSci "12.65E-8" -> '1.265E-7' -dsbas193 toSci "12.65E-4" -> '0.001265' -dsbas194 toSci "12.65E-3" -> '0.01265' -dsbas195 toSci "12.65E-2" -> '0.1265' -dsbas196 toSci "12.65E-1" -> '1.265' -dsbas197 toSci "12.65E-0" -> '12.65' -dsbas198 toSci "12.65E+1" -> '126.5' -dsbas199 toSci "12.65E+2" -> '1265' -dsbas200 toSci "12.65E+3" -> '1.265E+4' -dsbas201 toSci "12.65E+4" -> '1.265E+5' -dsbas202 toSci "12.65E+8" -> '1.265E+9' -dsbas203 toSci "12.65E+20" -> '1.265E+21' - -dsbas210 toSci "126.5" -> '126.5' -dsbas211 toSci "126.5E-20" -> '1.265E-18' -dsbas212 toSci "126.5E-8" -> '0.000001265' -dsbas213 toSci "126.5E-4" -> '0.01265' -dsbas214 toSci "126.5E-3" -> '0.1265' -dsbas215 toSci "126.5E-2" -> '1.265' -dsbas216 toSci "126.5E-1" -> '12.65' -dsbas217 toSci "126.5E-0" -> '126.5' -dsbas218 toSci "126.5E+1" -> '1265' -dsbas219 toSci "126.5E+2" -> '1.265E+4' -dsbas220 toSci "126.5E+3" -> '1.265E+5' -dsbas221 toSci "126.5E+4" -> '1.265E+6' -dsbas222 toSci "126.5E+8" -> '1.265E+10' -dsbas223 toSci "126.5E+20" -> '1.265E+22' - -dsbas230 toSci "1265" -> '1265' -dsbas231 toSci "1265E-20" -> '1.265E-17' -dsbas232 toSci "1265E-8" -> '0.00001265' -dsbas233 toSci "1265E-4" -> '0.1265' -dsbas234 toSci "1265E-3" -> '1.265' -dsbas235 toSci "1265E-2" -> '12.65' -dsbas236 toSci "1265E-1" -> '126.5' -dsbas237 toSci "1265E-0" -> '1265' -dsbas238 toSci "1265E+1" -> '1.265E+4' -dsbas239 toSci "1265E+2" -> '1.265E+5' -dsbas240 toSci "1265E+3" -> '1.265E+6' -dsbas241 toSci "1265E+4" -> '1.265E+7' -dsbas242 toSci "1265E+8" -> '1.265E+11' -dsbas243 toSci "1265E+20" -> '1.265E+23' - -dsbas250 toSci "0.1265" -> '0.1265' -dsbas251 toSci "0.1265E-20" -> '1.265E-21' -dsbas252 toSci "0.1265E-8" -> '1.265E-9' -dsbas253 toSci "0.1265E-4" -> '0.00001265' -dsbas254 toSci "0.1265E-3" -> '0.0001265' -dsbas255 toSci "0.1265E-2" -> '0.001265' -dsbas256 toSci "0.1265E-1" -> '0.01265' -dsbas257 toSci "0.1265E-0" -> '0.1265' -dsbas258 toSci "0.1265E+1" -> '1.265' -dsbas259 toSci "0.1265E+2" -> '12.65' -dsbas260 toSci "0.1265E+3" -> '126.5' -dsbas261 toSci "0.1265E+4" -> '1265' -dsbas262 toSci "0.1265E+8" -> '1.265E+7' -dsbas263 toSci "0.1265E+20" -> '1.265E+19' - --- some more negative zeros [systematic tests below] -dsbas290 toSci "-0.000E-1" -> '-0.0000' -dsbas291 toSci "-0.000E-2" -> '-0.00000' -dsbas292 toSci "-0.000E-3" -> '-0.000000' -dsbas293 toSci "-0.000E-4" -> '-0E-7' -dsbas294 toSci "-0.00E-2" -> '-0.0000' -dsbas295 toSci "-0.00E-3" -> '-0.00000' -dsbas296 toSci "-0.0E-2" -> '-0.000' -dsbas297 toSci "-0.0E-3" -> '-0.0000' -dsbas298 toSci "-0E-2" -> '-0.00' -dsbas299 toSci "-0E-3" -> '-0.000' - --- Engineering notation tests -dsbas301 toSci 10e12 -> 1.0E+13 -dsbas302 toEng 10e12 -> 10E+12 -dsbas303 toSci 10e11 -> 1.0E+12 -dsbas304 toEng 10e11 -> 1.0E+12 -dsbas305 toSci 10e10 -> 1.0E+11 -dsbas306 toEng 10e10 -> 100E+9 -dsbas307 toSci 10e9 -> 1.0E+10 -dsbas308 toEng 10e9 -> 10E+9 -dsbas309 toSci 10e8 -> 1.0E+9 -dsbas310 toEng 10e8 -> 1.0E+9 -dsbas311 toSci 10e7 -> 1.0E+8 -dsbas312 toEng 10e7 -> 100E+6 -dsbas313 toSci 10e6 -> 1.0E+7 -dsbas314 toEng 10e6 -> 10E+6 -dsbas315 toSci 10e5 -> 1.0E+6 -dsbas316 toEng 10e5 -> 1.0E+6 -dsbas317 toSci 10e4 -> 1.0E+5 -dsbas318 toEng 10e4 -> 100E+3 -dsbas319 toSci 10e3 -> 1.0E+4 -dsbas320 toEng 10e3 -> 10E+3 -dsbas321 toSci 10e2 -> 1.0E+3 -dsbas322 toEng 10e2 -> 1.0E+3 -dsbas323 toSci 10e1 -> 1.0E+2 -dsbas324 toEng 10e1 -> 100 -dsbas325 toSci 10e0 -> 10 -dsbas326 toEng 10e0 -> 10 -dsbas327 toSci 10e-1 -> 1.0 -dsbas328 toEng 10e-1 -> 1.0 -dsbas329 toSci 10e-2 -> 0.10 -dsbas330 toEng 10e-2 -> 0.10 -dsbas331 toSci 10e-3 -> 0.010 -dsbas332 toEng 10e-3 -> 0.010 -dsbas333 toSci 10e-4 -> 0.0010 -dsbas334 toEng 10e-4 -> 0.0010 -dsbas335 toSci 10e-5 -> 0.00010 -dsbas336 toEng 10e-5 -> 0.00010 -dsbas337 toSci 10e-6 -> 0.000010 -dsbas338 toEng 10e-6 -> 0.000010 -dsbas339 toSci 10e-7 -> 0.0000010 -dsbas340 toEng 10e-7 -> 0.0000010 -dsbas341 toSci 10e-8 -> 1.0E-7 -dsbas342 toEng 10e-8 -> 100E-9 -dsbas343 toSci 10e-9 -> 1.0E-8 -dsbas344 toEng 10e-9 -> 10E-9 -dsbas345 toSci 10e-10 -> 1.0E-9 -dsbas346 toEng 10e-10 -> 1.0E-9 -dsbas347 toSci 10e-11 -> 1.0E-10 -dsbas348 toEng 10e-11 -> 100E-12 -dsbas349 toSci 10e-12 -> 1.0E-11 -dsbas350 toEng 10e-12 -> 10E-12 -dsbas351 toSci 10e-13 -> 1.0E-12 -dsbas352 toEng 10e-13 -> 1.0E-12 - -dsbas361 toSci 7E12 -> 7E+12 -dsbas362 toEng 7E12 -> 7E+12 -dsbas363 toSci 7E11 -> 7E+11 -dsbas364 toEng 7E11 -> 700E+9 -dsbas365 toSci 7E10 -> 7E+10 -dsbas366 toEng 7E10 -> 70E+9 -dsbas367 toSci 7E9 -> 7E+9 -dsbas368 toEng 7E9 -> 7E+9 -dsbas369 toSci 7E8 -> 7E+8 -dsbas370 toEng 7E8 -> 700E+6 -dsbas371 toSci 7E7 -> 7E+7 -dsbas372 toEng 7E7 -> 70E+6 -dsbas373 toSci 7E6 -> 7E+6 -dsbas374 toEng 7E6 -> 7E+6 -dsbas375 toSci 7E5 -> 7E+5 -dsbas376 toEng 7E5 -> 700E+3 -dsbas377 toSci 7E4 -> 7E+4 -dsbas378 toEng 7E4 -> 70E+3 -dsbas379 toSci 7E3 -> 7E+3 -dsbas380 toEng 7E3 -> 7E+3 -dsbas381 toSci 7E2 -> 7E+2 -dsbas382 toEng 7E2 -> 700 -dsbas383 toSci 7E1 -> 7E+1 -dsbas384 toEng 7E1 -> 70 -dsbas385 toSci 7E0 -> 7 -dsbas386 toEng 7E0 -> 7 -dsbas387 toSci 7E-1 -> 0.7 -dsbas388 toEng 7E-1 -> 0.7 -dsbas389 toSci 7E-2 -> 0.07 -dsbas390 toEng 7E-2 -> 0.07 -dsbas391 toSci 7E-3 -> 0.007 -dsbas392 toEng 7E-3 -> 0.007 -dsbas393 toSci 7E-4 -> 0.0007 -dsbas394 toEng 7E-4 -> 0.0007 -dsbas395 toSci 7E-5 -> 0.00007 -dsbas396 toEng 7E-5 -> 0.00007 -dsbas397 toSci 7E-6 -> 0.000007 -dsbas398 toEng 7E-6 -> 0.000007 -dsbas399 toSci 7E-7 -> 7E-7 -dsbas400 toEng 7E-7 -> 700E-9 -dsbas401 toSci 7E-8 -> 7E-8 -dsbas402 toEng 7E-8 -> 70E-9 -dsbas403 toSci 7E-9 -> 7E-9 -dsbas404 toEng 7E-9 -> 7E-9 -dsbas405 toSci 7E-10 -> 7E-10 -dsbas406 toEng 7E-10 -> 700E-12 -dsbas407 toSci 7E-11 -> 7E-11 -dsbas408 toEng 7E-11 -> 70E-12 -dsbas409 toSci 7E-12 -> 7E-12 -dsbas410 toEng 7E-12 -> 7E-12 -dsbas411 toSci 7E-13 -> 7E-13 -dsbas412 toEng 7E-13 -> 700E-15 - --- Exacts remain exact up to precision .. -dsbas420 toSci 100 -> 100 -dsbas422 toSci 1000 -> 1000 -dsbas424 toSci 999.9 -> 999.9 -dsbas426 toSci 1000.0 -> 1000.0 -dsbas428 toSci 1000.1 -> 1000.1 -dsbas430 toSci 10000 -> 10000 -dsbas432 toSci 1000 -> 1000 -dsbas434 toSci 10000 -> 10000 -dsbas436 toSci 100000 -> 100000 -dsbas438 toSci 1000000 -> 1000000 -dsbas440 toSci 10000000 -> 1.000000E+7 Rounded -dsbas442 toSci 10000000 -> 1.000000E+7 Rounded -dsbas444 toSci 10000003 -> 1.000000E+7 Rounded Inexact -dsbas446 toSci 10000005 -> 1.000000E+7 Rounded Inexact -dsbas448 toSci 100000050 -> 1.000000E+8 Rounded Inexact -dsbas450 toSci 10000009 -> 1.000001E+7 Rounded Inexact -dsbas452 toSci 100000000 -> 1.000000E+8 Rounded -dsbas454 toSci 100000003 -> 1.000000E+8 Rounded Inexact -dsbas456 toSci 100000005 -> 1.000000E+8 Rounded Inexact -dsbas458 toSci 100000009 -> 1.000000E+8 Rounded Inexact -dsbas460 toSci 1000000000 -> 1.000000E+9 Rounded -dsbas462 toSci 1000000300 -> 1.000000E+9 Rounded Inexact -dsbas464 toSci 1000000500 -> 1.000000E+9 Rounded Inexact -dsbas466 toSci 1000000900 -> 1.000001E+9 Rounded Inexact -dsbas468 toSci 10000000000 -> 1.000000E+10 Rounded -dsbas470 toSci 10000003000 -> 1.000000E+10 Rounded Inexact -dsbas472 toSci 10000005000 -> 1.000000E+10 Rounded Inexact -dsbas474 toSci 10000009000 -> 1.000001E+10 Rounded Inexact - --- check rounding modes heeded -rounding: ceiling -dsbsr401 toSci 1.1123450 -> 1.112345 Rounded -dsbsr402 toSci 1.11234549 -> 1.112346 Rounded Inexact -dsbsr403 toSci 1.11234550 -> 1.112346 Rounded Inexact -dsbsr404 toSci 1.11234551 -> 1.112346 Rounded Inexact -rounding: up -dsbsr405 toSci 1.1123450 -> 1.112345 Rounded -dsbsr406 toSci 1.11234549 -> 1.112346 Rounded Inexact -dsbsr407 toSci 1.11234550 -> 1.112346 Rounded Inexact -dsbsr408 toSci 1.11234551 -> 1.112346 Rounded Inexact -rounding: floor -dsbsr410 toSci 1.1123450 -> 1.112345 Rounded -dsbsr411 toSci 1.11234549 -> 1.112345 Rounded Inexact -dsbsr412 toSci 1.11234550 -> 1.112345 Rounded Inexact -dsbsr413 toSci 1.11234551 -> 1.112345 Rounded Inexact -rounding: half_down -dsbsr415 toSci 1.1123450 -> 1.112345 Rounded -dsbsr416 toSci 1.11234549 -> 1.112345 Rounded Inexact -dsbsr417 toSci 1.11234550 -> 1.112345 Rounded Inexact -dsbsr418 toSci 1.11234650 -> 1.112346 Rounded Inexact -dsbsr419 toSci 1.11234551 -> 1.112346 Rounded Inexact -rounding: half_even -dsbsr421 toSci 1.1123450 -> 1.112345 Rounded -dsbsr422 toSci 1.11234549 -> 1.112345 Rounded Inexact -dsbsr423 toSci 1.11234550 -> 1.112346 Rounded Inexact -dsbsr424 toSci 1.11234650 -> 1.112346 Rounded Inexact -dsbsr425 toSci 1.11234551 -> 1.112346 Rounded Inexact -rounding: down -dsbsr426 toSci 1.1123450 -> 1.112345 Rounded -dsbsr427 toSci 1.11234549 -> 1.112345 Rounded Inexact -dsbsr428 toSci 1.11234550 -> 1.112345 Rounded Inexact -dsbsr429 toSci 1.11234551 -> 1.112345 Rounded Inexact -rounding: half_up -dsbsr431 toSci 1.1123450 -> 1.112345 Rounded -dsbsr432 toSci 1.11234549 -> 1.112345 Rounded Inexact -dsbsr433 toSci 1.11234550 -> 1.112346 Rounded Inexact -dsbsr434 toSci 1.11234650 -> 1.112347 Rounded Inexact -dsbsr435 toSci 1.11234551 -> 1.112346 Rounded Inexact --- negatives -rounding: ceiling -dsbsr501 toSci -1.1123450 -> -1.112345 Rounded -dsbsr502 toSci -1.11234549 -> -1.112345 Rounded Inexact -dsbsr503 toSci -1.11234550 -> -1.112345 Rounded Inexact -dsbsr504 toSci -1.11234551 -> -1.112345 Rounded Inexact -rounding: up -dsbsr505 toSci -1.1123450 -> -1.112345 Rounded -dsbsr506 toSci -1.11234549 -> -1.112346 Rounded Inexact -dsbsr507 toSci -1.11234550 -> -1.112346 Rounded Inexact -dsbsr508 toSci -1.11234551 -> -1.112346 Rounded Inexact -rounding: floor -dsbsr510 toSci -1.1123450 -> -1.112345 Rounded -dsbsr511 toSci -1.11234549 -> -1.112346 Rounded Inexact -dsbsr512 toSci -1.11234550 -> -1.112346 Rounded Inexact -dsbsr513 toSci -1.11234551 -> -1.112346 Rounded Inexact -rounding: half_down -dsbsr515 toSci -1.1123450 -> -1.112345 Rounded -dsbsr516 toSci -1.11234549 -> -1.112345 Rounded Inexact -dsbsr517 toSci -1.11234550 -> -1.112345 Rounded Inexact -dsbsr518 toSci -1.11234650 -> -1.112346 Rounded Inexact -dsbsr519 toSci -1.11234551 -> -1.112346 Rounded Inexact -rounding: half_even -dsbsr521 toSci -1.1123450 -> -1.112345 Rounded -dsbsr522 toSci -1.11234549 -> -1.112345 Rounded Inexact -dsbsr523 toSci -1.11234550 -> -1.112346 Rounded Inexact -dsbsr524 toSci -1.11234650 -> -1.112346 Rounded Inexact -dsbsr525 toSci -1.11234551 -> -1.112346 Rounded Inexact -rounding: down -dsbsr526 toSci -1.1123450 -> -1.112345 Rounded -dsbsr527 toSci -1.11234549 -> -1.112345 Rounded Inexact -dsbsr528 toSci -1.11234550 -> -1.112345 Rounded Inexact -dsbsr529 toSci -1.11234551 -> -1.112345 Rounded Inexact -rounding: half_up -dsbsr531 toSci -1.1123450 -> -1.112345 Rounded -dsbsr532 toSci -1.11234549 -> -1.112345 Rounded Inexact -dsbsr533 toSci -1.11234550 -> -1.112346 Rounded Inexact -dsbsr534 toSci -1.11234650 -> -1.112347 Rounded Inexact -dsbsr535 toSci -1.11234551 -> -1.112346 Rounded Inexact - -rounding: half_even - --- The 'baddies' tests from DiagBigDecimal, plus some new ones -dsbas500 toSci '1..2' -> NaN Conversion_syntax -dsbas501 toSci '.' -> NaN Conversion_syntax -dsbas502 toSci '..' -> NaN Conversion_syntax -dsbas503 toSci '++1' -> NaN Conversion_syntax -dsbas504 toSci '--1' -> NaN Conversion_syntax -dsbas505 toSci '-+1' -> NaN Conversion_syntax -dsbas506 toSci '+-1' -> NaN Conversion_syntax -dsbas507 toSci '12e' -> NaN Conversion_syntax -dsbas508 toSci '12e++' -> NaN Conversion_syntax -dsbas509 toSci '12f4' -> NaN Conversion_syntax -dsbas510 toSci ' +1' -> NaN Conversion_syntax -dsbas511 toSci '+ 1' -> NaN Conversion_syntax -dsbas512 toSci '12 ' -> NaN Conversion_syntax -dsbas513 toSci ' + 1' -> NaN Conversion_syntax -dsbas514 toSci ' - 1 ' -> NaN Conversion_syntax -dsbas515 toSci 'x' -> NaN Conversion_syntax -dsbas516 toSci '-1-' -> NaN Conversion_syntax -dsbas517 toSci '12-' -> NaN Conversion_syntax -dsbas518 toSci '3+' -> NaN Conversion_syntax -dsbas519 toSci '' -> NaN Conversion_syntax -dsbas520 toSci '1e-' -> NaN Conversion_syntax -dsbas521 toSci '7e99999a' -> NaN Conversion_syntax -dsbas522 toSci '7e123567890x' -> NaN Conversion_syntax -dsbas523 toSci '7e12356789012x' -> NaN Conversion_syntax -dsbas524 toSci '' -> NaN Conversion_syntax -dsbas525 toSci 'e100' -> NaN Conversion_syntax -dsbas526 toSci '\u0e5a' -> NaN Conversion_syntax -dsbas527 toSci '\u0b65' -> NaN Conversion_syntax -dsbas528 toSci '123,65' -> NaN Conversion_syntax -dsbas529 toSci '1.34.5' -> NaN Conversion_syntax -dsbas530 toSci '.123.5' -> NaN Conversion_syntax -dsbas531 toSci '01.35.' -> NaN Conversion_syntax -dsbas532 toSci '01.35-' -> NaN Conversion_syntax -dsbas533 toSci '0000..' -> NaN Conversion_syntax -dsbas534 toSci '.0000.' -> NaN Conversion_syntax -dsbas535 toSci '00..00' -> NaN Conversion_syntax -dsbas536 toSci '111e*123' -> NaN Conversion_syntax -dsbas537 toSci '111e123-' -> NaN Conversion_syntax -dsbas538 toSci '111e+12+' -> NaN Conversion_syntax -dsbas539 toSci '111e1-3-' -> NaN Conversion_syntax -dsbas540 toSci '111e1*23' -> NaN Conversion_syntax -dsbas541 toSci '111e1e+3' -> NaN Conversion_syntax -dsbas542 toSci '1e1.0' -> NaN Conversion_syntax -dsbas543 toSci '1e123e' -> NaN Conversion_syntax -dsbas544 toSci 'ten' -> NaN Conversion_syntax -dsbas545 toSci 'ONE' -> NaN Conversion_syntax -dsbas546 toSci '1e.1' -> NaN Conversion_syntax -dsbas547 toSci '1e1.' -> NaN Conversion_syntax -dsbas548 toSci '1ee' -> NaN Conversion_syntax -dsbas549 toSci 'e+1' -> NaN Conversion_syntax -dsbas550 toSci '1.23.4' -> NaN Conversion_syntax -dsbas551 toSci '1.2.1' -> NaN Conversion_syntax -dsbas552 toSci '1E+1.2' -> NaN Conversion_syntax -dsbas553 toSci '1E+1.2.3' -> NaN Conversion_syntax -dsbas554 toSci '1E++1' -> NaN Conversion_syntax -dsbas555 toSci '1E--1' -> NaN Conversion_syntax -dsbas556 toSci '1E+-1' -> NaN Conversion_syntax -dsbas557 toSci '1E-+1' -> NaN Conversion_syntax -dsbas558 toSci '1E''1' -> NaN Conversion_syntax -dsbas559 toSci "1E""1" -> NaN Conversion_syntax -dsbas560 toSci "1E""""" -> NaN Conversion_syntax --- Near-specials -dsbas561 toSci "qNaN" -> NaN Conversion_syntax -dsbas562 toSci "NaNq" -> NaN Conversion_syntax -dsbas563 toSci "NaNs" -> NaN Conversion_syntax -dsbas564 toSci "Infi" -> NaN Conversion_syntax -dsbas565 toSci "Infin" -> NaN Conversion_syntax -dsbas566 toSci "Infini" -> NaN Conversion_syntax -dsbas567 toSci "Infinit" -> NaN Conversion_syntax -dsbas568 toSci "-Infinit" -> NaN Conversion_syntax -dsbas569 toSci "0Inf" -> NaN Conversion_syntax -dsbas570 toSci "9Inf" -> NaN Conversion_syntax -dsbas571 toSci "-0Inf" -> NaN Conversion_syntax -dsbas572 toSci "-9Inf" -> NaN Conversion_syntax -dsbas573 toSci "-sNa" -> NaN Conversion_syntax -dsbas574 toSci "xNaN" -> NaN Conversion_syntax -dsbas575 toSci "0sNaN" -> NaN Conversion_syntax - --- some baddies with dots and Es and dots and specials -dsbas576 toSci 'e+1' -> NaN Conversion_syntax -dsbas577 toSci '.e+1' -> NaN Conversion_syntax -dsbas578 toSci '+.e+1' -> NaN Conversion_syntax -dsbas579 toSci '-.e+' -> NaN Conversion_syntax -dsbas580 toSci '-.e' -> NaN Conversion_syntax -dsbas581 toSci 'E+1' -> NaN Conversion_syntax -dsbas582 toSci '.E+1' -> NaN Conversion_syntax -dsbas583 toSci '+.E+1' -> NaN Conversion_syntax -dsbas584 toSci '-.E+' -> NaN Conversion_syntax -dsbas585 toSci '-.E' -> NaN Conversion_syntax - -dsbas586 toSci '.NaN' -> NaN Conversion_syntax -dsbas587 toSci '-.NaN' -> NaN Conversion_syntax -dsbas588 toSci '+.sNaN' -> NaN Conversion_syntax -dsbas589 toSci '+.Inf' -> NaN Conversion_syntax -dsbas590 toSci '.Infinity' -> NaN Conversion_syntax - --- Zeros -dsbas601 toSci 0.000000000 -> 0E-9 -dsbas602 toSci 0.00000000 -> 0E-8 -dsbas603 toSci 0.0000000 -> 0E-7 -dsbas604 toSci 0.000000 -> 0.000000 -dsbas605 toSci 0.00000 -> 0.00000 -dsbas606 toSci 0.0000 -> 0.0000 -dsbas607 toSci 0.000 -> 0.000 -dsbas608 toSci 0.00 -> 0.00 -dsbas609 toSci 0.0 -> 0.0 -dsbas610 toSci .0 -> 0.0 -dsbas611 toSci 0. -> 0 -dsbas612 toSci -.0 -> -0.0 -dsbas613 toSci -0. -> -0 -dsbas614 toSci -0.0 -> -0.0 -dsbas615 toSci -0.00 -> -0.00 -dsbas616 toSci -0.000 -> -0.000 -dsbas617 toSci -0.0000 -> -0.0000 -dsbas618 toSci -0.00000 -> -0.00000 -dsbas619 toSci -0.000000 -> -0.000000 -dsbas620 toSci -0.0000000 -> -0E-7 -dsbas621 toSci -0.00000000 -> -0E-8 -dsbas622 toSci -0.000000000 -> -0E-9 - -dsbas630 toSci 0.00E+0 -> 0.00 -dsbas631 toSci 0.00E+1 -> 0.0 -dsbas632 toSci 0.00E+2 -> 0 -dsbas633 toSci 0.00E+3 -> 0E+1 -dsbas634 toSci 0.00E+4 -> 0E+2 -dsbas635 toSci 0.00E+5 -> 0E+3 -dsbas636 toSci 0.00E+6 -> 0E+4 -dsbas637 toSci 0.00E+7 -> 0E+5 -dsbas638 toSci 0.00E+8 -> 0E+6 -dsbas639 toSci 0.00E+9 -> 0E+7 - -dsbas640 toSci 0.0E+0 -> 0.0 -dsbas641 toSci 0.0E+1 -> 0 -dsbas642 toSci 0.0E+2 -> 0E+1 -dsbas643 toSci 0.0E+3 -> 0E+2 -dsbas644 toSci 0.0E+4 -> 0E+3 -dsbas645 toSci 0.0E+5 -> 0E+4 -dsbas646 toSci 0.0E+6 -> 0E+5 -dsbas647 toSci 0.0E+7 -> 0E+6 -dsbas648 toSci 0.0E+8 -> 0E+7 -dsbas649 toSci 0.0E+9 -> 0E+8 - -dsbas650 toSci 0E+0 -> 0 -dsbas651 toSci 0E+1 -> 0E+1 -dsbas652 toSci 0E+2 -> 0E+2 -dsbas653 toSci 0E+3 -> 0E+3 -dsbas654 toSci 0E+4 -> 0E+4 -dsbas655 toSci 0E+5 -> 0E+5 -dsbas656 toSci 0E+6 -> 0E+6 -dsbas657 toSci 0E+7 -> 0E+7 -dsbas658 toSci 0E+8 -> 0E+8 -dsbas659 toSci 0E+9 -> 0E+9 - -dsbas660 toSci 0.0E-0 -> 0.0 -dsbas661 toSci 0.0E-1 -> 0.00 -dsbas662 toSci 0.0E-2 -> 0.000 -dsbas663 toSci 0.0E-3 -> 0.0000 -dsbas664 toSci 0.0E-4 -> 0.00000 -dsbas665 toSci 0.0E-5 -> 0.000000 -dsbas666 toSci 0.0E-6 -> 0E-7 -dsbas667 toSci 0.0E-7 -> 0E-8 -dsbas668 toSci 0.0E-8 -> 0E-9 -dsbas669 toSci 0.0E-9 -> 0E-10 - -dsbas670 toSci 0.00E-0 -> 0.00 -dsbas671 toSci 0.00E-1 -> 0.000 -dsbas672 toSci 0.00E-2 -> 0.0000 -dsbas673 toSci 0.00E-3 -> 0.00000 -dsbas674 toSci 0.00E-4 -> 0.000000 -dsbas675 toSci 0.00E-5 -> 0E-7 -dsbas676 toSci 0.00E-6 -> 0E-8 -dsbas677 toSci 0.00E-7 -> 0E-9 -dsbas678 toSci 0.00E-8 -> 0E-10 -dsbas679 toSci 0.00E-9 -> 0E-11 - -dsbas680 toSci 000000. -> 0 -dsbas681 toSci 00000. -> 0 -dsbas682 toSci 0000. -> 0 -dsbas683 toSci 000. -> 0 -dsbas684 toSci 00. -> 0 -dsbas685 toSci 0. -> 0 -dsbas686 toSci +00000. -> 0 -dsbas687 toSci -00000. -> -0 -dsbas688 toSci +0. -> 0 -dsbas689 toSci -0. -> -0 - --- Specials -dsbas700 toSci "NaN" -> NaN -dsbas701 toSci "nan" -> NaN -dsbas702 toSci "nAn" -> NaN -dsbas703 toSci "NAN" -> NaN -dsbas704 toSci "+NaN" -> NaN -dsbas705 toSci "+nan" -> NaN -dsbas706 toSci "+nAn" -> NaN -dsbas707 toSci "+NAN" -> NaN -dsbas708 toSci "-NaN" -> -NaN -dsbas709 toSci "-nan" -> -NaN -dsbas710 toSci "-nAn" -> -NaN -dsbas711 toSci "-NAN" -> -NaN -dsbas712 toSci 'NaN0' -> NaN -dsbas713 toSci 'NaN1' -> NaN1 -dsbas714 toSci 'NaN12' -> NaN12 -dsbas715 toSci 'NaN123' -> NaN123 -dsbas716 toSci 'NaN1234' -> NaN1234 -dsbas717 toSci 'NaN01' -> NaN1 -dsbas718 toSci 'NaN012' -> NaN12 -dsbas719 toSci 'NaN0123' -> NaN123 -dsbas720 toSci 'NaN01234' -> NaN1234 -dsbas721 toSci 'NaN001' -> NaN1 -dsbas722 toSci 'NaN0012' -> NaN12 -dsbas723 toSci 'NaN00123' -> NaN123 -dsbas724 toSci 'NaN001234' -> NaN1234 -dsbas725 toSci 'NaN1234567890123456' -> NaN Conversion_syntax -dsbas726 toSci 'NaN123e+1' -> NaN Conversion_syntax -dsbas727 toSci 'NaN12.45' -> NaN Conversion_syntax -dsbas728 toSci 'NaN-12' -> NaN Conversion_syntax -dsbas729 toSci 'NaN+12' -> NaN Conversion_syntax - -dsbas730 toSci "sNaN" -> sNaN -dsbas731 toSci "snan" -> sNaN -dsbas732 toSci "SnAn" -> sNaN -dsbas733 toSci "SNAN" -> sNaN -dsbas734 toSci "+sNaN" -> sNaN -dsbas735 toSci "+snan" -> sNaN -dsbas736 toSci "+SnAn" -> sNaN -dsbas737 toSci "+SNAN" -> sNaN -dsbas738 toSci "-sNaN" -> -sNaN -dsbas739 toSci "-snan" -> -sNaN -dsbas740 toSci "-SnAn" -> -sNaN -dsbas741 toSci "-SNAN" -> -sNaN -dsbas742 toSci 'sNaN0000' -> sNaN -dsbas743 toSci 'sNaN7' -> sNaN7 -dsbas744 toSci 'sNaN007234' -> sNaN7234 -dsbas745 toSci 'sNaN7234561234567890' -> NaN Conversion_syntax -dsbas746 toSci 'sNaN72.45' -> NaN Conversion_syntax -dsbas747 toSci 'sNaN-72' -> NaN Conversion_syntax - -dsbas748 toSci "Inf" -> Infinity -dsbas749 toSci "inf" -> Infinity -dsbas750 toSci "iNf" -> Infinity -dsbas751 toSci "INF" -> Infinity -dsbas752 toSci "+Inf" -> Infinity -dsbas753 toSci "+inf" -> Infinity -dsbas754 toSci "+iNf" -> Infinity -dsbas755 toSci "+INF" -> Infinity -dsbas756 toSci "-Inf" -> -Infinity -dsbas757 toSci "-inf" -> -Infinity -dsbas758 toSci "-iNf" -> -Infinity -dsbas759 toSci "-INF" -> -Infinity - -dsbas760 toSci "Infinity" -> Infinity -dsbas761 toSci "infinity" -> Infinity -dsbas762 toSci "iNfInItY" -> Infinity -dsbas763 toSci "INFINITY" -> Infinity -dsbas764 toSci "+Infinity" -> Infinity -dsbas765 toSci "+infinity" -> Infinity -dsbas766 toSci "+iNfInItY" -> Infinity -dsbas767 toSci "+INFINITY" -> Infinity -dsbas768 toSci "-Infinity" -> -Infinity -dsbas769 toSci "-infinity" -> -Infinity -dsbas770 toSci "-iNfInItY" -> -Infinity -dsbas771 toSci "-INFINITY" -> -Infinity - --- Specials and zeros for toEng -dsbast772 toEng "NaN" -> NaN -dsbast773 toEng "-Infinity" -> -Infinity -dsbast774 toEng "-sNaN" -> -sNaN -dsbast775 toEng "-NaN" -> -NaN -dsbast776 toEng "+Infinity" -> Infinity -dsbast778 toEng "+sNaN" -> sNaN -dsbast779 toEng "+NaN" -> NaN -dsbast780 toEng "INFINITY" -> Infinity -dsbast781 toEng "SNAN" -> sNaN -dsbast782 toEng "NAN" -> NaN -dsbast783 toEng "infinity" -> Infinity -dsbast784 toEng "snan" -> sNaN -dsbast785 toEng "nan" -> NaN -dsbast786 toEng "InFINITY" -> Infinity -dsbast787 toEng "SnAN" -> sNaN -dsbast788 toEng "nAN" -> NaN -dsbast789 toEng "iNfinity" -> Infinity -dsbast790 toEng "sNan" -> sNaN -dsbast791 toEng "Nan" -> NaN -dsbast792 toEng "Infinity" -> Infinity -dsbast793 toEng "sNaN" -> sNaN - --- Zero toEng, etc. -dsbast800 toEng 0e+1 -> "0.00E+3" -- doc example - -dsbast801 toEng 0.000000000 -> 0E-9 -dsbast802 toEng 0.00000000 -> 0.00E-6 -dsbast803 toEng 0.0000000 -> 0.0E-6 -dsbast804 toEng 0.000000 -> 0.000000 -dsbast805 toEng 0.00000 -> 0.00000 -dsbast806 toEng 0.0000 -> 0.0000 -dsbast807 toEng 0.000 -> 0.000 -dsbast808 toEng 0.00 -> 0.00 -dsbast809 toEng 0.0 -> 0.0 -dsbast810 toEng .0 -> 0.0 -dsbast811 toEng 0. -> 0 -dsbast812 toEng -.0 -> -0.0 -dsbast813 toEng -0. -> -0 -dsbast814 toEng -0.0 -> -0.0 -dsbast815 toEng -0.00 -> -0.00 -dsbast816 toEng -0.000 -> -0.000 -dsbast817 toEng -0.0000 -> -0.0000 -dsbast818 toEng -0.00000 -> -0.00000 -dsbast819 toEng -0.000000 -> -0.000000 -dsbast820 toEng -0.0000000 -> -0.0E-6 -dsbast821 toEng -0.00000000 -> -0.00E-6 -dsbast822 toEng -0.000000000 -> -0E-9 - -dsbast830 toEng 0.00E+0 -> 0.00 -dsbast831 toEng 0.00E+1 -> 0.0 -dsbast832 toEng 0.00E+2 -> 0 -dsbast833 toEng 0.00E+3 -> 0.00E+3 -dsbast834 toEng 0.00E+4 -> 0.0E+3 -dsbast835 toEng 0.00E+5 -> 0E+3 -dsbast836 toEng 0.00E+6 -> 0.00E+6 -dsbast837 toEng 0.00E+7 -> 0.0E+6 -dsbast838 toEng 0.00E+8 -> 0E+6 -dsbast839 toEng 0.00E+9 -> 0.00E+9 - -dsbast840 toEng 0.0E+0 -> 0.0 -dsbast841 toEng 0.0E+1 -> 0 -dsbast842 toEng 0.0E+2 -> 0.00E+3 -dsbast843 toEng 0.0E+3 -> 0.0E+3 -dsbast844 toEng 0.0E+4 -> 0E+3 -dsbast845 toEng 0.0E+5 -> 0.00E+6 -dsbast846 toEng 0.0E+6 -> 0.0E+6 -dsbast847 toEng 0.0E+7 -> 0E+6 -dsbast848 toEng 0.0E+8 -> 0.00E+9 -dsbast849 toEng 0.0E+9 -> 0.0E+9 - -dsbast850 toEng 0E+0 -> 0 -dsbast851 toEng 0E+1 -> 0.00E+3 -dsbast852 toEng 0E+2 -> 0.0E+3 -dsbast853 toEng 0E+3 -> 0E+3 -dsbast854 toEng 0E+4 -> 0.00E+6 -dsbast855 toEng 0E+5 -> 0.0E+6 -dsbast856 toEng 0E+6 -> 0E+6 -dsbast857 toEng 0E+7 -> 0.00E+9 -dsbast858 toEng 0E+8 -> 0.0E+9 -dsbast859 toEng 0E+9 -> 0E+9 - -dsbast860 toEng 0.0E-0 -> 0.0 -dsbast861 toEng 0.0E-1 -> 0.00 -dsbast862 toEng 0.0E-2 -> 0.000 -dsbast863 toEng 0.0E-3 -> 0.0000 -dsbast864 toEng 0.0E-4 -> 0.00000 -dsbast865 toEng 0.0E-5 -> 0.000000 -dsbast866 toEng 0.0E-6 -> 0.0E-6 -dsbast867 toEng 0.0E-7 -> 0.00E-6 -dsbast868 toEng 0.0E-8 -> 0E-9 -dsbast869 toEng 0.0E-9 -> 0.0E-9 - -dsbast870 toEng 0.00E-0 -> 0.00 -dsbast871 toEng 0.00E-1 -> 0.000 -dsbast872 toEng 0.00E-2 -> 0.0000 -dsbast873 toEng 0.00E-3 -> 0.00000 -dsbast874 toEng 0.00E-4 -> 0.000000 -dsbast875 toEng 0.00E-5 -> 0.0E-6 -dsbast876 toEng 0.00E-6 -> 0.00E-6 -dsbast877 toEng 0.00E-7 -> 0E-9 -dsbast878 toEng 0.00E-8 -> 0.0E-9 -dsbast879 toEng 0.00E-9 -> 0.00E-9 - --- long input strings -dsbas801 tosci '01234567' -> 1234567 -dsbas802 tosci '001234567' -> 1234567 -dsbas803 tosci '0001234567' -> 1234567 -dsbas804 tosci '00001234567' -> 1234567 -dsbas805 tosci '000001234567' -> 1234567 -dsbas806 tosci '0000001234567' -> 1234567 -dsbas807 tosci '00000001234567' -> 1234567 -dsbas808 tosci '000000001234567' -> 1234567 -dsbas809 tosci '0000000001234567' -> 1234567 -dsbas810 tosci '00000000001234567' -> 1234567 - -dsbas811 tosci '0.1234567' -> 0.1234567 -dsbas812 tosci '0.01234567' -> 0.01234567 -dsbas813 tosci '0.001234567' -> 0.001234567 -dsbas814 tosci '0.0001234567' -> 0.0001234567 -dsbas815 tosci '0.00001234567' -> 0.00001234567 -dsbas816 tosci '0.000001234567' -> 0.000001234567 -dsbas817 tosci '0.0000001234567' -> 1.234567E-7 -dsbas818 tosci '0.00000001234567' -> 1.234567E-8 -dsbas819 tosci '0.000000001234567' -> 1.234567E-9 -dsbas820 tosci '0.0000000001234567' -> 1.234567E-10 - -dsbas821 tosci '123456790' -> 1.234568E+8 Inexact Rounded -dsbas822 tosci '1234567901' -> 1.234568E+9 Inexact Rounded -dsbas823 tosci '12345679012' -> 1.234568E+10 Inexact Rounded -dsbas824 tosci '123456790123' -> 1.234568E+11 Inexact Rounded -dsbas825 tosci '1234567901234' -> 1.234568E+12 Inexact Rounded -dsbas826 tosci '12345679012345' -> 1.234568E+13 Inexact Rounded -dsbas827 tosci '123456790123456' -> 1.234568E+14 Inexact Rounded -dsbas828 tosci '1234567901234567' -> 1.234568E+15 Inexact Rounded -dsbas829 tosci '1234567890123456' -> 1.234568E+15 Inexact Rounded - --- subnormals and overflows -dsbas906 toSci '99e999999999' -> Infinity Overflow Inexact Rounded -dsbas907 toSci '999e999999999' -> Infinity Overflow Inexact Rounded -dsbas908 toSci '0.9e-999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas909 toSci '0.09e-999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas910 toSci '0.1e1000000000' -> Infinity Overflow Inexact Rounded -dsbas911 toSci '10e-1000000000' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas912 toSci '0.9e9999999999' -> Infinity Overflow Inexact Rounded -dsbas913 toSci '99e-9999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas914 toSci '111e9999999999' -> Infinity Overflow Inexact Rounded -dsbas915 toSci '1111e-9999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas916 toSci '1111e-99999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas917 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded --- negatives the same -dsbas918 toSci '-99e999999999' -> -Infinity Overflow Inexact Rounded -dsbas919 toSci '-999e999999999' -> -Infinity Overflow Inexact Rounded -dsbas920 toSci '-0.9e-999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas921 toSci '-0.09e-999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas922 toSci '-0.1e1000000000' -> -Infinity Overflow Inexact Rounded -dsbas923 toSci '-10e-1000000000' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas924 toSci '-0.9e9999999999' -> -Infinity Overflow Inexact Rounded -dsbas925 toSci '-99e-9999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas926 toSci '-111e9999999999' -> -Infinity Overflow Inexact Rounded -dsbas927 toSci '-1111e-9999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas928 toSci '-1111e-99999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas929 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded - --- overflow results at different rounding modes -rounding: ceiling -dsbas930 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dsbas931 toSci '-7e10000' -> -9.999999E+96 Overflow Inexact Rounded -rounding: up -dsbas932 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dsbas933 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: down -dsbas934 toSci '7e10000' -> 9.999999E+96 Overflow Inexact Rounded -dsbas935 toSci '-7e10000' -> -9.999999E+96 Overflow Inexact Rounded -rounding: floor -dsbas936 toSci '7e10000' -> 9.999999E+96 Overflow Inexact Rounded -dsbas937 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded - -rounding: half_up -dsbas938 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dsbas939 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: half_even -dsbas940 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dsbas941 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded -rounding: half_down -dsbas942 toSci '7e10000' -> Infinity Overflow Inexact Rounded -dsbas943 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded - -rounding: half_even - --- Now check 854/754r some subnormals and underflow to 0 -dsbem400 toSci 1.0000E-86 -> 1.0000E-86 -dsbem401 toSci 0.1E-97 -> 1E-98 Subnormal -dsbem402 toSci 0.1000E-97 -> 1.000E-98 Subnormal -dsbem403 toSci 0.0100E-97 -> 1.00E-99 Subnormal -dsbem404 toSci 0.0010E-97 -> 1.0E-100 Subnormal -dsbem405 toSci 0.0001E-97 -> 1E-101 Subnormal -dsbem406 toSci 0.00010E-97 -> 1E-101 Subnormal Rounded -dsbem407 toSci 0.00013E-97 -> 1E-101 Underflow Subnormal Inexact Rounded -dsbem408 toSci 0.00015E-97 -> 2E-101 Underflow Subnormal Inexact Rounded -dsbem409 toSci 0.00017E-97 -> 2E-101 Underflow Subnormal Inexact Rounded -dsbem410 toSci 0.00023E-97 -> 2E-101 Underflow Subnormal Inexact Rounded -dsbem411 toSci 0.00025E-97 -> 2E-101 Underflow Subnormal Inexact Rounded -dsbem412 toSci 0.00027E-97 -> 3E-101 Underflow Subnormal Inexact Rounded -dsbem413 toSci 0.000149E-97 -> 1E-101 Underflow Subnormal Inexact Rounded -dsbem414 toSci 0.000150E-97 -> 2E-101 Underflow Subnormal Inexact Rounded -dsbem415 toSci 0.000151E-97 -> 2E-101 Underflow Subnormal Inexact Rounded -dsbem416 toSci 0.000249E-97 -> 2E-101 Underflow Subnormal Inexact Rounded -dsbem417 toSci 0.000250E-97 -> 2E-101 Underflow Subnormal Inexact Rounded -dsbem418 toSci 0.000251E-97 -> 3E-101 Underflow Subnormal Inexact Rounded -dsbem419 toSci 0.00009E-97 -> 1E-101 Underflow Subnormal Inexact Rounded -dsbem420 toSci 0.00005E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbem421 toSci 0.00003E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbem422 toSci 0.000009E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbem423 toSci 0.000005E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbem424 toSci 0.000003E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped - -dsbem425 toSci 0.001049E-97 -> 1.0E-100 Underflow Subnormal Inexact Rounded -dsbem426 toSci 0.001050E-97 -> 1.0E-100 Underflow Subnormal Inexact Rounded -dsbem427 toSci 0.001051E-97 -> 1.1E-100 Underflow Subnormal Inexact Rounded -dsbem428 toSci 0.001149E-97 -> 1.1E-100 Underflow Subnormal Inexact Rounded -dsbem429 toSci 0.001150E-97 -> 1.2E-100 Underflow Subnormal Inexact Rounded -dsbem430 toSci 0.001151E-97 -> 1.2E-100 Underflow Subnormal Inexact Rounded - -dsbem432 toSci 0.010049E-97 -> 1.00E-99 Underflow Subnormal Inexact Rounded -dsbem433 toSci 0.010050E-97 -> 1.00E-99 Underflow Subnormal Inexact Rounded -dsbem434 toSci 0.010051E-97 -> 1.01E-99 Underflow Subnormal Inexact Rounded -dsbem435 toSci 0.010149E-97 -> 1.01E-99 Underflow Subnormal Inexact Rounded -dsbem436 toSci 0.010150E-97 -> 1.02E-99 Underflow Subnormal Inexact Rounded -dsbem437 toSci 0.010151E-97 -> 1.02E-99 Underflow Subnormal Inexact Rounded - -dsbem440 toSci 0.10103E-97 -> 1.010E-98 Underflow Subnormal Inexact Rounded -dsbem441 toSci 0.10105E-97 -> 1.010E-98 Underflow Subnormal Inexact Rounded -dsbem442 toSci 0.10107E-97 -> 1.011E-98 Underflow Subnormal Inexact Rounded -dsbem443 toSci 0.10113E-97 -> 1.011E-98 Underflow Subnormal Inexact Rounded -dsbem444 toSci 0.10115E-97 -> 1.012E-98 Underflow Subnormal Inexact Rounded -dsbem445 toSci 0.10117E-97 -> 1.012E-98 Underflow Subnormal Inexact Rounded - -dsbem450 toSci 1.10730E-98 -> 1.107E-98 Underflow Subnormal Inexact Rounded -dsbem451 toSci 1.10750E-98 -> 1.108E-98 Underflow Subnormal Inexact Rounded -dsbem452 toSci 1.10770E-98 -> 1.108E-98 Underflow Subnormal Inexact Rounded -dsbem453 toSci 1.10830E-98 -> 1.108E-98 Underflow Subnormal Inexact Rounded -dsbem454 toSci 1.10850E-98 -> 1.108E-98 Underflow Subnormal Inexact Rounded -dsbem455 toSci 1.10870E-98 -> 1.109E-98 Underflow Subnormal Inexact Rounded - --- make sure sign OK -dsbem456 toSci -0.10103E-97 -> -1.010E-98 Underflow Subnormal Inexact Rounded -dsbem457 toSci -0.10105E-97 -> -1.010E-98 Underflow Subnormal Inexact Rounded -dsbem458 toSci -0.10107E-97 -> -1.011E-98 Underflow Subnormal Inexact Rounded -dsbem459 toSci -0.10113E-97 -> -1.011E-98 Underflow Subnormal Inexact Rounded -dsbem460 toSci -0.10115E-97 -> -1.012E-98 Underflow Subnormal Inexact Rounded -dsbem461 toSci -0.10117E-97 -> -1.012E-98 Underflow Subnormal Inexact Rounded - --- '999s' cases -dsbem464 toSci 999999E-98 -> 9.99999E-93 -dsbem465 toSci 99999.0E-97 -> 9.99990E-93 -dsbem466 toSci 99999.E-97 -> 9.9999E-93 -dsbem467 toSci 9999.9E-97 -> 9.9999E-94 -dsbem468 toSci 999.99E-97 -> 9.9999E-95 -dsbem469 toSci 99.999E-97 -> 9.9999E-96 Subnormal -dsbem470 toSci 9.9999E-97 -> 9.9999E-97 Subnormal -dsbem471 toSci 0.99999E-97 -> 1.0000E-97 Underflow Subnormal Inexact Rounded -dsbem472 toSci 0.099999E-97 -> 1.000E-98 Underflow Subnormal Inexact Rounded -dsbem473 toSci 0.0099999E-97 -> 1.00E-99 Underflow Subnormal Inexact Rounded -dsbem474 toSci 0.00099999E-97 -> 1.0E-100 Underflow Subnormal Inexact Rounded -dsbem475 toSci 0.000099999E-97 -> 1E-101 Underflow Subnormal Inexact Rounded -dsbem476 toSci 0.0000099999E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbem477 toSci 0.00000099999E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbem478 toSci 0.000000099999E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped - --- Exponents with insignificant leading zeros -dsbas1001 toSci 1e999999999 -> Infinity Overflow Inexact Rounded -dsbas1002 toSci 1e0999999999 -> Infinity Overflow Inexact Rounded -dsbas1003 toSci 1e00999999999 -> Infinity Overflow Inexact Rounded -dsbas1004 toSci 1e000999999999 -> Infinity Overflow Inexact Rounded -dsbas1005 toSci 1e000000000000999999999 -> Infinity Overflow Inexact Rounded -dsbas1006 toSci 1e000000000001000000007 -> Infinity Overflow Inexact Rounded -dsbas1007 toSci 1e-999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas1008 toSci 1e-0999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas1009 toSci 1e-00999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas1010 toSci 1e-000999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas1011 toSci 1e-000000000000999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -dsbas1012 toSci 1e-000000000001000000007 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped - --- check for double-rounded subnormals -dsbas1041 toSci 1.1152444E-96 -> 1.11524E-96 Inexact Rounded Subnormal Underflow -dsbas1042 toSci 1.1152445E-96 -> 1.11524E-96 Inexact Rounded Subnormal Underflow -dsbas1043 toSci 1.1152446E-96 -> 1.11524E-96 Inexact Rounded Subnormal Underflow - --- clamped zeros [see also clamp.decTest] -dsbas1075 toSci 0e+10000 -> 0E+90 Clamped -dsbas1076 toSci 0e-10000 -> 0E-101 Clamped -dsbas1077 toSci -0e+10000 -> -0E+90 Clamped -dsbas1078 toSci -0e-10000 -> -0E-101 Clamped - --- extreme values from next-wider -dsbas1101 toSci -9.999999999999999E+384 -> -Infinity Overflow Inexact Rounded -dsbas1102 toSci -1E-383 -> -0E-101 Inexact Rounded Subnormal Underflow Clamped -dsbas1103 toSci -1E-398 -> -0E-101 Inexact Rounded Subnormal Underflow Clamped -dsbas1104 toSci -0 -> -0 -dsbas1105 toSci +0 -> 0 -dsbas1106 toSci +1E-398 -> 0E-101 Inexact Rounded Subnormal Underflow Clamped -dsbas1107 toSci +1E-383 -> 0E-101 Inexact Rounded Subnormal Underflow Clamped -dsbas1108 toSci +9.999999999999999E+384 -> Infinity Overflow Inexact Rounded - --- narrowing case -dsbas1110 toSci 2.000000000000000E-99 -> 2.00E-99 Rounded Subnormal +------------------------------------------------------------------------ +-- dsBase.decTest -- base decSingle <--> string conversions -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This file tests base conversions from string to a decimal number +-- and back to a string (in Scientific form) + +-- Note that unlike other operations the operand is subject to rounding +-- to conform to emax and precision settings (that is, numbers will +-- conform to rules and exponent will be in permitted range). The +-- 'left hand side', therefore, may have numbers that cannot be +-- represented in a decSingle. Some testcases go to the limit of the +-- next-wider format, and hence these testcases may also be used to +-- test narrowing and widening operations. + +extended: 1 +clamp: 1 +precision: 7 +maxExponent: 96 +minExponent: -95 +rounding: half_even + +dsbas001 toSci 0 -> 0 +dsbas002 toSci 1 -> 1 +dsbas003 toSci 1.0 -> 1.0 +dsbas004 toSci 1.00 -> 1.00 +dsbas005 toSci 10 -> 10 +dsbas006 toSci 1000 -> 1000 +dsbas007 toSci 10.0 -> 10.0 +dsbas008 toSci 10.1 -> 10.1 +dsbas009 toSci 10.4 -> 10.4 +dsbas010 toSci 10.5 -> 10.5 +dsbas011 toSci 10.6 -> 10.6 +dsbas012 toSci 10.9 -> 10.9 +dsbas013 toSci 11.0 -> 11.0 +dsbas014 toSci 1.234 -> 1.234 +dsbas015 toSci 0.123 -> 0.123 +dsbas016 toSci 0.012 -> 0.012 +dsbas017 toSci -0 -> -0 +dsbas018 toSci -0.0 -> -0.0 +dsbas019 toSci -00.00 -> -0.00 + +dsbas021 toSci -1 -> -1 +dsbas022 toSci -1.0 -> -1.0 +dsbas023 toSci -0.1 -> -0.1 +dsbas024 toSci -9.1 -> -9.1 +dsbas025 toSci -9.11 -> -9.11 +dsbas026 toSci -9.119 -> -9.119 +dsbas027 toSci -9.999 -> -9.999 + +dsbas030 toSci '1234.567' -> '1234.567' +dsbas031 toSci '1234.000' -> '1234.000' +dsbas032 toSci '1234912' -> '1234912' +dsbas033 toSci '0.00001234567' -> '0.00001234567' +dsbas034 toSci '0.000001234567' -> '0.000001234567' +dsbas035 toSci '0.0000001234567' -> '1.234567E-7' +dsbas036 toSci '0.00000001234567' -> '1.234567E-8' + +dsbas037 toSci '0.1234564' -> '0.1234564' +dsbas038 toSci '0.1234565' -> '0.1234565' + +-- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax) +dsbsn001 toSci -9.999999E+96 -> -9.999999E+96 +dsbsn002 toSci -1E-95 -> -1E-95 +dsbsn003 toSci -1E-101 -> -1E-101 Subnormal +dsbsn004 toSci -0 -> -0 +dsbsn005 toSci +0 -> 0 +dsbsn006 toSci +1E-101 -> 1E-101 Subnormal +dsbsn007 toSci +1E-95 -> 1E-95 +dsbsn008 toSci +9.999999E+96 -> 9.999999E+96 + +-- String [many more examples are implicitly tested elsewhere] +-- strings without E cannot generate E in result +dsbas040 toSci "12" -> '12' +dsbas041 toSci "-76" -> '-76' +dsbas042 toSci "12.76" -> '12.76' +dsbas043 toSci "+12.76" -> '12.76' +dsbas044 toSci "012.76" -> '12.76' +dsbas045 toSci "+0.003" -> '0.003' +dsbas046 toSci "17." -> '17' +dsbas047 toSci ".5" -> '0.5' +dsbas048 toSci "044" -> '44' +dsbas049 toSci "0044" -> '44' +dsbas050 toSci "0.0005" -> '0.0005' +dsbas051 toSci "00.00005" -> '0.00005' +dsbas052 toSci "0.000005" -> '0.000005' +dsbas053 toSci "0.0000050" -> '0.0000050' +dsbas054 toSci "0.0000005" -> '5E-7' +dsbas055 toSci "0.00000005" -> '5E-8' +dsbas056 toSci "12678.54" -> '12678.54' +dsbas057 toSci "2678.543" -> '2678.543' +dsbas058 toSci "345678.5" -> '345678.5' +dsbas059 toSci "0678.5432" -> '678.5432' +dsbas060 toSci "678.5432" -> '678.5432' +dsbas061 toSci "+678.5432" -> '678.5432' +dsbas062 toSci "+0678.5432" -> '678.5432' +dsbas063 toSci "+00678.5432" -> '678.5432' +dsbas064 toSci "-678.5432" -> '-678.5432' +dsbas065 toSci "-0678.5432" -> '-678.5432' +dsbas066 toSci "-00678.5432" -> '-678.5432' +-- examples +dsbas067 toSci "5E-6" -> '0.000005' +dsbas068 toSci "50E-7" -> '0.0000050' +dsbas069 toSci "5E-7" -> '5E-7' + +-- [No exotics as no Unicode] + +-- rounded with dots in all (including edge) places +dsbas071 toSci .1234567890123456 -> 0.1234568 Inexact Rounded +dsbas072 toSci 1.234567890123456 -> 1.234568 Inexact Rounded +dsbas073 toSci 12.34567890123456 -> 12.34568 Inexact Rounded +dsbas074 toSci 123.4567890123456 -> 123.4568 Inexact Rounded +dsbas075 toSci 1234.567890123456 -> 1234.568 Inexact Rounded +dsbas076 toSci 12345.67890123456 -> 12345.68 Inexact Rounded +dsbas077 toSci 123456.7890123456 -> 123456.8 Inexact Rounded +dsbas078 toSci 1234567.890123456 -> 1234568 Inexact Rounded +dsbas079 toSci 12345678.90123456 -> 1.234568E+7 Inexact Rounded +dsbas080 toSci 123456789.0123456 -> 1.234568E+8 Inexact Rounded +dsbas081 toSci 1234567890.123456 -> 1.234568E+9 Inexact Rounded +dsbas082 toSci 12345678901.23456 -> 1.234568E+10 Inexact Rounded +dsbas083 toSci 123456789012.3456 -> 1.234568E+11 Inexact Rounded +dsbas084 toSci 1234567890123.456 -> 1.234568E+12 Inexact Rounded +dsbas085 toSci 12345678901234.56 -> 1.234568E+13 Inexact Rounded +dsbas086 toSci 123456789012345.6 -> 1.234568E+14 Inexact Rounded +dsbas087 toSci 1234567890123456. -> 1.234568E+15 Inexact Rounded +dsbas088 toSci 1234567890123456 -> 1.234568E+15 Inexact Rounded + +-- Numbers with E +dsbas130 toSci "0.000E-1" -> '0.0000' +dsbas131 toSci "0.000E-2" -> '0.00000' +dsbas132 toSci "0.000E-3" -> '0.000000' +dsbas133 toSci "0.000E-4" -> '0E-7' +dsbas134 toSci "0.00E-2" -> '0.0000' +dsbas135 toSci "0.00E-3" -> '0.00000' +dsbas136 toSci "0.00E-4" -> '0.000000' +dsbas137 toSci "0.00E-5" -> '0E-7' +dsbas138 toSci "+0E+9" -> '0E+9' +dsbas139 toSci "-0E+9" -> '-0E+9' +dsbas140 toSci "1E+9" -> '1E+9' +dsbas141 toSci "1e+09" -> '1E+9' +dsbas142 toSci "1E+90" -> '1E+90' +dsbas143 toSci "+1E+009" -> '1E+9' +dsbas144 toSci "0E+9" -> '0E+9' +dsbas145 toSci "1E+9" -> '1E+9' +dsbas146 toSci "1E+09" -> '1E+9' +dsbas147 toSci "1e+90" -> '1E+90' +dsbas148 toSci "1E+009" -> '1E+9' +dsbas149 toSci "000E+9" -> '0E+9' +dsbas150 toSci "1E9" -> '1E+9' +dsbas151 toSci "1e09" -> '1E+9' +dsbas152 toSci "1E90" -> '1E+90' +dsbas153 toSci "1E009" -> '1E+9' +dsbas154 toSci "0E9" -> '0E+9' +dsbas155 toSci "0.000e+0" -> '0.000' +dsbas156 toSci "0.000E-1" -> '0.0000' +dsbas157 toSci "4E+9" -> '4E+9' +dsbas158 toSci "44E+9" -> '4.4E+10' +dsbas159 toSci "0.73e-7" -> '7.3E-8' +dsbas160 toSci "00E+9" -> '0E+9' +dsbas161 toSci "00E-9" -> '0E-9' +dsbas162 toSci "10E+9" -> '1.0E+10' +dsbas163 toSci "10E+09" -> '1.0E+10' +dsbas164 toSci "10e+90" -> '1.0E+91' +dsbas165 toSci "10E+009" -> '1.0E+10' +dsbas166 toSci "100e+9" -> '1.00E+11' +dsbas167 toSci "100e+09" -> '1.00E+11' +dsbas168 toSci "100E+90" -> '1.00E+92' +dsbas169 toSci "100e+009" -> '1.00E+11' + +dsbas170 toSci "1.265" -> '1.265' +dsbas171 toSci "1.265E-20" -> '1.265E-20' +dsbas172 toSci "1.265E-8" -> '1.265E-8' +dsbas173 toSci "1.265E-4" -> '0.0001265' +dsbas174 toSci "1.265E-3" -> '0.001265' +dsbas175 toSci "1.265E-2" -> '0.01265' +dsbas176 toSci "1.265E-1" -> '0.1265' +dsbas177 toSci "1.265E-0" -> '1.265' +dsbas178 toSci "1.265E+1" -> '12.65' +dsbas179 toSci "1.265E+2" -> '126.5' +dsbas180 toSci "1.265E+3" -> '1265' +dsbas181 toSci "1.265E+4" -> '1.265E+4' +dsbas182 toSci "1.265E+8" -> '1.265E+8' +dsbas183 toSci "1.265E+20" -> '1.265E+20' + +dsbas190 toSci "12.65" -> '12.65' +dsbas191 toSci "12.65E-20" -> '1.265E-19' +dsbas192 toSci "12.65E-8" -> '1.265E-7' +dsbas193 toSci "12.65E-4" -> '0.001265' +dsbas194 toSci "12.65E-3" -> '0.01265' +dsbas195 toSci "12.65E-2" -> '0.1265' +dsbas196 toSci "12.65E-1" -> '1.265' +dsbas197 toSci "12.65E-0" -> '12.65' +dsbas198 toSci "12.65E+1" -> '126.5' +dsbas199 toSci "12.65E+2" -> '1265' +dsbas200 toSci "12.65E+3" -> '1.265E+4' +dsbas201 toSci "12.65E+4" -> '1.265E+5' +dsbas202 toSci "12.65E+8" -> '1.265E+9' +dsbas203 toSci "12.65E+20" -> '1.265E+21' + +dsbas210 toSci "126.5" -> '126.5' +dsbas211 toSci "126.5E-20" -> '1.265E-18' +dsbas212 toSci "126.5E-8" -> '0.000001265' +dsbas213 toSci "126.5E-4" -> '0.01265' +dsbas214 toSci "126.5E-3" -> '0.1265' +dsbas215 toSci "126.5E-2" -> '1.265' +dsbas216 toSci "126.5E-1" -> '12.65' +dsbas217 toSci "126.5E-0" -> '126.5' +dsbas218 toSci "126.5E+1" -> '1265' +dsbas219 toSci "126.5E+2" -> '1.265E+4' +dsbas220 toSci "126.5E+3" -> '1.265E+5' +dsbas221 toSci "126.5E+4" -> '1.265E+6' +dsbas222 toSci "126.5E+8" -> '1.265E+10' +dsbas223 toSci "126.5E+20" -> '1.265E+22' + +dsbas230 toSci "1265" -> '1265' +dsbas231 toSci "1265E-20" -> '1.265E-17' +dsbas232 toSci "1265E-8" -> '0.00001265' +dsbas233 toSci "1265E-4" -> '0.1265' +dsbas234 toSci "1265E-3" -> '1.265' +dsbas235 toSci "1265E-2" -> '12.65' +dsbas236 toSci "1265E-1" -> '126.5' +dsbas237 toSci "1265E-0" -> '1265' +dsbas238 toSci "1265E+1" -> '1.265E+4' +dsbas239 toSci "1265E+2" -> '1.265E+5' +dsbas240 toSci "1265E+3" -> '1.265E+6' +dsbas241 toSci "1265E+4" -> '1.265E+7' +dsbas242 toSci "1265E+8" -> '1.265E+11' +dsbas243 toSci "1265E+20" -> '1.265E+23' + +dsbas250 toSci "0.1265" -> '0.1265' +dsbas251 toSci "0.1265E-20" -> '1.265E-21' +dsbas252 toSci "0.1265E-8" -> '1.265E-9' +dsbas253 toSci "0.1265E-4" -> '0.00001265' +dsbas254 toSci "0.1265E-3" -> '0.0001265' +dsbas255 toSci "0.1265E-2" -> '0.001265' +dsbas256 toSci "0.1265E-1" -> '0.01265' +dsbas257 toSci "0.1265E-0" -> '0.1265' +dsbas258 toSci "0.1265E+1" -> '1.265' +dsbas259 toSci "0.1265E+2" -> '12.65' +dsbas260 toSci "0.1265E+3" -> '126.5' +dsbas261 toSci "0.1265E+4" -> '1265' +dsbas262 toSci "0.1265E+8" -> '1.265E+7' +dsbas263 toSci "0.1265E+20" -> '1.265E+19' + +-- some more negative zeros [systematic tests below] +dsbas290 toSci "-0.000E-1" -> '-0.0000' +dsbas291 toSci "-0.000E-2" -> '-0.00000' +dsbas292 toSci "-0.000E-3" -> '-0.000000' +dsbas293 toSci "-0.000E-4" -> '-0E-7' +dsbas294 toSci "-0.00E-2" -> '-0.0000' +dsbas295 toSci "-0.00E-3" -> '-0.00000' +dsbas296 toSci "-0.0E-2" -> '-0.000' +dsbas297 toSci "-0.0E-3" -> '-0.0000' +dsbas298 toSci "-0E-2" -> '-0.00' +dsbas299 toSci "-0E-3" -> '-0.000' + +-- Engineering notation tests +dsbas301 toSci 10e12 -> 1.0E+13 +dsbas302 toEng 10e12 -> 10E+12 +dsbas303 toSci 10e11 -> 1.0E+12 +dsbas304 toEng 10e11 -> 1.0E+12 +dsbas305 toSci 10e10 -> 1.0E+11 +dsbas306 toEng 10e10 -> 100E+9 +dsbas307 toSci 10e9 -> 1.0E+10 +dsbas308 toEng 10e9 -> 10E+9 +dsbas309 toSci 10e8 -> 1.0E+9 +dsbas310 toEng 10e8 -> 1.0E+9 +dsbas311 toSci 10e7 -> 1.0E+8 +dsbas312 toEng 10e7 -> 100E+6 +dsbas313 toSci 10e6 -> 1.0E+7 +dsbas314 toEng 10e6 -> 10E+6 +dsbas315 toSci 10e5 -> 1.0E+6 +dsbas316 toEng 10e5 -> 1.0E+6 +dsbas317 toSci 10e4 -> 1.0E+5 +dsbas318 toEng 10e4 -> 100E+3 +dsbas319 toSci 10e3 -> 1.0E+4 +dsbas320 toEng 10e3 -> 10E+3 +dsbas321 toSci 10e2 -> 1.0E+3 +dsbas322 toEng 10e2 -> 1.0E+3 +dsbas323 toSci 10e1 -> 1.0E+2 +dsbas324 toEng 10e1 -> 100 +dsbas325 toSci 10e0 -> 10 +dsbas326 toEng 10e0 -> 10 +dsbas327 toSci 10e-1 -> 1.0 +dsbas328 toEng 10e-1 -> 1.0 +dsbas329 toSci 10e-2 -> 0.10 +dsbas330 toEng 10e-2 -> 0.10 +dsbas331 toSci 10e-3 -> 0.010 +dsbas332 toEng 10e-3 -> 0.010 +dsbas333 toSci 10e-4 -> 0.0010 +dsbas334 toEng 10e-4 -> 0.0010 +dsbas335 toSci 10e-5 -> 0.00010 +dsbas336 toEng 10e-5 -> 0.00010 +dsbas337 toSci 10e-6 -> 0.000010 +dsbas338 toEng 10e-6 -> 0.000010 +dsbas339 toSci 10e-7 -> 0.0000010 +dsbas340 toEng 10e-7 -> 0.0000010 +dsbas341 toSci 10e-8 -> 1.0E-7 +dsbas342 toEng 10e-8 -> 100E-9 +dsbas343 toSci 10e-9 -> 1.0E-8 +dsbas344 toEng 10e-9 -> 10E-9 +dsbas345 toSci 10e-10 -> 1.0E-9 +dsbas346 toEng 10e-10 -> 1.0E-9 +dsbas347 toSci 10e-11 -> 1.0E-10 +dsbas348 toEng 10e-11 -> 100E-12 +dsbas349 toSci 10e-12 -> 1.0E-11 +dsbas350 toEng 10e-12 -> 10E-12 +dsbas351 toSci 10e-13 -> 1.0E-12 +dsbas352 toEng 10e-13 -> 1.0E-12 + +dsbas361 toSci 7E12 -> 7E+12 +dsbas362 toEng 7E12 -> 7E+12 +dsbas363 toSci 7E11 -> 7E+11 +dsbas364 toEng 7E11 -> 700E+9 +dsbas365 toSci 7E10 -> 7E+10 +dsbas366 toEng 7E10 -> 70E+9 +dsbas367 toSci 7E9 -> 7E+9 +dsbas368 toEng 7E9 -> 7E+9 +dsbas369 toSci 7E8 -> 7E+8 +dsbas370 toEng 7E8 -> 700E+6 +dsbas371 toSci 7E7 -> 7E+7 +dsbas372 toEng 7E7 -> 70E+6 +dsbas373 toSci 7E6 -> 7E+6 +dsbas374 toEng 7E6 -> 7E+6 +dsbas375 toSci 7E5 -> 7E+5 +dsbas376 toEng 7E5 -> 700E+3 +dsbas377 toSci 7E4 -> 7E+4 +dsbas378 toEng 7E4 -> 70E+3 +dsbas379 toSci 7E3 -> 7E+3 +dsbas380 toEng 7E3 -> 7E+3 +dsbas381 toSci 7E2 -> 7E+2 +dsbas382 toEng 7E2 -> 700 +dsbas383 toSci 7E1 -> 7E+1 +dsbas384 toEng 7E1 -> 70 +dsbas385 toSci 7E0 -> 7 +dsbas386 toEng 7E0 -> 7 +dsbas387 toSci 7E-1 -> 0.7 +dsbas388 toEng 7E-1 -> 0.7 +dsbas389 toSci 7E-2 -> 0.07 +dsbas390 toEng 7E-2 -> 0.07 +dsbas391 toSci 7E-3 -> 0.007 +dsbas392 toEng 7E-3 -> 0.007 +dsbas393 toSci 7E-4 -> 0.0007 +dsbas394 toEng 7E-4 -> 0.0007 +dsbas395 toSci 7E-5 -> 0.00007 +dsbas396 toEng 7E-5 -> 0.00007 +dsbas397 toSci 7E-6 -> 0.000007 +dsbas398 toEng 7E-6 -> 0.000007 +dsbas399 toSci 7E-7 -> 7E-7 +dsbas400 toEng 7E-7 -> 700E-9 +dsbas401 toSci 7E-8 -> 7E-8 +dsbas402 toEng 7E-8 -> 70E-9 +dsbas403 toSci 7E-9 -> 7E-9 +dsbas404 toEng 7E-9 -> 7E-9 +dsbas405 toSci 7E-10 -> 7E-10 +dsbas406 toEng 7E-10 -> 700E-12 +dsbas407 toSci 7E-11 -> 7E-11 +dsbas408 toEng 7E-11 -> 70E-12 +dsbas409 toSci 7E-12 -> 7E-12 +dsbas410 toEng 7E-12 -> 7E-12 +dsbas411 toSci 7E-13 -> 7E-13 +dsbas412 toEng 7E-13 -> 700E-15 + +-- Exacts remain exact up to precision .. +dsbas420 toSci 100 -> 100 +dsbas422 toSci 1000 -> 1000 +dsbas424 toSci 999.9 -> 999.9 +dsbas426 toSci 1000.0 -> 1000.0 +dsbas428 toSci 1000.1 -> 1000.1 +dsbas430 toSci 10000 -> 10000 +dsbas432 toSci 1000 -> 1000 +dsbas434 toSci 10000 -> 10000 +dsbas436 toSci 100000 -> 100000 +dsbas438 toSci 1000000 -> 1000000 +dsbas440 toSci 10000000 -> 1.000000E+7 Rounded +dsbas442 toSci 10000000 -> 1.000000E+7 Rounded +dsbas444 toSci 10000003 -> 1.000000E+7 Rounded Inexact +dsbas446 toSci 10000005 -> 1.000000E+7 Rounded Inexact +dsbas448 toSci 100000050 -> 1.000000E+8 Rounded Inexact +dsbas450 toSci 10000009 -> 1.000001E+7 Rounded Inexact +dsbas452 toSci 100000000 -> 1.000000E+8 Rounded +dsbas454 toSci 100000003 -> 1.000000E+8 Rounded Inexact +dsbas456 toSci 100000005 -> 1.000000E+8 Rounded Inexact +dsbas458 toSci 100000009 -> 1.000000E+8 Rounded Inexact +dsbas460 toSci 1000000000 -> 1.000000E+9 Rounded +dsbas462 toSci 1000000300 -> 1.000000E+9 Rounded Inexact +dsbas464 toSci 1000000500 -> 1.000000E+9 Rounded Inexact +dsbas466 toSci 1000000900 -> 1.000001E+9 Rounded Inexact +dsbas468 toSci 10000000000 -> 1.000000E+10 Rounded +dsbas470 toSci 10000003000 -> 1.000000E+10 Rounded Inexact +dsbas472 toSci 10000005000 -> 1.000000E+10 Rounded Inexact +dsbas474 toSci 10000009000 -> 1.000001E+10 Rounded Inexact + +-- check rounding modes heeded +rounding: ceiling +dsbsr401 toSci 1.1123450 -> 1.112345 Rounded +dsbsr402 toSci 1.11234549 -> 1.112346 Rounded Inexact +dsbsr403 toSci 1.11234550 -> 1.112346 Rounded Inexact +dsbsr404 toSci 1.11234551 -> 1.112346 Rounded Inexact +rounding: up +dsbsr405 toSci 1.1123450 -> 1.112345 Rounded +dsbsr406 toSci 1.11234549 -> 1.112346 Rounded Inexact +dsbsr407 toSci 1.11234550 -> 1.112346 Rounded Inexact +dsbsr408 toSci 1.11234551 -> 1.112346 Rounded Inexact +rounding: floor +dsbsr410 toSci 1.1123450 -> 1.112345 Rounded +dsbsr411 toSci 1.11234549 -> 1.112345 Rounded Inexact +dsbsr412 toSci 1.11234550 -> 1.112345 Rounded Inexact +dsbsr413 toSci 1.11234551 -> 1.112345 Rounded Inexact +rounding: half_down +dsbsr415 toSci 1.1123450 -> 1.112345 Rounded +dsbsr416 toSci 1.11234549 -> 1.112345 Rounded Inexact +dsbsr417 toSci 1.11234550 -> 1.112345 Rounded Inexact +dsbsr418 toSci 1.11234650 -> 1.112346 Rounded Inexact +dsbsr419 toSci 1.11234551 -> 1.112346 Rounded Inexact +rounding: half_even +dsbsr421 toSci 1.1123450 -> 1.112345 Rounded +dsbsr422 toSci 1.11234549 -> 1.112345 Rounded Inexact +dsbsr423 toSci 1.11234550 -> 1.112346 Rounded Inexact +dsbsr424 toSci 1.11234650 -> 1.112346 Rounded Inexact +dsbsr425 toSci 1.11234551 -> 1.112346 Rounded Inexact +rounding: down +dsbsr426 toSci 1.1123450 -> 1.112345 Rounded +dsbsr427 toSci 1.11234549 -> 1.112345 Rounded Inexact +dsbsr428 toSci 1.11234550 -> 1.112345 Rounded Inexact +dsbsr429 toSci 1.11234551 -> 1.112345 Rounded Inexact +rounding: half_up +dsbsr431 toSci 1.1123450 -> 1.112345 Rounded +dsbsr432 toSci 1.11234549 -> 1.112345 Rounded Inexact +dsbsr433 toSci 1.11234550 -> 1.112346 Rounded Inexact +dsbsr434 toSci 1.11234650 -> 1.112347 Rounded Inexact +dsbsr435 toSci 1.11234551 -> 1.112346 Rounded Inexact +-- negatives +rounding: ceiling +dsbsr501 toSci -1.1123450 -> -1.112345 Rounded +dsbsr502 toSci -1.11234549 -> -1.112345 Rounded Inexact +dsbsr503 toSci -1.11234550 -> -1.112345 Rounded Inexact +dsbsr504 toSci -1.11234551 -> -1.112345 Rounded Inexact +rounding: up +dsbsr505 toSci -1.1123450 -> -1.112345 Rounded +dsbsr506 toSci -1.11234549 -> -1.112346 Rounded Inexact +dsbsr507 toSci -1.11234550 -> -1.112346 Rounded Inexact +dsbsr508 toSci -1.11234551 -> -1.112346 Rounded Inexact +rounding: floor +dsbsr510 toSci -1.1123450 -> -1.112345 Rounded +dsbsr511 toSci -1.11234549 -> -1.112346 Rounded Inexact +dsbsr512 toSci -1.11234550 -> -1.112346 Rounded Inexact +dsbsr513 toSci -1.11234551 -> -1.112346 Rounded Inexact +rounding: half_down +dsbsr515 toSci -1.1123450 -> -1.112345 Rounded +dsbsr516 toSci -1.11234549 -> -1.112345 Rounded Inexact +dsbsr517 toSci -1.11234550 -> -1.112345 Rounded Inexact +dsbsr518 toSci -1.11234650 -> -1.112346 Rounded Inexact +dsbsr519 toSci -1.11234551 -> -1.112346 Rounded Inexact +rounding: half_even +dsbsr521 toSci -1.1123450 -> -1.112345 Rounded +dsbsr522 toSci -1.11234549 -> -1.112345 Rounded Inexact +dsbsr523 toSci -1.11234550 -> -1.112346 Rounded Inexact +dsbsr524 toSci -1.11234650 -> -1.112346 Rounded Inexact +dsbsr525 toSci -1.11234551 -> -1.112346 Rounded Inexact +rounding: down +dsbsr526 toSci -1.1123450 -> -1.112345 Rounded +dsbsr527 toSci -1.11234549 -> -1.112345 Rounded Inexact +dsbsr528 toSci -1.11234550 -> -1.112345 Rounded Inexact +dsbsr529 toSci -1.11234551 -> -1.112345 Rounded Inexact +rounding: half_up +dsbsr531 toSci -1.1123450 -> -1.112345 Rounded +dsbsr532 toSci -1.11234549 -> -1.112345 Rounded Inexact +dsbsr533 toSci -1.11234550 -> -1.112346 Rounded Inexact +dsbsr534 toSci -1.11234650 -> -1.112347 Rounded Inexact +dsbsr535 toSci -1.11234551 -> -1.112346 Rounded Inexact + +rounding: half_even + +-- The 'baddies' tests from DiagBigDecimal, plus some new ones +dsbas500 toSci '1..2' -> NaN Conversion_syntax +dsbas501 toSci '.' -> NaN Conversion_syntax +dsbas502 toSci '..' -> NaN Conversion_syntax +dsbas503 toSci '++1' -> NaN Conversion_syntax +dsbas504 toSci '--1' -> NaN Conversion_syntax +dsbas505 toSci '-+1' -> NaN Conversion_syntax +dsbas506 toSci '+-1' -> NaN Conversion_syntax +dsbas507 toSci '12e' -> NaN Conversion_syntax +dsbas508 toSci '12e++' -> NaN Conversion_syntax +dsbas509 toSci '12f4' -> NaN Conversion_syntax +dsbas510 toSci ' +1' -> NaN Conversion_syntax +dsbas511 toSci '+ 1' -> NaN Conversion_syntax +dsbas512 toSci '12 ' -> NaN Conversion_syntax +dsbas513 toSci ' + 1' -> NaN Conversion_syntax +dsbas514 toSci ' - 1 ' -> NaN Conversion_syntax +dsbas515 toSci 'x' -> NaN Conversion_syntax +dsbas516 toSci '-1-' -> NaN Conversion_syntax +dsbas517 toSci '12-' -> NaN Conversion_syntax +dsbas518 toSci '3+' -> NaN Conversion_syntax +dsbas519 toSci '' -> NaN Conversion_syntax +dsbas520 toSci '1e-' -> NaN Conversion_syntax +dsbas521 toSci '7e99999a' -> NaN Conversion_syntax +dsbas522 toSci '7e123567890x' -> NaN Conversion_syntax +dsbas523 toSci '7e12356789012x' -> NaN Conversion_syntax +dsbas524 toSci '' -> NaN Conversion_syntax +dsbas525 toSci 'e100' -> NaN Conversion_syntax +dsbas526 toSci '\u0e5a' -> NaN Conversion_syntax +dsbas527 toSci '\u0b65' -> NaN Conversion_syntax +dsbas528 toSci '123,65' -> NaN Conversion_syntax +dsbas529 toSci '1.34.5' -> NaN Conversion_syntax +dsbas530 toSci '.123.5' -> NaN Conversion_syntax +dsbas531 toSci '01.35.' -> NaN Conversion_syntax +dsbas532 toSci '01.35-' -> NaN Conversion_syntax +dsbas533 toSci '0000..' -> NaN Conversion_syntax +dsbas534 toSci '.0000.' -> NaN Conversion_syntax +dsbas535 toSci '00..00' -> NaN Conversion_syntax +dsbas536 toSci '111e*123' -> NaN Conversion_syntax +dsbas537 toSci '111e123-' -> NaN Conversion_syntax +dsbas538 toSci '111e+12+' -> NaN Conversion_syntax +dsbas539 toSci '111e1-3-' -> NaN Conversion_syntax +dsbas540 toSci '111e1*23' -> NaN Conversion_syntax +dsbas541 toSci '111e1e+3' -> NaN Conversion_syntax +dsbas542 toSci '1e1.0' -> NaN Conversion_syntax +dsbas543 toSci '1e123e' -> NaN Conversion_syntax +dsbas544 toSci 'ten' -> NaN Conversion_syntax +dsbas545 toSci 'ONE' -> NaN Conversion_syntax +dsbas546 toSci '1e.1' -> NaN Conversion_syntax +dsbas547 toSci '1e1.' -> NaN Conversion_syntax +dsbas548 toSci '1ee' -> NaN Conversion_syntax +dsbas549 toSci 'e+1' -> NaN Conversion_syntax +dsbas550 toSci '1.23.4' -> NaN Conversion_syntax +dsbas551 toSci '1.2.1' -> NaN Conversion_syntax +dsbas552 toSci '1E+1.2' -> NaN Conversion_syntax +dsbas553 toSci '1E+1.2.3' -> NaN Conversion_syntax +dsbas554 toSci '1E++1' -> NaN Conversion_syntax +dsbas555 toSci '1E--1' -> NaN Conversion_syntax +dsbas556 toSci '1E+-1' -> NaN Conversion_syntax +dsbas557 toSci '1E-+1' -> NaN Conversion_syntax +dsbas558 toSci '1E''1' -> NaN Conversion_syntax +dsbas559 toSci "1E""1" -> NaN Conversion_syntax +dsbas560 toSci "1E""""" -> NaN Conversion_syntax +-- Near-specials +dsbas561 toSci "qNaN" -> NaN Conversion_syntax +dsbas562 toSci "NaNq" -> NaN Conversion_syntax +dsbas563 toSci "NaNs" -> NaN Conversion_syntax +dsbas564 toSci "Infi" -> NaN Conversion_syntax +dsbas565 toSci "Infin" -> NaN Conversion_syntax +dsbas566 toSci "Infini" -> NaN Conversion_syntax +dsbas567 toSci "Infinit" -> NaN Conversion_syntax +dsbas568 toSci "-Infinit" -> NaN Conversion_syntax +dsbas569 toSci "0Inf" -> NaN Conversion_syntax +dsbas570 toSci "9Inf" -> NaN Conversion_syntax +dsbas571 toSci "-0Inf" -> NaN Conversion_syntax +dsbas572 toSci "-9Inf" -> NaN Conversion_syntax +dsbas573 toSci "-sNa" -> NaN Conversion_syntax +dsbas574 toSci "xNaN" -> NaN Conversion_syntax +dsbas575 toSci "0sNaN" -> NaN Conversion_syntax + +-- some baddies with dots and Es and dots and specials +dsbas576 toSci 'e+1' -> NaN Conversion_syntax +dsbas577 toSci '.e+1' -> NaN Conversion_syntax +dsbas578 toSci '+.e+1' -> NaN Conversion_syntax +dsbas579 toSci '-.e+' -> NaN Conversion_syntax +dsbas580 toSci '-.e' -> NaN Conversion_syntax +dsbas581 toSci 'E+1' -> NaN Conversion_syntax +dsbas582 toSci '.E+1' -> NaN Conversion_syntax +dsbas583 toSci '+.E+1' -> NaN Conversion_syntax +dsbas584 toSci '-.E+' -> NaN Conversion_syntax +dsbas585 toSci '-.E' -> NaN Conversion_syntax + +dsbas586 toSci '.NaN' -> NaN Conversion_syntax +dsbas587 toSci '-.NaN' -> NaN Conversion_syntax +dsbas588 toSci '+.sNaN' -> NaN Conversion_syntax +dsbas589 toSci '+.Inf' -> NaN Conversion_syntax +dsbas590 toSci '.Infinity' -> NaN Conversion_syntax + +-- Zeros +dsbas601 toSci 0.000000000 -> 0E-9 +dsbas602 toSci 0.00000000 -> 0E-8 +dsbas603 toSci 0.0000000 -> 0E-7 +dsbas604 toSci 0.000000 -> 0.000000 +dsbas605 toSci 0.00000 -> 0.00000 +dsbas606 toSci 0.0000 -> 0.0000 +dsbas607 toSci 0.000 -> 0.000 +dsbas608 toSci 0.00 -> 0.00 +dsbas609 toSci 0.0 -> 0.0 +dsbas610 toSci .0 -> 0.0 +dsbas611 toSci 0. -> 0 +dsbas612 toSci -.0 -> -0.0 +dsbas613 toSci -0. -> -0 +dsbas614 toSci -0.0 -> -0.0 +dsbas615 toSci -0.00 -> -0.00 +dsbas616 toSci -0.000 -> -0.000 +dsbas617 toSci -0.0000 -> -0.0000 +dsbas618 toSci -0.00000 -> -0.00000 +dsbas619 toSci -0.000000 -> -0.000000 +dsbas620 toSci -0.0000000 -> -0E-7 +dsbas621 toSci -0.00000000 -> -0E-8 +dsbas622 toSci -0.000000000 -> -0E-9 + +dsbas630 toSci 0.00E+0 -> 0.00 +dsbas631 toSci 0.00E+1 -> 0.0 +dsbas632 toSci 0.00E+2 -> 0 +dsbas633 toSci 0.00E+3 -> 0E+1 +dsbas634 toSci 0.00E+4 -> 0E+2 +dsbas635 toSci 0.00E+5 -> 0E+3 +dsbas636 toSci 0.00E+6 -> 0E+4 +dsbas637 toSci 0.00E+7 -> 0E+5 +dsbas638 toSci 0.00E+8 -> 0E+6 +dsbas639 toSci 0.00E+9 -> 0E+7 + +dsbas640 toSci 0.0E+0 -> 0.0 +dsbas641 toSci 0.0E+1 -> 0 +dsbas642 toSci 0.0E+2 -> 0E+1 +dsbas643 toSci 0.0E+3 -> 0E+2 +dsbas644 toSci 0.0E+4 -> 0E+3 +dsbas645 toSci 0.0E+5 -> 0E+4 +dsbas646 toSci 0.0E+6 -> 0E+5 +dsbas647 toSci 0.0E+7 -> 0E+6 +dsbas648 toSci 0.0E+8 -> 0E+7 +dsbas649 toSci 0.0E+9 -> 0E+8 + +dsbas650 toSci 0E+0 -> 0 +dsbas651 toSci 0E+1 -> 0E+1 +dsbas652 toSci 0E+2 -> 0E+2 +dsbas653 toSci 0E+3 -> 0E+3 +dsbas654 toSci 0E+4 -> 0E+4 +dsbas655 toSci 0E+5 -> 0E+5 +dsbas656 toSci 0E+6 -> 0E+6 +dsbas657 toSci 0E+7 -> 0E+7 +dsbas658 toSci 0E+8 -> 0E+8 +dsbas659 toSci 0E+9 -> 0E+9 + +dsbas660 toSci 0.0E-0 -> 0.0 +dsbas661 toSci 0.0E-1 -> 0.00 +dsbas662 toSci 0.0E-2 -> 0.000 +dsbas663 toSci 0.0E-3 -> 0.0000 +dsbas664 toSci 0.0E-4 -> 0.00000 +dsbas665 toSci 0.0E-5 -> 0.000000 +dsbas666 toSci 0.0E-6 -> 0E-7 +dsbas667 toSci 0.0E-7 -> 0E-8 +dsbas668 toSci 0.0E-8 -> 0E-9 +dsbas669 toSci 0.0E-9 -> 0E-10 + +dsbas670 toSci 0.00E-0 -> 0.00 +dsbas671 toSci 0.00E-1 -> 0.000 +dsbas672 toSci 0.00E-2 -> 0.0000 +dsbas673 toSci 0.00E-3 -> 0.00000 +dsbas674 toSci 0.00E-4 -> 0.000000 +dsbas675 toSci 0.00E-5 -> 0E-7 +dsbas676 toSci 0.00E-6 -> 0E-8 +dsbas677 toSci 0.00E-7 -> 0E-9 +dsbas678 toSci 0.00E-8 -> 0E-10 +dsbas679 toSci 0.00E-9 -> 0E-11 + +dsbas680 toSci 000000. -> 0 +dsbas681 toSci 00000. -> 0 +dsbas682 toSci 0000. -> 0 +dsbas683 toSci 000. -> 0 +dsbas684 toSci 00. -> 0 +dsbas685 toSci 0. -> 0 +dsbas686 toSci +00000. -> 0 +dsbas687 toSci -00000. -> -0 +dsbas688 toSci +0. -> 0 +dsbas689 toSci -0. -> -0 + +-- Specials +dsbas700 toSci "NaN" -> NaN +dsbas701 toSci "nan" -> NaN +dsbas702 toSci "nAn" -> NaN +dsbas703 toSci "NAN" -> NaN +dsbas704 toSci "+NaN" -> NaN +dsbas705 toSci "+nan" -> NaN +dsbas706 toSci "+nAn" -> NaN +dsbas707 toSci "+NAN" -> NaN +dsbas708 toSci "-NaN" -> -NaN +dsbas709 toSci "-nan" -> -NaN +dsbas710 toSci "-nAn" -> -NaN +dsbas711 toSci "-NAN" -> -NaN +dsbas712 toSci 'NaN0' -> NaN +dsbas713 toSci 'NaN1' -> NaN1 +dsbas714 toSci 'NaN12' -> NaN12 +dsbas715 toSci 'NaN123' -> NaN123 +dsbas716 toSci 'NaN1234' -> NaN1234 +dsbas717 toSci 'NaN01' -> NaN1 +dsbas718 toSci 'NaN012' -> NaN12 +dsbas719 toSci 'NaN0123' -> NaN123 +dsbas720 toSci 'NaN01234' -> NaN1234 +dsbas721 toSci 'NaN001' -> NaN1 +dsbas722 toSci 'NaN0012' -> NaN12 +dsbas723 toSci 'NaN00123' -> NaN123 +dsbas724 toSci 'NaN001234' -> NaN1234 +dsbas725 toSci 'NaN1234567890123456' -> NaN Conversion_syntax +dsbas726 toSci 'NaN123e+1' -> NaN Conversion_syntax +dsbas727 toSci 'NaN12.45' -> NaN Conversion_syntax +dsbas728 toSci 'NaN-12' -> NaN Conversion_syntax +dsbas729 toSci 'NaN+12' -> NaN Conversion_syntax + +dsbas730 toSci "sNaN" -> sNaN +dsbas731 toSci "snan" -> sNaN +dsbas732 toSci "SnAn" -> sNaN +dsbas733 toSci "SNAN" -> sNaN +dsbas734 toSci "+sNaN" -> sNaN +dsbas735 toSci "+snan" -> sNaN +dsbas736 toSci "+SnAn" -> sNaN +dsbas737 toSci "+SNAN" -> sNaN +dsbas738 toSci "-sNaN" -> -sNaN +dsbas739 toSci "-snan" -> -sNaN +dsbas740 toSci "-SnAn" -> -sNaN +dsbas741 toSci "-SNAN" -> -sNaN +dsbas742 toSci 'sNaN0000' -> sNaN +dsbas743 toSci 'sNaN7' -> sNaN7 +dsbas744 toSci 'sNaN007234' -> sNaN7234 +dsbas745 toSci 'sNaN7234561234567890' -> NaN Conversion_syntax +dsbas746 toSci 'sNaN72.45' -> NaN Conversion_syntax +dsbas747 toSci 'sNaN-72' -> NaN Conversion_syntax + +dsbas748 toSci "Inf" -> Infinity +dsbas749 toSci "inf" -> Infinity +dsbas750 toSci "iNf" -> Infinity +dsbas751 toSci "INF" -> Infinity +dsbas752 toSci "+Inf" -> Infinity +dsbas753 toSci "+inf" -> Infinity +dsbas754 toSci "+iNf" -> Infinity +dsbas755 toSci "+INF" -> Infinity +dsbas756 toSci "-Inf" -> -Infinity +dsbas757 toSci "-inf" -> -Infinity +dsbas758 toSci "-iNf" -> -Infinity +dsbas759 toSci "-INF" -> -Infinity + +dsbas760 toSci "Infinity" -> Infinity +dsbas761 toSci "infinity" -> Infinity +dsbas762 toSci "iNfInItY" -> Infinity +dsbas763 toSci "INFINITY" -> Infinity +dsbas764 toSci "+Infinity" -> Infinity +dsbas765 toSci "+infinity" -> Infinity +dsbas766 toSci "+iNfInItY" -> Infinity +dsbas767 toSci "+INFINITY" -> Infinity +dsbas768 toSci "-Infinity" -> -Infinity +dsbas769 toSci "-infinity" -> -Infinity +dsbas770 toSci "-iNfInItY" -> -Infinity +dsbas771 toSci "-INFINITY" -> -Infinity + +-- Specials and zeros for toEng +dsbast772 toEng "NaN" -> NaN +dsbast773 toEng "-Infinity" -> -Infinity +dsbast774 toEng "-sNaN" -> -sNaN +dsbast775 toEng "-NaN" -> -NaN +dsbast776 toEng "+Infinity" -> Infinity +dsbast778 toEng "+sNaN" -> sNaN +dsbast779 toEng "+NaN" -> NaN +dsbast780 toEng "INFINITY" -> Infinity +dsbast781 toEng "SNAN" -> sNaN +dsbast782 toEng "NAN" -> NaN +dsbast783 toEng "infinity" -> Infinity +dsbast784 toEng "snan" -> sNaN +dsbast785 toEng "nan" -> NaN +dsbast786 toEng "InFINITY" -> Infinity +dsbast787 toEng "SnAN" -> sNaN +dsbast788 toEng "nAN" -> NaN +dsbast789 toEng "iNfinity" -> Infinity +dsbast790 toEng "sNan" -> sNaN +dsbast791 toEng "Nan" -> NaN +dsbast792 toEng "Infinity" -> Infinity +dsbast793 toEng "sNaN" -> sNaN + +-- Zero toEng, etc. +dsbast800 toEng 0e+1 -> "0.00E+3" -- doc example + +dsbast801 toEng 0.000000000 -> 0E-9 +dsbast802 toEng 0.00000000 -> 0.00E-6 +dsbast803 toEng 0.0000000 -> 0.0E-6 +dsbast804 toEng 0.000000 -> 0.000000 +dsbast805 toEng 0.00000 -> 0.00000 +dsbast806 toEng 0.0000 -> 0.0000 +dsbast807 toEng 0.000 -> 0.000 +dsbast808 toEng 0.00 -> 0.00 +dsbast809 toEng 0.0 -> 0.0 +dsbast810 toEng .0 -> 0.0 +dsbast811 toEng 0. -> 0 +dsbast812 toEng -.0 -> -0.0 +dsbast813 toEng -0. -> -0 +dsbast814 toEng -0.0 -> -0.0 +dsbast815 toEng -0.00 -> -0.00 +dsbast816 toEng -0.000 -> -0.000 +dsbast817 toEng -0.0000 -> -0.0000 +dsbast818 toEng -0.00000 -> -0.00000 +dsbast819 toEng -0.000000 -> -0.000000 +dsbast820 toEng -0.0000000 -> -0.0E-6 +dsbast821 toEng -0.00000000 -> -0.00E-6 +dsbast822 toEng -0.000000000 -> -0E-9 + +dsbast830 toEng 0.00E+0 -> 0.00 +dsbast831 toEng 0.00E+1 -> 0.0 +dsbast832 toEng 0.00E+2 -> 0 +dsbast833 toEng 0.00E+3 -> 0.00E+3 +dsbast834 toEng 0.00E+4 -> 0.0E+3 +dsbast835 toEng 0.00E+5 -> 0E+3 +dsbast836 toEng 0.00E+6 -> 0.00E+6 +dsbast837 toEng 0.00E+7 -> 0.0E+6 +dsbast838 toEng 0.00E+8 -> 0E+6 +dsbast839 toEng 0.00E+9 -> 0.00E+9 + +dsbast840 toEng 0.0E+0 -> 0.0 +dsbast841 toEng 0.0E+1 -> 0 +dsbast842 toEng 0.0E+2 -> 0.00E+3 +dsbast843 toEng 0.0E+3 -> 0.0E+3 +dsbast844 toEng 0.0E+4 -> 0E+3 +dsbast845 toEng 0.0E+5 -> 0.00E+6 +dsbast846 toEng 0.0E+6 -> 0.0E+6 +dsbast847 toEng 0.0E+7 -> 0E+6 +dsbast848 toEng 0.0E+8 -> 0.00E+9 +dsbast849 toEng 0.0E+9 -> 0.0E+9 + +dsbast850 toEng 0E+0 -> 0 +dsbast851 toEng 0E+1 -> 0.00E+3 +dsbast852 toEng 0E+2 -> 0.0E+3 +dsbast853 toEng 0E+3 -> 0E+3 +dsbast854 toEng 0E+4 -> 0.00E+6 +dsbast855 toEng 0E+5 -> 0.0E+6 +dsbast856 toEng 0E+6 -> 0E+6 +dsbast857 toEng 0E+7 -> 0.00E+9 +dsbast858 toEng 0E+8 -> 0.0E+9 +dsbast859 toEng 0E+9 -> 0E+9 + +dsbast860 toEng 0.0E-0 -> 0.0 +dsbast861 toEng 0.0E-1 -> 0.00 +dsbast862 toEng 0.0E-2 -> 0.000 +dsbast863 toEng 0.0E-3 -> 0.0000 +dsbast864 toEng 0.0E-4 -> 0.00000 +dsbast865 toEng 0.0E-5 -> 0.000000 +dsbast866 toEng 0.0E-6 -> 0.0E-6 +dsbast867 toEng 0.0E-7 -> 0.00E-6 +dsbast868 toEng 0.0E-8 -> 0E-9 +dsbast869 toEng 0.0E-9 -> 0.0E-9 + +dsbast870 toEng 0.00E-0 -> 0.00 +dsbast871 toEng 0.00E-1 -> 0.000 +dsbast872 toEng 0.00E-2 -> 0.0000 +dsbast873 toEng 0.00E-3 -> 0.00000 +dsbast874 toEng 0.00E-4 -> 0.000000 +dsbast875 toEng 0.00E-5 -> 0.0E-6 +dsbast876 toEng 0.00E-6 -> 0.00E-6 +dsbast877 toEng 0.00E-7 -> 0E-9 +dsbast878 toEng 0.00E-8 -> 0.0E-9 +dsbast879 toEng 0.00E-9 -> 0.00E-9 + +-- long input strings +dsbas801 tosci '01234567' -> 1234567 +dsbas802 tosci '001234567' -> 1234567 +dsbas803 tosci '0001234567' -> 1234567 +dsbas804 tosci '00001234567' -> 1234567 +dsbas805 tosci '000001234567' -> 1234567 +dsbas806 tosci '0000001234567' -> 1234567 +dsbas807 tosci '00000001234567' -> 1234567 +dsbas808 tosci '000000001234567' -> 1234567 +dsbas809 tosci '0000000001234567' -> 1234567 +dsbas810 tosci '00000000001234567' -> 1234567 + +dsbas811 tosci '0.1234567' -> 0.1234567 +dsbas812 tosci '0.01234567' -> 0.01234567 +dsbas813 tosci '0.001234567' -> 0.001234567 +dsbas814 tosci '0.0001234567' -> 0.0001234567 +dsbas815 tosci '0.00001234567' -> 0.00001234567 +dsbas816 tosci '0.000001234567' -> 0.000001234567 +dsbas817 tosci '0.0000001234567' -> 1.234567E-7 +dsbas818 tosci '0.00000001234567' -> 1.234567E-8 +dsbas819 tosci '0.000000001234567' -> 1.234567E-9 +dsbas820 tosci '0.0000000001234567' -> 1.234567E-10 + +dsbas821 tosci '123456790' -> 1.234568E+8 Inexact Rounded +dsbas822 tosci '1234567901' -> 1.234568E+9 Inexact Rounded +dsbas823 tosci '12345679012' -> 1.234568E+10 Inexact Rounded +dsbas824 tosci '123456790123' -> 1.234568E+11 Inexact Rounded +dsbas825 tosci '1234567901234' -> 1.234568E+12 Inexact Rounded +dsbas826 tosci '12345679012345' -> 1.234568E+13 Inexact Rounded +dsbas827 tosci '123456790123456' -> 1.234568E+14 Inexact Rounded +dsbas828 tosci '1234567901234567' -> 1.234568E+15 Inexact Rounded +dsbas829 tosci '1234567890123456' -> 1.234568E+15 Inexact Rounded + +-- subnormals and overflows +dsbas906 toSci '99e999999999' -> Infinity Overflow Inexact Rounded +dsbas907 toSci '999e999999999' -> Infinity Overflow Inexact Rounded +dsbas908 toSci '0.9e-999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas909 toSci '0.09e-999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas910 toSci '0.1e1000000000' -> Infinity Overflow Inexact Rounded +dsbas911 toSci '10e-1000000000' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas912 toSci '0.9e9999999999' -> Infinity Overflow Inexact Rounded +dsbas913 toSci '99e-9999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas914 toSci '111e9999999999' -> Infinity Overflow Inexact Rounded +dsbas915 toSci '1111e-9999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas916 toSci '1111e-99999999999' -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas917 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +-- negatives the same +dsbas918 toSci '-99e999999999' -> -Infinity Overflow Inexact Rounded +dsbas919 toSci '-999e999999999' -> -Infinity Overflow Inexact Rounded +dsbas920 toSci '-0.9e-999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas921 toSci '-0.09e-999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas922 toSci '-0.1e1000000000' -> -Infinity Overflow Inexact Rounded +dsbas923 toSci '-10e-1000000000' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas924 toSci '-0.9e9999999999' -> -Infinity Overflow Inexact Rounded +dsbas925 toSci '-99e-9999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas926 toSci '-111e9999999999' -> -Infinity Overflow Inexact Rounded +dsbas927 toSci '-1111e-9999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas928 toSci '-1111e-99999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas929 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded + +-- overflow results at different rounding modes +rounding: ceiling +dsbas930 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dsbas931 toSci '-7e10000' -> -9.999999E+96 Overflow Inexact Rounded +rounding: up +dsbas932 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dsbas933 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: down +dsbas934 toSci '7e10000' -> 9.999999E+96 Overflow Inexact Rounded +dsbas935 toSci '-7e10000' -> -9.999999E+96 Overflow Inexact Rounded +rounding: floor +dsbas936 toSci '7e10000' -> 9.999999E+96 Overflow Inexact Rounded +dsbas937 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded + +rounding: half_up +dsbas938 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dsbas939 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: half_even +dsbas940 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dsbas941 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded +rounding: half_down +dsbas942 toSci '7e10000' -> Infinity Overflow Inexact Rounded +dsbas943 toSci '-7e10000' -> -Infinity Overflow Inexact Rounded + +rounding: half_even + +-- Now check 854/754r some subnormals and underflow to 0 +dsbem400 toSci 1.0000E-86 -> 1.0000E-86 +dsbem401 toSci 0.1E-97 -> 1E-98 Subnormal +dsbem402 toSci 0.1000E-97 -> 1.000E-98 Subnormal +dsbem403 toSci 0.0100E-97 -> 1.00E-99 Subnormal +dsbem404 toSci 0.0010E-97 -> 1.0E-100 Subnormal +dsbem405 toSci 0.0001E-97 -> 1E-101 Subnormal +dsbem406 toSci 0.00010E-97 -> 1E-101 Subnormal Rounded +dsbem407 toSci 0.00013E-97 -> 1E-101 Underflow Subnormal Inexact Rounded +dsbem408 toSci 0.00015E-97 -> 2E-101 Underflow Subnormal Inexact Rounded +dsbem409 toSci 0.00017E-97 -> 2E-101 Underflow Subnormal Inexact Rounded +dsbem410 toSci 0.00023E-97 -> 2E-101 Underflow Subnormal Inexact Rounded +dsbem411 toSci 0.00025E-97 -> 2E-101 Underflow Subnormal Inexact Rounded +dsbem412 toSci 0.00027E-97 -> 3E-101 Underflow Subnormal Inexact Rounded +dsbem413 toSci 0.000149E-97 -> 1E-101 Underflow Subnormal Inexact Rounded +dsbem414 toSci 0.000150E-97 -> 2E-101 Underflow Subnormal Inexact Rounded +dsbem415 toSci 0.000151E-97 -> 2E-101 Underflow Subnormal Inexact Rounded +dsbem416 toSci 0.000249E-97 -> 2E-101 Underflow Subnormal Inexact Rounded +dsbem417 toSci 0.000250E-97 -> 2E-101 Underflow Subnormal Inexact Rounded +dsbem418 toSci 0.000251E-97 -> 3E-101 Underflow Subnormal Inexact Rounded +dsbem419 toSci 0.00009E-97 -> 1E-101 Underflow Subnormal Inexact Rounded +dsbem420 toSci 0.00005E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbem421 toSci 0.00003E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbem422 toSci 0.000009E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbem423 toSci 0.000005E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbem424 toSci 0.000003E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped + +dsbem425 toSci 0.001049E-97 -> 1.0E-100 Underflow Subnormal Inexact Rounded +dsbem426 toSci 0.001050E-97 -> 1.0E-100 Underflow Subnormal Inexact Rounded +dsbem427 toSci 0.001051E-97 -> 1.1E-100 Underflow Subnormal Inexact Rounded +dsbem428 toSci 0.001149E-97 -> 1.1E-100 Underflow Subnormal Inexact Rounded +dsbem429 toSci 0.001150E-97 -> 1.2E-100 Underflow Subnormal Inexact Rounded +dsbem430 toSci 0.001151E-97 -> 1.2E-100 Underflow Subnormal Inexact Rounded + +dsbem432 toSci 0.010049E-97 -> 1.00E-99 Underflow Subnormal Inexact Rounded +dsbem433 toSci 0.010050E-97 -> 1.00E-99 Underflow Subnormal Inexact Rounded +dsbem434 toSci 0.010051E-97 -> 1.01E-99 Underflow Subnormal Inexact Rounded +dsbem435 toSci 0.010149E-97 -> 1.01E-99 Underflow Subnormal Inexact Rounded +dsbem436 toSci 0.010150E-97 -> 1.02E-99 Underflow Subnormal Inexact Rounded +dsbem437 toSci 0.010151E-97 -> 1.02E-99 Underflow Subnormal Inexact Rounded + +dsbem440 toSci 0.10103E-97 -> 1.010E-98 Underflow Subnormal Inexact Rounded +dsbem441 toSci 0.10105E-97 -> 1.010E-98 Underflow Subnormal Inexact Rounded +dsbem442 toSci 0.10107E-97 -> 1.011E-98 Underflow Subnormal Inexact Rounded +dsbem443 toSci 0.10113E-97 -> 1.011E-98 Underflow Subnormal Inexact Rounded +dsbem444 toSci 0.10115E-97 -> 1.012E-98 Underflow Subnormal Inexact Rounded +dsbem445 toSci 0.10117E-97 -> 1.012E-98 Underflow Subnormal Inexact Rounded + +dsbem450 toSci 1.10730E-98 -> 1.107E-98 Underflow Subnormal Inexact Rounded +dsbem451 toSci 1.10750E-98 -> 1.108E-98 Underflow Subnormal Inexact Rounded +dsbem452 toSci 1.10770E-98 -> 1.108E-98 Underflow Subnormal Inexact Rounded +dsbem453 toSci 1.10830E-98 -> 1.108E-98 Underflow Subnormal Inexact Rounded +dsbem454 toSci 1.10850E-98 -> 1.108E-98 Underflow Subnormal Inexact Rounded +dsbem455 toSci 1.10870E-98 -> 1.109E-98 Underflow Subnormal Inexact Rounded + +-- make sure sign OK +dsbem456 toSci -0.10103E-97 -> -1.010E-98 Underflow Subnormal Inexact Rounded +dsbem457 toSci -0.10105E-97 -> -1.010E-98 Underflow Subnormal Inexact Rounded +dsbem458 toSci -0.10107E-97 -> -1.011E-98 Underflow Subnormal Inexact Rounded +dsbem459 toSci -0.10113E-97 -> -1.011E-98 Underflow Subnormal Inexact Rounded +dsbem460 toSci -0.10115E-97 -> -1.012E-98 Underflow Subnormal Inexact Rounded +dsbem461 toSci -0.10117E-97 -> -1.012E-98 Underflow Subnormal Inexact Rounded + +-- '999s' cases +dsbem464 toSci 999999E-98 -> 9.99999E-93 +dsbem465 toSci 99999.0E-97 -> 9.99990E-93 +dsbem466 toSci 99999.E-97 -> 9.9999E-93 +dsbem467 toSci 9999.9E-97 -> 9.9999E-94 +dsbem468 toSci 999.99E-97 -> 9.9999E-95 +dsbem469 toSci 99.999E-97 -> 9.9999E-96 Subnormal +dsbem470 toSci 9.9999E-97 -> 9.9999E-97 Subnormal +dsbem471 toSci 0.99999E-97 -> 1.0000E-97 Underflow Subnormal Inexact Rounded +dsbem472 toSci 0.099999E-97 -> 1.000E-98 Underflow Subnormal Inexact Rounded +dsbem473 toSci 0.0099999E-97 -> 1.00E-99 Underflow Subnormal Inexact Rounded +dsbem474 toSci 0.00099999E-97 -> 1.0E-100 Underflow Subnormal Inexact Rounded +dsbem475 toSci 0.000099999E-97 -> 1E-101 Underflow Subnormal Inexact Rounded +dsbem476 toSci 0.0000099999E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbem477 toSci 0.00000099999E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbem478 toSci 0.000000099999E-97 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped + +-- Exponents with insignificant leading zeros +dsbas1001 toSci 1e999999999 -> Infinity Overflow Inexact Rounded +dsbas1002 toSci 1e0999999999 -> Infinity Overflow Inexact Rounded +dsbas1003 toSci 1e00999999999 -> Infinity Overflow Inexact Rounded +dsbas1004 toSci 1e000999999999 -> Infinity Overflow Inexact Rounded +dsbas1005 toSci 1e000000000000999999999 -> Infinity Overflow Inexact Rounded +dsbas1006 toSci 1e000000000001000000007 -> Infinity Overflow Inexact Rounded +dsbas1007 toSci 1e-999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas1008 toSci 1e-0999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas1009 toSci 1e-00999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas1010 toSci 1e-000999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas1011 toSci 1e-000000000000999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +dsbas1012 toSci 1e-000000000001000000007 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped + +-- check for double-rounded subnormals +dsbas1041 toSci 1.1152444E-96 -> 1.11524E-96 Inexact Rounded Subnormal Underflow +dsbas1042 toSci 1.1152445E-96 -> 1.11524E-96 Inexact Rounded Subnormal Underflow +dsbas1043 toSci 1.1152446E-96 -> 1.11524E-96 Inexact Rounded Subnormal Underflow + +-- clamped zeros [see also clamp.decTest] +dsbas1075 toSci 0e+10000 -> 0E+90 Clamped +dsbas1076 toSci 0e-10000 -> 0E-101 Clamped +dsbas1077 toSci -0e+10000 -> -0E+90 Clamped +dsbas1078 toSci -0e-10000 -> -0E-101 Clamped + +-- extreme values from next-wider +dsbas1101 toSci -9.999999999999999E+384 -> -Infinity Overflow Inexact Rounded +dsbas1102 toSci -1E-383 -> -0E-101 Inexact Rounded Subnormal Underflow Clamped +dsbas1103 toSci -1E-398 -> -0E-101 Inexact Rounded Subnormal Underflow Clamped +dsbas1104 toSci -0 -> -0 +dsbas1105 toSci +0 -> 0 +dsbas1106 toSci +1E-398 -> 0E-101 Inexact Rounded Subnormal Underflow Clamped +dsbas1107 toSci +1E-383 -> 0E-101 Inexact Rounded Subnormal Underflow Clamped +dsbas1108 toSci +9.999999999999999E+384 -> Infinity Overflow Inexact Rounded + +-- narrowing case +dsbas1110 toSci 2.000000000000000E-99 -> 2.00E-99 Rounded Subnormal diff --git a/Lib/test/decimaltestdata/dsEncode.decTest b/Lib/test/decimaltestdata/dsEncode.decTest index 7264748..818578b 100644 --- a/Lib/test/decimaltestdata/dsEncode.decTest +++ b/Lib/test/decimaltestdata/dsEncode.decTest @@ -1,372 +1,372 @@ ------------------------------------------------------------------------- --- dsEncode.decTest -- decimal four-byte format testcases -- --- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- --- [Previously called decimal32.decTest] -version: 2.59 - --- This set of tests is for the four-byte concrete representation. --- Its characteristics are: --- --- 1 bit sign --- 5 bits combination field --- 6 bits exponent continuation --- 20 bits coefficient continuation --- --- Total exponent length 8 bits --- Total coefficient length 24 bits (7 digits) --- --- Elimit = 191 (maximum encoded exponent) --- Emax = 96 (largest exponent value) --- Emin = -95 (smallest exponent value) --- bias = 101 (subtracted from encoded exponent) = -Etiny - --- The testcases here have only exactly representable data on the --- 'left-hand-side'; rounding from strings is tested in 'base' --- testcase groups. - -extended: 1 -clamp: 1 -precision: 7 -rounding: half_up -maxExponent: 96 -minExponent: -95 - --- General testcases --- (mostly derived from the Strawman 4 document and examples) -decs001 apply #A23003D0 -> -7.50 -decs002 apply -7.50 -> #A23003D0 --- derivative canonical plain strings -decs003 apply #A26003D0 -> -7.50E+3 -decs004 apply -7.50E+3 -> #A26003D0 -decs005 apply #A25003D0 -> -750 -decs006 apply -750 -> #A25003D0 -decs007 apply #A24003D0 -> -75.0 -decs008 apply -75.0 -> #A24003D0 -decs009 apply #A22003D0 -> -0.750 -decs010 apply -0.750 -> #A22003D0 -decs011 apply #A21003D0 -> -0.0750 -decs012 apply -0.0750 -> #A21003D0 -decs013 apply #A1f003D0 -> -0.000750 -decs014 apply -0.000750 -> #A1f003D0 -decs015 apply #A1d003D0 -> -0.00000750 -decs016 apply -0.00000750 -> #A1d003D0 -decs017 apply #A1c003D0 -> -7.50E-7 -decs018 apply -7.50E-7 -> #A1c003D0 - --- Normality -decs020 apply 1234567 -> #2654d2e7 -decs021 apply -1234567 -> #a654d2e7 -decs022 apply 1111111 -> #26524491 - --- Nmax and similar -decs031 apply 9.999999E+96 -> #77f3fcff -decs032 apply #77f3fcff -> 9.999999E+96 -decs033 apply 1.234567E+96 -> #47f4d2e7 -decs034 apply #47f4d2e7 -> 1.234567E+96 --- fold-downs (more below) -decs035 apply 1.23E+96 -> #47f4c000 Clamped -decs036 apply #47f4c000 -> 1.230000E+96 -decs037 apply 1E+96 -> #47f00000 Clamped -decs038 apply #47f00000 -> 1.000000E+96 - -decs051 apply 12345 -> #225049c5 -decs052 apply #225049c5 -> 12345 -decs053 apply 1234 -> #22500534 -decs054 apply #22500534 -> 1234 -decs055 apply 123 -> #225000a3 -decs056 apply #225000a3 -> 123 -decs057 apply 12 -> #22500012 -decs058 apply #22500012 -> 12 -decs059 apply 1 -> #22500001 -decs060 apply #22500001 -> 1 -decs061 apply 1.23 -> #223000a3 -decs062 apply #223000a3 -> 1.23 -decs063 apply 123.45 -> #223049c5 -decs064 apply #223049c5 -> 123.45 - --- Nmin and below -decs071 apply 1E-95 -> #00600001 -decs072 apply #00600001 -> 1E-95 -decs073 apply 1.000000E-95 -> #04000000 -decs074 apply #04000000 -> 1.000000E-95 -decs075 apply 1.000001E-95 -> #04000001 -decs076 apply #04000001 -> 1.000001E-95 - -decs077 apply 0.100000E-95 -> #00020000 Subnormal -decs07x apply 1.00000E-96 -> 1.00000E-96 Subnormal -decs078 apply #00020000 -> 1.00000E-96 Subnormal -decs079 apply 0.000010E-95 -> #00000010 Subnormal -decs080 apply #00000010 -> 1.0E-100 Subnormal -decs081 apply 0.000001E-95 -> #00000001 Subnormal -decs082 apply #00000001 -> 1E-101 Subnormal -decs083 apply 1e-101 -> #00000001 Subnormal -decs084 apply #00000001 -> 1E-101 Subnormal -decs08x apply 1e-101 -> 1E-101 Subnormal - --- underflows cannot be tested; just check edge case -decs090 apply 1e-101 -> #00000001 Subnormal - --- same again, negatives -- - --- Nmax and similar -decs122 apply -9.999999E+96 -> #f7f3fcff -decs123 apply #f7f3fcff -> -9.999999E+96 -decs124 apply -1.234567E+96 -> #c7f4d2e7 -decs125 apply #c7f4d2e7 -> -1.234567E+96 --- fold-downs (more below) -decs130 apply -1.23E+96 -> #c7f4c000 Clamped -decs131 apply #c7f4c000 -> -1.230000E+96 -decs132 apply -1E+96 -> #c7f00000 Clamped -decs133 apply #c7f00000 -> -1.000000E+96 - -decs151 apply -12345 -> #a25049c5 -decs152 apply #a25049c5 -> -12345 -decs153 apply -1234 -> #a2500534 -decs154 apply #a2500534 -> -1234 -decs155 apply -123 -> #a25000a3 -decs156 apply #a25000a3 -> -123 -decs157 apply -12 -> #a2500012 -decs158 apply #a2500012 -> -12 -decs159 apply -1 -> #a2500001 -decs160 apply #a2500001 -> -1 -decs161 apply -1.23 -> #a23000a3 -decs162 apply #a23000a3 -> -1.23 -decs163 apply -123.45 -> #a23049c5 -decs164 apply #a23049c5 -> -123.45 - --- Nmin and below -decs171 apply -1E-95 -> #80600001 -decs172 apply #80600001 -> -1E-95 -decs173 apply -1.000000E-95 -> #84000000 -decs174 apply #84000000 -> -1.000000E-95 -decs175 apply -1.000001E-95 -> #84000001 -decs176 apply #84000001 -> -1.000001E-95 - -decs177 apply -0.100000E-95 -> #80020000 Subnormal -decs178 apply #80020000 -> -1.00000E-96 Subnormal -decs179 apply -0.000010E-95 -> #80000010 Subnormal -decs180 apply #80000010 -> -1.0E-100 Subnormal -decs181 apply -0.000001E-95 -> #80000001 Subnormal -decs182 apply #80000001 -> -1E-101 Subnormal -decs183 apply -1e-101 -> #80000001 Subnormal -decs184 apply #80000001 -> -1E-101 Subnormal - --- underflow edge case -decs190 apply -1e-101 -> #80000001 Subnormal - --- zeros -decs400 apply 0E-400 -> #00000000 Clamped -decs401 apply 0E-101 -> #00000000 -decs402 apply #00000000 -> 0E-101 -decs403 apply 0.000000E-95 -> #00000000 -decs404 apply #00000000 -> 0E-101 -decs405 apply 0E-2 -> #22300000 -decs406 apply #22300000 -> 0.00 -decs407 apply 0 -> #22500000 -decs408 apply #22500000 -> 0 -decs409 apply 0E+3 -> #22800000 -decs410 apply #22800000 -> 0E+3 -decs411 apply 0E+90 -> #43f00000 -decs412 apply #43f00000 -> 0E+90 --- clamped zeros... -decs413 apply 0E+91 -> #43f00000 Clamped -decs414 apply #43f00000 -> 0E+90 -decs415 apply 0E+96 -> #43f00000 Clamped -decs416 apply #43f00000 -> 0E+90 -decs417 apply 0E+400 -> #43f00000 Clamped -decs418 apply #43f00000 -> 0E+90 - --- negative zeros -decs420 apply -0E-400 -> #80000000 Clamped -decs421 apply -0E-101 -> #80000000 -decs422 apply #80000000 -> -0E-101 -decs423 apply -0.000000E-95 -> #80000000 -decs424 apply #80000000 -> -0E-101 -decs425 apply -0E-2 -> #a2300000 -decs426 apply #a2300000 -> -0.00 -decs427 apply -0 -> #a2500000 -decs428 apply #a2500000 -> -0 -decs429 apply -0E+3 -> #a2800000 -decs430 apply #a2800000 -> -0E+3 -decs431 apply -0E+90 -> #c3f00000 -decs432 apply #c3f00000 -> -0E+90 --- clamped zeros... -decs433 apply -0E+91 -> #c3f00000 Clamped -decs434 apply #c3f00000 -> -0E+90 -decs435 apply -0E+96 -> #c3f00000 Clamped -decs436 apply #c3f00000 -> -0E+90 -decs437 apply -0E+400 -> #c3f00000 Clamped -decs438 apply #c3f00000 -> -0E+90 - --- Specials -decs500 apply Infinity -> #78000000 -decs501 apply #78787878 -> #78000000 -decs502 apply #78000000 -> Infinity -decs503 apply #79797979 -> #78000000 -decs504 apply #79000000 -> Infinity -decs505 apply #7a7a7a7a -> #78000000 -decs506 apply #7a000000 -> Infinity -decs507 apply #7b7b7b7b -> #78000000 -decs508 apply #7b000000 -> Infinity -decs509 apply #7c7c7c7c -> #7c0c7c7c - -decs510 apply NaN -> #7c000000 -decs511 apply #7c000000 -> NaN -decs512 apply #7d7d7d7d -> #7c0d7d7d -decs513 apply #7d000000 -> NaN -decs514 apply #7e7e7e7e -> #7e0e7c7e -decs515 apply #7e000000 -> sNaN -decs516 apply #7f7f7f7f -> #7e0f7c7f -decs517 apply #7f000000 -> sNaN -decs518 apply #7fffffff -> sNaN999999 -decs519 apply #7fffffff -> #7e03fcff - -decs520 apply -Infinity -> #f8000000 -decs521 apply #f8787878 -> #f8000000 -decs522 apply #f8000000 -> -Infinity -decs523 apply #f9797979 -> #f8000000 -decs524 apply #f9000000 -> -Infinity -decs525 apply #fa7a7a7a -> #f8000000 -decs526 apply #fa000000 -> -Infinity -decs527 apply #fb7b7b7b -> #f8000000 -decs528 apply #fb000000 -> -Infinity - -decs529 apply -NaN -> #fc000000 -decs530 apply #fc7c7c7c -> #fc0c7c7c -decs531 apply #fc000000 -> -NaN -decs532 apply #fd7d7d7d -> #fc0d7d7d -decs533 apply #fd000000 -> -NaN -decs534 apply #fe7e7e7e -> #fe0e7c7e -decs535 apply #fe000000 -> -sNaN -decs536 apply #ff7f7f7f -> #fe0f7c7f -decs537 apply #ff000000 -> -sNaN -decs538 apply #ffffffff -> -sNaN999999 -decs539 apply #ffffffff -> #fe03fcff - --- diagnostic NaNs -decs540 apply NaN -> #7c000000 -decs541 apply NaN0 -> #7c000000 -decs542 apply NaN1 -> #7c000001 -decs543 apply NaN12 -> #7c000012 -decs544 apply NaN79 -> #7c000079 -decs545 apply NaN12345 -> #7c0049c5 -decs546 apply NaN123456 -> #7c028e56 -decs547 apply NaN799799 -> #7c0f7fdf -decs548 apply NaN999999 -> #7c03fcff - - --- fold-down full sequence -decs601 apply 1E+96 -> #47f00000 Clamped -decs602 apply #47f00000 -> 1.000000E+96 -decs603 apply 1E+95 -> #43f20000 Clamped -decs604 apply #43f20000 -> 1.00000E+95 -decs605 apply 1E+94 -> #43f04000 Clamped -decs606 apply #43f04000 -> 1.0000E+94 -decs607 apply 1E+93 -> #43f00400 Clamped -decs608 apply #43f00400 -> 1.000E+93 -decs609 apply 1E+92 -> #43f00080 Clamped -decs610 apply #43f00080 -> 1.00E+92 -decs611 apply 1E+91 -> #43f00010 Clamped -decs612 apply #43f00010 -> 1.0E+91 -decs613 apply 1E+90 -> #43f00001 -decs614 apply #43f00001 -> 1E+90 - - --- Selected DPD codes -decs700 apply #22500000 -> 0 -decs701 apply #22500009 -> 9 -decs702 apply #22500010 -> 10 -decs703 apply #22500019 -> 19 -decs704 apply #22500020 -> 20 -decs705 apply #22500029 -> 29 -decs706 apply #22500030 -> 30 -decs707 apply #22500039 -> 39 -decs708 apply #22500040 -> 40 -decs709 apply #22500049 -> 49 -decs710 apply #22500050 -> 50 -decs711 apply #22500059 -> 59 -decs712 apply #22500060 -> 60 -decs713 apply #22500069 -> 69 -decs714 apply #22500070 -> 70 -decs715 apply #22500071 -> 71 -decs716 apply #22500072 -> 72 -decs717 apply #22500073 -> 73 -decs718 apply #22500074 -> 74 -decs719 apply #22500075 -> 75 -decs720 apply #22500076 -> 76 -decs721 apply #22500077 -> 77 -decs722 apply #22500078 -> 78 -decs723 apply #22500079 -> 79 - -decs730 apply #2250029e -> 994 -decs731 apply #2250029f -> 995 -decs732 apply #225002a0 -> 520 -decs733 apply #225002a1 -> 521 - --- DPD: one of each of the huffman groups -decs740 apply #225003f7 -> 777 -decs741 apply #225003f8 -> 778 -decs742 apply #225003eb -> 787 -decs743 apply #2250037d -> 877 -decs744 apply #2250039f -> 997 -decs745 apply #225003bf -> 979 -decs746 apply #225003df -> 799 -decs747 apply #2250006e -> 888 - - --- DPD all-highs cases (includes the 24 redundant codes) -decs750 apply #2250006e -> 888 -decs751 apply #2250016e -> 888 -decs752 apply #2250026e -> 888 -decs753 apply #2250036e -> 888 -decs754 apply #2250006f -> 889 -decs755 apply #2250016f -> 889 -decs756 apply #2250026f -> 889 -decs757 apply #2250036f -> 889 - -decs760 apply #2250007e -> 898 -decs761 apply #2250017e -> 898 -decs762 apply #2250027e -> 898 -decs763 apply #2250037e -> 898 -decs764 apply #2250007f -> 899 -decs765 apply #2250017f -> 899 -decs766 apply #2250027f -> 899 -decs767 apply #2250037f -> 899 - -decs770 apply #225000ee -> 988 -decs771 apply #225001ee -> 988 -decs772 apply #225002ee -> 988 -decs773 apply #225003ee -> 988 -decs774 apply #225000ef -> 989 -decs775 apply #225001ef -> 989 -decs776 apply #225002ef -> 989 -decs777 apply #225003ef -> 989 - -decs780 apply #225000fe -> 998 -decs781 apply #225001fe -> 998 -decs782 apply #225002fe -> 998 -decs783 apply #225003fe -> 998 -decs784 apply #225000ff -> 999 -decs785 apply #225001ff -> 999 -decs786 apply #225002ff -> 999 -decs787 apply #225003ff -> 999 - --- narrowing case -decs790 apply 2.00E-99 -> #00000100 Subnormal -decs791 apply #00000100 -> 2.00E-99 Subnormal +------------------------------------------------------------------------ +-- dsEncode.decTest -- decimal four-byte format testcases -- +-- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +-- [Previously called decimal32.decTest] +version: 2.59 + +-- This set of tests is for the four-byte concrete representation. +-- Its characteristics are: +-- +-- 1 bit sign +-- 5 bits combination field +-- 6 bits exponent continuation +-- 20 bits coefficient continuation +-- +-- Total exponent length 8 bits +-- Total coefficient length 24 bits (7 digits) +-- +-- Elimit = 191 (maximum encoded exponent) +-- Emax = 96 (largest exponent value) +-- Emin = -95 (smallest exponent value) +-- bias = 101 (subtracted from encoded exponent) = -Etiny + +-- The testcases here have only exactly representable data on the +-- 'left-hand-side'; rounding from strings is tested in 'base' +-- testcase groups. + +extended: 1 +clamp: 1 +precision: 7 +rounding: half_up +maxExponent: 96 +minExponent: -95 + +-- General testcases +-- (mostly derived from the Strawman 4 document and examples) +decs001 apply #A23003D0 -> -7.50 +decs002 apply -7.50 -> #A23003D0 +-- derivative canonical plain strings +decs003 apply #A26003D0 -> -7.50E+3 +decs004 apply -7.50E+3 -> #A26003D0 +decs005 apply #A25003D0 -> -750 +decs006 apply -750 -> #A25003D0 +decs007 apply #A24003D0 -> -75.0 +decs008 apply -75.0 -> #A24003D0 +decs009 apply #A22003D0 -> -0.750 +decs010 apply -0.750 -> #A22003D0 +decs011 apply #A21003D0 -> -0.0750 +decs012 apply -0.0750 -> #A21003D0 +decs013 apply #A1f003D0 -> -0.000750 +decs014 apply -0.000750 -> #A1f003D0 +decs015 apply #A1d003D0 -> -0.00000750 +decs016 apply -0.00000750 -> #A1d003D0 +decs017 apply #A1c003D0 -> -7.50E-7 +decs018 apply -7.50E-7 -> #A1c003D0 + +-- Normality +decs020 apply 1234567 -> #2654d2e7 +decs021 apply -1234567 -> #a654d2e7 +decs022 apply 1111111 -> #26524491 + +-- Nmax and similar +decs031 apply 9.999999E+96 -> #77f3fcff +decs032 apply #77f3fcff -> 9.999999E+96 +decs033 apply 1.234567E+96 -> #47f4d2e7 +decs034 apply #47f4d2e7 -> 1.234567E+96 +-- fold-downs (more below) +decs035 apply 1.23E+96 -> #47f4c000 Clamped +decs036 apply #47f4c000 -> 1.230000E+96 +decs037 apply 1E+96 -> #47f00000 Clamped +decs038 apply #47f00000 -> 1.000000E+96 + +decs051 apply 12345 -> #225049c5 +decs052 apply #225049c5 -> 12345 +decs053 apply 1234 -> #22500534 +decs054 apply #22500534 -> 1234 +decs055 apply 123 -> #225000a3 +decs056 apply #225000a3 -> 123 +decs057 apply 12 -> #22500012 +decs058 apply #22500012 -> 12 +decs059 apply 1 -> #22500001 +decs060 apply #22500001 -> 1 +decs061 apply 1.23 -> #223000a3 +decs062 apply #223000a3 -> 1.23 +decs063 apply 123.45 -> #223049c5 +decs064 apply #223049c5 -> 123.45 + +-- Nmin and below +decs071 apply 1E-95 -> #00600001 +decs072 apply #00600001 -> 1E-95 +decs073 apply 1.000000E-95 -> #04000000 +decs074 apply #04000000 -> 1.000000E-95 +decs075 apply 1.000001E-95 -> #04000001 +decs076 apply #04000001 -> 1.000001E-95 + +decs077 apply 0.100000E-95 -> #00020000 Subnormal +decs07x apply 1.00000E-96 -> 1.00000E-96 Subnormal +decs078 apply #00020000 -> 1.00000E-96 Subnormal +decs079 apply 0.000010E-95 -> #00000010 Subnormal +decs080 apply #00000010 -> 1.0E-100 Subnormal +decs081 apply 0.000001E-95 -> #00000001 Subnormal +decs082 apply #00000001 -> 1E-101 Subnormal +decs083 apply 1e-101 -> #00000001 Subnormal +decs084 apply #00000001 -> 1E-101 Subnormal +decs08x apply 1e-101 -> 1E-101 Subnormal + +-- underflows cannot be tested; just check edge case +decs090 apply 1e-101 -> #00000001 Subnormal + +-- same again, negatives -- + +-- Nmax and similar +decs122 apply -9.999999E+96 -> #f7f3fcff +decs123 apply #f7f3fcff -> -9.999999E+96 +decs124 apply -1.234567E+96 -> #c7f4d2e7 +decs125 apply #c7f4d2e7 -> -1.234567E+96 +-- fold-downs (more below) +decs130 apply -1.23E+96 -> #c7f4c000 Clamped +decs131 apply #c7f4c000 -> -1.230000E+96 +decs132 apply -1E+96 -> #c7f00000 Clamped +decs133 apply #c7f00000 -> -1.000000E+96 + +decs151 apply -12345 -> #a25049c5 +decs152 apply #a25049c5 -> -12345 +decs153 apply -1234 -> #a2500534 +decs154 apply #a2500534 -> -1234 +decs155 apply -123 -> #a25000a3 +decs156 apply #a25000a3 -> -123 +decs157 apply -12 -> #a2500012 +decs158 apply #a2500012 -> -12 +decs159 apply -1 -> #a2500001 +decs160 apply #a2500001 -> -1 +decs161 apply -1.23 -> #a23000a3 +decs162 apply #a23000a3 -> -1.23 +decs163 apply -123.45 -> #a23049c5 +decs164 apply #a23049c5 -> -123.45 + +-- Nmin and below +decs171 apply -1E-95 -> #80600001 +decs172 apply #80600001 -> -1E-95 +decs173 apply -1.000000E-95 -> #84000000 +decs174 apply #84000000 -> -1.000000E-95 +decs175 apply -1.000001E-95 -> #84000001 +decs176 apply #84000001 -> -1.000001E-95 + +decs177 apply -0.100000E-95 -> #80020000 Subnormal +decs178 apply #80020000 -> -1.00000E-96 Subnormal +decs179 apply -0.000010E-95 -> #80000010 Subnormal +decs180 apply #80000010 -> -1.0E-100 Subnormal +decs181 apply -0.000001E-95 -> #80000001 Subnormal +decs182 apply #80000001 -> -1E-101 Subnormal +decs183 apply -1e-101 -> #80000001 Subnormal +decs184 apply #80000001 -> -1E-101 Subnormal + +-- underflow edge case +decs190 apply -1e-101 -> #80000001 Subnormal + +-- zeros +decs400 apply 0E-400 -> #00000000 Clamped +decs401 apply 0E-101 -> #00000000 +decs402 apply #00000000 -> 0E-101 +decs403 apply 0.000000E-95 -> #00000000 +decs404 apply #00000000 -> 0E-101 +decs405 apply 0E-2 -> #22300000 +decs406 apply #22300000 -> 0.00 +decs407 apply 0 -> #22500000 +decs408 apply #22500000 -> 0 +decs409 apply 0E+3 -> #22800000 +decs410 apply #22800000 -> 0E+3 +decs411 apply 0E+90 -> #43f00000 +decs412 apply #43f00000 -> 0E+90 +-- clamped zeros... +decs413 apply 0E+91 -> #43f00000 Clamped +decs414 apply #43f00000 -> 0E+90 +decs415 apply 0E+96 -> #43f00000 Clamped +decs416 apply #43f00000 -> 0E+90 +decs417 apply 0E+400 -> #43f00000 Clamped +decs418 apply #43f00000 -> 0E+90 + +-- negative zeros +decs420 apply -0E-400 -> #80000000 Clamped +decs421 apply -0E-101 -> #80000000 +decs422 apply #80000000 -> -0E-101 +decs423 apply -0.000000E-95 -> #80000000 +decs424 apply #80000000 -> -0E-101 +decs425 apply -0E-2 -> #a2300000 +decs426 apply #a2300000 -> -0.00 +decs427 apply -0 -> #a2500000 +decs428 apply #a2500000 -> -0 +decs429 apply -0E+3 -> #a2800000 +decs430 apply #a2800000 -> -0E+3 +decs431 apply -0E+90 -> #c3f00000 +decs432 apply #c3f00000 -> -0E+90 +-- clamped zeros... +decs433 apply -0E+91 -> #c3f00000 Clamped +decs434 apply #c3f00000 -> -0E+90 +decs435 apply -0E+96 -> #c3f00000 Clamped +decs436 apply #c3f00000 -> -0E+90 +decs437 apply -0E+400 -> #c3f00000 Clamped +decs438 apply #c3f00000 -> -0E+90 + +-- Specials +decs500 apply Infinity -> #78000000 +decs501 apply #78787878 -> #78000000 +decs502 apply #78000000 -> Infinity +decs503 apply #79797979 -> #78000000 +decs504 apply #79000000 -> Infinity +decs505 apply #7a7a7a7a -> #78000000 +decs506 apply #7a000000 -> Infinity +decs507 apply #7b7b7b7b -> #78000000 +decs508 apply #7b000000 -> Infinity +decs509 apply #7c7c7c7c -> #7c0c7c7c + +decs510 apply NaN -> #7c000000 +decs511 apply #7c000000 -> NaN +decs512 apply #7d7d7d7d -> #7c0d7d7d +decs513 apply #7d000000 -> NaN +decs514 apply #7e7e7e7e -> #7e0e7c7e +decs515 apply #7e000000 -> sNaN +decs516 apply #7f7f7f7f -> #7e0f7c7f +decs517 apply #7f000000 -> sNaN +decs518 apply #7fffffff -> sNaN999999 +decs519 apply #7fffffff -> #7e03fcff + +decs520 apply -Infinity -> #f8000000 +decs521 apply #f8787878 -> #f8000000 +decs522 apply #f8000000 -> -Infinity +decs523 apply #f9797979 -> #f8000000 +decs524 apply #f9000000 -> -Infinity +decs525 apply #fa7a7a7a -> #f8000000 +decs526 apply #fa000000 -> -Infinity +decs527 apply #fb7b7b7b -> #f8000000 +decs528 apply #fb000000 -> -Infinity + +decs529 apply -NaN -> #fc000000 +decs530 apply #fc7c7c7c -> #fc0c7c7c +decs531 apply #fc000000 -> -NaN +decs532 apply #fd7d7d7d -> #fc0d7d7d +decs533 apply #fd000000 -> -NaN +decs534 apply #fe7e7e7e -> #fe0e7c7e +decs535 apply #fe000000 -> -sNaN +decs536 apply #ff7f7f7f -> #fe0f7c7f +decs537 apply #ff000000 -> -sNaN +decs538 apply #ffffffff -> -sNaN999999 +decs539 apply #ffffffff -> #fe03fcff + +-- diagnostic NaNs +decs540 apply NaN -> #7c000000 +decs541 apply NaN0 -> #7c000000 +decs542 apply NaN1 -> #7c000001 +decs543 apply NaN12 -> #7c000012 +decs544 apply NaN79 -> #7c000079 +decs545 apply NaN12345 -> #7c0049c5 +decs546 apply NaN123456 -> #7c028e56 +decs547 apply NaN799799 -> #7c0f7fdf +decs548 apply NaN999999 -> #7c03fcff + + +-- fold-down full sequence +decs601 apply 1E+96 -> #47f00000 Clamped +decs602 apply #47f00000 -> 1.000000E+96 +decs603 apply 1E+95 -> #43f20000 Clamped +decs604 apply #43f20000 -> 1.00000E+95 +decs605 apply 1E+94 -> #43f04000 Clamped +decs606 apply #43f04000 -> 1.0000E+94 +decs607 apply 1E+93 -> #43f00400 Clamped +decs608 apply #43f00400 -> 1.000E+93 +decs609 apply 1E+92 -> #43f00080 Clamped +decs610 apply #43f00080 -> 1.00E+92 +decs611 apply 1E+91 -> #43f00010 Clamped +decs612 apply #43f00010 -> 1.0E+91 +decs613 apply 1E+90 -> #43f00001 +decs614 apply #43f00001 -> 1E+90 + + +-- Selected DPD codes +decs700 apply #22500000 -> 0 +decs701 apply #22500009 -> 9 +decs702 apply #22500010 -> 10 +decs703 apply #22500019 -> 19 +decs704 apply #22500020 -> 20 +decs705 apply #22500029 -> 29 +decs706 apply #22500030 -> 30 +decs707 apply #22500039 -> 39 +decs708 apply #22500040 -> 40 +decs709 apply #22500049 -> 49 +decs710 apply #22500050 -> 50 +decs711 apply #22500059 -> 59 +decs712 apply #22500060 -> 60 +decs713 apply #22500069 -> 69 +decs714 apply #22500070 -> 70 +decs715 apply #22500071 -> 71 +decs716 apply #22500072 -> 72 +decs717 apply #22500073 -> 73 +decs718 apply #22500074 -> 74 +decs719 apply #22500075 -> 75 +decs720 apply #22500076 -> 76 +decs721 apply #22500077 -> 77 +decs722 apply #22500078 -> 78 +decs723 apply #22500079 -> 79 + +decs730 apply #2250029e -> 994 +decs731 apply #2250029f -> 995 +decs732 apply #225002a0 -> 520 +decs733 apply #225002a1 -> 521 + +-- DPD: one of each of the huffman groups +decs740 apply #225003f7 -> 777 +decs741 apply #225003f8 -> 778 +decs742 apply #225003eb -> 787 +decs743 apply #2250037d -> 877 +decs744 apply #2250039f -> 997 +decs745 apply #225003bf -> 979 +decs746 apply #225003df -> 799 +decs747 apply #2250006e -> 888 + + +-- DPD all-highs cases (includes the 24 redundant codes) +decs750 apply #2250006e -> 888 +decs751 apply #2250016e -> 888 +decs752 apply #2250026e -> 888 +decs753 apply #2250036e -> 888 +decs754 apply #2250006f -> 889 +decs755 apply #2250016f -> 889 +decs756 apply #2250026f -> 889 +decs757 apply #2250036f -> 889 + +decs760 apply #2250007e -> 898 +decs761 apply #2250017e -> 898 +decs762 apply #2250027e -> 898 +decs763 apply #2250037e -> 898 +decs764 apply #2250007f -> 899 +decs765 apply #2250017f -> 899 +decs766 apply #2250027f -> 899 +decs767 apply #2250037f -> 899 + +decs770 apply #225000ee -> 988 +decs771 apply #225001ee -> 988 +decs772 apply #225002ee -> 988 +decs773 apply #225003ee -> 988 +decs774 apply #225000ef -> 989 +decs775 apply #225001ef -> 989 +decs776 apply #225002ef -> 989 +decs777 apply #225003ef -> 989 + +decs780 apply #225000fe -> 998 +decs781 apply #225001fe -> 998 +decs782 apply #225002fe -> 998 +decs783 apply #225003fe -> 998 +decs784 apply #225000ff -> 999 +decs785 apply #225001ff -> 999 +decs786 apply #225002ff -> 999 +decs787 apply #225003ff -> 999 + +-- narrowing case +decs790 apply 2.00E-99 -> #00000100 Subnormal +decs791 apply #00000100 -> 2.00E-99 Subnormal diff --git a/Lib/test/decimaltestdata/exp.decTest b/Lib/test/decimaltestdata/exp.decTest index 021b478..eab990d 100644 --- a/Lib/test/decimaltestdata/exp.decTest +++ b/Lib/test/decimaltestdata/exp.decTest @@ -1,674 +1,674 @@ ------------------------------------------------------------------------- --- exp.decTest -- decimal natural exponentiation -- --- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- Tests of the exponential funtion. Currently all testcases here --- show results which are correctly rounded (within <= 0.5 ulp). - -extended: 1 -precision: 9 -rounding: half_even -maxExponent: 384 -minexponent: -383 - --- basics (examples in specificiation, etc.) -expx001 exp -Infinity -> 0 -expx002 exp -10 -> 0.0000453999298 Inexact Rounded -expx003 exp -1 -> 0.367879441 Inexact Rounded -expx004 exp 0 -> 1 -expx005 exp -0 -> 1 -expx006 exp 1 -> 2.71828183 Inexact Rounded -expx007 exp 0.693147181 -> 2.00000000 Inexact Rounded -expx008 exp 10 -> 22026.4658 Inexact Rounded -expx009 exp +Infinity -> Infinity - --- tiny edge cases -precision: 7 -expx011 exp 0.1 -> 1.105171 Inexact Rounded -expx012 exp 0.01 -> 1.010050 Inexact Rounded -expx013 exp 0.001 -> 1.001001 Inexact Rounded -expx014 exp 0.0001 -> 1.000100 Inexact Rounded -expx015 exp 0.00001 -> 1.000010 Inexact Rounded -expx016 exp 0.000001 -> 1.000001 Inexact Rounded -expx017 exp 0.0000001 -> 1.000000 Inexact Rounded -expx018 exp 0.0000003 -> 1.000000 Inexact Rounded -expx019 exp 0.0000004 -> 1.000000 Inexact Rounded -expx020 exp 0.0000005 -> 1.000001 Inexact Rounded -expx021 exp 0.0000008 -> 1.000001 Inexact Rounded -expx022 exp 0.0000009 -> 1.000001 Inexact Rounded -expx023 exp 0.0000010 -> 1.000001 Inexact Rounded -expx024 exp 0.0000011 -> 1.000001 Inexact Rounded -expx025 exp 0.00000009 -> 1.000000 Inexact Rounded -expx026 exp 0.00000005 -> 1.000000 Inexact Rounded -expx027 exp 0.00000004 -> 1.000000 Inexact Rounded -expx028 exp 0.00000001 -> 1.000000 Inexact Rounded - --- and some more zeros -expx030 exp 0.00000000 -> 1 -expx031 exp 0E+100 -> 1 -expx032 exp 0E-100 -> 1 -expx033 exp -0.00000000 -> 1 -expx034 exp -0E+100 -> 1 -expx035 exp -0E-100 -> 1 - --- basic e=0, e=1, e=2, e=4, e>=8 cases -precision: 7 -expx041 exp 1 -> 2.718282 Inexact Rounded -expx042 exp -1 -> 0.3678794 Inexact Rounded -expx043 exp 10 -> 22026.47 Inexact Rounded -expx044 exp -10 -> 0.00004539993 Inexact Rounded -expx045 exp 100 -> 2.688117E+43 Inexact Rounded -expx046 exp -100 -> 3.720076E-44 Inexact Rounded -expx047 exp 1000 -> Infinity Overflow Inexact Rounded -expx048 exp -1000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal -expx049 exp 100000000 -> Infinity Overflow Inexact Rounded -expx050 exp -100000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal - --- miscellanea --- similar to 'VF bug' test, at 17, but with last digit corrected for decimal -precision: 16 -expx055 exp -5.42410311287441459172E+2 -> 2.717658486884572E-236 Inexact Rounded --- result from NetRexx/Java prototype -> 2.7176584868845721117677929628617246054459644711108E-236 --- result from Rexx (series) version -> 2.717658486884572111767792962861724605446E-236 -precision: 17 -expx056 exp -5.42410311287441459172E+2 -> 2.7176584868845721E-236 Inexact Rounded -precision: 18 -expx057 exp -5.42410311287441459172E+2 -> 2.71765848688457211E-236 Inexact Rounded -precision: 19 -expx058 exp -5.42410311287441459172E+2 -> 2.717658486884572112E-236 Inexact Rounded -precision: 20 -expx059 exp -5.42410311287441459172E+2 -> 2.7176584868845721118E-236 Inexact Rounded - --- rounding in areas of ..500.., ..499.., ..100.., ..999.. sequences -precision: 50 -expx101 exp -9E-8 -> 0.99999991000000404999987850000273374995079250073811 Inexact Rounded -precision: 31 -expx102 exp -9E-8 -> 0.9999999100000040499998785000027 Inexact Rounded -precision: 30 -expx103 exp -9E-8 -> 0.999999910000004049999878500003 Inexact Rounded -precision: 29 -expx104 exp -9E-8 -> 0.99999991000000404999987850000 Inexact Rounded -precision: 28 -expx105 exp -9E-8 -> 0.9999999100000040499998785000 Inexact Rounded -precision: 27 -expx106 exp -9E-8 -> 0.999999910000004049999878500 Inexact Rounded -precision: 26 -expx107 exp -9E-8 -> 0.99999991000000404999987850 Inexact Rounded -precision: 25 -expx108 exp -9E-8 -> 0.9999999100000040499998785 Inexact Rounded -precision: 24 -expx109 exp -9E-8 -> 0.999999910000004049999879 Inexact Rounded -precision: 23 -expx110 exp -9E-8 -> 0.99999991000000404999988 Inexact Rounded -precision: 22 -expx111 exp -9E-8 -> 0.9999999100000040499999 Inexact Rounded -precision: 21 -expx112 exp -9E-8 -> 0.999999910000004050000 Inexact Rounded -precision: 20 -expx113 exp -9E-8 -> 0.99999991000000405000 Inexact Rounded -precision: 19 -expx114 exp -9E-8 -> 0.9999999100000040500 Inexact Rounded -precision: 18 -expx115 exp -9E-8 -> 0.999999910000004050 Inexact Rounded -precision: 17 -expx116 exp -9E-8 -> 0.99999991000000405 Inexact Rounded -precision: 16 -expx117 exp -9E-8 -> 0.9999999100000040 Inexact Rounded -precision: 15 -expx118 exp -9E-8 -> 0.999999910000004 Inexact Rounded -precision: 14 -expx119 exp -9E-8 -> 0.99999991000000 Inexact Rounded -precision: 13 -expx120 exp -9E-8 -> 0.9999999100000 Inexact Rounded -precision: 12 -expx121 exp -9E-8 -> 0.999999910000 Inexact Rounded -precision: 11 -expx122 exp -9E-8 -> 0.99999991000 Inexact Rounded -precision: 10 -expx123 exp -9E-8 -> 0.9999999100 Inexact Rounded -precision: 9 -expx124 exp -9E-8 -> 0.999999910 Inexact Rounded -precision: 8 -expx125 exp -9E-8 -> 0.99999991 Inexact Rounded -precision: 7 -expx126 exp -9E-8 -> 0.9999999 Inexact Rounded -precision: 6 -expx127 exp -9E-8 -> 1.00000 Inexact Rounded -precision: 5 -expx128 exp -9E-8 -> 1.0000 Inexact Rounded -precision: 4 -expx129 exp -9E-8 -> 1.000 Inexact Rounded -precision: 3 -expx130 exp -9E-8 -> 1.00 Inexact Rounded -precision: 2 -expx131 exp -9E-8 -> 1.0 Inexact Rounded -precision: 1 -expx132 exp -9E-8 -> 1 Inexact Rounded - - --- sanity checks, with iteration counts [normalized so 0<=|x|<1] -precision: 50 - -expx210 exp 0 -> 1 --- iterations: 2 -expx211 exp -1E-40 -> 0.99999999999999999999999999999999999999990000000000 Inexact Rounded --- iterations: 8 -expx212 exp -9E-7 -> 0.99999910000040499987850002733749507925073811240510 Inexact Rounded --- iterations: 6 -expx213 exp -9E-8 -> 0.99999991000000404999987850000273374995079250073811 Inexact Rounded --- iterations: 15 -expx214 exp -0.003 -> 0.99700449550337297601206623409756091074177480489845 Inexact Rounded --- iterations: 14 -expx215 exp -0.001 -> 0.99900049983337499166805535716765597470235590236008 Inexact Rounded --- iterations: 26 -expx216 exp -0.1 -> 0.90483741803595957316424905944643662119470536098040 Inexact Rounded --- iterations: 39 -expx217 exp -0.7 -> 0.49658530379140951470480009339752896170766716571182 Inexact Rounded --- iterations: 41 -expx218 exp -0.9 -> 0.40656965974059911188345423964562598783370337617038 Inexact Rounded --- iterations: 43 -expx219 exp -0.99 -> 0.37157669102204569053152411990820138691802885490501 Inexact Rounded --- iterations: 26 -expx220 exp -1 -> 0.36787944117144232159552377016146086744581113103177 Inexact Rounded --- iterations: 26 -expx221 exp -1.01 -> 0.36421897957152331975704629563734548959589139192482 Inexact Rounded --- iterations: 27 -expx222 exp -1.1 -> 0.33287108369807955328884690643131552161247952156921 Inexact Rounded --- iterations: 28 -expx223 exp -1.5 -> 0.22313016014842982893328047076401252134217162936108 Inexact Rounded --- iterations: 30 -expx224 exp -2 -> 0.13533528323661269189399949497248440340763154590958 Inexact Rounded --- iterations: 36 -expx225 exp -5 -> 0.0067379469990854670966360484231484242488495850273551 Inexact Rounded --- iterations: 26 -expx226 exp -10 -> 0.000045399929762484851535591515560550610237918088866565 Inexact Rounded --- iterations: 28 -expx227 exp -14 -> 8.3152871910356788406398514256526229460765836498457E-7 Inexact Rounded --- iterations: 29 -expx228 exp -15 -> 3.0590232050182578837147949770228963937082078081856E-7 Inexact Rounded --- iterations: 30 -expx233 exp 0 -> 1 --- iterations: 2 -expx234 exp 1E-40 -> 1.0000000000000000000000000000000000000001000000000 Inexact Rounded --- iterations: 7 -expx235 exp 9E-7 -> 1.0000009000004050001215000273375049207507381125949 Inexact Rounded --- iterations: 6 -expx236 exp 9E-8 -> 1.0000000900000040500001215000027337500492075007381 Inexact Rounded --- iterations: 15 -expx237 exp 0.003 -> 1.0030045045033770260129340913489002053318727195619 Inexact Rounded --- iterations: 13 -expx238 exp 0.001 -> 1.0010005001667083416680557539930583115630762005807 Inexact Rounded --- iterations: 25 -expx239 exp 0.1 -> 1.1051709180756476248117078264902466682245471947375 Inexact Rounded --- iterations: 38 -expx240 exp 0.7 -> 2.0137527074704765216245493885830652700175423941459 Inexact Rounded --- iterations: 41 -expx241 exp 0.9 -> 2.4596031111569496638001265636024706954217723064401 Inexact Rounded --- iterations: 42 -expx242 exp 0.99 -> 2.6912344723492622890998794040710139721802931841030 Inexact Rounded --- iterations: 26 -expx243 exp 1 -> 2.7182818284590452353602874713526624977572470937000 Inexact Rounded --- iterations: 26 -expx244 exp 1.01 -> 2.7456010150169164939897763166603876240737508195960 Inexact Rounded --- iterations: 26 -expx245 exp 1.1 -> 3.0041660239464331120584079535886723932826810260163 Inexact Rounded --- iterations: 28 -expx246 exp 1.5 -> 4.4816890703380648226020554601192758190057498683697 Inexact Rounded --- iterations: 29 -expx247 exp 2 -> 7.3890560989306502272304274605750078131803155705518 Inexact Rounded --- iterations: 36 -expx248 exp 5 -> 148.41315910257660342111558004055227962348766759388 Inexact Rounded --- iterations: 26 -expx249 exp 10 -> 22026.465794806716516957900645284244366353512618557 Inexact Rounded --- iterations: 28 -expx250 exp 14 -> 1202604.2841647767777492367707678594494124865433761 Inexact Rounded --- iterations: 28 -expx251 exp 15 -> 3269017.3724721106393018550460917213155057385438200 Inexact Rounded --- iterations: 29 - --- a biggie [result verified 3 ways] -precision: 250 -expx260 exp 1 -> 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668 Inexact Rounded - --- extreme range boundaries -precision: 16 -maxExponent: 999999 -minExponent: -999999 --- Ntiny boundary -expx290 exp -2302618.022332529 -> 0E-1000014 Underflow Subnormal Inexact Rounded Clamped -expx291 exp -2302618.022332528 -> 1E-1000014 Underflow Subnormal Inexact Rounded --- Nmax/10 and Nmax boundary -expx292 exp 2302582.790408952 -> 9.999999993100277E+999998 Inexact Rounded -expx293 exp 2302582.790408953 -> 1.000000000310028E+999999 Inexact Rounded -expx294 exp 2302585.092993946 -> 9.999999003159870E+999999 Inexact Rounded -expx295 exp 2302585.092994036 -> 9.999999903159821E+999999 Inexact Rounded -expx296 exp 2302585.092994045 -> 9.999999993159820E+999999 Inexact Rounded -expx297 exp 2302585.092994046 -> Infinity Overflow Inexact Rounded - --- 0<-x<<1 effects -precision: 30 -expx320 exp -4.9999999999999E-8 -> 0.999999950000001250000979166617 Inexact Rounded -expx321 exp -5.0000000000000E-8 -> 0.999999950000001249999979166667 Inexact Rounded -expx322 exp -5.0000000000001E-8 -> 0.999999950000001249998979166717 Inexact Rounded -precision: 20 -expx323 exp -4.9999999999999E-8 -> 0.99999995000000125000 Inexact Rounded -expx324 exp -5.0000000000000E-8 -> 0.99999995000000125000 Inexact Rounded -expx325 exp -5.0000000000001E-8 -> 0.99999995000000125000 Inexact Rounded -precision: 14 -expx326 exp -4.9999999999999E-8 -> 0.99999995000000 Inexact Rounded -expx327 exp -5.0000000000000E-8 -> 0.99999995000000 Inexact Rounded -expx328 exp -5.0000000000001E-8 -> 0.99999995000000 Inexact Rounded --- overprecise and 0<-x<<1 -precision: 8 -expx330 exp -4.9999999999999E-8 -> 0.99999995 Inexact Rounded -expx331 exp -5.0000000000000E-8 -> 0.99999995 Inexact Rounded -expx332 exp -5.0000000000001E-8 -> 0.99999995 Inexact Rounded -precision: 7 -expx333 exp -4.9999999999999E-8 -> 1.000000 Inexact Rounded -expx334 exp -5.0000000000000E-8 -> 1.000000 Inexact Rounded -expx335 exp -5.0000000000001E-8 -> 1.000000 Inexact Rounded -precision: 3 -expx336 exp -4.9999999999999E-8 -> 1.00 Inexact Rounded -expx337 exp -5.0000000000000E-8 -> 1.00 Inexact Rounded -expx338 exp -5.0000000000001E-8 -> 1.00 Inexact Rounded - --- 0 1.00000005000000124999902083328 Inexact Rounded -expx341 exp 5.0000000000000E-8 -> 1.00000005000000125000002083333 Inexact Rounded -expx342 exp 5.0000000000001E-8 -> 1.00000005000000125000102083338 Inexact Rounded -precision: 20 -expx343 exp 4.9999999999999E-8 -> 1.0000000500000012500 Inexact Rounded -expx344 exp 5.0000000000000E-8 -> 1.0000000500000012500 Inexact Rounded -expx345 exp 5.0000000000001E-8 -> 1.0000000500000012500 Inexact Rounded -precision: 14 -expx346 exp 4.9999999999999E-8 -> 1.0000000500000 Inexact Rounded -expx347 exp 5.0000000000000E-8 -> 1.0000000500000 Inexact Rounded -expx348 exp 5.0000000000001E-8 -> 1.0000000500000 Inexact Rounded --- overprecise and 0 1.0000001 Inexact Rounded -expx351 exp 5.0000000000000E-8 -> 1.0000001 Inexact Rounded -expx352 exp 5.0000000000001E-8 -> 1.0000001 Inexact Rounded -precision: 7 -expx353 exp 4.9999999999999E-8 -> 1.000000 Inexact Rounded -expx354 exp 5.0000000000000E-8 -> 1.000000 Inexact Rounded -expx355 exp 5.0000000000001E-8 -> 1.000000 Inexact Rounded -precision: 3 -expx356 exp 4.9999999999999E-8 -> 1.00 Inexact Rounded -expx357 exp 5.0000000000000E-8 -> 1.00 Inexact Rounded -expx358 exp 5.0000000000001E-8 -> 1.00 Inexact Rounded - --- cases near 1 -- 1 2345678901234567890 -precision: 20 -expx401 exp 0.99999999999996 -> 2.7182818284589365041 Inexact Rounded -expx402 exp 0.99999999999997 -> 2.7182818284589636869 Inexact Rounded -expx403 exp 0.99999999999998 -> 2.7182818284589908697 Inexact Rounded -expx404 exp 0.99999999999999 -> 2.7182818284590180525 Inexact Rounded -expx405 exp 1.0000000000000 -> 2.7182818284590452354 Inexact Rounded -expx406 exp 1.0000000000001 -> 2.7182818284593170635 Inexact Rounded -expx407 exp 1.0000000000002 -> 2.7182818284595888917 Inexact Rounded -precision: 14 -expx411 exp 0.99999999999996 -> 2.7182818284589 Inexact Rounded -expx412 exp 0.99999999999997 -> 2.7182818284590 Inexact Rounded -expx413 exp 0.99999999999998 -> 2.7182818284590 Inexact Rounded -expx414 exp 0.99999999999999 -> 2.7182818284590 Inexact Rounded -expx415 exp 1.0000000000000 -> 2.7182818284590 Inexact Rounded -expx416 exp 1.0000000000001 -> 2.7182818284593 Inexact Rounded -expx417 exp 1.0000000000002 -> 2.7182818284596 Inexact Rounded --- overprecise... -precision: 7 -expx421 exp 0.99999999999996 -> 2.718282 Inexact Rounded -expx422 exp 0.99999999999997 -> 2.718282 Inexact Rounded -expx423 exp 0.99999999999998 -> 2.718282 Inexact Rounded -expx424 exp 0.99999999999999 -> 2.718282 Inexact Rounded -expx425 exp 1.0000000000001 -> 2.718282 Inexact Rounded -expx426 exp 1.0000000000002 -> 2.718282 Inexact Rounded -expx427 exp 1.0000000000003 -> 2.718282 Inexact Rounded -precision: 2 -expx431 exp 0.99999999999996 -> 2.7 Inexact Rounded -expx432 exp 0.99999999999997 -> 2.7 Inexact Rounded -expx433 exp 0.99999999999998 -> 2.7 Inexact Rounded -expx434 exp 0.99999999999999 -> 2.7 Inexact Rounded -expx435 exp 1.0000000000001 -> 2.7 Inexact Rounded -expx436 exp 1.0000000000002 -> 2.7 Inexact Rounded -expx437 exp 1.0000000000003 -> 2.7 Inexact Rounded - --- basics at low precisions -precision: 3 -expx501 exp -Infinity -> 0 -expx502 exp -10 -> 0.0000454 Inexact Rounded -expx503 exp -1 -> 0.368 Inexact Rounded -expx504 exp 0 -> 1 -expx505 exp -0 -> 1 -expx506 exp 1 -> 2.72 Inexact Rounded -expx507 exp 0.693147181 -> 2.00 Inexact Rounded -expx508 exp 10 -> 2.20E+4 Inexact Rounded -expx509 exp +Infinity -> Infinity -precision: 2 -expx511 exp -Infinity -> 0 -expx512 exp -10 -> 0.000045 Inexact Rounded -expx513 exp -1 -> 0.37 Inexact Rounded -expx514 exp 0 -> 1 -expx515 exp -0 -> 1 -expx516 exp 1 -> 2.7 Inexact Rounded -expx517 exp 0.693147181 -> 2.0 Inexact Rounded -expx518 exp 10 -> 2.2E+4 Inexact Rounded -expx519 exp +Infinity -> Infinity -precision: 1 -expx521 exp -Infinity -> 0 -expx522 exp -10 -> 0.00005 Inexact Rounded -expx523 exp -1 -> 0.4 Inexact Rounded -expx524 exp 0 -> 1 -expx525 exp -0 -> 1 -expx526 exp 1 -> 3 Inexact Rounded -expx527 exp 0.693147181 -> 2 Inexact Rounded -expx528 exp 10 -> 2E+4 Inexact Rounded -expx529 exp +Infinity -> Infinity - --- overflows, including some overprecise borderlines -precision: 7 -maxExponent: 384 -minExponent: -383 -expx701 exp 1000000000 -> Infinity Overflow Inexact Rounded -expx702 exp 100000000 -> Infinity Overflow Inexact Rounded -expx703 exp 10000000 -> Infinity Overflow Inexact Rounded -expx704 exp 1000000 -> Infinity Overflow Inexact Rounded -expx705 exp 100000 -> Infinity Overflow Inexact Rounded -expx706 exp 10000 -> Infinity Overflow Inexact Rounded -expx707 exp 1000 -> Infinity Overflow Inexact Rounded -expx708 exp 886.4952608 -> Infinity Overflow Inexact Rounded -expx709 exp 886.4952607 -> 9.999999E+384 Inexact Rounded -expx710 exp 886.49527 -> Infinity Overflow Inexact Rounded -expx711 exp 886.49526 -> 9.999992E+384 Inexact Rounded -precision: 16 -expx721 exp 886.4952608027075883 -> Infinity Overflow Inexact Rounded -expx722 exp 886.4952608027075882 -> 9.999999999999999E+384 Inexact Rounded -expx723 exp 886.49526080270759 -> Infinity Overflow Inexact Rounded -expx724 exp 886.49526080270758 -> 9.999999999999917E+384 Inexact Rounded -expx725 exp 886.4952608027076 -> Infinity Overflow Inexact Rounded -expx726 exp 886.4952608027075 -> 9.999999999999117E+384 Inexact Rounded --- and by special request ... -precision: 15 -expx731 exp 886.495260802708 -> Infinity Overflow Inexact Rounded -expx732 exp 886.495260802707 -> 9.99999999999412E+384 Inexact Rounded -expx733 exp 886.495260802706 -> 9.99999999998412E+384 Inexact Rounded -maxExponent: 999 -minExponent: -999 -expx735 exp 2302.58509299405 -> Infinity Overflow Inexact Rounded -expx736 exp 2302.58509299404 -> 9.99999999994316E+999 Inexact Rounded -expx737 exp 2302.58509299403 -> 9.99999999984316E+999 Inexact Rounded - --- subnormals and underflows, including underflow-to-zero edge point -precision: 7 -maxExponent: 384 -minExponent: -383 -expx751 exp -1000000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal -expx752 exp -100000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal -expx753 exp -10000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal -expx754 exp -1000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal -expx755 exp -100000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal -expx756 exp -10000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal -expx757 exp -1000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal -expx758 exp -881.89009 -> 1.000001E-383 Inexact Rounded -expx759 exp -881.8901 -> 9.99991E-384 Inexact Rounded Underflow Subnormal -expx760 exp -885 -> 4.4605E-385 Inexact Rounded Underflow Subnormal -expx761 exp -888 -> 2.221E-386 Inexact Rounded Underflow Subnormal -expx762 exp -890 -> 3.01E-387 Inexact Rounded Underflow Subnormal -expx763 exp -892.9 -> 1.7E-388 Inexact Rounded Underflow Subnormal -expx764 exp -893 -> 1.5E-388 Inexact Rounded Underflow Subnormal -expx765 exp -893.5 -> 9E-389 Inexact Rounded Underflow Subnormal -expx766 exp -895.7056 -> 1E-389 Inexact Rounded Underflow Subnormal -expx769 exp -895.8 -> 1E-389 Inexact Rounded Underflow Subnormal -expx770 exp -895.73 -> 1E-389 Inexact Rounded Underflow Subnormal -expx771 exp -896.3987 -> 1E-389 Inexact Rounded Underflow Subnormal -expx772 exp -896.3988 -> 0E-389 Inexact Rounded Underflow Subnormal Clamped -expx773 exp -898.0081 -> 0E-389 Inexact Rounded Underflow Subnormal Clamped -expx774 exp -898.0082 -> 0E-389 Inexact Rounded Underflow Subnormal Clamped - --- special values -maxexponent: 999 -minexponent: -999 -expx820 exp Inf -> Infinity -expx821 exp -Inf -> 0 -expx822 exp NaN -> NaN -expx823 exp sNaN -> NaN Invalid_operation --- propagating NaNs -expx824 exp sNaN123 -> NaN123 Invalid_operation -expx825 exp -sNaN321 -> -NaN321 Invalid_operation -expx826 exp NaN456 -> NaN456 -expx827 exp -NaN654 -> -NaN654 -expx828 exp NaN1 -> NaN1 - --- Invalid operations due to restrictions --- [next two probably skipped by most test harnesses] -precision: 100000000 -expx901 exp -Infinity -> NaN Invalid_context -precision: 99999999 -expx902 exp -Infinity -> NaN Invalid_context - -precision: 9 -maxExponent: 1000000 -minExponent: -999999 -expx903 exp -Infinity -> NaN Invalid_context -maxExponent: 999999 -minExponent: -999999 -expx904 exp -Infinity -> 0 -maxExponent: 999999 -minExponent: -1000000 -expx905 exp -Infinity -> NaN Invalid_context -maxExponent: 999999 -minExponent: -999998 -expx906 exp -Infinity -> 0 - --- -maxExponent: 384 -minExponent: -383 -precision: 16 -rounding: half_even - --- Null test -expx900 exp # -> NaN Invalid_operation - - --- Randoms P=50, within 0-999 -Precision: 50 -maxExponent: 384 -minExponent: -383 -expx1501 exp 656.35397950590285612266095596539934213943872885728 -> 1.1243757610640319783611178528839652672062820040314E+285 Inexact Rounded -expx1502 exp 0.93620571093652800225038550600780322831236082781471 -> 2.5502865130986176689199711857825771311178046842009 Inexact Rounded -expx1503 exp 0.00000000000000008340785856601514714183373874105791 -> 1.0000000000000000834078585660151506202691740252512 Inexact Rounded -expx1504 exp 0.00009174057262887789625745574686545163168788456203 -> 1.0000917447809239005146722341251524081006051473273 Inexact Rounded -expx1505 exp 33.909116897973797735657751591014926629051117541243 -> 532773181025002.03543618901306726495870476617232229 Inexact Rounded -expx1506 exp 0.00000740470413004406592124575295278456936809587311 -> 1.0000074047315449333590066395670306135567889210814 Inexact Rounded -expx1507 exp 0.00000000000124854922222108802453746922483071445492 -> 1.0000000000012485492222218674621176239911424968263 Inexact Rounded -expx1508 exp 4.1793280674155659794286951159430651258356014391382 -> 65.321946520147199404199787811336860087975118278185 Inexact Rounded -expx1509 exp 485.43595745460655893746179890255529919221550201686 -> 6.6398403920459617255950476953129377459845366585463E+210 Inexact Rounded -expx1510 exp 0.00000000003547259806590856032527875157830328156597 -> 1.0000000000354725980665377129320589406715000685515 Inexact Rounded -expx1511 exp 0.00000000000000759621497339104047930616478635042678 -> 1.0000000000000075962149733910693305471257715463887 Inexact Rounded -expx1512 exp 9.7959168821760339304571595474480640286072720233796 -> 17960.261146042955179164303653412650751681436352437 Inexact Rounded -expx1513 exp 0.00000000566642006258290526783901451194943164535581 -> 1.0000000056664200786370634609832438815665249347650 Inexact Rounded -expx1514 exp 741.29888791134298194088827572374718940925820027354 -> 8.7501694006317332808128946666402622432064923198731E+321 Inexact Rounded -expx1515 exp 032.75573003552517668808529099897153710887014947935 -> 168125196578678.17725841108617955904425345631092339 Inexact Rounded -expx1516 exp 42.333700726429333308594265553422902463737399437644 -> 2428245675864172475.4681119493045657797309369672012 Inexact Rounded -expx1517 exp 0.00000000000000559682616876491888197609158802835798 -> 1.0000000000000055968261687649345442076732739577049 Inexact Rounded -expx1518 exp 0.00000000000080703688668280193584758300973549486312 -> 1.0000000000008070368866831275901158164321867914342 Inexact Rounded -expx1519 exp 640.72396012796509482382712891709072570653606838251 -> 1.8318094990683394229304133068983914236995326891045E+278 Inexact Rounded -expx1520 exp 0.00000000000000509458922167631071416948112219512224 -> 1.0000000000000050945892216763236915891499324358556 Inexact Rounded -expx1521 exp 6.7670394314315206378625221583973414660727960241395 -> 868.73613012822031367806248697092884415119568271315 Inexact Rounded -expx1522 exp 04.823217407412963506638267226891024138054783122548 -> 124.36457929588837129731821077586705505565904205366 Inexact Rounded -expx1523 exp 193.51307878701196403991208482520115359690106143615 -> 1.1006830872854715677390914655452261550768957576034E+84 Inexact Rounded -expx1524 exp 5.7307749038303650539200345901210497015617393970463 -> 308.20800743106843083522721523715645950574866495196 Inexact Rounded -expx1525 exp 0.00000000000095217825199797965200541169123743500267 -> 1.0000000000009521782519984329737172007991390381273 Inexact Rounded -expx1526 exp 0.00027131440949183370966393682617930153495028919140 -> 1.0002713512185751022906058160480606598754913607364 Inexact Rounded -expx1527 exp 0.00000000064503059114680682343002315662069272707123 -> 1.0000000006450305913548390552323517403613135496633 Inexact Rounded -expx1528 exp 0.00000000000000095616643506527288866235238548440593 -> 1.0000000000000009561664350652733457894781582009094 Inexact Rounded -expx1529 exp 0.00000000000000086449942811678650244459550252743433 -> 1.0000000000000008644994281167868761242261096529986 Inexact Rounded -expx1530 exp 0.06223488355635359965683053157729204988381887621850 -> 1.0642122813392406657789688931838919323826250630831 Inexact Rounded -expx1531 exp 0.00000400710807804429435502657131912308680674057053 -> 1.0000040071161065125925620890019319832127863559260 Inexact Rounded -expx1532 exp 85.522796894744576211573232055494551429297878413017 -> 13870073686404228452757799770251085177.853337368935 Inexact Rounded -expx1533 exp 9.1496720811363678696938036379756663548353399954363 -> 9411.3537122832743386783597629161763057370034495157 Inexact Rounded -expx1534 exp 8.2215705240788294472944382056330516738577785177942 -> 3720.3406813383076953899654701615084425598377758189 Inexact Rounded -expx1535 exp 0.00000000015772064569640613142823203726821076239561 -> 1.0000000001577206457088440324683315788358926129830 Inexact Rounded -expx1536 exp 0.58179346473959531432624153576883440625538017532480 -> 1.7892445018275360163797022372655837188423194863605 Inexact Rounded -expx1537 exp 33.555726197149525061455517784870570470833498096559 -> 374168069896324.62578073148993526626307095854407952 Inexact Rounded -expx1538 exp 9.7898079803906215094140010009583375537259810398659 -> 17850.878119912208888217100998019986634620368538426 Inexact Rounded -expx1539 exp 89.157697327174521542502447953032536541038636966347 -> 525649152320166503771224149330448089550.67293829227 Inexact Rounded -expx1540 exp 25.022947600123328912029051897171319573322888514885 -> 73676343442.952517824345431437683153304645851960524 Inexact Rounded - --- exp(1) at 34 -Precision: 34 -expx1200 exp 1 -> 2.718281828459045235360287471352662 Inexact Rounded - --- Randoms P=34, within 0-999 -Precision: 34 -maxExponent: 6144 -minExponent: -6143 -expx1201 exp 309.5948855821510212996700645087188 -> 2.853319692901387521201738015050724E+134 Inexact Rounded -expx1202 exp 9.936543068706211420422803962680164 -> 20672.15839203171877476511093276022 Inexact Rounded -expx1203 exp 6.307870323881505684429839491707908 -> 548.8747777054637296137277391754665 Inexact Rounded -expx1204 exp 0.0003543281389438420535201308282503 -> 1.000354390920573746164733350843155 Inexact Rounded -expx1205 exp 0.0000037087453363918375598394920229 -> 1.000003708752213796324841920189323 Inexact Rounded -expx1206 exp 0.0020432312687512438040222444116585 -> 1.002045320088164826013561630975308 Inexact Rounded -expx1207 exp 6.856313340032177672550343216129586 -> 949.8587981604144147983589660524396 Inexact Rounded -expx1208 exp 0.0000000000402094928333815643326418 -> 1.000000000040209492834189965989612 Inexact Rounded -expx1209 exp 0.0049610784722412117632647003545839 -> 1.004973404997901987039589029277833 Inexact Rounded -expx1210 exp 0.0000891471883724066909746786702686 -> 1.000089151162101085412780088266699 Inexact Rounded -expx1211 exp 08.59979170376061890684723211112566 -> 5430.528314920905714615339273738097 Inexact Rounded -expx1212 exp 9.473117039341003854872778112752590 -> 13005.36234331224953460055897913917 Inexact Rounded -expx1213 exp 0.0999060724692207648429969999310118 -> 1.105067116975190602296052700726802 Inexact Rounded -expx1214 exp 0.0000000927804533555877884082269247 -> 1.000000092780457659694183954740772 Inexact Rounded -expx1215 exp 0.0376578583872889916298772818265677 -> 1.038375900489771946477857818447556 Inexact Rounded -expx1216 exp 261.6896411697539524911536116712307 -> 4.470613562127465095241600174941460E+113 Inexact Rounded -expx1217 exp 0.0709997423269162980875824213889626 -> 1.073580949235407949417814485533172 Inexact Rounded -expx1218 exp 0.0000000444605583295169895235658731 -> 1.000000044460559317887627657593900 Inexact Rounded -expx1219 exp 0.0000021224072854777512281369815185 -> 1.000002122409537785687390631070906 Inexact Rounded -expx1220 exp 547.5174462574156885473558485475052 -> 6.078629247383807942612114579728672E+237 Inexact Rounded -expx1221 exp 0.0000009067598041615192002339844670 -> 1.000000906760215268314680115374387 Inexact Rounded -expx1222 exp 0.0316476500308065365803455533244603 -> 1.032153761880187977658387961769034 Inexact Rounded -expx1223 exp 84.46160530377645101833996706384473 -> 4.799644995897968383503269871697856E+36 Inexact Rounded -expx1224 exp 0.0000000000520599740290848018904145 -> 1.000000000052059974030439922338393 Inexact Rounded -expx1225 exp 0.0000006748530640093620665651726708 -> 1.000000674853291722742292331812997 Inexact Rounded -expx1226 exp 0.0000000116853119761042020507916169 -> 1.000000011685312044377460306165203 Inexact Rounded -expx1227 exp 0.0022593818094258636727616886693280 -> 1.002261936135876893707094845543461 Inexact Rounded -expx1228 exp 0.0029398857673478912249856509667517 -> 1.002944211469495086813087651287012 Inexact Rounded -expx1229 exp 0.7511480029928802775376270557636963 -> 2.119431734510320169806976569366789 Inexact Rounded -expx1230 exp 174.9431952176750671150886423048447 -> 9.481222305374955011464619468044051E+75 Inexact Rounded -expx1231 exp 0.0000810612451694136129199895164424 -> 1.000081064530720924186615149646920 Inexact Rounded -expx1232 exp 51.06888989702669288180946272499035 -> 15098613888619165073959.89896018749 Inexact Rounded -expx1233 exp 0.0000000005992887599437093651494510 -> 1.000000000599288760123282874082758 Inexact Rounded -expx1234 exp 714.8549046761054856311108828903972 -> 2.867744544891081117381595080480784E+310 Inexact Rounded -expx1235 exp 0.0000000004468247802990643645607110 -> 1.000000000446824780398890556720233 Inexact Rounded -expx1236 exp 831.5818151589890366323551672043709 -> 1.417077409182624969435938062261655E+361 Inexact Rounded -expx1237 exp 0.0000000006868323825179605747108044 -> 1.000000000686832382753829935602454 Inexact Rounded -expx1238 exp 0.0000001306740266408976840228440255 -> 1.000000130674035178748675187648098 Inexact Rounded -expx1239 exp 0.3182210609022267704811502412335163 -> 1.374680115667798185758927247894859 Inexact Rounded -expx1240 exp 0.0147741234179104437440264644295501 -> 1.014883800239950682628277534839222 Inexact Rounded - --- Randoms P=16, within 0-99 -Precision: 16 -maxExponent: 384 -minExponent: -383 -expx1101 exp 8.473011527013724 -> 4783.900643969246 Inexact Rounded -expx1102 exp 0.0000055753022764 -> 1.000005575317818 Inexact Rounded -expx1103 exp 0.0000323474114482 -> 1.000032347934631 Inexact Rounded -expx1104 exp 64.54374138544166 -> 1.073966476173531E+28 Inexact Rounded -expx1105 exp 90.47203246416569 -> 1.956610887250643E+39 Inexact Rounded -expx1106 exp 9.299931532342757 -> 10937.27033325227 Inexact Rounded -expx1107 exp 8.759678437852203 -> 6372.062234495381 Inexact Rounded -expx1108 exp 0.0000931755127172 -> 1.000093179853690 Inexact Rounded -expx1109 exp 0.0000028101158373 -> 1.000002810119786 Inexact Rounded -expx1110 exp 0.0000008008130919 -> 1.000000800813413 Inexact Rounded -expx1111 exp 8.339771722299049 -> 4187.133803081878 Inexact Rounded -expx1112 exp 0.0026140497995474 -> 1.002617469406750 Inexact Rounded -expx1113 exp 0.7478033356261771 -> 2.112354781975418 Inexact Rounded -expx1114 exp 51.77663761827966 -> 3.064135801120365E+22 Inexact Rounded -expx1115 exp 0.1524989783061012 -> 1.164741272084955 Inexact Rounded -expx1116 exp 0.0066298798669219 -> 1.006651906170791 Inexact Rounded -expx1117 exp 9.955141865534960 -> 21060.23334287038 Inexact Rounded -expx1118 exp 92.34503059198483 -> 1.273318993481226E+40 Inexact Rounded -expx1119 exp 0.0000709388677346 -> 1.000070941383956 Inexact Rounded -expx1120 exp 79.12883036433204 -> 2.318538899389243E+34 Inexact Rounded -expx1121 exp 0.0000090881548873 -> 1.000009088196185 Inexact Rounded -expx1122 exp 0.0424828809603411 -> 1.043398194245720 Inexact Rounded -expx1123 exp 0.8009035891427416 -> 2.227552811933310 Inexact Rounded -expx1124 exp 8.825786167283102 -> 6807.540455289995 Inexact Rounded -expx1125 exp 1.535457249746275 -> 4.643448260146849 Inexact Rounded -expx1126 exp 69.02254254355800 -> 9.464754500670653E+29 Inexact Rounded -expx1127 exp 0.0007050554368713 -> 1.000705304046880 Inexact Rounded -expx1128 exp 0.0000081206549504 -> 1.000008120687923 Inexact Rounded -expx1129 exp 0.621774854641137 -> 1.862230298554903 Inexact Rounded -expx1130 exp 3.847629031404354 -> 46.88177613568203 Inexact Rounded -expx1131 exp 24.81250184697732 -> 59694268456.19966 Inexact Rounded -expx1132 exp 5.107546500516044 -> 165.2643809755670 Inexact Rounded -expx1133 exp 79.17810943951986 -> 2.435656372541360E+34 Inexact Rounded -expx1134 exp 0.0051394695667015 -> 1.005152699295301 Inexact Rounded -expx1135 exp 57.44504488501725 -> 8.872908566929688E+24 Inexact Rounded -expx1136 exp 0.0000508388968036 -> 1.000050840189122 Inexact Rounded -expx1137 exp 69.71309932148997 -> 1.888053740693541E+30 Inexact Rounded -expx1138 exp 0.0064183412981502 -> 1.006438982988835 Inexact Rounded -expx1139 exp 9.346991220814677 -> 11464.27802035082 Inexact Rounded -expx1140 exp 33.09087139999152 -> 235062229168763.5 Inexact Rounded - --- Randoms P=7, within 0-9 -Precision: 7 -maxExponent: 96 -minExponent: -95 -expx1001 exp 2.395441 -> 10.97304 Inexact Rounded -expx1002 exp 0.6406779 -> 1.897767 Inexact Rounded -expx1003 exp 0.5618218 -> 1.753865 Inexact Rounded -expx1004 exp 3.055120 -> 21.22373 Inexact Rounded -expx1005 exp 1.536792 -> 4.649650 Inexact Rounded -expx1006 exp 0.0801591 -> 1.083459 Inexact Rounded -expx1007 exp 0.0966875 -> 1.101516 Inexact Rounded -expx1008 exp 0.0646761 -> 1.066813 Inexact Rounded -expx1009 exp 0.0095670 -> 1.009613 Inexact Rounded -expx1010 exp 2.956859 -> 19.23745 Inexact Rounded -expx1011 exp 7.504679 -> 1816.522 Inexact Rounded -expx1012 exp 0.0045259 -> 1.004536 Inexact Rounded -expx1013 exp 3.810071 -> 45.15364 Inexact Rounded -expx1014 exp 1.502390 -> 4.492413 Inexact Rounded -expx1015 exp 0.0321523 -> 1.032675 Inexact Rounded -expx1016 exp 0.0057214 -> 1.005738 Inexact Rounded -expx1017 exp 9.811445 -> 18241.33 Inexact Rounded -expx1018 exp 3.245249 -> 25.66810 Inexact Rounded -expx1019 exp 0.3189742 -> 1.375716 Inexact Rounded -expx1020 exp 0.8621610 -> 2.368273 Inexact Rounded -expx1021 exp 0.0122511 -> 1.012326 Inexact Rounded -expx1022 exp 2.202088 -> 9.043877 Inexact Rounded -expx1023 exp 8.778203 -> 6491.202 Inexact Rounded -expx1024 exp 0.1896279 -> 1.208800 Inexact Rounded -expx1025 exp 0.4510947 -> 1.570030 Inexact Rounded -expx1026 exp 0.276413 -> 1.318392 Inexact Rounded -expx1027 exp 4.490067 -> 89.12742 Inexact Rounded -expx1028 exp 0.0439786 -> 1.044960 Inexact Rounded -expx1029 exp 0.8168245 -> 2.263301 Inexact Rounded -expx1030 exp 0.0391658 -> 1.039943 Inexact Rounded -expx1031 exp 9.261816 -> 10528.24 Inexact Rounded -expx1032 exp 9.611186 -> 14930.87 Inexact Rounded -expx1033 exp 9.118125 -> 9119.087 Inexact Rounded -expx1034 exp 9.469083 -> 12953.00 Inexact Rounded -expx1035 exp 0.0499983 -> 1.051269 Inexact Rounded -expx1036 exp 0.0050746 -> 1.005087 Inexact Rounded -expx1037 exp 0.0014696 -> 1.001471 Inexact Rounded -expx1038 exp 9.138494 -> 9306.739 Inexact Rounded -expx1039 exp 0.0065436 -> 1.006565 Inexact Rounded -expx1040 exp 0.7284803 -> 2.071930 Inexact Rounded - +------------------------------------------------------------------------ +-- exp.decTest -- decimal natural exponentiation -- +-- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- Tests of the exponential funtion. Currently all testcases here +-- show results which are correctly rounded (within <= 0.5 ulp). + +extended: 1 +precision: 9 +rounding: half_even +maxExponent: 384 +minexponent: -383 + +-- basics (examples in specificiation, etc.) +expx001 exp -Infinity -> 0 +expx002 exp -10 -> 0.0000453999298 Inexact Rounded +expx003 exp -1 -> 0.367879441 Inexact Rounded +expx004 exp 0 -> 1 +expx005 exp -0 -> 1 +expx006 exp 1 -> 2.71828183 Inexact Rounded +expx007 exp 0.693147181 -> 2.00000000 Inexact Rounded +expx008 exp 10 -> 22026.4658 Inexact Rounded +expx009 exp +Infinity -> Infinity + +-- tiny edge cases +precision: 7 +expx011 exp 0.1 -> 1.105171 Inexact Rounded +expx012 exp 0.01 -> 1.010050 Inexact Rounded +expx013 exp 0.001 -> 1.001001 Inexact Rounded +expx014 exp 0.0001 -> 1.000100 Inexact Rounded +expx015 exp 0.00001 -> 1.000010 Inexact Rounded +expx016 exp 0.000001 -> 1.000001 Inexact Rounded +expx017 exp 0.0000001 -> 1.000000 Inexact Rounded +expx018 exp 0.0000003 -> 1.000000 Inexact Rounded +expx019 exp 0.0000004 -> 1.000000 Inexact Rounded +expx020 exp 0.0000005 -> 1.000001 Inexact Rounded +expx021 exp 0.0000008 -> 1.000001 Inexact Rounded +expx022 exp 0.0000009 -> 1.000001 Inexact Rounded +expx023 exp 0.0000010 -> 1.000001 Inexact Rounded +expx024 exp 0.0000011 -> 1.000001 Inexact Rounded +expx025 exp 0.00000009 -> 1.000000 Inexact Rounded +expx026 exp 0.00000005 -> 1.000000 Inexact Rounded +expx027 exp 0.00000004 -> 1.000000 Inexact Rounded +expx028 exp 0.00000001 -> 1.000000 Inexact Rounded + +-- and some more zeros +expx030 exp 0.00000000 -> 1 +expx031 exp 0E+100 -> 1 +expx032 exp 0E-100 -> 1 +expx033 exp -0.00000000 -> 1 +expx034 exp -0E+100 -> 1 +expx035 exp -0E-100 -> 1 + +-- basic e=0, e=1, e=2, e=4, e>=8 cases +precision: 7 +expx041 exp 1 -> 2.718282 Inexact Rounded +expx042 exp -1 -> 0.3678794 Inexact Rounded +expx043 exp 10 -> 22026.47 Inexact Rounded +expx044 exp -10 -> 0.00004539993 Inexact Rounded +expx045 exp 100 -> 2.688117E+43 Inexact Rounded +expx046 exp -100 -> 3.720076E-44 Inexact Rounded +expx047 exp 1000 -> Infinity Overflow Inexact Rounded +expx048 exp -1000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal +expx049 exp 100000000 -> Infinity Overflow Inexact Rounded +expx050 exp -100000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal + +-- miscellanea +-- similar to 'VF bug' test, at 17, but with last digit corrected for decimal +precision: 16 +expx055 exp -5.42410311287441459172E+2 -> 2.717658486884572E-236 Inexact Rounded +-- result from NetRexx/Java prototype -> 2.7176584868845721117677929628617246054459644711108E-236 +-- result from Rexx (series) version -> 2.717658486884572111767792962861724605446E-236 +precision: 17 +expx056 exp -5.42410311287441459172E+2 -> 2.7176584868845721E-236 Inexact Rounded +precision: 18 +expx057 exp -5.42410311287441459172E+2 -> 2.71765848688457211E-236 Inexact Rounded +precision: 19 +expx058 exp -5.42410311287441459172E+2 -> 2.717658486884572112E-236 Inexact Rounded +precision: 20 +expx059 exp -5.42410311287441459172E+2 -> 2.7176584868845721118E-236 Inexact Rounded + +-- rounding in areas of ..500.., ..499.., ..100.., ..999.. sequences +precision: 50 +expx101 exp -9E-8 -> 0.99999991000000404999987850000273374995079250073811 Inexact Rounded +precision: 31 +expx102 exp -9E-8 -> 0.9999999100000040499998785000027 Inexact Rounded +precision: 30 +expx103 exp -9E-8 -> 0.999999910000004049999878500003 Inexact Rounded +precision: 29 +expx104 exp -9E-8 -> 0.99999991000000404999987850000 Inexact Rounded +precision: 28 +expx105 exp -9E-8 -> 0.9999999100000040499998785000 Inexact Rounded +precision: 27 +expx106 exp -9E-8 -> 0.999999910000004049999878500 Inexact Rounded +precision: 26 +expx107 exp -9E-8 -> 0.99999991000000404999987850 Inexact Rounded +precision: 25 +expx108 exp -9E-8 -> 0.9999999100000040499998785 Inexact Rounded +precision: 24 +expx109 exp -9E-8 -> 0.999999910000004049999879 Inexact Rounded +precision: 23 +expx110 exp -9E-8 -> 0.99999991000000404999988 Inexact Rounded +precision: 22 +expx111 exp -9E-8 -> 0.9999999100000040499999 Inexact Rounded +precision: 21 +expx112 exp -9E-8 -> 0.999999910000004050000 Inexact Rounded +precision: 20 +expx113 exp -9E-8 -> 0.99999991000000405000 Inexact Rounded +precision: 19 +expx114 exp -9E-8 -> 0.9999999100000040500 Inexact Rounded +precision: 18 +expx115 exp -9E-8 -> 0.999999910000004050 Inexact Rounded +precision: 17 +expx116 exp -9E-8 -> 0.99999991000000405 Inexact Rounded +precision: 16 +expx117 exp -9E-8 -> 0.9999999100000040 Inexact Rounded +precision: 15 +expx118 exp -9E-8 -> 0.999999910000004 Inexact Rounded +precision: 14 +expx119 exp -9E-8 -> 0.99999991000000 Inexact Rounded +precision: 13 +expx120 exp -9E-8 -> 0.9999999100000 Inexact Rounded +precision: 12 +expx121 exp -9E-8 -> 0.999999910000 Inexact Rounded +precision: 11 +expx122 exp -9E-8 -> 0.99999991000 Inexact Rounded +precision: 10 +expx123 exp -9E-8 -> 0.9999999100 Inexact Rounded +precision: 9 +expx124 exp -9E-8 -> 0.999999910 Inexact Rounded +precision: 8 +expx125 exp -9E-8 -> 0.99999991 Inexact Rounded +precision: 7 +expx126 exp -9E-8 -> 0.9999999 Inexact Rounded +precision: 6 +expx127 exp -9E-8 -> 1.00000 Inexact Rounded +precision: 5 +expx128 exp -9E-8 -> 1.0000 Inexact Rounded +precision: 4 +expx129 exp -9E-8 -> 1.000 Inexact Rounded +precision: 3 +expx130 exp -9E-8 -> 1.00 Inexact Rounded +precision: 2 +expx131 exp -9E-8 -> 1.0 Inexact Rounded +precision: 1 +expx132 exp -9E-8 -> 1 Inexact Rounded + + +-- sanity checks, with iteration counts [normalized so 0<=|x|<1] +precision: 50 + +expx210 exp 0 -> 1 +-- iterations: 2 +expx211 exp -1E-40 -> 0.99999999999999999999999999999999999999990000000000 Inexact Rounded +-- iterations: 8 +expx212 exp -9E-7 -> 0.99999910000040499987850002733749507925073811240510 Inexact Rounded +-- iterations: 6 +expx213 exp -9E-8 -> 0.99999991000000404999987850000273374995079250073811 Inexact Rounded +-- iterations: 15 +expx214 exp -0.003 -> 0.99700449550337297601206623409756091074177480489845 Inexact Rounded +-- iterations: 14 +expx215 exp -0.001 -> 0.99900049983337499166805535716765597470235590236008 Inexact Rounded +-- iterations: 26 +expx216 exp -0.1 -> 0.90483741803595957316424905944643662119470536098040 Inexact Rounded +-- iterations: 39 +expx217 exp -0.7 -> 0.49658530379140951470480009339752896170766716571182 Inexact Rounded +-- iterations: 41 +expx218 exp -0.9 -> 0.40656965974059911188345423964562598783370337617038 Inexact Rounded +-- iterations: 43 +expx219 exp -0.99 -> 0.37157669102204569053152411990820138691802885490501 Inexact Rounded +-- iterations: 26 +expx220 exp -1 -> 0.36787944117144232159552377016146086744581113103177 Inexact Rounded +-- iterations: 26 +expx221 exp -1.01 -> 0.36421897957152331975704629563734548959589139192482 Inexact Rounded +-- iterations: 27 +expx222 exp -1.1 -> 0.33287108369807955328884690643131552161247952156921 Inexact Rounded +-- iterations: 28 +expx223 exp -1.5 -> 0.22313016014842982893328047076401252134217162936108 Inexact Rounded +-- iterations: 30 +expx224 exp -2 -> 0.13533528323661269189399949497248440340763154590958 Inexact Rounded +-- iterations: 36 +expx225 exp -5 -> 0.0067379469990854670966360484231484242488495850273551 Inexact Rounded +-- iterations: 26 +expx226 exp -10 -> 0.000045399929762484851535591515560550610237918088866565 Inexact Rounded +-- iterations: 28 +expx227 exp -14 -> 8.3152871910356788406398514256526229460765836498457E-7 Inexact Rounded +-- iterations: 29 +expx228 exp -15 -> 3.0590232050182578837147949770228963937082078081856E-7 Inexact Rounded +-- iterations: 30 +expx233 exp 0 -> 1 +-- iterations: 2 +expx234 exp 1E-40 -> 1.0000000000000000000000000000000000000001000000000 Inexact Rounded +-- iterations: 7 +expx235 exp 9E-7 -> 1.0000009000004050001215000273375049207507381125949 Inexact Rounded +-- iterations: 6 +expx236 exp 9E-8 -> 1.0000000900000040500001215000027337500492075007381 Inexact Rounded +-- iterations: 15 +expx237 exp 0.003 -> 1.0030045045033770260129340913489002053318727195619 Inexact Rounded +-- iterations: 13 +expx238 exp 0.001 -> 1.0010005001667083416680557539930583115630762005807 Inexact Rounded +-- iterations: 25 +expx239 exp 0.1 -> 1.1051709180756476248117078264902466682245471947375 Inexact Rounded +-- iterations: 38 +expx240 exp 0.7 -> 2.0137527074704765216245493885830652700175423941459 Inexact Rounded +-- iterations: 41 +expx241 exp 0.9 -> 2.4596031111569496638001265636024706954217723064401 Inexact Rounded +-- iterations: 42 +expx242 exp 0.99 -> 2.6912344723492622890998794040710139721802931841030 Inexact Rounded +-- iterations: 26 +expx243 exp 1 -> 2.7182818284590452353602874713526624977572470937000 Inexact Rounded +-- iterations: 26 +expx244 exp 1.01 -> 2.7456010150169164939897763166603876240737508195960 Inexact Rounded +-- iterations: 26 +expx245 exp 1.1 -> 3.0041660239464331120584079535886723932826810260163 Inexact Rounded +-- iterations: 28 +expx246 exp 1.5 -> 4.4816890703380648226020554601192758190057498683697 Inexact Rounded +-- iterations: 29 +expx247 exp 2 -> 7.3890560989306502272304274605750078131803155705518 Inexact Rounded +-- iterations: 36 +expx248 exp 5 -> 148.41315910257660342111558004055227962348766759388 Inexact Rounded +-- iterations: 26 +expx249 exp 10 -> 22026.465794806716516957900645284244366353512618557 Inexact Rounded +-- iterations: 28 +expx250 exp 14 -> 1202604.2841647767777492367707678594494124865433761 Inexact Rounded +-- iterations: 28 +expx251 exp 15 -> 3269017.3724721106393018550460917213155057385438200 Inexact Rounded +-- iterations: 29 + +-- a biggie [result verified 3 ways] +precision: 250 +expx260 exp 1 -> 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668 Inexact Rounded + +-- extreme range boundaries +precision: 16 +maxExponent: 999999 +minExponent: -999999 +-- Ntiny boundary +expx290 exp -2302618.022332529 -> 0E-1000014 Underflow Subnormal Inexact Rounded Clamped +expx291 exp -2302618.022332528 -> 1E-1000014 Underflow Subnormal Inexact Rounded +-- Nmax/10 and Nmax boundary +expx292 exp 2302582.790408952 -> 9.999999993100277E+999998 Inexact Rounded +expx293 exp 2302582.790408953 -> 1.000000000310028E+999999 Inexact Rounded +expx294 exp 2302585.092993946 -> 9.999999003159870E+999999 Inexact Rounded +expx295 exp 2302585.092994036 -> 9.999999903159821E+999999 Inexact Rounded +expx296 exp 2302585.092994045 -> 9.999999993159820E+999999 Inexact Rounded +expx297 exp 2302585.092994046 -> Infinity Overflow Inexact Rounded + +-- 0<-x<<1 effects +precision: 30 +expx320 exp -4.9999999999999E-8 -> 0.999999950000001250000979166617 Inexact Rounded +expx321 exp -5.0000000000000E-8 -> 0.999999950000001249999979166667 Inexact Rounded +expx322 exp -5.0000000000001E-8 -> 0.999999950000001249998979166717 Inexact Rounded +precision: 20 +expx323 exp -4.9999999999999E-8 -> 0.99999995000000125000 Inexact Rounded +expx324 exp -5.0000000000000E-8 -> 0.99999995000000125000 Inexact Rounded +expx325 exp -5.0000000000001E-8 -> 0.99999995000000125000 Inexact Rounded +precision: 14 +expx326 exp -4.9999999999999E-8 -> 0.99999995000000 Inexact Rounded +expx327 exp -5.0000000000000E-8 -> 0.99999995000000 Inexact Rounded +expx328 exp -5.0000000000001E-8 -> 0.99999995000000 Inexact Rounded +-- overprecise and 0<-x<<1 +precision: 8 +expx330 exp -4.9999999999999E-8 -> 0.99999995 Inexact Rounded +expx331 exp -5.0000000000000E-8 -> 0.99999995 Inexact Rounded +expx332 exp -5.0000000000001E-8 -> 0.99999995 Inexact Rounded +precision: 7 +expx333 exp -4.9999999999999E-8 -> 1.000000 Inexact Rounded +expx334 exp -5.0000000000000E-8 -> 1.000000 Inexact Rounded +expx335 exp -5.0000000000001E-8 -> 1.000000 Inexact Rounded +precision: 3 +expx336 exp -4.9999999999999E-8 -> 1.00 Inexact Rounded +expx337 exp -5.0000000000000E-8 -> 1.00 Inexact Rounded +expx338 exp -5.0000000000001E-8 -> 1.00 Inexact Rounded + +-- 0 1.00000005000000124999902083328 Inexact Rounded +expx341 exp 5.0000000000000E-8 -> 1.00000005000000125000002083333 Inexact Rounded +expx342 exp 5.0000000000001E-8 -> 1.00000005000000125000102083338 Inexact Rounded +precision: 20 +expx343 exp 4.9999999999999E-8 -> 1.0000000500000012500 Inexact Rounded +expx344 exp 5.0000000000000E-8 -> 1.0000000500000012500 Inexact Rounded +expx345 exp 5.0000000000001E-8 -> 1.0000000500000012500 Inexact Rounded +precision: 14 +expx346 exp 4.9999999999999E-8 -> 1.0000000500000 Inexact Rounded +expx347 exp 5.0000000000000E-8 -> 1.0000000500000 Inexact Rounded +expx348 exp 5.0000000000001E-8 -> 1.0000000500000 Inexact Rounded +-- overprecise and 0 1.0000001 Inexact Rounded +expx351 exp 5.0000000000000E-8 -> 1.0000001 Inexact Rounded +expx352 exp 5.0000000000001E-8 -> 1.0000001 Inexact Rounded +precision: 7 +expx353 exp 4.9999999999999E-8 -> 1.000000 Inexact Rounded +expx354 exp 5.0000000000000E-8 -> 1.000000 Inexact Rounded +expx355 exp 5.0000000000001E-8 -> 1.000000 Inexact Rounded +precision: 3 +expx356 exp 4.9999999999999E-8 -> 1.00 Inexact Rounded +expx357 exp 5.0000000000000E-8 -> 1.00 Inexact Rounded +expx358 exp 5.0000000000001E-8 -> 1.00 Inexact Rounded + +-- cases near 1 -- 1 2345678901234567890 +precision: 20 +expx401 exp 0.99999999999996 -> 2.7182818284589365041 Inexact Rounded +expx402 exp 0.99999999999997 -> 2.7182818284589636869 Inexact Rounded +expx403 exp 0.99999999999998 -> 2.7182818284589908697 Inexact Rounded +expx404 exp 0.99999999999999 -> 2.7182818284590180525 Inexact Rounded +expx405 exp 1.0000000000000 -> 2.7182818284590452354 Inexact Rounded +expx406 exp 1.0000000000001 -> 2.7182818284593170635 Inexact Rounded +expx407 exp 1.0000000000002 -> 2.7182818284595888917 Inexact Rounded +precision: 14 +expx411 exp 0.99999999999996 -> 2.7182818284589 Inexact Rounded +expx412 exp 0.99999999999997 -> 2.7182818284590 Inexact Rounded +expx413 exp 0.99999999999998 -> 2.7182818284590 Inexact Rounded +expx414 exp 0.99999999999999 -> 2.7182818284590 Inexact Rounded +expx415 exp 1.0000000000000 -> 2.7182818284590 Inexact Rounded +expx416 exp 1.0000000000001 -> 2.7182818284593 Inexact Rounded +expx417 exp 1.0000000000002 -> 2.7182818284596 Inexact Rounded +-- overprecise... +precision: 7 +expx421 exp 0.99999999999996 -> 2.718282 Inexact Rounded +expx422 exp 0.99999999999997 -> 2.718282 Inexact Rounded +expx423 exp 0.99999999999998 -> 2.718282 Inexact Rounded +expx424 exp 0.99999999999999 -> 2.718282 Inexact Rounded +expx425 exp 1.0000000000001 -> 2.718282 Inexact Rounded +expx426 exp 1.0000000000002 -> 2.718282 Inexact Rounded +expx427 exp 1.0000000000003 -> 2.718282 Inexact Rounded +precision: 2 +expx431 exp 0.99999999999996 -> 2.7 Inexact Rounded +expx432 exp 0.99999999999997 -> 2.7 Inexact Rounded +expx433 exp 0.99999999999998 -> 2.7 Inexact Rounded +expx434 exp 0.99999999999999 -> 2.7 Inexact Rounded +expx435 exp 1.0000000000001 -> 2.7 Inexact Rounded +expx436 exp 1.0000000000002 -> 2.7 Inexact Rounded +expx437 exp 1.0000000000003 -> 2.7 Inexact Rounded + +-- basics at low precisions +precision: 3 +expx501 exp -Infinity -> 0 +expx502 exp -10 -> 0.0000454 Inexact Rounded +expx503 exp -1 -> 0.368 Inexact Rounded +expx504 exp 0 -> 1 +expx505 exp -0 -> 1 +expx506 exp 1 -> 2.72 Inexact Rounded +expx507 exp 0.693147181 -> 2.00 Inexact Rounded +expx508 exp 10 -> 2.20E+4 Inexact Rounded +expx509 exp +Infinity -> Infinity +precision: 2 +expx511 exp -Infinity -> 0 +expx512 exp -10 -> 0.000045 Inexact Rounded +expx513 exp -1 -> 0.37 Inexact Rounded +expx514 exp 0 -> 1 +expx515 exp -0 -> 1 +expx516 exp 1 -> 2.7 Inexact Rounded +expx517 exp 0.693147181 -> 2.0 Inexact Rounded +expx518 exp 10 -> 2.2E+4 Inexact Rounded +expx519 exp +Infinity -> Infinity +precision: 1 +expx521 exp -Infinity -> 0 +expx522 exp -10 -> 0.00005 Inexact Rounded +expx523 exp -1 -> 0.4 Inexact Rounded +expx524 exp 0 -> 1 +expx525 exp -0 -> 1 +expx526 exp 1 -> 3 Inexact Rounded +expx527 exp 0.693147181 -> 2 Inexact Rounded +expx528 exp 10 -> 2E+4 Inexact Rounded +expx529 exp +Infinity -> Infinity + +-- overflows, including some overprecise borderlines +precision: 7 +maxExponent: 384 +minExponent: -383 +expx701 exp 1000000000 -> Infinity Overflow Inexact Rounded +expx702 exp 100000000 -> Infinity Overflow Inexact Rounded +expx703 exp 10000000 -> Infinity Overflow Inexact Rounded +expx704 exp 1000000 -> Infinity Overflow Inexact Rounded +expx705 exp 100000 -> Infinity Overflow Inexact Rounded +expx706 exp 10000 -> Infinity Overflow Inexact Rounded +expx707 exp 1000 -> Infinity Overflow Inexact Rounded +expx708 exp 886.4952608 -> Infinity Overflow Inexact Rounded +expx709 exp 886.4952607 -> 9.999999E+384 Inexact Rounded +expx710 exp 886.49527 -> Infinity Overflow Inexact Rounded +expx711 exp 886.49526 -> 9.999992E+384 Inexact Rounded +precision: 16 +expx721 exp 886.4952608027075883 -> Infinity Overflow Inexact Rounded +expx722 exp 886.4952608027075882 -> 9.999999999999999E+384 Inexact Rounded +expx723 exp 886.49526080270759 -> Infinity Overflow Inexact Rounded +expx724 exp 886.49526080270758 -> 9.999999999999917E+384 Inexact Rounded +expx725 exp 886.4952608027076 -> Infinity Overflow Inexact Rounded +expx726 exp 886.4952608027075 -> 9.999999999999117E+384 Inexact Rounded +-- and by special request ... +precision: 15 +expx731 exp 886.495260802708 -> Infinity Overflow Inexact Rounded +expx732 exp 886.495260802707 -> 9.99999999999412E+384 Inexact Rounded +expx733 exp 886.495260802706 -> 9.99999999998412E+384 Inexact Rounded +maxExponent: 999 +minExponent: -999 +expx735 exp 2302.58509299405 -> Infinity Overflow Inexact Rounded +expx736 exp 2302.58509299404 -> 9.99999999994316E+999 Inexact Rounded +expx737 exp 2302.58509299403 -> 9.99999999984316E+999 Inexact Rounded + +-- subnormals and underflows, including underflow-to-zero edge point +precision: 7 +maxExponent: 384 +minExponent: -383 +expx751 exp -1000000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal +expx752 exp -100000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal +expx753 exp -10000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal +expx754 exp -1000000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal +expx755 exp -100000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal +expx756 exp -10000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal +expx757 exp -1000 -> 0E-389 Underflow Inexact Rounded Clamped Subnormal +expx758 exp -881.89009 -> 1.000001E-383 Inexact Rounded +expx759 exp -881.8901 -> 9.99991E-384 Inexact Rounded Underflow Subnormal +expx760 exp -885 -> 4.4605E-385 Inexact Rounded Underflow Subnormal +expx761 exp -888 -> 2.221E-386 Inexact Rounded Underflow Subnormal +expx762 exp -890 -> 3.01E-387 Inexact Rounded Underflow Subnormal +expx763 exp -892.9 -> 1.7E-388 Inexact Rounded Underflow Subnormal +expx764 exp -893 -> 1.5E-388 Inexact Rounded Underflow Subnormal +expx765 exp -893.5 -> 9E-389 Inexact Rounded Underflow Subnormal +expx766 exp -895.7056 -> 1E-389 Inexact Rounded Underflow Subnormal +expx769 exp -895.8 -> 1E-389 Inexact Rounded Underflow Subnormal +expx770 exp -895.73 -> 1E-389 Inexact Rounded Underflow Subnormal +expx771 exp -896.3987 -> 1E-389 Inexact Rounded Underflow Subnormal +expx772 exp -896.3988 -> 0E-389 Inexact Rounded Underflow Subnormal Clamped +expx773 exp -898.0081 -> 0E-389 Inexact Rounded Underflow Subnormal Clamped +expx774 exp -898.0082 -> 0E-389 Inexact Rounded Underflow Subnormal Clamped + +-- special values +maxexponent: 999 +minexponent: -999 +expx820 exp Inf -> Infinity +expx821 exp -Inf -> 0 +expx822 exp NaN -> NaN +expx823 exp sNaN -> NaN Invalid_operation +-- propagating NaNs +expx824 exp sNaN123 -> NaN123 Invalid_operation +expx825 exp -sNaN321 -> -NaN321 Invalid_operation +expx826 exp NaN456 -> NaN456 +expx827 exp -NaN654 -> -NaN654 +expx828 exp NaN1 -> NaN1 + +-- Invalid operations due to restrictions +-- [next two probably skipped by most test harnesses] +precision: 100000000 +expx901 exp -Infinity -> NaN Invalid_context +precision: 99999999 +expx902 exp -Infinity -> NaN Invalid_context + +precision: 9 +maxExponent: 1000000 +minExponent: -999999 +expx903 exp -Infinity -> NaN Invalid_context +maxExponent: 999999 +minExponent: -999999 +expx904 exp -Infinity -> 0 +maxExponent: 999999 +minExponent: -1000000 +expx905 exp -Infinity -> NaN Invalid_context +maxExponent: 999999 +minExponent: -999998 +expx906 exp -Infinity -> 0 + +-- +maxExponent: 384 +minExponent: -383 +precision: 16 +rounding: half_even + +-- Null test +expx900 exp # -> NaN Invalid_operation + + +-- Randoms P=50, within 0-999 +Precision: 50 +maxExponent: 384 +minExponent: -383 +expx1501 exp 656.35397950590285612266095596539934213943872885728 -> 1.1243757610640319783611178528839652672062820040314E+285 Inexact Rounded +expx1502 exp 0.93620571093652800225038550600780322831236082781471 -> 2.5502865130986176689199711857825771311178046842009 Inexact Rounded +expx1503 exp 0.00000000000000008340785856601514714183373874105791 -> 1.0000000000000000834078585660151506202691740252512 Inexact Rounded +expx1504 exp 0.00009174057262887789625745574686545163168788456203 -> 1.0000917447809239005146722341251524081006051473273 Inexact Rounded +expx1505 exp 33.909116897973797735657751591014926629051117541243 -> 532773181025002.03543618901306726495870476617232229 Inexact Rounded +expx1506 exp 0.00000740470413004406592124575295278456936809587311 -> 1.0000074047315449333590066395670306135567889210814 Inexact Rounded +expx1507 exp 0.00000000000124854922222108802453746922483071445492 -> 1.0000000000012485492222218674621176239911424968263 Inexact Rounded +expx1508 exp 4.1793280674155659794286951159430651258356014391382 -> 65.321946520147199404199787811336860087975118278185 Inexact Rounded +expx1509 exp 485.43595745460655893746179890255529919221550201686 -> 6.6398403920459617255950476953129377459845366585463E+210 Inexact Rounded +expx1510 exp 0.00000000003547259806590856032527875157830328156597 -> 1.0000000000354725980665377129320589406715000685515 Inexact Rounded +expx1511 exp 0.00000000000000759621497339104047930616478635042678 -> 1.0000000000000075962149733910693305471257715463887 Inexact Rounded +expx1512 exp 9.7959168821760339304571595474480640286072720233796 -> 17960.261146042955179164303653412650751681436352437 Inexact Rounded +expx1513 exp 0.00000000566642006258290526783901451194943164535581 -> 1.0000000056664200786370634609832438815665249347650 Inexact Rounded +expx1514 exp 741.29888791134298194088827572374718940925820027354 -> 8.7501694006317332808128946666402622432064923198731E+321 Inexact Rounded +expx1515 exp 032.75573003552517668808529099897153710887014947935 -> 168125196578678.17725841108617955904425345631092339 Inexact Rounded +expx1516 exp 42.333700726429333308594265553422902463737399437644 -> 2428245675864172475.4681119493045657797309369672012 Inexact Rounded +expx1517 exp 0.00000000000000559682616876491888197609158802835798 -> 1.0000000000000055968261687649345442076732739577049 Inexact Rounded +expx1518 exp 0.00000000000080703688668280193584758300973549486312 -> 1.0000000000008070368866831275901158164321867914342 Inexact Rounded +expx1519 exp 640.72396012796509482382712891709072570653606838251 -> 1.8318094990683394229304133068983914236995326891045E+278 Inexact Rounded +expx1520 exp 0.00000000000000509458922167631071416948112219512224 -> 1.0000000000000050945892216763236915891499324358556 Inexact Rounded +expx1521 exp 6.7670394314315206378625221583973414660727960241395 -> 868.73613012822031367806248697092884415119568271315 Inexact Rounded +expx1522 exp 04.823217407412963506638267226891024138054783122548 -> 124.36457929588837129731821077586705505565904205366 Inexact Rounded +expx1523 exp 193.51307878701196403991208482520115359690106143615 -> 1.1006830872854715677390914655452261550768957576034E+84 Inexact Rounded +expx1524 exp 5.7307749038303650539200345901210497015617393970463 -> 308.20800743106843083522721523715645950574866495196 Inexact Rounded +expx1525 exp 0.00000000000095217825199797965200541169123743500267 -> 1.0000000000009521782519984329737172007991390381273 Inexact Rounded +expx1526 exp 0.00027131440949183370966393682617930153495028919140 -> 1.0002713512185751022906058160480606598754913607364 Inexact Rounded +expx1527 exp 0.00000000064503059114680682343002315662069272707123 -> 1.0000000006450305913548390552323517403613135496633 Inexact Rounded +expx1528 exp 0.00000000000000095616643506527288866235238548440593 -> 1.0000000000000009561664350652733457894781582009094 Inexact Rounded +expx1529 exp 0.00000000000000086449942811678650244459550252743433 -> 1.0000000000000008644994281167868761242261096529986 Inexact Rounded +expx1530 exp 0.06223488355635359965683053157729204988381887621850 -> 1.0642122813392406657789688931838919323826250630831 Inexact Rounded +expx1531 exp 0.00000400710807804429435502657131912308680674057053 -> 1.0000040071161065125925620890019319832127863559260 Inexact Rounded +expx1532 exp 85.522796894744576211573232055494551429297878413017 -> 13870073686404228452757799770251085177.853337368935 Inexact Rounded +expx1533 exp 9.1496720811363678696938036379756663548353399954363 -> 9411.3537122832743386783597629161763057370034495157 Inexact Rounded +expx1534 exp 8.2215705240788294472944382056330516738577785177942 -> 3720.3406813383076953899654701615084425598377758189 Inexact Rounded +expx1535 exp 0.00000000015772064569640613142823203726821076239561 -> 1.0000000001577206457088440324683315788358926129830 Inexact Rounded +expx1536 exp 0.58179346473959531432624153576883440625538017532480 -> 1.7892445018275360163797022372655837188423194863605 Inexact Rounded +expx1537 exp 33.555726197149525061455517784870570470833498096559 -> 374168069896324.62578073148993526626307095854407952 Inexact Rounded +expx1538 exp 9.7898079803906215094140010009583375537259810398659 -> 17850.878119912208888217100998019986634620368538426 Inexact Rounded +expx1539 exp 89.157697327174521542502447953032536541038636966347 -> 525649152320166503771224149330448089550.67293829227 Inexact Rounded +expx1540 exp 25.022947600123328912029051897171319573322888514885 -> 73676343442.952517824345431437683153304645851960524 Inexact Rounded + +-- exp(1) at 34 +Precision: 34 +expx1200 exp 1 -> 2.718281828459045235360287471352662 Inexact Rounded + +-- Randoms P=34, within 0-999 +Precision: 34 +maxExponent: 6144 +minExponent: -6143 +expx1201 exp 309.5948855821510212996700645087188 -> 2.853319692901387521201738015050724E+134 Inexact Rounded +expx1202 exp 9.936543068706211420422803962680164 -> 20672.15839203171877476511093276022 Inexact Rounded +expx1203 exp 6.307870323881505684429839491707908 -> 548.8747777054637296137277391754665 Inexact Rounded +expx1204 exp 0.0003543281389438420535201308282503 -> 1.000354390920573746164733350843155 Inexact Rounded +expx1205 exp 0.0000037087453363918375598394920229 -> 1.000003708752213796324841920189323 Inexact Rounded +expx1206 exp 0.0020432312687512438040222444116585 -> 1.002045320088164826013561630975308 Inexact Rounded +expx1207 exp 6.856313340032177672550343216129586 -> 949.8587981604144147983589660524396 Inexact Rounded +expx1208 exp 0.0000000000402094928333815643326418 -> 1.000000000040209492834189965989612 Inexact Rounded +expx1209 exp 0.0049610784722412117632647003545839 -> 1.004973404997901987039589029277833 Inexact Rounded +expx1210 exp 0.0000891471883724066909746786702686 -> 1.000089151162101085412780088266699 Inexact Rounded +expx1211 exp 08.59979170376061890684723211112566 -> 5430.528314920905714615339273738097 Inexact Rounded +expx1212 exp 9.473117039341003854872778112752590 -> 13005.36234331224953460055897913917 Inexact Rounded +expx1213 exp 0.0999060724692207648429969999310118 -> 1.105067116975190602296052700726802 Inexact Rounded +expx1214 exp 0.0000000927804533555877884082269247 -> 1.000000092780457659694183954740772 Inexact Rounded +expx1215 exp 0.0376578583872889916298772818265677 -> 1.038375900489771946477857818447556 Inexact Rounded +expx1216 exp 261.6896411697539524911536116712307 -> 4.470613562127465095241600174941460E+113 Inexact Rounded +expx1217 exp 0.0709997423269162980875824213889626 -> 1.073580949235407949417814485533172 Inexact Rounded +expx1218 exp 0.0000000444605583295169895235658731 -> 1.000000044460559317887627657593900 Inexact Rounded +expx1219 exp 0.0000021224072854777512281369815185 -> 1.000002122409537785687390631070906 Inexact Rounded +expx1220 exp 547.5174462574156885473558485475052 -> 6.078629247383807942612114579728672E+237 Inexact Rounded +expx1221 exp 0.0000009067598041615192002339844670 -> 1.000000906760215268314680115374387 Inexact Rounded +expx1222 exp 0.0316476500308065365803455533244603 -> 1.032153761880187977658387961769034 Inexact Rounded +expx1223 exp 84.46160530377645101833996706384473 -> 4.799644995897968383503269871697856E+36 Inexact Rounded +expx1224 exp 0.0000000000520599740290848018904145 -> 1.000000000052059974030439922338393 Inexact Rounded +expx1225 exp 0.0000006748530640093620665651726708 -> 1.000000674853291722742292331812997 Inexact Rounded +expx1226 exp 0.0000000116853119761042020507916169 -> 1.000000011685312044377460306165203 Inexact Rounded +expx1227 exp 0.0022593818094258636727616886693280 -> 1.002261936135876893707094845543461 Inexact Rounded +expx1228 exp 0.0029398857673478912249856509667517 -> 1.002944211469495086813087651287012 Inexact Rounded +expx1229 exp 0.7511480029928802775376270557636963 -> 2.119431734510320169806976569366789 Inexact Rounded +expx1230 exp 174.9431952176750671150886423048447 -> 9.481222305374955011464619468044051E+75 Inexact Rounded +expx1231 exp 0.0000810612451694136129199895164424 -> 1.000081064530720924186615149646920 Inexact Rounded +expx1232 exp 51.06888989702669288180946272499035 -> 15098613888619165073959.89896018749 Inexact Rounded +expx1233 exp 0.0000000005992887599437093651494510 -> 1.000000000599288760123282874082758 Inexact Rounded +expx1234 exp 714.8549046761054856311108828903972 -> 2.867744544891081117381595080480784E+310 Inexact Rounded +expx1235 exp 0.0000000004468247802990643645607110 -> 1.000000000446824780398890556720233 Inexact Rounded +expx1236 exp 831.5818151589890366323551672043709 -> 1.417077409182624969435938062261655E+361 Inexact Rounded +expx1237 exp 0.0000000006868323825179605747108044 -> 1.000000000686832382753829935602454 Inexact Rounded +expx1238 exp 0.0000001306740266408976840228440255 -> 1.000000130674035178748675187648098 Inexact Rounded +expx1239 exp 0.3182210609022267704811502412335163 -> 1.374680115667798185758927247894859 Inexact Rounded +expx1240 exp 0.0147741234179104437440264644295501 -> 1.014883800239950682628277534839222 Inexact Rounded + +-- Randoms P=16, within 0-99 +Precision: 16 +maxExponent: 384 +minExponent: -383 +expx1101 exp 8.473011527013724 -> 4783.900643969246 Inexact Rounded +expx1102 exp 0.0000055753022764 -> 1.000005575317818 Inexact Rounded +expx1103 exp 0.0000323474114482 -> 1.000032347934631 Inexact Rounded +expx1104 exp 64.54374138544166 -> 1.073966476173531E+28 Inexact Rounded +expx1105 exp 90.47203246416569 -> 1.956610887250643E+39 Inexact Rounded +expx1106 exp 9.299931532342757 -> 10937.27033325227 Inexact Rounded +expx1107 exp 8.759678437852203 -> 6372.062234495381 Inexact Rounded +expx1108 exp 0.0000931755127172 -> 1.000093179853690 Inexact Rounded +expx1109 exp 0.0000028101158373 -> 1.000002810119786 Inexact Rounded +expx1110 exp 0.0000008008130919 -> 1.000000800813413 Inexact Rounded +expx1111 exp 8.339771722299049 -> 4187.133803081878 Inexact Rounded +expx1112 exp 0.0026140497995474 -> 1.002617469406750 Inexact Rounded +expx1113 exp 0.7478033356261771 -> 2.112354781975418 Inexact Rounded +expx1114 exp 51.77663761827966 -> 3.064135801120365E+22 Inexact Rounded +expx1115 exp 0.1524989783061012 -> 1.164741272084955 Inexact Rounded +expx1116 exp 0.0066298798669219 -> 1.006651906170791 Inexact Rounded +expx1117 exp 9.955141865534960 -> 21060.23334287038 Inexact Rounded +expx1118 exp 92.34503059198483 -> 1.273318993481226E+40 Inexact Rounded +expx1119 exp 0.0000709388677346 -> 1.000070941383956 Inexact Rounded +expx1120 exp 79.12883036433204 -> 2.318538899389243E+34 Inexact Rounded +expx1121 exp 0.0000090881548873 -> 1.000009088196185 Inexact Rounded +expx1122 exp 0.0424828809603411 -> 1.043398194245720 Inexact Rounded +expx1123 exp 0.8009035891427416 -> 2.227552811933310 Inexact Rounded +expx1124 exp 8.825786167283102 -> 6807.540455289995 Inexact Rounded +expx1125 exp 1.535457249746275 -> 4.643448260146849 Inexact Rounded +expx1126 exp 69.02254254355800 -> 9.464754500670653E+29 Inexact Rounded +expx1127 exp 0.0007050554368713 -> 1.000705304046880 Inexact Rounded +expx1128 exp 0.0000081206549504 -> 1.000008120687923 Inexact Rounded +expx1129 exp 0.621774854641137 -> 1.862230298554903 Inexact Rounded +expx1130 exp 3.847629031404354 -> 46.88177613568203 Inexact Rounded +expx1131 exp 24.81250184697732 -> 59694268456.19966 Inexact Rounded +expx1132 exp 5.107546500516044 -> 165.2643809755670 Inexact Rounded +expx1133 exp 79.17810943951986 -> 2.435656372541360E+34 Inexact Rounded +expx1134 exp 0.0051394695667015 -> 1.005152699295301 Inexact Rounded +expx1135 exp 57.44504488501725 -> 8.872908566929688E+24 Inexact Rounded +expx1136 exp 0.0000508388968036 -> 1.000050840189122 Inexact Rounded +expx1137 exp 69.71309932148997 -> 1.888053740693541E+30 Inexact Rounded +expx1138 exp 0.0064183412981502 -> 1.006438982988835 Inexact Rounded +expx1139 exp 9.346991220814677 -> 11464.27802035082 Inexact Rounded +expx1140 exp 33.09087139999152 -> 235062229168763.5 Inexact Rounded + +-- Randoms P=7, within 0-9 +Precision: 7 +maxExponent: 96 +minExponent: -95 +expx1001 exp 2.395441 -> 10.97304 Inexact Rounded +expx1002 exp 0.6406779 -> 1.897767 Inexact Rounded +expx1003 exp 0.5618218 -> 1.753865 Inexact Rounded +expx1004 exp 3.055120 -> 21.22373 Inexact Rounded +expx1005 exp 1.536792 -> 4.649650 Inexact Rounded +expx1006 exp 0.0801591 -> 1.083459 Inexact Rounded +expx1007 exp 0.0966875 -> 1.101516 Inexact Rounded +expx1008 exp 0.0646761 -> 1.066813 Inexact Rounded +expx1009 exp 0.0095670 -> 1.009613 Inexact Rounded +expx1010 exp 2.956859 -> 19.23745 Inexact Rounded +expx1011 exp 7.504679 -> 1816.522 Inexact Rounded +expx1012 exp 0.0045259 -> 1.004536 Inexact Rounded +expx1013 exp 3.810071 -> 45.15364 Inexact Rounded +expx1014 exp 1.502390 -> 4.492413 Inexact Rounded +expx1015 exp 0.0321523 -> 1.032675 Inexact Rounded +expx1016 exp 0.0057214 -> 1.005738 Inexact Rounded +expx1017 exp 9.811445 -> 18241.33 Inexact Rounded +expx1018 exp 3.245249 -> 25.66810 Inexact Rounded +expx1019 exp 0.3189742 -> 1.375716 Inexact Rounded +expx1020 exp 0.8621610 -> 2.368273 Inexact Rounded +expx1021 exp 0.0122511 -> 1.012326 Inexact Rounded +expx1022 exp 2.202088 -> 9.043877 Inexact Rounded +expx1023 exp 8.778203 -> 6491.202 Inexact Rounded +expx1024 exp 0.1896279 -> 1.208800 Inexact Rounded +expx1025 exp 0.4510947 -> 1.570030 Inexact Rounded +expx1026 exp 0.276413 -> 1.318392 Inexact Rounded +expx1027 exp 4.490067 -> 89.12742 Inexact Rounded +expx1028 exp 0.0439786 -> 1.044960 Inexact Rounded +expx1029 exp 0.8168245 -> 2.263301 Inexact Rounded +expx1030 exp 0.0391658 -> 1.039943 Inexact Rounded +expx1031 exp 9.261816 -> 10528.24 Inexact Rounded +expx1032 exp 9.611186 -> 14930.87 Inexact Rounded +expx1033 exp 9.118125 -> 9119.087 Inexact Rounded +expx1034 exp 9.469083 -> 12953.00 Inexact Rounded +expx1035 exp 0.0499983 -> 1.051269 Inexact Rounded +expx1036 exp 0.0050746 -> 1.005087 Inexact Rounded +expx1037 exp 0.0014696 -> 1.001471 Inexact Rounded +expx1038 exp 9.138494 -> 9306.739 Inexact Rounded +expx1039 exp 0.0065436 -> 1.006565 Inexact Rounded +expx1040 exp 0.7284803 -> 2.071930 Inexact Rounded + diff --git a/Lib/test/decimaltestdata/fma.decTest b/Lib/test/decimaltestdata/fma.decTest index b0a81ca..a8197ef 100644 --- a/Lib/test/decimaltestdata/fma.decTest +++ b/Lib/test/decimaltestdata/fma.decTest @@ -1,3426 +1,3426 @@ ------------------------------------------------------------------------- --- fma.decTest -- decimal fused multiply add -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 384 -minexponent: -383 - --- These tests comprese three parts: --- 1. Sanity checks and other three-operand tests (especially those --- where the fused operation makes a difference) --- 2. Multiply tests (third operand is neutral zero [0E+emax]) --- 3. Addition tests (first operand is 1) --- The multiply and addition tests are extensive because FMA may have --- its own dedicated multiplication or addition routine(s), and they --- also inherently check the left-to-right properties. - --- Sanity checks -fmax0001 fma 1 1 1 -> 2 -fmax0002 fma 1 1 2 -> 3 -fmax0003 fma 2 2 3 -> 7 -fmax0004 fma 9 9 9 -> 90 -fmax0005 fma -1 1 1 -> 0 -fmax0006 fma -1 1 2 -> 1 -fmax0007 fma -2 2 3 -> -1 -fmax0008 fma -9 9 9 -> -72 -fmax0011 fma 1 -1 1 -> 0 -fmax0012 fma 1 -1 2 -> 1 -fmax0013 fma 2 -2 3 -> -1 -fmax0014 fma 9 -9 9 -> -72 -fmax0015 fma 1 1 -1 -> 0 -fmax0016 fma 1 1 -2 -> -1 -fmax0017 fma 2 2 -3 -> 1 -fmax0018 fma 9 9 -9 -> 72 -fmax0019 fma 3 5 7 -> 22 -fmax0029 fma 3 -5 7 -> -8 - --- non-integer exacts -fma0100 fma 25.2 63.6 -438 -> 1164.72 -fma0101 fma 0.301 0.380 334 -> 334.114380 -fma0102 fma 49.2 -4.8 23.3 -> -212.86 -fma0103 fma 4.22 0.079 -94.6 -> -94.26662 -fma0104 fma 903 0.797 0.887 -> 720.578 -fma0105 fma 6.13 -161 65.9 -> -921.03 -fma0106 fma 28.2 727 5.45 -> 20506.85 -fma0107 fma 4 605 688 -> 3108 -fma0108 fma 93.3 0.19 0.226 -> 17.953 -fma0109 fma 0.169 -341 5.61 -> -52.019 -fma0110 fma -72.2 30 -51.2 -> -2217.2 -fma0111 fma -0.409 13 20.4 -> 15.083 -fma0112 fma 317 77.0 19.0 -> 24428.0 -fma0113 fma 47 6.58 1.62 -> 310.88 -fma0114 fma 1.36 0.984 0.493 -> 1.83124 -fma0115 fma 72.7 274 1.56 -> 19921.36 -fma0116 fma 335 847 83 -> 283828 -fma0117 fma 666 0.247 25.4 -> 189.902 -fma0118 fma -3.87 3.06 78.0 -> 66.1578 -fma0119 fma 0.742 192 35.6 -> 178.064 -fma0120 fma -91.6 5.29 0.153 -> -484.411 - --- cases where result is different from separate multiply + add; each --- is preceded by the result of unfused multiply and add --- [this is about 20% of all similar cases in general] --- 888565290 1557.96930 -86087.7578 -> 1.38435735E+12 -fma0201 fma 888565290 1557.96930 -86087.7578 -> 1.38435736E+12 Inexact Rounded --- -85519342.9 735155419 42010431 -> -6.28700084E+16 -fma0205 fma -85519342.9 735155419 42010431 -> -6.28700083E+16 Inexact Rounded --- -98025.5 -294603.472 10414348.2 -> 2.88890669E+10 -fma0208 fma -98025.5 -294603.472 10414348.2 -> 2.88890670E+10 Inexact Rounded --- 5967627.39 83526540.6 498494.810 -> 4.98455271E+14 -fma0211 fma 5967627.39 83526540.6 498494.810 -> 4.98455272E+14 Inexact Rounded --- 3456.9433 874.39518 197866.615 -> 3220601.18 -fma0216 fma 3456.9433 874.39518 197866.615 -> 3220601.17 Inexact Rounded --- 62769.8287 2096.98927 48.420317 -> 131627705 -fma0218 fma 62769.8287 2096.98927 48.420317 -> 131627706 Inexact Rounded --- -68.81500 59961113.9 -8988862 -> -4.13521291E+9 -fma0219 fma -68.81500 59961113.9 -8988862 -> -4.13521292E+9 Inexact Rounded --- 2126341.02 63491.5152 302427455 -> 1.35307040E+11 -fma0226 fma 2126341.02 63491.5152 302427455 -> 1.35307041E+11 Inexact Rounded - - --- Infinite combinations -fmax0800 fma Inf Inf Inf -> Infinity -fmax0801 fma Inf Inf -Inf -> NaN Invalid_operation -fmax0802 fma Inf -Inf Inf -> NaN Invalid_operation -fmax0803 fma Inf -Inf -Inf -> -Infinity -fmax0804 fma -Inf Inf Inf -> NaN Invalid_operation -fmax0805 fma -Inf Inf -Inf -> -Infinity -fmax0806 fma -Inf -Inf Inf -> Infinity -fmax0807 fma -Inf -Inf -Inf -> NaN Invalid_operation -fmax0808 fma -Inf 0 1 -> NaN Invalid_operation -fmax0809 fma -Inf 0 NaN -> NaN Invalid_operation - --- Triple NaN propagation -fmax0900 fma NaN2 NaN3 NaN5 -> NaN2 -fmax0901 fma 0 NaN3 NaN5 -> NaN3 -fmax0902 fma 0 0 NaN5 -> NaN5 --- first sNaN wins (consider qNaN from earlier sNaN being --- overridden by an sNaN in third operand) -fmax0903 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation -fmax0904 fma 0 sNaN2 sNaN3 -> NaN2 Invalid_operation -fmax0905 fma 0 0 sNaN3 -> NaN3 Invalid_operation -fmax0906 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation -fmax0907 fma NaN7 sNaN2 sNaN3 -> NaN2 Invalid_operation -fmax0908 fma NaN7 NaN5 sNaN3 -> NaN3 Invalid_operation - --- MULTIPLICATION TESTS ------------------------------------------------ --- sanity checks (as base, above) -fmax2000 fma 2 2 0E+999999 -> 4 -fmax2001 fma 2 3 0E+999999 -> 6 -fmax2002 fma 5 1 0E+999999 -> 5 -fmax2003 fma 5 2 0E+999999 -> 10 -fmax2004 fma 1.20 2 0E+999999 -> 2.40 -fmax2005 fma 1.20 0 0E+999999 -> 0.00 -fmax2006 fma 1.20 -2 0E+999999 -> -2.40 -fmax2007 fma -1.20 2 0E+999999 -> -2.40 -fmax2008 fma -1.20 0 0E+999999 -> 0.00 -fmax2009 fma -1.20 -2 0E+999999 -> 2.40 -fmax2010 fma 5.09 7.1 0E+999999 -> 36.139 -fmax2011 fma 2.5 4 0E+999999 -> 10.0 -fmax2012 fma 2.50 4 0E+999999 -> 10.00 -fmax2013 fma 1.23456789 1.00000000 0E+999999 -> 1.23456789 Rounded -fmax2014 fma 9.999999999 9.999999999 0E+999999 -> 100.000000 Inexact Rounded -fmax2015 fma 2.50 4 0E+999999 -> 10.00 -precision: 6 -fmax2016 fma 2.50 4 0E+999999 -> 10.00 -fmax2017 fma 9.999999 9.999999 0E+999999 -> 100.000 Inexact Rounded -fmax2018 fma 9.999999 -9.999999 0E+999999 -> -100.000 Inexact Rounded -fmax2019 fma -9.999999 9.999999 0E+999999 -> -100.000 Inexact Rounded -fmax2020 fma -9.999999 -9.999999 0E+999999 -> 100.000 Inexact Rounded - --- 1999.12.21: next one is a edge case if intermediate longs are used -precision: 15 -fmax2059 fma 999999999999 9765625 0E+999999 -> 9.76562499999023E+18 Inexact Rounded -precision: 30 -fmax2160 fma 999999999999 9765625 0E+999999 -> 9765624999990234375 -precision: 9 ------ - --- zeros, etc. -fmax2021 fma 0 0 0E+999999 -> 0 -fmax2022 fma 0 -0 0E+999999 -> 0 -fmax2023 fma -0 0 0E+999999 -> 0 -fmax2024 fma -0 -0 0E+999999 -> 0 -fmax2025 fma -0.0 -0.0 0E+999999 -> 0.00 -fmax2026 fma -0.0 -0.0 0E+999999 -> 0.00 -fmax2027 fma -0.0 -0.0 0E+999999 -> 0.00 -fmax2028 fma -0.0 -0.0 0E+999999 -> 0.00 -fmax2030 fma 5.00 1E-3 0E+999999 -> 0.00500 -fmax2031 fma 00.00 0.000 0E+999999 -> 0.00000 -fmax2032 fma 00.00 0E-3 0E+999999 -> 0.00000 -- rhs is 0 -fmax2033 fma 0E-3 00.00 0E+999999 -> 0.00000 -- lhs is 0 -fmax2034 fma -5.00 1E-3 0E+999999 -> -0.00500 -fmax2035 fma -00.00 0.000 0E+999999 -> 0.00000 -fmax2036 fma -00.00 0E-3 0E+999999 -> 0.00000 -- rhs is 0 -fmax2037 fma -0E-3 00.00 0E+999999 -> 0.00000 -- lhs is 0 -fmax2038 fma 5.00 -1E-3 0E+999999 -> -0.00500 -fmax2039 fma 00.00 -0.000 0E+999999 -> 0.00000 -fmax2040 fma 00.00 -0E-3 0E+999999 -> 0.00000 -- rhs is 0 -fmax2041 fma 0E-3 -00.00 0E+999999 -> 0.00000 -- lhs is 0 -fmax2042 fma -5.00 -1E-3 0E+999999 -> 0.00500 -fmax2043 fma -00.00 -0.000 0E+999999 -> 0.00000 -fmax2044 fma -00.00 -0E-3 0E+999999 -> 0.00000 -- rhs is 0 -fmax2045 fma -0E-3 -00.00 0E+999999 -> 0.00000 -- lhs is 0 - --- examples from decarith multiply -fmax2050 fma 1.20 3 0E+999999 -> 3.60 -fmax2051 fma 7 3 0E+999999 -> 21 -fmax2052 fma 0.9 0.8 0E+999999 -> 0.72 -fmax2053 fma 0.9 -0 0E+999999 -> 0.0 -fmax2054 fma 654321 654321 0E+999999 -> 4.28135971E+11 Inexact Rounded - -fmax2060 fma 123.45 1e7 0E+999999 -> 1.2345E+9 -fmax2061 fma 123.45 1e8 0E+999999 -> 1.2345E+10 -fmax2062 fma 123.45 1e+9 0E+999999 -> 1.2345E+11 -fmax2063 fma 123.45 1e10 0E+999999 -> 1.2345E+12 -fmax2064 fma 123.45 1e11 0E+999999 -> 1.2345E+13 -fmax2065 fma 123.45 1e12 0E+999999 -> 1.2345E+14 -fmax2066 fma 123.45 1e13 0E+999999 -> 1.2345E+15 - - --- test some intermediate lengths -precision: 9 -fmax2080 fma 0.1 123456789 0E+999999 -> 12345678.9 -fmax2081 fma 0.1 1234567891 0E+999999 -> 123456789 Inexact Rounded -fmax2082 fma 0.1 12345678912 0E+999999 -> 1.23456789E+9 Inexact Rounded -fmax2083 fma 0.1 12345678912345 0E+999999 -> 1.23456789E+12 Inexact Rounded -fmax2084 fma 0.1 123456789 0E+999999 -> 12345678.9 -precision: 8 -fmax2085 fma 0.1 12345678912 0E+999999 -> 1.2345679E+9 Inexact Rounded -fmax2086 fma 0.1 12345678912345 0E+999999 -> 1.2345679E+12 Inexact Rounded -precision: 7 -fmax2087 fma 0.1 12345678912 0E+999999 -> 1.234568E+9 Inexact Rounded -fmax2088 fma 0.1 12345678912345 0E+999999 -> 1.234568E+12 Inexact Rounded - -precision: 9 -fmax2090 fma 123456789 0.1 0E+999999 -> 12345678.9 -fmax2091 fma 1234567891 0.1 0E+999999 -> 123456789 Inexact Rounded -fmax2092 fma 12345678912 0.1 0E+999999 -> 1.23456789E+9 Inexact Rounded -fmax2093 fma 12345678912345 0.1 0E+999999 -> 1.23456789E+12 Inexact Rounded -fmax2094 fma 123456789 0.1 0E+999999 -> 12345678.9 -precision: 8 -fmax2095 fma 12345678912 0.1 0E+999999 -> 1.2345679E+9 Inexact Rounded -fmax2096 fma 12345678912345 0.1 0E+999999 -> 1.2345679E+12 Inexact Rounded -precision: 7 -fmax2097 fma 12345678912 0.1 0E+999999 -> 1.234568E+9 Inexact Rounded -fmax2098 fma 12345678912345 0.1 0E+999999 -> 1.234568E+12 Inexact Rounded - --- test some more edge cases and carries -maxexponent: 9999 -minexponent: -9999 -precision: 33 -fmax2101 fma 9 9 0E+999999 -> 81 -fmax2102 fma 9 90 0E+999999 -> 810 -fmax2103 fma 9 900 0E+999999 -> 8100 -fmax2104 fma 9 9000 0E+999999 -> 81000 -fmax2105 fma 9 90000 0E+999999 -> 810000 -fmax2106 fma 9 900000 0E+999999 -> 8100000 -fmax2107 fma 9 9000000 0E+999999 -> 81000000 -fmax2108 fma 9 90000000 0E+999999 -> 810000000 -fmax2109 fma 9 900000000 0E+999999 -> 8100000000 -fmax2110 fma 9 9000000000 0E+999999 -> 81000000000 -fmax2111 fma 9 90000000000 0E+999999 -> 810000000000 -fmax2112 fma 9 900000000000 0E+999999 -> 8100000000000 -fmax2113 fma 9 9000000000000 0E+999999 -> 81000000000000 -fmax2114 fma 9 90000000000000 0E+999999 -> 810000000000000 -fmax2115 fma 9 900000000000000 0E+999999 -> 8100000000000000 -fmax2116 fma 9 9000000000000000 0E+999999 -> 81000000000000000 -fmax2117 fma 9 90000000000000000 0E+999999 -> 810000000000000000 -fmax2118 fma 9 900000000000000000 0E+999999 -> 8100000000000000000 -fmax2119 fma 9 9000000000000000000 0E+999999 -> 81000000000000000000 -fmax2120 fma 9 90000000000000000000 0E+999999 -> 810000000000000000000 -fmax2121 fma 9 900000000000000000000 0E+999999 -> 8100000000000000000000 -fmax2122 fma 9 9000000000000000000000 0E+999999 -> 81000000000000000000000 -fmax2123 fma 9 90000000000000000000000 0E+999999 -> 810000000000000000000000 --- test some more edge cases without carries -fmax2131 fma 3 3 0E+999999 -> 9 -fmax2132 fma 3 30 0E+999999 -> 90 -fmax2133 fma 3 300 0E+999999 -> 900 -fmax2134 fma 3 3000 0E+999999 -> 9000 -fmax2135 fma 3 30000 0E+999999 -> 90000 -fmax2136 fma 3 300000 0E+999999 -> 900000 -fmax2137 fma 3 3000000 0E+999999 -> 9000000 -fmax2138 fma 3 30000000 0E+999999 -> 90000000 -fmax2139 fma 3 300000000 0E+999999 -> 900000000 -fmax2140 fma 3 3000000000 0E+999999 -> 9000000000 -fmax2141 fma 3 30000000000 0E+999999 -> 90000000000 -fmax2142 fma 3 300000000000 0E+999999 -> 900000000000 -fmax2143 fma 3 3000000000000 0E+999999 -> 9000000000000 -fmax2144 fma 3 30000000000000 0E+999999 -> 90000000000000 -fmax2145 fma 3 300000000000000 0E+999999 -> 900000000000000 -fmax2146 fma 3 3000000000000000 0E+999999 -> 9000000000000000 -fmax2147 fma 3 30000000000000000 0E+999999 -> 90000000000000000 -fmax2148 fma 3 300000000000000000 0E+999999 -> 900000000000000000 -fmax2149 fma 3 3000000000000000000 0E+999999 -> 9000000000000000000 -fmax2150 fma 3 30000000000000000000 0E+999999 -> 90000000000000000000 -fmax2151 fma 3 300000000000000000000 0E+999999 -> 900000000000000000000 -fmax2152 fma 3 3000000000000000000000 0E+999999 -> 9000000000000000000000 -fmax2153 fma 3 30000000000000000000000 0E+999999 -> 90000000000000000000000 - -maxexponent: 999999 -minexponent: -999999 -precision: 9 --- test some cases that are close to exponent overflow/underflow -fmax2170 fma 1 9e999999 0E+999999 -> 9E+999999 -fmax2171 fma 1 9.9e999999 0E+999999 -> 9.9E+999999 -fmax2172 fma 1 9.99e999999 0E+999999 -> 9.99E+999999 -fmax2173 fma 9e999999 1 0E+999999 -> 9E+999999 -fmax2174 fma 9.9e999999 1 0E+999999 -> 9.9E+999999 -fmax2176 fma 9.99e999999 1 0E+999999 -> 9.99E+999999 -fmax2177 fma 1 9.99999e999999 0E+999999 -> 9.99999E+999999 -fmax2178 fma 9.99999e999999 1 0E+999999 -> 9.99999E+999999 - -fmax2180 fma 0.1 9e-999998 0E+999999 -> 9E-999999 -fmax2181 fma 0.1 99e-999998 0E+999999 -> 9.9E-999998 -fmax2182 fma 0.1 999e-999998 0E+999999 -> 9.99E-999997 - -fmax2183 fma 0.1 9e-999998 0E+999999 -> 9E-999999 -fmax2184 fma 0.1 99e-999998 0E+999999 -> 9.9E-999998 -fmax2185 fma 0.1 999e-999998 0E+999999 -> 9.99E-999997 -fmax2186 fma 0.1 999e-999997 0E+999999 -> 9.99E-999996 -fmax2187 fma 0.1 9999e-999997 0E+999999 -> 9.999E-999995 -fmax2188 fma 0.1 99999e-999997 0E+999999 -> 9.9999E-999994 - -fmax2190 fma 1 9e-999998 0E+999999 -> 9E-999998 -fmax2191 fma 1 99e-999998 0E+999999 -> 9.9E-999997 -fmax2192 fma 1 999e-999998 0E+999999 -> 9.99E-999996 -fmax2193 fma 9e-999998 1 0E+999999 -> 9E-999998 -fmax2194 fma 99e-999998 1 0E+999999 -> 9.9E-999997 -fmax2195 fma 999e-999998 1 0E+999999 -> 9.99E-999996 - --- long operand triangle -precision: 33 -fmax2246 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369671916511992830 Inexact Rounded -precision: 32 -fmax2247 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967191651199283 Inexact Rounded -precision: 31 -fmax2248 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933696719165119928 Inexact Rounded -precision: 30 -fmax2249 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369671916511993 Inexact Rounded -precision: 29 -fmax2250 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967191651199 Inexact Rounded -precision: 28 -fmax2251 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933696719165120 Inexact Rounded -precision: 27 -fmax2252 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369671916512 Inexact Rounded -precision: 26 -fmax2253 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967191651 Inexact Rounded -precision: 25 -fmax2254 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933696719165 Inexact Rounded -precision: 24 -fmax2255 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369671917 Inexact Rounded -precision: 23 -fmax2256 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967192 Inexact Rounded -precision: 22 -fmax2257 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933696719 Inexact Rounded -precision: 21 -fmax2258 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369672 Inexact Rounded -precision: 20 -fmax2259 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967 Inexact Rounded -precision: 19 -fmax2260 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933697 Inexact Rounded -precision: 18 -fmax2261 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193370 Inexact Rounded -precision: 17 -fmax2262 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119337 Inexact Rounded -precision: 16 -fmax2263 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011934 Inexact Rounded -precision: 15 -fmax2264 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193 Inexact Rounded -precision: 14 -fmax2265 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119 Inexact Rounded -precision: 13 -fmax2266 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908012 Inexact Rounded -precision: 12 -fmax2267 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801 Inexact Rounded -precision: 11 -fmax2268 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080 Inexact Rounded -precision: 10 -fmax2269 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908 Inexact Rounded -precision: 9 -fmax2270 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.291 Inexact Rounded -precision: 8 -fmax2271 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29 Inexact Rounded -precision: 7 -fmax2272 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.3 Inexact Rounded -precision: 6 -fmax2273 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433 Inexact Rounded -precision: 5 -fmax2274 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1.4543E+5 Inexact Rounded -precision: 4 -fmax2275 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1.454E+5 Inexact Rounded -precision: 3 -fmax2276 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1.45E+5 Inexact Rounded -precision: 2 -fmax2277 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1.5E+5 Inexact Rounded -precision: 1 -fmax2278 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1E+5 Inexact Rounded - --- test some edge cases with exact rounding -maxexponent: 9999 -minexponent: -9999 -precision: 9 -fmax2301 fma 9 9 0E+999999 -> 81 -fmax2302 fma 9 90 0E+999999 -> 810 -fmax2303 fma 9 900 0E+999999 -> 8100 -fmax2304 fma 9 9000 0E+999999 -> 81000 -fmax2305 fma 9 90000 0E+999999 -> 810000 -fmax2306 fma 9 900000 0E+999999 -> 8100000 -fmax2307 fma 9 9000000 0E+999999 -> 81000000 -fmax2308 fma 9 90000000 0E+999999 -> 810000000 -fmax2309 fma 9 900000000 0E+999999 -> 8.10000000E+9 Rounded -fmax2310 fma 9 9000000000 0E+999999 -> 8.10000000E+10 Rounded -fmax2311 fma 9 90000000000 0E+999999 -> 8.10000000E+11 Rounded -fmax2312 fma 9 900000000000 0E+999999 -> 8.10000000E+12 Rounded -fmax2313 fma 9 9000000000000 0E+999999 -> 8.10000000E+13 Rounded -fmax2314 fma 9 90000000000000 0E+999999 -> 8.10000000E+14 Rounded -fmax2315 fma 9 900000000000000 0E+999999 -> 8.10000000E+15 Rounded -fmax2316 fma 9 9000000000000000 0E+999999 -> 8.10000000E+16 Rounded -fmax2317 fma 9 90000000000000000 0E+999999 -> 8.10000000E+17 Rounded -fmax2318 fma 9 900000000000000000 0E+999999 -> 8.10000000E+18 Rounded -fmax2319 fma 9 9000000000000000000 0E+999999 -> 8.10000000E+19 Rounded -fmax2320 fma 9 90000000000000000000 0E+999999 -> 8.10000000E+20 Rounded -fmax2321 fma 9 900000000000000000000 0E+999999 -> 8.10000000E+21 Rounded -fmax2322 fma 9 9000000000000000000000 0E+999999 -> 8.10000000E+22 Rounded -fmax2323 fma 9 90000000000000000000000 0E+999999 -> 8.10000000E+23 Rounded - --- fastpath breakers -precision: 29 -fmax2330 fma 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603 0E+999999 -> 1.6487212707001281468486507878 Inexact Rounded -precision: 55 -fmax2331 fma 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428 0E+999999 -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded - - --- tryzeros cases -precision: 7 -rounding: half_up -maxExponent: 92 -minexponent: -92 -fmax2504 fma 0E-60 1000E-60 0E+999999 -> 0E-98 Clamped -fmax2505 fma 100E+60 0E+60 0E+999999 -> 0E+92 Clamped - --- mixed with zeros -maxexponent: 999999 -minexponent: -999999 -precision: 9 -fmax2541 fma 0 -1 0E+999999 -> 0 -fmax2542 fma -0 -1 0E+999999 -> 0 -fmax2543 fma 0 1 0E+999999 -> 0 -fmax2544 fma -0 1 0E+999999 -> 0 -fmax2545 fma -1 0 0E+999999 -> 0 -fmax2546 fma -1 -0 0E+999999 -> 0 -fmax2547 fma 1 0 0E+999999 -> 0 -fmax2548 fma 1 -0 0E+999999 -> 0 - -fmax2551 fma 0.0 -1 0E+999999 -> 0.0 -fmax2552 fma -0.0 -1 0E+999999 -> 0.0 -fmax2553 fma 0.0 1 0E+999999 -> 0.0 -fmax2554 fma -0.0 1 0E+999999 -> 0.0 -fmax2555 fma -1.0 0 0E+999999 -> 0.0 -fmax2556 fma -1.0 -0 0E+999999 -> 0.0 -fmax2557 fma 1.0 0 0E+999999 -> 0.0 -fmax2558 fma 1.0 -0 0E+999999 -> 0.0 - -fmax2561 fma 0 -1.0 0E+999999 -> 0.0 -fmax2562 fma -0 -1.0 0E+999999 -> 0.0 -fmax2563 fma 0 1.0 0E+999999 -> 0.0 -fmax2564 fma -0 1.0 0E+999999 -> 0.0 -fmax2565 fma -1 0.0 0E+999999 -> 0.0 -fmax2566 fma -1 -0.0 0E+999999 -> 0.0 -fmax2567 fma 1 0.0 0E+999999 -> 0.0 -fmax2568 fma 1 -0.0 0E+999999 -> 0.0 - -fmax2571 fma 0.0 -1.0 0E+999999 -> 0.00 -fmax2572 fma -0.0 -1.0 0E+999999 -> 0.00 -fmax2573 fma 0.0 1.0 0E+999999 -> 0.00 -fmax2574 fma -0.0 1.0 0E+999999 -> 0.00 -fmax2575 fma -1.0 0.0 0E+999999 -> 0.00 -fmax2576 fma -1.0 -0.0 0E+999999 -> 0.00 -fmax2577 fma 1.0 0.0 0E+999999 -> 0.00 -fmax2578 fma 1.0 -0.0 0E+999999 -> 0.00 - - --- Specials -fmax2580 fma Inf -Inf 0E+999999 -> -Infinity -fmax2581 fma Inf -1000 0E+999999 -> -Infinity -fmax2582 fma Inf -1 0E+999999 -> -Infinity -fmax2583 fma Inf -0 0E+999999 -> NaN Invalid_operation -fmax2584 fma Inf 0 0E+999999 -> NaN Invalid_operation -fmax2585 fma Inf 1 0E+999999 -> Infinity -fmax2586 fma Inf 1000 0E+999999 -> Infinity -fmax2587 fma Inf Inf 0E+999999 -> Infinity -fmax2588 fma -1000 Inf 0E+999999 -> -Infinity -fmax2589 fma -Inf Inf 0E+999999 -> -Infinity -fmax2590 fma -1 Inf 0E+999999 -> -Infinity -fmax2591 fma -0 Inf 0E+999999 -> NaN Invalid_operation -fmax2592 fma 0 Inf 0E+999999 -> NaN Invalid_operation -fmax2593 fma 1 Inf 0E+999999 -> Infinity -fmax2594 fma 1000 Inf 0E+999999 -> Infinity -fmax2595 fma Inf Inf 0E+999999 -> Infinity - -fmax2600 fma -Inf -Inf 0E+999999 -> Infinity -fmax2601 fma -Inf -1000 0E+999999 -> Infinity -fmax2602 fma -Inf -1 0E+999999 -> Infinity -fmax2603 fma -Inf -0 0E+999999 -> NaN Invalid_operation -fmax2604 fma -Inf 0 0E+999999 -> NaN Invalid_operation -fmax2605 fma -Inf 1 0E+999999 -> -Infinity -fmax2606 fma -Inf 1000 0E+999999 -> -Infinity -fmax2607 fma -Inf Inf 0E+999999 -> -Infinity -fmax2608 fma -1000 Inf 0E+999999 -> -Infinity -fmax2609 fma -Inf -Inf 0E+999999 -> Infinity -fmax2610 fma -1 -Inf 0E+999999 -> Infinity -fmax2611 fma -0 -Inf 0E+999999 -> NaN Invalid_operation -fmax2612 fma 0 -Inf 0E+999999 -> NaN Invalid_operation -fmax2613 fma 1 -Inf 0E+999999 -> -Infinity -fmax2614 fma 1000 -Inf 0E+999999 -> -Infinity -fmax2615 fma Inf -Inf 0E+999999 -> -Infinity - -fmax2621 fma NaN -Inf 0E+999999 -> NaN -fmax2622 fma NaN -1000 0E+999999 -> NaN -fmax2623 fma NaN -1 0E+999999 -> NaN -fmax2624 fma NaN -0 0E+999999 -> NaN -fmax2625 fma NaN 0 0E+999999 -> NaN -fmax2626 fma NaN 1 0E+999999 -> NaN -fmax2627 fma NaN 1000 0E+999999 -> NaN -fmax2628 fma NaN Inf 0E+999999 -> NaN -fmax2629 fma NaN NaN 0E+999999 -> NaN -fmax2630 fma -Inf NaN 0E+999999 -> NaN -fmax2631 fma -1000 NaN 0E+999999 -> NaN -fmax2632 fma -1 NaN 0E+999999 -> NaN -fmax2633 fma -0 NaN 0E+999999 -> NaN -fmax2634 fma 0 NaN 0E+999999 -> NaN -fmax2635 fma 1 NaN 0E+999999 -> NaN -fmax2636 fma 1000 NaN 0E+999999 -> NaN -fmax2637 fma Inf NaN 0E+999999 -> NaN - -fmax2641 fma sNaN -Inf 0E+999999 -> NaN Invalid_operation -fmax2642 fma sNaN -1000 0E+999999 -> NaN Invalid_operation -fmax2643 fma sNaN -1 0E+999999 -> NaN Invalid_operation -fmax2644 fma sNaN -0 0E+999999 -> NaN Invalid_operation -fmax2645 fma sNaN 0 0E+999999 -> NaN Invalid_operation -fmax2646 fma sNaN 1 0E+999999 -> NaN Invalid_operation -fmax2647 fma sNaN 1000 0E+999999 -> NaN Invalid_operation -fmax2648 fma sNaN NaN 0E+999999 -> NaN Invalid_operation -fmax2649 fma sNaN sNaN 0E+999999 -> NaN Invalid_operation -fmax2650 fma NaN sNaN 0E+999999 -> NaN Invalid_operation -fmax2651 fma -Inf sNaN 0E+999999 -> NaN Invalid_operation -fmax2652 fma -1000 sNaN 0E+999999 -> NaN Invalid_operation -fmax2653 fma -1 sNaN 0E+999999 -> NaN Invalid_operation -fmax2654 fma -0 sNaN 0E+999999 -> NaN Invalid_operation -fmax2655 fma 0 sNaN 0E+999999 -> NaN Invalid_operation -fmax2656 fma 1 sNaN 0E+999999 -> NaN Invalid_operation -fmax2657 fma 1000 sNaN 0E+999999 -> NaN Invalid_operation -fmax2658 fma Inf sNaN 0E+999999 -> NaN Invalid_operation -fmax2659 fma NaN sNaN 0E+999999 -> NaN Invalid_operation - --- propagating NaNs -fmax2661 fma NaN9 -Inf 0E+999999 -> NaN9 -fmax2662 fma NaN8 999 0E+999999 -> NaN8 -fmax2663 fma NaN71 Inf 0E+999999 -> NaN71 -fmax2664 fma NaN6 NaN5 0E+999999 -> NaN6 -fmax2665 fma -Inf NaN4 0E+999999 -> NaN4 -fmax2666 fma -999 NaN33 0E+999999 -> NaN33 -fmax2667 fma Inf NaN2 0E+999999 -> NaN2 - -fmax2671 fma sNaN99 -Inf 0E+999999 -> NaN99 Invalid_operation -fmax2672 fma sNaN98 -11 0E+999999 -> NaN98 Invalid_operation -fmax2673 fma sNaN97 NaN 0E+999999 -> NaN97 Invalid_operation -fmax2674 fma sNaN16 sNaN94 0E+999999 -> NaN16 Invalid_operation -fmax2675 fma NaN95 sNaN93 0E+999999 -> NaN93 Invalid_operation -fmax2676 fma -Inf sNaN92 0E+999999 -> NaN92 Invalid_operation -fmax2677 fma 088 sNaN91 0E+999999 -> NaN91 Invalid_operation -fmax2678 fma Inf sNaN90 0E+999999 -> NaN90 Invalid_operation -fmax2679 fma NaN sNaN89 0E+999999 -> NaN89 Invalid_operation - -fmax2681 fma -NaN9 -Inf 0E+999999 -> -NaN9 -fmax2682 fma -NaN8 999 0E+999999 -> -NaN8 -fmax2683 fma -NaN71 Inf 0E+999999 -> -NaN71 -fmax2684 fma -NaN6 -NaN5 0E+999999 -> -NaN6 -fmax2685 fma -Inf -NaN4 0E+999999 -> -NaN4 -fmax2686 fma -999 -NaN33 0E+999999 -> -NaN33 -fmax2687 fma Inf -NaN2 0E+999999 -> -NaN2 - -fmax2691 fma -sNaN99 -Inf 0E+999999 -> -NaN99 Invalid_operation -fmax2692 fma -sNaN98 -11 0E+999999 -> -NaN98 Invalid_operation -fmax2693 fma -sNaN97 NaN 0E+999999 -> -NaN97 Invalid_operation -fmax2694 fma -sNaN16 -sNaN94 0E+999999 -> -NaN16 Invalid_operation -fmax2695 fma -NaN95 -sNaN93 0E+999999 -> -NaN93 Invalid_operation -fmax2696 fma -Inf -sNaN92 0E+999999 -> -NaN92 Invalid_operation -fmax2697 fma 088 -sNaN91 0E+999999 -> -NaN91 Invalid_operation -fmax2698 fma Inf -sNaN90 0E+999999 -> -NaN90 Invalid_operation -fmax2699 fma -NaN -sNaN89 0E+999999 -> -NaN89 Invalid_operation - -fmax2701 fma -NaN -Inf 0E+999999 -> -NaN -fmax2702 fma -NaN 999 0E+999999 -> -NaN -fmax2703 fma -NaN Inf 0E+999999 -> -NaN -fmax2704 fma -NaN -NaN 0E+999999 -> -NaN -fmax2705 fma -Inf -NaN0 0E+999999 -> -NaN -fmax2706 fma -999 -NaN 0E+999999 -> -NaN -fmax2707 fma Inf -NaN 0E+999999 -> -NaN - -fmax2711 fma -sNaN -Inf 0E+999999 -> -NaN Invalid_operation -fmax2712 fma -sNaN -11 0E+999999 -> -NaN Invalid_operation -fmax2713 fma -sNaN00 NaN 0E+999999 -> -NaN Invalid_operation -fmax2714 fma -sNaN -sNaN 0E+999999 -> -NaN Invalid_operation -fmax2715 fma -NaN -sNaN 0E+999999 -> -NaN Invalid_operation -fmax2716 fma -Inf -sNaN 0E+999999 -> -NaN Invalid_operation -fmax2717 fma 088 -sNaN 0E+999999 -> -NaN Invalid_operation -fmax2718 fma Inf -sNaN 0E+999999 -> -NaN Invalid_operation -fmax2719 fma -NaN -sNaN 0E+999999 -> -NaN Invalid_operation - --- overflow and underflow tests .. note subnormal results -maxexponent: 999999 -minexponent: -999999 -fmax2730 fma +1.23456789012345E-0 9E+999999 0E+999999 -> Infinity Inexact Overflow Rounded -fmax2731 fma 9E+999999 +1.23456789012345E-0 0E+999999 -> Infinity Inexact Overflow Rounded -fmax2732 fma +0.100 9E-999999 0E+999999 -> 9.00E-1000000 Subnormal -fmax2733 fma 9E-999999 +0.100 0E+999999 -> 9.00E-1000000 Subnormal -fmax2735 fma -1.23456789012345E-0 9E+999999 0E+999999 -> -Infinity Inexact Overflow Rounded -fmax2736 fma 9E+999999 -1.23456789012345E-0 0E+999999 -> -Infinity Inexact Overflow Rounded -fmax2737 fma -0.100 9E-999999 0E+999999 -> -9.00E-1000000 Subnormal -fmax2738 fma 9E-999999 -0.100 0E+999999 -> -9.00E-1000000 Subnormal - --- signs -fmax2751 fma 1e+777777 1e+411111 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2752 fma 1e+777777 -1e+411111 0E+999999 -> -Infinity Overflow Inexact Rounded -fmax2753 fma -1e+777777 1e+411111 0E+999999 -> -Infinity Overflow Inexact Rounded -fmax2754 fma -1e+777777 -1e+411111 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2755 fma 1e-777777 1e-411111 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped -fmax2756 fma 1e-777777 -1e-411111 0E+999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped -fmax2757 fma -1e-777777 1e-411111 0E+999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped -fmax2758 fma -1e-777777 -1e-411111 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped - --- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) -precision: 9 -fmax2760 fma 1e-600000 1e-400001 0E+999999 -> 1E-1000001 Subnormal -fmax2761 fma 1e-600000 1e-400002 0E+999999 -> 1E-1000002 Subnormal -fmax2762 fma 1e-600000 1e-400003 0E+999999 -> 1E-1000003 Subnormal -fmax2763 fma 1e-600000 1e-400004 0E+999999 -> 1E-1000004 Subnormal -fmax2764 fma 1e-600000 1e-400005 0E+999999 -> 1E-1000005 Subnormal -fmax2765 fma 1e-600000 1e-400006 0E+999999 -> 1E-1000006 Subnormal -fmax2766 fma 1e-600000 1e-400007 0E+999999 -> 1E-1000007 Subnormal -fmax2767 fma 1e-600000 1e-400008 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped -fmax2768 fma 1e-600000 1e-400009 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped -fmax2769 fma 1e-600000 1e-400010 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped --- [no equivalent of 'subnormal' for overflow] -fmax2770 fma 1e+600000 1e+400001 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2771 fma 1e+600000 1e+400002 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2772 fma 1e+600000 1e+400003 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2773 fma 1e+600000 1e+400004 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2774 fma 1e+600000 1e+400005 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2775 fma 1e+600000 1e+400006 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2776 fma 1e+600000 1e+400007 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2777 fma 1e+600000 1e+400008 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2778 fma 1e+600000 1e+400009 0E+999999 -> Infinity Overflow Inexact Rounded -fmax2779 fma 1e+600000 1e+400010 0E+999999 -> Infinity Overflow Inexact Rounded - --- 'subnormal' test edge condition at higher precisions -precision: 99 -fmax2780 fma 1e-600000 1e-400007 0E+999999 -> 1E-1000007 Subnormal -fmax2781 fma 1e-600000 1e-400008 0E+999999 -> 1E-1000008 Subnormal -fmax2782 fma 1e-600000 1e-400097 0E+999999 -> 1E-1000097 Subnormal -fmax2783 fma 1e-600000 1e-400098 0E+999999 -> 0E-1000097 Underflow Subnormal Inexact Rounded Clamped -precision: 999 -fmax2784 fma 1e-600000 1e-400997 0E+999999 -> 1E-1000997 Subnormal -fmax2785 fma 1e-600000 1e-400998 0E+999999 -> 0E-1000997 Underflow Subnormal Inexact Rounded Clamped - --- test subnormals rounding -precision: 5 -maxExponent: 999 -minexponent: -999 -rounding: half_even - -fmax2801 fma 1.0000E-999 1 0E+999999 -> 1.0000E-999 -fmax2802 fma 1.000E-999 1e-1 0E+999999 -> 1.000E-1000 Subnormal -fmax2803 fma 1.00E-999 1e-2 0E+999999 -> 1.00E-1001 Subnormal -fmax2804 fma 1.0E-999 1e-3 0E+999999 -> 1.0E-1002 Subnormal -fmax2805 fma 1.0E-999 1e-4 0E+999999 -> 1E-1003 Subnormal Rounded -fmax2806 fma 1.3E-999 1e-4 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded -fmax2807 fma 1.5E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded -fmax2808 fma 1.7E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded -fmax2809 fma 2.3E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded -fmax2810 fma 2.5E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded -fmax2811 fma 2.7E-999 1e-4 0E+999999 -> 3E-1003 Underflow Subnormal Inexact Rounded -fmax2812 fma 1.49E-999 1e-4 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded -fmax2813 fma 1.50E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded -fmax2814 fma 1.51E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded -fmax2815 fma 2.49E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded -fmax2816 fma 2.50E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded -fmax2817 fma 2.51E-999 1e-4 0E+999999 -> 3E-1003 Underflow Subnormal Inexact Rounded - -fmax2818 fma 1E-999 1e-4 0E+999999 -> 1E-1003 Subnormal -fmax2819 fma 3E-999 1e-5 0E+999999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped -fmax2820 fma 5E-999 1e-5 0E+999999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped -fmax2821 fma 7E-999 1e-5 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded -fmax2822 fma 9E-999 1e-5 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded -fmax2823 fma 9.9E-999 1e-5 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded - -fmax2824 fma 1E-999 -1e-4 0E+999999 -> -1E-1003 Subnormal -fmax2825 fma 3E-999 -1e-5 0E+999999 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped -fmax2826 fma -5E-999 1e-5 0E+999999 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped -fmax2827 fma 7E-999 -1e-5 0E+999999 -> -1E-1003 Underflow Subnormal Inexact Rounded -fmax2828 fma -9E-999 1e-5 0E+999999 -> -1E-1003 Underflow Subnormal Inexact Rounded -fmax2829 fma 9.9E-999 -1e-5 0E+999999 -> -1E-1003 Underflow Subnormal Inexact Rounded -fmax2830 fma 3.0E-999 -1e-5 0E+999999 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped - -fmax2831 fma 1.0E-501 1e-501 0E+999999 -> 1.0E-1002 Subnormal -fmax2832 fma 2.0E-501 2e-501 0E+999999 -> 4.0E-1002 Subnormal -fmax2833 fma 4.0E-501 4e-501 0E+999999 -> 1.60E-1001 Subnormal -fmax2834 fma 10.0E-501 10e-501 0E+999999 -> 1.000E-1000 Subnormal -fmax2835 fma 30.0E-501 30e-501 0E+999999 -> 9.000E-1000 Subnormal -fmax2836 fma 40.0E-501 40e-501 0E+999999 -> 1.6000E-999 - --- squares -fmax2840 fma 1E-502 1e-502 0E+999999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped -fmax2841 fma 1E-501 1e-501 0E+999999 -> 1E-1002 Subnormal -fmax2842 fma 2E-501 2e-501 0E+999999 -> 4E-1002 Subnormal -fmax2843 fma 4E-501 4e-501 0E+999999 -> 1.6E-1001 Subnormal -fmax2844 fma 10E-501 10e-501 0E+999999 -> 1.00E-1000 Subnormal -fmax2845 fma 30E-501 30e-501 0E+999999 -> 9.00E-1000 Subnormal -fmax2846 fma 40E-501 40e-501 0E+999999 -> 1.600E-999 - --- cubes -fmax2850 fma 1E-670 1e-335 0E+999999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped -fmax2851 fma 1E-668 1e-334 0E+999999 -> 1E-1002 Subnormal -fmax2852 fma 4E-668 2e-334 0E+999999 -> 8E-1002 Subnormal -fmax2853 fma 9E-668 3e-334 0E+999999 -> 2.7E-1001 Subnormal -fmax2854 fma 16E-668 4e-334 0E+999999 -> 6.4E-1001 Subnormal -fmax2855 fma 25E-668 5e-334 0E+999999 -> 1.25E-1000 Subnormal -fmax2856 fma 10E-668 100e-334 0E+999999 -> 1.000E-999 - --- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent -precision: 19 -fmax2860 fma 6636851557994578716E-520 6636851557994578716E-520 0E+999999 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded - --- Long operand overflow may be a different path -precision: 3 -maxExponent: 999999 -minexponent: -999999 -fmax2870 fma 1 9.999E+999999 0E+999999 -> Infinity Inexact Overflow Rounded -fmax2871 fma 1 -9.999E+999999 0E+999999 -> -Infinity Inexact Overflow Rounded -fmax2872 fma 9.999E+999999 1 0E+999999 -> Infinity Inexact Overflow Rounded -fmax2873 fma -9.999E+999999 1 0E+999999 -> -Infinity Inexact Overflow Rounded - --- check for double-rounded subnormals -precision: 5 -maxexponent: 79 -minexponent: -79 -fmax2881 fma 1.2347E-40 1.2347E-40 0E+999999 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax2882 fma 1.234E-40 1.234E-40 0E+999999 -> 1.523E-80 Inexact Rounded Subnormal Underflow -fmax2883 fma 1.23E-40 1.23E-40 0E+999999 -> 1.513E-80 Inexact Rounded Subnormal Underflow -fmax2884 fma 1.2E-40 1.2E-40 0E+999999 -> 1.44E-80 Subnormal -fmax2885 fma 1.2E-40 1.2E-41 0E+999999 -> 1.44E-81 Subnormal -fmax2886 fma 1.2E-40 1.2E-42 0E+999999 -> 1.4E-82 Subnormal Inexact Rounded Underflow -fmax2887 fma 1.2E-40 1.3E-42 0E+999999 -> 1.6E-82 Subnormal Inexact Rounded Underflow -fmax2888 fma 1.3E-40 1.3E-42 0E+999999 -> 1.7E-82 Subnormal Inexact Rounded Underflow -fmax2889 fma 1.3E-40 1.3E-43 0E+999999 -> 2E-83 Subnormal Inexact Rounded Underflow -fmax2890 fma 1.3E-41 1.3E-43 0E+999999 -> 0E-83 Clamped Subnormal Inexact Rounded Underflow - -fmax2891 fma 1.2345E-39 1.234E-40 0E+999999 -> 1.5234E-79 Inexact Rounded -fmax2892 fma 1.23456E-39 1.234E-40 0E+999999 -> 1.5234E-79 Inexact Rounded -fmax2893 fma 1.2345E-40 1.234E-40 0E+999999 -> 1.523E-80 Inexact Rounded Subnormal Underflow -fmax2894 fma 1.23456E-40 1.234E-40 0E+999999 -> 1.523E-80 Inexact Rounded Subnormal Underflow -fmax2895 fma 1.2345E-41 1.234E-40 0E+999999 -> 1.52E-81 Inexact Rounded Subnormal Underflow -fmax2896 fma 1.23456E-41 1.234E-40 0E+999999 -> 1.52E-81 Inexact Rounded Subnormal Underflow - --- Now explore the case where we get a normal result with Underflow -precision: 16 -rounding: half_up -maxExponent: 384 -minExponent: -383 - -fmax2900 fma 0.3000000000E-191 0.3000000000E-191 0E+999999 -> 9.00000000000000E-384 Subnormal Rounded -fmax2901 fma 0.3000000001E-191 0.3000000001E-191 0E+999999 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded -fmax2902 fma 9.999999999999999E-383 0.0999999999999 0E+999999 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded -fmax2903 fma 9.999999999999999E-383 0.09999999999999 0E+999999 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded -fmax2904 fma 9.999999999999999E-383 0.099999999999999 0E+999999 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded -fmax2905 fma 9.999999999999999E-383 0.0999999999999999 0E+999999 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded --- prove operands are exact -fmax2906 fma 9.999999999999999E-383 1 0E+999999 -> 9.999999999999999E-383 -fmax2907 fma 1 0.09999999999999999 0E+999999 -> 0.09999999999999999 --- the next rounds to Nmin -fmax2908 fma 9.999999999999999E-383 0.09999999999999999 0E+999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax2909 fma 9.999999999999999E-383 0.099999999999999999 0E+999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax2910 fma 9.999999999999999E-383 0.0999999999999999999 0E+999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax2911 fma 9.999999999999999E-383 0.09999999999999999999 0E+999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded - --- Examples from SQL proposal (Krishna Kulkarni) -precision: 34 -rounding: half_up -maxExponent: 6144 -minExponent: -6143 -fmax2921 fma 130E-2 120E-2 0E+999999 -> 1.5600 -fmax2922 fma 130E-2 12E-1 0E+999999 -> 1.560 -fmax2923 fma 130E-2 1E0 0E+999999 -> 1.30 - --- Null tests -fmax2990 fma # 10 0E+999999 -> NaN Invalid_operation -fmax2991 fma 10 # 0E+999999 -> NaN Invalid_operation - --- ADDITION TESTS ------------------------------------------------------ -precision: 9 -rounding: half_up -maxExponent: 384 -minexponent: -383 - --- [first group are 'quick confidence check'] -fmax3001 fma 1 1 1 -> 2 -fmax3002 fma 1 2 3 -> 5 -fmax3003 fma 1 '5.75' '3.3' -> 9.05 -fmax3004 fma 1 '5' '-3' -> 2 -fmax3005 fma 1 '-5' '-3' -> -8 -fmax3006 fma 1 '-7' '2.5' -> -4.5 -fmax3007 fma 1 '0.7' '0.3' -> 1.0 -fmax3008 fma 1 '1.25' '1.25' -> 2.50 -fmax3009 fma 1 '1.23456789' '1.00000000' -> '2.23456789' -fmax3010 fma 1 '1.23456789' '1.00000011' -> '2.23456800' - -fmax3011 fma 1 '0.4444444444' '0.5555555555' -> '1.00000000' Inexact Rounded -fmax3012 fma 1 '0.4444444440' '0.5555555555' -> '1.00000000' Inexact Rounded -fmax3013 fma 1 '0.4444444444' '0.5555555550' -> '0.999999999' Inexact Rounded -fmax3014 fma 1 '0.44444444449' '0' -> '0.444444444' Inexact Rounded -fmax3015 fma 1 '0.444444444499' '0' -> '0.444444444' Inexact Rounded -fmax3016 fma 1 '0.4444444444999' '0' -> '0.444444444' Inexact Rounded -fmax3017 fma 1 '0.4444444445000' '0' -> '0.444444445' Inexact Rounded -fmax3018 fma 1 '0.4444444445001' '0' -> '0.444444445' Inexact Rounded -fmax3019 fma 1 '0.444444444501' '0' -> '0.444444445' Inexact Rounded -fmax3020 fma 1 '0.44444444451' '0' -> '0.444444445' Inexact Rounded - -fmax3021 fma 1 0 1 -> 1 -fmax3022 fma 1 1 1 -> 2 -fmax3023 fma 1 2 1 -> 3 -fmax3024 fma 1 3 1 -> 4 -fmax3025 fma 1 4 1 -> 5 -fmax3026 fma 1 5 1 -> 6 -fmax3027 fma 1 6 1 -> 7 -fmax3028 fma 1 7 1 -> 8 -fmax3029 fma 1 8 1 -> 9 -fmax3030 fma 1 9 1 -> 10 - --- some carrying effects -fmax3031 fma 1 '0.9998' '0.0000' -> '0.9998' -fmax3032 fma 1 '0.9998' '0.0001' -> '0.9999' -fmax3033 fma 1 '0.9998' '0.0002' -> '1.0000' -fmax3034 fma 1 '0.9998' '0.0003' -> '1.0001' - -fmax3035 fma 1 '70' '10000e+9' -> '1.00000000E+13' Inexact Rounded -fmax3036 fma 1 '700' '10000e+9' -> '1.00000000E+13' Inexact Rounded -fmax3037 fma 1 '7000' '10000e+9' -> '1.00000000E+13' Inexact Rounded -fmax3038 fma 1 '70000' '10000e+9' -> '1.00000001E+13' Inexact Rounded -fmax3039 fma 1 '700000' '10000e+9' -> '1.00000007E+13' Rounded - --- symmetry: -fmax3040 fma 1 '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded -fmax3041 fma 1 '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded -fmax3042 fma 1 '10000e+9' '7000' -> '1.00000000E+13' Inexact Rounded -fmax3044 fma 1 '10000e+9' '70000' -> '1.00000001E+13' Inexact Rounded -fmax3045 fma 1 '10000e+9' '700000' -> '1.00000007E+13' Rounded - --- same, higher precision -precision: 15 -fmax3046 fma 1 '10000e+9' '7' -> '10000000000007' -fmax3047 fma 1 '10000e+9' '70' -> '10000000000070' -fmax3048 fma 1 '10000e+9' '700' -> '10000000000700' -fmax3049 fma 1 '10000e+9' '7000' -> '10000000007000' -fmax3050 fma 1 '10000e+9' '70000' -> '10000000070000' -fmax3051 fma 1 '10000e+9' '700000' -> '10000000700000' -fmax3052 fma 1 '10000e+9' '7000000' -> '10000007000000' - --- examples from decarith -fmax3053 fma 1 '12' '7.00' -> '19.00' -fmax3054 fma 1 '1.3' '-1.07' -> '0.23' -fmax3055 fma 1 '1.3' '-1.30' -> '0.00' -fmax3056 fma 1 '1.3' '-2.07' -> '-0.77' -fmax3057 fma 1 '1E+2' '1E+4' -> '1.01E+4' - --- zero preservation -precision: 6 -fmax3060 fma 1 '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded -fmax3061 fma 1 1 '0.0001' -> '1.0001' -fmax3062 fma 1 1 '0.00001' -> '1.00001' -fmax3063 fma 1 1 '0.000001' -> '1.00000' Inexact Rounded -fmax3064 fma 1 1 '0.0000001' -> '1.00000' Inexact Rounded -fmax3065 fma 1 1 '0.00000001' -> '1.00000' Inexact Rounded - --- some funny zeros [in case of bad signum] -fmax3070 fma 1 1 0 -> 1 -fmax3071 fma 1 1 0. -> 1 -fmax3072 fma 1 1 .0 -> 1.0 -fmax3073 fma 1 1 0.0 -> 1.0 -fmax3074 fma 1 1 0.00 -> 1.00 -fmax3075 fma 1 0 1 -> 1 -fmax3076 fma 1 0. 1 -> 1 -fmax3077 fma 1 .0 1 -> 1.0 -fmax3078 fma 1 0.0 1 -> 1.0 -fmax3079 fma 1 0.00 1 -> 1.00 - -precision: 9 - --- some carries -fmax3080 fma 1 999999998 1 -> 999999999 -fmax3081 fma 1 999999999 1 -> 1.00000000E+9 Rounded -fmax3082 fma 1 99999999 1 -> 100000000 -fmax3083 fma 1 9999999 1 -> 10000000 -fmax3084 fma 1 999999 1 -> 1000000 -fmax3085 fma 1 99999 1 -> 100000 -fmax3086 fma 1 9999 1 -> 10000 -fmax3087 fma 1 999 1 -> 1000 -fmax3088 fma 1 99 1 -> 100 -fmax3089 fma 1 9 1 -> 10 - - --- more LHS swaps -fmax3090 fma 1 '-56267E-10' 0 -> '-0.0000056267' -fmax3091 fma 1 '-56267E-6' 0 -> '-0.056267' -fmax3092 fma 1 '-56267E-5' 0 -> '-0.56267' -fmax3093 fma 1 '-56267E-4' 0 -> '-5.6267' -fmax3094 fma 1 '-56267E-3' 0 -> '-56.267' -fmax3095 fma 1 '-56267E-2' 0 -> '-562.67' -fmax3096 fma 1 '-56267E-1' 0 -> '-5626.7' -fmax3097 fma 1 '-56267E-0' 0 -> '-56267' -fmax3098 fma 1 '-5E-10' 0 -> '-5E-10' -fmax3099 fma 1 '-5E-7' 0 -> '-5E-7' -fmax3100 fma 1 '-5E-6' 0 -> '-0.000005' -fmax3101 fma 1 '-5E-5' 0 -> '-0.00005' -fmax3102 fma 1 '-5E-4' 0 -> '-0.0005' -fmax3103 fma 1 '-5E-1' 0 -> '-0.5' -fmax3104 fma 1 '-5E0' 0 -> '-5' -fmax3105 fma 1 '-5E1' 0 -> '-50' -fmax3106 fma 1 '-5E5' 0 -> '-500000' -fmax3107 fma 1 '-5E8' 0 -> '-500000000' -fmax3108 fma 1 '-5E9' 0 -> '-5.00000000E+9' Rounded -fmax3109 fma 1 '-5E10' 0 -> '-5.00000000E+10' Rounded -fmax3110 fma 1 '-5E11' 0 -> '-5.00000000E+11' Rounded -fmax3111 fma 1 '-5E100' 0 -> '-5.00000000E+100' Rounded - --- more RHS swaps -fmax3113 fma 1 0 '-56267E-10' -> '-0.0000056267' -fmax3114 fma 1 0 '-56267E-6' -> '-0.056267' -fmax3116 fma 1 0 '-56267E-5' -> '-0.56267' -fmax3117 fma 1 0 '-56267E-4' -> '-5.6267' -fmax3119 fma 1 0 '-56267E-3' -> '-56.267' -fmax3120 fma 1 0 '-56267E-2' -> '-562.67' -fmax3121 fma 1 0 '-56267E-1' -> '-5626.7' -fmax3122 fma 1 0 '-56267E-0' -> '-56267' -fmax3123 fma 1 0 '-5E-10' -> '-5E-10' -fmax3124 fma 1 0 '-5E-7' -> '-5E-7' -fmax3125 fma 1 0 '-5E-6' -> '-0.000005' -fmax3126 fma 1 0 '-5E-5' -> '-0.00005' -fmax3127 fma 1 0 '-5E-4' -> '-0.0005' -fmax3128 fma 1 0 '-5E-1' -> '-0.5' -fmax3129 fma 1 0 '-5E0' -> '-5' -fmax3130 fma 1 0 '-5E1' -> '-50' -fmax3131 fma 1 0 '-5E5' -> '-500000' -fmax3132 fma 1 0 '-5E8' -> '-500000000' -fmax3133 fma 1 0 '-5E9' -> '-5.00000000E+9' Rounded -fmax3134 fma 1 0 '-5E10' -> '-5.00000000E+10' Rounded -fmax3135 fma 1 0 '-5E11' -> '-5.00000000E+11' Rounded -fmax3136 fma 1 0 '-5E100' -> '-5.00000000E+100' Rounded - --- related -fmax3137 fma 1 1 '0E-12' -> '1.00000000' Rounded -fmax3138 fma 1 -1 '0E-12' -> '-1.00000000' Rounded -fmax3139 fma 1 '0E-12' 1 -> '1.00000000' Rounded -fmax3140 fma 1 '0E-12' -1 -> '-1.00000000' Rounded -fmax3141 fma 1 1E+4 0.0000 -> '10000.0000' -fmax3142 fma 1 1E+4 0.00000 -> '10000.0000' Rounded -fmax3143 fma 1 0.000 1E+5 -> '100000.000' -fmax3144 fma 1 0.0000 1E+5 -> '100000.000' Rounded - --- [some of the next group are really constructor tests] -fmax3146 fma 1 '00.0' 0 -> '0.0' -fmax3147 fma 1 '0.00' 0 -> '0.00' -fmax3148 fma 1 0 '0.00' -> '0.00' -fmax3149 fma 1 0 '00.0' -> '0.0' -fmax3150 fma 1 '00.0' '0.00' -> '0.00' -fmax3151 fma 1 '0.00' '00.0' -> '0.00' -fmax3152 fma 1 '3' '.3' -> '3.3' -fmax3153 fma 1 '3.' '.3' -> '3.3' -fmax3154 fma 1 '3.0' '.3' -> '3.3' -fmax3155 fma 1 '3.00' '.3' -> '3.30' -fmax3156 fma 1 '3' '3' -> '6' -fmax3157 fma 1 '3' '+3' -> '6' -fmax3158 fma 1 '3' '-3' -> '0' -fmax3159 fma 1 '0.3' '-0.3' -> '0.0' -fmax3160 fma 1 '0.03' '-0.03' -> '0.00' - --- try borderline precision, with carries, etc. -precision: 15 -fmax3161 fma 1 '1E+12' '-1' -> '999999999999' -fmax3162 fma 1 '1E+12' '1.11' -> '1000000000001.11' -fmax3163 fma 1 '1.11' '1E+12' -> '1000000000001.11' -fmax3164 fma 1 '-1' '1E+12' -> '999999999999' -fmax3165 fma 1 '7E+12' '-1' -> '6999999999999' -fmax3166 fma 1 '7E+12' '1.11' -> '7000000000001.11' -fmax3167 fma 1 '1.11' '7E+12' -> '7000000000001.11' -fmax3168 fma 1 '-1' '7E+12' -> '6999999999999' - --- 123456789012345 123456789012345 1 23456789012345 -fmax3170 fma 1 '0.444444444444444' '0.555555555555563' -> '1.00000000000001' Inexact Rounded -fmax3171 fma 1 '0.444444444444444' '0.555555555555562' -> '1.00000000000001' Inexact Rounded -fmax3172 fma 1 '0.444444444444444' '0.555555555555561' -> '1.00000000000001' Inexact Rounded -fmax3173 fma 1 '0.444444444444444' '0.555555555555560' -> '1.00000000000000' Inexact Rounded -fmax3174 fma 1 '0.444444444444444' '0.555555555555559' -> '1.00000000000000' Inexact Rounded -fmax3175 fma 1 '0.444444444444444' '0.555555555555558' -> '1.00000000000000' Inexact Rounded -fmax3176 fma 1 '0.444444444444444' '0.555555555555557' -> '1.00000000000000' Inexact Rounded -fmax3177 fma 1 '0.444444444444444' '0.555555555555556' -> '1.00000000000000' Rounded -fmax3178 fma 1 '0.444444444444444' '0.555555555555555' -> '0.999999999999999' -fmax3179 fma 1 '0.444444444444444' '0.555555555555554' -> '0.999999999999998' -fmax3180 fma 1 '0.444444444444444' '0.555555555555553' -> '0.999999999999997' -fmax3181 fma 1 '0.444444444444444' '0.555555555555552' -> '0.999999999999996' -fmax3182 fma 1 '0.444444444444444' '0.555555555555551' -> '0.999999999999995' -fmax3183 fma 1 '0.444444444444444' '0.555555555555550' -> '0.999999999999994' - --- and some more, including residue effects and different roundings -precision: 9 -rounding: half_up -fmax3200 fma 1 '123456789' 0 -> '123456789' -fmax3201 fma 1 '123456789' 0.000000001 -> '123456789' Inexact Rounded -fmax3202 fma 1 '123456789' 0.000001 -> '123456789' Inexact Rounded -fmax3203 fma 1 '123456789' 0.1 -> '123456789' Inexact Rounded -fmax3204 fma 1 '123456789' 0.4 -> '123456789' Inexact Rounded -fmax3205 fma 1 '123456789' 0.49 -> '123456789' Inexact Rounded -fmax3206 fma 1 '123456789' 0.499999 -> '123456789' Inexact Rounded -fmax3207 fma 1 '123456789' 0.499999999 -> '123456789' Inexact Rounded -fmax3208 fma 1 '123456789' 0.5 -> '123456790' Inexact Rounded -fmax3209 fma 1 '123456789' 0.500000001 -> '123456790' Inexact Rounded -fmax3210 fma 1 '123456789' 0.500001 -> '123456790' Inexact Rounded -fmax3211 fma 1 '123456789' 0.51 -> '123456790' Inexact Rounded -fmax3212 fma 1 '123456789' 0.6 -> '123456790' Inexact Rounded -fmax3213 fma 1 '123456789' 0.9 -> '123456790' Inexact Rounded -fmax3214 fma 1 '123456789' 0.99999 -> '123456790' Inexact Rounded -fmax3215 fma 1 '123456789' 0.999999999 -> '123456790' Inexact Rounded -fmax3216 fma 1 '123456789' 1 -> '123456790' -fmax3217 fma 1 '123456789' 1.000000001 -> '123456790' Inexact Rounded -fmax3218 fma 1 '123456789' 1.00001 -> '123456790' Inexact Rounded -fmax3219 fma 1 '123456789' 1.1 -> '123456790' Inexact Rounded - -rounding: half_even -fmax3220 fma 1 '123456789' 0 -> '123456789' -fmax3221 fma 1 '123456789' 0.000000001 -> '123456789' Inexact Rounded -fmax3222 fma 1 '123456789' 0.000001 -> '123456789' Inexact Rounded -fmax3223 fma 1 '123456789' 0.1 -> '123456789' Inexact Rounded -fmax3224 fma 1 '123456789' 0.4 -> '123456789' Inexact Rounded -fmax3225 fma 1 '123456789' 0.49 -> '123456789' Inexact Rounded -fmax3226 fma 1 '123456789' 0.499999 -> '123456789' Inexact Rounded -fmax3227 fma 1 '123456789' 0.499999999 -> '123456789' Inexact Rounded -fmax3228 fma 1 '123456789' 0.5 -> '123456790' Inexact Rounded -fmax3229 fma 1 '123456789' 0.500000001 -> '123456790' Inexact Rounded -fmax3230 fma 1 '123456789' 0.500001 -> '123456790' Inexact Rounded -fmax3231 fma 1 '123456789' 0.51 -> '123456790' Inexact Rounded -fmax3232 fma 1 '123456789' 0.6 -> '123456790' Inexact Rounded -fmax3233 fma 1 '123456789' 0.9 -> '123456790' Inexact Rounded -fmax3234 fma 1 '123456789' 0.99999 -> '123456790' Inexact Rounded -fmax3235 fma 1 '123456789' 0.999999999 -> '123456790' Inexact Rounded -fmax3236 fma 1 '123456789' 1 -> '123456790' -fmax3237 fma 1 '123456789' 1.00000001 -> '123456790' Inexact Rounded -fmax3238 fma 1 '123456789' 1.00001 -> '123456790' Inexact Rounded -fmax3239 fma 1 '123456789' 1.1 -> '123456790' Inexact Rounded --- critical few with even bottom digit... -fmax3240 fma 1 '123456788' 0.499999999 -> '123456788' Inexact Rounded -fmax3241 fma 1 '123456788' 0.5 -> '123456788' Inexact Rounded -fmax3242 fma 1 '123456788' 0.500000001 -> '123456789' Inexact Rounded - -rounding: down -fmax3250 fma 1 '123456789' 0 -> '123456789' -fmax3251 fma 1 '123456789' 0.000000001 -> '123456789' Inexact Rounded -fmax3252 fma 1 '123456789' 0.000001 -> '123456789' Inexact Rounded -fmax3253 fma 1 '123456789' 0.1 -> '123456789' Inexact Rounded -fmax3254 fma 1 '123456789' 0.4 -> '123456789' Inexact Rounded -fmax3255 fma 1 '123456789' 0.49 -> '123456789' Inexact Rounded -fmax3256 fma 1 '123456789' 0.499999 -> '123456789' Inexact Rounded -fmax3257 fma 1 '123456789' 0.499999999 -> '123456789' Inexact Rounded -fmax3258 fma 1 '123456789' 0.5 -> '123456789' Inexact Rounded -fmax3259 fma 1 '123456789' 0.500000001 -> '123456789' Inexact Rounded -fmax3260 fma 1 '123456789' 0.500001 -> '123456789' Inexact Rounded -fmax3261 fma 1 '123456789' 0.51 -> '123456789' Inexact Rounded -fmax3262 fma 1 '123456789' 0.6 -> '123456789' Inexact Rounded -fmax3263 fma 1 '123456789' 0.9 -> '123456789' Inexact Rounded -fmax3264 fma 1 '123456789' 0.99999 -> '123456789' Inexact Rounded -fmax3265 fma 1 '123456789' 0.999999999 -> '123456789' Inexact Rounded -fmax3266 fma 1 '123456789' 1 -> '123456790' -fmax3267 fma 1 '123456789' 1.00000001 -> '123456790' Inexact Rounded -fmax3268 fma 1 '123456789' 1.00001 -> '123456790' Inexact Rounded -fmax3269 fma 1 '123456789' 1.1 -> '123456790' Inexact Rounded - --- input preparation tests (operands should not be rounded) -precision: 3 -rounding: half_up - -fmax3270 fma 1 '12345678900000' 9999999999999 -> '2.23E+13' Inexact Rounded -fmax3271 fma 1 '9999999999999' 12345678900000 -> '2.23E+13' Inexact Rounded - -fmax3272 fma 1 '12E+3' '3444' -> '1.54E+4' Inexact Rounded -fmax3273 fma 1 '12E+3' '3446' -> '1.54E+4' Inexact Rounded -fmax3274 fma 1 '12E+3' '3449.9' -> '1.54E+4' Inexact Rounded -fmax3275 fma 1 '12E+3' '3450.0' -> '1.55E+4' Inexact Rounded -fmax3276 fma 1 '12E+3' '3450.1' -> '1.55E+4' Inexact Rounded -fmax3277 fma 1 '12E+3' '3454' -> '1.55E+4' Inexact Rounded -fmax3278 fma 1 '12E+3' '3456' -> '1.55E+4' Inexact Rounded - -fmax3281 fma 1 '3444' '12E+3' -> '1.54E+4' Inexact Rounded -fmax3282 fma 1 '3446' '12E+3' -> '1.54E+4' Inexact Rounded -fmax3283 fma 1 '3449.9' '12E+3' -> '1.54E+4' Inexact Rounded -fmax3284 fma 1 '3450.0' '12E+3' -> '1.55E+4' Inexact Rounded -fmax3285 fma 1 '3450.1' '12E+3' -> '1.55E+4' Inexact Rounded -fmax3286 fma 1 '3454' '12E+3' -> '1.55E+4' Inexact Rounded -fmax3287 fma 1 '3456' '12E+3' -> '1.55E+4' Inexact Rounded - -rounding: half_down -fmax3291 fma 1 '3444' '12E+3' -> '1.54E+4' Inexact Rounded -fmax3292 fma 1 '3446' '12E+3' -> '1.54E+4' Inexact Rounded -fmax3293 fma 1 '3449.9' '12E+3' -> '1.54E+4' Inexact Rounded -fmax3294 fma 1 '3450.0' '12E+3' -> '1.54E+4' Inexact Rounded -fmax3295 fma 1 '3450.1' '12E+3' -> '1.55E+4' Inexact Rounded -fmax3296 fma 1 '3454' '12E+3' -> '1.55E+4' Inexact Rounded -fmax3297 fma 1 '3456' '12E+3' -> '1.55E+4' Inexact Rounded - --- 1 in last place tests -rounding: half_up -fmax3301 fma 1 -1 1 -> 0 -fmax3302 fma 1 0 1 -> 1 -fmax3303 fma 1 1 1 -> 2 -fmax3304 fma 1 12 1 -> 13 -fmax3305 fma 1 98 1 -> 99 -fmax3306 fma 1 99 1 -> 100 -fmax3307 fma 1 100 1 -> 101 -fmax3308 fma 1 101 1 -> 102 -fmax3309 fma 1 -1 -1 -> -2 -fmax3310 fma 1 0 -1 -> -1 -fmax3311 fma 1 1 -1 -> 0 -fmax3312 fma 1 12 -1 -> 11 -fmax3313 fma 1 98 -1 -> 97 -fmax3314 fma 1 99 -1 -> 98 -fmax3315 fma 1 100 -1 -> 99 -fmax3316 fma 1 101 -1 -> 100 - -fmax3321 fma 1 -0.01 0.01 -> 0.00 -fmax3322 fma 1 0.00 0.01 -> 0.01 -fmax3323 fma 1 0.01 0.01 -> 0.02 -fmax3324 fma 1 0.12 0.01 -> 0.13 -fmax3325 fma 1 0.98 0.01 -> 0.99 -fmax3326 fma 1 0.99 0.01 -> 1.00 -fmax3327 fma 1 1.00 0.01 -> 1.01 -fmax3328 fma 1 1.01 0.01 -> 1.02 -fmax3329 fma 1 -0.01 -0.01 -> -0.02 -fmax3330 fma 1 0.00 -0.01 -> -0.01 -fmax3331 fma 1 0.01 -0.01 -> 0.00 -fmax3332 fma 1 0.12 -0.01 -> 0.11 -fmax3333 fma 1 0.98 -0.01 -> 0.97 -fmax3334 fma 1 0.99 -0.01 -> 0.98 -fmax3335 fma 1 1.00 -0.01 -> 0.99 -fmax3336 fma 1 1.01 -0.01 -> 1.00 - --- some more cases where fma 1 ing 0 affects the coefficient -precision: 9 -fmax3340 fma 1 1E+3 0 -> 1000 -fmax3341 fma 1 1E+8 0 -> 100000000 -fmax3342 fma 1 1E+9 0 -> 1.00000000E+9 Rounded -fmax3343 fma 1 1E+10 0 -> 1.00000000E+10 Rounded --- which simply follow from these cases ... -fmax3344 fma 1 1E+3 1 -> 1001 -fmax3345 fma 1 1E+8 1 -> 100000001 -fmax3346 fma 1 1E+9 1 -> 1.00000000E+9 Inexact Rounded -fmax3347 fma 1 1E+10 1 -> 1.00000000E+10 Inexact Rounded -fmax3348 fma 1 1E+3 7 -> 1007 -fmax3349 fma 1 1E+8 7 -> 100000007 -fmax3350 fma 1 1E+9 7 -> 1.00000001E+9 Inexact Rounded -fmax3351 fma 1 1E+10 7 -> 1.00000000E+10 Inexact Rounded - --- tryzeros cases -precision: 7 -rounding: half_up -maxExponent: 92 -minexponent: -92 -fmax3361 fma 1 0E+50 10000E+1 -> 1.0000E+5 -fmax3362 fma 1 10000E+1 0E-50 -> 100000.0 Rounded -fmax3363 fma 1 10000E+1 10000E-50 -> 100000.0 Rounded Inexact -fmax3364 fma 1 9.999999E+92 -9.999999E+92 -> 0E+86 - --- a curiosity from JSR 13 testing -rounding: half_down -precision: 10 -fmax3370 fma 1 99999999 81512 -> 100081511 -precision: 6 -fmax3371 fma 1 99999999 81512 -> 1.00082E+8 Rounded Inexact -rounding: half_up -precision: 10 -fmax3372 fma 1 99999999 81512 -> 100081511 -precision: 6 -fmax3373 fma 1 99999999 81512 -> 1.00082E+8 Rounded Inexact -rounding: half_even -precision: 10 -fmax3374 fma 1 99999999 81512 -> 100081511 -precision: 6 -fmax3375 fma 1 99999999 81512 -> 1.00082E+8 Rounded Inexact - --- ulp replacement tests -precision: 9 -maxexponent: 999999 -minexponent: -999999 -fmax3400 fma 1 1 77e-7 -> 1.0000077 -fmax3401 fma 1 1 77e-8 -> 1.00000077 -fmax3402 fma 1 1 77e-9 -> 1.00000008 Inexact Rounded -fmax3403 fma 1 1 77e-10 -> 1.00000001 Inexact Rounded -fmax3404 fma 1 1 77e-11 -> 1.00000000 Inexact Rounded -fmax3405 fma 1 1 77e-12 -> 1.00000000 Inexact Rounded -fmax3406 fma 1 1 77e-999 -> 1.00000000 Inexact Rounded -fmax3407 fma 1 1 77e-999999 -> 1.00000000 Inexact Rounded - -fmax3410 fma 1 10 77e-7 -> 10.0000077 -fmax3411 fma 1 10 77e-8 -> 10.0000008 Inexact Rounded -fmax3412 fma 1 10 77e-9 -> 10.0000001 Inexact Rounded -fmax3413 fma 1 10 77e-10 -> 10.0000000 Inexact Rounded -fmax3414 fma 1 10 77e-11 -> 10.0000000 Inexact Rounded -fmax3415 fma 1 10 77e-12 -> 10.0000000 Inexact Rounded -fmax3416 fma 1 10 77e-999 -> 10.0000000 Inexact Rounded -fmax3417 fma 1 10 77e-999999 -> 10.0000000 Inexact Rounded - -fmax3420 fma 1 77e-7 1 -> 1.0000077 -fmax3421 fma 1 77e-8 1 -> 1.00000077 -fmax3422 fma 1 77e-9 1 -> 1.00000008 Inexact Rounded -fmax3423 fma 1 77e-10 1 -> 1.00000001 Inexact Rounded -fmax3424 fma 1 77e-11 1 -> 1.00000000 Inexact Rounded -fmax3425 fma 1 77e-12 1 -> 1.00000000 Inexact Rounded -fmax3426 fma 1 77e-999 1 -> 1.00000000 Inexact Rounded -fmax3427 fma 1 77e-999999 1 -> 1.00000000 Inexact Rounded - -fmax3430 fma 1 77e-7 10 -> 10.0000077 -fmax3431 fma 1 77e-8 10 -> 10.0000008 Inexact Rounded -fmax3432 fma 1 77e-9 10 -> 10.0000001 Inexact Rounded -fmax3433 fma 1 77e-10 10 -> 10.0000000 Inexact Rounded -fmax3434 fma 1 77e-11 10 -> 10.0000000 Inexact Rounded -fmax3435 fma 1 77e-12 10 -> 10.0000000 Inexact Rounded -fmax3436 fma 1 77e-999 10 -> 10.0000000 Inexact Rounded -fmax3437 fma 1 77e-999999 10 -> 10.0000000 Inexact Rounded - --- negative ulps -fmax3440 fma 1 1 -77e-7 -> 0.9999923 -fmax3441 fma 1 1 -77e-8 -> 0.99999923 -fmax3442 fma 1 1 -77e-9 -> 0.999999923 -fmax3443 fma 1 1 -77e-10 -> 0.999999992 Inexact Rounded -fmax3444 fma 1 1 -77e-11 -> 0.999999999 Inexact Rounded -fmax3445 fma 1 1 -77e-12 -> 1.00000000 Inexact Rounded -fmax3446 fma 1 1 -77e-999 -> 1.00000000 Inexact Rounded -fmax3447 fma 1 1 -77e-999999 -> 1.00000000 Inexact Rounded - -fmax3450 fma 1 10 -77e-7 -> 9.9999923 -fmax3451 fma 1 10 -77e-8 -> 9.99999923 -fmax3452 fma 1 10 -77e-9 -> 9.99999992 Inexact Rounded -fmax3453 fma 1 10 -77e-10 -> 9.99999999 Inexact Rounded -fmax3454 fma 1 10 -77e-11 -> 10.0000000 Inexact Rounded -fmax3455 fma 1 10 -77e-12 -> 10.0000000 Inexact Rounded -fmax3456 fma 1 10 -77e-999 -> 10.0000000 Inexact Rounded -fmax3457 fma 1 10 -77e-999999 -> 10.0000000 Inexact Rounded - -fmax3460 fma 1 -77e-7 1 -> 0.9999923 -fmax3461 fma 1 -77e-8 1 -> 0.99999923 -fmax3462 fma 1 -77e-9 1 -> 0.999999923 -fmax3463 fma 1 -77e-10 1 -> 0.999999992 Inexact Rounded -fmax3464 fma 1 -77e-11 1 -> 0.999999999 Inexact Rounded -fmax3465 fma 1 -77e-12 1 -> 1.00000000 Inexact Rounded -fmax3466 fma 1 -77e-999 1 -> 1.00000000 Inexact Rounded -fmax3467 fma 1 -77e-999999 1 -> 1.00000000 Inexact Rounded - -fmax3470 fma 1 -77e-7 10 -> 9.9999923 -fmax3471 fma 1 -77e-8 10 -> 9.99999923 -fmax3472 fma 1 -77e-9 10 -> 9.99999992 Inexact Rounded -fmax3473 fma 1 -77e-10 10 -> 9.99999999 Inexact Rounded -fmax3474 fma 1 -77e-11 10 -> 10.0000000 Inexact Rounded -fmax3475 fma 1 -77e-12 10 -> 10.0000000 Inexact Rounded -fmax3476 fma 1 -77e-999 10 -> 10.0000000 Inexact Rounded -fmax3477 fma 1 -77e-999999 10 -> 10.0000000 Inexact Rounded - --- negative ulps -fmax3480 fma 1 -1 77e-7 -> -0.9999923 -fmax3481 fma 1 -1 77e-8 -> -0.99999923 -fmax3482 fma 1 -1 77e-9 -> -0.999999923 -fmax3483 fma 1 -1 77e-10 -> -0.999999992 Inexact Rounded -fmax3484 fma 1 -1 77e-11 -> -0.999999999 Inexact Rounded -fmax3485 fma 1 -1 77e-12 -> -1.00000000 Inexact Rounded -fmax3486 fma 1 -1 77e-999 -> -1.00000000 Inexact Rounded -fmax3487 fma 1 -1 77e-999999 -> -1.00000000 Inexact Rounded - -fmax3490 fma 1 -10 77e-7 -> -9.9999923 -fmax3491 fma 1 -10 77e-8 -> -9.99999923 -fmax3492 fma 1 -10 77e-9 -> -9.99999992 Inexact Rounded -fmax3493 fma 1 -10 77e-10 -> -9.99999999 Inexact Rounded -fmax3494 fma 1 -10 77e-11 -> -10.0000000 Inexact Rounded -fmax3495 fma 1 -10 77e-12 -> -10.0000000 Inexact Rounded -fmax3496 fma 1 -10 77e-999 -> -10.0000000 Inexact Rounded -fmax3497 fma 1 -10 77e-999999 -> -10.0000000 Inexact Rounded - -fmax3500 fma 1 77e-7 -1 -> -0.9999923 -fmax3501 fma 1 77e-8 -1 -> -0.99999923 -fmax3502 fma 1 77e-9 -1 -> -0.999999923 -fmax3503 fma 1 77e-10 -1 -> -0.999999992 Inexact Rounded -fmax3504 fma 1 77e-11 -1 -> -0.999999999 Inexact Rounded -fmax3505 fma 1 77e-12 -1 -> -1.00000000 Inexact Rounded -fmax3506 fma 1 77e-999 -1 -> -1.00000000 Inexact Rounded -fmax3507 fma 1 77e-999999 -1 -> -1.00000000 Inexact Rounded - -fmax3510 fma 1 77e-7 -10 -> -9.9999923 -fmax3511 fma 1 77e-8 -10 -> -9.99999923 -fmax3512 fma 1 77e-9 -10 -> -9.99999992 Inexact Rounded -fmax3513 fma 1 77e-10 -10 -> -9.99999999 Inexact Rounded -fmax3514 fma 1 77e-11 -10 -> -10.0000000 Inexact Rounded -fmax3515 fma 1 77e-12 -10 -> -10.0000000 Inexact Rounded -fmax3516 fma 1 77e-999 -10 -> -10.0000000 Inexact Rounded -fmax3517 fma 1 77e-999999 -10 -> -10.0000000 Inexact Rounded - - --- long operands -maxexponent: 999 -minexponent: -999 -precision: 9 -fmax3521 fma 1 12345678000 0 -> 1.23456780E+10 Rounded -fmax3522 fma 1 0 12345678000 -> 1.23456780E+10 Rounded -fmax3523 fma 1 1234567800 0 -> 1.23456780E+9 Rounded -fmax3524 fma 1 0 1234567800 -> 1.23456780E+9 Rounded -fmax3525 fma 1 1234567890 0 -> 1.23456789E+9 Rounded -fmax3526 fma 1 0 1234567890 -> 1.23456789E+9 Rounded -fmax3527 fma 1 1234567891 0 -> 1.23456789E+9 Inexact Rounded -fmax3528 fma 1 0 1234567891 -> 1.23456789E+9 Inexact Rounded -fmax3529 fma 1 12345678901 0 -> 1.23456789E+10 Inexact Rounded -fmax3530 fma 1 0 12345678901 -> 1.23456789E+10 Inexact Rounded -fmax3531 fma 1 1234567896 0 -> 1.23456790E+9 Inexact Rounded -fmax3532 fma 1 0 1234567896 -> 1.23456790E+9 Inexact Rounded - -precision: 15 --- still checking -fmax3541 fma 1 12345678000 0 -> 12345678000 -fmax3542 fma 1 0 12345678000 -> 12345678000 -fmax3543 fma 1 1234567800 0 -> 1234567800 -fmax3544 fma 1 0 1234567800 -> 1234567800 -fmax3545 fma 1 1234567890 0 -> 1234567890 -fmax3546 fma 1 0 1234567890 -> 1234567890 -fmax3547 fma 1 1234567891 0 -> 1234567891 -fmax3548 fma 1 0 1234567891 -> 1234567891 -fmax3549 fma 1 12345678901 0 -> 12345678901 -fmax3550 fma 1 0 12345678901 -> 12345678901 -fmax3551 fma 1 1234567896 0 -> 1234567896 -fmax3552 fma 1 0 1234567896 -> 1234567896 - --- verify a query -precision: 16 -maxExponent: +394 -minExponent: -393 -rounding: down -fmax3561 fma 1 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded -fmax3562 fma 1 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded --- and using decimal64 bounds... -precision: 16 -maxExponent: +384 -minExponent: -383 -rounding: down -fmax3563 fma 1 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded -fmax3564 fma 1 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded - - --- some more residue effects with extreme rounding -precision: 9 -rounding: half_up -fmax3601 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded -rounding: half_even -fmax3602 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded -rounding: half_down -fmax3603 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded -rounding: floor -fmax3604 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded -rounding: ceiling -fmax3605 fma 1 123456789 0.000001 -> 123456790 Inexact Rounded -rounding: up -fmax3606 fma 1 123456789 0.000001 -> 123456790 Inexact Rounded -rounding: down -fmax3607 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded - -rounding: half_up -fmax3611 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded -rounding: half_even -fmax3612 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded -rounding: half_down -fmax3613 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded -rounding: floor -fmax3614 fma 1 123456789 -0.000001 -> 123456788 Inexact Rounded -rounding: ceiling -fmax3615 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded -rounding: up -fmax3616 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded -rounding: down -fmax3617 fma 1 123456789 -0.000001 -> 123456788 Inexact Rounded - -rounding: half_up -fmax3621 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded -rounding: half_even -fmax3622 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded -rounding: half_down -fmax3623 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded -rounding: floor -fmax3624 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded -rounding: ceiling -fmax3625 fma 1 123456789 0.499999 -> 123456790 Inexact Rounded -rounding: up -fmax3626 fma 1 123456789 0.499999 -> 123456790 Inexact Rounded -rounding: down -fmax3627 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded - -rounding: half_up -fmax3631 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded -rounding: half_even -fmax3632 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded -rounding: half_down -fmax3633 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded -rounding: floor -fmax3634 fma 1 123456789 -0.499999 -> 123456788 Inexact Rounded -rounding: ceiling -fmax3635 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded -rounding: up -fmax3636 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded -rounding: down -fmax3637 fma 1 123456789 -0.499999 -> 123456788 Inexact Rounded - -rounding: half_up -fmax3641 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded -rounding: half_even -fmax3642 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded -rounding: half_down -fmax3643 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded -rounding: floor -fmax3644 fma 1 123456789 0.500001 -> 123456789 Inexact Rounded -rounding: ceiling -fmax3645 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded -rounding: up -fmax3646 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded -rounding: down -fmax3647 fma 1 123456789 0.500001 -> 123456789 Inexact Rounded - -rounding: half_up -fmax3651 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded -rounding: half_even -fmax3652 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded -rounding: half_down -fmax3653 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded -rounding: floor -fmax3654 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded -rounding: ceiling -fmax3655 fma 1 123456789 -0.500001 -> 123456789 Inexact Rounded -rounding: up -fmax3656 fma 1 123456789 -0.500001 -> 123456789 Inexact Rounded -rounding: down -fmax3657 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded - --- long operand triangle -rounding: half_up -precision: 37 -fmax3660 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538 -precision: 36 -fmax3661 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454 Inexact Rounded -precision: 35 -fmax3662 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345 Inexact Rounded -precision: 34 -fmax3663 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835 Inexact Rounded -precision: 33 -fmax3664 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483 Inexact Rounded -precision: 32 -fmax3665 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148 Inexact Rounded -precision: 31 -fmax3666 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115 Inexact Rounded -precision: 30 -fmax3667 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711 Inexact Rounded -precision: 29 -fmax3668 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371 Inexact Rounded -precision: 28 -fmax3669 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337 Inexact Rounded -precision: 27 -fmax3670 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234 Inexact Rounded -precision: 26 -fmax3671 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223 Inexact Rounded -precision: 25 -fmax3672 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922 Inexact Rounded -precision: 24 -fmax3673 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892 Inexact Rounded -precision: 23 -fmax3674 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389 Inexact Rounded -precision: 22 -fmax3675 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639 Inexact Rounded -precision: 21 -fmax3676 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364 Inexact Rounded -precision: 20 -fmax3677 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236 Inexact Rounded -precision: 19 -fmax3678 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024 Inexact Rounded -precision: 18 -fmax3679 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102 Inexact Rounded -precision: 17 -fmax3680 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110 Inexact Rounded -precision: 16 -fmax3681 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211 Inexact Rounded -precision: 15 -fmax3682 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221 Inexact Rounded -precision: 14 -fmax3683 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422 Inexact Rounded -precision: 13 -fmax3684 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42 Inexact Rounded -precision: 12 -fmax3685 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4 Inexact Rounded -precision: 11 -fmax3686 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166 Inexact Rounded -precision: 10 -fmax3687 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10 Inexact Rounded -precision: 9 -fmax3688 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10 Inexact Rounded -precision: 8 -fmax3689 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10 Inexact Rounded -precision: 7 -fmax3690 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10 Inexact Rounded -precision: 6 -fmax3691 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10 Inexact Rounded -precision: 5 -fmax3692 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10 Inexact Rounded -precision: 4 -fmax3693 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10 Inexact Rounded -precision: 3 -fmax3694 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10 Inexact Rounded -precision: 2 -fmax3695 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10 Inexact Rounded -precision: 1 -fmax3696 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11 Inexact Rounded - --- more zeros, etc. -rounding: half_up -precision: 9 - -fmax3701 fma 1 5.00 1.00E-3 -> 5.00100 -fmax3702 fma 1 00.00 0.000 -> 0.000 -fmax3703 fma 1 00.00 0E-3 -> 0.000 -fmax3704 fma 1 0E-3 00.00 -> 0.000 - -fmax3710 fma 1 0E+3 00.00 -> 0.00 -fmax3711 fma 1 0E+3 00.0 -> 0.0 -fmax3712 fma 1 0E+3 00. -> 0 -fmax3713 fma 1 0E+3 00.E+1 -> 0E+1 -fmax3714 fma 1 0E+3 00.E+2 -> 0E+2 -fmax3715 fma 1 0E+3 00.E+3 -> 0E+3 -fmax3716 fma 1 0E+3 00.E+4 -> 0E+3 -fmax3717 fma 1 0E+3 00.E+5 -> 0E+3 -fmax3718 fma 1 0E+3 -00.0 -> 0.0 -fmax3719 fma 1 0E+3 -00. -> 0 -fmax3731 fma 1 0E+3 -00.E+1 -> 0E+1 - -fmax3720 fma 1 00.00 0E+3 -> 0.00 -fmax3721 fma 1 00.0 0E+3 -> 0.0 -fmax3722 fma 1 00. 0E+3 -> 0 -fmax3723 fma 1 00.E+1 0E+3 -> 0E+1 -fmax3724 fma 1 00.E+2 0E+3 -> 0E+2 -fmax3725 fma 1 00.E+3 0E+3 -> 0E+3 -fmax3726 fma 1 00.E+4 0E+3 -> 0E+3 -fmax3727 fma 1 00.E+5 0E+3 -> 0E+3 -fmax3728 fma 1 -00.00 0E+3 -> 0.00 -fmax3729 fma 1 -00.0 0E+3 -> 0.0 -fmax3730 fma 1 -00. 0E+3 -> 0 - -fmax3732 fma 1 0 0 -> 0 -fmax3733 fma 1 0 -0 -> 0 -fmax3734 fma 1 -0 0 -> 0 -fmax3735 fma 1 -0 -0 -> -0 -- IEEE 854 special case - -fmax3736 fma 1 1 -1 -> 0 -fmax3737 fma 1 -1 -1 -> -2 -fmax3738 fma 1 1 1 -> 2 -fmax3739 fma 1 -1 1 -> 0 - -fmax3741 fma 1 0 -1 -> -1 -fmax3742 fma 1 -0 -1 -> -1 -fmax3743 fma 1 0 1 -> 1 -fmax3744 fma 1 -0 1 -> 1 -fmax3745 fma 1 -1 0 -> -1 -fmax3746 fma 1 -1 -0 -> -1 -fmax3747 fma 1 1 0 -> 1 -fmax3748 fma 1 1 -0 -> 1 - -fmax3751 fma 1 0.0 -1 -> -1.0 -fmax3752 fma 1 -0.0 -1 -> -1.0 -fmax3753 fma 1 0.0 1 -> 1.0 -fmax3754 fma 1 -0.0 1 -> 1.0 -fmax3755 fma 1 -1.0 0 -> -1.0 -fmax3756 fma 1 -1.0 -0 -> -1.0 -fmax3757 fma 1 1.0 0 -> 1.0 -fmax3758 fma 1 1.0 -0 -> 1.0 - -fmax3761 fma 1 0 -1.0 -> -1.0 -fmax3762 fma 1 -0 -1.0 -> -1.0 -fmax3763 fma 1 0 1.0 -> 1.0 -fmax3764 fma 1 -0 1.0 -> 1.0 -fmax3765 fma 1 -1 0.0 -> -1.0 -fmax3766 fma 1 -1 -0.0 -> -1.0 -fmax3767 fma 1 1 0.0 -> 1.0 -fmax3768 fma 1 1 -0.0 -> 1.0 - -fmax3771 fma 1 0.0 -1.0 -> -1.0 -fmax3772 fma 1 -0.0 -1.0 -> -1.0 -fmax3773 fma 1 0.0 1.0 -> 1.0 -fmax3774 fma 1 -0.0 1.0 -> 1.0 -fmax3775 fma 1 -1.0 0.0 -> -1.0 -fmax3776 fma 1 -1.0 -0.0 -> -1.0 -fmax3777 fma 1 1.0 0.0 -> 1.0 -fmax3778 fma 1 1.0 -0.0 -> 1.0 - --- Specials -fmax3780 fma 1 -Inf -Inf -> -Infinity -fmax3781 fma 1 -Inf -1000 -> -Infinity -fmax3782 fma 1 -Inf -1 -> -Infinity -fmax3783 fma 1 -Inf -0 -> -Infinity -fmax3784 fma 1 -Inf 0 -> -Infinity -fmax3785 fma 1 -Inf 1 -> -Infinity -fmax3786 fma 1 -Inf 1000 -> -Infinity -fmax3787 fma 1 -1000 -Inf -> -Infinity -fmax3788 fma 1 -Inf -Inf -> -Infinity -fmax3789 fma 1 -1 -Inf -> -Infinity -fmax3790 fma 1 -0 -Inf -> -Infinity -fmax3791 fma 1 0 -Inf -> -Infinity -fmax3792 fma 1 1 -Inf -> -Infinity -fmax3793 fma 1 1000 -Inf -> -Infinity -fmax3794 fma 1 Inf -Inf -> NaN Invalid_operation - -fmax3800 fma 1 Inf -Inf -> NaN Invalid_operation -fmax3801 fma 1 Inf -1000 -> Infinity -fmax3802 fma 1 Inf -1 -> Infinity -fmax3803 fma 1 Inf -0 -> Infinity -fmax3804 fma 1 Inf 0 -> Infinity -fmax3805 fma 1 Inf 1 -> Infinity -fmax3806 fma 1 Inf 1000 -> Infinity -fmax3807 fma 1 Inf Inf -> Infinity -fmax3808 fma 1 -1000 Inf -> Infinity -fmax3809 fma 1 -Inf Inf -> NaN Invalid_operation -fmax3810 fma 1 -1 Inf -> Infinity -fmax3811 fma 1 -0 Inf -> Infinity -fmax3812 fma 1 0 Inf -> Infinity -fmax3813 fma 1 1 Inf -> Infinity -fmax3814 fma 1 1000 Inf -> Infinity -fmax3815 fma 1 Inf Inf -> Infinity - -fmax3821 fma 1 NaN -Inf -> NaN -fmax3822 fma 1 NaN -1000 -> NaN -fmax3823 fma 1 NaN -1 -> NaN -fmax3824 fma 1 NaN -0 -> NaN -fmax3825 fma 1 NaN 0 -> NaN -fmax3826 fma 1 NaN 1 -> NaN -fmax3827 fma 1 NaN 1000 -> NaN -fmax3828 fma 1 NaN Inf -> NaN -fmax3829 fma 1 NaN NaN -> NaN -fmax3830 fma 1 -Inf NaN -> NaN -fmax3831 fma 1 -1000 NaN -> NaN -fmax3832 fma 1 -1 NaN -> NaN -fmax3833 fma 1 -0 NaN -> NaN -fmax3834 fma 1 0 NaN -> NaN -fmax3835 fma 1 1 NaN -> NaN -fmax3836 fma 1 1000 NaN -> NaN -fmax3837 fma 1 Inf NaN -> NaN - -fmax3841 fma 1 sNaN -Inf -> NaN Invalid_operation -fmax3842 fma 1 sNaN -1000 -> NaN Invalid_operation -fmax3843 fma 1 sNaN -1 -> NaN Invalid_operation -fmax3844 fma 1 sNaN -0 -> NaN Invalid_operation -fmax3845 fma 1 sNaN 0 -> NaN Invalid_operation -fmax3846 fma 1 sNaN 1 -> NaN Invalid_operation -fmax3847 fma 1 sNaN 1000 -> NaN Invalid_operation -fmax3848 fma 1 sNaN NaN -> NaN Invalid_operation -fmax3849 fma 1 sNaN sNaN -> NaN Invalid_operation -fmax3850 fma 1 NaN sNaN -> NaN Invalid_operation -fmax3851 fma 1 -Inf sNaN -> NaN Invalid_operation -fmax3852 fma 1 -1000 sNaN -> NaN Invalid_operation -fmax3853 fma 1 -1 sNaN -> NaN Invalid_operation -fmax3854 fma 1 -0 sNaN -> NaN Invalid_operation -fmax3855 fma 1 0 sNaN -> NaN Invalid_operation -fmax3856 fma 1 1 sNaN -> NaN Invalid_operation -fmax3857 fma 1 1000 sNaN -> NaN Invalid_operation -fmax3858 fma 1 Inf sNaN -> NaN Invalid_operation -fmax3859 fma 1 NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -fmax3861 fma 1 NaN1 -Inf -> NaN1 -fmax3862 fma 1 +NaN2 -1000 -> NaN2 -fmax3863 fma 1 NaN3 1000 -> NaN3 -fmax3864 fma 1 NaN4 Inf -> NaN4 -fmax3865 fma 1 NaN5 +NaN6 -> NaN5 -fmax3866 fma 1 -Inf NaN7 -> NaN7 -fmax3867 fma 1 -1000 NaN8 -> NaN8 -fmax3868 fma 1 1000 NaN9 -> NaN9 -fmax3869 fma 1 Inf +NaN10 -> NaN10 -fmax3871 fma 1 sNaN11 -Inf -> NaN11 Invalid_operation -fmax3872 fma 1 sNaN12 -1000 -> NaN12 Invalid_operation -fmax3873 fma 1 sNaN13 1000 -> NaN13 Invalid_operation -fmax3874 fma 1 sNaN14 NaN17 -> NaN14 Invalid_operation -fmax3875 fma 1 sNaN15 sNaN18 -> NaN15 Invalid_operation -fmax3876 fma 1 NaN16 sNaN19 -> NaN19 Invalid_operation -fmax3877 fma 1 -Inf +sNaN20 -> NaN20 Invalid_operation -fmax3878 fma 1 -1000 sNaN21 -> NaN21 Invalid_operation -fmax3879 fma 1 1000 sNaN22 -> NaN22 Invalid_operation -fmax3880 fma 1 Inf sNaN23 -> NaN23 Invalid_operation -fmax3881 fma 1 +NaN25 +sNaN24 -> NaN24 Invalid_operation -fmax3882 fma 1 -NaN26 NaN28 -> -NaN26 -fmax3883 fma 1 -sNaN27 sNaN29 -> -NaN27 Invalid_operation -fmax3884 fma 1 1000 -NaN30 -> -NaN30 -fmax3885 fma 1 1000 -sNaN31 -> -NaN31 Invalid_operation - --- overflow, underflow and subnormal tests -maxexponent: 999999 -minexponent: -999999 -precision: 9 -fmax3890 fma 1 1E+999999 9E+999999 -> Infinity Overflow Inexact Rounded -fmax3891 fma 1 9E+999999 1E+999999 -> Infinity Overflow Inexact Rounded -fmax3892 fma 1 -1.1E-999999 1E-999999 -> -1E-1000000 Subnormal -fmax3893 fma 1 1E-999999 -1.1e-999999 -> -1E-1000000 Subnormal -fmax3894 fma 1 -1.0001E-999999 1E-999999 -> -1E-1000003 Subnormal -fmax3895 fma 1 1E-999999 -1.0001e-999999 -> -1E-1000003 Subnormal -fmax3896 fma 1 -1E+999999 -9E+999999 -> -Infinity Overflow Inexact Rounded -fmax3897 fma 1 -9E+999999 -1E+999999 -> -Infinity Overflow Inexact Rounded -fmax3898 fma 1 +1.1E-999999 -1E-999999 -> 1E-1000000 Subnormal -fmax3899 fma 1 -1E-999999 +1.1e-999999 -> 1E-1000000 Subnormal -fmax3900 fma 1 +1.0001E-999999 -1E-999999 -> 1E-1000003 Subnormal -fmax3901 fma 1 -1E-999999 +1.0001e-999999 -> 1E-1000003 Subnormal -fmax3902 fma 1 -1E+999999 +9E+999999 -> 8E+999999 -fmax3903 fma 1 -9E+999999 +1E+999999 -> -8E+999999 - -precision: 3 -fmax3904 fma 1 0 -9.999E+999999 -> -Infinity Inexact Overflow Rounded -fmax3905 fma 1 -9.999E+999999 0 -> -Infinity Inexact Overflow Rounded -fmax3906 fma 1 0 9.999E+999999 -> Infinity Inexact Overflow Rounded -fmax3907 fma 1 9.999E+999999 0 -> Infinity Inexact Overflow Rounded - -precision: 3 -maxexponent: 999 -minexponent: -999 -fmax3910 fma 1 1.00E-999 0 -> 1.00E-999 -fmax3911 fma 1 0.1E-999 0 -> 1E-1000 Subnormal -fmax3912 fma 1 0.10E-999 0 -> 1.0E-1000 Subnormal -fmax3913 fma 1 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded -fmax3914 fma 1 0.01E-999 0 -> 1E-1001 Subnormal --- next is rounded to Nmin -fmax3915 fma 1 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow -fmax3916 fma 1 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow -fmax3917 fma 1 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow -fmax3918 fma 1 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped -fmax3919 fma 1 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped -fmax3920 fma 1 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped - -fmax3930 fma 1 -1.00E-999 0 -> -1.00E-999 -fmax3931 fma 1 -0.1E-999 0 -> -1E-1000 Subnormal -fmax3932 fma 1 -0.10E-999 0 -> -1.0E-1000 Subnormal -fmax3933 fma 1 -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded -fmax3934 fma 1 -0.01E-999 0 -> -1E-1001 Subnormal --- next is rounded to Nmin -fmax3935 fma 1 -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow -fmax3936 fma 1 -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow -fmax3937 fma 1 -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow -fmax3938 fma 1 -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped -fmax3939 fma 1 -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped -fmax3940 fma 1 -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped - --- some non-zero subnormal fma 1 s -fmax3950 fma 1 1.00E-999 0.1E-999 -> 1.10E-999 -fmax3951 fma 1 0.1E-999 0.1E-999 -> 2E-1000 Subnormal -fmax3952 fma 1 0.10E-999 0.1E-999 -> 2.0E-1000 Subnormal -fmax3953 fma 1 0.100E-999 0.1E-999 -> 2.0E-1000 Subnormal Rounded -fmax3954 fma 1 0.01E-999 0.1E-999 -> 1.1E-1000 Subnormal -fmax3955 fma 1 0.999E-999 0.1E-999 -> 1.10E-999 Inexact Rounded -fmax3956 fma 1 0.099E-999 0.1E-999 -> 2.0E-1000 Inexact Rounded Subnormal Underflow -fmax3957 fma 1 0.009E-999 0.1E-999 -> 1.1E-1000 Inexact Rounded Subnormal Underflow -fmax3958 fma 1 0.001E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow -fmax3959 fma 1 0.0009E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow -fmax3960 fma 1 0.0001E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow --- negatives... -fmax3961 fma 1 1.00E-999 -0.1E-999 -> 9.0E-1000 Subnormal -fmax3962 fma 1 0.1E-999 -0.1E-999 -> 0E-1000 -fmax3963 fma 1 0.10E-999 -0.1E-999 -> 0E-1001 -fmax3964 fma 1 0.100E-999 -0.1E-999 -> 0E-1001 Clamped -fmax3965 fma 1 0.01E-999 -0.1E-999 -> -9E-1001 Subnormal -fmax3966 fma 1 0.999E-999 -0.1E-999 -> 9.0E-1000 Inexact Rounded Subnormal Underflow -fmax3967 fma 1 0.099E-999 -0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped -fmax3968 fma 1 0.009E-999 -0.1E-999 -> -9E-1001 Inexact Rounded Subnormal Underflow -fmax3969 fma 1 0.001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow -fmax3970 fma 1 0.0009E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow -fmax3971 fma 1 0.0001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow - --- some 'real' numbers -maxExponent: 384 -minExponent: -383 -precision: 8 -fmax3566 fma 1 99999061735E-394 0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal -precision: 7 -fmax3567 fma 1 99999061735E-394 0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal -precision: 6 -fmax3568 fma 1 99999061735E-394 0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal - --- now the case where we can get underflow but the result is normal --- [note this can't happen if the operands are also bounded, as we --- cannot represent 1E-399, for example] -precision: 16 -rounding: half_up -maxExponent: 384 -minExponent: -383 - -fmax3571 fma 1 1E-383 0 -> 1E-383 -fmax3572 fma 1 1E-384 0 -> 1E-384 Subnormal -fmax3573 fma 1 1E-383 1E-384 -> 1.1E-383 -fmax3574 subtract 1E-383 1E-384 -> 9E-384 Subnormal - --- Here we explore the boundary of rounding a subnormal to Nmin -fmax3575 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal -fmax3576 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal -fmax3577 subtract 1E-383 1E-399 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax3578 subtract 1E-383 1E-400 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax3579 subtract 1E-383 1E-401 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax3580 subtract 1E-383 1E-402 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded - --- check for double-rounded subnormals -precision: 5 -maxexponent: 79 -minexponent: -79 --- Add: lhs and rhs 0 -fmax31001 fma 1 1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31002 fma 1 1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31003 fma 1 1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31004 fma 1 0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31005 fma 1 0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31006 fma 1 0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow - --- Add: lhs >> rhs and vice versa -fmax31011 fma 1 1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31012 fma 1 1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31013 fma 1 1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31014 fma 1 1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31015 fma 1 1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow -fmax31016 fma 1 1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow - --- Add: lhs + rhs fma 1 ition carried out -fmax31021 fma 1 1.52443E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow -fmax31022 fma 1 1.52444E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow -fmax31023 fma 1 1.52445E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow -fmax31024 fma 1 1.00001E-80 1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow -fmax31025 fma 1 1.00001E-80 1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow -fmax31026 fma 1 1.00001E-80 1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow - --- And for round down full and subnormal results -precision: 16 -maxExponent: +384 -minExponent: -383 -rounding: down - -fmax31100 fma 1 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact -fmax31101 fma 1 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact -fmax31103 fma 1 +1 -1e-383 -> 0.9999999999999999 Rounded Inexact -fmax31104 fma 1 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact -fmax31105 fma 1 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact -fmax31106 fma 1 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact -fmax31107 fma 1 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact -fmax31108 fma 1 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact -fmax31109 fma 1 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact - -rounding: ceiling -fmax31110 fma 1 -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact -fmax31111 fma 1 -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact -fmax31113 fma 1 -1 +1e-383 -> -0.9999999999999999 Rounded Inexact -fmax31114 fma 1 -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact -fmax31115 fma 1 -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact -fmax31116 fma 1 -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact -fmax31117 fma 1 -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact -fmax31118 fma 1 -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact -fmax31119 fma 1 -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact - -rounding: down -precision: 7 -maxExponent: +96 -minExponent: -95 -fmax31130 fma 1 1 -1e-200 -> 0.9999999 Rounded Inexact --- subnormal boundary -fmax31131 fma 1 1.000000E-94 -1e-200 -> 9.999999E-95 Rounded Inexact -fmax31132 fma 1 1.000001E-95 -1e-200 -> 1.000000E-95 Rounded Inexact -fmax31133 fma 1 1.000000E-95 -1e-200 -> 9.99999E-96 Rounded Inexact Subnormal Underflow -fmax31134 fma 1 0.999999E-95 -1e-200 -> 9.99998E-96 Rounded Inexact Subnormal Underflow -fmax31135 fma 1 0.001000E-95 -1e-200 -> 9.99E-99 Rounded Inexact Subnormal Underflow -fmax31136 fma 1 0.000999E-95 -1e-200 -> 9.98E-99 Rounded Inexact Subnormal Underflow -fmax31137 fma 1 1.000000E-95 -1e-101 -> 9.99999E-96 Subnormal -fmax31138 fma 1 10000E-101 -1e-200 -> 9.999E-98 Subnormal Inexact Rounded Underflow -fmax31139 fma 1 1000E-101 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow -fmax31140 fma 1 100E-101 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow -fmax31141 fma 1 10E-101 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow -fmax31142 fma 1 1E-101 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped -fmax31143 fma 1 0E-101 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped -fmax31144 fma 1 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped - -fmax31151 fma 1 10000E-102 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow -fmax31152 fma 1 1000E-102 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow -fmax31153 fma 1 100E-102 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow -fmax31154 fma 1 10E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped -fmax31155 fma 1 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped -fmax31156 fma 1 0E-102 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped -fmax31157 fma 1 1E-103 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped - -fmax31160 fma 1 100E-105 -1e-101 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped -fmax31161 fma 1 100E-105 -1e-201 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped - --- tests based on Gunnar Degnbol's edge case -precision: 15 -rounding: half_up -maxExponent: 384 -minexponent: -383 - -fmax31200 fma 1 1E15 -0.5 -> 1.00000000000000E+15 Inexact Rounded -fmax31201 fma 1 1E15 -0.50 -> 1.00000000000000E+15 Inexact Rounded -fmax31210 fma 1 1E15 -0.51 -> 999999999999999 Inexact Rounded -fmax31211 fma 1 1E15 -0.501 -> 999999999999999 Inexact Rounded -fmax31212 fma 1 1E15 -0.5001 -> 999999999999999 Inexact Rounded -fmax31213 fma 1 1E15 -0.50001 -> 999999999999999 Inexact Rounded -fmax31214 fma 1 1E15 -0.500001 -> 999999999999999 Inexact Rounded -fmax31215 fma 1 1E15 -0.5000001 -> 999999999999999 Inexact Rounded -fmax31216 fma 1 1E15 -0.50000001 -> 999999999999999 Inexact Rounded -fmax31217 fma 1 1E15 -0.500000001 -> 999999999999999 Inexact Rounded -fmax31218 fma 1 1E15 -0.5000000001 -> 999999999999999 Inexact Rounded -fmax31219 fma 1 1E15 -0.50000000001 -> 999999999999999 Inexact Rounded -fmax31220 fma 1 1E15 -0.500000000001 -> 999999999999999 Inexact Rounded -fmax31221 fma 1 1E15 -0.5000000000001 -> 999999999999999 Inexact Rounded -fmax31222 fma 1 1E15 -0.50000000000001 -> 999999999999999 Inexact Rounded -fmax31223 fma 1 1E15 -0.500000000000001 -> 999999999999999 Inexact Rounded -fmax31224 fma 1 1E15 -0.5000000000000001 -> 999999999999999 Inexact Rounded -fmax31225 fma 1 1E15 -0.5000000000000000 -> 1.00000000000000E+15 Inexact Rounded -fmax31230 fma 1 1E15 -5000000.000000001 -> 999999995000000 Inexact Rounded - -precision: 16 - -fmax31300 fma 1 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded -fmax31310 fma 1 1E16 -0.51 -> 9999999999999999 Inexact Rounded -fmax31311 fma 1 1E16 -0.501 -> 9999999999999999 Inexact Rounded -fmax31312 fma 1 1E16 -0.5001 -> 9999999999999999 Inexact Rounded -fmax31313 fma 1 1E16 -0.50001 -> 9999999999999999 Inexact Rounded -fmax31314 fma 1 1E16 -0.500001 -> 9999999999999999 Inexact Rounded -fmax31315 fma 1 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded -fmax31316 fma 1 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded -fmax31317 fma 1 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded -fmax31318 fma 1 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded -fmax31319 fma 1 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded -fmax31320 fma 1 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded -fmax31321 fma 1 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded -fmax31322 fma 1 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded -fmax31323 fma 1 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded -fmax31324 fma 1 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded -fmax31325 fma 1 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31326 fma 1 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31327 fma 1 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31328 fma 1 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31329 fma 1 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31330 fma 1 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31331 fma 1 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31332 fma 1 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31333 fma 1 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31334 fma 1 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31335 fma 1 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded -fmax31336 fma 1 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded -fmax31337 fma 1 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded -fmax31338 fma 1 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded -fmax31339 fma 1 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded - -fmax31340 fma 1 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded -fmax31341 fma 1 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded - -fmax31349 fma 1 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded -fmax31350 fma 1 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded -fmax31351 fma 1 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded -fmax31352 fma 1 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded -fmax31353 fma 1 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded -fmax31354 fma 1 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded -fmax31355 fma 1 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded -fmax31356 fma 1 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded -fmax31357 fma 1 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded -fmax31358 fma 1 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded -fmax31359 fma 1 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded -fmax31360 fma 1 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded -fmax31361 fma 1 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded -fmax31362 fma 1 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded -fmax31363 fma 1 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded -fmax31364 fma 1 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded -fmax31365 fma 1 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31367 fma 1 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31368 fma 1 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31369 fma 1 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31370 fma 1 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31371 fma 1 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31372 fma 1 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31373 fma 1 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31374 fma 1 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31375 fma 1 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded -fmax31376 fma 1 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded -fmax31377 fma 1 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded -fmax31378 fma 1 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded -fmax31379 fma 1 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded -fmax31380 fma 1 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded -fmax31381 fma 1 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded -fmax31382 fma 1 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31383 fma 1 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31384 fma 1 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31385 fma 1 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31386 fma 1 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31387 fma 1 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31388 fma 1 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31389 fma 1 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31390 fma 1 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31391 fma 1 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded -fmax31392 fma 1 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded -fmax31393 fma 1 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded -fmax31394 fma 1 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded -fmax31395 fma 1 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded -fmax31396 fma 1 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded - --- More GD edge cases, where difference between the unadjusted --- exponents is larger than the maximum precision and one side is 0 -precision: 15 -rounding: half_up -maxExponent: 384 -minexponent: -383 - -fmax31400 fma 1 0 1.23456789012345 -> 1.23456789012345 -fmax31401 fma 1 0 1.23456789012345E-1 -> 0.123456789012345 -fmax31402 fma 1 0 1.23456789012345E-2 -> 0.0123456789012345 -fmax31403 fma 1 0 1.23456789012345E-3 -> 0.00123456789012345 -fmax31404 fma 1 0 1.23456789012345E-4 -> 0.000123456789012345 -fmax31405 fma 1 0 1.23456789012345E-5 -> 0.0000123456789012345 -fmax31406 fma 1 0 1.23456789012345E-6 -> 0.00000123456789012345 -fmax31407 fma 1 0 1.23456789012345E-7 -> 1.23456789012345E-7 -fmax31408 fma 1 0 1.23456789012345E-8 -> 1.23456789012345E-8 -fmax31409 fma 1 0 1.23456789012345E-9 -> 1.23456789012345E-9 -fmax31410 fma 1 0 1.23456789012345E-10 -> 1.23456789012345E-10 -fmax31411 fma 1 0 1.23456789012345E-11 -> 1.23456789012345E-11 -fmax31412 fma 1 0 1.23456789012345E-12 -> 1.23456789012345E-12 -fmax31413 fma 1 0 1.23456789012345E-13 -> 1.23456789012345E-13 -fmax31414 fma 1 0 1.23456789012345E-14 -> 1.23456789012345E-14 -fmax31415 fma 1 0 1.23456789012345E-15 -> 1.23456789012345E-15 -fmax31416 fma 1 0 1.23456789012345E-16 -> 1.23456789012345E-16 -fmax31417 fma 1 0 1.23456789012345E-17 -> 1.23456789012345E-17 -fmax31418 fma 1 0 1.23456789012345E-18 -> 1.23456789012345E-18 -fmax31419 fma 1 0 1.23456789012345E-19 -> 1.23456789012345E-19 - --- same, precision 16.. -precision: 16 -fmax31420 fma 1 0 1.123456789012345 -> 1.123456789012345 -fmax31421 fma 1 0 1.123456789012345E-1 -> 0.1123456789012345 -fmax31422 fma 1 0 1.123456789012345E-2 -> 0.01123456789012345 -fmax31423 fma 1 0 1.123456789012345E-3 -> 0.001123456789012345 -fmax31424 fma 1 0 1.123456789012345E-4 -> 0.0001123456789012345 -fmax31425 fma 1 0 1.123456789012345E-5 -> 0.00001123456789012345 -fmax31426 fma 1 0 1.123456789012345E-6 -> 0.000001123456789012345 -fmax31427 fma 1 0 1.123456789012345E-7 -> 1.123456789012345E-7 -fmax31428 fma 1 0 1.123456789012345E-8 -> 1.123456789012345E-8 -fmax31429 fma 1 0 1.123456789012345E-9 -> 1.123456789012345E-9 -fmax31430 fma 1 0 1.123456789012345E-10 -> 1.123456789012345E-10 -fmax31431 fma 1 0 1.123456789012345E-11 -> 1.123456789012345E-11 -fmax31432 fma 1 0 1.123456789012345E-12 -> 1.123456789012345E-12 -fmax31433 fma 1 0 1.123456789012345E-13 -> 1.123456789012345E-13 -fmax31434 fma 1 0 1.123456789012345E-14 -> 1.123456789012345E-14 -fmax31435 fma 1 0 1.123456789012345E-15 -> 1.123456789012345E-15 -fmax31436 fma 1 0 1.123456789012345E-16 -> 1.123456789012345E-16 -fmax31437 fma 1 0 1.123456789012345E-17 -> 1.123456789012345E-17 -fmax31438 fma 1 0 1.123456789012345E-18 -> 1.123456789012345E-18 -fmax31439 fma 1 0 1.123456789012345E-19 -> 1.123456789012345E-19 - --- same, reversed 0 -fmax31440 fma 1 1.123456789012345 0 -> 1.123456789012345 -fmax31441 fma 1 1.123456789012345E-1 0 -> 0.1123456789012345 -fmax31442 fma 1 1.123456789012345E-2 0 -> 0.01123456789012345 -fmax31443 fma 1 1.123456789012345E-3 0 -> 0.001123456789012345 -fmax31444 fma 1 1.123456789012345E-4 0 -> 0.0001123456789012345 -fmax31445 fma 1 1.123456789012345E-5 0 -> 0.00001123456789012345 -fmax31446 fma 1 1.123456789012345E-6 0 -> 0.000001123456789012345 -fmax31447 fma 1 1.123456789012345E-7 0 -> 1.123456789012345E-7 -fmax31448 fma 1 1.123456789012345E-8 0 -> 1.123456789012345E-8 -fmax31449 fma 1 1.123456789012345E-9 0 -> 1.123456789012345E-9 -fmax31450 fma 1 1.123456789012345E-10 0 -> 1.123456789012345E-10 -fmax31451 fma 1 1.123456789012345E-11 0 -> 1.123456789012345E-11 -fmax31452 fma 1 1.123456789012345E-12 0 -> 1.123456789012345E-12 -fmax31453 fma 1 1.123456789012345E-13 0 -> 1.123456789012345E-13 -fmax31454 fma 1 1.123456789012345E-14 0 -> 1.123456789012345E-14 -fmax31455 fma 1 1.123456789012345E-15 0 -> 1.123456789012345E-15 -fmax31456 fma 1 1.123456789012345E-16 0 -> 1.123456789012345E-16 -fmax31457 fma 1 1.123456789012345E-17 0 -> 1.123456789012345E-17 -fmax31458 fma 1 1.123456789012345E-18 0 -> 1.123456789012345E-18 -fmax31459 fma 1 1.123456789012345E-19 0 -> 1.123456789012345E-19 - --- same, Es on the 0 -fmax31460 fma 1 1.123456789012345 0E-0 -> 1.123456789012345 -fmax31461 fma 1 1.123456789012345 0E-1 -> 1.123456789012345 -fmax31462 fma 1 1.123456789012345 0E-2 -> 1.123456789012345 -fmax31463 fma 1 1.123456789012345 0E-3 -> 1.123456789012345 -fmax31464 fma 1 1.123456789012345 0E-4 -> 1.123456789012345 -fmax31465 fma 1 1.123456789012345 0E-5 -> 1.123456789012345 -fmax31466 fma 1 1.123456789012345 0E-6 -> 1.123456789012345 -fmax31467 fma 1 1.123456789012345 0E-7 -> 1.123456789012345 -fmax31468 fma 1 1.123456789012345 0E-8 -> 1.123456789012345 -fmax31469 fma 1 1.123456789012345 0E-9 -> 1.123456789012345 -fmax31470 fma 1 1.123456789012345 0E-10 -> 1.123456789012345 -fmax31471 fma 1 1.123456789012345 0E-11 -> 1.123456789012345 -fmax31472 fma 1 1.123456789012345 0E-12 -> 1.123456789012345 -fmax31473 fma 1 1.123456789012345 0E-13 -> 1.123456789012345 -fmax31474 fma 1 1.123456789012345 0E-14 -> 1.123456789012345 -fmax31475 fma 1 1.123456789012345 0E-15 -> 1.123456789012345 --- next four flag Rounded because the 0 extends the result -fmax31476 fma 1 1.123456789012345 0E-16 -> 1.123456789012345 Rounded -fmax31477 fma 1 1.123456789012345 0E-17 -> 1.123456789012345 Rounded -fmax31478 fma 1 1.123456789012345 0E-18 -> 1.123456789012345 Rounded -fmax31479 fma 1 1.123456789012345 0E-19 -> 1.123456789012345 Rounded - --- sum of two opposite-sign operands is exactly 0 and floor => -0 -precision: 16 -maxExponent: 384 -minexponent: -383 - -rounding: half_up --- exact zeros from zeros -fmax31500 fma 1 0 0E-19 -> 0E-19 -fmax31501 fma 1 -0 0E-19 -> 0E-19 -fmax31502 fma 1 0 -0E-19 -> 0E-19 -fmax31503 fma 1 -0 -0E-19 -> -0E-19 -fmax31504 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax31505 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax31506 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax31507 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax31511 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31512 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31513 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31514 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax31515 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31516 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax31517 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax31518 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - -rounding: half_down --- exact zeros from zeros -fmax31520 fma 1 0 0E-19 -> 0E-19 -fmax31521 fma 1 -0 0E-19 -> 0E-19 -fmax31522 fma 1 0 -0E-19 -> 0E-19 -fmax31523 fma 1 -0 -0E-19 -> -0E-19 -fmax31524 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax31525 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax31526 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax31527 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax31531 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31532 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31533 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31534 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax31535 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31536 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax31537 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax31538 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - -rounding: half_even --- exact zeros from zeros -fmax31540 fma 1 0 0E-19 -> 0E-19 -fmax31541 fma 1 -0 0E-19 -> 0E-19 -fmax31542 fma 1 0 -0E-19 -> 0E-19 -fmax31543 fma 1 -0 -0E-19 -> -0E-19 -fmax31544 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax31545 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax31546 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax31547 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax31551 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31552 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31553 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31554 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax31555 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31556 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax31557 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax31558 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - -rounding: up --- exact zeros from zeros -fmax31560 fma 1 0 0E-19 -> 0E-19 -fmax31561 fma 1 -0 0E-19 -> 0E-19 -fmax31562 fma 1 0 -0E-19 -> 0E-19 -fmax31563 fma 1 -0 -0E-19 -> -0E-19 -fmax31564 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax31565 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax31566 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax31567 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax31571 fma 1 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax31572 fma 1 -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax31573 fma 1 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow -fmax31574 fma 1 -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow --- some exact zeros from non-zeros -fmax31575 fma 1 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax31576 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax31577 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax31578 fma 1 -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow - -rounding: down --- exact zeros from zeros -fmax31580 fma 1 0 0E-19 -> 0E-19 -fmax31581 fma 1 -0 0E-19 -> 0E-19 -fmax31582 fma 1 0 -0E-19 -> 0E-19 -fmax31583 fma 1 -0 -0E-19 -> -0E-19 -fmax31584 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax31585 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax31586 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax31587 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax31591 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31592 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31593 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31594 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax31595 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31596 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax31597 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax31598 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - -rounding: ceiling --- exact zeros from zeros -fmax31600 fma 1 0 0E-19 -> 0E-19 -fmax31601 fma 1 -0 0E-19 -> 0E-19 -fmax31602 fma 1 0 -0E-19 -> 0E-19 -fmax31603 fma 1 -0 -0E-19 -> -0E-19 -fmax31604 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax31605 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax31606 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax31607 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax31611 fma 1 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax31612 fma 1 -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax31613 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31614 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax31615 fma 1 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax31616 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax31617 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax31618 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - --- and the extra-special ugly case; unusual minuses marked by -- * -rounding: floor --- exact zeros from zeros -fmax31620 fma 1 0 0E-19 -> 0E-19 -fmax31621 fma 1 -0 0E-19 -> -0E-19 -- * -fmax31622 fma 1 0 -0E-19 -> -0E-19 -- * -fmax31623 fma 1 -0 -0E-19 -> -0E-19 -fmax31624 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax31625 fma 1 -0E-400 0E-19 -> -0E-398 Clamped -- * -fmax31626 fma 1 0E-400 -0E-19 -> -0E-398 Clamped -- * -fmax31627 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax31631 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31632 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31633 fma 1 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow -fmax31634 fma 1 -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow --- some exact zeros from non-zeros -fmax31635 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax31636 fma 1 -1E-401 1E-401 -> -0E-398 Clamped -- * -fmax31637 fma 1 1E-401 -1E-401 -> -0E-398 Clamped -- * -fmax31638 fma 1 -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow - --- BigDecimal problem testcases 2006.01.23 -precision: 16 -maxExponent: 384 -minexponent: -383 - -rounding: down -precision: 7 -fmax31651 fma 1 10001E+2 -2E+1 -> 1.00008E+6 -precision: 6 -fmax31652 fma 1 10001E+2 -2E+1 -> 1.00008E+6 -precision: 5 -fmax31653 fma 1 10001E+2 -2E+1 -> 1.0000E+6 Inexact Rounded -precision: 4 -fmax31654 fma 1 10001E+2 -2E+1 -> 1.000E+6 Inexact Rounded -precision: 3 -fmax31655 fma 1 10001E+2 -2E+1 -> 1.00E+6 Inexact Rounded -precision: 2 -fmax31656 fma 1 10001E+2 -2E+1 -> 1.0E+6 Inexact Rounded -precision: 1 -fmax31657 fma 1 10001E+2 -2E+1 -> 1E+6 Inexact Rounded - -rounding: half_even -precision: 7 -fmax31661 fma 1 10001E+2 -2E+1 -> 1.00008E+6 -precision: 6 -fmax31662 fma 1 10001E+2 -2E+1 -> 1.00008E+6 -precision: 5 -fmax31663 fma 1 10001E+2 -2E+1 -> 1.0001E+6 Inexact Rounded -precision: 4 -fmax31664 fma 1 10001E+2 -2E+1 -> 1.000E+6 Inexact Rounded -precision: 3 -fmax31665 fma 1 10001E+2 -2E+1 -> 1.00E+6 Inexact Rounded -precision: 2 -fmax31666 fma 1 10001E+2 -2E+1 -> 1.0E+6 Inexact Rounded -precision: 1 -fmax31667 fma 1 10001E+2 -2E+1 -> 1E+6 Inexact Rounded - -rounding: up -precision: 7 -fmax31671 fma 1 10001E+2 -2E+1 -> 1.00008E+6 -precision: 6 -fmax31672 fma 1 10001E+2 -2E+1 -> 1.00008E+6 -precision: 5 -fmax31673 fma 1 10001E+2 -2E+1 -> 1.0001E+6 Inexact Rounded -precision: 4 -fmax31674 fma 1 10001E+2 -2E+1 -> 1.001E+6 Inexact Rounded -precision: 3 -fmax31675 fma 1 10001E+2 -2E+1 -> 1.01E+6 Inexact Rounded -precision: 2 -fmax31676 fma 1 10001E+2 -2E+1 -> 1.1E+6 Inexact Rounded -precision: 1 -fmax31677 fma 1 10001E+2 -2E+1 -> 2E+6 Inexact Rounded - -precision: 34 -rounding: half_up -maxExponent: 6144 -minExponent: -6143 --- Examples from SQL proposal (Krishna Kulkarni) -fmax31701 fma 1 130E-2 120E-2 -> 2.50 -fmax31702 fma 1 130E-2 12E-1 -> 2.50 -fmax31703 fma 1 130E-2 1E0 -> 2.30 -fmax31704 fma 1 1E2 1E4 -> 1.01E+4 -fmax31705 subtract 130E-2 120E-2 -> 0.10 -fmax31706 subtract 130E-2 12E-1 -> 0.10 -fmax31707 subtract 130E-2 1E0 -> 0.30 -fmax31708 subtract 1E2 1E4 -> -9.9E+3 - ------------------------------------------------------------------------- --- Same as above, using decimal64 default parameters -- ------------------------------------------------------------------------- -precision: 16 -rounding: half_even -maxExponent: 384 -minexponent: -383 - --- [first group are 'quick confidence check'] -fmax36001 fma 1 1 1 -> 2 -fmax36002 fma 1 2 3 -> 5 -fmax36003 fma 1 '5.75' '3.3' -> 9.05 -fmax36004 fma 1 '5' '-3' -> 2 -fmax36005 fma 1 '-5' '-3' -> -8 -fmax36006 fma 1 '-7' '2.5' -> -4.5 -fmax36007 fma 1 '0.7' '0.3' -> 1.0 -fmax36008 fma 1 '1.25' '1.25' -> 2.50 -fmax36009 fma 1 '1.23456789' '1.00000000' -> '2.23456789' -fmax36010 fma 1 '1.23456789' '1.00000011' -> '2.23456800' - -fmax36011 fma 1 '0.44444444444444444' '0.55555555555555555' -> '1.000000000000000' Inexact Rounded -fmax36012 fma 1 '0.44444444444444440' '0.55555555555555555' -> '1.000000000000000' Inexact Rounded -fmax36013 fma 1 '0.44444444444444444' '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded -fmax36014 fma 1 '0.444444444444444449' '0' -> '0.4444444444444444' Inexact Rounded -fmax36015 fma 1 '0.4444444444444444499' '0' -> '0.4444444444444444' Inexact Rounded -fmax36016 fma 1 '0.44444444444444444999' '0' -> '0.4444444444444444' Inexact Rounded -fmax36017 fma 1 '0.44444444444444445000' '0' -> '0.4444444444444444' Inexact Rounded -fmax36018 fma 1 '0.44444444444444445001' '0' -> '0.4444444444444445' Inexact Rounded -fmax36019 fma 1 '0.4444444444444444501' '0' -> '0.4444444444444445' Inexact Rounded -fmax36020 fma 1 '0.444444444444444451' '0' -> '0.4444444444444445' Inexact Rounded - -fmax36021 fma 1 0 1 -> 1 -fmax36022 fma 1 1 1 -> 2 -fmax36023 fma 1 2 1 -> 3 -fmax36024 fma 1 3 1 -> 4 -fmax36025 fma 1 4 1 -> 5 -fmax36026 fma 1 5 1 -> 6 -fmax36027 fma 1 6 1 -> 7 -fmax36028 fma 1 7 1 -> 8 -fmax36029 fma 1 8 1 -> 9 -fmax36030 fma 1 9 1 -> 10 - --- some carrying effects -fmax36031 fma 1 '0.9998' '0.0000' -> '0.9998' -fmax36032 fma 1 '0.9998' '0.0001' -> '0.9999' -fmax36033 fma 1 '0.9998' '0.0002' -> '1.0000' -fmax36034 fma 1 '0.9998' '0.0003' -> '1.0001' - -fmax36035 fma 1 '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -fmax36036 fma 1 '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -fmax36037 fma 1 '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded -fmax36038 fma 1 '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded -fmax36039 fma 1 '700000' '10000e+16' -> '1.000000000000007E+20' Rounded - --- symmetry: -fmax36040 fma 1 '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded -fmax36041 fma 1 '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded -fmax36042 fma 1 '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded -fmax36044 fma 1 '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded -fmax36045 fma 1 '10000e+16' '700000' -> '1.000000000000007E+20' Rounded - -fmax36046 fma 1 '10000e+9' '7' -> '10000000000007' -fmax36047 fma 1 '10000e+9' '70' -> '10000000000070' -fmax36048 fma 1 '10000e+9' '700' -> '10000000000700' -fmax36049 fma 1 '10000e+9' '7000' -> '10000000007000' -fmax36050 fma 1 '10000e+9' '70000' -> '10000000070000' -fmax36051 fma 1 '10000e+9' '700000' -> '10000000700000' - --- examples from decarith -fmax36053 fma 1 '12' '7.00' -> '19.00' -fmax36054 fma 1 '1.3' '-1.07' -> '0.23' -fmax36055 fma 1 '1.3' '-1.30' -> '0.00' -fmax36056 fma 1 '1.3' '-2.07' -> '-0.77' -fmax36057 fma 1 '1E+2' '1E+4' -> '1.01E+4' - --- from above -fmax36061 fma 1 1 '0.1' -> '1.1' -fmax36062 fma 1 1 '0.01' -> '1.01' -fmax36063 fma 1 1 '0.001' -> '1.001' -fmax36064 fma 1 1 '0.0001' -> '1.0001' -fmax36065 fma 1 1 '0.00001' -> '1.00001' -fmax36066 fma 1 1 '0.000001' -> '1.000001' -fmax36067 fma 1 1 '0.0000001' -> '1.0000001' -fmax36068 fma 1 1 '0.00000001' -> '1.00000001' - --- some funny zeros [in case of bad signum] -fmax36070 fma 1 1 0 -> 1 -fmax36071 fma 1 1 0. -> 1 -fmax36072 fma 1 1 .0 -> 1.0 -fmax36073 fma 1 1 0.0 -> 1.0 -fmax36074 fma 1 1 0.00 -> 1.00 -fmax36075 fma 1 0 1 -> 1 -fmax36076 fma 1 0. 1 -> 1 -fmax36077 fma 1 .0 1 -> 1.0 -fmax36078 fma 1 0.0 1 -> 1.0 -fmax36079 fma 1 0.00 1 -> 1.00 - --- some carries -fmax36080 fma 1 9999999999999998 1 -> 9999999999999999 -fmax36081 fma 1 9999999999999999 1 -> 1.000000000000000E+16 Rounded -fmax36082 fma 1 999999999999999 1 -> 1000000000000000 -fmax36083 fma 1 9999999999999 1 -> 10000000000000 -fmax36084 fma 1 99999999999 1 -> 100000000000 -fmax36085 fma 1 999999999 1 -> 1000000000 -fmax36086 fma 1 9999999 1 -> 10000000 -fmax36087 fma 1 99999 1 -> 100000 -fmax36088 fma 1 999 1 -> 1000 -fmax36089 fma 1 9 1 -> 10 - - --- more LHS swaps -fmax36090 fma 1 '-56267E-10' 0 -> '-0.0000056267' -fmax36091 fma 1 '-56267E-6' 0 -> '-0.056267' -fmax36092 fma 1 '-56267E-5' 0 -> '-0.56267' -fmax36093 fma 1 '-56267E-4' 0 -> '-5.6267' -fmax36094 fma 1 '-56267E-3' 0 -> '-56.267' -fmax36095 fma 1 '-56267E-2' 0 -> '-562.67' -fmax36096 fma 1 '-56267E-1' 0 -> '-5626.7' -fmax36097 fma 1 '-56267E-0' 0 -> '-56267' -fmax36098 fma 1 '-5E-10' 0 -> '-5E-10' -fmax36099 fma 1 '-5E-7' 0 -> '-5E-7' -fmax36100 fma 1 '-5E-6' 0 -> '-0.000005' -fmax36101 fma 1 '-5E-5' 0 -> '-0.00005' -fmax36102 fma 1 '-5E-4' 0 -> '-0.0005' -fmax36103 fma 1 '-5E-1' 0 -> '-0.5' -fmax36104 fma 1 '-5E0' 0 -> '-5' -fmax36105 fma 1 '-5E1' 0 -> '-50' -fmax36106 fma 1 '-5E5' 0 -> '-500000' -fmax36107 fma 1 '-5E15' 0 -> '-5000000000000000' -fmax36108 fma 1 '-5E16' 0 -> '-5.000000000000000E+16' Rounded -fmax36109 fma 1 '-5E17' 0 -> '-5.000000000000000E+17' Rounded -fmax36110 fma 1 '-5E18' 0 -> '-5.000000000000000E+18' Rounded -fmax36111 fma 1 '-5E100' 0 -> '-5.000000000000000E+100' Rounded - --- more RHS swaps -fmax36113 fma 1 0 '-56267E-10' -> '-0.0000056267' -fmax36114 fma 1 0 '-56267E-6' -> '-0.056267' -fmax36116 fma 1 0 '-56267E-5' -> '-0.56267' -fmax36117 fma 1 0 '-56267E-4' -> '-5.6267' -fmax36119 fma 1 0 '-56267E-3' -> '-56.267' -fmax36120 fma 1 0 '-56267E-2' -> '-562.67' -fmax36121 fma 1 0 '-56267E-1' -> '-5626.7' -fmax36122 fma 1 0 '-56267E-0' -> '-56267' -fmax36123 fma 1 0 '-5E-10' -> '-5E-10' -fmax36124 fma 1 0 '-5E-7' -> '-5E-7' -fmax36125 fma 1 0 '-5E-6' -> '-0.000005' -fmax36126 fma 1 0 '-5E-5' -> '-0.00005' -fmax36127 fma 1 0 '-5E-4' -> '-0.0005' -fmax36128 fma 1 0 '-5E-1' -> '-0.5' -fmax36129 fma 1 0 '-5E0' -> '-5' -fmax36130 fma 1 0 '-5E1' -> '-50' -fmax36131 fma 1 0 '-5E5' -> '-500000' -fmax36132 fma 1 0 '-5E15' -> '-5000000000000000' -fmax36133 fma 1 0 '-5E16' -> '-5.000000000000000E+16' Rounded -fmax36134 fma 1 0 '-5E17' -> '-5.000000000000000E+17' Rounded -fmax36135 fma 1 0 '-5E18' -> '-5.000000000000000E+18' Rounded -fmax36136 fma 1 0 '-5E100' -> '-5.000000000000000E+100' Rounded - --- related -fmax36137 fma 1 1 '0E-19' -> '1.000000000000000' Rounded -fmax36138 fma 1 -1 '0E-19' -> '-1.000000000000000' Rounded -fmax36139 fma 1 '0E-19' 1 -> '1.000000000000000' Rounded -fmax36140 fma 1 '0E-19' -1 -> '-1.000000000000000' Rounded -fmax36141 fma 1 1E+11 0.0000 -> '100000000000.0000' -fmax36142 fma 1 1E+11 0.00000 -> '100000000000.0000' Rounded -fmax36143 fma 1 0.000 1E+12 -> '1000000000000.000' -fmax36144 fma 1 0.0000 1E+12 -> '1000000000000.000' Rounded - --- [some of the next group are really constructor tests] -fmax36146 fma 1 '00.0' 0 -> '0.0' -fmax36147 fma 1 '0.00' 0 -> '0.00' -fmax36148 fma 1 0 '0.00' -> '0.00' -fmax36149 fma 1 0 '00.0' -> '0.0' -fmax36150 fma 1 '00.0' '0.00' -> '0.00' -fmax36151 fma 1 '0.00' '00.0' -> '0.00' -fmax36152 fma 1 '3' '.3' -> '3.3' -fmax36153 fma 1 '3.' '.3' -> '3.3' -fmax36154 fma 1 '3.0' '.3' -> '3.3' -fmax36155 fma 1 '3.00' '.3' -> '3.30' -fmax36156 fma 1 '3' '3' -> '6' -fmax36157 fma 1 '3' '+3' -> '6' -fmax36158 fma 1 '3' '-3' -> '0' -fmax36159 fma 1 '0.3' '-0.3' -> '0.0' -fmax36160 fma 1 '0.03' '-0.03' -> '0.00' - --- try borderline precision, with carries, etc. -fmax36161 fma 1 '1E+13' '-1' -> '9999999999999' -fmax36162 fma 1 '1E+13' '1.11' -> '10000000000001.11' -fmax36163 fma 1 '1.11' '1E+13' -> '10000000000001.11' -fmax36164 fma 1 '-1' '1E+13' -> '9999999999999' -fmax36165 fma 1 '7E+13' '-1' -> '69999999999999' -fmax36166 fma 1 '7E+13' '1.11' -> '70000000000001.11' -fmax36167 fma 1 '1.11' '7E+13' -> '70000000000001.11' -fmax36168 fma 1 '-1' '7E+13' -> '69999999999999' - --- 1234567890123456 1234567890123456 1 234567890123456 -fmax36170 fma 1 '0.4444444444444444' '0.5555555555555563' -> '1.000000000000001' Inexact Rounded -fmax36171 fma 1 '0.4444444444444444' '0.5555555555555562' -> '1.000000000000001' Inexact Rounded -fmax36172 fma 1 '0.4444444444444444' '0.5555555555555561' -> '1.000000000000000' Inexact Rounded -fmax36173 fma 1 '0.4444444444444444' '0.5555555555555560' -> '1.000000000000000' Inexact Rounded -fmax36174 fma 1 '0.4444444444444444' '0.5555555555555559' -> '1.000000000000000' Inexact Rounded -fmax36175 fma 1 '0.4444444444444444' '0.5555555555555558' -> '1.000000000000000' Inexact Rounded -fmax36176 fma 1 '0.4444444444444444' '0.5555555555555557' -> '1.000000000000000' Inexact Rounded -fmax36177 fma 1 '0.4444444444444444' '0.5555555555555556' -> '1.000000000000000' Rounded -fmax36178 fma 1 '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999' -fmax36179 fma 1 '0.4444444444444444' '0.5555555555555554' -> '0.9999999999999998' -fmax36180 fma 1 '0.4444444444444444' '0.5555555555555553' -> '0.9999999999999997' -fmax36181 fma 1 '0.4444444444444444' '0.5555555555555552' -> '0.9999999999999996' -fmax36182 fma 1 '0.4444444444444444' '0.5555555555555551' -> '0.9999999999999995' -fmax36183 fma 1 '0.4444444444444444' '0.5555555555555550' -> '0.9999999999999994' - --- and some more, including residue effects and different roundings -rounding: half_up -fmax36200 fma 1 '6543210123456789' 0 -> '6543210123456789' -fmax36201 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -fmax36202 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -fmax36203 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -fmax36204 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -fmax36205 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -fmax36206 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -fmax36207 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -fmax36208 fma 1 '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded -fmax36209 fma 1 '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded -fmax36210 fma 1 '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded -fmax36211 fma 1 '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded -fmax36212 fma 1 '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded -fmax36213 fma 1 '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded -fmax36214 fma 1 '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded -fmax36215 fma 1 '6543210123456789' 0.999999 -> '6543210123456790' Inexact Rounded -fmax36216 fma 1 '6543210123456789' 1 -> '6543210123456790' -fmax36217 fma 1 '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded -fmax36218 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -fmax36219 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded - -rounding: half_even -fmax36220 fma 1 '6543210123456789' 0 -> '6543210123456789' -fmax36221 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -fmax36222 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -fmax36223 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -fmax36224 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -fmax36225 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -fmax36226 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -fmax36227 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -fmax36228 fma 1 '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded -fmax36229 fma 1 '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded -fmax36230 fma 1 '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded -fmax36231 fma 1 '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded -fmax36232 fma 1 '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded -fmax36233 fma 1 '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded -fmax36234 fma 1 '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded -fmax36235 fma 1 '6543210123456789' 0.999999 -> '6543210123456790' Inexact Rounded -fmax36236 fma 1 '6543210123456789' 1 -> '6543210123456790' -fmax36237 fma 1 '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded -fmax36238 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -fmax36239 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded --- critical few with even bottom digit... -fmax36240 fma 1 '6543210123456788' 0.499999 -> '6543210123456788' Inexact Rounded -fmax36241 fma 1 '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded -fmax36242 fma 1 '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded - -rounding: down -fmax36250 fma 1 '6543210123456789' 0 -> '6543210123456789' -fmax36251 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded -fmax36252 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded -fmax36253 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded -fmax36254 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded -fmax36255 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded -fmax36256 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -fmax36257 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded -fmax36258 fma 1 '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded -fmax36259 fma 1 '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded -fmax36260 fma 1 '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded -fmax36261 fma 1 '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded -fmax36262 fma 1 '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded -fmax36263 fma 1 '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded -fmax36264 fma 1 '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded -fmax36265 fma 1 '6543210123456789' 0.999999 -> '6543210123456789' Inexact Rounded -fmax36266 fma 1 '6543210123456789' 1 -> '6543210123456790' -fmax36267 fma 1 '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded -fmax36268 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded -fmax36269 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded - --- 1 in last place tests -rounding: half_even -fmax36301 fma 1 -1 1 -> 0 -fmax36302 fma 1 0 1 -> 1 -fmax36303 fma 1 1 1 -> 2 -fmax36304 fma 1 12 1 -> 13 -fmax36305 fma 1 98 1 -> 99 -fmax36306 fma 1 99 1 -> 100 -fmax36307 fma 1 100 1 -> 101 -fmax36308 fma 1 101 1 -> 102 -fmax36309 fma 1 -1 -1 -> -2 -fmax36310 fma 1 0 -1 -> -1 -fmax36311 fma 1 1 -1 -> 0 -fmax36312 fma 1 12 -1 -> 11 -fmax36313 fma 1 98 -1 -> 97 -fmax36314 fma 1 99 -1 -> 98 -fmax36315 fma 1 100 -1 -> 99 -fmax36316 fma 1 101 -1 -> 100 - -fmax36321 fma 1 -0.01 0.01 -> 0.00 -fmax36322 fma 1 0.00 0.01 -> 0.01 -fmax36323 fma 1 0.01 0.01 -> 0.02 -fmax36324 fma 1 0.12 0.01 -> 0.13 -fmax36325 fma 1 0.98 0.01 -> 0.99 -fmax36326 fma 1 0.99 0.01 -> 1.00 -fmax36327 fma 1 1.00 0.01 -> 1.01 -fmax36328 fma 1 1.01 0.01 -> 1.02 -fmax36329 fma 1 -0.01 -0.01 -> -0.02 -fmax36330 fma 1 0.00 -0.01 -> -0.01 -fmax36331 fma 1 0.01 -0.01 -> 0.00 -fmax36332 fma 1 0.12 -0.01 -> 0.11 -fmax36333 fma 1 0.98 -0.01 -> 0.97 -fmax36334 fma 1 0.99 -0.01 -> 0.98 -fmax36335 fma 1 1.00 -0.01 -> 0.99 -fmax36336 fma 1 1.01 -0.01 -> 1.00 - --- some more cases where fma 1 ing 0 affects the coefficient -fmax36340 fma 1 1E+3 0 -> 1000 -fmax36341 fma 1 1E+15 0 -> 1000000000000000 -fmax36342 fma 1 1E+16 0 -> 1.000000000000000E+16 Rounded -fmax36343 fma 1 1E+17 0 -> 1.000000000000000E+17 Rounded --- which simply follow from these cases ... -fmax36344 fma 1 1E+3 1 -> 1001 -fmax36345 fma 1 1E+15 1 -> 1000000000000001 -fmax36346 fma 1 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded -fmax36347 fma 1 1E+17 1 -> 1.000000000000000E+17 Inexact Rounded -fmax36348 fma 1 1E+3 7 -> 1007 -fmax36349 fma 1 1E+15 7 -> 1000000000000007 -fmax36350 fma 1 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded -fmax36351 fma 1 1E+17 7 -> 1.000000000000000E+17 Inexact Rounded - --- tryzeros cases -fmax36361 fma 1 0E+50 10000E+1 -> 1.0000E+5 -fmax36362 fma 1 10000E+1 0E-50 -> 100000.0000000000 Rounded -fmax36363 fma 1 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact -fmax36364 fma 1 12.34 0e-398 -> 12.34000000000000 Rounded - --- ulp replacement tests -fmax36400 fma 1 1 77e-14 -> 1.00000000000077 -fmax36401 fma 1 1 77e-15 -> 1.000000000000077 -fmax36402 fma 1 1 77e-16 -> 1.000000000000008 Inexact Rounded -fmax36403 fma 1 1 77e-17 -> 1.000000000000001 Inexact Rounded -fmax36404 fma 1 1 77e-18 -> 1.000000000000000 Inexact Rounded -fmax36405 fma 1 1 77e-19 -> 1.000000000000000 Inexact Rounded -fmax36406 fma 1 1 77e-99 -> 1.000000000000000 Inexact Rounded - -fmax36410 fma 1 10 77e-14 -> 10.00000000000077 -fmax36411 fma 1 10 77e-15 -> 10.00000000000008 Inexact Rounded -fmax36412 fma 1 10 77e-16 -> 10.00000000000001 Inexact Rounded -fmax36413 fma 1 10 77e-17 -> 10.00000000000000 Inexact Rounded -fmax36414 fma 1 10 77e-18 -> 10.00000000000000 Inexact Rounded -fmax36415 fma 1 10 77e-19 -> 10.00000000000000 Inexact Rounded -fmax36416 fma 1 10 77e-99 -> 10.00000000000000 Inexact Rounded - -fmax36420 fma 1 77e-14 1 -> 1.00000000000077 -fmax36421 fma 1 77e-15 1 -> 1.000000000000077 -fmax36422 fma 1 77e-16 1 -> 1.000000000000008 Inexact Rounded -fmax36423 fma 1 77e-17 1 -> 1.000000000000001 Inexact Rounded -fmax36424 fma 1 77e-18 1 -> 1.000000000000000 Inexact Rounded -fmax36425 fma 1 77e-19 1 -> 1.000000000000000 Inexact Rounded -fmax36426 fma 1 77e-99 1 -> 1.000000000000000 Inexact Rounded - -fmax36430 fma 1 77e-14 10 -> 10.00000000000077 -fmax36431 fma 1 77e-15 10 -> 10.00000000000008 Inexact Rounded -fmax36432 fma 1 77e-16 10 -> 10.00000000000001 Inexact Rounded -fmax36433 fma 1 77e-17 10 -> 10.00000000000000 Inexact Rounded -fmax36434 fma 1 77e-18 10 -> 10.00000000000000 Inexact Rounded -fmax36435 fma 1 77e-19 10 -> 10.00000000000000 Inexact Rounded -fmax36436 fma 1 77e-99 10 -> 10.00000000000000 Inexact Rounded - --- negative ulps -fmax36440 fma 1 1 -77e-14 -> 0.99999999999923 -fmax36441 fma 1 1 -77e-15 -> 0.999999999999923 -fmax36442 fma 1 1 -77e-16 -> 0.9999999999999923 -fmax36443 fma 1 1 -77e-17 -> 0.9999999999999992 Inexact Rounded -fmax36444 fma 1 1 -77e-18 -> 0.9999999999999999 Inexact Rounded -fmax36445 fma 1 1 -77e-19 -> 1.000000000000000 Inexact Rounded -fmax36446 fma 1 1 -77e-99 -> 1.000000000000000 Inexact Rounded - -fmax36450 fma 1 10 -77e-14 -> 9.99999999999923 -fmax36451 fma 1 10 -77e-15 -> 9.999999999999923 -fmax36452 fma 1 10 -77e-16 -> 9.999999999999992 Inexact Rounded -fmax36453 fma 1 10 -77e-17 -> 9.999999999999999 Inexact Rounded -fmax36454 fma 1 10 -77e-18 -> 10.00000000000000 Inexact Rounded -fmax36455 fma 1 10 -77e-19 -> 10.00000000000000 Inexact Rounded -fmax36456 fma 1 10 -77e-99 -> 10.00000000000000 Inexact Rounded - -fmax36460 fma 1 -77e-14 1 -> 0.99999999999923 -fmax36461 fma 1 -77e-15 1 -> 0.999999999999923 -fmax36462 fma 1 -77e-16 1 -> 0.9999999999999923 -fmax36463 fma 1 -77e-17 1 -> 0.9999999999999992 Inexact Rounded -fmax36464 fma 1 -77e-18 1 -> 0.9999999999999999 Inexact Rounded -fmax36465 fma 1 -77e-19 1 -> 1.000000000000000 Inexact Rounded -fmax36466 fma 1 -77e-99 1 -> 1.000000000000000 Inexact Rounded - -fmax36470 fma 1 -77e-14 10 -> 9.99999999999923 -fmax36471 fma 1 -77e-15 10 -> 9.999999999999923 -fmax36472 fma 1 -77e-16 10 -> 9.999999999999992 Inexact Rounded -fmax36473 fma 1 -77e-17 10 -> 9.999999999999999 Inexact Rounded -fmax36474 fma 1 -77e-18 10 -> 10.00000000000000 Inexact Rounded -fmax36475 fma 1 -77e-19 10 -> 10.00000000000000 Inexact Rounded -fmax36476 fma 1 -77e-99 10 -> 10.00000000000000 Inexact Rounded - --- negative ulps -fmax36480 fma 1 -1 77e-14 -> -0.99999999999923 -fmax36481 fma 1 -1 77e-15 -> -0.999999999999923 -fmax36482 fma 1 -1 77e-16 -> -0.9999999999999923 -fmax36483 fma 1 -1 77e-17 -> -0.9999999999999992 Inexact Rounded -fmax36484 fma 1 -1 77e-18 -> -0.9999999999999999 Inexact Rounded -fmax36485 fma 1 -1 77e-19 -> -1.000000000000000 Inexact Rounded -fmax36486 fma 1 -1 77e-99 -> -1.000000000000000 Inexact Rounded - -fmax36490 fma 1 -10 77e-14 -> -9.99999999999923 -fmax36491 fma 1 -10 77e-15 -> -9.999999999999923 -fmax36492 fma 1 -10 77e-16 -> -9.999999999999992 Inexact Rounded -fmax36493 fma 1 -10 77e-17 -> -9.999999999999999 Inexact Rounded -fmax36494 fma 1 -10 77e-18 -> -10.00000000000000 Inexact Rounded -fmax36495 fma 1 -10 77e-19 -> -10.00000000000000 Inexact Rounded -fmax36496 fma 1 -10 77e-99 -> -10.00000000000000 Inexact Rounded - -fmax36500 fma 1 77e-14 -1 -> -0.99999999999923 -fmax36501 fma 1 77e-15 -1 -> -0.999999999999923 -fmax36502 fma 1 77e-16 -1 -> -0.9999999999999923 -fmax36503 fma 1 77e-17 -1 -> -0.9999999999999992 Inexact Rounded -fmax36504 fma 1 77e-18 -1 -> -0.9999999999999999 Inexact Rounded -fmax36505 fma 1 77e-19 -1 -> -1.000000000000000 Inexact Rounded -fmax36506 fma 1 77e-99 -1 -> -1.000000000000000 Inexact Rounded - -fmax36510 fma 1 77e-14 -10 -> -9.99999999999923 -fmax36511 fma 1 77e-15 -10 -> -9.999999999999923 -fmax36512 fma 1 77e-16 -10 -> -9.999999999999992 Inexact Rounded -fmax36513 fma 1 77e-17 -10 -> -9.999999999999999 Inexact Rounded -fmax36514 fma 1 77e-18 -10 -> -10.00000000000000 Inexact Rounded -fmax36515 fma 1 77e-19 -10 -> -10.00000000000000 Inexact Rounded -fmax36516 fma 1 77e-99 -10 -> -10.00000000000000 Inexact Rounded - - --- long operands -fmax36521 fma 1 101234562345678000 0 -> 1.012345623456780E+17 Rounded -fmax36522 fma 1 0 101234562345678000 -> 1.012345623456780E+17 Rounded -fmax36523 fma 1 10123456234567800 0 -> 1.012345623456780E+16 Rounded -fmax36524 fma 1 0 10123456234567800 -> 1.012345623456780E+16 Rounded -fmax36525 fma 1 10123456234567890 0 -> 1.012345623456789E+16 Rounded -fmax36526 fma 1 0 10123456234567890 -> 1.012345623456789E+16 Rounded -fmax36527 fma 1 10123456234567891 0 -> 1.012345623456789E+16 Inexact Rounded -fmax36528 fma 1 0 10123456234567891 -> 1.012345623456789E+16 Inexact Rounded -fmax36529 fma 1 101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded -fmax36530 fma 1 0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded -fmax36531 fma 1 10123456234567896 0 -> 1.012345623456790E+16 Inexact Rounded -fmax36532 fma 1 0 10123456234567896 -> 1.012345623456790E+16 Inexact Rounded - --- verify a query -rounding: down -fmax36561 fma 1 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded -fmax36562 fma 1 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded --- and using decimal64 bounds... -rounding: down -fmax36563 fma 1 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded -fmax36564 fma 1 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded - --- more zeros, etc. -rounding: half_even - -fmax36701 fma 1 5.00 1.00E-3 -> 5.00100 -fmax36702 fma 1 00.00 0.000 -> 0.000 -fmax36703 fma 1 00.00 0E-3 -> 0.000 -fmax36704 fma 1 0E-3 00.00 -> 0.000 - -fmax36710 fma 1 0E+3 00.00 -> 0.00 -fmax36711 fma 1 0E+3 00.0 -> 0.0 -fmax36712 fma 1 0E+3 00. -> 0 -fmax36713 fma 1 0E+3 00.E+1 -> 0E+1 -fmax36714 fma 1 0E+3 00.E+2 -> 0E+2 -fmax36715 fma 1 0E+3 00.E+3 -> 0E+3 -fmax36716 fma 1 0E+3 00.E+4 -> 0E+3 -fmax36717 fma 1 0E+3 00.E+5 -> 0E+3 -fmax36718 fma 1 0E+3 -00.0 -> 0.0 -fmax36719 fma 1 0E+3 -00. -> 0 -fmax36731 fma 1 0E+3 -00.E+1 -> 0E+1 - -fmax36720 fma 1 00.00 0E+3 -> 0.00 -fmax36721 fma 1 00.0 0E+3 -> 0.0 -fmax36722 fma 1 00. 0E+3 -> 0 -fmax36723 fma 1 00.E+1 0E+3 -> 0E+1 -fmax36724 fma 1 00.E+2 0E+3 -> 0E+2 -fmax36725 fma 1 00.E+3 0E+3 -> 0E+3 -fmax36726 fma 1 00.E+4 0E+3 -> 0E+3 -fmax36727 fma 1 00.E+5 0E+3 -> 0E+3 -fmax36728 fma 1 -00.00 0E+3 -> 0.00 -fmax36729 fma 1 -00.0 0E+3 -> 0.0 -fmax36730 fma 1 -00. 0E+3 -> 0 - -fmax36732 fma 1 0 0 -> 0 -fmax36733 fma 1 0 -0 -> 0 -fmax36734 fma 1 -0 0 -> 0 -fmax36735 fma 1 -0 -0 -> -0 -- IEEE 854 special case - -fmax36736 fma 1 1 -1 -> 0 -fmax36737 fma 1 -1 -1 -> -2 -fmax36738 fma 1 1 1 -> 2 -fmax36739 fma 1 -1 1 -> 0 - -fmax36741 fma 1 0 -1 -> -1 -fmax36742 fma 1 -0 -1 -> -1 -fmax36743 fma 1 0 1 -> 1 -fmax36744 fma 1 -0 1 -> 1 -fmax36745 fma 1 -1 0 -> -1 -fmax36746 fma 1 -1 -0 -> -1 -fmax36747 fma 1 1 0 -> 1 -fmax36748 fma 1 1 -0 -> 1 - -fmax36751 fma 1 0.0 -1 -> -1.0 -fmax36752 fma 1 -0.0 -1 -> -1.0 -fmax36753 fma 1 0.0 1 -> 1.0 -fmax36754 fma 1 -0.0 1 -> 1.0 -fmax36755 fma 1 -1.0 0 -> -1.0 -fmax36756 fma 1 -1.0 -0 -> -1.0 -fmax36757 fma 1 1.0 0 -> 1.0 -fmax36758 fma 1 1.0 -0 -> 1.0 - -fmax36761 fma 1 0 -1.0 -> -1.0 -fmax36762 fma 1 -0 -1.0 -> -1.0 -fmax36763 fma 1 0 1.0 -> 1.0 -fmax36764 fma 1 -0 1.0 -> 1.0 -fmax36765 fma 1 -1 0.0 -> -1.0 -fmax36766 fma 1 -1 -0.0 -> -1.0 -fmax36767 fma 1 1 0.0 -> 1.0 -fmax36768 fma 1 1 -0.0 -> 1.0 - -fmax36771 fma 1 0.0 -1.0 -> -1.0 -fmax36772 fma 1 -0.0 -1.0 -> -1.0 -fmax36773 fma 1 0.0 1.0 -> 1.0 -fmax36774 fma 1 -0.0 1.0 -> 1.0 -fmax36775 fma 1 -1.0 0.0 -> -1.0 -fmax36776 fma 1 -1.0 -0.0 -> -1.0 -fmax36777 fma 1 1.0 0.0 -> 1.0 -fmax36778 fma 1 1.0 -0.0 -> 1.0 - --- Specials -fmax36780 fma 1 -Inf -Inf -> -Infinity -fmax36781 fma 1 -Inf -1000 -> -Infinity -fmax36782 fma 1 -Inf -1 -> -Infinity -fmax36783 fma 1 -Inf -0 -> -Infinity -fmax36784 fma 1 -Inf 0 -> -Infinity -fmax36785 fma 1 -Inf 1 -> -Infinity -fmax36786 fma 1 -Inf 1000 -> -Infinity -fmax36787 fma 1 -1000 -Inf -> -Infinity -fmax36788 fma 1 -Inf -Inf -> -Infinity -fmax36789 fma 1 -1 -Inf -> -Infinity -fmax36790 fma 1 -0 -Inf -> -Infinity -fmax36791 fma 1 0 -Inf -> -Infinity -fmax36792 fma 1 1 -Inf -> -Infinity -fmax36793 fma 1 1000 -Inf -> -Infinity -fmax36794 fma 1 Inf -Inf -> NaN Invalid_operation - -fmax36800 fma 1 Inf -Inf -> NaN Invalid_operation -fmax36801 fma 1 Inf -1000 -> Infinity -fmax36802 fma 1 Inf -1 -> Infinity -fmax36803 fma 1 Inf -0 -> Infinity -fmax36804 fma 1 Inf 0 -> Infinity -fmax36805 fma 1 Inf 1 -> Infinity -fmax36806 fma 1 Inf 1000 -> Infinity -fmax36807 fma 1 Inf Inf -> Infinity -fmax36808 fma 1 -1000 Inf -> Infinity -fmax36809 fma 1 -Inf Inf -> NaN Invalid_operation -fmax36810 fma 1 -1 Inf -> Infinity -fmax36811 fma 1 -0 Inf -> Infinity -fmax36812 fma 1 0 Inf -> Infinity -fmax36813 fma 1 1 Inf -> Infinity -fmax36814 fma 1 1000 Inf -> Infinity -fmax36815 fma 1 Inf Inf -> Infinity - -fmax36821 fma 1 NaN -Inf -> NaN -fmax36822 fma 1 NaN -1000 -> NaN -fmax36823 fma 1 NaN -1 -> NaN -fmax36824 fma 1 NaN -0 -> NaN -fmax36825 fma 1 NaN 0 -> NaN -fmax36826 fma 1 NaN 1 -> NaN -fmax36827 fma 1 NaN 1000 -> NaN -fmax36828 fma 1 NaN Inf -> NaN -fmax36829 fma 1 NaN NaN -> NaN -fmax36830 fma 1 -Inf NaN -> NaN -fmax36831 fma 1 -1000 NaN -> NaN -fmax36832 fma 1 -1 NaN -> NaN -fmax36833 fma 1 -0 NaN -> NaN -fmax36834 fma 1 0 NaN -> NaN -fmax36835 fma 1 1 NaN -> NaN -fmax36836 fma 1 1000 NaN -> NaN -fmax36837 fma 1 Inf NaN -> NaN - -fmax36841 fma 1 sNaN -Inf -> NaN Invalid_operation -fmax36842 fma 1 sNaN -1000 -> NaN Invalid_operation -fmax36843 fma 1 sNaN -1 -> NaN Invalid_operation -fmax36844 fma 1 sNaN -0 -> NaN Invalid_operation -fmax36845 fma 1 sNaN 0 -> NaN Invalid_operation -fmax36846 fma 1 sNaN 1 -> NaN Invalid_operation -fmax36847 fma 1 sNaN 1000 -> NaN Invalid_operation -fmax36848 fma 1 sNaN NaN -> NaN Invalid_operation -fmax36849 fma 1 sNaN sNaN -> NaN Invalid_operation -fmax36850 fma 1 NaN sNaN -> NaN Invalid_operation -fmax36851 fma 1 -Inf sNaN -> NaN Invalid_operation -fmax36852 fma 1 -1000 sNaN -> NaN Invalid_operation -fmax36853 fma 1 -1 sNaN -> NaN Invalid_operation -fmax36854 fma 1 -0 sNaN -> NaN Invalid_operation -fmax36855 fma 1 0 sNaN -> NaN Invalid_operation -fmax36856 fma 1 1 sNaN -> NaN Invalid_operation -fmax36857 fma 1 1000 sNaN -> NaN Invalid_operation -fmax36858 fma 1 Inf sNaN -> NaN Invalid_operation -fmax36859 fma 1 NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -fmax36861 fma 1 NaN1 -Inf -> NaN1 -fmax36862 fma 1 +NaN2 -1000 -> NaN2 -fmax36863 fma 1 NaN3 1000 -> NaN3 -fmax36864 fma 1 NaN4 Inf -> NaN4 -fmax36865 fma 1 NaN5 +NaN6 -> NaN5 -fmax36866 fma 1 -Inf NaN7 -> NaN7 -fmax36867 fma 1 -1000 NaN8 -> NaN8 -fmax36868 fma 1 1000 NaN9 -> NaN9 -fmax36869 fma 1 Inf +NaN10 -> NaN10 -fmax36871 fma 1 sNaN11 -Inf -> NaN11 Invalid_operation -fmax36872 fma 1 sNaN12 -1000 -> NaN12 Invalid_operation -fmax36873 fma 1 sNaN13 1000 -> NaN13 Invalid_operation -fmax36874 fma 1 sNaN14 NaN17 -> NaN14 Invalid_operation -fmax36875 fma 1 sNaN15 sNaN18 -> NaN15 Invalid_operation -fmax36876 fma 1 NaN16 sNaN19 -> NaN19 Invalid_operation -fmax36877 fma 1 -Inf +sNaN20 -> NaN20 Invalid_operation -fmax36878 fma 1 -1000 sNaN21 -> NaN21 Invalid_operation -fmax36879 fma 1 1000 sNaN22 -> NaN22 Invalid_operation -fmax36880 fma 1 Inf sNaN23 -> NaN23 Invalid_operation -fmax36881 fma 1 +NaN25 +sNaN24 -> NaN24 Invalid_operation -fmax36882 fma 1 -NaN26 NaN28 -> -NaN26 -fmax36883 fma 1 -sNaN27 sNaN29 -> -NaN27 Invalid_operation -fmax36884 fma 1 1000 -NaN30 -> -NaN30 -fmax36885 fma 1 1000 -sNaN31 -> -NaN31 Invalid_operation - --- now the case where we can get underflow but the result is normal --- [note this can't happen if the operands are also bounded, as we --- cannot represent 1E-399, for example] - -fmax36571 fma 1 1E-383 0 -> 1E-383 -fmax36572 fma 1 1E-384 0 -> 1E-384 Subnormal -fmax36573 fma 1 1E-383 1E-384 -> 1.1E-383 -fmax36574 subtract 1E-383 1E-384 -> 9E-384 Subnormal - --- Here we explore the boundary of rounding a subnormal to Nmin -fmax36575 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal -fmax36576 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal -fmax36577 subtract 1E-383 1E-399 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax36578 subtract 1E-383 1E-400 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax36579 subtract 1E-383 1E-401 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded -fmax36580 subtract 1E-383 1E-402 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded - --- check overflow edge case --- 1234567890123456 -fmax36972 apply 9.999999999999999E+384 -> 9.999999999999999E+384 -fmax36973 fma 1 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded -fmax36974 fma 1 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded -fmax36975 fma 1 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded -fmax36976 fma 1 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded -fmax36977 fma 1 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded -fmax36978 fma 1 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded -fmax36979 fma 1 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded -fmax36980 fma 1 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded -fmax36981 fma 1 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded -fmax36982 fma 1 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded -fmax36983 fma 1 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded -fmax36984 fma 1 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded - -fmax36985 apply -9.999999999999999E+384 -> -9.999999999999999E+384 -fmax36986 fma 1 -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded -fmax36987 fma 1 -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded -fmax36988 fma 1 -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded -fmax36989 fma 1 -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded -fmax36990 fma 1 -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded -fmax36991 fma 1 -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded -fmax36992 fma 1 -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded -fmax36993 fma 1 -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded -fmax36994 fma 1 -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded -fmax36995 fma 1 -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded -fmax36996 fma 1 -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded -fmax36997 fma 1 -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded - --- And for round down full and subnormal results -rounding: down -fmax361100 fma 1 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact -fmax361101 fma 1 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact -fmax361103 fma 1 +1 -1e-383 -> 0.9999999999999999 Rounded Inexact -fmax361104 fma 1 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact -fmax361105 fma 1 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact -fmax361106 fma 1 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact -fmax361107 fma 1 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact -fmax361108 fma 1 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact -fmax361109 fma 1 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact - -rounding: ceiling -fmax361110 fma 1 -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact -fmax361111 fma 1 -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact -fmax361113 fma 1 -1 +1e-383 -> -0.9999999999999999 Rounded Inexact -fmax361114 fma 1 -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact -fmax361115 fma 1 -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact -fmax361116 fma 1 -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact -fmax361117 fma 1 -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact -fmax361118 fma 1 -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact -fmax361119 fma 1 -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact - --- tests based on Gunnar Degnbol's edge case -rounding: half_even - -fmax361300 fma 1 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded -fmax361310 fma 1 1E16 -0.51 -> 9999999999999999 Inexact Rounded -fmax361311 fma 1 1E16 -0.501 -> 9999999999999999 Inexact Rounded -fmax361312 fma 1 1E16 -0.5001 -> 9999999999999999 Inexact Rounded -fmax361313 fma 1 1E16 -0.50001 -> 9999999999999999 Inexact Rounded -fmax361314 fma 1 1E16 -0.500001 -> 9999999999999999 Inexact Rounded -fmax361315 fma 1 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded -fmax361316 fma 1 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded -fmax361317 fma 1 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded -fmax361318 fma 1 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded -fmax361319 fma 1 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded -fmax361320 fma 1 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded -fmax361321 fma 1 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded -fmax361322 fma 1 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded -fmax361323 fma 1 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded -fmax361324 fma 1 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded -fmax361325 fma 1 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361326 fma 1 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361327 fma 1 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361328 fma 1 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361329 fma 1 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361330 fma 1 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361331 fma 1 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361332 fma 1 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361333 fma 1 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361334 fma 1 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361335 fma 1 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded -fmax361336 fma 1 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded -fmax361337 fma 1 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded -fmax361338 fma 1 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded -fmax361339 fma 1 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded - -fmax361340 fma 1 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded -fmax361341 fma 1 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded - -fmax361349 fma 1 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded -fmax361350 fma 1 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded -fmax361351 fma 1 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded -fmax361352 fma 1 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded -fmax361353 fma 1 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded -fmax361354 fma 1 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded -fmax361355 fma 1 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded -fmax361356 fma 1 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded -fmax361357 fma 1 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded -fmax361358 fma 1 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded -fmax361359 fma 1 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded -fmax361360 fma 1 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded -fmax361361 fma 1 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded -fmax361362 fma 1 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded -fmax361363 fma 1 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded -fmax361364 fma 1 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded -fmax361365 fma 1 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361367 fma 1 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361368 fma 1 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361369 fma 1 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361370 fma 1 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361371 fma 1 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361372 fma 1 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361373 fma 1 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361374 fma 1 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361375 fma 1 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded -fmax361376 fma 1 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded -fmax361377 fma 1 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded -fmax361378 fma 1 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded -fmax361379 fma 1 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded -fmax361380 fma 1 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded -fmax361381 fma 1 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded -fmax361382 fma 1 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361383 fma 1 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361384 fma 1 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361385 fma 1 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361386 fma 1 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361387 fma 1 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361388 fma 1 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361389 fma 1 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361390 fma 1 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361391 fma 1 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded -fmax361392 fma 1 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded -fmax361393 fma 1 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded -fmax361394 fma 1 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded -fmax361395 fma 1 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded -fmax361396 fma 1 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded - --- More GD edge cases, where difference between the unadjusted --- exponents is larger than the maximum precision and one side is 0 -fmax361420 fma 1 0 1.123456789012345 -> 1.123456789012345 -fmax361421 fma 1 0 1.123456789012345E-1 -> 0.1123456789012345 -fmax361422 fma 1 0 1.123456789012345E-2 -> 0.01123456789012345 -fmax361423 fma 1 0 1.123456789012345E-3 -> 0.001123456789012345 -fmax361424 fma 1 0 1.123456789012345E-4 -> 0.0001123456789012345 -fmax361425 fma 1 0 1.123456789012345E-5 -> 0.00001123456789012345 -fmax361426 fma 1 0 1.123456789012345E-6 -> 0.000001123456789012345 -fmax361427 fma 1 0 1.123456789012345E-7 -> 1.123456789012345E-7 -fmax361428 fma 1 0 1.123456789012345E-8 -> 1.123456789012345E-8 -fmax361429 fma 1 0 1.123456789012345E-9 -> 1.123456789012345E-9 -fmax361430 fma 1 0 1.123456789012345E-10 -> 1.123456789012345E-10 -fmax361431 fma 1 0 1.123456789012345E-11 -> 1.123456789012345E-11 -fmax361432 fma 1 0 1.123456789012345E-12 -> 1.123456789012345E-12 -fmax361433 fma 1 0 1.123456789012345E-13 -> 1.123456789012345E-13 -fmax361434 fma 1 0 1.123456789012345E-14 -> 1.123456789012345E-14 -fmax361435 fma 1 0 1.123456789012345E-15 -> 1.123456789012345E-15 -fmax361436 fma 1 0 1.123456789012345E-16 -> 1.123456789012345E-16 -fmax361437 fma 1 0 1.123456789012345E-17 -> 1.123456789012345E-17 -fmax361438 fma 1 0 1.123456789012345E-18 -> 1.123456789012345E-18 -fmax361439 fma 1 0 1.123456789012345E-19 -> 1.123456789012345E-19 - --- same, reversed 0 -fmax361440 fma 1 1.123456789012345 0 -> 1.123456789012345 -fmax361441 fma 1 1.123456789012345E-1 0 -> 0.1123456789012345 -fmax361442 fma 1 1.123456789012345E-2 0 -> 0.01123456789012345 -fmax361443 fma 1 1.123456789012345E-3 0 -> 0.001123456789012345 -fmax361444 fma 1 1.123456789012345E-4 0 -> 0.0001123456789012345 -fmax361445 fma 1 1.123456789012345E-5 0 -> 0.00001123456789012345 -fmax361446 fma 1 1.123456789012345E-6 0 -> 0.000001123456789012345 -fmax361447 fma 1 1.123456789012345E-7 0 -> 1.123456789012345E-7 -fmax361448 fma 1 1.123456789012345E-8 0 -> 1.123456789012345E-8 -fmax361449 fma 1 1.123456789012345E-9 0 -> 1.123456789012345E-9 -fmax361450 fma 1 1.123456789012345E-10 0 -> 1.123456789012345E-10 -fmax361451 fma 1 1.123456789012345E-11 0 -> 1.123456789012345E-11 -fmax361452 fma 1 1.123456789012345E-12 0 -> 1.123456789012345E-12 -fmax361453 fma 1 1.123456789012345E-13 0 -> 1.123456789012345E-13 -fmax361454 fma 1 1.123456789012345E-14 0 -> 1.123456789012345E-14 -fmax361455 fma 1 1.123456789012345E-15 0 -> 1.123456789012345E-15 -fmax361456 fma 1 1.123456789012345E-16 0 -> 1.123456789012345E-16 -fmax361457 fma 1 1.123456789012345E-17 0 -> 1.123456789012345E-17 -fmax361458 fma 1 1.123456789012345E-18 0 -> 1.123456789012345E-18 -fmax361459 fma 1 1.123456789012345E-19 0 -> 1.123456789012345E-19 - --- same, Es on the 0 -fmax361460 fma 1 1.123456789012345 0E-0 -> 1.123456789012345 -fmax361461 fma 1 1.123456789012345 0E-1 -> 1.123456789012345 -fmax361462 fma 1 1.123456789012345 0E-2 -> 1.123456789012345 -fmax361463 fma 1 1.123456789012345 0E-3 -> 1.123456789012345 -fmax361464 fma 1 1.123456789012345 0E-4 -> 1.123456789012345 -fmax361465 fma 1 1.123456789012345 0E-5 -> 1.123456789012345 -fmax361466 fma 1 1.123456789012345 0E-6 -> 1.123456789012345 -fmax361467 fma 1 1.123456789012345 0E-7 -> 1.123456789012345 -fmax361468 fma 1 1.123456789012345 0E-8 -> 1.123456789012345 -fmax361469 fma 1 1.123456789012345 0E-9 -> 1.123456789012345 -fmax361470 fma 1 1.123456789012345 0E-10 -> 1.123456789012345 -fmax361471 fma 1 1.123456789012345 0E-11 -> 1.123456789012345 -fmax361472 fma 1 1.123456789012345 0E-12 -> 1.123456789012345 -fmax361473 fma 1 1.123456789012345 0E-13 -> 1.123456789012345 -fmax361474 fma 1 1.123456789012345 0E-14 -> 1.123456789012345 -fmax361475 fma 1 1.123456789012345 0E-15 -> 1.123456789012345 --- next four flag Rounded because the 0 extends the result -fmax361476 fma 1 1.123456789012345 0E-16 -> 1.123456789012345 Rounded -fmax361477 fma 1 1.123456789012345 0E-17 -> 1.123456789012345 Rounded -fmax361478 fma 1 1.123456789012345 0E-18 -> 1.123456789012345 Rounded -fmax361479 fma 1 1.123456789012345 0E-19 -> 1.123456789012345 Rounded - --- sum of two opposite-sign operands is exactly 0 and floor => -0 -rounding: half_up --- exact zeros from zeros -fmax361500 fma 1 0 0E-19 -> 0E-19 -fmax361501 fma 1 -0 0E-19 -> 0E-19 -fmax361502 fma 1 0 -0E-19 -> 0E-19 -fmax361503 fma 1 -0 -0E-19 -> -0E-19 -fmax361504 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax361505 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax361506 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax361507 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax361511 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361512 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361513 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361514 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax361515 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361516 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax361517 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax361518 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - -rounding: half_down --- exact zeros from zeros -fmax361520 fma 1 0 0E-19 -> 0E-19 -fmax361521 fma 1 -0 0E-19 -> 0E-19 -fmax361522 fma 1 0 -0E-19 -> 0E-19 -fmax361523 fma 1 -0 -0E-19 -> -0E-19 -fmax361524 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax361525 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax361526 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax361527 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax361531 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361532 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361533 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361534 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax361535 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361536 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax361537 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax361538 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - -rounding: half_even --- exact zeros from zeros -fmax361540 fma 1 0 0E-19 -> 0E-19 -fmax361541 fma 1 -0 0E-19 -> 0E-19 -fmax361542 fma 1 0 -0E-19 -> 0E-19 -fmax361543 fma 1 -0 -0E-19 -> -0E-19 -fmax361544 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax361545 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax361546 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax361547 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax361551 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361552 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361553 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361554 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax361555 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361556 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax361557 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax361558 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - -rounding: up --- exact zeros from zeros -fmax361560 fma 1 0 0E-19 -> 0E-19 -fmax361561 fma 1 -0 0E-19 -> 0E-19 -fmax361562 fma 1 0 -0E-19 -> 0E-19 -fmax361563 fma 1 -0 -0E-19 -> -0E-19 -fmax361564 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax361565 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax361566 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax361567 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax361571 fma 1 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax361572 fma 1 -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax361573 fma 1 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow -fmax361574 fma 1 -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow --- some exact zeros from non-zeros -fmax361575 fma 1 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax361576 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax361577 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax361578 fma 1 -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow - -rounding: down --- exact zeros from zeros -fmax361580 fma 1 0 0E-19 -> 0E-19 -fmax361581 fma 1 -0 0E-19 -> 0E-19 -fmax361582 fma 1 0 -0E-19 -> 0E-19 -fmax361583 fma 1 -0 -0E-19 -> -0E-19 -fmax361584 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax361585 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax361586 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax361587 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax361591 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361592 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361593 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361594 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax361595 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361596 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax361597 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax361598 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - -rounding: ceiling --- exact zeros from zeros -fmax361600 fma 1 0 0E-19 -> 0E-19 -fmax361601 fma 1 -0 0E-19 -> 0E-19 -fmax361602 fma 1 0 -0E-19 -> 0E-19 -fmax361603 fma 1 -0 -0E-19 -> -0E-19 -fmax361604 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax361605 fma 1 -0E-400 0E-19 -> 0E-398 Clamped -fmax361606 fma 1 0E-400 -0E-19 -> 0E-398 Clamped -fmax361607 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax361611 fma 1 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax361612 fma 1 -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax361613 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361614 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped --- some exact zeros from non-zeros -fmax361615 fma 1 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow -fmax361616 fma 1 -1E-401 1E-401 -> 0E-398 Clamped -fmax361617 fma 1 1E-401 -1E-401 -> 0E-398 Clamped -fmax361618 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped - --- and the extra-special ugly case; unusual minuses marked by -- * -rounding: floor --- exact zeros from zeros -fmax361620 fma 1 0 0E-19 -> 0E-19 -fmax361621 fma 1 -0 0E-19 -> -0E-19 -- * -fmax361622 fma 1 0 -0E-19 -> -0E-19 -- * -fmax361623 fma 1 -0 -0E-19 -> -0E-19 -fmax361624 fma 1 0E-400 0E-19 -> 0E-398 Clamped -fmax361625 fma 1 -0E-400 0E-19 -> -0E-398 Clamped -- * -fmax361626 fma 1 0E-400 -0E-19 -> -0E-398 Clamped -- * -fmax361627 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped --- inexact zeros -fmax361631 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361632 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361633 fma 1 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow -fmax361634 fma 1 -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow --- some exact zeros from non-zeros -fmax361635 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped -fmax361636 fma 1 -1E-401 1E-401 -> -0E-398 Clamped -- * -fmax361637 fma 1 1E-401 -1E-401 -> -0E-398 Clamped -- * -fmax361638 fma 1 -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow - --- Examples from SQL proposal (Krishna Kulkarni) -fmax361701 fma 1 130E-2 120E-2 -> 2.50 -fmax361702 fma 1 130E-2 12E-1 -> 2.50 -fmax361703 fma 1 130E-2 1E0 -> 2.30 -fmax361704 fma 1 1E2 1E4 -> 1.01E+4 -fmax361705 subtract 130E-2 120E-2 -> 0.10 -fmax361706 subtract 130E-2 12E-1 -> 0.10 -fmax361707 subtract 130E-2 1E0 -> 0.30 -fmax361708 subtract 1E2 1E4 -> -9.9E+3 - --- Gappy coefficients; check residue handling even with full coefficient gap -rounding: half_even - -fmax362001 fma 1 1234567890123456 1 -> 1234567890123457 -fmax362002 fma 1 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded -fmax362003 fma 1 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded -fmax362004 fma 1 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded -fmax362005 fma 1 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded -fmax362006 fma 1 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded -fmax362007 fma 1 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded -fmax362008 fma 1 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded -fmax362009 fma 1 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded -fmax362010 fma 1 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded -fmax362011 fma 1 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded -fmax362012 fma 1 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded -fmax362013 fma 1 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded -fmax362014 fma 1 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded -fmax362015 fma 1 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded -fmax362016 fma 1 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded -fmax362017 fma 1 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded -fmax362018 fma 1 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded -fmax362019 fma 1 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded -fmax362020 fma 1 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded -fmax362021 fma 1 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded - --- widening second argument at gap -fmax362030 fma 1 12345678 1 -> 12345679 -fmax362031 fma 1 12345678 0.1 -> 12345678.1 -fmax362032 fma 1 12345678 0.12 -> 12345678.12 -fmax362033 fma 1 12345678 0.123 -> 12345678.123 -fmax362034 fma 1 12345678 0.1234 -> 12345678.1234 -fmax362035 fma 1 12345678 0.12345 -> 12345678.12345 -fmax362036 fma 1 12345678 0.123456 -> 12345678.123456 -fmax362037 fma 1 12345678 0.1234567 -> 12345678.1234567 -fmax362038 fma 1 12345678 0.12345678 -> 12345678.12345678 -fmax362039 fma 1 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded -fmax362040 fma 1 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded -fmax362041 fma 1 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded -fmax362042 fma 1 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded -fmax362043 fma 1 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded -fmax362044 fma 1 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded -fmax362045 fma 1 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded -fmax362046 fma 1 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded -fmax362047 fma 1 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded -fmax362048 fma 1 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded -fmax362049 fma 1 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded --- 90123456 -rounding: half_even -fmax362050 fma 1 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded -fmax362051 fma 1 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded -fmax362052 fma 1 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded -fmax362053 fma 1 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded -fmax362054 fma 1 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded -fmax362055 fma 1 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded -fmax362056 fma 1 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded -fmax362057 fma 1 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded -fmax362060 fma 1 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded -fmax362061 fma 1 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded -fmax362062 fma 1 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded -fmax362063 fma 1 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded -fmax362064 fma 1 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded -fmax362065 fma 1 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded -fmax362066 fma 1 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded -fmax362067 fma 1 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded --- far-out residues (full coefficient gap is 16+15 digits) -rounding: up -fmax362070 fma 1 12345678 1E-8 -> 12345678.00000001 -fmax362071 fma 1 12345678 1E-9 -> 12345678.00000001 Inexact Rounded -fmax362072 fma 1 12345678 1E-10 -> 12345678.00000001 Inexact Rounded -fmax362073 fma 1 12345678 1E-11 -> 12345678.00000001 Inexact Rounded -fmax362074 fma 1 12345678 1E-12 -> 12345678.00000001 Inexact Rounded -fmax362075 fma 1 12345678 1E-13 -> 12345678.00000001 Inexact Rounded -fmax362076 fma 1 12345678 1E-14 -> 12345678.00000001 Inexact Rounded -fmax362077 fma 1 12345678 1E-15 -> 12345678.00000001 Inexact Rounded -fmax362078 fma 1 12345678 1E-16 -> 12345678.00000001 Inexact Rounded -fmax362079 fma 1 12345678 1E-17 -> 12345678.00000001 Inexact Rounded -fmax362080 fma 1 12345678 1E-18 -> 12345678.00000001 Inexact Rounded -fmax362081 fma 1 12345678 1E-19 -> 12345678.00000001 Inexact Rounded -fmax362082 fma 1 12345678 1E-20 -> 12345678.00000001 Inexact Rounded -fmax362083 fma 1 12345678 1E-25 -> 12345678.00000001 Inexact Rounded -fmax362084 fma 1 12345678 1E-30 -> 12345678.00000001 Inexact Rounded -fmax362085 fma 1 12345678 1E-31 -> 12345678.00000001 Inexact Rounded -fmax362086 fma 1 12345678 1E-32 -> 12345678.00000001 Inexact Rounded -fmax362087 fma 1 12345678 1E-33 -> 12345678.00000001 Inexact Rounded -fmax362088 fma 1 12345678 1E-34 -> 12345678.00000001 Inexact Rounded -fmax362089 fma 1 12345678 1E-35 -> 12345678.00000001 Inexact Rounded - --- payload decapitate x3 -precision: 5 -fmax363000 fma 1 1 sNaN1234567890 -> NaN67890 Invalid_operation -fmax363001 fma 1 -sNaN1234512345 1 -> -NaN12345 Invalid_operation -fmax363002 fma sNaN1234554321 1 1 -> NaN54321 Invalid_operation - --- Null tests -fmax39990 fma 1 10 # -> NaN Invalid_operation -fmax39991 fma 1 # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- fma.decTest -- decimal fused multiply add -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +-- These tests comprese three parts: +-- 1. Sanity checks and other three-operand tests (especially those +-- where the fused operation makes a difference) +-- 2. Multiply tests (third operand is neutral zero [0E+emax]) +-- 3. Addition tests (first operand is 1) +-- The multiply and addition tests are extensive because FMA may have +-- its own dedicated multiplication or addition routine(s), and they +-- also inherently check the left-to-right properties. + +-- Sanity checks +fmax0001 fma 1 1 1 -> 2 +fmax0002 fma 1 1 2 -> 3 +fmax0003 fma 2 2 3 -> 7 +fmax0004 fma 9 9 9 -> 90 +fmax0005 fma -1 1 1 -> 0 +fmax0006 fma -1 1 2 -> 1 +fmax0007 fma -2 2 3 -> -1 +fmax0008 fma -9 9 9 -> -72 +fmax0011 fma 1 -1 1 -> 0 +fmax0012 fma 1 -1 2 -> 1 +fmax0013 fma 2 -2 3 -> -1 +fmax0014 fma 9 -9 9 -> -72 +fmax0015 fma 1 1 -1 -> 0 +fmax0016 fma 1 1 -2 -> -1 +fmax0017 fma 2 2 -3 -> 1 +fmax0018 fma 9 9 -9 -> 72 +fmax0019 fma 3 5 7 -> 22 +fmax0029 fma 3 -5 7 -> -8 + +-- non-integer exacts +fma0100 fma 25.2 63.6 -438 -> 1164.72 +fma0101 fma 0.301 0.380 334 -> 334.114380 +fma0102 fma 49.2 -4.8 23.3 -> -212.86 +fma0103 fma 4.22 0.079 -94.6 -> -94.26662 +fma0104 fma 903 0.797 0.887 -> 720.578 +fma0105 fma 6.13 -161 65.9 -> -921.03 +fma0106 fma 28.2 727 5.45 -> 20506.85 +fma0107 fma 4 605 688 -> 3108 +fma0108 fma 93.3 0.19 0.226 -> 17.953 +fma0109 fma 0.169 -341 5.61 -> -52.019 +fma0110 fma -72.2 30 -51.2 -> -2217.2 +fma0111 fma -0.409 13 20.4 -> 15.083 +fma0112 fma 317 77.0 19.0 -> 24428.0 +fma0113 fma 47 6.58 1.62 -> 310.88 +fma0114 fma 1.36 0.984 0.493 -> 1.83124 +fma0115 fma 72.7 274 1.56 -> 19921.36 +fma0116 fma 335 847 83 -> 283828 +fma0117 fma 666 0.247 25.4 -> 189.902 +fma0118 fma -3.87 3.06 78.0 -> 66.1578 +fma0119 fma 0.742 192 35.6 -> 178.064 +fma0120 fma -91.6 5.29 0.153 -> -484.411 + +-- cases where result is different from separate multiply + add; each +-- is preceded by the result of unfused multiply and add +-- [this is about 20% of all similar cases in general] +-- 888565290 1557.96930 -86087.7578 -> 1.38435735E+12 +fma0201 fma 888565290 1557.96930 -86087.7578 -> 1.38435736E+12 Inexact Rounded +-- -85519342.9 735155419 42010431 -> -6.28700084E+16 +fma0205 fma -85519342.9 735155419 42010431 -> -6.28700083E+16 Inexact Rounded +-- -98025.5 -294603.472 10414348.2 -> 2.88890669E+10 +fma0208 fma -98025.5 -294603.472 10414348.2 -> 2.88890670E+10 Inexact Rounded +-- 5967627.39 83526540.6 498494.810 -> 4.98455271E+14 +fma0211 fma 5967627.39 83526540.6 498494.810 -> 4.98455272E+14 Inexact Rounded +-- 3456.9433 874.39518 197866.615 -> 3220601.18 +fma0216 fma 3456.9433 874.39518 197866.615 -> 3220601.17 Inexact Rounded +-- 62769.8287 2096.98927 48.420317 -> 131627705 +fma0218 fma 62769.8287 2096.98927 48.420317 -> 131627706 Inexact Rounded +-- -68.81500 59961113.9 -8988862 -> -4.13521291E+9 +fma0219 fma -68.81500 59961113.9 -8988862 -> -4.13521292E+9 Inexact Rounded +-- 2126341.02 63491.5152 302427455 -> 1.35307040E+11 +fma0226 fma 2126341.02 63491.5152 302427455 -> 1.35307041E+11 Inexact Rounded + + +-- Infinite combinations +fmax0800 fma Inf Inf Inf -> Infinity +fmax0801 fma Inf Inf -Inf -> NaN Invalid_operation +fmax0802 fma Inf -Inf Inf -> NaN Invalid_operation +fmax0803 fma Inf -Inf -Inf -> -Infinity +fmax0804 fma -Inf Inf Inf -> NaN Invalid_operation +fmax0805 fma -Inf Inf -Inf -> -Infinity +fmax0806 fma -Inf -Inf Inf -> Infinity +fmax0807 fma -Inf -Inf -Inf -> NaN Invalid_operation +fmax0808 fma -Inf 0 1 -> NaN Invalid_operation +fmax0809 fma -Inf 0 NaN -> NaN Invalid_operation + +-- Triple NaN propagation +fmax0900 fma NaN2 NaN3 NaN5 -> NaN2 +fmax0901 fma 0 NaN3 NaN5 -> NaN3 +fmax0902 fma 0 0 NaN5 -> NaN5 +-- first sNaN wins (consider qNaN from earlier sNaN being +-- overridden by an sNaN in third operand) +fmax0903 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation +fmax0904 fma 0 sNaN2 sNaN3 -> NaN2 Invalid_operation +fmax0905 fma 0 0 sNaN3 -> NaN3 Invalid_operation +fmax0906 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation +fmax0907 fma NaN7 sNaN2 sNaN3 -> NaN2 Invalid_operation +fmax0908 fma NaN7 NaN5 sNaN3 -> NaN3 Invalid_operation + +-- MULTIPLICATION TESTS ------------------------------------------------ +-- sanity checks (as base, above) +fmax2000 fma 2 2 0E+999999 -> 4 +fmax2001 fma 2 3 0E+999999 -> 6 +fmax2002 fma 5 1 0E+999999 -> 5 +fmax2003 fma 5 2 0E+999999 -> 10 +fmax2004 fma 1.20 2 0E+999999 -> 2.40 +fmax2005 fma 1.20 0 0E+999999 -> 0.00 +fmax2006 fma 1.20 -2 0E+999999 -> -2.40 +fmax2007 fma -1.20 2 0E+999999 -> -2.40 +fmax2008 fma -1.20 0 0E+999999 -> 0.00 +fmax2009 fma -1.20 -2 0E+999999 -> 2.40 +fmax2010 fma 5.09 7.1 0E+999999 -> 36.139 +fmax2011 fma 2.5 4 0E+999999 -> 10.0 +fmax2012 fma 2.50 4 0E+999999 -> 10.00 +fmax2013 fma 1.23456789 1.00000000 0E+999999 -> 1.23456789 Rounded +fmax2014 fma 9.999999999 9.999999999 0E+999999 -> 100.000000 Inexact Rounded +fmax2015 fma 2.50 4 0E+999999 -> 10.00 +precision: 6 +fmax2016 fma 2.50 4 0E+999999 -> 10.00 +fmax2017 fma 9.999999 9.999999 0E+999999 -> 100.000 Inexact Rounded +fmax2018 fma 9.999999 -9.999999 0E+999999 -> -100.000 Inexact Rounded +fmax2019 fma -9.999999 9.999999 0E+999999 -> -100.000 Inexact Rounded +fmax2020 fma -9.999999 -9.999999 0E+999999 -> 100.000 Inexact Rounded + +-- 1999.12.21: next one is a edge case if intermediate longs are used +precision: 15 +fmax2059 fma 999999999999 9765625 0E+999999 -> 9.76562499999023E+18 Inexact Rounded +precision: 30 +fmax2160 fma 999999999999 9765625 0E+999999 -> 9765624999990234375 +precision: 9 +----- + +-- zeros, etc. +fmax2021 fma 0 0 0E+999999 -> 0 +fmax2022 fma 0 -0 0E+999999 -> 0 +fmax2023 fma -0 0 0E+999999 -> 0 +fmax2024 fma -0 -0 0E+999999 -> 0 +fmax2025 fma -0.0 -0.0 0E+999999 -> 0.00 +fmax2026 fma -0.0 -0.0 0E+999999 -> 0.00 +fmax2027 fma -0.0 -0.0 0E+999999 -> 0.00 +fmax2028 fma -0.0 -0.0 0E+999999 -> 0.00 +fmax2030 fma 5.00 1E-3 0E+999999 -> 0.00500 +fmax2031 fma 00.00 0.000 0E+999999 -> 0.00000 +fmax2032 fma 00.00 0E-3 0E+999999 -> 0.00000 -- rhs is 0 +fmax2033 fma 0E-3 00.00 0E+999999 -> 0.00000 -- lhs is 0 +fmax2034 fma -5.00 1E-3 0E+999999 -> -0.00500 +fmax2035 fma -00.00 0.000 0E+999999 -> 0.00000 +fmax2036 fma -00.00 0E-3 0E+999999 -> 0.00000 -- rhs is 0 +fmax2037 fma -0E-3 00.00 0E+999999 -> 0.00000 -- lhs is 0 +fmax2038 fma 5.00 -1E-3 0E+999999 -> -0.00500 +fmax2039 fma 00.00 -0.000 0E+999999 -> 0.00000 +fmax2040 fma 00.00 -0E-3 0E+999999 -> 0.00000 -- rhs is 0 +fmax2041 fma 0E-3 -00.00 0E+999999 -> 0.00000 -- lhs is 0 +fmax2042 fma -5.00 -1E-3 0E+999999 -> 0.00500 +fmax2043 fma -00.00 -0.000 0E+999999 -> 0.00000 +fmax2044 fma -00.00 -0E-3 0E+999999 -> 0.00000 -- rhs is 0 +fmax2045 fma -0E-3 -00.00 0E+999999 -> 0.00000 -- lhs is 0 + +-- examples from decarith multiply +fmax2050 fma 1.20 3 0E+999999 -> 3.60 +fmax2051 fma 7 3 0E+999999 -> 21 +fmax2052 fma 0.9 0.8 0E+999999 -> 0.72 +fmax2053 fma 0.9 -0 0E+999999 -> 0.0 +fmax2054 fma 654321 654321 0E+999999 -> 4.28135971E+11 Inexact Rounded + +fmax2060 fma 123.45 1e7 0E+999999 -> 1.2345E+9 +fmax2061 fma 123.45 1e8 0E+999999 -> 1.2345E+10 +fmax2062 fma 123.45 1e+9 0E+999999 -> 1.2345E+11 +fmax2063 fma 123.45 1e10 0E+999999 -> 1.2345E+12 +fmax2064 fma 123.45 1e11 0E+999999 -> 1.2345E+13 +fmax2065 fma 123.45 1e12 0E+999999 -> 1.2345E+14 +fmax2066 fma 123.45 1e13 0E+999999 -> 1.2345E+15 + + +-- test some intermediate lengths +precision: 9 +fmax2080 fma 0.1 123456789 0E+999999 -> 12345678.9 +fmax2081 fma 0.1 1234567891 0E+999999 -> 123456789 Inexact Rounded +fmax2082 fma 0.1 12345678912 0E+999999 -> 1.23456789E+9 Inexact Rounded +fmax2083 fma 0.1 12345678912345 0E+999999 -> 1.23456789E+12 Inexact Rounded +fmax2084 fma 0.1 123456789 0E+999999 -> 12345678.9 +precision: 8 +fmax2085 fma 0.1 12345678912 0E+999999 -> 1.2345679E+9 Inexact Rounded +fmax2086 fma 0.1 12345678912345 0E+999999 -> 1.2345679E+12 Inexact Rounded +precision: 7 +fmax2087 fma 0.1 12345678912 0E+999999 -> 1.234568E+9 Inexact Rounded +fmax2088 fma 0.1 12345678912345 0E+999999 -> 1.234568E+12 Inexact Rounded + +precision: 9 +fmax2090 fma 123456789 0.1 0E+999999 -> 12345678.9 +fmax2091 fma 1234567891 0.1 0E+999999 -> 123456789 Inexact Rounded +fmax2092 fma 12345678912 0.1 0E+999999 -> 1.23456789E+9 Inexact Rounded +fmax2093 fma 12345678912345 0.1 0E+999999 -> 1.23456789E+12 Inexact Rounded +fmax2094 fma 123456789 0.1 0E+999999 -> 12345678.9 +precision: 8 +fmax2095 fma 12345678912 0.1 0E+999999 -> 1.2345679E+9 Inexact Rounded +fmax2096 fma 12345678912345 0.1 0E+999999 -> 1.2345679E+12 Inexact Rounded +precision: 7 +fmax2097 fma 12345678912 0.1 0E+999999 -> 1.234568E+9 Inexact Rounded +fmax2098 fma 12345678912345 0.1 0E+999999 -> 1.234568E+12 Inexact Rounded + +-- test some more edge cases and carries +maxexponent: 9999 +minexponent: -9999 +precision: 33 +fmax2101 fma 9 9 0E+999999 -> 81 +fmax2102 fma 9 90 0E+999999 -> 810 +fmax2103 fma 9 900 0E+999999 -> 8100 +fmax2104 fma 9 9000 0E+999999 -> 81000 +fmax2105 fma 9 90000 0E+999999 -> 810000 +fmax2106 fma 9 900000 0E+999999 -> 8100000 +fmax2107 fma 9 9000000 0E+999999 -> 81000000 +fmax2108 fma 9 90000000 0E+999999 -> 810000000 +fmax2109 fma 9 900000000 0E+999999 -> 8100000000 +fmax2110 fma 9 9000000000 0E+999999 -> 81000000000 +fmax2111 fma 9 90000000000 0E+999999 -> 810000000000 +fmax2112 fma 9 900000000000 0E+999999 -> 8100000000000 +fmax2113 fma 9 9000000000000 0E+999999 -> 81000000000000 +fmax2114 fma 9 90000000000000 0E+999999 -> 810000000000000 +fmax2115 fma 9 900000000000000 0E+999999 -> 8100000000000000 +fmax2116 fma 9 9000000000000000 0E+999999 -> 81000000000000000 +fmax2117 fma 9 90000000000000000 0E+999999 -> 810000000000000000 +fmax2118 fma 9 900000000000000000 0E+999999 -> 8100000000000000000 +fmax2119 fma 9 9000000000000000000 0E+999999 -> 81000000000000000000 +fmax2120 fma 9 90000000000000000000 0E+999999 -> 810000000000000000000 +fmax2121 fma 9 900000000000000000000 0E+999999 -> 8100000000000000000000 +fmax2122 fma 9 9000000000000000000000 0E+999999 -> 81000000000000000000000 +fmax2123 fma 9 90000000000000000000000 0E+999999 -> 810000000000000000000000 +-- test some more edge cases without carries +fmax2131 fma 3 3 0E+999999 -> 9 +fmax2132 fma 3 30 0E+999999 -> 90 +fmax2133 fma 3 300 0E+999999 -> 900 +fmax2134 fma 3 3000 0E+999999 -> 9000 +fmax2135 fma 3 30000 0E+999999 -> 90000 +fmax2136 fma 3 300000 0E+999999 -> 900000 +fmax2137 fma 3 3000000 0E+999999 -> 9000000 +fmax2138 fma 3 30000000 0E+999999 -> 90000000 +fmax2139 fma 3 300000000 0E+999999 -> 900000000 +fmax2140 fma 3 3000000000 0E+999999 -> 9000000000 +fmax2141 fma 3 30000000000 0E+999999 -> 90000000000 +fmax2142 fma 3 300000000000 0E+999999 -> 900000000000 +fmax2143 fma 3 3000000000000 0E+999999 -> 9000000000000 +fmax2144 fma 3 30000000000000 0E+999999 -> 90000000000000 +fmax2145 fma 3 300000000000000 0E+999999 -> 900000000000000 +fmax2146 fma 3 3000000000000000 0E+999999 -> 9000000000000000 +fmax2147 fma 3 30000000000000000 0E+999999 -> 90000000000000000 +fmax2148 fma 3 300000000000000000 0E+999999 -> 900000000000000000 +fmax2149 fma 3 3000000000000000000 0E+999999 -> 9000000000000000000 +fmax2150 fma 3 30000000000000000000 0E+999999 -> 90000000000000000000 +fmax2151 fma 3 300000000000000000000 0E+999999 -> 900000000000000000000 +fmax2152 fma 3 3000000000000000000000 0E+999999 -> 9000000000000000000000 +fmax2153 fma 3 30000000000000000000000 0E+999999 -> 90000000000000000000000 + +maxexponent: 999999 +minexponent: -999999 +precision: 9 +-- test some cases that are close to exponent overflow/underflow +fmax2170 fma 1 9e999999 0E+999999 -> 9E+999999 +fmax2171 fma 1 9.9e999999 0E+999999 -> 9.9E+999999 +fmax2172 fma 1 9.99e999999 0E+999999 -> 9.99E+999999 +fmax2173 fma 9e999999 1 0E+999999 -> 9E+999999 +fmax2174 fma 9.9e999999 1 0E+999999 -> 9.9E+999999 +fmax2176 fma 9.99e999999 1 0E+999999 -> 9.99E+999999 +fmax2177 fma 1 9.99999e999999 0E+999999 -> 9.99999E+999999 +fmax2178 fma 9.99999e999999 1 0E+999999 -> 9.99999E+999999 + +fmax2180 fma 0.1 9e-999998 0E+999999 -> 9E-999999 +fmax2181 fma 0.1 99e-999998 0E+999999 -> 9.9E-999998 +fmax2182 fma 0.1 999e-999998 0E+999999 -> 9.99E-999997 + +fmax2183 fma 0.1 9e-999998 0E+999999 -> 9E-999999 +fmax2184 fma 0.1 99e-999998 0E+999999 -> 9.9E-999998 +fmax2185 fma 0.1 999e-999998 0E+999999 -> 9.99E-999997 +fmax2186 fma 0.1 999e-999997 0E+999999 -> 9.99E-999996 +fmax2187 fma 0.1 9999e-999997 0E+999999 -> 9.999E-999995 +fmax2188 fma 0.1 99999e-999997 0E+999999 -> 9.9999E-999994 + +fmax2190 fma 1 9e-999998 0E+999999 -> 9E-999998 +fmax2191 fma 1 99e-999998 0E+999999 -> 9.9E-999997 +fmax2192 fma 1 999e-999998 0E+999999 -> 9.99E-999996 +fmax2193 fma 9e-999998 1 0E+999999 -> 9E-999998 +fmax2194 fma 99e-999998 1 0E+999999 -> 9.9E-999997 +fmax2195 fma 999e-999998 1 0E+999999 -> 9.99E-999996 + +-- long operand triangle +precision: 33 +fmax2246 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369671916511992830 Inexact Rounded +precision: 32 +fmax2247 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967191651199283 Inexact Rounded +precision: 31 +fmax2248 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933696719165119928 Inexact Rounded +precision: 30 +fmax2249 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369671916511993 Inexact Rounded +precision: 29 +fmax2250 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967191651199 Inexact Rounded +precision: 28 +fmax2251 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933696719165120 Inexact Rounded +precision: 27 +fmax2252 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369671916512 Inexact Rounded +precision: 26 +fmax2253 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967191651 Inexact Rounded +precision: 25 +fmax2254 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933696719165 Inexact Rounded +precision: 24 +fmax2255 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369671917 Inexact Rounded +precision: 23 +fmax2256 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967192 Inexact Rounded +precision: 22 +fmax2257 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933696719 Inexact Rounded +precision: 21 +fmax2258 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193369672 Inexact Rounded +precision: 20 +fmax2259 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119336967 Inexact Rounded +precision: 19 +fmax2260 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011933697 Inexact Rounded +precision: 18 +fmax2261 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193370 Inexact Rounded +precision: 17 +fmax2262 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119337 Inexact Rounded +precision: 16 +fmax2263 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908011934 Inexact Rounded +precision: 15 +fmax2264 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801193 Inexact Rounded +precision: 14 +fmax2265 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080119 Inexact Rounded +precision: 13 +fmax2266 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908012 Inexact Rounded +precision: 12 +fmax2267 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.290801 Inexact Rounded +precision: 11 +fmax2268 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29080 Inexact Rounded +precision: 10 +fmax2269 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.2908 Inexact Rounded +precision: 9 +fmax2270 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.291 Inexact Rounded +precision: 8 +fmax2271 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.29 Inexact Rounded +precision: 7 +fmax2272 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433.3 Inexact Rounded +precision: 6 +fmax2273 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 145433 Inexact Rounded +precision: 5 +fmax2274 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1.4543E+5 Inexact Rounded +precision: 4 +fmax2275 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1.454E+5 Inexact Rounded +precision: 3 +fmax2276 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1.45E+5 Inexact Rounded +precision: 2 +fmax2277 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1.5E+5 Inexact Rounded +precision: 1 +fmax2278 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543 0E+999999 -> 1E+5 Inexact Rounded + +-- test some edge cases with exact rounding +maxexponent: 9999 +minexponent: -9999 +precision: 9 +fmax2301 fma 9 9 0E+999999 -> 81 +fmax2302 fma 9 90 0E+999999 -> 810 +fmax2303 fma 9 900 0E+999999 -> 8100 +fmax2304 fma 9 9000 0E+999999 -> 81000 +fmax2305 fma 9 90000 0E+999999 -> 810000 +fmax2306 fma 9 900000 0E+999999 -> 8100000 +fmax2307 fma 9 9000000 0E+999999 -> 81000000 +fmax2308 fma 9 90000000 0E+999999 -> 810000000 +fmax2309 fma 9 900000000 0E+999999 -> 8.10000000E+9 Rounded +fmax2310 fma 9 9000000000 0E+999999 -> 8.10000000E+10 Rounded +fmax2311 fma 9 90000000000 0E+999999 -> 8.10000000E+11 Rounded +fmax2312 fma 9 900000000000 0E+999999 -> 8.10000000E+12 Rounded +fmax2313 fma 9 9000000000000 0E+999999 -> 8.10000000E+13 Rounded +fmax2314 fma 9 90000000000000 0E+999999 -> 8.10000000E+14 Rounded +fmax2315 fma 9 900000000000000 0E+999999 -> 8.10000000E+15 Rounded +fmax2316 fma 9 9000000000000000 0E+999999 -> 8.10000000E+16 Rounded +fmax2317 fma 9 90000000000000000 0E+999999 -> 8.10000000E+17 Rounded +fmax2318 fma 9 900000000000000000 0E+999999 -> 8.10000000E+18 Rounded +fmax2319 fma 9 9000000000000000000 0E+999999 -> 8.10000000E+19 Rounded +fmax2320 fma 9 90000000000000000000 0E+999999 -> 8.10000000E+20 Rounded +fmax2321 fma 9 900000000000000000000 0E+999999 -> 8.10000000E+21 Rounded +fmax2322 fma 9 9000000000000000000000 0E+999999 -> 8.10000000E+22 Rounded +fmax2323 fma 9 90000000000000000000000 0E+999999 -> 8.10000000E+23 Rounded + +-- fastpath breakers +precision: 29 +fmax2330 fma 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603 0E+999999 -> 1.6487212707001281468486507878 Inexact Rounded +precision: 55 +fmax2331 fma 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428 0E+999999 -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded + + +-- tryzeros cases +precision: 7 +rounding: half_up +maxExponent: 92 +minexponent: -92 +fmax2504 fma 0E-60 1000E-60 0E+999999 -> 0E-98 Clamped +fmax2505 fma 100E+60 0E+60 0E+999999 -> 0E+92 Clamped + +-- mixed with zeros +maxexponent: 999999 +minexponent: -999999 +precision: 9 +fmax2541 fma 0 -1 0E+999999 -> 0 +fmax2542 fma -0 -1 0E+999999 -> 0 +fmax2543 fma 0 1 0E+999999 -> 0 +fmax2544 fma -0 1 0E+999999 -> 0 +fmax2545 fma -1 0 0E+999999 -> 0 +fmax2546 fma -1 -0 0E+999999 -> 0 +fmax2547 fma 1 0 0E+999999 -> 0 +fmax2548 fma 1 -0 0E+999999 -> 0 + +fmax2551 fma 0.0 -1 0E+999999 -> 0.0 +fmax2552 fma -0.0 -1 0E+999999 -> 0.0 +fmax2553 fma 0.0 1 0E+999999 -> 0.0 +fmax2554 fma -0.0 1 0E+999999 -> 0.0 +fmax2555 fma -1.0 0 0E+999999 -> 0.0 +fmax2556 fma -1.0 -0 0E+999999 -> 0.0 +fmax2557 fma 1.0 0 0E+999999 -> 0.0 +fmax2558 fma 1.0 -0 0E+999999 -> 0.0 + +fmax2561 fma 0 -1.0 0E+999999 -> 0.0 +fmax2562 fma -0 -1.0 0E+999999 -> 0.0 +fmax2563 fma 0 1.0 0E+999999 -> 0.0 +fmax2564 fma -0 1.0 0E+999999 -> 0.0 +fmax2565 fma -1 0.0 0E+999999 -> 0.0 +fmax2566 fma -1 -0.0 0E+999999 -> 0.0 +fmax2567 fma 1 0.0 0E+999999 -> 0.0 +fmax2568 fma 1 -0.0 0E+999999 -> 0.0 + +fmax2571 fma 0.0 -1.0 0E+999999 -> 0.00 +fmax2572 fma -0.0 -1.0 0E+999999 -> 0.00 +fmax2573 fma 0.0 1.0 0E+999999 -> 0.00 +fmax2574 fma -0.0 1.0 0E+999999 -> 0.00 +fmax2575 fma -1.0 0.0 0E+999999 -> 0.00 +fmax2576 fma -1.0 -0.0 0E+999999 -> 0.00 +fmax2577 fma 1.0 0.0 0E+999999 -> 0.00 +fmax2578 fma 1.0 -0.0 0E+999999 -> 0.00 + + +-- Specials +fmax2580 fma Inf -Inf 0E+999999 -> -Infinity +fmax2581 fma Inf -1000 0E+999999 -> -Infinity +fmax2582 fma Inf -1 0E+999999 -> -Infinity +fmax2583 fma Inf -0 0E+999999 -> NaN Invalid_operation +fmax2584 fma Inf 0 0E+999999 -> NaN Invalid_operation +fmax2585 fma Inf 1 0E+999999 -> Infinity +fmax2586 fma Inf 1000 0E+999999 -> Infinity +fmax2587 fma Inf Inf 0E+999999 -> Infinity +fmax2588 fma -1000 Inf 0E+999999 -> -Infinity +fmax2589 fma -Inf Inf 0E+999999 -> -Infinity +fmax2590 fma -1 Inf 0E+999999 -> -Infinity +fmax2591 fma -0 Inf 0E+999999 -> NaN Invalid_operation +fmax2592 fma 0 Inf 0E+999999 -> NaN Invalid_operation +fmax2593 fma 1 Inf 0E+999999 -> Infinity +fmax2594 fma 1000 Inf 0E+999999 -> Infinity +fmax2595 fma Inf Inf 0E+999999 -> Infinity + +fmax2600 fma -Inf -Inf 0E+999999 -> Infinity +fmax2601 fma -Inf -1000 0E+999999 -> Infinity +fmax2602 fma -Inf -1 0E+999999 -> Infinity +fmax2603 fma -Inf -0 0E+999999 -> NaN Invalid_operation +fmax2604 fma -Inf 0 0E+999999 -> NaN Invalid_operation +fmax2605 fma -Inf 1 0E+999999 -> -Infinity +fmax2606 fma -Inf 1000 0E+999999 -> -Infinity +fmax2607 fma -Inf Inf 0E+999999 -> -Infinity +fmax2608 fma -1000 Inf 0E+999999 -> -Infinity +fmax2609 fma -Inf -Inf 0E+999999 -> Infinity +fmax2610 fma -1 -Inf 0E+999999 -> Infinity +fmax2611 fma -0 -Inf 0E+999999 -> NaN Invalid_operation +fmax2612 fma 0 -Inf 0E+999999 -> NaN Invalid_operation +fmax2613 fma 1 -Inf 0E+999999 -> -Infinity +fmax2614 fma 1000 -Inf 0E+999999 -> -Infinity +fmax2615 fma Inf -Inf 0E+999999 -> -Infinity + +fmax2621 fma NaN -Inf 0E+999999 -> NaN +fmax2622 fma NaN -1000 0E+999999 -> NaN +fmax2623 fma NaN -1 0E+999999 -> NaN +fmax2624 fma NaN -0 0E+999999 -> NaN +fmax2625 fma NaN 0 0E+999999 -> NaN +fmax2626 fma NaN 1 0E+999999 -> NaN +fmax2627 fma NaN 1000 0E+999999 -> NaN +fmax2628 fma NaN Inf 0E+999999 -> NaN +fmax2629 fma NaN NaN 0E+999999 -> NaN +fmax2630 fma -Inf NaN 0E+999999 -> NaN +fmax2631 fma -1000 NaN 0E+999999 -> NaN +fmax2632 fma -1 NaN 0E+999999 -> NaN +fmax2633 fma -0 NaN 0E+999999 -> NaN +fmax2634 fma 0 NaN 0E+999999 -> NaN +fmax2635 fma 1 NaN 0E+999999 -> NaN +fmax2636 fma 1000 NaN 0E+999999 -> NaN +fmax2637 fma Inf NaN 0E+999999 -> NaN + +fmax2641 fma sNaN -Inf 0E+999999 -> NaN Invalid_operation +fmax2642 fma sNaN -1000 0E+999999 -> NaN Invalid_operation +fmax2643 fma sNaN -1 0E+999999 -> NaN Invalid_operation +fmax2644 fma sNaN -0 0E+999999 -> NaN Invalid_operation +fmax2645 fma sNaN 0 0E+999999 -> NaN Invalid_operation +fmax2646 fma sNaN 1 0E+999999 -> NaN Invalid_operation +fmax2647 fma sNaN 1000 0E+999999 -> NaN Invalid_operation +fmax2648 fma sNaN NaN 0E+999999 -> NaN Invalid_operation +fmax2649 fma sNaN sNaN 0E+999999 -> NaN Invalid_operation +fmax2650 fma NaN sNaN 0E+999999 -> NaN Invalid_operation +fmax2651 fma -Inf sNaN 0E+999999 -> NaN Invalid_operation +fmax2652 fma -1000 sNaN 0E+999999 -> NaN Invalid_operation +fmax2653 fma -1 sNaN 0E+999999 -> NaN Invalid_operation +fmax2654 fma -0 sNaN 0E+999999 -> NaN Invalid_operation +fmax2655 fma 0 sNaN 0E+999999 -> NaN Invalid_operation +fmax2656 fma 1 sNaN 0E+999999 -> NaN Invalid_operation +fmax2657 fma 1000 sNaN 0E+999999 -> NaN Invalid_operation +fmax2658 fma Inf sNaN 0E+999999 -> NaN Invalid_operation +fmax2659 fma NaN sNaN 0E+999999 -> NaN Invalid_operation + +-- propagating NaNs +fmax2661 fma NaN9 -Inf 0E+999999 -> NaN9 +fmax2662 fma NaN8 999 0E+999999 -> NaN8 +fmax2663 fma NaN71 Inf 0E+999999 -> NaN71 +fmax2664 fma NaN6 NaN5 0E+999999 -> NaN6 +fmax2665 fma -Inf NaN4 0E+999999 -> NaN4 +fmax2666 fma -999 NaN33 0E+999999 -> NaN33 +fmax2667 fma Inf NaN2 0E+999999 -> NaN2 + +fmax2671 fma sNaN99 -Inf 0E+999999 -> NaN99 Invalid_operation +fmax2672 fma sNaN98 -11 0E+999999 -> NaN98 Invalid_operation +fmax2673 fma sNaN97 NaN 0E+999999 -> NaN97 Invalid_operation +fmax2674 fma sNaN16 sNaN94 0E+999999 -> NaN16 Invalid_operation +fmax2675 fma NaN95 sNaN93 0E+999999 -> NaN93 Invalid_operation +fmax2676 fma -Inf sNaN92 0E+999999 -> NaN92 Invalid_operation +fmax2677 fma 088 sNaN91 0E+999999 -> NaN91 Invalid_operation +fmax2678 fma Inf sNaN90 0E+999999 -> NaN90 Invalid_operation +fmax2679 fma NaN sNaN89 0E+999999 -> NaN89 Invalid_operation + +fmax2681 fma -NaN9 -Inf 0E+999999 -> -NaN9 +fmax2682 fma -NaN8 999 0E+999999 -> -NaN8 +fmax2683 fma -NaN71 Inf 0E+999999 -> -NaN71 +fmax2684 fma -NaN6 -NaN5 0E+999999 -> -NaN6 +fmax2685 fma -Inf -NaN4 0E+999999 -> -NaN4 +fmax2686 fma -999 -NaN33 0E+999999 -> -NaN33 +fmax2687 fma Inf -NaN2 0E+999999 -> -NaN2 + +fmax2691 fma -sNaN99 -Inf 0E+999999 -> -NaN99 Invalid_operation +fmax2692 fma -sNaN98 -11 0E+999999 -> -NaN98 Invalid_operation +fmax2693 fma -sNaN97 NaN 0E+999999 -> -NaN97 Invalid_operation +fmax2694 fma -sNaN16 -sNaN94 0E+999999 -> -NaN16 Invalid_operation +fmax2695 fma -NaN95 -sNaN93 0E+999999 -> -NaN93 Invalid_operation +fmax2696 fma -Inf -sNaN92 0E+999999 -> -NaN92 Invalid_operation +fmax2697 fma 088 -sNaN91 0E+999999 -> -NaN91 Invalid_operation +fmax2698 fma Inf -sNaN90 0E+999999 -> -NaN90 Invalid_operation +fmax2699 fma -NaN -sNaN89 0E+999999 -> -NaN89 Invalid_operation + +fmax2701 fma -NaN -Inf 0E+999999 -> -NaN +fmax2702 fma -NaN 999 0E+999999 -> -NaN +fmax2703 fma -NaN Inf 0E+999999 -> -NaN +fmax2704 fma -NaN -NaN 0E+999999 -> -NaN +fmax2705 fma -Inf -NaN0 0E+999999 -> -NaN +fmax2706 fma -999 -NaN 0E+999999 -> -NaN +fmax2707 fma Inf -NaN 0E+999999 -> -NaN + +fmax2711 fma -sNaN -Inf 0E+999999 -> -NaN Invalid_operation +fmax2712 fma -sNaN -11 0E+999999 -> -NaN Invalid_operation +fmax2713 fma -sNaN00 NaN 0E+999999 -> -NaN Invalid_operation +fmax2714 fma -sNaN -sNaN 0E+999999 -> -NaN Invalid_operation +fmax2715 fma -NaN -sNaN 0E+999999 -> -NaN Invalid_operation +fmax2716 fma -Inf -sNaN 0E+999999 -> -NaN Invalid_operation +fmax2717 fma 088 -sNaN 0E+999999 -> -NaN Invalid_operation +fmax2718 fma Inf -sNaN 0E+999999 -> -NaN Invalid_operation +fmax2719 fma -NaN -sNaN 0E+999999 -> -NaN Invalid_operation + +-- overflow and underflow tests .. note subnormal results +maxexponent: 999999 +minexponent: -999999 +fmax2730 fma +1.23456789012345E-0 9E+999999 0E+999999 -> Infinity Inexact Overflow Rounded +fmax2731 fma 9E+999999 +1.23456789012345E-0 0E+999999 -> Infinity Inexact Overflow Rounded +fmax2732 fma +0.100 9E-999999 0E+999999 -> 9.00E-1000000 Subnormal +fmax2733 fma 9E-999999 +0.100 0E+999999 -> 9.00E-1000000 Subnormal +fmax2735 fma -1.23456789012345E-0 9E+999999 0E+999999 -> -Infinity Inexact Overflow Rounded +fmax2736 fma 9E+999999 -1.23456789012345E-0 0E+999999 -> -Infinity Inexact Overflow Rounded +fmax2737 fma -0.100 9E-999999 0E+999999 -> -9.00E-1000000 Subnormal +fmax2738 fma 9E-999999 -0.100 0E+999999 -> -9.00E-1000000 Subnormal + +-- signs +fmax2751 fma 1e+777777 1e+411111 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2752 fma 1e+777777 -1e+411111 0E+999999 -> -Infinity Overflow Inexact Rounded +fmax2753 fma -1e+777777 1e+411111 0E+999999 -> -Infinity Overflow Inexact Rounded +fmax2754 fma -1e+777777 -1e+411111 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2755 fma 1e-777777 1e-411111 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +fmax2756 fma 1e-777777 -1e-411111 0E+999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped +fmax2757 fma -1e-777777 1e-411111 0E+999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped +fmax2758 fma -1e-777777 -1e-411111 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped + +-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) +precision: 9 +fmax2760 fma 1e-600000 1e-400001 0E+999999 -> 1E-1000001 Subnormal +fmax2761 fma 1e-600000 1e-400002 0E+999999 -> 1E-1000002 Subnormal +fmax2762 fma 1e-600000 1e-400003 0E+999999 -> 1E-1000003 Subnormal +fmax2763 fma 1e-600000 1e-400004 0E+999999 -> 1E-1000004 Subnormal +fmax2764 fma 1e-600000 1e-400005 0E+999999 -> 1E-1000005 Subnormal +fmax2765 fma 1e-600000 1e-400006 0E+999999 -> 1E-1000006 Subnormal +fmax2766 fma 1e-600000 1e-400007 0E+999999 -> 1E-1000007 Subnormal +fmax2767 fma 1e-600000 1e-400008 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +fmax2768 fma 1e-600000 1e-400009 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +fmax2769 fma 1e-600000 1e-400010 0E+999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +-- [no equivalent of 'subnormal' for overflow] +fmax2770 fma 1e+600000 1e+400001 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2771 fma 1e+600000 1e+400002 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2772 fma 1e+600000 1e+400003 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2773 fma 1e+600000 1e+400004 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2774 fma 1e+600000 1e+400005 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2775 fma 1e+600000 1e+400006 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2776 fma 1e+600000 1e+400007 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2777 fma 1e+600000 1e+400008 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2778 fma 1e+600000 1e+400009 0E+999999 -> Infinity Overflow Inexact Rounded +fmax2779 fma 1e+600000 1e+400010 0E+999999 -> Infinity Overflow Inexact Rounded + +-- 'subnormal' test edge condition at higher precisions +precision: 99 +fmax2780 fma 1e-600000 1e-400007 0E+999999 -> 1E-1000007 Subnormal +fmax2781 fma 1e-600000 1e-400008 0E+999999 -> 1E-1000008 Subnormal +fmax2782 fma 1e-600000 1e-400097 0E+999999 -> 1E-1000097 Subnormal +fmax2783 fma 1e-600000 1e-400098 0E+999999 -> 0E-1000097 Underflow Subnormal Inexact Rounded Clamped +precision: 999 +fmax2784 fma 1e-600000 1e-400997 0E+999999 -> 1E-1000997 Subnormal +fmax2785 fma 1e-600000 1e-400998 0E+999999 -> 0E-1000997 Underflow Subnormal Inexact Rounded Clamped + +-- test subnormals rounding +precision: 5 +maxExponent: 999 +minexponent: -999 +rounding: half_even + +fmax2801 fma 1.0000E-999 1 0E+999999 -> 1.0000E-999 +fmax2802 fma 1.000E-999 1e-1 0E+999999 -> 1.000E-1000 Subnormal +fmax2803 fma 1.00E-999 1e-2 0E+999999 -> 1.00E-1001 Subnormal +fmax2804 fma 1.0E-999 1e-3 0E+999999 -> 1.0E-1002 Subnormal +fmax2805 fma 1.0E-999 1e-4 0E+999999 -> 1E-1003 Subnormal Rounded +fmax2806 fma 1.3E-999 1e-4 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded +fmax2807 fma 1.5E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded +fmax2808 fma 1.7E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded +fmax2809 fma 2.3E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded +fmax2810 fma 2.5E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded +fmax2811 fma 2.7E-999 1e-4 0E+999999 -> 3E-1003 Underflow Subnormal Inexact Rounded +fmax2812 fma 1.49E-999 1e-4 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded +fmax2813 fma 1.50E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded +fmax2814 fma 1.51E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded +fmax2815 fma 2.49E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded +fmax2816 fma 2.50E-999 1e-4 0E+999999 -> 2E-1003 Underflow Subnormal Inexact Rounded +fmax2817 fma 2.51E-999 1e-4 0E+999999 -> 3E-1003 Underflow Subnormal Inexact Rounded + +fmax2818 fma 1E-999 1e-4 0E+999999 -> 1E-1003 Subnormal +fmax2819 fma 3E-999 1e-5 0E+999999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +fmax2820 fma 5E-999 1e-5 0E+999999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +fmax2821 fma 7E-999 1e-5 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded +fmax2822 fma 9E-999 1e-5 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded +fmax2823 fma 9.9E-999 1e-5 0E+999999 -> 1E-1003 Underflow Subnormal Inexact Rounded + +fmax2824 fma 1E-999 -1e-4 0E+999999 -> -1E-1003 Subnormal +fmax2825 fma 3E-999 -1e-5 0E+999999 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped +fmax2826 fma -5E-999 1e-5 0E+999999 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped +fmax2827 fma 7E-999 -1e-5 0E+999999 -> -1E-1003 Underflow Subnormal Inexact Rounded +fmax2828 fma -9E-999 1e-5 0E+999999 -> -1E-1003 Underflow Subnormal Inexact Rounded +fmax2829 fma 9.9E-999 -1e-5 0E+999999 -> -1E-1003 Underflow Subnormal Inexact Rounded +fmax2830 fma 3.0E-999 -1e-5 0E+999999 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped + +fmax2831 fma 1.0E-501 1e-501 0E+999999 -> 1.0E-1002 Subnormal +fmax2832 fma 2.0E-501 2e-501 0E+999999 -> 4.0E-1002 Subnormal +fmax2833 fma 4.0E-501 4e-501 0E+999999 -> 1.60E-1001 Subnormal +fmax2834 fma 10.0E-501 10e-501 0E+999999 -> 1.000E-1000 Subnormal +fmax2835 fma 30.0E-501 30e-501 0E+999999 -> 9.000E-1000 Subnormal +fmax2836 fma 40.0E-501 40e-501 0E+999999 -> 1.6000E-999 + +-- squares +fmax2840 fma 1E-502 1e-502 0E+999999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +fmax2841 fma 1E-501 1e-501 0E+999999 -> 1E-1002 Subnormal +fmax2842 fma 2E-501 2e-501 0E+999999 -> 4E-1002 Subnormal +fmax2843 fma 4E-501 4e-501 0E+999999 -> 1.6E-1001 Subnormal +fmax2844 fma 10E-501 10e-501 0E+999999 -> 1.00E-1000 Subnormal +fmax2845 fma 30E-501 30e-501 0E+999999 -> 9.00E-1000 Subnormal +fmax2846 fma 40E-501 40e-501 0E+999999 -> 1.600E-999 + +-- cubes +fmax2850 fma 1E-670 1e-335 0E+999999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +fmax2851 fma 1E-668 1e-334 0E+999999 -> 1E-1002 Subnormal +fmax2852 fma 4E-668 2e-334 0E+999999 -> 8E-1002 Subnormal +fmax2853 fma 9E-668 3e-334 0E+999999 -> 2.7E-1001 Subnormal +fmax2854 fma 16E-668 4e-334 0E+999999 -> 6.4E-1001 Subnormal +fmax2855 fma 25E-668 5e-334 0E+999999 -> 1.25E-1000 Subnormal +fmax2856 fma 10E-668 100e-334 0E+999999 -> 1.000E-999 + +-- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent +precision: 19 +fmax2860 fma 6636851557994578716E-520 6636851557994578716E-520 0E+999999 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded + +-- Long operand overflow may be a different path +precision: 3 +maxExponent: 999999 +minexponent: -999999 +fmax2870 fma 1 9.999E+999999 0E+999999 -> Infinity Inexact Overflow Rounded +fmax2871 fma 1 -9.999E+999999 0E+999999 -> -Infinity Inexact Overflow Rounded +fmax2872 fma 9.999E+999999 1 0E+999999 -> Infinity Inexact Overflow Rounded +fmax2873 fma -9.999E+999999 1 0E+999999 -> -Infinity Inexact Overflow Rounded + +-- check for double-rounded subnormals +precision: 5 +maxexponent: 79 +minexponent: -79 +fmax2881 fma 1.2347E-40 1.2347E-40 0E+999999 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax2882 fma 1.234E-40 1.234E-40 0E+999999 -> 1.523E-80 Inexact Rounded Subnormal Underflow +fmax2883 fma 1.23E-40 1.23E-40 0E+999999 -> 1.513E-80 Inexact Rounded Subnormal Underflow +fmax2884 fma 1.2E-40 1.2E-40 0E+999999 -> 1.44E-80 Subnormal +fmax2885 fma 1.2E-40 1.2E-41 0E+999999 -> 1.44E-81 Subnormal +fmax2886 fma 1.2E-40 1.2E-42 0E+999999 -> 1.4E-82 Subnormal Inexact Rounded Underflow +fmax2887 fma 1.2E-40 1.3E-42 0E+999999 -> 1.6E-82 Subnormal Inexact Rounded Underflow +fmax2888 fma 1.3E-40 1.3E-42 0E+999999 -> 1.7E-82 Subnormal Inexact Rounded Underflow +fmax2889 fma 1.3E-40 1.3E-43 0E+999999 -> 2E-83 Subnormal Inexact Rounded Underflow +fmax2890 fma 1.3E-41 1.3E-43 0E+999999 -> 0E-83 Clamped Subnormal Inexact Rounded Underflow + +fmax2891 fma 1.2345E-39 1.234E-40 0E+999999 -> 1.5234E-79 Inexact Rounded +fmax2892 fma 1.23456E-39 1.234E-40 0E+999999 -> 1.5234E-79 Inexact Rounded +fmax2893 fma 1.2345E-40 1.234E-40 0E+999999 -> 1.523E-80 Inexact Rounded Subnormal Underflow +fmax2894 fma 1.23456E-40 1.234E-40 0E+999999 -> 1.523E-80 Inexact Rounded Subnormal Underflow +fmax2895 fma 1.2345E-41 1.234E-40 0E+999999 -> 1.52E-81 Inexact Rounded Subnormal Underflow +fmax2896 fma 1.23456E-41 1.234E-40 0E+999999 -> 1.52E-81 Inexact Rounded Subnormal Underflow + +-- Now explore the case where we get a normal result with Underflow +precision: 16 +rounding: half_up +maxExponent: 384 +minExponent: -383 + +fmax2900 fma 0.3000000000E-191 0.3000000000E-191 0E+999999 -> 9.00000000000000E-384 Subnormal Rounded +fmax2901 fma 0.3000000001E-191 0.3000000001E-191 0E+999999 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded +fmax2902 fma 9.999999999999999E-383 0.0999999999999 0E+999999 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded +fmax2903 fma 9.999999999999999E-383 0.09999999999999 0E+999999 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded +fmax2904 fma 9.999999999999999E-383 0.099999999999999 0E+999999 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded +fmax2905 fma 9.999999999999999E-383 0.0999999999999999 0E+999999 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded +-- prove operands are exact +fmax2906 fma 9.999999999999999E-383 1 0E+999999 -> 9.999999999999999E-383 +fmax2907 fma 1 0.09999999999999999 0E+999999 -> 0.09999999999999999 +-- the next rounds to Nmin +fmax2908 fma 9.999999999999999E-383 0.09999999999999999 0E+999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax2909 fma 9.999999999999999E-383 0.099999999999999999 0E+999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax2910 fma 9.999999999999999E-383 0.0999999999999999999 0E+999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax2911 fma 9.999999999999999E-383 0.09999999999999999999 0E+999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded + +-- Examples from SQL proposal (Krishna Kulkarni) +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 +fmax2921 fma 130E-2 120E-2 0E+999999 -> 1.5600 +fmax2922 fma 130E-2 12E-1 0E+999999 -> 1.560 +fmax2923 fma 130E-2 1E0 0E+999999 -> 1.30 + +-- Null tests +fmax2990 fma # 10 0E+999999 -> NaN Invalid_operation +fmax2991 fma 10 # 0E+999999 -> NaN Invalid_operation + +-- ADDITION TESTS ------------------------------------------------------ +precision: 9 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +-- [first group are 'quick confidence check'] +fmax3001 fma 1 1 1 -> 2 +fmax3002 fma 1 2 3 -> 5 +fmax3003 fma 1 '5.75' '3.3' -> 9.05 +fmax3004 fma 1 '5' '-3' -> 2 +fmax3005 fma 1 '-5' '-3' -> -8 +fmax3006 fma 1 '-7' '2.5' -> -4.5 +fmax3007 fma 1 '0.7' '0.3' -> 1.0 +fmax3008 fma 1 '1.25' '1.25' -> 2.50 +fmax3009 fma 1 '1.23456789' '1.00000000' -> '2.23456789' +fmax3010 fma 1 '1.23456789' '1.00000011' -> '2.23456800' + +fmax3011 fma 1 '0.4444444444' '0.5555555555' -> '1.00000000' Inexact Rounded +fmax3012 fma 1 '0.4444444440' '0.5555555555' -> '1.00000000' Inexact Rounded +fmax3013 fma 1 '0.4444444444' '0.5555555550' -> '0.999999999' Inexact Rounded +fmax3014 fma 1 '0.44444444449' '0' -> '0.444444444' Inexact Rounded +fmax3015 fma 1 '0.444444444499' '0' -> '0.444444444' Inexact Rounded +fmax3016 fma 1 '0.4444444444999' '0' -> '0.444444444' Inexact Rounded +fmax3017 fma 1 '0.4444444445000' '0' -> '0.444444445' Inexact Rounded +fmax3018 fma 1 '0.4444444445001' '0' -> '0.444444445' Inexact Rounded +fmax3019 fma 1 '0.444444444501' '0' -> '0.444444445' Inexact Rounded +fmax3020 fma 1 '0.44444444451' '0' -> '0.444444445' Inexact Rounded + +fmax3021 fma 1 0 1 -> 1 +fmax3022 fma 1 1 1 -> 2 +fmax3023 fma 1 2 1 -> 3 +fmax3024 fma 1 3 1 -> 4 +fmax3025 fma 1 4 1 -> 5 +fmax3026 fma 1 5 1 -> 6 +fmax3027 fma 1 6 1 -> 7 +fmax3028 fma 1 7 1 -> 8 +fmax3029 fma 1 8 1 -> 9 +fmax3030 fma 1 9 1 -> 10 + +-- some carrying effects +fmax3031 fma 1 '0.9998' '0.0000' -> '0.9998' +fmax3032 fma 1 '0.9998' '0.0001' -> '0.9999' +fmax3033 fma 1 '0.9998' '0.0002' -> '1.0000' +fmax3034 fma 1 '0.9998' '0.0003' -> '1.0001' + +fmax3035 fma 1 '70' '10000e+9' -> '1.00000000E+13' Inexact Rounded +fmax3036 fma 1 '700' '10000e+9' -> '1.00000000E+13' Inexact Rounded +fmax3037 fma 1 '7000' '10000e+9' -> '1.00000000E+13' Inexact Rounded +fmax3038 fma 1 '70000' '10000e+9' -> '1.00000001E+13' Inexact Rounded +fmax3039 fma 1 '700000' '10000e+9' -> '1.00000007E+13' Rounded + +-- symmetry: +fmax3040 fma 1 '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded +fmax3041 fma 1 '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded +fmax3042 fma 1 '10000e+9' '7000' -> '1.00000000E+13' Inexact Rounded +fmax3044 fma 1 '10000e+9' '70000' -> '1.00000001E+13' Inexact Rounded +fmax3045 fma 1 '10000e+9' '700000' -> '1.00000007E+13' Rounded + +-- same, higher precision +precision: 15 +fmax3046 fma 1 '10000e+9' '7' -> '10000000000007' +fmax3047 fma 1 '10000e+9' '70' -> '10000000000070' +fmax3048 fma 1 '10000e+9' '700' -> '10000000000700' +fmax3049 fma 1 '10000e+9' '7000' -> '10000000007000' +fmax3050 fma 1 '10000e+9' '70000' -> '10000000070000' +fmax3051 fma 1 '10000e+9' '700000' -> '10000000700000' +fmax3052 fma 1 '10000e+9' '7000000' -> '10000007000000' + +-- examples from decarith +fmax3053 fma 1 '12' '7.00' -> '19.00' +fmax3054 fma 1 '1.3' '-1.07' -> '0.23' +fmax3055 fma 1 '1.3' '-1.30' -> '0.00' +fmax3056 fma 1 '1.3' '-2.07' -> '-0.77' +fmax3057 fma 1 '1E+2' '1E+4' -> '1.01E+4' + +-- zero preservation +precision: 6 +fmax3060 fma 1 '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded +fmax3061 fma 1 1 '0.0001' -> '1.0001' +fmax3062 fma 1 1 '0.00001' -> '1.00001' +fmax3063 fma 1 1 '0.000001' -> '1.00000' Inexact Rounded +fmax3064 fma 1 1 '0.0000001' -> '1.00000' Inexact Rounded +fmax3065 fma 1 1 '0.00000001' -> '1.00000' Inexact Rounded + +-- some funny zeros [in case of bad signum] +fmax3070 fma 1 1 0 -> 1 +fmax3071 fma 1 1 0. -> 1 +fmax3072 fma 1 1 .0 -> 1.0 +fmax3073 fma 1 1 0.0 -> 1.0 +fmax3074 fma 1 1 0.00 -> 1.00 +fmax3075 fma 1 0 1 -> 1 +fmax3076 fma 1 0. 1 -> 1 +fmax3077 fma 1 .0 1 -> 1.0 +fmax3078 fma 1 0.0 1 -> 1.0 +fmax3079 fma 1 0.00 1 -> 1.00 + +precision: 9 + +-- some carries +fmax3080 fma 1 999999998 1 -> 999999999 +fmax3081 fma 1 999999999 1 -> 1.00000000E+9 Rounded +fmax3082 fma 1 99999999 1 -> 100000000 +fmax3083 fma 1 9999999 1 -> 10000000 +fmax3084 fma 1 999999 1 -> 1000000 +fmax3085 fma 1 99999 1 -> 100000 +fmax3086 fma 1 9999 1 -> 10000 +fmax3087 fma 1 999 1 -> 1000 +fmax3088 fma 1 99 1 -> 100 +fmax3089 fma 1 9 1 -> 10 + + +-- more LHS swaps +fmax3090 fma 1 '-56267E-10' 0 -> '-0.0000056267' +fmax3091 fma 1 '-56267E-6' 0 -> '-0.056267' +fmax3092 fma 1 '-56267E-5' 0 -> '-0.56267' +fmax3093 fma 1 '-56267E-4' 0 -> '-5.6267' +fmax3094 fma 1 '-56267E-3' 0 -> '-56.267' +fmax3095 fma 1 '-56267E-2' 0 -> '-562.67' +fmax3096 fma 1 '-56267E-1' 0 -> '-5626.7' +fmax3097 fma 1 '-56267E-0' 0 -> '-56267' +fmax3098 fma 1 '-5E-10' 0 -> '-5E-10' +fmax3099 fma 1 '-5E-7' 0 -> '-5E-7' +fmax3100 fma 1 '-5E-6' 0 -> '-0.000005' +fmax3101 fma 1 '-5E-5' 0 -> '-0.00005' +fmax3102 fma 1 '-5E-4' 0 -> '-0.0005' +fmax3103 fma 1 '-5E-1' 0 -> '-0.5' +fmax3104 fma 1 '-5E0' 0 -> '-5' +fmax3105 fma 1 '-5E1' 0 -> '-50' +fmax3106 fma 1 '-5E5' 0 -> '-500000' +fmax3107 fma 1 '-5E8' 0 -> '-500000000' +fmax3108 fma 1 '-5E9' 0 -> '-5.00000000E+9' Rounded +fmax3109 fma 1 '-5E10' 0 -> '-5.00000000E+10' Rounded +fmax3110 fma 1 '-5E11' 0 -> '-5.00000000E+11' Rounded +fmax3111 fma 1 '-5E100' 0 -> '-5.00000000E+100' Rounded + +-- more RHS swaps +fmax3113 fma 1 0 '-56267E-10' -> '-0.0000056267' +fmax3114 fma 1 0 '-56267E-6' -> '-0.056267' +fmax3116 fma 1 0 '-56267E-5' -> '-0.56267' +fmax3117 fma 1 0 '-56267E-4' -> '-5.6267' +fmax3119 fma 1 0 '-56267E-3' -> '-56.267' +fmax3120 fma 1 0 '-56267E-2' -> '-562.67' +fmax3121 fma 1 0 '-56267E-1' -> '-5626.7' +fmax3122 fma 1 0 '-56267E-0' -> '-56267' +fmax3123 fma 1 0 '-5E-10' -> '-5E-10' +fmax3124 fma 1 0 '-5E-7' -> '-5E-7' +fmax3125 fma 1 0 '-5E-6' -> '-0.000005' +fmax3126 fma 1 0 '-5E-5' -> '-0.00005' +fmax3127 fma 1 0 '-5E-4' -> '-0.0005' +fmax3128 fma 1 0 '-5E-1' -> '-0.5' +fmax3129 fma 1 0 '-5E0' -> '-5' +fmax3130 fma 1 0 '-5E1' -> '-50' +fmax3131 fma 1 0 '-5E5' -> '-500000' +fmax3132 fma 1 0 '-5E8' -> '-500000000' +fmax3133 fma 1 0 '-5E9' -> '-5.00000000E+9' Rounded +fmax3134 fma 1 0 '-5E10' -> '-5.00000000E+10' Rounded +fmax3135 fma 1 0 '-5E11' -> '-5.00000000E+11' Rounded +fmax3136 fma 1 0 '-5E100' -> '-5.00000000E+100' Rounded + +-- related +fmax3137 fma 1 1 '0E-12' -> '1.00000000' Rounded +fmax3138 fma 1 -1 '0E-12' -> '-1.00000000' Rounded +fmax3139 fma 1 '0E-12' 1 -> '1.00000000' Rounded +fmax3140 fma 1 '0E-12' -1 -> '-1.00000000' Rounded +fmax3141 fma 1 1E+4 0.0000 -> '10000.0000' +fmax3142 fma 1 1E+4 0.00000 -> '10000.0000' Rounded +fmax3143 fma 1 0.000 1E+5 -> '100000.000' +fmax3144 fma 1 0.0000 1E+5 -> '100000.000' Rounded + +-- [some of the next group are really constructor tests] +fmax3146 fma 1 '00.0' 0 -> '0.0' +fmax3147 fma 1 '0.00' 0 -> '0.00' +fmax3148 fma 1 0 '0.00' -> '0.00' +fmax3149 fma 1 0 '00.0' -> '0.0' +fmax3150 fma 1 '00.0' '0.00' -> '0.00' +fmax3151 fma 1 '0.00' '00.0' -> '0.00' +fmax3152 fma 1 '3' '.3' -> '3.3' +fmax3153 fma 1 '3.' '.3' -> '3.3' +fmax3154 fma 1 '3.0' '.3' -> '3.3' +fmax3155 fma 1 '3.00' '.3' -> '3.30' +fmax3156 fma 1 '3' '3' -> '6' +fmax3157 fma 1 '3' '+3' -> '6' +fmax3158 fma 1 '3' '-3' -> '0' +fmax3159 fma 1 '0.3' '-0.3' -> '0.0' +fmax3160 fma 1 '0.03' '-0.03' -> '0.00' + +-- try borderline precision, with carries, etc. +precision: 15 +fmax3161 fma 1 '1E+12' '-1' -> '999999999999' +fmax3162 fma 1 '1E+12' '1.11' -> '1000000000001.11' +fmax3163 fma 1 '1.11' '1E+12' -> '1000000000001.11' +fmax3164 fma 1 '-1' '1E+12' -> '999999999999' +fmax3165 fma 1 '7E+12' '-1' -> '6999999999999' +fmax3166 fma 1 '7E+12' '1.11' -> '7000000000001.11' +fmax3167 fma 1 '1.11' '7E+12' -> '7000000000001.11' +fmax3168 fma 1 '-1' '7E+12' -> '6999999999999' + +-- 123456789012345 123456789012345 1 23456789012345 +fmax3170 fma 1 '0.444444444444444' '0.555555555555563' -> '1.00000000000001' Inexact Rounded +fmax3171 fma 1 '0.444444444444444' '0.555555555555562' -> '1.00000000000001' Inexact Rounded +fmax3172 fma 1 '0.444444444444444' '0.555555555555561' -> '1.00000000000001' Inexact Rounded +fmax3173 fma 1 '0.444444444444444' '0.555555555555560' -> '1.00000000000000' Inexact Rounded +fmax3174 fma 1 '0.444444444444444' '0.555555555555559' -> '1.00000000000000' Inexact Rounded +fmax3175 fma 1 '0.444444444444444' '0.555555555555558' -> '1.00000000000000' Inexact Rounded +fmax3176 fma 1 '0.444444444444444' '0.555555555555557' -> '1.00000000000000' Inexact Rounded +fmax3177 fma 1 '0.444444444444444' '0.555555555555556' -> '1.00000000000000' Rounded +fmax3178 fma 1 '0.444444444444444' '0.555555555555555' -> '0.999999999999999' +fmax3179 fma 1 '0.444444444444444' '0.555555555555554' -> '0.999999999999998' +fmax3180 fma 1 '0.444444444444444' '0.555555555555553' -> '0.999999999999997' +fmax3181 fma 1 '0.444444444444444' '0.555555555555552' -> '0.999999999999996' +fmax3182 fma 1 '0.444444444444444' '0.555555555555551' -> '0.999999999999995' +fmax3183 fma 1 '0.444444444444444' '0.555555555555550' -> '0.999999999999994' + +-- and some more, including residue effects and different roundings +precision: 9 +rounding: half_up +fmax3200 fma 1 '123456789' 0 -> '123456789' +fmax3201 fma 1 '123456789' 0.000000001 -> '123456789' Inexact Rounded +fmax3202 fma 1 '123456789' 0.000001 -> '123456789' Inexact Rounded +fmax3203 fma 1 '123456789' 0.1 -> '123456789' Inexact Rounded +fmax3204 fma 1 '123456789' 0.4 -> '123456789' Inexact Rounded +fmax3205 fma 1 '123456789' 0.49 -> '123456789' Inexact Rounded +fmax3206 fma 1 '123456789' 0.499999 -> '123456789' Inexact Rounded +fmax3207 fma 1 '123456789' 0.499999999 -> '123456789' Inexact Rounded +fmax3208 fma 1 '123456789' 0.5 -> '123456790' Inexact Rounded +fmax3209 fma 1 '123456789' 0.500000001 -> '123456790' Inexact Rounded +fmax3210 fma 1 '123456789' 0.500001 -> '123456790' Inexact Rounded +fmax3211 fma 1 '123456789' 0.51 -> '123456790' Inexact Rounded +fmax3212 fma 1 '123456789' 0.6 -> '123456790' Inexact Rounded +fmax3213 fma 1 '123456789' 0.9 -> '123456790' Inexact Rounded +fmax3214 fma 1 '123456789' 0.99999 -> '123456790' Inexact Rounded +fmax3215 fma 1 '123456789' 0.999999999 -> '123456790' Inexact Rounded +fmax3216 fma 1 '123456789' 1 -> '123456790' +fmax3217 fma 1 '123456789' 1.000000001 -> '123456790' Inexact Rounded +fmax3218 fma 1 '123456789' 1.00001 -> '123456790' Inexact Rounded +fmax3219 fma 1 '123456789' 1.1 -> '123456790' Inexact Rounded + +rounding: half_even +fmax3220 fma 1 '123456789' 0 -> '123456789' +fmax3221 fma 1 '123456789' 0.000000001 -> '123456789' Inexact Rounded +fmax3222 fma 1 '123456789' 0.000001 -> '123456789' Inexact Rounded +fmax3223 fma 1 '123456789' 0.1 -> '123456789' Inexact Rounded +fmax3224 fma 1 '123456789' 0.4 -> '123456789' Inexact Rounded +fmax3225 fma 1 '123456789' 0.49 -> '123456789' Inexact Rounded +fmax3226 fma 1 '123456789' 0.499999 -> '123456789' Inexact Rounded +fmax3227 fma 1 '123456789' 0.499999999 -> '123456789' Inexact Rounded +fmax3228 fma 1 '123456789' 0.5 -> '123456790' Inexact Rounded +fmax3229 fma 1 '123456789' 0.500000001 -> '123456790' Inexact Rounded +fmax3230 fma 1 '123456789' 0.500001 -> '123456790' Inexact Rounded +fmax3231 fma 1 '123456789' 0.51 -> '123456790' Inexact Rounded +fmax3232 fma 1 '123456789' 0.6 -> '123456790' Inexact Rounded +fmax3233 fma 1 '123456789' 0.9 -> '123456790' Inexact Rounded +fmax3234 fma 1 '123456789' 0.99999 -> '123456790' Inexact Rounded +fmax3235 fma 1 '123456789' 0.999999999 -> '123456790' Inexact Rounded +fmax3236 fma 1 '123456789' 1 -> '123456790' +fmax3237 fma 1 '123456789' 1.00000001 -> '123456790' Inexact Rounded +fmax3238 fma 1 '123456789' 1.00001 -> '123456790' Inexact Rounded +fmax3239 fma 1 '123456789' 1.1 -> '123456790' Inexact Rounded +-- critical few with even bottom digit... +fmax3240 fma 1 '123456788' 0.499999999 -> '123456788' Inexact Rounded +fmax3241 fma 1 '123456788' 0.5 -> '123456788' Inexact Rounded +fmax3242 fma 1 '123456788' 0.500000001 -> '123456789' Inexact Rounded + +rounding: down +fmax3250 fma 1 '123456789' 0 -> '123456789' +fmax3251 fma 1 '123456789' 0.000000001 -> '123456789' Inexact Rounded +fmax3252 fma 1 '123456789' 0.000001 -> '123456789' Inexact Rounded +fmax3253 fma 1 '123456789' 0.1 -> '123456789' Inexact Rounded +fmax3254 fma 1 '123456789' 0.4 -> '123456789' Inexact Rounded +fmax3255 fma 1 '123456789' 0.49 -> '123456789' Inexact Rounded +fmax3256 fma 1 '123456789' 0.499999 -> '123456789' Inexact Rounded +fmax3257 fma 1 '123456789' 0.499999999 -> '123456789' Inexact Rounded +fmax3258 fma 1 '123456789' 0.5 -> '123456789' Inexact Rounded +fmax3259 fma 1 '123456789' 0.500000001 -> '123456789' Inexact Rounded +fmax3260 fma 1 '123456789' 0.500001 -> '123456789' Inexact Rounded +fmax3261 fma 1 '123456789' 0.51 -> '123456789' Inexact Rounded +fmax3262 fma 1 '123456789' 0.6 -> '123456789' Inexact Rounded +fmax3263 fma 1 '123456789' 0.9 -> '123456789' Inexact Rounded +fmax3264 fma 1 '123456789' 0.99999 -> '123456789' Inexact Rounded +fmax3265 fma 1 '123456789' 0.999999999 -> '123456789' Inexact Rounded +fmax3266 fma 1 '123456789' 1 -> '123456790' +fmax3267 fma 1 '123456789' 1.00000001 -> '123456790' Inexact Rounded +fmax3268 fma 1 '123456789' 1.00001 -> '123456790' Inexact Rounded +fmax3269 fma 1 '123456789' 1.1 -> '123456790' Inexact Rounded + +-- input preparation tests (operands should not be rounded) +precision: 3 +rounding: half_up + +fmax3270 fma 1 '12345678900000' 9999999999999 -> '2.23E+13' Inexact Rounded +fmax3271 fma 1 '9999999999999' 12345678900000 -> '2.23E+13' Inexact Rounded + +fmax3272 fma 1 '12E+3' '3444' -> '1.54E+4' Inexact Rounded +fmax3273 fma 1 '12E+3' '3446' -> '1.54E+4' Inexact Rounded +fmax3274 fma 1 '12E+3' '3449.9' -> '1.54E+4' Inexact Rounded +fmax3275 fma 1 '12E+3' '3450.0' -> '1.55E+4' Inexact Rounded +fmax3276 fma 1 '12E+3' '3450.1' -> '1.55E+4' Inexact Rounded +fmax3277 fma 1 '12E+3' '3454' -> '1.55E+4' Inexact Rounded +fmax3278 fma 1 '12E+3' '3456' -> '1.55E+4' Inexact Rounded + +fmax3281 fma 1 '3444' '12E+3' -> '1.54E+4' Inexact Rounded +fmax3282 fma 1 '3446' '12E+3' -> '1.54E+4' Inexact Rounded +fmax3283 fma 1 '3449.9' '12E+3' -> '1.54E+4' Inexact Rounded +fmax3284 fma 1 '3450.0' '12E+3' -> '1.55E+4' Inexact Rounded +fmax3285 fma 1 '3450.1' '12E+3' -> '1.55E+4' Inexact Rounded +fmax3286 fma 1 '3454' '12E+3' -> '1.55E+4' Inexact Rounded +fmax3287 fma 1 '3456' '12E+3' -> '1.55E+4' Inexact Rounded + +rounding: half_down +fmax3291 fma 1 '3444' '12E+3' -> '1.54E+4' Inexact Rounded +fmax3292 fma 1 '3446' '12E+3' -> '1.54E+4' Inexact Rounded +fmax3293 fma 1 '3449.9' '12E+3' -> '1.54E+4' Inexact Rounded +fmax3294 fma 1 '3450.0' '12E+3' -> '1.54E+4' Inexact Rounded +fmax3295 fma 1 '3450.1' '12E+3' -> '1.55E+4' Inexact Rounded +fmax3296 fma 1 '3454' '12E+3' -> '1.55E+4' Inexact Rounded +fmax3297 fma 1 '3456' '12E+3' -> '1.55E+4' Inexact Rounded + +-- 1 in last place tests +rounding: half_up +fmax3301 fma 1 -1 1 -> 0 +fmax3302 fma 1 0 1 -> 1 +fmax3303 fma 1 1 1 -> 2 +fmax3304 fma 1 12 1 -> 13 +fmax3305 fma 1 98 1 -> 99 +fmax3306 fma 1 99 1 -> 100 +fmax3307 fma 1 100 1 -> 101 +fmax3308 fma 1 101 1 -> 102 +fmax3309 fma 1 -1 -1 -> -2 +fmax3310 fma 1 0 -1 -> -1 +fmax3311 fma 1 1 -1 -> 0 +fmax3312 fma 1 12 -1 -> 11 +fmax3313 fma 1 98 -1 -> 97 +fmax3314 fma 1 99 -1 -> 98 +fmax3315 fma 1 100 -1 -> 99 +fmax3316 fma 1 101 -1 -> 100 + +fmax3321 fma 1 -0.01 0.01 -> 0.00 +fmax3322 fma 1 0.00 0.01 -> 0.01 +fmax3323 fma 1 0.01 0.01 -> 0.02 +fmax3324 fma 1 0.12 0.01 -> 0.13 +fmax3325 fma 1 0.98 0.01 -> 0.99 +fmax3326 fma 1 0.99 0.01 -> 1.00 +fmax3327 fma 1 1.00 0.01 -> 1.01 +fmax3328 fma 1 1.01 0.01 -> 1.02 +fmax3329 fma 1 -0.01 -0.01 -> -0.02 +fmax3330 fma 1 0.00 -0.01 -> -0.01 +fmax3331 fma 1 0.01 -0.01 -> 0.00 +fmax3332 fma 1 0.12 -0.01 -> 0.11 +fmax3333 fma 1 0.98 -0.01 -> 0.97 +fmax3334 fma 1 0.99 -0.01 -> 0.98 +fmax3335 fma 1 1.00 -0.01 -> 0.99 +fmax3336 fma 1 1.01 -0.01 -> 1.00 + +-- some more cases where fma 1 ing 0 affects the coefficient +precision: 9 +fmax3340 fma 1 1E+3 0 -> 1000 +fmax3341 fma 1 1E+8 0 -> 100000000 +fmax3342 fma 1 1E+9 0 -> 1.00000000E+9 Rounded +fmax3343 fma 1 1E+10 0 -> 1.00000000E+10 Rounded +-- which simply follow from these cases ... +fmax3344 fma 1 1E+3 1 -> 1001 +fmax3345 fma 1 1E+8 1 -> 100000001 +fmax3346 fma 1 1E+9 1 -> 1.00000000E+9 Inexact Rounded +fmax3347 fma 1 1E+10 1 -> 1.00000000E+10 Inexact Rounded +fmax3348 fma 1 1E+3 7 -> 1007 +fmax3349 fma 1 1E+8 7 -> 100000007 +fmax3350 fma 1 1E+9 7 -> 1.00000001E+9 Inexact Rounded +fmax3351 fma 1 1E+10 7 -> 1.00000000E+10 Inexact Rounded + +-- tryzeros cases +precision: 7 +rounding: half_up +maxExponent: 92 +minexponent: -92 +fmax3361 fma 1 0E+50 10000E+1 -> 1.0000E+5 +fmax3362 fma 1 10000E+1 0E-50 -> 100000.0 Rounded +fmax3363 fma 1 10000E+1 10000E-50 -> 100000.0 Rounded Inexact +fmax3364 fma 1 9.999999E+92 -9.999999E+92 -> 0E+86 + +-- a curiosity from JSR 13 testing +rounding: half_down +precision: 10 +fmax3370 fma 1 99999999 81512 -> 100081511 +precision: 6 +fmax3371 fma 1 99999999 81512 -> 1.00082E+8 Rounded Inexact +rounding: half_up +precision: 10 +fmax3372 fma 1 99999999 81512 -> 100081511 +precision: 6 +fmax3373 fma 1 99999999 81512 -> 1.00082E+8 Rounded Inexact +rounding: half_even +precision: 10 +fmax3374 fma 1 99999999 81512 -> 100081511 +precision: 6 +fmax3375 fma 1 99999999 81512 -> 1.00082E+8 Rounded Inexact + +-- ulp replacement tests +precision: 9 +maxexponent: 999999 +minexponent: -999999 +fmax3400 fma 1 1 77e-7 -> 1.0000077 +fmax3401 fma 1 1 77e-8 -> 1.00000077 +fmax3402 fma 1 1 77e-9 -> 1.00000008 Inexact Rounded +fmax3403 fma 1 1 77e-10 -> 1.00000001 Inexact Rounded +fmax3404 fma 1 1 77e-11 -> 1.00000000 Inexact Rounded +fmax3405 fma 1 1 77e-12 -> 1.00000000 Inexact Rounded +fmax3406 fma 1 1 77e-999 -> 1.00000000 Inexact Rounded +fmax3407 fma 1 1 77e-999999 -> 1.00000000 Inexact Rounded + +fmax3410 fma 1 10 77e-7 -> 10.0000077 +fmax3411 fma 1 10 77e-8 -> 10.0000008 Inexact Rounded +fmax3412 fma 1 10 77e-9 -> 10.0000001 Inexact Rounded +fmax3413 fma 1 10 77e-10 -> 10.0000000 Inexact Rounded +fmax3414 fma 1 10 77e-11 -> 10.0000000 Inexact Rounded +fmax3415 fma 1 10 77e-12 -> 10.0000000 Inexact Rounded +fmax3416 fma 1 10 77e-999 -> 10.0000000 Inexact Rounded +fmax3417 fma 1 10 77e-999999 -> 10.0000000 Inexact Rounded + +fmax3420 fma 1 77e-7 1 -> 1.0000077 +fmax3421 fma 1 77e-8 1 -> 1.00000077 +fmax3422 fma 1 77e-9 1 -> 1.00000008 Inexact Rounded +fmax3423 fma 1 77e-10 1 -> 1.00000001 Inexact Rounded +fmax3424 fma 1 77e-11 1 -> 1.00000000 Inexact Rounded +fmax3425 fma 1 77e-12 1 -> 1.00000000 Inexact Rounded +fmax3426 fma 1 77e-999 1 -> 1.00000000 Inexact Rounded +fmax3427 fma 1 77e-999999 1 -> 1.00000000 Inexact Rounded + +fmax3430 fma 1 77e-7 10 -> 10.0000077 +fmax3431 fma 1 77e-8 10 -> 10.0000008 Inexact Rounded +fmax3432 fma 1 77e-9 10 -> 10.0000001 Inexact Rounded +fmax3433 fma 1 77e-10 10 -> 10.0000000 Inexact Rounded +fmax3434 fma 1 77e-11 10 -> 10.0000000 Inexact Rounded +fmax3435 fma 1 77e-12 10 -> 10.0000000 Inexact Rounded +fmax3436 fma 1 77e-999 10 -> 10.0000000 Inexact Rounded +fmax3437 fma 1 77e-999999 10 -> 10.0000000 Inexact Rounded + +-- negative ulps +fmax3440 fma 1 1 -77e-7 -> 0.9999923 +fmax3441 fma 1 1 -77e-8 -> 0.99999923 +fmax3442 fma 1 1 -77e-9 -> 0.999999923 +fmax3443 fma 1 1 -77e-10 -> 0.999999992 Inexact Rounded +fmax3444 fma 1 1 -77e-11 -> 0.999999999 Inexact Rounded +fmax3445 fma 1 1 -77e-12 -> 1.00000000 Inexact Rounded +fmax3446 fma 1 1 -77e-999 -> 1.00000000 Inexact Rounded +fmax3447 fma 1 1 -77e-999999 -> 1.00000000 Inexact Rounded + +fmax3450 fma 1 10 -77e-7 -> 9.9999923 +fmax3451 fma 1 10 -77e-8 -> 9.99999923 +fmax3452 fma 1 10 -77e-9 -> 9.99999992 Inexact Rounded +fmax3453 fma 1 10 -77e-10 -> 9.99999999 Inexact Rounded +fmax3454 fma 1 10 -77e-11 -> 10.0000000 Inexact Rounded +fmax3455 fma 1 10 -77e-12 -> 10.0000000 Inexact Rounded +fmax3456 fma 1 10 -77e-999 -> 10.0000000 Inexact Rounded +fmax3457 fma 1 10 -77e-999999 -> 10.0000000 Inexact Rounded + +fmax3460 fma 1 -77e-7 1 -> 0.9999923 +fmax3461 fma 1 -77e-8 1 -> 0.99999923 +fmax3462 fma 1 -77e-9 1 -> 0.999999923 +fmax3463 fma 1 -77e-10 1 -> 0.999999992 Inexact Rounded +fmax3464 fma 1 -77e-11 1 -> 0.999999999 Inexact Rounded +fmax3465 fma 1 -77e-12 1 -> 1.00000000 Inexact Rounded +fmax3466 fma 1 -77e-999 1 -> 1.00000000 Inexact Rounded +fmax3467 fma 1 -77e-999999 1 -> 1.00000000 Inexact Rounded + +fmax3470 fma 1 -77e-7 10 -> 9.9999923 +fmax3471 fma 1 -77e-8 10 -> 9.99999923 +fmax3472 fma 1 -77e-9 10 -> 9.99999992 Inexact Rounded +fmax3473 fma 1 -77e-10 10 -> 9.99999999 Inexact Rounded +fmax3474 fma 1 -77e-11 10 -> 10.0000000 Inexact Rounded +fmax3475 fma 1 -77e-12 10 -> 10.0000000 Inexact Rounded +fmax3476 fma 1 -77e-999 10 -> 10.0000000 Inexact Rounded +fmax3477 fma 1 -77e-999999 10 -> 10.0000000 Inexact Rounded + +-- negative ulps +fmax3480 fma 1 -1 77e-7 -> -0.9999923 +fmax3481 fma 1 -1 77e-8 -> -0.99999923 +fmax3482 fma 1 -1 77e-9 -> -0.999999923 +fmax3483 fma 1 -1 77e-10 -> -0.999999992 Inexact Rounded +fmax3484 fma 1 -1 77e-11 -> -0.999999999 Inexact Rounded +fmax3485 fma 1 -1 77e-12 -> -1.00000000 Inexact Rounded +fmax3486 fma 1 -1 77e-999 -> -1.00000000 Inexact Rounded +fmax3487 fma 1 -1 77e-999999 -> -1.00000000 Inexact Rounded + +fmax3490 fma 1 -10 77e-7 -> -9.9999923 +fmax3491 fma 1 -10 77e-8 -> -9.99999923 +fmax3492 fma 1 -10 77e-9 -> -9.99999992 Inexact Rounded +fmax3493 fma 1 -10 77e-10 -> -9.99999999 Inexact Rounded +fmax3494 fma 1 -10 77e-11 -> -10.0000000 Inexact Rounded +fmax3495 fma 1 -10 77e-12 -> -10.0000000 Inexact Rounded +fmax3496 fma 1 -10 77e-999 -> -10.0000000 Inexact Rounded +fmax3497 fma 1 -10 77e-999999 -> -10.0000000 Inexact Rounded + +fmax3500 fma 1 77e-7 -1 -> -0.9999923 +fmax3501 fma 1 77e-8 -1 -> -0.99999923 +fmax3502 fma 1 77e-9 -1 -> -0.999999923 +fmax3503 fma 1 77e-10 -1 -> -0.999999992 Inexact Rounded +fmax3504 fma 1 77e-11 -1 -> -0.999999999 Inexact Rounded +fmax3505 fma 1 77e-12 -1 -> -1.00000000 Inexact Rounded +fmax3506 fma 1 77e-999 -1 -> -1.00000000 Inexact Rounded +fmax3507 fma 1 77e-999999 -1 -> -1.00000000 Inexact Rounded + +fmax3510 fma 1 77e-7 -10 -> -9.9999923 +fmax3511 fma 1 77e-8 -10 -> -9.99999923 +fmax3512 fma 1 77e-9 -10 -> -9.99999992 Inexact Rounded +fmax3513 fma 1 77e-10 -10 -> -9.99999999 Inexact Rounded +fmax3514 fma 1 77e-11 -10 -> -10.0000000 Inexact Rounded +fmax3515 fma 1 77e-12 -10 -> -10.0000000 Inexact Rounded +fmax3516 fma 1 77e-999 -10 -> -10.0000000 Inexact Rounded +fmax3517 fma 1 77e-999999 -10 -> -10.0000000 Inexact Rounded + + +-- long operands +maxexponent: 999 +minexponent: -999 +precision: 9 +fmax3521 fma 1 12345678000 0 -> 1.23456780E+10 Rounded +fmax3522 fma 1 0 12345678000 -> 1.23456780E+10 Rounded +fmax3523 fma 1 1234567800 0 -> 1.23456780E+9 Rounded +fmax3524 fma 1 0 1234567800 -> 1.23456780E+9 Rounded +fmax3525 fma 1 1234567890 0 -> 1.23456789E+9 Rounded +fmax3526 fma 1 0 1234567890 -> 1.23456789E+9 Rounded +fmax3527 fma 1 1234567891 0 -> 1.23456789E+9 Inexact Rounded +fmax3528 fma 1 0 1234567891 -> 1.23456789E+9 Inexact Rounded +fmax3529 fma 1 12345678901 0 -> 1.23456789E+10 Inexact Rounded +fmax3530 fma 1 0 12345678901 -> 1.23456789E+10 Inexact Rounded +fmax3531 fma 1 1234567896 0 -> 1.23456790E+9 Inexact Rounded +fmax3532 fma 1 0 1234567896 -> 1.23456790E+9 Inexact Rounded + +precision: 15 +-- still checking +fmax3541 fma 1 12345678000 0 -> 12345678000 +fmax3542 fma 1 0 12345678000 -> 12345678000 +fmax3543 fma 1 1234567800 0 -> 1234567800 +fmax3544 fma 1 0 1234567800 -> 1234567800 +fmax3545 fma 1 1234567890 0 -> 1234567890 +fmax3546 fma 1 0 1234567890 -> 1234567890 +fmax3547 fma 1 1234567891 0 -> 1234567891 +fmax3548 fma 1 0 1234567891 -> 1234567891 +fmax3549 fma 1 12345678901 0 -> 12345678901 +fmax3550 fma 1 0 12345678901 -> 12345678901 +fmax3551 fma 1 1234567896 0 -> 1234567896 +fmax3552 fma 1 0 1234567896 -> 1234567896 + +-- verify a query +precision: 16 +maxExponent: +394 +minExponent: -393 +rounding: down +fmax3561 fma 1 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded +fmax3562 fma 1 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded +-- and using decimal64 bounds... +precision: 16 +maxExponent: +384 +minExponent: -383 +rounding: down +fmax3563 fma 1 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded +fmax3564 fma 1 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded + + +-- some more residue effects with extreme rounding +precision: 9 +rounding: half_up +fmax3601 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded +rounding: half_even +fmax3602 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded +rounding: half_down +fmax3603 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded +rounding: floor +fmax3604 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded +rounding: ceiling +fmax3605 fma 1 123456789 0.000001 -> 123456790 Inexact Rounded +rounding: up +fmax3606 fma 1 123456789 0.000001 -> 123456790 Inexact Rounded +rounding: down +fmax3607 fma 1 123456789 0.000001 -> 123456789 Inexact Rounded + +rounding: half_up +fmax3611 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded +rounding: half_even +fmax3612 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded +rounding: half_down +fmax3613 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded +rounding: floor +fmax3614 fma 1 123456789 -0.000001 -> 123456788 Inexact Rounded +rounding: ceiling +fmax3615 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded +rounding: up +fmax3616 fma 1 123456789 -0.000001 -> 123456789 Inexact Rounded +rounding: down +fmax3617 fma 1 123456789 -0.000001 -> 123456788 Inexact Rounded + +rounding: half_up +fmax3621 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded +rounding: half_even +fmax3622 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded +rounding: half_down +fmax3623 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded +rounding: floor +fmax3624 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded +rounding: ceiling +fmax3625 fma 1 123456789 0.499999 -> 123456790 Inexact Rounded +rounding: up +fmax3626 fma 1 123456789 0.499999 -> 123456790 Inexact Rounded +rounding: down +fmax3627 fma 1 123456789 0.499999 -> 123456789 Inexact Rounded + +rounding: half_up +fmax3631 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded +rounding: half_even +fmax3632 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded +rounding: half_down +fmax3633 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded +rounding: floor +fmax3634 fma 1 123456789 -0.499999 -> 123456788 Inexact Rounded +rounding: ceiling +fmax3635 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded +rounding: up +fmax3636 fma 1 123456789 -0.499999 -> 123456789 Inexact Rounded +rounding: down +fmax3637 fma 1 123456789 -0.499999 -> 123456788 Inexact Rounded + +rounding: half_up +fmax3641 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded +rounding: half_even +fmax3642 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded +rounding: half_down +fmax3643 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded +rounding: floor +fmax3644 fma 1 123456789 0.500001 -> 123456789 Inexact Rounded +rounding: ceiling +fmax3645 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded +rounding: up +fmax3646 fma 1 123456789 0.500001 -> 123456790 Inexact Rounded +rounding: down +fmax3647 fma 1 123456789 0.500001 -> 123456789 Inexact Rounded + +rounding: half_up +fmax3651 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded +rounding: half_even +fmax3652 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded +rounding: half_down +fmax3653 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded +rounding: floor +fmax3654 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded +rounding: ceiling +fmax3655 fma 1 123456789 -0.500001 -> 123456789 Inexact Rounded +rounding: up +fmax3656 fma 1 123456789 -0.500001 -> 123456789 Inexact Rounded +rounding: down +fmax3657 fma 1 123456789 -0.500001 -> 123456788 Inexact Rounded + +-- long operand triangle +rounding: half_up +precision: 37 +fmax3660 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538 +precision: 36 +fmax3661 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454 Inexact Rounded +precision: 35 +fmax3662 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345 Inexact Rounded +precision: 34 +fmax3663 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835 Inexact Rounded +precision: 33 +fmax3664 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483 Inexact Rounded +precision: 32 +fmax3665 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148 Inexact Rounded +precision: 31 +fmax3666 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115 Inexact Rounded +precision: 30 +fmax3667 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711 Inexact Rounded +precision: 29 +fmax3668 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371 Inexact Rounded +precision: 28 +fmax3669 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337 Inexact Rounded +precision: 27 +fmax3670 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234 Inexact Rounded +precision: 26 +fmax3671 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223 Inexact Rounded +precision: 25 +fmax3672 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922 Inexact Rounded +precision: 24 +fmax3673 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892 Inexact Rounded +precision: 23 +fmax3674 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389 Inexact Rounded +precision: 22 +fmax3675 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639 Inexact Rounded +precision: 21 +fmax3676 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364 Inexact Rounded +precision: 20 +fmax3677 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236 Inexact Rounded +precision: 19 +fmax3678 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024 Inexact Rounded +precision: 18 +fmax3679 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102 Inexact Rounded +precision: 17 +fmax3680 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110 Inexact Rounded +precision: 16 +fmax3681 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211 Inexact Rounded +precision: 15 +fmax3682 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221 Inexact Rounded +precision: 14 +fmax3683 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422 Inexact Rounded +precision: 13 +fmax3684 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42 Inexact Rounded +precision: 12 +fmax3685 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4 Inexact Rounded +precision: 11 +fmax3686 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166 Inexact Rounded +precision: 10 +fmax3687 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10 Inexact Rounded +precision: 9 +fmax3688 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10 Inexact Rounded +precision: 8 +fmax3689 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10 Inexact Rounded +precision: 7 +fmax3690 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10 Inexact Rounded +precision: 6 +fmax3691 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10 Inexact Rounded +precision: 5 +fmax3692 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10 Inexact Rounded +precision: 4 +fmax3693 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10 Inexact Rounded +precision: 3 +fmax3694 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10 Inexact Rounded +precision: 2 +fmax3695 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10 Inexact Rounded +precision: 1 +fmax3696 fma 1 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11 Inexact Rounded + +-- more zeros, etc. +rounding: half_up +precision: 9 + +fmax3701 fma 1 5.00 1.00E-3 -> 5.00100 +fmax3702 fma 1 00.00 0.000 -> 0.000 +fmax3703 fma 1 00.00 0E-3 -> 0.000 +fmax3704 fma 1 0E-3 00.00 -> 0.000 + +fmax3710 fma 1 0E+3 00.00 -> 0.00 +fmax3711 fma 1 0E+3 00.0 -> 0.0 +fmax3712 fma 1 0E+3 00. -> 0 +fmax3713 fma 1 0E+3 00.E+1 -> 0E+1 +fmax3714 fma 1 0E+3 00.E+2 -> 0E+2 +fmax3715 fma 1 0E+3 00.E+3 -> 0E+3 +fmax3716 fma 1 0E+3 00.E+4 -> 0E+3 +fmax3717 fma 1 0E+3 00.E+5 -> 0E+3 +fmax3718 fma 1 0E+3 -00.0 -> 0.0 +fmax3719 fma 1 0E+3 -00. -> 0 +fmax3731 fma 1 0E+3 -00.E+1 -> 0E+1 + +fmax3720 fma 1 00.00 0E+3 -> 0.00 +fmax3721 fma 1 00.0 0E+3 -> 0.0 +fmax3722 fma 1 00. 0E+3 -> 0 +fmax3723 fma 1 00.E+1 0E+3 -> 0E+1 +fmax3724 fma 1 00.E+2 0E+3 -> 0E+2 +fmax3725 fma 1 00.E+3 0E+3 -> 0E+3 +fmax3726 fma 1 00.E+4 0E+3 -> 0E+3 +fmax3727 fma 1 00.E+5 0E+3 -> 0E+3 +fmax3728 fma 1 -00.00 0E+3 -> 0.00 +fmax3729 fma 1 -00.0 0E+3 -> 0.0 +fmax3730 fma 1 -00. 0E+3 -> 0 + +fmax3732 fma 1 0 0 -> 0 +fmax3733 fma 1 0 -0 -> 0 +fmax3734 fma 1 -0 0 -> 0 +fmax3735 fma 1 -0 -0 -> -0 -- IEEE 854 special case + +fmax3736 fma 1 1 -1 -> 0 +fmax3737 fma 1 -1 -1 -> -2 +fmax3738 fma 1 1 1 -> 2 +fmax3739 fma 1 -1 1 -> 0 + +fmax3741 fma 1 0 -1 -> -1 +fmax3742 fma 1 -0 -1 -> -1 +fmax3743 fma 1 0 1 -> 1 +fmax3744 fma 1 -0 1 -> 1 +fmax3745 fma 1 -1 0 -> -1 +fmax3746 fma 1 -1 -0 -> -1 +fmax3747 fma 1 1 0 -> 1 +fmax3748 fma 1 1 -0 -> 1 + +fmax3751 fma 1 0.0 -1 -> -1.0 +fmax3752 fma 1 -0.0 -1 -> -1.0 +fmax3753 fma 1 0.0 1 -> 1.0 +fmax3754 fma 1 -0.0 1 -> 1.0 +fmax3755 fma 1 -1.0 0 -> -1.0 +fmax3756 fma 1 -1.0 -0 -> -1.0 +fmax3757 fma 1 1.0 0 -> 1.0 +fmax3758 fma 1 1.0 -0 -> 1.0 + +fmax3761 fma 1 0 -1.0 -> -1.0 +fmax3762 fma 1 -0 -1.0 -> -1.0 +fmax3763 fma 1 0 1.0 -> 1.0 +fmax3764 fma 1 -0 1.0 -> 1.0 +fmax3765 fma 1 -1 0.0 -> -1.0 +fmax3766 fma 1 -1 -0.0 -> -1.0 +fmax3767 fma 1 1 0.0 -> 1.0 +fmax3768 fma 1 1 -0.0 -> 1.0 + +fmax3771 fma 1 0.0 -1.0 -> -1.0 +fmax3772 fma 1 -0.0 -1.0 -> -1.0 +fmax3773 fma 1 0.0 1.0 -> 1.0 +fmax3774 fma 1 -0.0 1.0 -> 1.0 +fmax3775 fma 1 -1.0 0.0 -> -1.0 +fmax3776 fma 1 -1.0 -0.0 -> -1.0 +fmax3777 fma 1 1.0 0.0 -> 1.0 +fmax3778 fma 1 1.0 -0.0 -> 1.0 + +-- Specials +fmax3780 fma 1 -Inf -Inf -> -Infinity +fmax3781 fma 1 -Inf -1000 -> -Infinity +fmax3782 fma 1 -Inf -1 -> -Infinity +fmax3783 fma 1 -Inf -0 -> -Infinity +fmax3784 fma 1 -Inf 0 -> -Infinity +fmax3785 fma 1 -Inf 1 -> -Infinity +fmax3786 fma 1 -Inf 1000 -> -Infinity +fmax3787 fma 1 -1000 -Inf -> -Infinity +fmax3788 fma 1 -Inf -Inf -> -Infinity +fmax3789 fma 1 -1 -Inf -> -Infinity +fmax3790 fma 1 -0 -Inf -> -Infinity +fmax3791 fma 1 0 -Inf -> -Infinity +fmax3792 fma 1 1 -Inf -> -Infinity +fmax3793 fma 1 1000 -Inf -> -Infinity +fmax3794 fma 1 Inf -Inf -> NaN Invalid_operation + +fmax3800 fma 1 Inf -Inf -> NaN Invalid_operation +fmax3801 fma 1 Inf -1000 -> Infinity +fmax3802 fma 1 Inf -1 -> Infinity +fmax3803 fma 1 Inf -0 -> Infinity +fmax3804 fma 1 Inf 0 -> Infinity +fmax3805 fma 1 Inf 1 -> Infinity +fmax3806 fma 1 Inf 1000 -> Infinity +fmax3807 fma 1 Inf Inf -> Infinity +fmax3808 fma 1 -1000 Inf -> Infinity +fmax3809 fma 1 -Inf Inf -> NaN Invalid_operation +fmax3810 fma 1 -1 Inf -> Infinity +fmax3811 fma 1 -0 Inf -> Infinity +fmax3812 fma 1 0 Inf -> Infinity +fmax3813 fma 1 1 Inf -> Infinity +fmax3814 fma 1 1000 Inf -> Infinity +fmax3815 fma 1 Inf Inf -> Infinity + +fmax3821 fma 1 NaN -Inf -> NaN +fmax3822 fma 1 NaN -1000 -> NaN +fmax3823 fma 1 NaN -1 -> NaN +fmax3824 fma 1 NaN -0 -> NaN +fmax3825 fma 1 NaN 0 -> NaN +fmax3826 fma 1 NaN 1 -> NaN +fmax3827 fma 1 NaN 1000 -> NaN +fmax3828 fma 1 NaN Inf -> NaN +fmax3829 fma 1 NaN NaN -> NaN +fmax3830 fma 1 -Inf NaN -> NaN +fmax3831 fma 1 -1000 NaN -> NaN +fmax3832 fma 1 -1 NaN -> NaN +fmax3833 fma 1 -0 NaN -> NaN +fmax3834 fma 1 0 NaN -> NaN +fmax3835 fma 1 1 NaN -> NaN +fmax3836 fma 1 1000 NaN -> NaN +fmax3837 fma 1 Inf NaN -> NaN + +fmax3841 fma 1 sNaN -Inf -> NaN Invalid_operation +fmax3842 fma 1 sNaN -1000 -> NaN Invalid_operation +fmax3843 fma 1 sNaN -1 -> NaN Invalid_operation +fmax3844 fma 1 sNaN -0 -> NaN Invalid_operation +fmax3845 fma 1 sNaN 0 -> NaN Invalid_operation +fmax3846 fma 1 sNaN 1 -> NaN Invalid_operation +fmax3847 fma 1 sNaN 1000 -> NaN Invalid_operation +fmax3848 fma 1 sNaN NaN -> NaN Invalid_operation +fmax3849 fma 1 sNaN sNaN -> NaN Invalid_operation +fmax3850 fma 1 NaN sNaN -> NaN Invalid_operation +fmax3851 fma 1 -Inf sNaN -> NaN Invalid_operation +fmax3852 fma 1 -1000 sNaN -> NaN Invalid_operation +fmax3853 fma 1 -1 sNaN -> NaN Invalid_operation +fmax3854 fma 1 -0 sNaN -> NaN Invalid_operation +fmax3855 fma 1 0 sNaN -> NaN Invalid_operation +fmax3856 fma 1 1 sNaN -> NaN Invalid_operation +fmax3857 fma 1 1000 sNaN -> NaN Invalid_operation +fmax3858 fma 1 Inf sNaN -> NaN Invalid_operation +fmax3859 fma 1 NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +fmax3861 fma 1 NaN1 -Inf -> NaN1 +fmax3862 fma 1 +NaN2 -1000 -> NaN2 +fmax3863 fma 1 NaN3 1000 -> NaN3 +fmax3864 fma 1 NaN4 Inf -> NaN4 +fmax3865 fma 1 NaN5 +NaN6 -> NaN5 +fmax3866 fma 1 -Inf NaN7 -> NaN7 +fmax3867 fma 1 -1000 NaN8 -> NaN8 +fmax3868 fma 1 1000 NaN9 -> NaN9 +fmax3869 fma 1 Inf +NaN10 -> NaN10 +fmax3871 fma 1 sNaN11 -Inf -> NaN11 Invalid_operation +fmax3872 fma 1 sNaN12 -1000 -> NaN12 Invalid_operation +fmax3873 fma 1 sNaN13 1000 -> NaN13 Invalid_operation +fmax3874 fma 1 sNaN14 NaN17 -> NaN14 Invalid_operation +fmax3875 fma 1 sNaN15 sNaN18 -> NaN15 Invalid_operation +fmax3876 fma 1 NaN16 sNaN19 -> NaN19 Invalid_operation +fmax3877 fma 1 -Inf +sNaN20 -> NaN20 Invalid_operation +fmax3878 fma 1 -1000 sNaN21 -> NaN21 Invalid_operation +fmax3879 fma 1 1000 sNaN22 -> NaN22 Invalid_operation +fmax3880 fma 1 Inf sNaN23 -> NaN23 Invalid_operation +fmax3881 fma 1 +NaN25 +sNaN24 -> NaN24 Invalid_operation +fmax3882 fma 1 -NaN26 NaN28 -> -NaN26 +fmax3883 fma 1 -sNaN27 sNaN29 -> -NaN27 Invalid_operation +fmax3884 fma 1 1000 -NaN30 -> -NaN30 +fmax3885 fma 1 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- overflow, underflow and subnormal tests +maxexponent: 999999 +minexponent: -999999 +precision: 9 +fmax3890 fma 1 1E+999999 9E+999999 -> Infinity Overflow Inexact Rounded +fmax3891 fma 1 9E+999999 1E+999999 -> Infinity Overflow Inexact Rounded +fmax3892 fma 1 -1.1E-999999 1E-999999 -> -1E-1000000 Subnormal +fmax3893 fma 1 1E-999999 -1.1e-999999 -> -1E-1000000 Subnormal +fmax3894 fma 1 -1.0001E-999999 1E-999999 -> -1E-1000003 Subnormal +fmax3895 fma 1 1E-999999 -1.0001e-999999 -> -1E-1000003 Subnormal +fmax3896 fma 1 -1E+999999 -9E+999999 -> -Infinity Overflow Inexact Rounded +fmax3897 fma 1 -9E+999999 -1E+999999 -> -Infinity Overflow Inexact Rounded +fmax3898 fma 1 +1.1E-999999 -1E-999999 -> 1E-1000000 Subnormal +fmax3899 fma 1 -1E-999999 +1.1e-999999 -> 1E-1000000 Subnormal +fmax3900 fma 1 +1.0001E-999999 -1E-999999 -> 1E-1000003 Subnormal +fmax3901 fma 1 -1E-999999 +1.0001e-999999 -> 1E-1000003 Subnormal +fmax3902 fma 1 -1E+999999 +9E+999999 -> 8E+999999 +fmax3903 fma 1 -9E+999999 +1E+999999 -> -8E+999999 + +precision: 3 +fmax3904 fma 1 0 -9.999E+999999 -> -Infinity Inexact Overflow Rounded +fmax3905 fma 1 -9.999E+999999 0 -> -Infinity Inexact Overflow Rounded +fmax3906 fma 1 0 9.999E+999999 -> Infinity Inexact Overflow Rounded +fmax3907 fma 1 9.999E+999999 0 -> Infinity Inexact Overflow Rounded + +precision: 3 +maxexponent: 999 +minexponent: -999 +fmax3910 fma 1 1.00E-999 0 -> 1.00E-999 +fmax3911 fma 1 0.1E-999 0 -> 1E-1000 Subnormal +fmax3912 fma 1 0.10E-999 0 -> 1.0E-1000 Subnormal +fmax3913 fma 1 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded +fmax3914 fma 1 0.01E-999 0 -> 1E-1001 Subnormal +-- next is rounded to Nmin +fmax3915 fma 1 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow +fmax3916 fma 1 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow +fmax3917 fma 1 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow +fmax3918 fma 1 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +fmax3919 fma 1 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +fmax3920 fma 1 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped + +fmax3930 fma 1 -1.00E-999 0 -> -1.00E-999 +fmax3931 fma 1 -0.1E-999 0 -> -1E-1000 Subnormal +fmax3932 fma 1 -0.10E-999 0 -> -1.0E-1000 Subnormal +fmax3933 fma 1 -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded +fmax3934 fma 1 -0.01E-999 0 -> -1E-1001 Subnormal +-- next is rounded to Nmin +fmax3935 fma 1 -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow +fmax3936 fma 1 -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow +fmax3937 fma 1 -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow +fmax3938 fma 1 -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +fmax3939 fma 1 -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +fmax3940 fma 1 -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped + +-- some non-zero subnormal fma 1 s +fmax3950 fma 1 1.00E-999 0.1E-999 -> 1.10E-999 +fmax3951 fma 1 0.1E-999 0.1E-999 -> 2E-1000 Subnormal +fmax3952 fma 1 0.10E-999 0.1E-999 -> 2.0E-1000 Subnormal +fmax3953 fma 1 0.100E-999 0.1E-999 -> 2.0E-1000 Subnormal Rounded +fmax3954 fma 1 0.01E-999 0.1E-999 -> 1.1E-1000 Subnormal +fmax3955 fma 1 0.999E-999 0.1E-999 -> 1.10E-999 Inexact Rounded +fmax3956 fma 1 0.099E-999 0.1E-999 -> 2.0E-1000 Inexact Rounded Subnormal Underflow +fmax3957 fma 1 0.009E-999 0.1E-999 -> 1.1E-1000 Inexact Rounded Subnormal Underflow +fmax3958 fma 1 0.001E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow +fmax3959 fma 1 0.0009E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow +fmax3960 fma 1 0.0001E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow +-- negatives... +fmax3961 fma 1 1.00E-999 -0.1E-999 -> 9.0E-1000 Subnormal +fmax3962 fma 1 0.1E-999 -0.1E-999 -> 0E-1000 +fmax3963 fma 1 0.10E-999 -0.1E-999 -> 0E-1001 +fmax3964 fma 1 0.100E-999 -0.1E-999 -> 0E-1001 Clamped +fmax3965 fma 1 0.01E-999 -0.1E-999 -> -9E-1001 Subnormal +fmax3966 fma 1 0.999E-999 -0.1E-999 -> 9.0E-1000 Inexact Rounded Subnormal Underflow +fmax3967 fma 1 0.099E-999 -0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +fmax3968 fma 1 0.009E-999 -0.1E-999 -> -9E-1001 Inexact Rounded Subnormal Underflow +fmax3969 fma 1 0.001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow +fmax3970 fma 1 0.0009E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow +fmax3971 fma 1 0.0001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow + +-- some 'real' numbers +maxExponent: 384 +minExponent: -383 +precision: 8 +fmax3566 fma 1 99999061735E-394 0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal +precision: 7 +fmax3567 fma 1 99999061735E-394 0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal +precision: 6 +fmax3568 fma 1 99999061735E-394 0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal + +-- now the case where we can get underflow but the result is normal +-- [note this can't happen if the operands are also bounded, as we +-- cannot represent 1E-399, for example] +precision: 16 +rounding: half_up +maxExponent: 384 +minExponent: -383 + +fmax3571 fma 1 1E-383 0 -> 1E-383 +fmax3572 fma 1 1E-384 0 -> 1E-384 Subnormal +fmax3573 fma 1 1E-383 1E-384 -> 1.1E-383 +fmax3574 subtract 1E-383 1E-384 -> 9E-384 Subnormal + +-- Here we explore the boundary of rounding a subnormal to Nmin +fmax3575 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal +fmax3576 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal +fmax3577 subtract 1E-383 1E-399 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax3578 subtract 1E-383 1E-400 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax3579 subtract 1E-383 1E-401 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax3580 subtract 1E-383 1E-402 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded + +-- check for double-rounded subnormals +precision: 5 +maxexponent: 79 +minexponent: -79 +-- Add: lhs and rhs 0 +fmax31001 fma 1 1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31002 fma 1 1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31003 fma 1 1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31004 fma 1 0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31005 fma 1 0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31006 fma 1 0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow + +-- Add: lhs >> rhs and vice versa +fmax31011 fma 1 1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31012 fma 1 1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31013 fma 1 1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31014 fma 1 1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31015 fma 1 1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow +fmax31016 fma 1 1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow + +-- Add: lhs + rhs fma 1 ition carried out +fmax31021 fma 1 1.52443E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow +fmax31022 fma 1 1.52444E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow +fmax31023 fma 1 1.52445E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow +fmax31024 fma 1 1.00001E-80 1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow +fmax31025 fma 1 1.00001E-80 1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow +fmax31026 fma 1 1.00001E-80 1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow + +-- And for round down full and subnormal results +precision: 16 +maxExponent: +384 +minExponent: -383 +rounding: down + +fmax31100 fma 1 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact +fmax31101 fma 1 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact +fmax31103 fma 1 +1 -1e-383 -> 0.9999999999999999 Rounded Inexact +fmax31104 fma 1 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact +fmax31105 fma 1 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact +fmax31106 fma 1 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact +fmax31107 fma 1 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact +fmax31108 fma 1 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact +fmax31109 fma 1 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact + +rounding: ceiling +fmax31110 fma 1 -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact +fmax31111 fma 1 -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact +fmax31113 fma 1 -1 +1e-383 -> -0.9999999999999999 Rounded Inexact +fmax31114 fma 1 -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact +fmax31115 fma 1 -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact +fmax31116 fma 1 -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact +fmax31117 fma 1 -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact +fmax31118 fma 1 -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact +fmax31119 fma 1 -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact + +rounding: down +precision: 7 +maxExponent: +96 +minExponent: -95 +fmax31130 fma 1 1 -1e-200 -> 0.9999999 Rounded Inexact +-- subnormal boundary +fmax31131 fma 1 1.000000E-94 -1e-200 -> 9.999999E-95 Rounded Inexact +fmax31132 fma 1 1.000001E-95 -1e-200 -> 1.000000E-95 Rounded Inexact +fmax31133 fma 1 1.000000E-95 -1e-200 -> 9.99999E-96 Rounded Inexact Subnormal Underflow +fmax31134 fma 1 0.999999E-95 -1e-200 -> 9.99998E-96 Rounded Inexact Subnormal Underflow +fmax31135 fma 1 0.001000E-95 -1e-200 -> 9.99E-99 Rounded Inexact Subnormal Underflow +fmax31136 fma 1 0.000999E-95 -1e-200 -> 9.98E-99 Rounded Inexact Subnormal Underflow +fmax31137 fma 1 1.000000E-95 -1e-101 -> 9.99999E-96 Subnormal +fmax31138 fma 1 10000E-101 -1e-200 -> 9.999E-98 Subnormal Inexact Rounded Underflow +fmax31139 fma 1 1000E-101 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow +fmax31140 fma 1 100E-101 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow +fmax31141 fma 1 10E-101 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow +fmax31142 fma 1 1E-101 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped +fmax31143 fma 1 0E-101 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped +fmax31144 fma 1 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped + +fmax31151 fma 1 10000E-102 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow +fmax31152 fma 1 1000E-102 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow +fmax31153 fma 1 100E-102 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow +fmax31154 fma 1 10E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped +fmax31155 fma 1 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped +fmax31156 fma 1 0E-102 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped +fmax31157 fma 1 1E-103 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped + +fmax31160 fma 1 100E-105 -1e-101 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped +fmax31161 fma 1 100E-105 -1e-201 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped + +-- tests based on Gunnar Degnbol's edge case +precision: 15 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +fmax31200 fma 1 1E15 -0.5 -> 1.00000000000000E+15 Inexact Rounded +fmax31201 fma 1 1E15 -0.50 -> 1.00000000000000E+15 Inexact Rounded +fmax31210 fma 1 1E15 -0.51 -> 999999999999999 Inexact Rounded +fmax31211 fma 1 1E15 -0.501 -> 999999999999999 Inexact Rounded +fmax31212 fma 1 1E15 -0.5001 -> 999999999999999 Inexact Rounded +fmax31213 fma 1 1E15 -0.50001 -> 999999999999999 Inexact Rounded +fmax31214 fma 1 1E15 -0.500001 -> 999999999999999 Inexact Rounded +fmax31215 fma 1 1E15 -0.5000001 -> 999999999999999 Inexact Rounded +fmax31216 fma 1 1E15 -0.50000001 -> 999999999999999 Inexact Rounded +fmax31217 fma 1 1E15 -0.500000001 -> 999999999999999 Inexact Rounded +fmax31218 fma 1 1E15 -0.5000000001 -> 999999999999999 Inexact Rounded +fmax31219 fma 1 1E15 -0.50000000001 -> 999999999999999 Inexact Rounded +fmax31220 fma 1 1E15 -0.500000000001 -> 999999999999999 Inexact Rounded +fmax31221 fma 1 1E15 -0.5000000000001 -> 999999999999999 Inexact Rounded +fmax31222 fma 1 1E15 -0.50000000000001 -> 999999999999999 Inexact Rounded +fmax31223 fma 1 1E15 -0.500000000000001 -> 999999999999999 Inexact Rounded +fmax31224 fma 1 1E15 -0.5000000000000001 -> 999999999999999 Inexact Rounded +fmax31225 fma 1 1E15 -0.5000000000000000 -> 1.00000000000000E+15 Inexact Rounded +fmax31230 fma 1 1E15 -5000000.000000001 -> 999999995000000 Inexact Rounded + +precision: 16 + +fmax31300 fma 1 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded +fmax31310 fma 1 1E16 -0.51 -> 9999999999999999 Inexact Rounded +fmax31311 fma 1 1E16 -0.501 -> 9999999999999999 Inexact Rounded +fmax31312 fma 1 1E16 -0.5001 -> 9999999999999999 Inexact Rounded +fmax31313 fma 1 1E16 -0.50001 -> 9999999999999999 Inexact Rounded +fmax31314 fma 1 1E16 -0.500001 -> 9999999999999999 Inexact Rounded +fmax31315 fma 1 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded +fmax31316 fma 1 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded +fmax31317 fma 1 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded +fmax31318 fma 1 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded +fmax31319 fma 1 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded +fmax31320 fma 1 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded +fmax31321 fma 1 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded +fmax31322 fma 1 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded +fmax31323 fma 1 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded +fmax31324 fma 1 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded +fmax31325 fma 1 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31326 fma 1 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31327 fma 1 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31328 fma 1 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31329 fma 1 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31330 fma 1 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31331 fma 1 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31332 fma 1 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31333 fma 1 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31334 fma 1 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31335 fma 1 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded +fmax31336 fma 1 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded +fmax31337 fma 1 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded +fmax31338 fma 1 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded +fmax31339 fma 1 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded + +fmax31340 fma 1 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded +fmax31341 fma 1 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded + +fmax31349 fma 1 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded +fmax31350 fma 1 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded +fmax31351 fma 1 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded +fmax31352 fma 1 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded +fmax31353 fma 1 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded +fmax31354 fma 1 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded +fmax31355 fma 1 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded +fmax31356 fma 1 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded +fmax31357 fma 1 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded +fmax31358 fma 1 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded +fmax31359 fma 1 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded +fmax31360 fma 1 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded +fmax31361 fma 1 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded +fmax31362 fma 1 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded +fmax31363 fma 1 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded +fmax31364 fma 1 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded +fmax31365 fma 1 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31367 fma 1 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31368 fma 1 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31369 fma 1 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31370 fma 1 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31371 fma 1 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31372 fma 1 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31373 fma 1 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31374 fma 1 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31375 fma 1 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded +fmax31376 fma 1 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded +fmax31377 fma 1 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded +fmax31378 fma 1 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded +fmax31379 fma 1 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded +fmax31380 fma 1 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded +fmax31381 fma 1 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded +fmax31382 fma 1 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31383 fma 1 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31384 fma 1 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31385 fma 1 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31386 fma 1 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31387 fma 1 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31388 fma 1 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31389 fma 1 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31390 fma 1 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31391 fma 1 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded +fmax31392 fma 1 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded +fmax31393 fma 1 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded +fmax31394 fma 1 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded +fmax31395 fma 1 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded +fmax31396 fma 1 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded + +-- More GD edge cases, where difference between the unadjusted +-- exponents is larger than the maximum precision and one side is 0 +precision: 15 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +fmax31400 fma 1 0 1.23456789012345 -> 1.23456789012345 +fmax31401 fma 1 0 1.23456789012345E-1 -> 0.123456789012345 +fmax31402 fma 1 0 1.23456789012345E-2 -> 0.0123456789012345 +fmax31403 fma 1 0 1.23456789012345E-3 -> 0.00123456789012345 +fmax31404 fma 1 0 1.23456789012345E-4 -> 0.000123456789012345 +fmax31405 fma 1 0 1.23456789012345E-5 -> 0.0000123456789012345 +fmax31406 fma 1 0 1.23456789012345E-6 -> 0.00000123456789012345 +fmax31407 fma 1 0 1.23456789012345E-7 -> 1.23456789012345E-7 +fmax31408 fma 1 0 1.23456789012345E-8 -> 1.23456789012345E-8 +fmax31409 fma 1 0 1.23456789012345E-9 -> 1.23456789012345E-9 +fmax31410 fma 1 0 1.23456789012345E-10 -> 1.23456789012345E-10 +fmax31411 fma 1 0 1.23456789012345E-11 -> 1.23456789012345E-11 +fmax31412 fma 1 0 1.23456789012345E-12 -> 1.23456789012345E-12 +fmax31413 fma 1 0 1.23456789012345E-13 -> 1.23456789012345E-13 +fmax31414 fma 1 0 1.23456789012345E-14 -> 1.23456789012345E-14 +fmax31415 fma 1 0 1.23456789012345E-15 -> 1.23456789012345E-15 +fmax31416 fma 1 0 1.23456789012345E-16 -> 1.23456789012345E-16 +fmax31417 fma 1 0 1.23456789012345E-17 -> 1.23456789012345E-17 +fmax31418 fma 1 0 1.23456789012345E-18 -> 1.23456789012345E-18 +fmax31419 fma 1 0 1.23456789012345E-19 -> 1.23456789012345E-19 + +-- same, precision 16.. +precision: 16 +fmax31420 fma 1 0 1.123456789012345 -> 1.123456789012345 +fmax31421 fma 1 0 1.123456789012345E-1 -> 0.1123456789012345 +fmax31422 fma 1 0 1.123456789012345E-2 -> 0.01123456789012345 +fmax31423 fma 1 0 1.123456789012345E-3 -> 0.001123456789012345 +fmax31424 fma 1 0 1.123456789012345E-4 -> 0.0001123456789012345 +fmax31425 fma 1 0 1.123456789012345E-5 -> 0.00001123456789012345 +fmax31426 fma 1 0 1.123456789012345E-6 -> 0.000001123456789012345 +fmax31427 fma 1 0 1.123456789012345E-7 -> 1.123456789012345E-7 +fmax31428 fma 1 0 1.123456789012345E-8 -> 1.123456789012345E-8 +fmax31429 fma 1 0 1.123456789012345E-9 -> 1.123456789012345E-9 +fmax31430 fma 1 0 1.123456789012345E-10 -> 1.123456789012345E-10 +fmax31431 fma 1 0 1.123456789012345E-11 -> 1.123456789012345E-11 +fmax31432 fma 1 0 1.123456789012345E-12 -> 1.123456789012345E-12 +fmax31433 fma 1 0 1.123456789012345E-13 -> 1.123456789012345E-13 +fmax31434 fma 1 0 1.123456789012345E-14 -> 1.123456789012345E-14 +fmax31435 fma 1 0 1.123456789012345E-15 -> 1.123456789012345E-15 +fmax31436 fma 1 0 1.123456789012345E-16 -> 1.123456789012345E-16 +fmax31437 fma 1 0 1.123456789012345E-17 -> 1.123456789012345E-17 +fmax31438 fma 1 0 1.123456789012345E-18 -> 1.123456789012345E-18 +fmax31439 fma 1 0 1.123456789012345E-19 -> 1.123456789012345E-19 + +-- same, reversed 0 +fmax31440 fma 1 1.123456789012345 0 -> 1.123456789012345 +fmax31441 fma 1 1.123456789012345E-1 0 -> 0.1123456789012345 +fmax31442 fma 1 1.123456789012345E-2 0 -> 0.01123456789012345 +fmax31443 fma 1 1.123456789012345E-3 0 -> 0.001123456789012345 +fmax31444 fma 1 1.123456789012345E-4 0 -> 0.0001123456789012345 +fmax31445 fma 1 1.123456789012345E-5 0 -> 0.00001123456789012345 +fmax31446 fma 1 1.123456789012345E-6 0 -> 0.000001123456789012345 +fmax31447 fma 1 1.123456789012345E-7 0 -> 1.123456789012345E-7 +fmax31448 fma 1 1.123456789012345E-8 0 -> 1.123456789012345E-8 +fmax31449 fma 1 1.123456789012345E-9 0 -> 1.123456789012345E-9 +fmax31450 fma 1 1.123456789012345E-10 0 -> 1.123456789012345E-10 +fmax31451 fma 1 1.123456789012345E-11 0 -> 1.123456789012345E-11 +fmax31452 fma 1 1.123456789012345E-12 0 -> 1.123456789012345E-12 +fmax31453 fma 1 1.123456789012345E-13 0 -> 1.123456789012345E-13 +fmax31454 fma 1 1.123456789012345E-14 0 -> 1.123456789012345E-14 +fmax31455 fma 1 1.123456789012345E-15 0 -> 1.123456789012345E-15 +fmax31456 fma 1 1.123456789012345E-16 0 -> 1.123456789012345E-16 +fmax31457 fma 1 1.123456789012345E-17 0 -> 1.123456789012345E-17 +fmax31458 fma 1 1.123456789012345E-18 0 -> 1.123456789012345E-18 +fmax31459 fma 1 1.123456789012345E-19 0 -> 1.123456789012345E-19 + +-- same, Es on the 0 +fmax31460 fma 1 1.123456789012345 0E-0 -> 1.123456789012345 +fmax31461 fma 1 1.123456789012345 0E-1 -> 1.123456789012345 +fmax31462 fma 1 1.123456789012345 0E-2 -> 1.123456789012345 +fmax31463 fma 1 1.123456789012345 0E-3 -> 1.123456789012345 +fmax31464 fma 1 1.123456789012345 0E-4 -> 1.123456789012345 +fmax31465 fma 1 1.123456789012345 0E-5 -> 1.123456789012345 +fmax31466 fma 1 1.123456789012345 0E-6 -> 1.123456789012345 +fmax31467 fma 1 1.123456789012345 0E-7 -> 1.123456789012345 +fmax31468 fma 1 1.123456789012345 0E-8 -> 1.123456789012345 +fmax31469 fma 1 1.123456789012345 0E-9 -> 1.123456789012345 +fmax31470 fma 1 1.123456789012345 0E-10 -> 1.123456789012345 +fmax31471 fma 1 1.123456789012345 0E-11 -> 1.123456789012345 +fmax31472 fma 1 1.123456789012345 0E-12 -> 1.123456789012345 +fmax31473 fma 1 1.123456789012345 0E-13 -> 1.123456789012345 +fmax31474 fma 1 1.123456789012345 0E-14 -> 1.123456789012345 +fmax31475 fma 1 1.123456789012345 0E-15 -> 1.123456789012345 +-- next four flag Rounded because the 0 extends the result +fmax31476 fma 1 1.123456789012345 0E-16 -> 1.123456789012345 Rounded +fmax31477 fma 1 1.123456789012345 0E-17 -> 1.123456789012345 Rounded +fmax31478 fma 1 1.123456789012345 0E-18 -> 1.123456789012345 Rounded +fmax31479 fma 1 1.123456789012345 0E-19 -> 1.123456789012345 Rounded + +-- sum of two opposite-sign operands is exactly 0 and floor => -0 +precision: 16 +maxExponent: 384 +minexponent: -383 + +rounding: half_up +-- exact zeros from zeros +fmax31500 fma 1 0 0E-19 -> 0E-19 +fmax31501 fma 1 -0 0E-19 -> 0E-19 +fmax31502 fma 1 0 -0E-19 -> 0E-19 +fmax31503 fma 1 -0 -0E-19 -> -0E-19 +fmax31504 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax31505 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax31506 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax31507 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax31511 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31512 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31513 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31514 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax31515 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31516 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax31517 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax31518 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: half_down +-- exact zeros from zeros +fmax31520 fma 1 0 0E-19 -> 0E-19 +fmax31521 fma 1 -0 0E-19 -> 0E-19 +fmax31522 fma 1 0 -0E-19 -> 0E-19 +fmax31523 fma 1 -0 -0E-19 -> -0E-19 +fmax31524 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax31525 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax31526 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax31527 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax31531 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31532 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31533 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31534 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax31535 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31536 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax31537 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax31538 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: half_even +-- exact zeros from zeros +fmax31540 fma 1 0 0E-19 -> 0E-19 +fmax31541 fma 1 -0 0E-19 -> 0E-19 +fmax31542 fma 1 0 -0E-19 -> 0E-19 +fmax31543 fma 1 -0 -0E-19 -> -0E-19 +fmax31544 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax31545 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax31546 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax31547 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax31551 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31552 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31553 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31554 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax31555 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31556 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax31557 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax31558 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: up +-- exact zeros from zeros +fmax31560 fma 1 0 0E-19 -> 0E-19 +fmax31561 fma 1 -0 0E-19 -> 0E-19 +fmax31562 fma 1 0 -0E-19 -> 0E-19 +fmax31563 fma 1 -0 -0E-19 -> -0E-19 +fmax31564 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax31565 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax31566 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax31567 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax31571 fma 1 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax31572 fma 1 -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax31573 fma 1 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +fmax31574 fma 1 -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +-- some exact zeros from non-zeros +fmax31575 fma 1 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax31576 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax31577 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax31578 fma 1 -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow + +rounding: down +-- exact zeros from zeros +fmax31580 fma 1 0 0E-19 -> 0E-19 +fmax31581 fma 1 -0 0E-19 -> 0E-19 +fmax31582 fma 1 0 -0E-19 -> 0E-19 +fmax31583 fma 1 -0 -0E-19 -> -0E-19 +fmax31584 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax31585 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax31586 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax31587 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax31591 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31592 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31593 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31594 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax31595 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31596 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax31597 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax31598 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: ceiling +-- exact zeros from zeros +fmax31600 fma 1 0 0E-19 -> 0E-19 +fmax31601 fma 1 -0 0E-19 -> 0E-19 +fmax31602 fma 1 0 -0E-19 -> 0E-19 +fmax31603 fma 1 -0 -0E-19 -> -0E-19 +fmax31604 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax31605 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax31606 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax31607 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax31611 fma 1 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax31612 fma 1 -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax31613 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31614 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax31615 fma 1 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax31616 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax31617 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax31618 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +-- and the extra-special ugly case; unusual minuses marked by -- * +rounding: floor +-- exact zeros from zeros +fmax31620 fma 1 0 0E-19 -> 0E-19 +fmax31621 fma 1 -0 0E-19 -> -0E-19 -- * +fmax31622 fma 1 0 -0E-19 -> -0E-19 -- * +fmax31623 fma 1 -0 -0E-19 -> -0E-19 +fmax31624 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax31625 fma 1 -0E-400 0E-19 -> -0E-398 Clamped -- * +fmax31626 fma 1 0E-400 -0E-19 -> -0E-398 Clamped -- * +fmax31627 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax31631 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31632 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31633 fma 1 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +fmax31634 fma 1 -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +-- some exact zeros from non-zeros +fmax31635 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax31636 fma 1 -1E-401 1E-401 -> -0E-398 Clamped -- * +fmax31637 fma 1 1E-401 -1E-401 -> -0E-398 Clamped -- * +fmax31638 fma 1 -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow + +-- BigDecimal problem testcases 2006.01.23 +precision: 16 +maxExponent: 384 +minexponent: -383 + +rounding: down +precision: 7 +fmax31651 fma 1 10001E+2 -2E+1 -> 1.00008E+6 +precision: 6 +fmax31652 fma 1 10001E+2 -2E+1 -> 1.00008E+6 +precision: 5 +fmax31653 fma 1 10001E+2 -2E+1 -> 1.0000E+6 Inexact Rounded +precision: 4 +fmax31654 fma 1 10001E+2 -2E+1 -> 1.000E+6 Inexact Rounded +precision: 3 +fmax31655 fma 1 10001E+2 -2E+1 -> 1.00E+6 Inexact Rounded +precision: 2 +fmax31656 fma 1 10001E+2 -2E+1 -> 1.0E+6 Inexact Rounded +precision: 1 +fmax31657 fma 1 10001E+2 -2E+1 -> 1E+6 Inexact Rounded + +rounding: half_even +precision: 7 +fmax31661 fma 1 10001E+2 -2E+1 -> 1.00008E+6 +precision: 6 +fmax31662 fma 1 10001E+2 -2E+1 -> 1.00008E+6 +precision: 5 +fmax31663 fma 1 10001E+2 -2E+1 -> 1.0001E+6 Inexact Rounded +precision: 4 +fmax31664 fma 1 10001E+2 -2E+1 -> 1.000E+6 Inexact Rounded +precision: 3 +fmax31665 fma 1 10001E+2 -2E+1 -> 1.00E+6 Inexact Rounded +precision: 2 +fmax31666 fma 1 10001E+2 -2E+1 -> 1.0E+6 Inexact Rounded +precision: 1 +fmax31667 fma 1 10001E+2 -2E+1 -> 1E+6 Inexact Rounded + +rounding: up +precision: 7 +fmax31671 fma 1 10001E+2 -2E+1 -> 1.00008E+6 +precision: 6 +fmax31672 fma 1 10001E+2 -2E+1 -> 1.00008E+6 +precision: 5 +fmax31673 fma 1 10001E+2 -2E+1 -> 1.0001E+6 Inexact Rounded +precision: 4 +fmax31674 fma 1 10001E+2 -2E+1 -> 1.001E+6 Inexact Rounded +precision: 3 +fmax31675 fma 1 10001E+2 -2E+1 -> 1.01E+6 Inexact Rounded +precision: 2 +fmax31676 fma 1 10001E+2 -2E+1 -> 1.1E+6 Inexact Rounded +precision: 1 +fmax31677 fma 1 10001E+2 -2E+1 -> 2E+6 Inexact Rounded + +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 +-- Examples from SQL proposal (Krishna Kulkarni) +fmax31701 fma 1 130E-2 120E-2 -> 2.50 +fmax31702 fma 1 130E-2 12E-1 -> 2.50 +fmax31703 fma 1 130E-2 1E0 -> 2.30 +fmax31704 fma 1 1E2 1E4 -> 1.01E+4 +fmax31705 subtract 130E-2 120E-2 -> 0.10 +fmax31706 subtract 130E-2 12E-1 -> 0.10 +fmax31707 subtract 130E-2 1E0 -> 0.30 +fmax31708 subtract 1E2 1E4 -> -9.9E+3 + +------------------------------------------------------------------------ +-- Same as above, using decimal64 default parameters -- +------------------------------------------------------------------------ +precision: 16 +rounding: half_even +maxExponent: 384 +minexponent: -383 + +-- [first group are 'quick confidence check'] +fmax36001 fma 1 1 1 -> 2 +fmax36002 fma 1 2 3 -> 5 +fmax36003 fma 1 '5.75' '3.3' -> 9.05 +fmax36004 fma 1 '5' '-3' -> 2 +fmax36005 fma 1 '-5' '-3' -> -8 +fmax36006 fma 1 '-7' '2.5' -> -4.5 +fmax36007 fma 1 '0.7' '0.3' -> 1.0 +fmax36008 fma 1 '1.25' '1.25' -> 2.50 +fmax36009 fma 1 '1.23456789' '1.00000000' -> '2.23456789' +fmax36010 fma 1 '1.23456789' '1.00000011' -> '2.23456800' + +fmax36011 fma 1 '0.44444444444444444' '0.55555555555555555' -> '1.000000000000000' Inexact Rounded +fmax36012 fma 1 '0.44444444444444440' '0.55555555555555555' -> '1.000000000000000' Inexact Rounded +fmax36013 fma 1 '0.44444444444444444' '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded +fmax36014 fma 1 '0.444444444444444449' '0' -> '0.4444444444444444' Inexact Rounded +fmax36015 fma 1 '0.4444444444444444499' '0' -> '0.4444444444444444' Inexact Rounded +fmax36016 fma 1 '0.44444444444444444999' '0' -> '0.4444444444444444' Inexact Rounded +fmax36017 fma 1 '0.44444444444444445000' '0' -> '0.4444444444444444' Inexact Rounded +fmax36018 fma 1 '0.44444444444444445001' '0' -> '0.4444444444444445' Inexact Rounded +fmax36019 fma 1 '0.4444444444444444501' '0' -> '0.4444444444444445' Inexact Rounded +fmax36020 fma 1 '0.444444444444444451' '0' -> '0.4444444444444445' Inexact Rounded + +fmax36021 fma 1 0 1 -> 1 +fmax36022 fma 1 1 1 -> 2 +fmax36023 fma 1 2 1 -> 3 +fmax36024 fma 1 3 1 -> 4 +fmax36025 fma 1 4 1 -> 5 +fmax36026 fma 1 5 1 -> 6 +fmax36027 fma 1 6 1 -> 7 +fmax36028 fma 1 7 1 -> 8 +fmax36029 fma 1 8 1 -> 9 +fmax36030 fma 1 9 1 -> 10 + +-- some carrying effects +fmax36031 fma 1 '0.9998' '0.0000' -> '0.9998' +fmax36032 fma 1 '0.9998' '0.0001' -> '0.9999' +fmax36033 fma 1 '0.9998' '0.0002' -> '1.0000' +fmax36034 fma 1 '0.9998' '0.0003' -> '1.0001' + +fmax36035 fma 1 '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +fmax36036 fma 1 '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +fmax36037 fma 1 '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +fmax36038 fma 1 '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded +fmax36039 fma 1 '700000' '10000e+16' -> '1.000000000000007E+20' Rounded + +-- symmetry: +fmax36040 fma 1 '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded +fmax36041 fma 1 '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded +fmax36042 fma 1 '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded +fmax36044 fma 1 '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded +fmax36045 fma 1 '10000e+16' '700000' -> '1.000000000000007E+20' Rounded + +fmax36046 fma 1 '10000e+9' '7' -> '10000000000007' +fmax36047 fma 1 '10000e+9' '70' -> '10000000000070' +fmax36048 fma 1 '10000e+9' '700' -> '10000000000700' +fmax36049 fma 1 '10000e+9' '7000' -> '10000000007000' +fmax36050 fma 1 '10000e+9' '70000' -> '10000000070000' +fmax36051 fma 1 '10000e+9' '700000' -> '10000000700000' + +-- examples from decarith +fmax36053 fma 1 '12' '7.00' -> '19.00' +fmax36054 fma 1 '1.3' '-1.07' -> '0.23' +fmax36055 fma 1 '1.3' '-1.30' -> '0.00' +fmax36056 fma 1 '1.3' '-2.07' -> '-0.77' +fmax36057 fma 1 '1E+2' '1E+4' -> '1.01E+4' + +-- from above +fmax36061 fma 1 1 '0.1' -> '1.1' +fmax36062 fma 1 1 '0.01' -> '1.01' +fmax36063 fma 1 1 '0.001' -> '1.001' +fmax36064 fma 1 1 '0.0001' -> '1.0001' +fmax36065 fma 1 1 '0.00001' -> '1.00001' +fmax36066 fma 1 1 '0.000001' -> '1.000001' +fmax36067 fma 1 1 '0.0000001' -> '1.0000001' +fmax36068 fma 1 1 '0.00000001' -> '1.00000001' + +-- some funny zeros [in case of bad signum] +fmax36070 fma 1 1 0 -> 1 +fmax36071 fma 1 1 0. -> 1 +fmax36072 fma 1 1 .0 -> 1.0 +fmax36073 fma 1 1 0.0 -> 1.0 +fmax36074 fma 1 1 0.00 -> 1.00 +fmax36075 fma 1 0 1 -> 1 +fmax36076 fma 1 0. 1 -> 1 +fmax36077 fma 1 .0 1 -> 1.0 +fmax36078 fma 1 0.0 1 -> 1.0 +fmax36079 fma 1 0.00 1 -> 1.00 + +-- some carries +fmax36080 fma 1 9999999999999998 1 -> 9999999999999999 +fmax36081 fma 1 9999999999999999 1 -> 1.000000000000000E+16 Rounded +fmax36082 fma 1 999999999999999 1 -> 1000000000000000 +fmax36083 fma 1 9999999999999 1 -> 10000000000000 +fmax36084 fma 1 99999999999 1 -> 100000000000 +fmax36085 fma 1 999999999 1 -> 1000000000 +fmax36086 fma 1 9999999 1 -> 10000000 +fmax36087 fma 1 99999 1 -> 100000 +fmax36088 fma 1 999 1 -> 1000 +fmax36089 fma 1 9 1 -> 10 + + +-- more LHS swaps +fmax36090 fma 1 '-56267E-10' 0 -> '-0.0000056267' +fmax36091 fma 1 '-56267E-6' 0 -> '-0.056267' +fmax36092 fma 1 '-56267E-5' 0 -> '-0.56267' +fmax36093 fma 1 '-56267E-4' 0 -> '-5.6267' +fmax36094 fma 1 '-56267E-3' 0 -> '-56.267' +fmax36095 fma 1 '-56267E-2' 0 -> '-562.67' +fmax36096 fma 1 '-56267E-1' 0 -> '-5626.7' +fmax36097 fma 1 '-56267E-0' 0 -> '-56267' +fmax36098 fma 1 '-5E-10' 0 -> '-5E-10' +fmax36099 fma 1 '-5E-7' 0 -> '-5E-7' +fmax36100 fma 1 '-5E-6' 0 -> '-0.000005' +fmax36101 fma 1 '-5E-5' 0 -> '-0.00005' +fmax36102 fma 1 '-5E-4' 0 -> '-0.0005' +fmax36103 fma 1 '-5E-1' 0 -> '-0.5' +fmax36104 fma 1 '-5E0' 0 -> '-5' +fmax36105 fma 1 '-5E1' 0 -> '-50' +fmax36106 fma 1 '-5E5' 0 -> '-500000' +fmax36107 fma 1 '-5E15' 0 -> '-5000000000000000' +fmax36108 fma 1 '-5E16' 0 -> '-5.000000000000000E+16' Rounded +fmax36109 fma 1 '-5E17' 0 -> '-5.000000000000000E+17' Rounded +fmax36110 fma 1 '-5E18' 0 -> '-5.000000000000000E+18' Rounded +fmax36111 fma 1 '-5E100' 0 -> '-5.000000000000000E+100' Rounded + +-- more RHS swaps +fmax36113 fma 1 0 '-56267E-10' -> '-0.0000056267' +fmax36114 fma 1 0 '-56267E-6' -> '-0.056267' +fmax36116 fma 1 0 '-56267E-5' -> '-0.56267' +fmax36117 fma 1 0 '-56267E-4' -> '-5.6267' +fmax36119 fma 1 0 '-56267E-3' -> '-56.267' +fmax36120 fma 1 0 '-56267E-2' -> '-562.67' +fmax36121 fma 1 0 '-56267E-1' -> '-5626.7' +fmax36122 fma 1 0 '-56267E-0' -> '-56267' +fmax36123 fma 1 0 '-5E-10' -> '-5E-10' +fmax36124 fma 1 0 '-5E-7' -> '-5E-7' +fmax36125 fma 1 0 '-5E-6' -> '-0.000005' +fmax36126 fma 1 0 '-5E-5' -> '-0.00005' +fmax36127 fma 1 0 '-5E-4' -> '-0.0005' +fmax36128 fma 1 0 '-5E-1' -> '-0.5' +fmax36129 fma 1 0 '-5E0' -> '-5' +fmax36130 fma 1 0 '-5E1' -> '-50' +fmax36131 fma 1 0 '-5E5' -> '-500000' +fmax36132 fma 1 0 '-5E15' -> '-5000000000000000' +fmax36133 fma 1 0 '-5E16' -> '-5.000000000000000E+16' Rounded +fmax36134 fma 1 0 '-5E17' -> '-5.000000000000000E+17' Rounded +fmax36135 fma 1 0 '-5E18' -> '-5.000000000000000E+18' Rounded +fmax36136 fma 1 0 '-5E100' -> '-5.000000000000000E+100' Rounded + +-- related +fmax36137 fma 1 1 '0E-19' -> '1.000000000000000' Rounded +fmax36138 fma 1 -1 '0E-19' -> '-1.000000000000000' Rounded +fmax36139 fma 1 '0E-19' 1 -> '1.000000000000000' Rounded +fmax36140 fma 1 '0E-19' -1 -> '-1.000000000000000' Rounded +fmax36141 fma 1 1E+11 0.0000 -> '100000000000.0000' +fmax36142 fma 1 1E+11 0.00000 -> '100000000000.0000' Rounded +fmax36143 fma 1 0.000 1E+12 -> '1000000000000.000' +fmax36144 fma 1 0.0000 1E+12 -> '1000000000000.000' Rounded + +-- [some of the next group are really constructor tests] +fmax36146 fma 1 '00.0' 0 -> '0.0' +fmax36147 fma 1 '0.00' 0 -> '0.00' +fmax36148 fma 1 0 '0.00' -> '0.00' +fmax36149 fma 1 0 '00.0' -> '0.0' +fmax36150 fma 1 '00.0' '0.00' -> '0.00' +fmax36151 fma 1 '0.00' '00.0' -> '0.00' +fmax36152 fma 1 '3' '.3' -> '3.3' +fmax36153 fma 1 '3.' '.3' -> '3.3' +fmax36154 fma 1 '3.0' '.3' -> '3.3' +fmax36155 fma 1 '3.00' '.3' -> '3.30' +fmax36156 fma 1 '3' '3' -> '6' +fmax36157 fma 1 '3' '+3' -> '6' +fmax36158 fma 1 '3' '-3' -> '0' +fmax36159 fma 1 '0.3' '-0.3' -> '0.0' +fmax36160 fma 1 '0.03' '-0.03' -> '0.00' + +-- try borderline precision, with carries, etc. +fmax36161 fma 1 '1E+13' '-1' -> '9999999999999' +fmax36162 fma 1 '1E+13' '1.11' -> '10000000000001.11' +fmax36163 fma 1 '1.11' '1E+13' -> '10000000000001.11' +fmax36164 fma 1 '-1' '1E+13' -> '9999999999999' +fmax36165 fma 1 '7E+13' '-1' -> '69999999999999' +fmax36166 fma 1 '7E+13' '1.11' -> '70000000000001.11' +fmax36167 fma 1 '1.11' '7E+13' -> '70000000000001.11' +fmax36168 fma 1 '-1' '7E+13' -> '69999999999999' + +-- 1234567890123456 1234567890123456 1 234567890123456 +fmax36170 fma 1 '0.4444444444444444' '0.5555555555555563' -> '1.000000000000001' Inexact Rounded +fmax36171 fma 1 '0.4444444444444444' '0.5555555555555562' -> '1.000000000000001' Inexact Rounded +fmax36172 fma 1 '0.4444444444444444' '0.5555555555555561' -> '1.000000000000000' Inexact Rounded +fmax36173 fma 1 '0.4444444444444444' '0.5555555555555560' -> '1.000000000000000' Inexact Rounded +fmax36174 fma 1 '0.4444444444444444' '0.5555555555555559' -> '1.000000000000000' Inexact Rounded +fmax36175 fma 1 '0.4444444444444444' '0.5555555555555558' -> '1.000000000000000' Inexact Rounded +fmax36176 fma 1 '0.4444444444444444' '0.5555555555555557' -> '1.000000000000000' Inexact Rounded +fmax36177 fma 1 '0.4444444444444444' '0.5555555555555556' -> '1.000000000000000' Rounded +fmax36178 fma 1 '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999' +fmax36179 fma 1 '0.4444444444444444' '0.5555555555555554' -> '0.9999999999999998' +fmax36180 fma 1 '0.4444444444444444' '0.5555555555555553' -> '0.9999999999999997' +fmax36181 fma 1 '0.4444444444444444' '0.5555555555555552' -> '0.9999999999999996' +fmax36182 fma 1 '0.4444444444444444' '0.5555555555555551' -> '0.9999999999999995' +fmax36183 fma 1 '0.4444444444444444' '0.5555555555555550' -> '0.9999999999999994' + +-- and some more, including residue effects and different roundings +rounding: half_up +fmax36200 fma 1 '6543210123456789' 0 -> '6543210123456789' +fmax36201 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +fmax36202 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +fmax36203 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +fmax36204 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +fmax36205 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +fmax36206 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +fmax36207 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +fmax36208 fma 1 '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded +fmax36209 fma 1 '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded +fmax36210 fma 1 '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded +fmax36211 fma 1 '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded +fmax36212 fma 1 '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded +fmax36213 fma 1 '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded +fmax36214 fma 1 '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded +fmax36215 fma 1 '6543210123456789' 0.999999 -> '6543210123456790' Inexact Rounded +fmax36216 fma 1 '6543210123456789' 1 -> '6543210123456790' +fmax36217 fma 1 '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded +fmax36218 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +fmax36219 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +rounding: half_even +fmax36220 fma 1 '6543210123456789' 0 -> '6543210123456789' +fmax36221 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +fmax36222 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +fmax36223 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +fmax36224 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +fmax36225 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +fmax36226 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +fmax36227 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +fmax36228 fma 1 '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded +fmax36229 fma 1 '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded +fmax36230 fma 1 '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded +fmax36231 fma 1 '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded +fmax36232 fma 1 '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded +fmax36233 fma 1 '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded +fmax36234 fma 1 '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded +fmax36235 fma 1 '6543210123456789' 0.999999 -> '6543210123456790' Inexact Rounded +fmax36236 fma 1 '6543210123456789' 1 -> '6543210123456790' +fmax36237 fma 1 '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded +fmax36238 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +fmax36239 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded +-- critical few with even bottom digit... +fmax36240 fma 1 '6543210123456788' 0.499999 -> '6543210123456788' Inexact Rounded +fmax36241 fma 1 '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded +fmax36242 fma 1 '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded + +rounding: down +fmax36250 fma 1 '6543210123456789' 0 -> '6543210123456789' +fmax36251 fma 1 '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +fmax36252 fma 1 '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +fmax36253 fma 1 '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +fmax36254 fma 1 '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +fmax36255 fma 1 '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +fmax36256 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +fmax36257 fma 1 '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +fmax36258 fma 1 '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded +fmax36259 fma 1 '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded +fmax36260 fma 1 '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded +fmax36261 fma 1 '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded +fmax36262 fma 1 '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded +fmax36263 fma 1 '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded +fmax36264 fma 1 '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded +fmax36265 fma 1 '6543210123456789' 0.999999 -> '6543210123456789' Inexact Rounded +fmax36266 fma 1 '6543210123456789' 1 -> '6543210123456790' +fmax36267 fma 1 '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded +fmax36268 fma 1 '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +fmax36269 fma 1 '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +-- 1 in last place tests +rounding: half_even +fmax36301 fma 1 -1 1 -> 0 +fmax36302 fma 1 0 1 -> 1 +fmax36303 fma 1 1 1 -> 2 +fmax36304 fma 1 12 1 -> 13 +fmax36305 fma 1 98 1 -> 99 +fmax36306 fma 1 99 1 -> 100 +fmax36307 fma 1 100 1 -> 101 +fmax36308 fma 1 101 1 -> 102 +fmax36309 fma 1 -1 -1 -> -2 +fmax36310 fma 1 0 -1 -> -1 +fmax36311 fma 1 1 -1 -> 0 +fmax36312 fma 1 12 -1 -> 11 +fmax36313 fma 1 98 -1 -> 97 +fmax36314 fma 1 99 -1 -> 98 +fmax36315 fma 1 100 -1 -> 99 +fmax36316 fma 1 101 -1 -> 100 + +fmax36321 fma 1 -0.01 0.01 -> 0.00 +fmax36322 fma 1 0.00 0.01 -> 0.01 +fmax36323 fma 1 0.01 0.01 -> 0.02 +fmax36324 fma 1 0.12 0.01 -> 0.13 +fmax36325 fma 1 0.98 0.01 -> 0.99 +fmax36326 fma 1 0.99 0.01 -> 1.00 +fmax36327 fma 1 1.00 0.01 -> 1.01 +fmax36328 fma 1 1.01 0.01 -> 1.02 +fmax36329 fma 1 -0.01 -0.01 -> -0.02 +fmax36330 fma 1 0.00 -0.01 -> -0.01 +fmax36331 fma 1 0.01 -0.01 -> 0.00 +fmax36332 fma 1 0.12 -0.01 -> 0.11 +fmax36333 fma 1 0.98 -0.01 -> 0.97 +fmax36334 fma 1 0.99 -0.01 -> 0.98 +fmax36335 fma 1 1.00 -0.01 -> 0.99 +fmax36336 fma 1 1.01 -0.01 -> 1.00 + +-- some more cases where fma 1 ing 0 affects the coefficient +fmax36340 fma 1 1E+3 0 -> 1000 +fmax36341 fma 1 1E+15 0 -> 1000000000000000 +fmax36342 fma 1 1E+16 0 -> 1.000000000000000E+16 Rounded +fmax36343 fma 1 1E+17 0 -> 1.000000000000000E+17 Rounded +-- which simply follow from these cases ... +fmax36344 fma 1 1E+3 1 -> 1001 +fmax36345 fma 1 1E+15 1 -> 1000000000000001 +fmax36346 fma 1 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded +fmax36347 fma 1 1E+17 1 -> 1.000000000000000E+17 Inexact Rounded +fmax36348 fma 1 1E+3 7 -> 1007 +fmax36349 fma 1 1E+15 7 -> 1000000000000007 +fmax36350 fma 1 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded +fmax36351 fma 1 1E+17 7 -> 1.000000000000000E+17 Inexact Rounded + +-- tryzeros cases +fmax36361 fma 1 0E+50 10000E+1 -> 1.0000E+5 +fmax36362 fma 1 10000E+1 0E-50 -> 100000.0000000000 Rounded +fmax36363 fma 1 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact +fmax36364 fma 1 12.34 0e-398 -> 12.34000000000000 Rounded + +-- ulp replacement tests +fmax36400 fma 1 1 77e-14 -> 1.00000000000077 +fmax36401 fma 1 1 77e-15 -> 1.000000000000077 +fmax36402 fma 1 1 77e-16 -> 1.000000000000008 Inexact Rounded +fmax36403 fma 1 1 77e-17 -> 1.000000000000001 Inexact Rounded +fmax36404 fma 1 1 77e-18 -> 1.000000000000000 Inexact Rounded +fmax36405 fma 1 1 77e-19 -> 1.000000000000000 Inexact Rounded +fmax36406 fma 1 1 77e-99 -> 1.000000000000000 Inexact Rounded + +fmax36410 fma 1 10 77e-14 -> 10.00000000000077 +fmax36411 fma 1 10 77e-15 -> 10.00000000000008 Inexact Rounded +fmax36412 fma 1 10 77e-16 -> 10.00000000000001 Inexact Rounded +fmax36413 fma 1 10 77e-17 -> 10.00000000000000 Inexact Rounded +fmax36414 fma 1 10 77e-18 -> 10.00000000000000 Inexact Rounded +fmax36415 fma 1 10 77e-19 -> 10.00000000000000 Inexact Rounded +fmax36416 fma 1 10 77e-99 -> 10.00000000000000 Inexact Rounded + +fmax36420 fma 1 77e-14 1 -> 1.00000000000077 +fmax36421 fma 1 77e-15 1 -> 1.000000000000077 +fmax36422 fma 1 77e-16 1 -> 1.000000000000008 Inexact Rounded +fmax36423 fma 1 77e-17 1 -> 1.000000000000001 Inexact Rounded +fmax36424 fma 1 77e-18 1 -> 1.000000000000000 Inexact Rounded +fmax36425 fma 1 77e-19 1 -> 1.000000000000000 Inexact Rounded +fmax36426 fma 1 77e-99 1 -> 1.000000000000000 Inexact Rounded + +fmax36430 fma 1 77e-14 10 -> 10.00000000000077 +fmax36431 fma 1 77e-15 10 -> 10.00000000000008 Inexact Rounded +fmax36432 fma 1 77e-16 10 -> 10.00000000000001 Inexact Rounded +fmax36433 fma 1 77e-17 10 -> 10.00000000000000 Inexact Rounded +fmax36434 fma 1 77e-18 10 -> 10.00000000000000 Inexact Rounded +fmax36435 fma 1 77e-19 10 -> 10.00000000000000 Inexact Rounded +fmax36436 fma 1 77e-99 10 -> 10.00000000000000 Inexact Rounded + +-- negative ulps +fmax36440 fma 1 1 -77e-14 -> 0.99999999999923 +fmax36441 fma 1 1 -77e-15 -> 0.999999999999923 +fmax36442 fma 1 1 -77e-16 -> 0.9999999999999923 +fmax36443 fma 1 1 -77e-17 -> 0.9999999999999992 Inexact Rounded +fmax36444 fma 1 1 -77e-18 -> 0.9999999999999999 Inexact Rounded +fmax36445 fma 1 1 -77e-19 -> 1.000000000000000 Inexact Rounded +fmax36446 fma 1 1 -77e-99 -> 1.000000000000000 Inexact Rounded + +fmax36450 fma 1 10 -77e-14 -> 9.99999999999923 +fmax36451 fma 1 10 -77e-15 -> 9.999999999999923 +fmax36452 fma 1 10 -77e-16 -> 9.999999999999992 Inexact Rounded +fmax36453 fma 1 10 -77e-17 -> 9.999999999999999 Inexact Rounded +fmax36454 fma 1 10 -77e-18 -> 10.00000000000000 Inexact Rounded +fmax36455 fma 1 10 -77e-19 -> 10.00000000000000 Inexact Rounded +fmax36456 fma 1 10 -77e-99 -> 10.00000000000000 Inexact Rounded + +fmax36460 fma 1 -77e-14 1 -> 0.99999999999923 +fmax36461 fma 1 -77e-15 1 -> 0.999999999999923 +fmax36462 fma 1 -77e-16 1 -> 0.9999999999999923 +fmax36463 fma 1 -77e-17 1 -> 0.9999999999999992 Inexact Rounded +fmax36464 fma 1 -77e-18 1 -> 0.9999999999999999 Inexact Rounded +fmax36465 fma 1 -77e-19 1 -> 1.000000000000000 Inexact Rounded +fmax36466 fma 1 -77e-99 1 -> 1.000000000000000 Inexact Rounded + +fmax36470 fma 1 -77e-14 10 -> 9.99999999999923 +fmax36471 fma 1 -77e-15 10 -> 9.999999999999923 +fmax36472 fma 1 -77e-16 10 -> 9.999999999999992 Inexact Rounded +fmax36473 fma 1 -77e-17 10 -> 9.999999999999999 Inexact Rounded +fmax36474 fma 1 -77e-18 10 -> 10.00000000000000 Inexact Rounded +fmax36475 fma 1 -77e-19 10 -> 10.00000000000000 Inexact Rounded +fmax36476 fma 1 -77e-99 10 -> 10.00000000000000 Inexact Rounded + +-- negative ulps +fmax36480 fma 1 -1 77e-14 -> -0.99999999999923 +fmax36481 fma 1 -1 77e-15 -> -0.999999999999923 +fmax36482 fma 1 -1 77e-16 -> -0.9999999999999923 +fmax36483 fma 1 -1 77e-17 -> -0.9999999999999992 Inexact Rounded +fmax36484 fma 1 -1 77e-18 -> -0.9999999999999999 Inexact Rounded +fmax36485 fma 1 -1 77e-19 -> -1.000000000000000 Inexact Rounded +fmax36486 fma 1 -1 77e-99 -> -1.000000000000000 Inexact Rounded + +fmax36490 fma 1 -10 77e-14 -> -9.99999999999923 +fmax36491 fma 1 -10 77e-15 -> -9.999999999999923 +fmax36492 fma 1 -10 77e-16 -> -9.999999999999992 Inexact Rounded +fmax36493 fma 1 -10 77e-17 -> -9.999999999999999 Inexact Rounded +fmax36494 fma 1 -10 77e-18 -> -10.00000000000000 Inexact Rounded +fmax36495 fma 1 -10 77e-19 -> -10.00000000000000 Inexact Rounded +fmax36496 fma 1 -10 77e-99 -> -10.00000000000000 Inexact Rounded + +fmax36500 fma 1 77e-14 -1 -> -0.99999999999923 +fmax36501 fma 1 77e-15 -1 -> -0.999999999999923 +fmax36502 fma 1 77e-16 -1 -> -0.9999999999999923 +fmax36503 fma 1 77e-17 -1 -> -0.9999999999999992 Inexact Rounded +fmax36504 fma 1 77e-18 -1 -> -0.9999999999999999 Inexact Rounded +fmax36505 fma 1 77e-19 -1 -> -1.000000000000000 Inexact Rounded +fmax36506 fma 1 77e-99 -1 -> -1.000000000000000 Inexact Rounded + +fmax36510 fma 1 77e-14 -10 -> -9.99999999999923 +fmax36511 fma 1 77e-15 -10 -> -9.999999999999923 +fmax36512 fma 1 77e-16 -10 -> -9.999999999999992 Inexact Rounded +fmax36513 fma 1 77e-17 -10 -> -9.999999999999999 Inexact Rounded +fmax36514 fma 1 77e-18 -10 -> -10.00000000000000 Inexact Rounded +fmax36515 fma 1 77e-19 -10 -> -10.00000000000000 Inexact Rounded +fmax36516 fma 1 77e-99 -10 -> -10.00000000000000 Inexact Rounded + + +-- long operands +fmax36521 fma 1 101234562345678000 0 -> 1.012345623456780E+17 Rounded +fmax36522 fma 1 0 101234562345678000 -> 1.012345623456780E+17 Rounded +fmax36523 fma 1 10123456234567800 0 -> 1.012345623456780E+16 Rounded +fmax36524 fma 1 0 10123456234567800 -> 1.012345623456780E+16 Rounded +fmax36525 fma 1 10123456234567890 0 -> 1.012345623456789E+16 Rounded +fmax36526 fma 1 0 10123456234567890 -> 1.012345623456789E+16 Rounded +fmax36527 fma 1 10123456234567891 0 -> 1.012345623456789E+16 Inexact Rounded +fmax36528 fma 1 0 10123456234567891 -> 1.012345623456789E+16 Inexact Rounded +fmax36529 fma 1 101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded +fmax36530 fma 1 0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded +fmax36531 fma 1 10123456234567896 0 -> 1.012345623456790E+16 Inexact Rounded +fmax36532 fma 1 0 10123456234567896 -> 1.012345623456790E+16 Inexact Rounded + +-- verify a query +rounding: down +fmax36561 fma 1 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded +fmax36562 fma 1 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded +-- and using decimal64 bounds... +rounding: down +fmax36563 fma 1 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded +fmax36564 fma 1 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded + +-- more zeros, etc. +rounding: half_even + +fmax36701 fma 1 5.00 1.00E-3 -> 5.00100 +fmax36702 fma 1 00.00 0.000 -> 0.000 +fmax36703 fma 1 00.00 0E-3 -> 0.000 +fmax36704 fma 1 0E-3 00.00 -> 0.000 + +fmax36710 fma 1 0E+3 00.00 -> 0.00 +fmax36711 fma 1 0E+3 00.0 -> 0.0 +fmax36712 fma 1 0E+3 00. -> 0 +fmax36713 fma 1 0E+3 00.E+1 -> 0E+1 +fmax36714 fma 1 0E+3 00.E+2 -> 0E+2 +fmax36715 fma 1 0E+3 00.E+3 -> 0E+3 +fmax36716 fma 1 0E+3 00.E+4 -> 0E+3 +fmax36717 fma 1 0E+3 00.E+5 -> 0E+3 +fmax36718 fma 1 0E+3 -00.0 -> 0.0 +fmax36719 fma 1 0E+3 -00. -> 0 +fmax36731 fma 1 0E+3 -00.E+1 -> 0E+1 + +fmax36720 fma 1 00.00 0E+3 -> 0.00 +fmax36721 fma 1 00.0 0E+3 -> 0.0 +fmax36722 fma 1 00. 0E+3 -> 0 +fmax36723 fma 1 00.E+1 0E+3 -> 0E+1 +fmax36724 fma 1 00.E+2 0E+3 -> 0E+2 +fmax36725 fma 1 00.E+3 0E+3 -> 0E+3 +fmax36726 fma 1 00.E+4 0E+3 -> 0E+3 +fmax36727 fma 1 00.E+5 0E+3 -> 0E+3 +fmax36728 fma 1 -00.00 0E+3 -> 0.00 +fmax36729 fma 1 -00.0 0E+3 -> 0.0 +fmax36730 fma 1 -00. 0E+3 -> 0 + +fmax36732 fma 1 0 0 -> 0 +fmax36733 fma 1 0 -0 -> 0 +fmax36734 fma 1 -0 0 -> 0 +fmax36735 fma 1 -0 -0 -> -0 -- IEEE 854 special case + +fmax36736 fma 1 1 -1 -> 0 +fmax36737 fma 1 -1 -1 -> -2 +fmax36738 fma 1 1 1 -> 2 +fmax36739 fma 1 -1 1 -> 0 + +fmax36741 fma 1 0 -1 -> -1 +fmax36742 fma 1 -0 -1 -> -1 +fmax36743 fma 1 0 1 -> 1 +fmax36744 fma 1 -0 1 -> 1 +fmax36745 fma 1 -1 0 -> -1 +fmax36746 fma 1 -1 -0 -> -1 +fmax36747 fma 1 1 0 -> 1 +fmax36748 fma 1 1 -0 -> 1 + +fmax36751 fma 1 0.0 -1 -> -1.0 +fmax36752 fma 1 -0.0 -1 -> -1.0 +fmax36753 fma 1 0.0 1 -> 1.0 +fmax36754 fma 1 -0.0 1 -> 1.0 +fmax36755 fma 1 -1.0 0 -> -1.0 +fmax36756 fma 1 -1.0 -0 -> -1.0 +fmax36757 fma 1 1.0 0 -> 1.0 +fmax36758 fma 1 1.0 -0 -> 1.0 + +fmax36761 fma 1 0 -1.0 -> -1.0 +fmax36762 fma 1 -0 -1.0 -> -1.0 +fmax36763 fma 1 0 1.0 -> 1.0 +fmax36764 fma 1 -0 1.0 -> 1.0 +fmax36765 fma 1 -1 0.0 -> -1.0 +fmax36766 fma 1 -1 -0.0 -> -1.0 +fmax36767 fma 1 1 0.0 -> 1.0 +fmax36768 fma 1 1 -0.0 -> 1.0 + +fmax36771 fma 1 0.0 -1.0 -> -1.0 +fmax36772 fma 1 -0.0 -1.0 -> -1.0 +fmax36773 fma 1 0.0 1.0 -> 1.0 +fmax36774 fma 1 -0.0 1.0 -> 1.0 +fmax36775 fma 1 -1.0 0.0 -> -1.0 +fmax36776 fma 1 -1.0 -0.0 -> -1.0 +fmax36777 fma 1 1.0 0.0 -> 1.0 +fmax36778 fma 1 1.0 -0.0 -> 1.0 + +-- Specials +fmax36780 fma 1 -Inf -Inf -> -Infinity +fmax36781 fma 1 -Inf -1000 -> -Infinity +fmax36782 fma 1 -Inf -1 -> -Infinity +fmax36783 fma 1 -Inf -0 -> -Infinity +fmax36784 fma 1 -Inf 0 -> -Infinity +fmax36785 fma 1 -Inf 1 -> -Infinity +fmax36786 fma 1 -Inf 1000 -> -Infinity +fmax36787 fma 1 -1000 -Inf -> -Infinity +fmax36788 fma 1 -Inf -Inf -> -Infinity +fmax36789 fma 1 -1 -Inf -> -Infinity +fmax36790 fma 1 -0 -Inf -> -Infinity +fmax36791 fma 1 0 -Inf -> -Infinity +fmax36792 fma 1 1 -Inf -> -Infinity +fmax36793 fma 1 1000 -Inf -> -Infinity +fmax36794 fma 1 Inf -Inf -> NaN Invalid_operation + +fmax36800 fma 1 Inf -Inf -> NaN Invalid_operation +fmax36801 fma 1 Inf -1000 -> Infinity +fmax36802 fma 1 Inf -1 -> Infinity +fmax36803 fma 1 Inf -0 -> Infinity +fmax36804 fma 1 Inf 0 -> Infinity +fmax36805 fma 1 Inf 1 -> Infinity +fmax36806 fma 1 Inf 1000 -> Infinity +fmax36807 fma 1 Inf Inf -> Infinity +fmax36808 fma 1 -1000 Inf -> Infinity +fmax36809 fma 1 -Inf Inf -> NaN Invalid_operation +fmax36810 fma 1 -1 Inf -> Infinity +fmax36811 fma 1 -0 Inf -> Infinity +fmax36812 fma 1 0 Inf -> Infinity +fmax36813 fma 1 1 Inf -> Infinity +fmax36814 fma 1 1000 Inf -> Infinity +fmax36815 fma 1 Inf Inf -> Infinity + +fmax36821 fma 1 NaN -Inf -> NaN +fmax36822 fma 1 NaN -1000 -> NaN +fmax36823 fma 1 NaN -1 -> NaN +fmax36824 fma 1 NaN -0 -> NaN +fmax36825 fma 1 NaN 0 -> NaN +fmax36826 fma 1 NaN 1 -> NaN +fmax36827 fma 1 NaN 1000 -> NaN +fmax36828 fma 1 NaN Inf -> NaN +fmax36829 fma 1 NaN NaN -> NaN +fmax36830 fma 1 -Inf NaN -> NaN +fmax36831 fma 1 -1000 NaN -> NaN +fmax36832 fma 1 -1 NaN -> NaN +fmax36833 fma 1 -0 NaN -> NaN +fmax36834 fma 1 0 NaN -> NaN +fmax36835 fma 1 1 NaN -> NaN +fmax36836 fma 1 1000 NaN -> NaN +fmax36837 fma 1 Inf NaN -> NaN + +fmax36841 fma 1 sNaN -Inf -> NaN Invalid_operation +fmax36842 fma 1 sNaN -1000 -> NaN Invalid_operation +fmax36843 fma 1 sNaN -1 -> NaN Invalid_operation +fmax36844 fma 1 sNaN -0 -> NaN Invalid_operation +fmax36845 fma 1 sNaN 0 -> NaN Invalid_operation +fmax36846 fma 1 sNaN 1 -> NaN Invalid_operation +fmax36847 fma 1 sNaN 1000 -> NaN Invalid_operation +fmax36848 fma 1 sNaN NaN -> NaN Invalid_operation +fmax36849 fma 1 sNaN sNaN -> NaN Invalid_operation +fmax36850 fma 1 NaN sNaN -> NaN Invalid_operation +fmax36851 fma 1 -Inf sNaN -> NaN Invalid_operation +fmax36852 fma 1 -1000 sNaN -> NaN Invalid_operation +fmax36853 fma 1 -1 sNaN -> NaN Invalid_operation +fmax36854 fma 1 -0 sNaN -> NaN Invalid_operation +fmax36855 fma 1 0 sNaN -> NaN Invalid_operation +fmax36856 fma 1 1 sNaN -> NaN Invalid_operation +fmax36857 fma 1 1000 sNaN -> NaN Invalid_operation +fmax36858 fma 1 Inf sNaN -> NaN Invalid_operation +fmax36859 fma 1 NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +fmax36861 fma 1 NaN1 -Inf -> NaN1 +fmax36862 fma 1 +NaN2 -1000 -> NaN2 +fmax36863 fma 1 NaN3 1000 -> NaN3 +fmax36864 fma 1 NaN4 Inf -> NaN4 +fmax36865 fma 1 NaN5 +NaN6 -> NaN5 +fmax36866 fma 1 -Inf NaN7 -> NaN7 +fmax36867 fma 1 -1000 NaN8 -> NaN8 +fmax36868 fma 1 1000 NaN9 -> NaN9 +fmax36869 fma 1 Inf +NaN10 -> NaN10 +fmax36871 fma 1 sNaN11 -Inf -> NaN11 Invalid_operation +fmax36872 fma 1 sNaN12 -1000 -> NaN12 Invalid_operation +fmax36873 fma 1 sNaN13 1000 -> NaN13 Invalid_operation +fmax36874 fma 1 sNaN14 NaN17 -> NaN14 Invalid_operation +fmax36875 fma 1 sNaN15 sNaN18 -> NaN15 Invalid_operation +fmax36876 fma 1 NaN16 sNaN19 -> NaN19 Invalid_operation +fmax36877 fma 1 -Inf +sNaN20 -> NaN20 Invalid_operation +fmax36878 fma 1 -1000 sNaN21 -> NaN21 Invalid_operation +fmax36879 fma 1 1000 sNaN22 -> NaN22 Invalid_operation +fmax36880 fma 1 Inf sNaN23 -> NaN23 Invalid_operation +fmax36881 fma 1 +NaN25 +sNaN24 -> NaN24 Invalid_operation +fmax36882 fma 1 -NaN26 NaN28 -> -NaN26 +fmax36883 fma 1 -sNaN27 sNaN29 -> -NaN27 Invalid_operation +fmax36884 fma 1 1000 -NaN30 -> -NaN30 +fmax36885 fma 1 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- now the case where we can get underflow but the result is normal +-- [note this can't happen if the operands are also bounded, as we +-- cannot represent 1E-399, for example] + +fmax36571 fma 1 1E-383 0 -> 1E-383 +fmax36572 fma 1 1E-384 0 -> 1E-384 Subnormal +fmax36573 fma 1 1E-383 1E-384 -> 1.1E-383 +fmax36574 subtract 1E-383 1E-384 -> 9E-384 Subnormal + +-- Here we explore the boundary of rounding a subnormal to Nmin +fmax36575 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal +fmax36576 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal +fmax36577 subtract 1E-383 1E-399 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax36578 subtract 1E-383 1E-400 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax36579 subtract 1E-383 1E-401 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +fmax36580 subtract 1E-383 1E-402 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded + +-- check overflow edge case +-- 1234567890123456 +fmax36972 apply 9.999999999999999E+384 -> 9.999999999999999E+384 +fmax36973 fma 1 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded +fmax36974 fma 1 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded +fmax36975 fma 1 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded +fmax36976 fma 1 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded +fmax36977 fma 1 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded +fmax36978 fma 1 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded +fmax36979 fma 1 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded +fmax36980 fma 1 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded +fmax36981 fma 1 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded +fmax36982 fma 1 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded +fmax36983 fma 1 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded +fmax36984 fma 1 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded + +fmax36985 apply -9.999999999999999E+384 -> -9.999999999999999E+384 +fmax36986 fma 1 -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded +fmax36987 fma 1 -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded +fmax36988 fma 1 -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded +fmax36989 fma 1 -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded +fmax36990 fma 1 -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded +fmax36991 fma 1 -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded +fmax36992 fma 1 -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded +fmax36993 fma 1 -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded +fmax36994 fma 1 -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded +fmax36995 fma 1 -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded +fmax36996 fma 1 -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded +fmax36997 fma 1 -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded + +-- And for round down full and subnormal results +rounding: down +fmax361100 fma 1 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact +fmax361101 fma 1 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact +fmax361103 fma 1 +1 -1e-383 -> 0.9999999999999999 Rounded Inexact +fmax361104 fma 1 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact +fmax361105 fma 1 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact +fmax361106 fma 1 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact +fmax361107 fma 1 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact +fmax361108 fma 1 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact +fmax361109 fma 1 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact + +rounding: ceiling +fmax361110 fma 1 -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact +fmax361111 fma 1 -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact +fmax361113 fma 1 -1 +1e-383 -> -0.9999999999999999 Rounded Inexact +fmax361114 fma 1 -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact +fmax361115 fma 1 -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact +fmax361116 fma 1 -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact +fmax361117 fma 1 -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact +fmax361118 fma 1 -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact +fmax361119 fma 1 -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact + +-- tests based on Gunnar Degnbol's edge case +rounding: half_even + +fmax361300 fma 1 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded +fmax361310 fma 1 1E16 -0.51 -> 9999999999999999 Inexact Rounded +fmax361311 fma 1 1E16 -0.501 -> 9999999999999999 Inexact Rounded +fmax361312 fma 1 1E16 -0.5001 -> 9999999999999999 Inexact Rounded +fmax361313 fma 1 1E16 -0.50001 -> 9999999999999999 Inexact Rounded +fmax361314 fma 1 1E16 -0.500001 -> 9999999999999999 Inexact Rounded +fmax361315 fma 1 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded +fmax361316 fma 1 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded +fmax361317 fma 1 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded +fmax361318 fma 1 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded +fmax361319 fma 1 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded +fmax361320 fma 1 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded +fmax361321 fma 1 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded +fmax361322 fma 1 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded +fmax361323 fma 1 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded +fmax361324 fma 1 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded +fmax361325 fma 1 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361326 fma 1 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361327 fma 1 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361328 fma 1 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361329 fma 1 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361330 fma 1 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361331 fma 1 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361332 fma 1 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361333 fma 1 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361334 fma 1 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361335 fma 1 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded +fmax361336 fma 1 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded +fmax361337 fma 1 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded +fmax361338 fma 1 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded +fmax361339 fma 1 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded + +fmax361340 fma 1 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded +fmax361341 fma 1 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded + +fmax361349 fma 1 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded +fmax361350 fma 1 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded +fmax361351 fma 1 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded +fmax361352 fma 1 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded +fmax361353 fma 1 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded +fmax361354 fma 1 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded +fmax361355 fma 1 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded +fmax361356 fma 1 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded +fmax361357 fma 1 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded +fmax361358 fma 1 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded +fmax361359 fma 1 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded +fmax361360 fma 1 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded +fmax361361 fma 1 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded +fmax361362 fma 1 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded +fmax361363 fma 1 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded +fmax361364 fma 1 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded +fmax361365 fma 1 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361367 fma 1 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361368 fma 1 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361369 fma 1 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361370 fma 1 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361371 fma 1 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361372 fma 1 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361373 fma 1 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361374 fma 1 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361375 fma 1 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded +fmax361376 fma 1 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded +fmax361377 fma 1 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded +fmax361378 fma 1 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded +fmax361379 fma 1 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded +fmax361380 fma 1 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded +fmax361381 fma 1 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded +fmax361382 fma 1 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361383 fma 1 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361384 fma 1 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361385 fma 1 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361386 fma 1 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361387 fma 1 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361388 fma 1 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361389 fma 1 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361390 fma 1 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361391 fma 1 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded +fmax361392 fma 1 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded +fmax361393 fma 1 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded +fmax361394 fma 1 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded +fmax361395 fma 1 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded +fmax361396 fma 1 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded + +-- More GD edge cases, where difference between the unadjusted +-- exponents is larger than the maximum precision and one side is 0 +fmax361420 fma 1 0 1.123456789012345 -> 1.123456789012345 +fmax361421 fma 1 0 1.123456789012345E-1 -> 0.1123456789012345 +fmax361422 fma 1 0 1.123456789012345E-2 -> 0.01123456789012345 +fmax361423 fma 1 0 1.123456789012345E-3 -> 0.001123456789012345 +fmax361424 fma 1 0 1.123456789012345E-4 -> 0.0001123456789012345 +fmax361425 fma 1 0 1.123456789012345E-5 -> 0.00001123456789012345 +fmax361426 fma 1 0 1.123456789012345E-6 -> 0.000001123456789012345 +fmax361427 fma 1 0 1.123456789012345E-7 -> 1.123456789012345E-7 +fmax361428 fma 1 0 1.123456789012345E-8 -> 1.123456789012345E-8 +fmax361429 fma 1 0 1.123456789012345E-9 -> 1.123456789012345E-9 +fmax361430 fma 1 0 1.123456789012345E-10 -> 1.123456789012345E-10 +fmax361431 fma 1 0 1.123456789012345E-11 -> 1.123456789012345E-11 +fmax361432 fma 1 0 1.123456789012345E-12 -> 1.123456789012345E-12 +fmax361433 fma 1 0 1.123456789012345E-13 -> 1.123456789012345E-13 +fmax361434 fma 1 0 1.123456789012345E-14 -> 1.123456789012345E-14 +fmax361435 fma 1 0 1.123456789012345E-15 -> 1.123456789012345E-15 +fmax361436 fma 1 0 1.123456789012345E-16 -> 1.123456789012345E-16 +fmax361437 fma 1 0 1.123456789012345E-17 -> 1.123456789012345E-17 +fmax361438 fma 1 0 1.123456789012345E-18 -> 1.123456789012345E-18 +fmax361439 fma 1 0 1.123456789012345E-19 -> 1.123456789012345E-19 + +-- same, reversed 0 +fmax361440 fma 1 1.123456789012345 0 -> 1.123456789012345 +fmax361441 fma 1 1.123456789012345E-1 0 -> 0.1123456789012345 +fmax361442 fma 1 1.123456789012345E-2 0 -> 0.01123456789012345 +fmax361443 fma 1 1.123456789012345E-3 0 -> 0.001123456789012345 +fmax361444 fma 1 1.123456789012345E-4 0 -> 0.0001123456789012345 +fmax361445 fma 1 1.123456789012345E-5 0 -> 0.00001123456789012345 +fmax361446 fma 1 1.123456789012345E-6 0 -> 0.000001123456789012345 +fmax361447 fma 1 1.123456789012345E-7 0 -> 1.123456789012345E-7 +fmax361448 fma 1 1.123456789012345E-8 0 -> 1.123456789012345E-8 +fmax361449 fma 1 1.123456789012345E-9 0 -> 1.123456789012345E-9 +fmax361450 fma 1 1.123456789012345E-10 0 -> 1.123456789012345E-10 +fmax361451 fma 1 1.123456789012345E-11 0 -> 1.123456789012345E-11 +fmax361452 fma 1 1.123456789012345E-12 0 -> 1.123456789012345E-12 +fmax361453 fma 1 1.123456789012345E-13 0 -> 1.123456789012345E-13 +fmax361454 fma 1 1.123456789012345E-14 0 -> 1.123456789012345E-14 +fmax361455 fma 1 1.123456789012345E-15 0 -> 1.123456789012345E-15 +fmax361456 fma 1 1.123456789012345E-16 0 -> 1.123456789012345E-16 +fmax361457 fma 1 1.123456789012345E-17 0 -> 1.123456789012345E-17 +fmax361458 fma 1 1.123456789012345E-18 0 -> 1.123456789012345E-18 +fmax361459 fma 1 1.123456789012345E-19 0 -> 1.123456789012345E-19 + +-- same, Es on the 0 +fmax361460 fma 1 1.123456789012345 0E-0 -> 1.123456789012345 +fmax361461 fma 1 1.123456789012345 0E-1 -> 1.123456789012345 +fmax361462 fma 1 1.123456789012345 0E-2 -> 1.123456789012345 +fmax361463 fma 1 1.123456789012345 0E-3 -> 1.123456789012345 +fmax361464 fma 1 1.123456789012345 0E-4 -> 1.123456789012345 +fmax361465 fma 1 1.123456789012345 0E-5 -> 1.123456789012345 +fmax361466 fma 1 1.123456789012345 0E-6 -> 1.123456789012345 +fmax361467 fma 1 1.123456789012345 0E-7 -> 1.123456789012345 +fmax361468 fma 1 1.123456789012345 0E-8 -> 1.123456789012345 +fmax361469 fma 1 1.123456789012345 0E-9 -> 1.123456789012345 +fmax361470 fma 1 1.123456789012345 0E-10 -> 1.123456789012345 +fmax361471 fma 1 1.123456789012345 0E-11 -> 1.123456789012345 +fmax361472 fma 1 1.123456789012345 0E-12 -> 1.123456789012345 +fmax361473 fma 1 1.123456789012345 0E-13 -> 1.123456789012345 +fmax361474 fma 1 1.123456789012345 0E-14 -> 1.123456789012345 +fmax361475 fma 1 1.123456789012345 0E-15 -> 1.123456789012345 +-- next four flag Rounded because the 0 extends the result +fmax361476 fma 1 1.123456789012345 0E-16 -> 1.123456789012345 Rounded +fmax361477 fma 1 1.123456789012345 0E-17 -> 1.123456789012345 Rounded +fmax361478 fma 1 1.123456789012345 0E-18 -> 1.123456789012345 Rounded +fmax361479 fma 1 1.123456789012345 0E-19 -> 1.123456789012345 Rounded + +-- sum of two opposite-sign operands is exactly 0 and floor => -0 +rounding: half_up +-- exact zeros from zeros +fmax361500 fma 1 0 0E-19 -> 0E-19 +fmax361501 fma 1 -0 0E-19 -> 0E-19 +fmax361502 fma 1 0 -0E-19 -> 0E-19 +fmax361503 fma 1 -0 -0E-19 -> -0E-19 +fmax361504 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax361505 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax361506 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax361507 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax361511 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361512 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361513 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361514 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax361515 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361516 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax361517 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax361518 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: half_down +-- exact zeros from zeros +fmax361520 fma 1 0 0E-19 -> 0E-19 +fmax361521 fma 1 -0 0E-19 -> 0E-19 +fmax361522 fma 1 0 -0E-19 -> 0E-19 +fmax361523 fma 1 -0 -0E-19 -> -0E-19 +fmax361524 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax361525 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax361526 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax361527 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax361531 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361532 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361533 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361534 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax361535 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361536 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax361537 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax361538 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: half_even +-- exact zeros from zeros +fmax361540 fma 1 0 0E-19 -> 0E-19 +fmax361541 fma 1 -0 0E-19 -> 0E-19 +fmax361542 fma 1 0 -0E-19 -> 0E-19 +fmax361543 fma 1 -0 -0E-19 -> -0E-19 +fmax361544 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax361545 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax361546 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax361547 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax361551 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361552 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361553 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361554 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax361555 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361556 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax361557 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax361558 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: up +-- exact zeros from zeros +fmax361560 fma 1 0 0E-19 -> 0E-19 +fmax361561 fma 1 -0 0E-19 -> 0E-19 +fmax361562 fma 1 0 -0E-19 -> 0E-19 +fmax361563 fma 1 -0 -0E-19 -> -0E-19 +fmax361564 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax361565 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax361566 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax361567 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax361571 fma 1 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax361572 fma 1 -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax361573 fma 1 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +fmax361574 fma 1 -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +-- some exact zeros from non-zeros +fmax361575 fma 1 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax361576 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax361577 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax361578 fma 1 -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow + +rounding: down +-- exact zeros from zeros +fmax361580 fma 1 0 0E-19 -> 0E-19 +fmax361581 fma 1 -0 0E-19 -> 0E-19 +fmax361582 fma 1 0 -0E-19 -> 0E-19 +fmax361583 fma 1 -0 -0E-19 -> -0E-19 +fmax361584 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax361585 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax361586 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax361587 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax361591 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361592 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361593 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361594 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax361595 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361596 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax361597 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax361598 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: ceiling +-- exact zeros from zeros +fmax361600 fma 1 0 0E-19 -> 0E-19 +fmax361601 fma 1 -0 0E-19 -> 0E-19 +fmax361602 fma 1 0 -0E-19 -> 0E-19 +fmax361603 fma 1 -0 -0E-19 -> -0E-19 +fmax361604 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax361605 fma 1 -0E-400 0E-19 -> 0E-398 Clamped +fmax361606 fma 1 0E-400 -0E-19 -> 0E-398 Clamped +fmax361607 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax361611 fma 1 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax361612 fma 1 -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax361613 fma 1 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361614 fma 1 -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +fmax361615 fma 1 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow +fmax361616 fma 1 -1E-401 1E-401 -> 0E-398 Clamped +fmax361617 fma 1 1E-401 -1E-401 -> 0E-398 Clamped +fmax361618 fma 1 -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +-- and the extra-special ugly case; unusual minuses marked by -- * +rounding: floor +-- exact zeros from zeros +fmax361620 fma 1 0 0E-19 -> 0E-19 +fmax361621 fma 1 -0 0E-19 -> -0E-19 -- * +fmax361622 fma 1 0 -0E-19 -> -0E-19 -- * +fmax361623 fma 1 -0 -0E-19 -> -0E-19 +fmax361624 fma 1 0E-400 0E-19 -> 0E-398 Clamped +fmax361625 fma 1 -0E-400 0E-19 -> -0E-398 Clamped -- * +fmax361626 fma 1 0E-400 -0E-19 -> -0E-398 Clamped -- * +fmax361627 fma 1 -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +fmax361631 fma 1 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361632 fma 1 -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361633 fma 1 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +fmax361634 fma 1 -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +-- some exact zeros from non-zeros +fmax361635 fma 1 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +fmax361636 fma 1 -1E-401 1E-401 -> -0E-398 Clamped -- * +fmax361637 fma 1 1E-401 -1E-401 -> -0E-398 Clamped -- * +fmax361638 fma 1 -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow + +-- Examples from SQL proposal (Krishna Kulkarni) +fmax361701 fma 1 130E-2 120E-2 -> 2.50 +fmax361702 fma 1 130E-2 12E-1 -> 2.50 +fmax361703 fma 1 130E-2 1E0 -> 2.30 +fmax361704 fma 1 1E2 1E4 -> 1.01E+4 +fmax361705 subtract 130E-2 120E-2 -> 0.10 +fmax361706 subtract 130E-2 12E-1 -> 0.10 +fmax361707 subtract 130E-2 1E0 -> 0.30 +fmax361708 subtract 1E2 1E4 -> -9.9E+3 + +-- Gappy coefficients; check residue handling even with full coefficient gap +rounding: half_even + +fmax362001 fma 1 1234567890123456 1 -> 1234567890123457 +fmax362002 fma 1 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded +fmax362003 fma 1 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded +fmax362004 fma 1 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded +fmax362005 fma 1 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded +fmax362006 fma 1 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded +fmax362007 fma 1 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded +fmax362008 fma 1 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded +fmax362009 fma 1 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded +fmax362010 fma 1 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded +fmax362011 fma 1 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded +fmax362012 fma 1 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded +fmax362013 fma 1 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded +fmax362014 fma 1 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded +fmax362015 fma 1 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded +fmax362016 fma 1 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded +fmax362017 fma 1 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded +fmax362018 fma 1 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded +fmax362019 fma 1 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded +fmax362020 fma 1 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded +fmax362021 fma 1 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded + +-- widening second argument at gap +fmax362030 fma 1 12345678 1 -> 12345679 +fmax362031 fma 1 12345678 0.1 -> 12345678.1 +fmax362032 fma 1 12345678 0.12 -> 12345678.12 +fmax362033 fma 1 12345678 0.123 -> 12345678.123 +fmax362034 fma 1 12345678 0.1234 -> 12345678.1234 +fmax362035 fma 1 12345678 0.12345 -> 12345678.12345 +fmax362036 fma 1 12345678 0.123456 -> 12345678.123456 +fmax362037 fma 1 12345678 0.1234567 -> 12345678.1234567 +fmax362038 fma 1 12345678 0.12345678 -> 12345678.12345678 +fmax362039 fma 1 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded +fmax362040 fma 1 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded +fmax362041 fma 1 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded +fmax362042 fma 1 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded +fmax362043 fma 1 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded +fmax362044 fma 1 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded +fmax362045 fma 1 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded +fmax362046 fma 1 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded +fmax362047 fma 1 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded +fmax362048 fma 1 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded +fmax362049 fma 1 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded +-- 90123456 +rounding: half_even +fmax362050 fma 1 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded +fmax362051 fma 1 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded +fmax362052 fma 1 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded +fmax362053 fma 1 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded +fmax362054 fma 1 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded +fmax362055 fma 1 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded +fmax362056 fma 1 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded +fmax362057 fma 1 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded +fmax362060 fma 1 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded +fmax362061 fma 1 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded +fmax362062 fma 1 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded +fmax362063 fma 1 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded +fmax362064 fma 1 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded +fmax362065 fma 1 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded +fmax362066 fma 1 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded +fmax362067 fma 1 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded +-- far-out residues (full coefficient gap is 16+15 digits) +rounding: up +fmax362070 fma 1 12345678 1E-8 -> 12345678.00000001 +fmax362071 fma 1 12345678 1E-9 -> 12345678.00000001 Inexact Rounded +fmax362072 fma 1 12345678 1E-10 -> 12345678.00000001 Inexact Rounded +fmax362073 fma 1 12345678 1E-11 -> 12345678.00000001 Inexact Rounded +fmax362074 fma 1 12345678 1E-12 -> 12345678.00000001 Inexact Rounded +fmax362075 fma 1 12345678 1E-13 -> 12345678.00000001 Inexact Rounded +fmax362076 fma 1 12345678 1E-14 -> 12345678.00000001 Inexact Rounded +fmax362077 fma 1 12345678 1E-15 -> 12345678.00000001 Inexact Rounded +fmax362078 fma 1 12345678 1E-16 -> 12345678.00000001 Inexact Rounded +fmax362079 fma 1 12345678 1E-17 -> 12345678.00000001 Inexact Rounded +fmax362080 fma 1 12345678 1E-18 -> 12345678.00000001 Inexact Rounded +fmax362081 fma 1 12345678 1E-19 -> 12345678.00000001 Inexact Rounded +fmax362082 fma 1 12345678 1E-20 -> 12345678.00000001 Inexact Rounded +fmax362083 fma 1 12345678 1E-25 -> 12345678.00000001 Inexact Rounded +fmax362084 fma 1 12345678 1E-30 -> 12345678.00000001 Inexact Rounded +fmax362085 fma 1 12345678 1E-31 -> 12345678.00000001 Inexact Rounded +fmax362086 fma 1 12345678 1E-32 -> 12345678.00000001 Inexact Rounded +fmax362087 fma 1 12345678 1E-33 -> 12345678.00000001 Inexact Rounded +fmax362088 fma 1 12345678 1E-34 -> 12345678.00000001 Inexact Rounded +fmax362089 fma 1 12345678 1E-35 -> 12345678.00000001 Inexact Rounded + +-- payload decapitate x3 +precision: 5 +fmax363000 fma 1 1 sNaN1234567890 -> NaN67890 Invalid_operation +fmax363001 fma 1 -sNaN1234512345 1 -> -NaN12345 Invalid_operation +fmax363002 fma sNaN1234554321 1 1 -> NaN54321 Invalid_operation + +-- Null tests +fmax39990 fma 1 10 # -> NaN Invalid_operation +fmax39991 fma 1 # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/invert.decTest b/Lib/test/decimaltestdata/invert.decTest index 9ef5a91..a2f7be5 100644 --- a/Lib/test/decimaltestdata/invert.decTest +++ b/Lib/test/decimaltestdata/invert.decTest @@ -1,176 +1,176 @@ ------------------------------------------------------------------------- --- invert.decTest -- digitwise logical INVERT -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check (truth table), and examples from decArith -invx001 invert 0 -> 111111111 -invx002 invert 1 -> 111111110 -invx003 invert 10 -> 111111101 -invx004 invert 111111111 -> 0 -invx005 invert 000000000 -> 111111111 -invx006 invert 101010101 -> '10101010' --- and at msd and msd-1 -invx007 invert 000000000 -> 111111111 -invx009 invert 100000000 -> 11111111 -invx011 invert 000000000 -> 111111111 -invx013 invert 010000000 -> 101111111 - --- Various lengths --- 123456789 123456789 -invx021 invert 111111111 -> 0 -invx022 invert 111111111111 -> 0 -invx023 invert 11111111 -> 100000000 -invx025 invert 1111111 -> 110000000 -invx026 invert 111111 -> 111000000 -invx027 invert 11111 -> 111100000 -invx028 invert 1111 -> 111110000 -invx029 invert 111 -> 111111000 -invx031 invert 11 -> 111111100 -invx032 invert 1 -> 111111110 -invx033 invert 111111111111 -> 0 -invx034 invert 11111111111 -> 0 -invx035 invert 1111111111 -> 0 -invx036 invert 111111111 -> 0 - -invx080 invert 011111111 -> 100000000 -invx081 invert 101111111 -> 10000000 -invx082 invert 110111111 -> 1000000 -invx083 invert 111011111 -> 100000 -invx084 invert 111101111 -> 10000 -invx085 invert 111110111 -> 1000 -invx086 invert 111111011 -> 100 -invx087 invert 111111101 -> 10 -invx088 invert 111111110 -> 1 -invx089 invert 011111011 -> 100000100 -invx090 invert 101111101 -> 10000010 -invx091 invert 110111110 -> 1000001 -invx092 invert 111011101 -> 100010 -invx093 invert 111101011 -> 10100 -invx094 invert 111110111 -> 1000 -invx095 invert 111101011 -> 10100 -invx096 invert 111011101 -> 100010 -invx097 invert 110111110 -> 1000001 -invx098 invert 101111101 -> 10000010 -invx099 invert 011111011 -> 100000100 - --- non-0/1 should not be accepted, nor should signs -invx220 invert 111111112 -> NaN Invalid_operation -invx221 invert 333333333 -> NaN Invalid_operation -invx222 invert 555555555 -> NaN Invalid_operation -invx223 invert 777777777 -> NaN Invalid_operation -invx224 invert 999999999 -> NaN Invalid_operation -invx225 invert 222222222 -> NaN Invalid_operation -invx226 invert 444444444 -> NaN Invalid_operation -invx227 invert 666666666 -> NaN Invalid_operation -invx228 invert 888888888 -> NaN Invalid_operation -invx229 invert 999999999 -> NaN Invalid_operation -invx230 invert 999999999 -> NaN Invalid_operation -invx231 invert 999999999 -> NaN Invalid_operation -invx232 invert 999999999 -> NaN Invalid_operation --- a few randoms -invx240 invert 567468689 -> NaN Invalid_operation -invx241 invert 567367689 -> NaN Invalid_operation -invx242 invert -631917772 -> NaN Invalid_operation -invx243 invert -756253257 -> NaN Invalid_operation -invx244 invert 835590149 -> NaN Invalid_operation --- test MSD -invx250 invert 200000000 -> NaN Invalid_operation -invx251 invert 300000000 -> NaN Invalid_operation -invx252 invert 400000000 -> NaN Invalid_operation -invx253 invert 500000000 -> NaN Invalid_operation -invx254 invert 600000000 -> NaN Invalid_operation -invx255 invert 700000000 -> NaN Invalid_operation -invx256 invert 800000000 -> NaN Invalid_operation -invx257 invert 900000000 -> NaN Invalid_operation --- test MSD-1 -invx270 invert 021000000 -> NaN Invalid_operation -invx271 invert 030100000 -> NaN Invalid_operation -invx272 invert 040010000 -> NaN Invalid_operation -invx273 invert 050001000 -> NaN Invalid_operation -invx274 invert 160000100 -> NaN Invalid_operation -invx275 invert 170000010 -> NaN Invalid_operation -invx276 invert 180000000 -> NaN Invalid_operation -invx277 invert 190000000 -> NaN Invalid_operation --- test LSD -invx280 invert 000000002 -> NaN Invalid_operation -invx281 invert 000000003 -> NaN Invalid_operation -invx282 invert 000000004 -> NaN Invalid_operation -invx283 invert 000000005 -> NaN Invalid_operation -invx284 invert 101000006 -> NaN Invalid_operation -invx285 invert 100100007 -> NaN Invalid_operation -invx286 invert 100010008 -> NaN Invalid_operation -invx287 invert 100001009 -> NaN Invalid_operation --- test Middie -invx288 invert 000020000 -> NaN Invalid_operation -invx289 invert 000030001 -> NaN Invalid_operation -invx290 invert 000040000 -> NaN Invalid_operation -invx291 invert 000050000 -> NaN Invalid_operation -invx292 invert 101060000 -> NaN Invalid_operation -invx293 invert 100170010 -> NaN Invalid_operation -invx294 invert 100080100 -> NaN Invalid_operation -invx295 invert 100091000 -> NaN Invalid_operation --- signs -invx296 invert -100001000 -> NaN Invalid_operation -invx299 invert 100001000 -> 11110111 - --- Nmax, Nmin, Ntiny -invx341 invert 9.99999999E+999 -> NaN Invalid_operation -invx342 invert 1E-999 -> NaN Invalid_operation -invx343 invert 1.00000000E-999 -> NaN Invalid_operation -invx344 invert 1E-1007 -> NaN Invalid_operation -invx345 invert -1E-1007 -> NaN Invalid_operation -invx346 invert -1.00000000E-999 -> NaN Invalid_operation -invx347 invert -1E-999 -> NaN Invalid_operation -invx348 invert -9.99999999E+999 -> NaN Invalid_operation - --- A few other non-integers -invx361 invert 1.0 -> NaN Invalid_operation -invx362 invert 1E+1 -> NaN Invalid_operation -invx363 invert 0.0 -> NaN Invalid_operation -invx364 invert 0E+1 -> NaN Invalid_operation -invx365 invert 9.9 -> NaN Invalid_operation -invx366 invert 9E+1 -> NaN Invalid_operation - --- All Specials are in error -invx788 invert -Inf -> NaN Invalid_operation -invx794 invert Inf -> NaN Invalid_operation -invx821 invert NaN -> NaN Invalid_operation -invx841 invert sNaN -> NaN Invalid_operation --- propagating NaNs -invx861 invert NaN1 -> NaN Invalid_operation -invx862 invert +NaN2 -> NaN Invalid_operation -invx863 invert NaN3 -> NaN Invalid_operation -invx864 invert NaN4 -> NaN Invalid_operation -invx865 invert NaN5 -> NaN Invalid_operation -invx871 invert sNaN11 -> NaN Invalid_operation -invx872 invert sNaN12 -> NaN Invalid_operation -invx873 invert sNaN13 -> NaN Invalid_operation -invx874 invert sNaN14 -> NaN Invalid_operation -invx875 invert sNaN15 -> NaN Invalid_operation -invx876 invert NaN16 -> NaN Invalid_operation -invx881 invert +NaN25 -> NaN Invalid_operation -invx882 invert -NaN26 -> NaN Invalid_operation -invx883 invert -sNaN27 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- invert.decTest -- digitwise logical INVERT -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check (truth table), and examples from decArith +invx001 invert 0 -> 111111111 +invx002 invert 1 -> 111111110 +invx003 invert 10 -> 111111101 +invx004 invert 111111111 -> 0 +invx005 invert 000000000 -> 111111111 +invx006 invert 101010101 -> '10101010' +-- and at msd and msd-1 +invx007 invert 000000000 -> 111111111 +invx009 invert 100000000 -> 11111111 +invx011 invert 000000000 -> 111111111 +invx013 invert 010000000 -> 101111111 + +-- Various lengths +-- 123456789 123456789 +invx021 invert 111111111 -> 0 +invx022 invert 111111111111 -> 0 +invx023 invert 11111111 -> 100000000 +invx025 invert 1111111 -> 110000000 +invx026 invert 111111 -> 111000000 +invx027 invert 11111 -> 111100000 +invx028 invert 1111 -> 111110000 +invx029 invert 111 -> 111111000 +invx031 invert 11 -> 111111100 +invx032 invert 1 -> 111111110 +invx033 invert 111111111111 -> 0 +invx034 invert 11111111111 -> 0 +invx035 invert 1111111111 -> 0 +invx036 invert 111111111 -> 0 + +invx080 invert 011111111 -> 100000000 +invx081 invert 101111111 -> 10000000 +invx082 invert 110111111 -> 1000000 +invx083 invert 111011111 -> 100000 +invx084 invert 111101111 -> 10000 +invx085 invert 111110111 -> 1000 +invx086 invert 111111011 -> 100 +invx087 invert 111111101 -> 10 +invx088 invert 111111110 -> 1 +invx089 invert 011111011 -> 100000100 +invx090 invert 101111101 -> 10000010 +invx091 invert 110111110 -> 1000001 +invx092 invert 111011101 -> 100010 +invx093 invert 111101011 -> 10100 +invx094 invert 111110111 -> 1000 +invx095 invert 111101011 -> 10100 +invx096 invert 111011101 -> 100010 +invx097 invert 110111110 -> 1000001 +invx098 invert 101111101 -> 10000010 +invx099 invert 011111011 -> 100000100 + +-- non-0/1 should not be accepted, nor should signs +invx220 invert 111111112 -> NaN Invalid_operation +invx221 invert 333333333 -> NaN Invalid_operation +invx222 invert 555555555 -> NaN Invalid_operation +invx223 invert 777777777 -> NaN Invalid_operation +invx224 invert 999999999 -> NaN Invalid_operation +invx225 invert 222222222 -> NaN Invalid_operation +invx226 invert 444444444 -> NaN Invalid_operation +invx227 invert 666666666 -> NaN Invalid_operation +invx228 invert 888888888 -> NaN Invalid_operation +invx229 invert 999999999 -> NaN Invalid_operation +invx230 invert 999999999 -> NaN Invalid_operation +invx231 invert 999999999 -> NaN Invalid_operation +invx232 invert 999999999 -> NaN Invalid_operation +-- a few randoms +invx240 invert 567468689 -> NaN Invalid_operation +invx241 invert 567367689 -> NaN Invalid_operation +invx242 invert -631917772 -> NaN Invalid_operation +invx243 invert -756253257 -> NaN Invalid_operation +invx244 invert 835590149 -> NaN Invalid_operation +-- test MSD +invx250 invert 200000000 -> NaN Invalid_operation +invx251 invert 300000000 -> NaN Invalid_operation +invx252 invert 400000000 -> NaN Invalid_operation +invx253 invert 500000000 -> NaN Invalid_operation +invx254 invert 600000000 -> NaN Invalid_operation +invx255 invert 700000000 -> NaN Invalid_operation +invx256 invert 800000000 -> NaN Invalid_operation +invx257 invert 900000000 -> NaN Invalid_operation +-- test MSD-1 +invx270 invert 021000000 -> NaN Invalid_operation +invx271 invert 030100000 -> NaN Invalid_operation +invx272 invert 040010000 -> NaN Invalid_operation +invx273 invert 050001000 -> NaN Invalid_operation +invx274 invert 160000100 -> NaN Invalid_operation +invx275 invert 170000010 -> NaN Invalid_operation +invx276 invert 180000000 -> NaN Invalid_operation +invx277 invert 190000000 -> NaN Invalid_operation +-- test LSD +invx280 invert 000000002 -> NaN Invalid_operation +invx281 invert 000000003 -> NaN Invalid_operation +invx282 invert 000000004 -> NaN Invalid_operation +invx283 invert 000000005 -> NaN Invalid_operation +invx284 invert 101000006 -> NaN Invalid_operation +invx285 invert 100100007 -> NaN Invalid_operation +invx286 invert 100010008 -> NaN Invalid_operation +invx287 invert 100001009 -> NaN Invalid_operation +-- test Middie +invx288 invert 000020000 -> NaN Invalid_operation +invx289 invert 000030001 -> NaN Invalid_operation +invx290 invert 000040000 -> NaN Invalid_operation +invx291 invert 000050000 -> NaN Invalid_operation +invx292 invert 101060000 -> NaN Invalid_operation +invx293 invert 100170010 -> NaN Invalid_operation +invx294 invert 100080100 -> NaN Invalid_operation +invx295 invert 100091000 -> NaN Invalid_operation +-- signs +invx296 invert -100001000 -> NaN Invalid_operation +invx299 invert 100001000 -> 11110111 + +-- Nmax, Nmin, Ntiny +invx341 invert 9.99999999E+999 -> NaN Invalid_operation +invx342 invert 1E-999 -> NaN Invalid_operation +invx343 invert 1.00000000E-999 -> NaN Invalid_operation +invx344 invert 1E-1007 -> NaN Invalid_operation +invx345 invert -1E-1007 -> NaN Invalid_operation +invx346 invert -1.00000000E-999 -> NaN Invalid_operation +invx347 invert -1E-999 -> NaN Invalid_operation +invx348 invert -9.99999999E+999 -> NaN Invalid_operation + +-- A few other non-integers +invx361 invert 1.0 -> NaN Invalid_operation +invx362 invert 1E+1 -> NaN Invalid_operation +invx363 invert 0.0 -> NaN Invalid_operation +invx364 invert 0E+1 -> NaN Invalid_operation +invx365 invert 9.9 -> NaN Invalid_operation +invx366 invert 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +invx788 invert -Inf -> NaN Invalid_operation +invx794 invert Inf -> NaN Invalid_operation +invx821 invert NaN -> NaN Invalid_operation +invx841 invert sNaN -> NaN Invalid_operation +-- propagating NaNs +invx861 invert NaN1 -> NaN Invalid_operation +invx862 invert +NaN2 -> NaN Invalid_operation +invx863 invert NaN3 -> NaN Invalid_operation +invx864 invert NaN4 -> NaN Invalid_operation +invx865 invert NaN5 -> NaN Invalid_operation +invx871 invert sNaN11 -> NaN Invalid_operation +invx872 invert sNaN12 -> NaN Invalid_operation +invx873 invert sNaN13 -> NaN Invalid_operation +invx874 invert sNaN14 -> NaN Invalid_operation +invx875 invert sNaN15 -> NaN Invalid_operation +invx876 invert NaN16 -> NaN Invalid_operation +invx881 invert +NaN25 -> NaN Invalid_operation +invx882 invert -NaN26 -> NaN Invalid_operation +invx883 invert -sNaN27 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/ln.decTest b/Lib/test/decimaltestdata/ln.decTest index efcb2a6..f602af2 100644 --- a/Lib/test/decimaltestdata/ln.decTest +++ b/Lib/test/decimaltestdata/ln.decTest @@ -1,611 +1,611 @@ ------------------------------------------------------------------------- --- ln.decTest -- decimal natural logarithm -- --- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 16 -rounding: half_even -maxExponent: 384 -minexponent: -383 - --- basics (examples in specification) -precision: 9 -lnxs001 ln 0 -> -Infinity -lnxs002 ln 1.000 -> 0 -lnxs003 ln 2.71828183 -> 1.00000000 Inexact Rounded -lnxs004 ln 10 -> 2.30258509 Inexact Rounded -lnxs005 ln +Infinity -> Infinity - - --- basics -precision: 16 -lnx0001 ln 0 -> -Infinity -lnx0002 ln 1E-9 -> -20.72326583694641 Inexact Rounded -lnx0003 ln 0.0007 -> -7.264430222920869 Inexact Rounded -lnx0004 ln 0.1 -> -2.302585092994046 Inexact Rounded -lnx0005 ln 0.7 -> -0.3566749439387324 Inexact Rounded -lnx0006 ln 1 -> 0 -lnx0007 ln 1.000 -> 0 -lnx0008 ln 1.5 -> 0.4054651081081644 Inexact Rounded -lnx0009 ln 2 -> 0.6931471805599453 Inexact Rounded -lnx0010 ln 2.718281828459045 -> 0.9999999999999999 Inexact Rounded -lnx0011 ln 2.718281828459046 -> 1.000000000000000 Inexact Rounded -lnx0012 ln 2.718281828459047 -> 1.000000000000001 Inexact Rounded -lnx0013 ln 10 -> 2.302585092994046 Inexact Rounded -lnx0014 ln 10.5 -> 2.351375257163478 Inexact Rounded -lnx0015 ln 9999 -> 9.210240366975849 Inexact Rounded -lnx0016 ln 1E6 -> 13.81551055796427 Inexact Rounded -lnx0017 ln 1E+9 -> 20.72326583694641 Inexact Rounded -lnx0018 ln +Infinity -> Infinity - --- notable cases --- negatives -lnx0021 ln -1E-9 -> NaN Invalid_operation -lnx0022 ln -0.0007 -> NaN Invalid_operation -lnx0023 ln -0.1 -> NaN Invalid_operation -lnx0024 ln -0.7 -> NaN Invalid_operation -lnx0025 ln -1 -> NaN Invalid_operation -lnx0026 ln -1.5 -> NaN Invalid_operation -lnx0027 ln -2 -> NaN Invalid_operation -lnx0029 ln -10.5 -> NaN Invalid_operation -lnx0028 ln -9999 -> NaN Invalid_operation -lnx0030 ln -2.718281828459045 -> NaN Invalid_operation -lnx0031 ln -2.718281828459046 -> NaN Invalid_operation -lnx0032 ln -0 -> -Infinity -lnx0033 ln -0E+17 -> -Infinity -lnx0034 ln -0E-17 -> -Infinity --- other zeros -lnx0041 ln 0 -> -Infinity -lnx0042 ln 0E+17 -> -Infinity -lnx0043 ln 0E-17 -> -Infinity --- infinities -lnx0045 ln -Infinity -> NaN Invalid_operation -lnx0046 ln +Infinity -> Infinity --- ones -lnx0050 ln 1 -> 0 -lnx0051 ln 1.0 -> 0 -lnx0052 ln 1.000000000000000 -> 0 -lnx0053 ln 1.000000000000000000 -> 0 - --- lower precision basics -Precision: 7 -lnx0101 ln 0 -> -Infinity -lnx0102 ln 1E-9 -> -20.72327 Inexact Rounded -lnx0103 ln 0.0007 -> -7.264430 Inexact Rounded -lnx0104 ln 0.1 -> -2.302585 Inexact Rounded -lnx0105 ln 0.7 -> -0.3566749 Inexact Rounded -lnx0106 ln 1 -> 0 -lnx0107 ln 1.5 -> 0.4054651 Inexact Rounded -lnx0108 ln 2 -> 0.6931472 Inexact Rounded -lnx0109 ln 2.718281828459045 -> 1.000000 Inexact Rounded -lnx0110 ln 2.718281828459046 -> 1.000000 Inexact Rounded -lnx0111 ln 2.718281828459047 -> 1.000000 Inexact Rounded -lnx0112 ln 10 -> 2.302585 Inexact Rounded -lnx0113 ln 10.5 -> 2.351375 Inexact Rounded -lnx0114 ln 9999 -> 9.210240 Inexact Rounded -lnx0115 ln 1E6 -> 13.81551 Inexact Rounded -lnx0116 ln 1E+9 -> 20.72327 Inexact Rounded -lnx0117 ln +Infinity -> Infinity -Precision: 2 -lnx0121 ln 0 -> -Infinity -lnx0122 ln 1E-9 -> -21 Inexact Rounded -lnx0123 ln 0.0007 -> -7.3 Inexact Rounded -lnx0124 ln 0.1 -> -2.3 Inexact Rounded -lnx0125 ln 0.7 -> -0.36 Inexact Rounded -lnx0126 ln 1 -> 0 -lnx0127 ln 1.5 -> 0.41 Inexact Rounded -lnx0128 ln 2 -> 0.69 Inexact Rounded -lnx0129 ln 2.718281828459045 -> 1.0 Inexact Rounded -lnx0130 ln 2.718281828459046 -> 1.0 Inexact Rounded -lnx0131 ln 2.718281828459047 -> 1.0 Inexact Rounded -lnx0132 ln 10 -> 2.3 Inexact Rounded -lnx0133 ln 10.5 -> 2.4 Inexact Rounded -lnx0134 ln 9999 -> 9.2 Inexact Rounded -lnx0135 ln 1E6 -> 14 Inexact Rounded -lnx0136 ln 1E+9 -> 21 Inexact Rounded -lnx0137 ln +Infinity -> Infinity -Precision: 1 -lnx0141 ln 0 -> -Infinity -lnx0142 ln 1E-9 -> -2E+1 Inexact Rounded -lnx0143 ln 0.0007 -> -7 Inexact Rounded -lnx0144 ln 0.1 -> -2 Inexact Rounded -lnx0145 ln 0.7 -> -0.4 Inexact Rounded -lnx0146 ln 1 -> 0 -lnx0147 ln 1.5 -> 0.4 Inexact Rounded -lnx0148 ln 2 -> 0.7 Inexact Rounded -lnx0149 ln 2.718281828459045 -> 1 Inexact Rounded -lnx0150 ln 2.718281828459046 -> 1 Inexact Rounded -lnx0151 ln 2.718281828459047 -> 1 Inexact Rounded -lnx0152 ln 10 -> 2 Inexact Rounded -lnx0153 ln 10.5 -> 2 Inexact Rounded -lnx0154 ln 9999 -> 9 Inexact Rounded -lnx0155 ln 1E6 -> 1E+1 Inexact Rounded -lnx0156 ln 1E+9 -> 2E+1 Inexact Rounded -lnx0157 ln +Infinity -> Infinity - --- group low-precision ln(1)s: -precision: 1 -lnx0161 ln 1 -> 0 -precision: 2 -lnx0162 ln 1 -> 0 -precision: 3 -lnx0163 ln 1 -> 0 -precision: 4 -lnx0164 ln 1 -> 0 -precision: 5 -lnx0165 ln 1 -> 0 -precision: 6 -lnx0166 ln 1 -> 0 -precision: 7 -lnx0167 ln 1 -> 0 -precision: 8 -lnx0168 ln 1 -> 0 - --- edge-test ln(2) and ln(10) in case of lookasides -precision: 45 -lnx201 ln 2 -> 0.693147180559945309417232121458176568075500134 Inexact Rounded -lnx202 ln 10 -> 2.30258509299404568401799145468436420760110149 Inexact Rounded -precision: 44 -lnx203 ln 2 -> 0.69314718055994530941723212145817656807550013 Inexact Rounded -lnx204 ln 10 -> 2.3025850929940456840179914546843642076011015 Inexact Rounded -precision: 43 -lnx205 ln 2 -> 0.6931471805599453094172321214581765680755001 Inexact Rounded -lnx206 ln 10 -> 2.302585092994045684017991454684364207601101 Inexact Rounded -precision: 42 -lnx207 ln 2 -> 0.693147180559945309417232121458176568075500 Inexact Rounded -lnx208 ln 10 -> 2.30258509299404568401799145468436420760110 Inexact Rounded -precision: 41 -lnx209 ln 2 -> 0.69314718055994530941723212145817656807550 Inexact Rounded -lnx210 ln 10 -> 2.3025850929940456840179914546843642076011 Inexact Rounded -precision: 40 -lnx211 ln 2 -> 0.6931471805599453094172321214581765680755 Inexact Rounded -lnx212 ln 10 -> 2.302585092994045684017991454684364207601 Inexact Rounded -precision: 39 -lnx213 ln 2 -> 0.693147180559945309417232121458176568076 Inexact Rounded -lnx214 ln 10 -> 2.30258509299404568401799145468436420760 Inexact Rounded -precision: 38 -lnx215 ln 2 -> 0.69314718055994530941723212145817656808 Inexact Rounded -lnx216 ln 10 -> 2.3025850929940456840179914546843642076 Inexact Rounded -precision: 37 -lnx217 ln 2 -> 0.6931471805599453094172321214581765681 Inexact Rounded -lnx218 ln 10 -> 2.302585092994045684017991454684364208 Inexact Rounded -precision: 36 -lnx219 ln 2 -> 0.693147180559945309417232121458176568 Inexact Rounded -lnx220 ln 10 -> 2.30258509299404568401799145468436421 Inexact Rounded -precision: 35 -lnx221 ln 2 -> 0.69314718055994530941723212145817657 Inexact Rounded -lnx222 ln 10 -> 2.3025850929940456840179914546843642 Inexact Rounded -precision: 34 -lnx223 ln 2 -> 0.6931471805599453094172321214581766 Inexact Rounded -lnx224 ln 10 -> 2.302585092994045684017991454684364 Inexact Rounded -precision: 33 -lnx225 ln 2 -> 0.693147180559945309417232121458177 Inexact Rounded -lnx226 ln 10 -> 2.30258509299404568401799145468436 Inexact Rounded -precision: 32 -lnx227 ln 2 -> 0.69314718055994530941723212145818 Inexact Rounded -lnx228 ln 10 -> 2.3025850929940456840179914546844 Inexact Rounded -precision: 31 -lnx229 ln 2 -> 0.6931471805599453094172321214582 Inexact Rounded -lnx230 ln 10 -> 2.302585092994045684017991454684 Inexact Rounded -precision: 30 -lnx231 ln 2 -> 0.693147180559945309417232121458 Inexact Rounded -lnx232 ln 10 -> 2.30258509299404568401799145468 Inexact Rounded - --- extreme input range values -maxExponent: 384 -minExponent: -383 -Precision: 16 - -lnx0901 ln 1e-400 -> -921.0340371976183 Inexact Rounded -lnx0902 ln 1e+400 -> 921.0340371976183 Inexact Rounded -lnx0903 ln 1e-999999 -> -2302582.790408953 Inexact Rounded -lnx0904 ln 1e+999999 -> 2302582.790408953 Inexact Rounded -lnx0905 ln 1e-1000013 -> -2302615.026600255 Inexact Rounded -lnx0906 ln 2e-1000013 -> -2302614.333453074 Inexact Rounded - -lnx0910 ln 9.999999e+999999 -> 2302585.092993946 Inexact Rounded -lnx0911 ln 9.9999999e+999999 -> 2302585.092994036 Inexact Rounded -lnx0912 ln 9.99999999e+999999 -> 2302585.092994045 Inexact Rounded -lnx0913 ln 9.999999999e+999999 -> 2302585.092994046 Inexact Rounded -lnx0914 ln 9.999999999999e+999999 -> 2302585.092994046 Inexact Rounded -lnx0915 ln 9.999999999999999e+999999 -> 2302585.092994046 Inexact Rounded -lnx0916 ln 9.999999999999999999999999e+999999 -> 2302585.092994046 Inexact Rounded - --- randoms --- P=50, within 0-999 -Precision: 50 -maxExponent: 384 -minExponent: -383 -lnx1501 ln 0.00098800906574486388604608477869812518857023768951 -> -6.9198186844033787995945147836955586009548513043689 Inexact Rounded -lnx1502 ln 158.15866624664623070184595045304145949900714987827 -> 5.0635987458895647454907806507503825602758392287684 Inexact Rounded -lnx1503 ln 0.00565661412059571925040285814021799775249288309321 -> -5.1749297776760632102047540300491550931651318975237 Inexact Rounded -lnx1504 ln 0.00000006914232532620489602008402091666547903180607 -> -16.487098770877825308138976818688771638172333034347 Inexact Rounded -lnx1505 ln 0.00025380374621297657504661540749355251231770070723 -> -8.2789492423005003205242162741569033124260321954589 Inexact Rounded -lnx1506 ln 83.033654063877426261108592599182418953442677554806 -> 4.4192459962647137976949249810815698465031609843669 Inexact Rounded -lnx1507 ln 0.00000000416863228092481651627734668440663678118729 -> -19.295677845122141772791294599714950175284915666430 Inexact Rounded -lnx1508 ln 0.00000140847873187820570181214271960511080523457669 -> -13.473000349581967189668305314384952251556809480339 Inexact Rounded -lnx1509 ln 66.176106555181527101630351127583944689752069132522 -> 4.1923194696232505883666171116966137694013431504252 Inexact Rounded -lnx1510 ln 0.00000000000009899043487403590900111602024562297908 -> -29.943753166877840985821508112917991506656545174163 Inexact Rounded -lnx1511 ln 0.00000000000324618296721747097510453388683912733569 -> -26.453541281444586819009546418577507163362590139422 Inexact Rounded -lnx1512 ln 72.646968818463546449499147579023555008392860423385 -> 4.2856116660689646882852128853423566276718230426479 Inexact Rounded -lnx1513 ln 0.00000000000000066755483124635612574263153825990523 -> -34.942910142802769319262875080398852491588707172483 Inexact Rounded -lnx1514 ln 61.002910447202398204114909451851111424657671911002 -> 4.1109215752843377323363182051446177066434038096529 Inexact Rounded -lnx1515 ln 917.06917611331980999227893584010544542312239174774 -> 6.8211829068303114128752453661946446979787826282907 Inexact Rounded -lnx1516 ln 0.00000000170823794883673083358549749078972003965194 -> -20.187803436976150477297246666771626827057191023004 Inexact Rounded -lnx1517 ln 0.53731767845358224445809761315159249898566542910649 -> -0.62116577939968409211736413628236285160048357000961 Inexact Rounded -lnx1518 ln 0.00000000000000008965291392882804161299758708033373 -> -36.950585970980857376081265073276303670820056916206 Inexact Rounded -lnx1519 ln 0.00000000006990244916026429904498278982530170295668 -> -23.383920429244457578373523508427783144589480420753 Inexact Rounded -lnx1520 ln 4.0312542977070300070506064666536478373801988540614 -> 1.3940775676592451945795752796421391871302024763305 Inexact Rounded -lnx1521 ln 271.84991311551875601432518819562391699324632396423 -> 5.6052501239873862517916679747146539808077431873478 Inexact Rounded -lnx1522 ln 7.4118671629373864667229445746862314443895404818689 -> 2.0030823863706344628239147639318289961917060121141 Inexact Rounded -lnx1523 ln 0.00000000000002026311452625364905357321664186034258 -> -31.529974180054438792043856877314043794320951134754 Inexact Rounded -lnx1524 ln 0.00000000000009563398651261756952398250624737809347 -> -29.978248130576972953141284136962670021368834792579 Inexact Rounded -lnx1525 ln 0.00000000009556772669409858653026558223465197808991 -> -23.071185939748285541228206161472956661196956741186 Inexact Rounded -lnx1526 ln 6.8441648298027301292342057248737326152250794026761 -> 1.9233964395801946597272589473417948024361005082908 Inexact Rounded -lnx1527 ln 0.00000000000073059699884439979394945822035704264577 -> -27.944914388353724718836101828677771967128509603158 Inexact Rounded -lnx1528 ln 0.00000000000000002610078280419082263138064745416787 -> -38.184566367516207885573773320135965798717120735115 Inexact Rounded -lnx1529 ln 0.00000000000000000150259517166294243088546806083283 -> -41.039337946266676108538170837580051699618334928421 Inexact Rounded -lnx1530 ln 0.00000000000000087919160541714580707181969708502091 -> -34.667528818827671507514319744047440696187358676848 Inexact Rounded -lnx1531 ln 0.00000000000395726725120787763271849577708068584598 -> -26.255467416961357741818735787226671938678424748431 Inexact Rounded -lnx1532 ln 0.00000000002014334901669366218018377213150715938355 -> -24.628146955635359035289123027319969201693737159108 Inexact Rounded -lnx1533 ln 0.00000008097927101101093117753938766241442896030637 -> -16.329072628469715178637178365710373398203190937454 Inexact Rounded -lnx1534 ln 0.00000000000017115834162632864392039668116243984176 -> -29.396187292434898225453626794459285157263177528034 Inexact Rounded -lnx1535 ln 0.39168317593866334087305459933723864294857086105035 -> -0.93730199062757240485836637306785037368746737693029 Inexact Rounded -lnx1536 ln 79.335036798971515026519630103325369729637514127617 -> 4.3736798570287828823772149735170431010616961976965 Inexact Rounded -lnx1537 ln 0.00000000000000056004952129926137413602116591493625 -> -35.118506463181870020730685884333000241039028127213 Inexact Rounded -lnx1538 ln 0.00000006006035907843890918832481099660639553666078 -> -16.627915795747112566532705974853114454405010472043 Inexact Rounded -lnx1539 ln 0.00000000085242024937414906371333826574632450587590 -> -20.882941460268101080186482230657774997273494107221 Inexact Rounded -lnx1540 ln 0.00000000000043671099499262350316173246550771951561 -> -28.459504757285639221776305968469058854558726593945 Inexact Rounded - --- P=34, within 0-999 -Precision: 34 -lnx1201 ln 0.0086732880815927182997566810334394 -> -4.747507311920844752486938187973721 Inexact Rounded -lnx1202 ln 0.0007104103693460260609792222569854 -> -7.249667769903503023005549250347695 Inexact Rounded -lnx1203 ln 786.8398945385105190697541493392742 -> 6.668024790031836340471824147010546 Inexact Rounded -lnx1204 ln 0.7723073620282687656895190171967399 -> -0.2583726708506850868786816238217326 Inexact Rounded -lnx1205 ln 0.0061057951517197631287183938412200 -> -5.098516933918797347064454103742635 Inexact Rounded -lnx1206 ln 0.6181379708184393730103917562498745 -> -0.4810435926903365087463387760350021 Inexact Rounded -lnx1207 ln 09.13888261229039989110753389096760 -> 2.212538125507975574509563027696021 Inexact Rounded -lnx1208 ln 802.0105417063143696497292158147174 -> 6.687121752052341737234832203350214 Inexact Rounded -lnx1209 ln 778.7749710387773713523028497333058 -> 6.657722135126935472086625031413031 Inexact Rounded -lnx1210 ln 0.0024457295895346502513567679390616 -> -6.013411799940245345321348290398517 Inexact Rounded -lnx1211 ln 0.0000511296947872828310338864217860 -> -9.881145118237281798081573131711636 Inexact Rounded -lnx1212 ln 0.0000246803508602554924938685155658 -> -10.60950314264825661825360971430218 Inexact Rounded -lnx1213 ln 9.027898199253511668242977766616082 -> 2.200319582778899029786017830557293 Inexact Rounded -lnx1214 ln 0.0991812396542505631850692800904188 -> -2.310806398964672258823043180400384 Inexact Rounded -lnx1215 ln 0.0000000000070238810143028811223924 -> -25.68170519961636647174714538290075 Inexact Rounded -lnx1216 ln 2.630101665342826494730394729313167 -> 0.9670225014664367465128243039749559 Inexact Rounded -lnx1217 ln 0.0056878928594359587691526063254683 -> -5.169415422904037819736637399445096 Inexact Rounded -lnx1218 ln 567.3436047121057843908106573095590 -> 6.340965124964258486463444360787970 Inexact Rounded -lnx1219 ln 1.199291248124655996614605745649725 -> 0.1817307557425911805765087755675657 Inexact Rounded -lnx1220 ln 25.02050448582031098696267479135557 -> 3.219695668137659139544178905459317 Inexact Rounded -lnx1221 ln 0.0000000000009939597023558756961300 -> -27.63707972996537636504396558259058 Inexact Rounded -lnx1222 ln 0.0000007988551670159429716506430403 -> -14.04008617542597230988198612376415 Inexact Rounded -lnx1223 ln 4.681515800176129184873770605589795 -> 1.543621946415383338972124445445748 Inexact Rounded -lnx1224 ln 15.95126669161103011206658749345781 -> 2.769538242479483539275986395443539 Inexact Rounded -lnx1225 ln 0.0301626783922211213675457279076066 -> -3.501149933677283341023932281826341 Inexact Rounded -lnx1226 ln 000.0040544064881821770528475185674 -> -5.507950967557021671647165889608324 Inexact Rounded -lnx1227 ln 29.01617095935593792095913785100360 -> 3.367853293862745651888450004473297 Inexact Rounded -lnx1228 ln 78.01836167344736733024804243195323 -> 4.356944205055768575987781375003992 Inexact Rounded -lnx1229 ln 0.0000000096545319316965321158634893 -> -18.45583840160965814462095477365013 Inexact Rounded -lnx1230 ln 97.95475237720579752770587185074428 -> 4.584505661612812742208619358214729 Inexact Rounded -lnx1231 ln 528.0609262050423246402564228432371 -> 6.269211667589138113396583894315956 Inexact Rounded -lnx1232 ln 0.0000002250064349732969696660452972 -> -15.30713683526963996712167701738724 Inexact Rounded -lnx1233 ln 47.97063637767998658567199049725754 -> 3.870589081585660692195989854842372 Inexact Rounded -lnx1234 ln 0.0005394311344541432318853513414361 -> -7.524995428393925934087126702974121 Inexact Rounded -lnx1235 ln 0.0000000090973385649567471674972633 -> -18.51528393158931783447035004125791 Inexact Rounded -lnx1236 ln 0.0000000000238776490227576197317977 -> -24.45807828188389561331158879207262 Inexact Rounded -lnx1237 ln 0.0000236587000231921532145326218758 -> -10.65177964499823314952429277979034 Inexact Rounded -lnx1238 ln 499.1277448846130709827154556125942 -> 6.212862064761427967461188083514774 Inexact Rounded -lnx1239 ln 0.0000003960192300284787663712417647 -> -14.74180306619298548093697608293284 Inexact Rounded -lnx1240 ln 41.08268350829477451667228892495136 -> 3.715586706887278039173584859218960 Inexact Rounded - --- P=16, within 0-99 -Precision: 16 -lnx1101 ln 7.964875261033948 -> 2.075041282352241 Inexact Rounded -lnx1102 ln 13.54527396845394 -> 2.606037701870263 Inexact Rounded -lnx1103 ln 0.0008026554341331 -> -7.127585034321814 Inexact Rounded -lnx1104 ln 0.0000030582233261 -> -12.69767642300625 Inexact Rounded -lnx1105 ln 0.0004477497509672 -> -7.711276073210766 Inexact Rounded -lnx1106 ln 7.616268622474371 -> 2.030286567675148 Inexact Rounded -lnx1107 ln 51.58329925806381 -> 3.943197962309569 Inexact Rounded -lnx1108 ln 0.0018197497951263 -> -6.309056262549345 Inexact Rounded -lnx1109 ln 2.956282457072984 -> 1.083932552334575 Inexact Rounded -lnx1110 ln 0.3843325579189906 -> -0.9562470649400558 Inexact Rounded -lnx1111 ln 0.0074466329265663 -> -4.899993304919237 Inexact Rounded -lnx1112 ln 0.0003372478532993 -> -7.994692428206378 Inexact Rounded -lnx1113 ln 0.0084792263167809 -> -4.770136069569271 Inexact Rounded -lnx1114 ln 5.926756998151102 -> 1.779477182834305 Inexact Rounded -lnx1115 ln 9.025699152180897 -> 2.200075969604119 Inexact Rounded -lnx1116 ln 1.910124643533526 -> 0.6471684983238183 Inexact Rounded -lnx1117 ln 0.8158922711411020 -> -0.2034729533939387 Inexact Rounded -lnx1118 ln 0.0067080016475322 -> -5.004454189414139 Inexact Rounded -lnx1119 ln 0.0047583242092716 -> -5.347859729601094 Inexact Rounded -lnx1120 ln 0.0386647411641339 -> -3.252827175263113 Inexact Rounded -lnx1121 ln 0.0050226427841761 -> -5.293799032774131 Inexact Rounded -lnx1122 ln 6.927937541637261 -> 1.935562155866906 Inexact Rounded -lnx1123 ln 0.0000095745343513 -> -11.55640365579814 Inexact Rounded -lnx1124 ln 1.602465492956538 -> 0.4715433763243936 Inexact Rounded -lnx1125 ln 38.98415625087535 -> 3.663155313610213 Inexact Rounded -lnx1126 ln 5.343182042276734 -> 1.675821363568112 Inexact Rounded -lnx1127 ln 55.89763703245816 -> 4.023522107934110 Inexact Rounded -lnx1128 ln 0.7445257810280847 -> -0.2950077988101030 Inexact Rounded -lnx1129 ln 1.631407314946094 -> 0.4894430257201248 Inexact Rounded -lnx1130 ln 0.0005462451932602 -> -7.512442611116852 Inexact Rounded -lnx1131 ln 0.0000864173269362 -> -9.356322359017317 Inexact Rounded -lnx1132 ln 5.227161719132849 -> 1.653868438439637 Inexact Rounded -lnx1133 ln 60.57078466941998 -> 4.103812675662452 Inexact Rounded -lnx1134 ln 0.0992864325333160 -> -2.309746348350318 Inexact Rounded -lnx1135 ln 09.48564268447325 -> 2.249779359074983 Inexact Rounded -lnx1136 ln 0.0036106089355634 -> -5.623878840650787 Inexact Rounded -lnx1137 ln 1.805176865587172 -> 0.5906585734593707 Inexact Rounded -lnx1138 ln 62.59363259642255 -> 4.136663557220559 Inexact Rounded -lnx1139 ln 4.373828261137201 -> 1.475638657912000 Inexact Rounded -lnx1140 ln 0.994483524148738 -> -0.005531747794938690 Inexact Rounded - --- P=7, within 0-9 -Precision: 7 -lnx1001 ln 0.0912025 -> -2.394673 Inexact Rounded -lnx1002 ln 0.9728626 -> -0.02751242 Inexact Rounded -lnx1003 ln 0.3886032 -> -0.9451965 Inexact Rounded -lnx1004 ln 8.798639 -> 2.174597 Inexact Rounded -lnx1005 ln 2.459121 -> 0.8998040 Inexact Rounded -lnx1006 ln 2.013193 -> 0.6997220 Inexact Rounded -lnx1007 ln 9.064857 -> 2.204405 Inexact Rounded -lnx1008 ln 5.796417 -> 1.757240 Inexact Rounded -lnx1009 ln 0.1143471 -> -2.168517 Inexact Rounded -lnx1010 ln 0.5341542 -> -0.6270707 Inexact Rounded -lnx1011 ln 6.693781 -> 1.901179 Inexact Rounded -lnx1012 ln 0.0081779 -> -4.806320 Inexact Rounded -lnx1013 ln 8.313616 -> 2.117895 Inexact Rounded -lnx1014 ln 3.486925 -> 1.249020 Inexact Rounded -lnx1015 ln 0.1801401 -> -1.714020 Inexact Rounded -lnx1016 ln 0.5227148 -> -0.6487193 Inexact Rounded -lnx1017 ln 7.818111 -> 2.056443 Inexact Rounded -lnx1018 ln 0.0870671 -> -2.441076 Inexact Rounded -lnx1019 ln 8.153966 -> 2.098504 Inexact Rounded -lnx1020 ln 2.040975 -> 0.7134276 Inexact Rounded -lnx1021 ln 1.481642 -> 0.3931509 Inexact Rounded -lnx1022 ln 0.2610123 -> -1.343188 Inexact Rounded -lnx1023 ln 0.466723 -> -0.7620193 Inexact Rounded -lnx1024 ln 0.0518756 -> -2.958907 Inexact Rounded -lnx1025 ln 2.056410 -> 0.7209617 Inexact Rounded -lnx1026 ln 0.181522 -> -1.706378 Inexact Rounded -lnx1027 ln 0.515551 -> -0.6625190 Inexact Rounded -lnx1028 ln 8.425089 -> 2.131214 Inexact Rounded -lnx1029 ln 2.077091 -> 0.7309684 Inexact Rounded -lnx1030 ln 6.212705 -> 1.826596 Inexact Rounded -lnx1031 ln 5.729343 -> 1.745601 Inexact Rounded -lnx1032 ln 4.831251 -> 1.575105 Inexact Rounded -lnx1033 ln 2.029760 -> 0.7079176 Inexact Rounded -lnx1034 ln 8.615060 -> 2.153512 Inexact Rounded -lnx1035 ln 0.0611511 -> -2.794407 Inexact Rounded -lnx1036 ln 5.195269 -> 1.647748 Inexact Rounded -lnx1037 ln 9.617686 -> 2.263604 Inexact Rounded -lnx1038 ln 0.0049382 -> -5.310754 Inexact Rounded -lnx1039 ln 2.786840 -> 1.024908 Inexact Rounded -lnx1040 ln 0.0091073 -> -4.698679 Inexact Rounded - --- from here 3-digit tests are based on reverse exp tests -precision: 9 -rounding: half_even -maxExponent: 384 -minexponent: -383 - -lnx001 ln 0 -> -Infinity -lnx002 ln 0.367879441 -> -1.00000000 Inexact Rounded -lnx003 ln 1 -> 0 -lnx005 ln 2.71828183 -> 1.00000000 Inexact Rounded -lnx006 ln 2.00000000 -> 0.693147181 Inexact Rounded -lnx007 ln +Infinity -> Infinity - --- tiny edge cases -precision: 7 -lnx011 ln 1.105171 -> 0.1000001 Inexact Rounded -lnx012 ln 1.010050 -> 0.009999835 Inexact Rounded -lnx013 ln 1.000010 -> 0.000009999950 Inexact Rounded -lnx014 ln 1.000001 -> 9.999995E-7 Inexact Rounded -lnx015 ln 1.000000 -> 0 - --- basic e=0, e=1, e=2, e=4, e>=8 cases -precision: 7 -lnx041 ln 2.718282 -> 1.000000 Inexact Rounded -lnx042 ln 0.3678794 -> -1.000000 Inexact Rounded -lnx043 ln 22026.47 -> 10.00000 Inexact Rounded -lnx044 ln 0.00004539993 -> -10.00000 Inexact Rounded -lnx045 ln 2.688117E+43 -> 100.0000 Inexact Rounded -lnx046 ln 3.720076E-44 -> -100.0000 Inexact Rounded -lnx047 ln Infinity -> Infinity -lnx048 ln 0E-389 -> -Infinity - --- miscellanea -precision: 16 -lnx055 ln 2.717658486884572E-236 -> -542.4103112874415 Inexact Rounded -precision: 17 -lnx056 ln 2.7176584868845721E-236 -> -542.41031128744146 Inexact Rounded -precision: 18 -lnx057 ln 2.71765848688457211E-236 -> -542.410311287441459 Inexact Rounded -precision: 19 -lnx058 ln 2.717658486884572112E-236 -> -542.4103112874414592 Inexact Rounded -precision: 20 -lnx059 ln 2.7176584868845721118E-236 -> -542.41031128744145917 Inexact Rounded - --- inputs ending in ..500.., ..499.., ..100.., ..999.. sequences -precision: 50 -lnx102 ln 0.9999999100000040499998785000027 -> -9.0000000000000000000000033749953829996446124861750E-8 Inexact Rounded -precision: 30 -lnx103 ln 0.999999910000004049999878500003 -> -8.99999999999999999999997337499E-8 Inexact Rounded -precision: 29 -lnx104 ln 0.99999991000000404999987850000 -> -9.0000000000000000000002733750E-8 Inexact Rounded -precision: 28 -lnx105 ln 0.9999999100000040499998785000 -> -9.000000000000000000000273375E-8 Inexact Rounded -precision: 27 -lnx106 ln 0.999999910000004049999878500 -> -9.00000000000000000000027338E-8 Inexact Rounded -precision: 26 -lnx107 ln 0.99999991000000404999987850 -> -9.0000000000000000000002734E-8 Inexact Rounded -precision: 25 -lnx108 ln 0.9999999100000040499998785 -> -9.000000000000000000000273E-8 Inexact Rounded -precision: 24 -lnx109 ln 0.999999910000004049999879 -> -8.99999999999999995000027E-8 Inexact Rounded -precision: 23 -lnx110 ln 0.99999991000000404999988 -> -8.9999999999999998500003E-8 Inexact Rounded -precision: 22 -lnx111 ln 0.9999999100000040499999 -> -8.999999999999997850000E-8 Inexact Rounded -precision: 21 -lnx112 ln 0.999999910000004050000 -> -8.99999999999998785000E-8 Inexact Rounded -precision: 20 -lnx113 ln 0.99999991000000405000 -> -8.9999999999999878500E-8 Inexact Rounded -precision: 19 -lnx114 ln 0.9999999100000040500 -> -8.999999999999987850E-8 Inexact Rounded -precision: 18 -lnx115 ln 0.999999910000004050 -> -8.99999999999998785E-8 Inexact Rounded --- next may be a > 0.5ulp case; a more precise answer is: --- -8.99999999999998784999918E-8 -precision: 17 -lnx116 ln 0.99999991000000405 -> -8.9999999999999878E-8 Inexact Rounded -precision: 16 -lnx117 ln 0.9999999100000040 -> -9.000000004999988E-8 Inexact Rounded -precision: 15 -lnx118 ln 0.999999910000004 -> -9.00000000499999E-8 Inexact Rounded -precision: 14 -lnx119 ln 0.99999991000000 -> -9.0000004050000E-8 Inexact Rounded -precision: 13 -lnx120 ln 0.9999999100000 -> -9.000000405000E-8 Inexact Rounded -precision: 12 -lnx121 ln 0.999999910000 -> -9.00000040500E-8 Inexact Rounded -precision: 11 -lnx122 ln 0.99999991000 -> -9.0000004050E-8 Inexact Rounded -precision: 10 -lnx123 ln 0.9999999100 -> -9.000000405E-8 Inexact Rounded -precision: 9 -lnx124 ln 0.999999910 -> -9.00000041E-8 Inexact Rounded -precision: 8 -lnx125 ln 0.99999991 -> -9.0000004E-8 Inexact Rounded -precision: 7 -lnx126 ln 0.9999999 -> -1.000000E-7 Inexact Rounded -precision: 16 -lnx126b ln 0.9999999 -> -1.000000050000003E-7 Inexact Rounded -precision: 6 -lnx127 ln 0.999999 -> -0.00000100000 Inexact Rounded -precision: 5 -lnx128 ln 0.99999 -> -0.000010000 Inexact Rounded -precision: 4 -lnx129 ln 0.9999 -> -0.0001000 Inexact Rounded -precision: 3 -lnx130 ln 0.999 -> -0.00100 Inexact Rounded -precision: 2 -lnx131 ln 0.99 -> -0.010 Inexact Rounded -precision: 1 -lnx132 ln 0.9 -> -0.1 Inexact Rounded - - --- cases near 1 -- 1 2345678901234567890 -precision: 20 -lnx401 ln 2.7182818284589365041 -> 0.99999999999996000000 Inexact Rounded -lnx402 ln 2.7182818284589636869 -> 0.99999999999997000000 Inexact Rounded -lnx403 ln 2.7182818284589908697 -> 0.99999999999997999999 Inexact Rounded -lnx404 ln 2.7182818284590180525 -> 0.99999999999998999998 Inexact Rounded -lnx405 ln 2.7182818284590452354 -> 1.0000000000000000000 Inexact Rounded -lnx406 ln 2.7182818284593170635 -> 1.0000000000001000000 Inexact Rounded -lnx407 ln 2.7182818284595888917 -> 1.0000000000002000000 Inexact Rounded -precision: 14 -lnx411 ln 2.7182818284589 -> 0.99999999999995 Inexact Rounded -lnx413 ln 2.7182818284590 -> 0.99999999999998 Inexact Rounded -lnx416 ln 2.7182818284591 -> 1.0000000000000 Inexact Rounded -lnx417 ln 2.7182818284592 -> 1.0000000000001 Inexact Rounded - --- overflows, including some exp overprecise borderlines -precision: 7 -maxExponent: 384 -minExponent: -383 -lnx709 ln 9.999999E+384 -> 886.4953 Inexact Rounded -lnx711 ln 9.999992E+384 -> 886.4953 Inexact Rounded -precision: 16 -lnx722 ln 9.999999999999999E+384 -> 886.4952608027076 Inexact Rounded -lnx724 ln 9.999999999999917E+384 -> 886.4952608027076 Inexact Rounded -lnx726 ln 9.999999999999117E+384 -> 886.4952608027075 Inexact Rounded --- and more... -precision: 15 -maxExponent: 999 -minExponent: -999 -lnx731 ln 9.99999999999999E+999 -> 2302.58509299405 Inexact Rounded --- next may be a > 0.5ulp case; a more precise answer is: --- 2302.58509299404495001799145442 -lnx732 ln 9.99999999999266E+999 -> 2302.58509299404 Inexact Rounded -lnx733 ln 9.99999999999265E+999 -> 2302.58509299404 Inexact Rounded -lnx734 ln 9.99999999999264E+999 -> 2302.58509299404 Inexact Rounded - --- subnormals and underflows for exp, including underflow-to-zero edge point -precision: 7 -maxExponent: 384 -minExponent: -383 -lnx751 ln 0E-389 -> -Infinity -lnx758 ln 1.000001E-383 -> -881.8901 Inexact Rounded -lnx759 ln 9.99991E-384 -> -881.8901 Inexact Rounded -lnx760 ln 4.4605E-385 -> -885.0000 Inexact Rounded -lnx761 ln 2.221E-386 -> -887.9999 Inexact Rounded -lnx762 ln 3.01E-387 -> -889.9985 Inexact Rounded -lnx763 ln 1.7E-388 -> -892.8724 Inexact Rounded -lnx764 ln 1.5E-388 -> -892.9976 Inexact Rounded -lnx765 ln 9E-389 -> -893.5084 Inexact Rounded -lnx766 ln 1E-389 -> -895.7056 Inexact Rounded -lnx774 ln 0E-389 -> -Infinity - --- special values -lnx820 ln Infinity -> Infinity -lnx821 ln 0 -> -Infinity -lnx822 ln NaN -> NaN -lnx823 ln sNaN -> NaN Invalid_operation --- propagating NaNs -lnx824 ln sNaN123 -> NaN123 Invalid_operation -lnx825 ln -sNaN321 -> -NaN321 Invalid_operation -lnx826 ln NaN456 -> NaN456 -lnx827 ln -NaN654 -> -NaN654 -lnx828 ln NaN1 -> NaN1 - --- Invalid operations due to restrictions --- [next two probably skipped by most test harnesses] -precision: 100000000 -lnx901 ln 1 -> NaN Invalid_context -precision: 99999999 -lnx902 ln 0 -> NaN Invalid_context - -precision: 9 -maxExponent: 1000000 -minExponent: -999999 -lnx903 ln 1 -> NaN Invalid_context -maxExponent: 999999 -minExponent: -999999 -lnx904 ln 0 -> -Infinity -maxExponent: 999999 -minExponent: -1000000 -lnx905 ln 1 -> NaN Invalid_context -maxExponent: 999999 -minExponent: -999998 -lnx906 ln 0 -> -Infinity - --- payload decapitate -precision: 5 -lnx910 ln -sNaN1234567890 -> -NaN67890 Invalid_operation - --- Null test -lnx900 ln # -> NaN Invalid_operation - - +------------------------------------------------------------------------ +-- ln.decTest -- decimal natural logarithm -- +-- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 16 +rounding: half_even +maxExponent: 384 +minexponent: -383 + +-- basics (examples in specification) +precision: 9 +lnxs001 ln 0 -> -Infinity +lnxs002 ln 1.000 -> 0 +lnxs003 ln 2.71828183 -> 1.00000000 Inexact Rounded +lnxs004 ln 10 -> 2.30258509 Inexact Rounded +lnxs005 ln +Infinity -> Infinity + + +-- basics +precision: 16 +lnx0001 ln 0 -> -Infinity +lnx0002 ln 1E-9 -> -20.72326583694641 Inexact Rounded +lnx0003 ln 0.0007 -> -7.264430222920869 Inexact Rounded +lnx0004 ln 0.1 -> -2.302585092994046 Inexact Rounded +lnx0005 ln 0.7 -> -0.3566749439387324 Inexact Rounded +lnx0006 ln 1 -> 0 +lnx0007 ln 1.000 -> 0 +lnx0008 ln 1.5 -> 0.4054651081081644 Inexact Rounded +lnx0009 ln 2 -> 0.6931471805599453 Inexact Rounded +lnx0010 ln 2.718281828459045 -> 0.9999999999999999 Inexact Rounded +lnx0011 ln 2.718281828459046 -> 1.000000000000000 Inexact Rounded +lnx0012 ln 2.718281828459047 -> 1.000000000000001 Inexact Rounded +lnx0013 ln 10 -> 2.302585092994046 Inexact Rounded +lnx0014 ln 10.5 -> 2.351375257163478 Inexact Rounded +lnx0015 ln 9999 -> 9.210240366975849 Inexact Rounded +lnx0016 ln 1E6 -> 13.81551055796427 Inexact Rounded +lnx0017 ln 1E+9 -> 20.72326583694641 Inexact Rounded +lnx0018 ln +Infinity -> Infinity + +-- notable cases +-- negatives +lnx0021 ln -1E-9 -> NaN Invalid_operation +lnx0022 ln -0.0007 -> NaN Invalid_operation +lnx0023 ln -0.1 -> NaN Invalid_operation +lnx0024 ln -0.7 -> NaN Invalid_operation +lnx0025 ln -1 -> NaN Invalid_operation +lnx0026 ln -1.5 -> NaN Invalid_operation +lnx0027 ln -2 -> NaN Invalid_operation +lnx0029 ln -10.5 -> NaN Invalid_operation +lnx0028 ln -9999 -> NaN Invalid_operation +lnx0030 ln -2.718281828459045 -> NaN Invalid_operation +lnx0031 ln -2.718281828459046 -> NaN Invalid_operation +lnx0032 ln -0 -> -Infinity +lnx0033 ln -0E+17 -> -Infinity +lnx0034 ln -0E-17 -> -Infinity +-- other zeros +lnx0041 ln 0 -> -Infinity +lnx0042 ln 0E+17 -> -Infinity +lnx0043 ln 0E-17 -> -Infinity +-- infinities +lnx0045 ln -Infinity -> NaN Invalid_operation +lnx0046 ln +Infinity -> Infinity +-- ones +lnx0050 ln 1 -> 0 +lnx0051 ln 1.0 -> 0 +lnx0052 ln 1.000000000000000 -> 0 +lnx0053 ln 1.000000000000000000 -> 0 + +-- lower precision basics +Precision: 7 +lnx0101 ln 0 -> -Infinity +lnx0102 ln 1E-9 -> -20.72327 Inexact Rounded +lnx0103 ln 0.0007 -> -7.264430 Inexact Rounded +lnx0104 ln 0.1 -> -2.302585 Inexact Rounded +lnx0105 ln 0.7 -> -0.3566749 Inexact Rounded +lnx0106 ln 1 -> 0 +lnx0107 ln 1.5 -> 0.4054651 Inexact Rounded +lnx0108 ln 2 -> 0.6931472 Inexact Rounded +lnx0109 ln 2.718281828459045 -> 1.000000 Inexact Rounded +lnx0110 ln 2.718281828459046 -> 1.000000 Inexact Rounded +lnx0111 ln 2.718281828459047 -> 1.000000 Inexact Rounded +lnx0112 ln 10 -> 2.302585 Inexact Rounded +lnx0113 ln 10.5 -> 2.351375 Inexact Rounded +lnx0114 ln 9999 -> 9.210240 Inexact Rounded +lnx0115 ln 1E6 -> 13.81551 Inexact Rounded +lnx0116 ln 1E+9 -> 20.72327 Inexact Rounded +lnx0117 ln +Infinity -> Infinity +Precision: 2 +lnx0121 ln 0 -> -Infinity +lnx0122 ln 1E-9 -> -21 Inexact Rounded +lnx0123 ln 0.0007 -> -7.3 Inexact Rounded +lnx0124 ln 0.1 -> -2.3 Inexact Rounded +lnx0125 ln 0.7 -> -0.36 Inexact Rounded +lnx0126 ln 1 -> 0 +lnx0127 ln 1.5 -> 0.41 Inexact Rounded +lnx0128 ln 2 -> 0.69 Inexact Rounded +lnx0129 ln 2.718281828459045 -> 1.0 Inexact Rounded +lnx0130 ln 2.718281828459046 -> 1.0 Inexact Rounded +lnx0131 ln 2.718281828459047 -> 1.0 Inexact Rounded +lnx0132 ln 10 -> 2.3 Inexact Rounded +lnx0133 ln 10.5 -> 2.4 Inexact Rounded +lnx0134 ln 9999 -> 9.2 Inexact Rounded +lnx0135 ln 1E6 -> 14 Inexact Rounded +lnx0136 ln 1E+9 -> 21 Inexact Rounded +lnx0137 ln +Infinity -> Infinity +Precision: 1 +lnx0141 ln 0 -> -Infinity +lnx0142 ln 1E-9 -> -2E+1 Inexact Rounded +lnx0143 ln 0.0007 -> -7 Inexact Rounded +lnx0144 ln 0.1 -> -2 Inexact Rounded +lnx0145 ln 0.7 -> -0.4 Inexact Rounded +lnx0146 ln 1 -> 0 +lnx0147 ln 1.5 -> 0.4 Inexact Rounded +lnx0148 ln 2 -> 0.7 Inexact Rounded +lnx0149 ln 2.718281828459045 -> 1 Inexact Rounded +lnx0150 ln 2.718281828459046 -> 1 Inexact Rounded +lnx0151 ln 2.718281828459047 -> 1 Inexact Rounded +lnx0152 ln 10 -> 2 Inexact Rounded +lnx0153 ln 10.5 -> 2 Inexact Rounded +lnx0154 ln 9999 -> 9 Inexact Rounded +lnx0155 ln 1E6 -> 1E+1 Inexact Rounded +lnx0156 ln 1E+9 -> 2E+1 Inexact Rounded +lnx0157 ln +Infinity -> Infinity + +-- group low-precision ln(1)s: +precision: 1 +lnx0161 ln 1 -> 0 +precision: 2 +lnx0162 ln 1 -> 0 +precision: 3 +lnx0163 ln 1 -> 0 +precision: 4 +lnx0164 ln 1 -> 0 +precision: 5 +lnx0165 ln 1 -> 0 +precision: 6 +lnx0166 ln 1 -> 0 +precision: 7 +lnx0167 ln 1 -> 0 +precision: 8 +lnx0168 ln 1 -> 0 + +-- edge-test ln(2) and ln(10) in case of lookasides +precision: 45 +lnx201 ln 2 -> 0.693147180559945309417232121458176568075500134 Inexact Rounded +lnx202 ln 10 -> 2.30258509299404568401799145468436420760110149 Inexact Rounded +precision: 44 +lnx203 ln 2 -> 0.69314718055994530941723212145817656807550013 Inexact Rounded +lnx204 ln 10 -> 2.3025850929940456840179914546843642076011015 Inexact Rounded +precision: 43 +lnx205 ln 2 -> 0.6931471805599453094172321214581765680755001 Inexact Rounded +lnx206 ln 10 -> 2.302585092994045684017991454684364207601101 Inexact Rounded +precision: 42 +lnx207 ln 2 -> 0.693147180559945309417232121458176568075500 Inexact Rounded +lnx208 ln 10 -> 2.30258509299404568401799145468436420760110 Inexact Rounded +precision: 41 +lnx209 ln 2 -> 0.69314718055994530941723212145817656807550 Inexact Rounded +lnx210 ln 10 -> 2.3025850929940456840179914546843642076011 Inexact Rounded +precision: 40 +lnx211 ln 2 -> 0.6931471805599453094172321214581765680755 Inexact Rounded +lnx212 ln 10 -> 2.302585092994045684017991454684364207601 Inexact Rounded +precision: 39 +lnx213 ln 2 -> 0.693147180559945309417232121458176568076 Inexact Rounded +lnx214 ln 10 -> 2.30258509299404568401799145468436420760 Inexact Rounded +precision: 38 +lnx215 ln 2 -> 0.69314718055994530941723212145817656808 Inexact Rounded +lnx216 ln 10 -> 2.3025850929940456840179914546843642076 Inexact Rounded +precision: 37 +lnx217 ln 2 -> 0.6931471805599453094172321214581765681 Inexact Rounded +lnx218 ln 10 -> 2.302585092994045684017991454684364208 Inexact Rounded +precision: 36 +lnx219 ln 2 -> 0.693147180559945309417232121458176568 Inexact Rounded +lnx220 ln 10 -> 2.30258509299404568401799145468436421 Inexact Rounded +precision: 35 +lnx221 ln 2 -> 0.69314718055994530941723212145817657 Inexact Rounded +lnx222 ln 10 -> 2.3025850929940456840179914546843642 Inexact Rounded +precision: 34 +lnx223 ln 2 -> 0.6931471805599453094172321214581766 Inexact Rounded +lnx224 ln 10 -> 2.302585092994045684017991454684364 Inexact Rounded +precision: 33 +lnx225 ln 2 -> 0.693147180559945309417232121458177 Inexact Rounded +lnx226 ln 10 -> 2.30258509299404568401799145468436 Inexact Rounded +precision: 32 +lnx227 ln 2 -> 0.69314718055994530941723212145818 Inexact Rounded +lnx228 ln 10 -> 2.3025850929940456840179914546844 Inexact Rounded +precision: 31 +lnx229 ln 2 -> 0.6931471805599453094172321214582 Inexact Rounded +lnx230 ln 10 -> 2.302585092994045684017991454684 Inexact Rounded +precision: 30 +lnx231 ln 2 -> 0.693147180559945309417232121458 Inexact Rounded +lnx232 ln 10 -> 2.30258509299404568401799145468 Inexact Rounded + +-- extreme input range values +maxExponent: 384 +minExponent: -383 +Precision: 16 + +lnx0901 ln 1e-400 -> -921.0340371976183 Inexact Rounded +lnx0902 ln 1e+400 -> 921.0340371976183 Inexact Rounded +lnx0903 ln 1e-999999 -> -2302582.790408953 Inexact Rounded +lnx0904 ln 1e+999999 -> 2302582.790408953 Inexact Rounded +lnx0905 ln 1e-1000013 -> -2302615.026600255 Inexact Rounded +lnx0906 ln 2e-1000013 -> -2302614.333453074 Inexact Rounded + +lnx0910 ln 9.999999e+999999 -> 2302585.092993946 Inexact Rounded +lnx0911 ln 9.9999999e+999999 -> 2302585.092994036 Inexact Rounded +lnx0912 ln 9.99999999e+999999 -> 2302585.092994045 Inexact Rounded +lnx0913 ln 9.999999999e+999999 -> 2302585.092994046 Inexact Rounded +lnx0914 ln 9.999999999999e+999999 -> 2302585.092994046 Inexact Rounded +lnx0915 ln 9.999999999999999e+999999 -> 2302585.092994046 Inexact Rounded +lnx0916 ln 9.999999999999999999999999e+999999 -> 2302585.092994046 Inexact Rounded + +-- randoms +-- P=50, within 0-999 +Precision: 50 +maxExponent: 384 +minExponent: -383 +lnx1501 ln 0.00098800906574486388604608477869812518857023768951 -> -6.9198186844033787995945147836955586009548513043689 Inexact Rounded +lnx1502 ln 158.15866624664623070184595045304145949900714987827 -> 5.0635987458895647454907806507503825602758392287684 Inexact Rounded +lnx1503 ln 0.00565661412059571925040285814021799775249288309321 -> -5.1749297776760632102047540300491550931651318975237 Inexact Rounded +lnx1504 ln 0.00000006914232532620489602008402091666547903180607 -> -16.487098770877825308138976818688771638172333034347 Inexact Rounded +lnx1505 ln 0.00025380374621297657504661540749355251231770070723 -> -8.2789492423005003205242162741569033124260321954589 Inexact Rounded +lnx1506 ln 83.033654063877426261108592599182418953442677554806 -> 4.4192459962647137976949249810815698465031609843669 Inexact Rounded +lnx1507 ln 0.00000000416863228092481651627734668440663678118729 -> -19.295677845122141772791294599714950175284915666430 Inexact Rounded +lnx1508 ln 0.00000140847873187820570181214271960511080523457669 -> -13.473000349581967189668305314384952251556809480339 Inexact Rounded +lnx1509 ln 66.176106555181527101630351127583944689752069132522 -> 4.1923194696232505883666171116966137694013431504252 Inexact Rounded +lnx1510 ln 0.00000000000009899043487403590900111602024562297908 -> -29.943753166877840985821508112917991506656545174163 Inexact Rounded +lnx1511 ln 0.00000000000324618296721747097510453388683912733569 -> -26.453541281444586819009546418577507163362590139422 Inexact Rounded +lnx1512 ln 72.646968818463546449499147579023555008392860423385 -> 4.2856116660689646882852128853423566276718230426479 Inexact Rounded +lnx1513 ln 0.00000000000000066755483124635612574263153825990523 -> -34.942910142802769319262875080398852491588707172483 Inexact Rounded +lnx1514 ln 61.002910447202398204114909451851111424657671911002 -> 4.1109215752843377323363182051446177066434038096529 Inexact Rounded +lnx1515 ln 917.06917611331980999227893584010544542312239174774 -> 6.8211829068303114128752453661946446979787826282907 Inexact Rounded +lnx1516 ln 0.00000000170823794883673083358549749078972003965194 -> -20.187803436976150477297246666771626827057191023004 Inexact Rounded +lnx1517 ln 0.53731767845358224445809761315159249898566542910649 -> -0.62116577939968409211736413628236285160048357000961 Inexact Rounded +lnx1518 ln 0.00000000000000008965291392882804161299758708033373 -> -36.950585970980857376081265073276303670820056916206 Inexact Rounded +lnx1519 ln 0.00000000006990244916026429904498278982530170295668 -> -23.383920429244457578373523508427783144589480420753 Inexact Rounded +lnx1520 ln 4.0312542977070300070506064666536478373801988540614 -> 1.3940775676592451945795752796421391871302024763305 Inexact Rounded +lnx1521 ln 271.84991311551875601432518819562391699324632396423 -> 5.6052501239873862517916679747146539808077431873478 Inexact Rounded +lnx1522 ln 7.4118671629373864667229445746862314443895404818689 -> 2.0030823863706344628239147639318289961917060121141 Inexact Rounded +lnx1523 ln 0.00000000000002026311452625364905357321664186034258 -> -31.529974180054438792043856877314043794320951134754 Inexact Rounded +lnx1524 ln 0.00000000000009563398651261756952398250624737809347 -> -29.978248130576972953141284136962670021368834792579 Inexact Rounded +lnx1525 ln 0.00000000009556772669409858653026558223465197808991 -> -23.071185939748285541228206161472956661196956741186 Inexact Rounded +lnx1526 ln 6.8441648298027301292342057248737326152250794026761 -> 1.9233964395801946597272589473417948024361005082908 Inexact Rounded +lnx1527 ln 0.00000000000073059699884439979394945822035704264577 -> -27.944914388353724718836101828677771967128509603158 Inexact Rounded +lnx1528 ln 0.00000000000000002610078280419082263138064745416787 -> -38.184566367516207885573773320135965798717120735115 Inexact Rounded +lnx1529 ln 0.00000000000000000150259517166294243088546806083283 -> -41.039337946266676108538170837580051699618334928421 Inexact Rounded +lnx1530 ln 0.00000000000000087919160541714580707181969708502091 -> -34.667528818827671507514319744047440696187358676848 Inexact Rounded +lnx1531 ln 0.00000000000395726725120787763271849577708068584598 -> -26.255467416961357741818735787226671938678424748431 Inexact Rounded +lnx1532 ln 0.00000000002014334901669366218018377213150715938355 -> -24.628146955635359035289123027319969201693737159108 Inexact Rounded +lnx1533 ln 0.00000008097927101101093117753938766241442896030637 -> -16.329072628469715178637178365710373398203190937454 Inexact Rounded +lnx1534 ln 0.00000000000017115834162632864392039668116243984176 -> -29.396187292434898225453626794459285157263177528034 Inexact Rounded +lnx1535 ln 0.39168317593866334087305459933723864294857086105035 -> -0.93730199062757240485836637306785037368746737693029 Inexact Rounded +lnx1536 ln 79.335036798971515026519630103325369729637514127617 -> 4.3736798570287828823772149735170431010616961976965 Inexact Rounded +lnx1537 ln 0.00000000000000056004952129926137413602116591493625 -> -35.118506463181870020730685884333000241039028127213 Inexact Rounded +lnx1538 ln 0.00000006006035907843890918832481099660639553666078 -> -16.627915795747112566532705974853114454405010472043 Inexact Rounded +lnx1539 ln 0.00000000085242024937414906371333826574632450587590 -> -20.882941460268101080186482230657774997273494107221 Inexact Rounded +lnx1540 ln 0.00000000000043671099499262350316173246550771951561 -> -28.459504757285639221776305968469058854558726593945 Inexact Rounded + +-- P=34, within 0-999 +Precision: 34 +lnx1201 ln 0.0086732880815927182997566810334394 -> -4.747507311920844752486938187973721 Inexact Rounded +lnx1202 ln 0.0007104103693460260609792222569854 -> -7.249667769903503023005549250347695 Inexact Rounded +lnx1203 ln 786.8398945385105190697541493392742 -> 6.668024790031836340471824147010546 Inexact Rounded +lnx1204 ln 0.7723073620282687656895190171967399 -> -0.2583726708506850868786816238217326 Inexact Rounded +lnx1205 ln 0.0061057951517197631287183938412200 -> -5.098516933918797347064454103742635 Inexact Rounded +lnx1206 ln 0.6181379708184393730103917562498745 -> -0.4810435926903365087463387760350021 Inexact Rounded +lnx1207 ln 09.13888261229039989110753389096760 -> 2.212538125507975574509563027696021 Inexact Rounded +lnx1208 ln 802.0105417063143696497292158147174 -> 6.687121752052341737234832203350214 Inexact Rounded +lnx1209 ln 778.7749710387773713523028497333058 -> 6.657722135126935472086625031413031 Inexact Rounded +lnx1210 ln 0.0024457295895346502513567679390616 -> -6.013411799940245345321348290398517 Inexact Rounded +lnx1211 ln 0.0000511296947872828310338864217860 -> -9.881145118237281798081573131711636 Inexact Rounded +lnx1212 ln 0.0000246803508602554924938685155658 -> -10.60950314264825661825360971430218 Inexact Rounded +lnx1213 ln 9.027898199253511668242977766616082 -> 2.200319582778899029786017830557293 Inexact Rounded +lnx1214 ln 0.0991812396542505631850692800904188 -> -2.310806398964672258823043180400384 Inexact Rounded +lnx1215 ln 0.0000000000070238810143028811223924 -> -25.68170519961636647174714538290075 Inexact Rounded +lnx1216 ln 2.630101665342826494730394729313167 -> 0.9670225014664367465128243039749559 Inexact Rounded +lnx1217 ln 0.0056878928594359587691526063254683 -> -5.169415422904037819736637399445096 Inexact Rounded +lnx1218 ln 567.3436047121057843908106573095590 -> 6.340965124964258486463444360787970 Inexact Rounded +lnx1219 ln 1.199291248124655996614605745649725 -> 0.1817307557425911805765087755675657 Inexact Rounded +lnx1220 ln 25.02050448582031098696267479135557 -> 3.219695668137659139544178905459317 Inexact Rounded +lnx1221 ln 0.0000000000009939597023558756961300 -> -27.63707972996537636504396558259058 Inexact Rounded +lnx1222 ln 0.0000007988551670159429716506430403 -> -14.04008617542597230988198612376415 Inexact Rounded +lnx1223 ln 4.681515800176129184873770605589795 -> 1.543621946415383338972124445445748 Inexact Rounded +lnx1224 ln 15.95126669161103011206658749345781 -> 2.769538242479483539275986395443539 Inexact Rounded +lnx1225 ln 0.0301626783922211213675457279076066 -> -3.501149933677283341023932281826341 Inexact Rounded +lnx1226 ln 000.0040544064881821770528475185674 -> -5.507950967557021671647165889608324 Inexact Rounded +lnx1227 ln 29.01617095935593792095913785100360 -> 3.367853293862745651888450004473297 Inexact Rounded +lnx1228 ln 78.01836167344736733024804243195323 -> 4.356944205055768575987781375003992 Inexact Rounded +lnx1229 ln 0.0000000096545319316965321158634893 -> -18.45583840160965814462095477365013 Inexact Rounded +lnx1230 ln 97.95475237720579752770587185074428 -> 4.584505661612812742208619358214729 Inexact Rounded +lnx1231 ln 528.0609262050423246402564228432371 -> 6.269211667589138113396583894315956 Inexact Rounded +lnx1232 ln 0.0000002250064349732969696660452972 -> -15.30713683526963996712167701738724 Inexact Rounded +lnx1233 ln 47.97063637767998658567199049725754 -> 3.870589081585660692195989854842372 Inexact Rounded +lnx1234 ln 0.0005394311344541432318853513414361 -> -7.524995428393925934087126702974121 Inexact Rounded +lnx1235 ln 0.0000000090973385649567471674972633 -> -18.51528393158931783447035004125791 Inexact Rounded +lnx1236 ln 0.0000000000238776490227576197317977 -> -24.45807828188389561331158879207262 Inexact Rounded +lnx1237 ln 0.0000236587000231921532145326218758 -> -10.65177964499823314952429277979034 Inexact Rounded +lnx1238 ln 499.1277448846130709827154556125942 -> 6.212862064761427967461188083514774 Inexact Rounded +lnx1239 ln 0.0000003960192300284787663712417647 -> -14.74180306619298548093697608293284 Inexact Rounded +lnx1240 ln 41.08268350829477451667228892495136 -> 3.715586706887278039173584859218960 Inexact Rounded + +-- P=16, within 0-99 +Precision: 16 +lnx1101 ln 7.964875261033948 -> 2.075041282352241 Inexact Rounded +lnx1102 ln 13.54527396845394 -> 2.606037701870263 Inexact Rounded +lnx1103 ln 0.0008026554341331 -> -7.127585034321814 Inexact Rounded +lnx1104 ln 0.0000030582233261 -> -12.69767642300625 Inexact Rounded +lnx1105 ln 0.0004477497509672 -> -7.711276073210766 Inexact Rounded +lnx1106 ln 7.616268622474371 -> 2.030286567675148 Inexact Rounded +lnx1107 ln 51.58329925806381 -> 3.943197962309569 Inexact Rounded +lnx1108 ln 0.0018197497951263 -> -6.309056262549345 Inexact Rounded +lnx1109 ln 2.956282457072984 -> 1.083932552334575 Inexact Rounded +lnx1110 ln 0.3843325579189906 -> -0.9562470649400558 Inexact Rounded +lnx1111 ln 0.0074466329265663 -> -4.899993304919237 Inexact Rounded +lnx1112 ln 0.0003372478532993 -> -7.994692428206378 Inexact Rounded +lnx1113 ln 0.0084792263167809 -> -4.770136069569271 Inexact Rounded +lnx1114 ln 5.926756998151102 -> 1.779477182834305 Inexact Rounded +lnx1115 ln 9.025699152180897 -> 2.200075969604119 Inexact Rounded +lnx1116 ln 1.910124643533526 -> 0.6471684983238183 Inexact Rounded +lnx1117 ln 0.8158922711411020 -> -0.2034729533939387 Inexact Rounded +lnx1118 ln 0.0067080016475322 -> -5.004454189414139 Inexact Rounded +lnx1119 ln 0.0047583242092716 -> -5.347859729601094 Inexact Rounded +lnx1120 ln 0.0386647411641339 -> -3.252827175263113 Inexact Rounded +lnx1121 ln 0.0050226427841761 -> -5.293799032774131 Inexact Rounded +lnx1122 ln 6.927937541637261 -> 1.935562155866906 Inexact Rounded +lnx1123 ln 0.0000095745343513 -> -11.55640365579814 Inexact Rounded +lnx1124 ln 1.602465492956538 -> 0.4715433763243936 Inexact Rounded +lnx1125 ln 38.98415625087535 -> 3.663155313610213 Inexact Rounded +lnx1126 ln 5.343182042276734 -> 1.675821363568112 Inexact Rounded +lnx1127 ln 55.89763703245816 -> 4.023522107934110 Inexact Rounded +lnx1128 ln 0.7445257810280847 -> -0.2950077988101030 Inexact Rounded +lnx1129 ln 1.631407314946094 -> 0.4894430257201248 Inexact Rounded +lnx1130 ln 0.0005462451932602 -> -7.512442611116852 Inexact Rounded +lnx1131 ln 0.0000864173269362 -> -9.356322359017317 Inexact Rounded +lnx1132 ln 5.227161719132849 -> 1.653868438439637 Inexact Rounded +lnx1133 ln 60.57078466941998 -> 4.103812675662452 Inexact Rounded +lnx1134 ln 0.0992864325333160 -> -2.309746348350318 Inexact Rounded +lnx1135 ln 09.48564268447325 -> 2.249779359074983 Inexact Rounded +lnx1136 ln 0.0036106089355634 -> -5.623878840650787 Inexact Rounded +lnx1137 ln 1.805176865587172 -> 0.5906585734593707 Inexact Rounded +lnx1138 ln 62.59363259642255 -> 4.136663557220559 Inexact Rounded +lnx1139 ln 4.373828261137201 -> 1.475638657912000 Inexact Rounded +lnx1140 ln 0.994483524148738 -> -0.005531747794938690 Inexact Rounded + +-- P=7, within 0-9 +Precision: 7 +lnx1001 ln 0.0912025 -> -2.394673 Inexact Rounded +lnx1002 ln 0.9728626 -> -0.02751242 Inexact Rounded +lnx1003 ln 0.3886032 -> -0.9451965 Inexact Rounded +lnx1004 ln 8.798639 -> 2.174597 Inexact Rounded +lnx1005 ln 2.459121 -> 0.8998040 Inexact Rounded +lnx1006 ln 2.013193 -> 0.6997220 Inexact Rounded +lnx1007 ln 9.064857 -> 2.204405 Inexact Rounded +lnx1008 ln 5.796417 -> 1.757240 Inexact Rounded +lnx1009 ln 0.1143471 -> -2.168517 Inexact Rounded +lnx1010 ln 0.5341542 -> -0.6270707 Inexact Rounded +lnx1011 ln 6.693781 -> 1.901179 Inexact Rounded +lnx1012 ln 0.0081779 -> -4.806320 Inexact Rounded +lnx1013 ln 8.313616 -> 2.117895 Inexact Rounded +lnx1014 ln 3.486925 -> 1.249020 Inexact Rounded +lnx1015 ln 0.1801401 -> -1.714020 Inexact Rounded +lnx1016 ln 0.5227148 -> -0.6487193 Inexact Rounded +lnx1017 ln 7.818111 -> 2.056443 Inexact Rounded +lnx1018 ln 0.0870671 -> -2.441076 Inexact Rounded +lnx1019 ln 8.153966 -> 2.098504 Inexact Rounded +lnx1020 ln 2.040975 -> 0.7134276 Inexact Rounded +lnx1021 ln 1.481642 -> 0.3931509 Inexact Rounded +lnx1022 ln 0.2610123 -> -1.343188 Inexact Rounded +lnx1023 ln 0.466723 -> -0.7620193 Inexact Rounded +lnx1024 ln 0.0518756 -> -2.958907 Inexact Rounded +lnx1025 ln 2.056410 -> 0.7209617 Inexact Rounded +lnx1026 ln 0.181522 -> -1.706378 Inexact Rounded +lnx1027 ln 0.515551 -> -0.6625190 Inexact Rounded +lnx1028 ln 8.425089 -> 2.131214 Inexact Rounded +lnx1029 ln 2.077091 -> 0.7309684 Inexact Rounded +lnx1030 ln 6.212705 -> 1.826596 Inexact Rounded +lnx1031 ln 5.729343 -> 1.745601 Inexact Rounded +lnx1032 ln 4.831251 -> 1.575105 Inexact Rounded +lnx1033 ln 2.029760 -> 0.7079176 Inexact Rounded +lnx1034 ln 8.615060 -> 2.153512 Inexact Rounded +lnx1035 ln 0.0611511 -> -2.794407 Inexact Rounded +lnx1036 ln 5.195269 -> 1.647748 Inexact Rounded +lnx1037 ln 9.617686 -> 2.263604 Inexact Rounded +lnx1038 ln 0.0049382 -> -5.310754 Inexact Rounded +lnx1039 ln 2.786840 -> 1.024908 Inexact Rounded +lnx1040 ln 0.0091073 -> -4.698679 Inexact Rounded + +-- from here 3-digit tests are based on reverse exp tests +precision: 9 +rounding: half_even +maxExponent: 384 +minexponent: -383 + +lnx001 ln 0 -> -Infinity +lnx002 ln 0.367879441 -> -1.00000000 Inexact Rounded +lnx003 ln 1 -> 0 +lnx005 ln 2.71828183 -> 1.00000000 Inexact Rounded +lnx006 ln 2.00000000 -> 0.693147181 Inexact Rounded +lnx007 ln +Infinity -> Infinity + +-- tiny edge cases +precision: 7 +lnx011 ln 1.105171 -> 0.1000001 Inexact Rounded +lnx012 ln 1.010050 -> 0.009999835 Inexact Rounded +lnx013 ln 1.000010 -> 0.000009999950 Inexact Rounded +lnx014 ln 1.000001 -> 9.999995E-7 Inexact Rounded +lnx015 ln 1.000000 -> 0 + +-- basic e=0, e=1, e=2, e=4, e>=8 cases +precision: 7 +lnx041 ln 2.718282 -> 1.000000 Inexact Rounded +lnx042 ln 0.3678794 -> -1.000000 Inexact Rounded +lnx043 ln 22026.47 -> 10.00000 Inexact Rounded +lnx044 ln 0.00004539993 -> -10.00000 Inexact Rounded +lnx045 ln 2.688117E+43 -> 100.0000 Inexact Rounded +lnx046 ln 3.720076E-44 -> -100.0000 Inexact Rounded +lnx047 ln Infinity -> Infinity +lnx048 ln 0E-389 -> -Infinity + +-- miscellanea +precision: 16 +lnx055 ln 2.717658486884572E-236 -> -542.4103112874415 Inexact Rounded +precision: 17 +lnx056 ln 2.7176584868845721E-236 -> -542.41031128744146 Inexact Rounded +precision: 18 +lnx057 ln 2.71765848688457211E-236 -> -542.410311287441459 Inexact Rounded +precision: 19 +lnx058 ln 2.717658486884572112E-236 -> -542.4103112874414592 Inexact Rounded +precision: 20 +lnx059 ln 2.7176584868845721118E-236 -> -542.41031128744145917 Inexact Rounded + +-- inputs ending in ..500.., ..499.., ..100.., ..999.. sequences +precision: 50 +lnx102 ln 0.9999999100000040499998785000027 -> -9.0000000000000000000000033749953829996446124861750E-8 Inexact Rounded +precision: 30 +lnx103 ln 0.999999910000004049999878500003 -> -8.99999999999999999999997337499E-8 Inexact Rounded +precision: 29 +lnx104 ln 0.99999991000000404999987850000 -> -9.0000000000000000000002733750E-8 Inexact Rounded +precision: 28 +lnx105 ln 0.9999999100000040499998785000 -> -9.000000000000000000000273375E-8 Inexact Rounded +precision: 27 +lnx106 ln 0.999999910000004049999878500 -> -9.00000000000000000000027338E-8 Inexact Rounded +precision: 26 +lnx107 ln 0.99999991000000404999987850 -> -9.0000000000000000000002734E-8 Inexact Rounded +precision: 25 +lnx108 ln 0.9999999100000040499998785 -> -9.000000000000000000000273E-8 Inexact Rounded +precision: 24 +lnx109 ln 0.999999910000004049999879 -> -8.99999999999999995000027E-8 Inexact Rounded +precision: 23 +lnx110 ln 0.99999991000000404999988 -> -8.9999999999999998500003E-8 Inexact Rounded +precision: 22 +lnx111 ln 0.9999999100000040499999 -> -8.999999999999997850000E-8 Inexact Rounded +precision: 21 +lnx112 ln 0.999999910000004050000 -> -8.99999999999998785000E-8 Inexact Rounded +precision: 20 +lnx113 ln 0.99999991000000405000 -> -8.9999999999999878500E-8 Inexact Rounded +precision: 19 +lnx114 ln 0.9999999100000040500 -> -8.999999999999987850E-8 Inexact Rounded +precision: 18 +lnx115 ln 0.999999910000004050 -> -8.99999999999998785E-8 Inexact Rounded +-- next may be a > 0.5ulp case; a more precise answer is: +-- -8.99999999999998784999918E-8 +precision: 17 +lnx116 ln 0.99999991000000405 -> -8.9999999999999878E-8 Inexact Rounded +precision: 16 +lnx117 ln 0.9999999100000040 -> -9.000000004999988E-8 Inexact Rounded +precision: 15 +lnx118 ln 0.999999910000004 -> -9.00000000499999E-8 Inexact Rounded +precision: 14 +lnx119 ln 0.99999991000000 -> -9.0000004050000E-8 Inexact Rounded +precision: 13 +lnx120 ln 0.9999999100000 -> -9.000000405000E-8 Inexact Rounded +precision: 12 +lnx121 ln 0.999999910000 -> -9.00000040500E-8 Inexact Rounded +precision: 11 +lnx122 ln 0.99999991000 -> -9.0000004050E-8 Inexact Rounded +precision: 10 +lnx123 ln 0.9999999100 -> -9.000000405E-8 Inexact Rounded +precision: 9 +lnx124 ln 0.999999910 -> -9.00000041E-8 Inexact Rounded +precision: 8 +lnx125 ln 0.99999991 -> -9.0000004E-8 Inexact Rounded +precision: 7 +lnx126 ln 0.9999999 -> -1.000000E-7 Inexact Rounded +precision: 16 +lnx126b ln 0.9999999 -> -1.000000050000003E-7 Inexact Rounded +precision: 6 +lnx127 ln 0.999999 -> -0.00000100000 Inexact Rounded +precision: 5 +lnx128 ln 0.99999 -> -0.000010000 Inexact Rounded +precision: 4 +lnx129 ln 0.9999 -> -0.0001000 Inexact Rounded +precision: 3 +lnx130 ln 0.999 -> -0.00100 Inexact Rounded +precision: 2 +lnx131 ln 0.99 -> -0.010 Inexact Rounded +precision: 1 +lnx132 ln 0.9 -> -0.1 Inexact Rounded + + +-- cases near 1 -- 1 2345678901234567890 +precision: 20 +lnx401 ln 2.7182818284589365041 -> 0.99999999999996000000 Inexact Rounded +lnx402 ln 2.7182818284589636869 -> 0.99999999999997000000 Inexact Rounded +lnx403 ln 2.7182818284589908697 -> 0.99999999999997999999 Inexact Rounded +lnx404 ln 2.7182818284590180525 -> 0.99999999999998999998 Inexact Rounded +lnx405 ln 2.7182818284590452354 -> 1.0000000000000000000 Inexact Rounded +lnx406 ln 2.7182818284593170635 -> 1.0000000000001000000 Inexact Rounded +lnx407 ln 2.7182818284595888917 -> 1.0000000000002000000 Inexact Rounded +precision: 14 +lnx411 ln 2.7182818284589 -> 0.99999999999995 Inexact Rounded +lnx413 ln 2.7182818284590 -> 0.99999999999998 Inexact Rounded +lnx416 ln 2.7182818284591 -> 1.0000000000000 Inexact Rounded +lnx417 ln 2.7182818284592 -> 1.0000000000001 Inexact Rounded + +-- overflows, including some exp overprecise borderlines +precision: 7 +maxExponent: 384 +minExponent: -383 +lnx709 ln 9.999999E+384 -> 886.4953 Inexact Rounded +lnx711 ln 9.999992E+384 -> 886.4953 Inexact Rounded +precision: 16 +lnx722 ln 9.999999999999999E+384 -> 886.4952608027076 Inexact Rounded +lnx724 ln 9.999999999999917E+384 -> 886.4952608027076 Inexact Rounded +lnx726 ln 9.999999999999117E+384 -> 886.4952608027075 Inexact Rounded +-- and more... +precision: 15 +maxExponent: 999 +minExponent: -999 +lnx731 ln 9.99999999999999E+999 -> 2302.58509299405 Inexact Rounded +-- next may be a > 0.5ulp case; a more precise answer is: +-- 2302.58509299404495001799145442 +lnx732 ln 9.99999999999266E+999 -> 2302.58509299404 Inexact Rounded +lnx733 ln 9.99999999999265E+999 -> 2302.58509299404 Inexact Rounded +lnx734 ln 9.99999999999264E+999 -> 2302.58509299404 Inexact Rounded + +-- subnormals and underflows for exp, including underflow-to-zero edge point +precision: 7 +maxExponent: 384 +minExponent: -383 +lnx751 ln 0E-389 -> -Infinity +lnx758 ln 1.000001E-383 -> -881.8901 Inexact Rounded +lnx759 ln 9.99991E-384 -> -881.8901 Inexact Rounded +lnx760 ln 4.4605E-385 -> -885.0000 Inexact Rounded +lnx761 ln 2.221E-386 -> -887.9999 Inexact Rounded +lnx762 ln 3.01E-387 -> -889.9985 Inexact Rounded +lnx763 ln 1.7E-388 -> -892.8724 Inexact Rounded +lnx764 ln 1.5E-388 -> -892.9976 Inexact Rounded +lnx765 ln 9E-389 -> -893.5084 Inexact Rounded +lnx766 ln 1E-389 -> -895.7056 Inexact Rounded +lnx774 ln 0E-389 -> -Infinity + +-- special values +lnx820 ln Infinity -> Infinity +lnx821 ln 0 -> -Infinity +lnx822 ln NaN -> NaN +lnx823 ln sNaN -> NaN Invalid_operation +-- propagating NaNs +lnx824 ln sNaN123 -> NaN123 Invalid_operation +lnx825 ln -sNaN321 -> -NaN321 Invalid_operation +lnx826 ln NaN456 -> NaN456 +lnx827 ln -NaN654 -> -NaN654 +lnx828 ln NaN1 -> NaN1 + +-- Invalid operations due to restrictions +-- [next two probably skipped by most test harnesses] +precision: 100000000 +lnx901 ln 1 -> NaN Invalid_context +precision: 99999999 +lnx902 ln 0 -> NaN Invalid_context + +precision: 9 +maxExponent: 1000000 +minExponent: -999999 +lnx903 ln 1 -> NaN Invalid_context +maxExponent: 999999 +minExponent: -999999 +lnx904 ln 0 -> -Infinity +maxExponent: 999999 +minExponent: -1000000 +lnx905 ln 1 -> NaN Invalid_context +maxExponent: 999999 +minExponent: -999998 +lnx906 ln 0 -> -Infinity + +-- payload decapitate +precision: 5 +lnx910 ln -sNaN1234567890 -> -NaN67890 Invalid_operation + +-- Null test +lnx900 ln # -> NaN Invalid_operation + + diff --git a/Lib/test/decimaltestdata/log10.decTest b/Lib/test/decimaltestdata/log10.decTest index 5169eab..6502f0d 100644 --- a/Lib/test/decimaltestdata/log10.decTest +++ b/Lib/test/decimaltestdata/log10.decTest @@ -1,551 +1,551 @@ ------------------------------------------------------------------------- --- log10.decTest -- decimal logarithm in base 10 -- --- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This emphasises the testing of notable cases, as they will often --- have unusual paths (especially the 10**n results). - -extended: 1 -precision: 16 -rounding: half_even -maxExponent: 384 -minexponent: -383 - --- examples in specification -precision: 9 -logxs000 log10 0 -> -Infinity -logxs001 log10 0.001 -> -3 -logxs002 log10 1 -> 0 -logxs003 log10 2 -> 0.301029996 Inexact Rounded -logxs004 log10 10 -> 1 -logxs005 log10 70 -> 1.84509804 Inexact Rounded -logxs006 log10 +Infinity -> Infinity - - --- basics (examples in specification, etc.) -precision: 16 -logx0000 log10 0 -> -Infinity -logx0001 log10 7E-1000 -> -999.1549019599857 Inexact Rounded -logx0002 log10 1.1E-9 -> -8.958607314841775 Inexact Rounded -logx0003 log10 0.0007 -> -3.154901959985743 Inexact Rounded -logx0004 log10 0.11 -> -0.9586073148417750 Inexact Rounded -logx0005 log10 0.7 -> -0.1549019599857432 Inexact Rounded -logx0006 log10 1 -> 0 -logx0007 log10 1.5 -> 0.1760912590556812 Inexact Rounded -logx0008 log10 2 -> 0.3010299956639812 Inexact Rounded -logx0009 log10 2.718281828459045 -> 0.4342944819032518 Inexact Rounded -logx0010 log10 2.718281828459046 -> 0.4342944819032519 Inexact Rounded -logx0011 log10 2.718281828459047 -> 0.4342944819032521 Inexact Rounded -logx0012 log10 7 -> 0.8450980400142568 Inexact Rounded -logx0013 log10 10 -> 1 -logx0014 log10 10.5 -> 1.021189299069938 Inexact Rounded -logx0015 log10 11 -> 1.041392685158225 Inexact Rounded -logx0016 log10 70 -> 1.845098040014257 Inexact Rounded -logx0017 log10 9999 -> 3.999956568380192 Inexact Rounded -logx0018 log10 1.21E6 -> 6.082785370316450 Inexact Rounded -logx0019 log10 1.1E+9 -> 9.041392685158225 Inexact Rounded -logx0020 log10 7E+1000 -> 1000.845098040014 Inexact Rounded -logx0021 log10 +Infinity -> Infinity - --- notable cases --- negatives -logx0031 log10 -1E-9 -> NaN Invalid_operation -logx0032 log10 -0.0007 -> NaN Invalid_operation -logx0033 log10 -0.1 -> NaN Invalid_operation -logx0034 log10 -0.7 -> NaN Invalid_operation -logx0035 log10 -1 -> NaN Invalid_operation -logx0036 log10 -1.5 -> NaN Invalid_operation -logx0037 log10 -2 -> NaN Invalid_operation -logx0038 log10 -10.5 -> NaN Invalid_operation -logx0039 log10 -10.5 -> NaN Invalid_operation -logx0040 log10 -9999 -> NaN Invalid_operation -logx0041 log10 -10 -> NaN Invalid_operation -logx0042 log10 -0 -> -Infinity -logx0043 log10 -0E+17 -> -Infinity -logx0044 log10 -0E-17 -> -Infinity --- other zeros -logx0051 log10 0 -> -Infinity -logx0052 log10 0E+17 -> -Infinity -logx0053 log10 0E-17 -> -Infinity --- infinities -logx0055 log10 -Infinity -> NaN Invalid_operation -logx0056 log10 +Infinity -> Infinity --- ones -logx0061 log10 1 -> 0 -logx0062 log10 1.0 -> 0 -logx0063 log10 1.000000000000000 -> 0 -logx0064 log10 1.000000000000000000 -> 0 - --- notable cases -- exact powers of 10 -logx1100 log10 1 -> 0 -logx1101 log10 10 -> 1 -logx1102 log10 100 -> 2 -logx1103 log10 1000 -> 3 -logx1104 log10 10000 -> 4 -logx1105 log10 100000 -> 5 -logx1106 log10 1000000 -> 6 -logx1107 log10 10000000 -> 7 -logx1108 log10 100000000 -> 8 -logx1109 log10 1000000000 -> 9 -logx1110 log10 10000000000 -> 10 -logx1111 log10 100000000000 -> 11 -logx1112 log10 1000000000000 -> 12 -logx1113 log10 0.00000000001 -> -11 -logx1114 log10 0.0000000001 -> -10 -logx1115 log10 0.000000001 -> -9 -logx1116 log10 0.00000001 -> -8 -logx1117 log10 0.0000001 -> -7 -logx1118 log10 0.000001 -> -6 -logx1119 log10 0.00001 -> -5 -logx1120 log10 0.0001 -> -4 -logx1121 log10 0.001 -> -3 -logx1122 log10 0.01 -> -2 -logx1123 log10 0.1 -> -1 -logx1124 log10 1E-99 -> -99 -logx1125 log10 1E-100 -> -100 -logx1126 log10 1E-383 -> -383 - --- check normally exact cases round properly -precision: 1 -logx1141 log10 10000000000 -> 1E+1 Rounded -logx1142 log10 1000000000000 -> 1E+1 Inexact Rounded -logx1143 log10 1E+100 -> 1E+2 Rounded -logx1144 log10 1E+123 -> 1E+2 Inexact Rounded -logx1145 log10 1E+126 -> 1E+2 Inexact Rounded -logx1146 log10 1E+916 -> 9E+2 Inexact Rounded -logx1147 log10 1E+999 -> 1E+3 Inexact Rounded - -precision: 2 -logx1151 log10 10000000000 -> 10 -logx1152 log10 1000000000000 -> 12 -logx1153 log10 1E+100 -> 1.0E+2 Rounded -logx1154 log10 1E+123 -> 1.2E+2 Inexact Rounded -logx1155 log10 1E+126 -> 1.3E+2 Inexact Rounded -logx1156 log10 1E+916 -> 9.2E+2 Inexact Rounded -logx1157 log10 1E+999 -> 1.0E+3 Inexact Rounded --- some half-way point rounds, other cases, and negatives -logx1158 log10 1E+125 -> 1.2E+2 Inexact Rounded -logx1159 log10 1E+135 -> 1.4E+2 Inexact Rounded -logx1160 log10 1E+129 -> 1.3E+2 Inexact Rounded -logx1161 log10 1E+131 -> 1.3E+2 Inexact Rounded -logx1162 log10 1E-123 -> -1.2E+2 Inexact Rounded -logx1163 log10 1E-126 -> -1.3E+2 Inexact Rounded -logx1164 log10 1E-916 -> -9.2E+2 Inexact Rounded -logx1165 log10 1E-999 -> -1.0E+3 Inexact Rounded -logx1166 log10 1E-125 -> -1.2E+2 Inexact Rounded -logx1167 log10 1E-135 -> -1.4E+2 Inexact Rounded -logx1168 log10 1E-129 -> -1.3E+2 Inexact Rounded -logx1169 log10 1E-131 -> -1.3E+2 Inexact Rounded - -precision: 3 -logx1171 log10 10000000000 -> 10 -logx1172 log10 1000000000000 -> 12 -logx1173 log10 1E+100 -> 100 -logx1174 log10 1E+123 -> 123 -logx1175 log10 1E+126 -> 126 -logx1176 log10 1E+916 -> 916 -logx1177 log10 1E+999 -> 999 - --- log10(2) .. tests both ln(2) and ln(10) constants, too -precision: 50 -logx1201 log10 2 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded -logx1202 log10 2.000 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded -logx1203 log10 0.2E1 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded -precision: 49 -logx1204 log10 2 -> 0.3010299956639811952137388947244930267681898814621 Inexact Rounded -precision: 48 -logx1205 log10 2 -> 0.301029995663981195213738894724493026768189881462 Inexact Rounded -precision: 47 -logx1206 log10 2 -> 0.30102999566398119521373889472449302676818988146 Inexact Rounded -precision: 46 -logx1207 log10 2 -> 0.3010299956639811952137388947244930267681898815 Inexact Rounded -precision: 45 -logx1208 log10 2 -> 0.301029995663981195213738894724493026768189881 Inexact Rounded -precision: 44 -logx1209 log10 2 -> 0.30102999566398119521373889472449302676818988 Inexact Rounded -precision: 43 -logx1210 log10 2 -> 0.3010299956639811952137388947244930267681899 Inexact Rounded -precision: 42 -logx1211 log10 2 -> 0.301029995663981195213738894724493026768190 Inexact Rounded -precision: 41 -logx1212 log10 2 -> 0.30102999566398119521373889472449302676819 Inexact Rounded -precision: 40 -logx1213 log10 2 -> 0.3010299956639811952137388947244930267682 Inexact Rounded -precision: 39 -logx1214 log10 2 -> 0.301029995663981195213738894724493026768 Inexact Rounded -precision: 38 -logx1215 log10 2 -> 0.30102999566398119521373889472449302677 Inexact Rounded -precision: 37 -logx1216 log10 2 -> 0.3010299956639811952137388947244930268 Inexact Rounded -precision: 36 -logx1217 log10 2 -> 0.301029995663981195213738894724493027 Inexact Rounded -precision: 35 -logx1218 log10 2 -> 0.30102999566398119521373889472449303 Inexact Rounded -precision: 34 -logx1219 log10 2 -> 0.3010299956639811952137388947244930 Inexact Rounded -precision: 33 -logx1220 log10 2 -> 0.301029995663981195213738894724493 Inexact Rounded -precision: 32 -logx1221 log10 2 -> 0.30102999566398119521373889472449 Inexact Rounded -precision: 31 -logx1222 log10 2 -> 0.3010299956639811952137388947245 Inexact Rounded -precision: 30 -logx1223 log10 2 -> 0.301029995663981195213738894724 Inexact Rounded -precision: 29 -logx1224 log10 2 -> 0.30102999566398119521373889472 Inexact Rounded -precision: 28 -logx1225 log10 2 -> 0.3010299956639811952137388947 Inexact Rounded -precision: 27 -logx1226 log10 2 -> 0.301029995663981195213738895 Inexact Rounded -precision: 26 -logx1227 log10 2 -> 0.30102999566398119521373889 Inexact Rounded -precision: 25 -logx1228 log10 2 -> 0.3010299956639811952137389 Inexact Rounded -precision: 24 -logx1229 log10 2 -> 0.301029995663981195213739 Inexact Rounded -precision: 23 -logx1230 log10 2 -> 0.30102999566398119521374 Inexact Rounded -precision: 22 -logx1231 log10 2 -> 0.3010299956639811952137 Inexact Rounded -precision: 21 -logx1232 log10 2 -> 0.301029995663981195214 Inexact Rounded -precision: 20 -logx1233 log10 2 -> 0.30102999566398119521 Inexact Rounded -precision: 19 -logx1234 log10 2 -> 0.3010299956639811952 Inexact Rounded -precision: 18 -logx1235 log10 2 -> 0.301029995663981195 Inexact Rounded -precision: 17 -logx1236 log10 2 -> 0.30102999566398120 Inexact Rounded -precision: 16 -logx1237 log10 2 -> 0.3010299956639812 Inexact Rounded -precision: 15 -logx1238 log10 2 -> 0.301029995663981 Inexact Rounded -precision: 14 -logx1239 log10 2 -> 0.30102999566398 Inexact Rounded -precision: 13 -logx1240 log10 2 -> 0.3010299956640 Inexact Rounded -precision: 12 -logx1241 log10 2 -> 0.301029995664 Inexact Rounded -precision: 11 -logx1242 log10 2 -> 0.30102999566 Inexact Rounded -precision: 10 -logx1243 log10 2 -> 0.3010299957 Inexact Rounded -precision: 9 -logx1244 log10 2 -> 0.301029996 Inexact Rounded -precision: 8 -logx1245 log10 2 -> 0.30103000 Inexact Rounded -precision: 7 -logx1246 log10 2 -> 0.3010300 Inexact Rounded -precision: 6 -logx1247 log10 2 -> 0.301030 Inexact Rounded -precision: 5 -logx1248 log10 2 -> 0.30103 Inexact Rounded -precision: 4 -logx1249 log10 2 -> 0.3010 Inexact Rounded -precision: 3 -logx1250 log10 2 -> 0.301 Inexact Rounded -precision: 2 -logx1251 log10 2 -> 0.30 Inexact Rounded -precision: 1 -logx1252 log10 2 -> 0.3 Inexact Rounded - -maxExponent: 384 -minExponent: -383 -precision: 16 -rounding: half_even - --- More close-to-e, etc., tests -precision: 34 -logx1301 log10 2.718281828459045235360287471352661 -> 0.4342944819032518276511289189166048 Inexact Rounded -logx1302 log10 2.718281828459045235360287471352662 -> 0.4342944819032518276511289189166050 Inexact Rounded -logx1303 log10 2.718281828459045235360287471352663 -> 0.4342944819032518276511289189166052 Inexact Rounded -logx1304 log10 0.99999999999999999999999999999999 -> -4.342944819032518276511289189166073E-33 Inexact Rounded -logx1305 log10 0.999999999999999999999999999999999 -> -4.342944819032518276511289189166053E-34 Inexact Rounded -logx1306 log10 0.9999999999999999999999999999999999 -> -4.342944819032518276511289189166051E-35 Inexact Rounded -logx1307 log10 1.000000000000000000000000000000000 -> 0 -logx1308 log10 1.0000000000000000000000000000000001 -> 4.342944819032518276511289189166051E-35 Inexact Rounded -logx1309 log10 1.000000000000000000000000000000001 -> 4.342944819032518276511289189166049E-34 Inexact Rounded -logx1310 log10 1.00000000000000000000000000000001 -> 4.342944819032518276511289189166029E-33 Inexact Rounded --- lower p -precision: 7 -logx1320 log10 0.999999 -> -4.342947E-7 Inexact Rounded -logx1321 log10 0.9999999 -> -4.342945E-8 Inexact Rounded -logx1322 log10 0.99999999 -> -4.342945E-9 Inexact Rounded -logx1323 log10 0.999999999 -> -4.342945E-10 Inexact Rounded -logx1324 log10 1.00000000 -> 0 -logx1325 log10 1.00000001 -> 4.342945E-9 Inexact Rounded -logx1326 log10 1.0000001 -> 4.342945E-8 Inexact Rounded -logx1327 log10 1.000001 -> 4.342943E-7 Inexact Rounded - --- near 10^3 -precision: 9 -logx1331 log10 999.9999998 -> 3.00000000 Inexact Rounded -logx1332 log10 999.9999999 -> 3.00000000 Inexact Rounded -logx1333 log10 1000.000000 -> 3 -logx1334 log10 1000.000001 -> 3.00000000 Inexact Rounded -logx1335 log10 1000.000002 -> 3.00000000 Inexact Rounded -precision: 16 -logx1341 log10 999.9999998 -> 2.999999999913141 Inexact Rounded -logx1342 log10 999.9999999 -> 2.999999999956571 Inexact Rounded -logx1343 log10 1000.000000 -> 3 -logx1344 log10 1000.000001 -> 3.000000000434294 Inexact Rounded -logx1345 log10 1000.000002 -> 3.000000000868589 Inexact Rounded - --- suggestions from Ilan Nehama -logx1400 log10 10E-3 -> -2 -logx1401 log10 10E-2 -> -1 -logx1402 log10 100E-2 -> 0 -logx1403 log10 1000E-2 -> 1 -logx1404 log10 10000E-2 -> 2 -logx1405 log10 10E-1 -> 0 -logx1406 log10 100E-1 -> 1 -logx1407 log10 1000E-1 -> 2 -logx1408 log10 10000E-1 -> 3 -logx1409 log10 10E0 -> 1 -logx1410 log10 100E0 -> 2 -logx1411 log10 1000E0 -> 3 -logx1412 log10 10000E0 -> 4 -logx1413 log10 10E1 -> 2 -logx1414 log10 100E1 -> 3 -logx1415 log10 1000E1 -> 4 -logx1416 log10 10000E1 -> 5 -logx1417 log10 10E2 -> 3 -logx1418 log10 100E2 -> 4 -logx1419 log10 1000E2 -> 5 -logx1420 log10 10000E2 -> 6 - --- Randoms --- P=50, within 0-9999 -Precision: 50 -logx2501 log10 0.00035448001667968141775891246991912655961163345904 -> -3.4504082425411775290864053318247274944685586188505 Inexact Rounded -logx2502 log10 70.636455726424311228255338637935330826995136597644 -> 1.8490288998408492045793070255302335558140975719247 Inexact Rounded -logx2503 log10 0.00000000000000233550362473821889060812804063040169 -> -14.631619454343834858023578299142866557717904223667 Inexact Rounded -logx2504 log10 97.783628621523244679901260358286898958832135433764 -> 1.9902661493224219517897657964362571690592734407330 Inexact Rounded -logx2505 log10 0062.2377135315858392802612812022807838599572017342 -> 1.7940536293085066199287632725026837018486533544141 Inexact Rounded -logx2506 log10 6.3767634652071053619977602804724129652981747879532 -> 0.80460030789825961615100163576080761326857374098644 Inexact Rounded -logx2507 log10 63.297088981313278529306533814195068850532666658798 -> 1.8013837373724427092417170149098614410849353839673 Inexact Rounded -logx2508 log10 0.00000077239693316881797717820110898167721602299187 -> -6.1121594592718550613773886241951966264826760310047 Inexact Rounded -logx2509 log10 0.00000003953580359780185534830572461922527831395002 -> -7.4030094293833847136252547069905477213541787177561 Inexact Rounded -logx2510 log10 754.62905817369989169188998111527272688791544577204 -> 2.8777335243761300047758534304371912099958057545416 Inexact Rounded -logx2511 log10 0.00000048360378410241428936607147056283282849158312 -> -6.3155103095309353457604038397980091650760346334512 Inexact Rounded -logx2512 log10 0.00007509037583645612577196104591672080542932166089 -> -4.1244157219700166314012344705538088030592896111026 Inexact Rounded -logx2513 log10 0.00000000000705475944638915053419839063567898092064 -> -11.151517790256466048553810002525868198178167950377 Inexact Rounded -logx2514 log10 9.6210300460497657917445410947099633479609165120661 -> 0.98322157093260978206633922877716078683518617768411 Inexact Rounded -logx2515 log10 0.00000000050150361386555527496607245976120864985611 -> -9.2997259330798261040411086835563234390934934629340 Inexact Rounded -logx2516 log10 098.24754029731994125797723545333677604490074810751 -> 1.9923216862874337077795278629351060819105679670633 Inexact Rounded -logx2517 log10 7.5091998150046994320441463854301624742491015752980 -> 0.87559366078005924080766469158763499725414024128781 Inexact Rounded -logx2518 log10 0.00000000000079540571273330075193668596942268542425 -> -12.099411294165176028817305108475326325006250936963 Inexact Rounded -logx2519 log10 0.00000042395034799555215782907515074134154915491701 -> -6.3726850039125381134069450802108893075604464135297 Inexact Rounded -logx2520 log10 56.683376304674355481905023145238799909301732694982 -> 1.7534557107853480435703421826077606250636580091754 Inexact Rounded -logx2521 log10 48.734033811444195070807606721517169810438049581227 -> 1.6878323602741065190942654710049433808208291564049 Inexact Rounded -logx2522 log10 0.00074830310930046865009851706989430228561880221063 -> -3.1259224502209974082223667712016445572431791920618 Inexact Rounded -logx2523 log10 36.677348885111593384020836720396262497122708598359 -> 1.5643979364260796086754530282302605477567469395425 Inexact Rounded -logx2524 log10 0.00000000000000004495678560480432858812419145833744 -> -16.347204748239740510014320630363244015916029619561 Inexact Rounded -logx2525 log10 9509.5854013650642799374159131940108748594774307104 -> 3.9781615829916326741100166519726824430945406302661 Inexact Rounded -logx2526 log10 0.07834891268689177014044454793608715276615743819097 -> -1.1059670262197643147805517398621288897669876996348 Inexact Rounded -logx2527 log10 0.00000029584529880706128444454688454999032801904794 -> -6.5289353275814043710076526920566721570375026917206 Inexact Rounded -logx2528 log10 3.0713496544497618098794332787772186176981011904294 -> 0.48732926103896828546424341029492468100431414072994 Inexact Rounded -logx2529 log10 352.66392670788816474407442785460803833927136413943 -> 2.5473610388199562714709836398243933320284077008314 Inexact Rounded -logx2530 log10 0.00304743125181876267210516527361742185617091801650 -> -2.5160660830163981967774124745311497447050056400207 Inexact Rounded -logx2531 log10 0.00000076120535894952136499250364604538117729437183 -> -6.1184981629047051532448413863950776496652483019415 Inexact Rounded -logx2532 log10 769.88795978534353052965286195053735007473187735815 -> 2.8864275277862652709986498581064117950288798222100 Inexact Rounded -logx2533 log10 0.00000000000000041297494808612226304619570016336188 -> -15.384076292745415917510668454361868659468669804710 Inexact Rounded -logx2534 log10 860.88864595714426940247940960258558876903741966974 -> 2.9349469800554277915920278090647283233440859155176 Inexact Rounded -logx2535 log10 5839.0328812994787235900178587371051096898683972444 -> 3.7663409208972392569269125539438874737147906238543 Inexact Rounded -logx2536 log10 0.00000028532710151284840471670497112821201598377841 -> -6.5446569753514027675878879843238065488490618159490 Inexact Rounded -logx2537 log10 0.00000000000000009734490059931638483445631835651581 -> -16.011686794011271135978633880864278692254243106931 Inexact Rounded -logx2538 log10 5.8610949526439529489252302463450302981511714144330 -> 0.76797875722452549281028552067645732490929361952278 Inexact Rounded -logx2539 log10 6.6282432221115923372151148990137179611977576327206 -> 0.82139843639227213211012044000785757267155736071361 Inexact Rounded -logx2540 log10 0.00000000001994071862386846626954819923923344413454 -> -10.700259194632339980266559224447212260115021637626 Inexact Rounded - --- P=34, within 0-9999 -Precision: 34 -logx2201 log10 1.522513203889714179088327328864183 -> 0.1825610677098896250496651330492109 Inexact Rounded -logx2202 log10 0.171123774769717316154080888930404 -> -0.7666896483548462582461898092764408 Inexact Rounded -logx2203 log10 0.0000000997467236251714283104963838 -> -7.001101360652518274271569010312115 Inexact Rounded -logx2204 log10 0.0008856103624122479769647543468633 -> -3.052757310476070891830490327138190 Inexact Rounded -logx2205 log10 1.938274868738032930709498221236758 -> 0.2874153648259449520201536171714594 Inexact Rounded -logx2206 log10 479.5667847823826713082613445010097 -> 2.680849095850361068709165157286435 Inexact Rounded -logx2207 log10 8856.136599178820202141823157336804 -> 3.947244306584767101480454261950559 Inexact Rounded -logx2208 log10 0.0000911026318801903982642871344858 -> -4.040469076434979398438617464033826 Inexact Rounded -logx2209 log10 0.0000000000017271112650427414732630 -> -11.76267968314038748995178212654921 Inexact Rounded -logx2210 log10 6.962605370078885647639503548229695 -> 0.8427717807200322352686396925992250 Inexact Rounded -logx2211 log10 0.3354804428992793132855923541692781 -> -0.4743327923012159170967636070844834 Inexact Rounded -logx2212 log10 2.079864257474859008252165836663504 -> 0.3180349916198059046812506741388856 Inexact Rounded -logx2213 log10 2805.479529292939499220276986621988 -> 3.448007104139974344565978780624744 Inexact Rounded -logx2214 log10 66.45731133034187374557028537213949 -> 1.822542767005644041661520936223086 Inexact Rounded -logx2215 log10 0.0000001206521261762681738274822835 -> -6.918465020390216969561494755767318 Inexact Rounded -logx2216 log10 0.0000000001884891916264401160472381 -> -9.724713548119065386091933007528633 Inexact Rounded -logx2217 log10 0.0000015467279551726326581314582759 -> -5.810586065070435383755759514608738 Inexact Rounded -logx2218 log10 0.0090776316728068586744633914135952 -> -2.042027442843745884503280954390114 Inexact Rounded -logx2219 log10 0.0000000000024541106528713393740030 -> -11.61010585935635713090119156069479 Inexact Rounded -logx2220 log10 14.12936879385863410081087750645856 -> 1.150122760895466989841057385742662 Inexact Rounded -logx2221 log10 0.0000036912481831392922922647231392 -> -5.432826753789892283556211380824203 Inexact Rounded -logx2222 log10 0.0000000004067477525420424270138734 -> -9.390674838050073122857868012475060 Inexact Rounded -logx2223 log10 7080.122562705399744969319589806194 -> 3.850040775747103318724330047546916 Inexact Rounded -logx2224 log10 261.3491411363679209175524790255725 -> 2.417221077227536319655699517530855 Inexact Rounded -logx2225 log10 003.9945581449915240094728380041494 -> 0.6014687471531988260823066997845691 Inexact Rounded -logx2226 log10 0.0000000000583549164588495206767840 -> -10.23392254834182677023231713519341 Inexact Rounded -logx2227 log10 9567.961832607240278342761088487484 -> 3.980819434211107631569386147016368 Inexact Rounded -logx2228 log10 06.26592979160342972777219828867033 -> 0.7969855243966221408595024012574729 Inexact Rounded -logx2229 log10 0.0000000000589847046598067273287319 -> -10.22926059078206218717755253582907 Inexact Rounded -logx2230 log10 567.9388648235589204769442863724997 -> 2.754301589058313576472380262907638 Inexact Rounded -logx2231 log10 039.7790325480037778918162264883415 -> 1.599654216592019199639285308997886 Inexact Rounded -logx2232 log10 0.0000000005123951921894162149817207 -> -9.290394953898862694847327137242690 Inexact Rounded -logx2233 log10 0.0000000000038500999723636904276723 -> -11.41452799337924056186867324854691 Inexact Rounded -logx2234 log10 0.0006726500658977759825616537935864 -> -3.172210810922768725687671849421792 Inexact Rounded -logx2235 log10 260.2400250475967528429943779126507 -> 2.415374092073799204236801383070064 Inexact Rounded -logx2236 log10 0.0000000006101942339385102585042548 -> -9.214531900562046557191261226632509 Inexact Rounded -logx2237 log10 0.0000000010846867501382746760066557 -> -8.964695664883282406359874242387236 Inexact Rounded -logx2238 log10 60.24078375568814769010333711509928 -> 1.779890613567084253168373266648922 Inexact Rounded -logx2239 log10 0.0012058738711757669337600252986093 -> -2.918698115012605915753728220896010 Inexact Rounded -logx2240 log10 230.9450930197841600611503095185600 -> 2.363508739056822846742942599628966 Inexact Rounded - --- P=16, within 0-999 -Precision: 16 -logx2101 log10 0.0072067119605184 -> -2.142262835573038 Inexact Rounded -logx2102 log10 503.6828482226624 -> 2.702157162195652 Inexact Rounded -logx2103 log10 64.96074447821815 -> 1.812650993464174 Inexact Rounded -logx2104 log10 48.75408597467246 -> 1.688011018842600 Inexact Rounded -logx2105 log10 0.0329009839269587 -> -1.482791113975280 Inexact Rounded -logx2106 log10 223.5320415060633 -> 2.349339784523410 Inexact Rounded -logx2107 log10 73.12765002292194 -> 1.864081617476268 Inexact Rounded -logx2108 log10 487.3749378358509 -> 2.687863192802252 Inexact Rounded -logx2109 log10 0.0000019671987621 -> -5.706151757557926 Inexact Rounded -logx2110 log10 0.0570680660609784 -> -1.243606844697873 Inexact Rounded -logx2111 log10 33.10311638788998 -> 1.519868880976773 Inexact Rounded -logx2112 log10 0.0687382699187077 -> -1.162801402868185 Inexact Rounded -logx2113 log10 258.9416193626484 -> 2.413201859654145 Inexact Rounded -logx2114 log10 0.0005306100136736 -> -3.275224558269725 Inexact Rounded -logx2115 log10 65.78490393408572 -> 1.818126244825109 Inexact Rounded -logx2116 log10 504.2328842073510 -> 2.702631165346958 Inexact Rounded -logx2117 log10 9.417432755815027 -> 0.9739325278524503 Inexact Rounded -logx2118 log10 006.7054835355498 -> 0.8264301004947640 Inexact Rounded -logx2119 log10 0.0917012272363915 -> -1.037624852133399 Inexact Rounded -logx2120 log10 5.959404385244921 -> 0.7752028561953401 Inexact Rounded -logx2121 log10 0.0001209759148486 -> -3.917301084968903 Inexact Rounded -logx2122 log10 0.0004706112139838 -> -3.327337728428039 Inexact Rounded -logx2123 log10 0.0069700457377046 -> -2.156764372035771 Inexact Rounded -logx2124 log10 0.5155584569852619 -> -0.2877220847805025 Inexact Rounded -logx2125 log10 88.06005885607414 -> 1.944778971389913 Inexact Rounded -logx2126 log10 0.0448240038219866 -> -1.348489353509709 Inexact Rounded -logx2127 log10 3.419622484059565 -> 0.5339781639101145 Inexact Rounded -logx2128 log10 5.171123353858721 -> 0.7135848977142854 Inexact Rounded -logx2129 log10 0.0002133188319807 -> -3.670970802945872 Inexact Rounded -logx2130 log10 46.21086703136966 -> 1.664744117045149 Inexact Rounded -logx2131 log10 0.0000631053714415 -> -4.199933672639880 Inexact Rounded -logx2132 log10 78.66019196870698 -> 1.895755001962469 Inexact Rounded -logx2133 log10 0.0007152278351188 -> -3.145555592082297 Inexact Rounded -logx2134 log10 45.52509819928536 -> 1.658250891256892 Inexact Rounded -logx2135 log10 0.0000703227795740 -> -4.152903971697183 Inexact Rounded -logx2136 log10 26.24438641426669 -> 1.419036423550599 Inexact Rounded -logx2137 log10 0.0000044654829535 -> -5.350131564166817 Inexact Rounded -logx2138 log10 0.7360702733062529 -> -0.1330807211893611 Inexact Rounded -logx2139 log10 8.417059176469655 -> 0.9251603805112778 Inexact Rounded -logx2140 log10 0.0002926570767968 -> -3.533640969664818 Inexact Rounded - --- P=7, within 0-99 -Precision: 7 -logx2001 log10 57.26089 -> 1.757858 Inexact Rounded -logx2002 log10 0.0575421 -> -1.240014 Inexact Rounded -logx2003 log10 0.5918465 -> -0.2277909 Inexact Rounded -logx2004 log10 0.0068776 -> -2.162563 Inexact Rounded -logx2005 log10 0.0066833 -> -2.175009 Inexact Rounded -logx2006 log10 9.926963 -> 0.9968164 Inexact Rounded -logx2007 log10 0.0041852 -> -2.378284 Inexact Rounded -logx2008 log10 84.15412 -> 1.925075 Inexact Rounded -logx2009 log10 2.466856 -> 0.3921438 Inexact Rounded -logx2010 log10 0.0058047 -> -2.236220 Inexact Rounded -logx2011 log10 9.885154 -> 0.9949834 Inexact Rounded -logx2012 log10 0.6667654 -> -0.1760269 Inexact Rounded -logx2013 log10 34.65736 -> 1.539795 Inexact Rounded -logx2014 log10 0.0026884 -> -2.570506 Inexact Rounded -logx2015 log10 0.0432767 -> -1.363746 Inexact Rounded -logx2016 log10 66.01407 -> 1.819637 Inexact Rounded -logx2017 log10 0.0070572 -> -2.151368 Inexact Rounded -logx2018 log10 0.0731613 -> -1.135719 Inexact Rounded -logx2019 log10 9.838983 -> 0.9929502 Inexact Rounded -logx2020 log10 15.89696 -> 1.201314 Inexact Rounded -logx2021 log10 8.459247 -> 0.9273317 Inexact Rounded -logx2022 log10 0.0010873 -> -2.963651 Inexact Rounded -logx2023 log10 0.6498619 -> -0.1871789 Inexact Rounded -logx2024 log10 0.0847008 -> -1.072112 Inexact Rounded -logx2025 log10 0.0075489 -> -2.122116 Inexact Rounded -logx2026 log10 51.11152 -> 1.708519 Inexact Rounded -logx2027 log10 0.7233866 -> -0.1406295 Inexact Rounded -logx2028 log10 2.254721 -> 0.3530928 Inexact Rounded -logx2029 log10 6.568444 -> 0.8174625 Inexact Rounded -logx2030 log10 83.72639 -> 1.922862 Inexact Rounded -logx2031 log10 6.720585 -> 0.8274071 Inexact Rounded -logx2032 log10 87.90366 -> 1.944007 Inexact Rounded -logx2033 log10 0.0433324 -> -1.363187 Inexact Rounded -logx2034 log10 34.63912 -> 1.539567 Inexact Rounded -logx2035 log10 0.8089059 -> -0.09210200 Inexact Rounded -logx2036 log10 7.793405 -> 0.8917272 Inexact Rounded -logx2037 log10 0.0041757 -> -2.379271 Inexact Rounded -logx2038 log10 7.135417 -> 0.8534194 Inexact Rounded -logx2039 log10 12.49570 -> 1.096761 Inexact Rounded -logx2040 log10 6.356276 -> 0.8032027 Inexact Rounded - --------- -maxExponent: 384 -minExponent: -383 -precision: 16 -rounding: half_even - --- special values -logx820 log10 Infinity -> Infinity -logx821 log10 0 -> -Infinity -logx822 log10 NaN -> NaN -logx823 log10 sNaN -> NaN Invalid_operation --- propagating NaNs -logx824 log10 sNaN123 -> NaN123 Invalid_operation -logx825 log10 -sNaN321 -> -NaN321 Invalid_operation -logx826 log10 NaN456 -> NaN456 -logx827 log10 -NaN654 -> -NaN654 -logx828 log10 NaN1 -> NaN1 - - --- Invalid operations due to restrictions --- [next two probably skipped by most test harnesses] -precision: 100000000 -logx901 log10 1 -> NaN Invalid_context -precision: 99999999 -logx902 log10 0 -> NaN Invalid_context - -precision: 9 -maxExponent: 1000000 -minExponent: -999999 -logx903 log10 1 -> NaN Invalid_context -maxExponent: 999999 -minExponent: -999999 -logx904 log10 0 -> -Infinity -maxExponent: 999999 -minExponent: -1000000 -logx905 log10 1 -> NaN Invalid_context -maxExponent: 999999 -minExponent: -999998 -logx906 log10 0 -> -Infinity - --- Null test -logx900 log10 # -> NaN Invalid_operation - - +------------------------------------------------------------------------ +-- log10.decTest -- decimal logarithm in base 10 -- +-- Copyright (c) IBM Corporation, 2005, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This emphasises the testing of notable cases, as they will often +-- have unusual paths (especially the 10**n results). + +extended: 1 +precision: 16 +rounding: half_even +maxExponent: 384 +minexponent: -383 + +-- examples in specification +precision: 9 +logxs000 log10 0 -> -Infinity +logxs001 log10 0.001 -> -3 +logxs002 log10 1 -> 0 +logxs003 log10 2 -> 0.301029996 Inexact Rounded +logxs004 log10 10 -> 1 +logxs005 log10 70 -> 1.84509804 Inexact Rounded +logxs006 log10 +Infinity -> Infinity + + +-- basics (examples in specification, etc.) +precision: 16 +logx0000 log10 0 -> -Infinity +logx0001 log10 7E-1000 -> -999.1549019599857 Inexact Rounded +logx0002 log10 1.1E-9 -> -8.958607314841775 Inexact Rounded +logx0003 log10 0.0007 -> -3.154901959985743 Inexact Rounded +logx0004 log10 0.11 -> -0.9586073148417750 Inexact Rounded +logx0005 log10 0.7 -> -0.1549019599857432 Inexact Rounded +logx0006 log10 1 -> 0 +logx0007 log10 1.5 -> 0.1760912590556812 Inexact Rounded +logx0008 log10 2 -> 0.3010299956639812 Inexact Rounded +logx0009 log10 2.718281828459045 -> 0.4342944819032518 Inexact Rounded +logx0010 log10 2.718281828459046 -> 0.4342944819032519 Inexact Rounded +logx0011 log10 2.718281828459047 -> 0.4342944819032521 Inexact Rounded +logx0012 log10 7 -> 0.8450980400142568 Inexact Rounded +logx0013 log10 10 -> 1 +logx0014 log10 10.5 -> 1.021189299069938 Inexact Rounded +logx0015 log10 11 -> 1.041392685158225 Inexact Rounded +logx0016 log10 70 -> 1.845098040014257 Inexact Rounded +logx0017 log10 9999 -> 3.999956568380192 Inexact Rounded +logx0018 log10 1.21E6 -> 6.082785370316450 Inexact Rounded +logx0019 log10 1.1E+9 -> 9.041392685158225 Inexact Rounded +logx0020 log10 7E+1000 -> 1000.845098040014 Inexact Rounded +logx0021 log10 +Infinity -> Infinity + +-- notable cases +-- negatives +logx0031 log10 -1E-9 -> NaN Invalid_operation +logx0032 log10 -0.0007 -> NaN Invalid_operation +logx0033 log10 -0.1 -> NaN Invalid_operation +logx0034 log10 -0.7 -> NaN Invalid_operation +logx0035 log10 -1 -> NaN Invalid_operation +logx0036 log10 -1.5 -> NaN Invalid_operation +logx0037 log10 -2 -> NaN Invalid_operation +logx0038 log10 -10.5 -> NaN Invalid_operation +logx0039 log10 -10.5 -> NaN Invalid_operation +logx0040 log10 -9999 -> NaN Invalid_operation +logx0041 log10 -10 -> NaN Invalid_operation +logx0042 log10 -0 -> -Infinity +logx0043 log10 -0E+17 -> -Infinity +logx0044 log10 -0E-17 -> -Infinity +-- other zeros +logx0051 log10 0 -> -Infinity +logx0052 log10 0E+17 -> -Infinity +logx0053 log10 0E-17 -> -Infinity +-- infinities +logx0055 log10 -Infinity -> NaN Invalid_operation +logx0056 log10 +Infinity -> Infinity +-- ones +logx0061 log10 1 -> 0 +logx0062 log10 1.0 -> 0 +logx0063 log10 1.000000000000000 -> 0 +logx0064 log10 1.000000000000000000 -> 0 + +-- notable cases -- exact powers of 10 +logx1100 log10 1 -> 0 +logx1101 log10 10 -> 1 +logx1102 log10 100 -> 2 +logx1103 log10 1000 -> 3 +logx1104 log10 10000 -> 4 +logx1105 log10 100000 -> 5 +logx1106 log10 1000000 -> 6 +logx1107 log10 10000000 -> 7 +logx1108 log10 100000000 -> 8 +logx1109 log10 1000000000 -> 9 +logx1110 log10 10000000000 -> 10 +logx1111 log10 100000000000 -> 11 +logx1112 log10 1000000000000 -> 12 +logx1113 log10 0.00000000001 -> -11 +logx1114 log10 0.0000000001 -> -10 +logx1115 log10 0.000000001 -> -9 +logx1116 log10 0.00000001 -> -8 +logx1117 log10 0.0000001 -> -7 +logx1118 log10 0.000001 -> -6 +logx1119 log10 0.00001 -> -5 +logx1120 log10 0.0001 -> -4 +logx1121 log10 0.001 -> -3 +logx1122 log10 0.01 -> -2 +logx1123 log10 0.1 -> -1 +logx1124 log10 1E-99 -> -99 +logx1125 log10 1E-100 -> -100 +logx1126 log10 1E-383 -> -383 + +-- check normally exact cases round properly +precision: 1 +logx1141 log10 10000000000 -> 1E+1 Rounded +logx1142 log10 1000000000000 -> 1E+1 Inexact Rounded +logx1143 log10 1E+100 -> 1E+2 Rounded +logx1144 log10 1E+123 -> 1E+2 Inexact Rounded +logx1145 log10 1E+126 -> 1E+2 Inexact Rounded +logx1146 log10 1E+916 -> 9E+2 Inexact Rounded +logx1147 log10 1E+999 -> 1E+3 Inexact Rounded + +precision: 2 +logx1151 log10 10000000000 -> 10 +logx1152 log10 1000000000000 -> 12 +logx1153 log10 1E+100 -> 1.0E+2 Rounded +logx1154 log10 1E+123 -> 1.2E+2 Inexact Rounded +logx1155 log10 1E+126 -> 1.3E+2 Inexact Rounded +logx1156 log10 1E+916 -> 9.2E+2 Inexact Rounded +logx1157 log10 1E+999 -> 1.0E+3 Inexact Rounded +-- some half-way point rounds, other cases, and negatives +logx1158 log10 1E+125 -> 1.2E+2 Inexact Rounded +logx1159 log10 1E+135 -> 1.4E+2 Inexact Rounded +logx1160 log10 1E+129 -> 1.3E+2 Inexact Rounded +logx1161 log10 1E+131 -> 1.3E+2 Inexact Rounded +logx1162 log10 1E-123 -> -1.2E+2 Inexact Rounded +logx1163 log10 1E-126 -> -1.3E+2 Inexact Rounded +logx1164 log10 1E-916 -> -9.2E+2 Inexact Rounded +logx1165 log10 1E-999 -> -1.0E+3 Inexact Rounded +logx1166 log10 1E-125 -> -1.2E+2 Inexact Rounded +logx1167 log10 1E-135 -> -1.4E+2 Inexact Rounded +logx1168 log10 1E-129 -> -1.3E+2 Inexact Rounded +logx1169 log10 1E-131 -> -1.3E+2 Inexact Rounded + +precision: 3 +logx1171 log10 10000000000 -> 10 +logx1172 log10 1000000000000 -> 12 +logx1173 log10 1E+100 -> 100 +logx1174 log10 1E+123 -> 123 +logx1175 log10 1E+126 -> 126 +logx1176 log10 1E+916 -> 916 +logx1177 log10 1E+999 -> 999 + +-- log10(2) .. tests both ln(2) and ln(10) constants, too +precision: 50 +logx1201 log10 2 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded +logx1202 log10 2.000 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded +logx1203 log10 0.2E1 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded +precision: 49 +logx1204 log10 2 -> 0.3010299956639811952137388947244930267681898814621 Inexact Rounded +precision: 48 +logx1205 log10 2 -> 0.301029995663981195213738894724493026768189881462 Inexact Rounded +precision: 47 +logx1206 log10 2 -> 0.30102999566398119521373889472449302676818988146 Inexact Rounded +precision: 46 +logx1207 log10 2 -> 0.3010299956639811952137388947244930267681898815 Inexact Rounded +precision: 45 +logx1208 log10 2 -> 0.301029995663981195213738894724493026768189881 Inexact Rounded +precision: 44 +logx1209 log10 2 -> 0.30102999566398119521373889472449302676818988 Inexact Rounded +precision: 43 +logx1210 log10 2 -> 0.3010299956639811952137388947244930267681899 Inexact Rounded +precision: 42 +logx1211 log10 2 -> 0.301029995663981195213738894724493026768190 Inexact Rounded +precision: 41 +logx1212 log10 2 -> 0.30102999566398119521373889472449302676819 Inexact Rounded +precision: 40 +logx1213 log10 2 -> 0.3010299956639811952137388947244930267682 Inexact Rounded +precision: 39 +logx1214 log10 2 -> 0.301029995663981195213738894724493026768 Inexact Rounded +precision: 38 +logx1215 log10 2 -> 0.30102999566398119521373889472449302677 Inexact Rounded +precision: 37 +logx1216 log10 2 -> 0.3010299956639811952137388947244930268 Inexact Rounded +precision: 36 +logx1217 log10 2 -> 0.301029995663981195213738894724493027 Inexact Rounded +precision: 35 +logx1218 log10 2 -> 0.30102999566398119521373889472449303 Inexact Rounded +precision: 34 +logx1219 log10 2 -> 0.3010299956639811952137388947244930 Inexact Rounded +precision: 33 +logx1220 log10 2 -> 0.301029995663981195213738894724493 Inexact Rounded +precision: 32 +logx1221 log10 2 -> 0.30102999566398119521373889472449 Inexact Rounded +precision: 31 +logx1222 log10 2 -> 0.3010299956639811952137388947245 Inexact Rounded +precision: 30 +logx1223 log10 2 -> 0.301029995663981195213738894724 Inexact Rounded +precision: 29 +logx1224 log10 2 -> 0.30102999566398119521373889472 Inexact Rounded +precision: 28 +logx1225 log10 2 -> 0.3010299956639811952137388947 Inexact Rounded +precision: 27 +logx1226 log10 2 -> 0.301029995663981195213738895 Inexact Rounded +precision: 26 +logx1227 log10 2 -> 0.30102999566398119521373889 Inexact Rounded +precision: 25 +logx1228 log10 2 -> 0.3010299956639811952137389 Inexact Rounded +precision: 24 +logx1229 log10 2 -> 0.301029995663981195213739 Inexact Rounded +precision: 23 +logx1230 log10 2 -> 0.30102999566398119521374 Inexact Rounded +precision: 22 +logx1231 log10 2 -> 0.3010299956639811952137 Inexact Rounded +precision: 21 +logx1232 log10 2 -> 0.301029995663981195214 Inexact Rounded +precision: 20 +logx1233 log10 2 -> 0.30102999566398119521 Inexact Rounded +precision: 19 +logx1234 log10 2 -> 0.3010299956639811952 Inexact Rounded +precision: 18 +logx1235 log10 2 -> 0.301029995663981195 Inexact Rounded +precision: 17 +logx1236 log10 2 -> 0.30102999566398120 Inexact Rounded +precision: 16 +logx1237 log10 2 -> 0.3010299956639812 Inexact Rounded +precision: 15 +logx1238 log10 2 -> 0.301029995663981 Inexact Rounded +precision: 14 +logx1239 log10 2 -> 0.30102999566398 Inexact Rounded +precision: 13 +logx1240 log10 2 -> 0.3010299956640 Inexact Rounded +precision: 12 +logx1241 log10 2 -> 0.301029995664 Inexact Rounded +precision: 11 +logx1242 log10 2 -> 0.30102999566 Inexact Rounded +precision: 10 +logx1243 log10 2 -> 0.3010299957 Inexact Rounded +precision: 9 +logx1244 log10 2 -> 0.301029996 Inexact Rounded +precision: 8 +logx1245 log10 2 -> 0.30103000 Inexact Rounded +precision: 7 +logx1246 log10 2 -> 0.3010300 Inexact Rounded +precision: 6 +logx1247 log10 2 -> 0.301030 Inexact Rounded +precision: 5 +logx1248 log10 2 -> 0.30103 Inexact Rounded +precision: 4 +logx1249 log10 2 -> 0.3010 Inexact Rounded +precision: 3 +logx1250 log10 2 -> 0.301 Inexact Rounded +precision: 2 +logx1251 log10 2 -> 0.30 Inexact Rounded +precision: 1 +logx1252 log10 2 -> 0.3 Inexact Rounded + +maxExponent: 384 +minExponent: -383 +precision: 16 +rounding: half_even + +-- More close-to-e, etc., tests +precision: 34 +logx1301 log10 2.718281828459045235360287471352661 -> 0.4342944819032518276511289189166048 Inexact Rounded +logx1302 log10 2.718281828459045235360287471352662 -> 0.4342944819032518276511289189166050 Inexact Rounded +logx1303 log10 2.718281828459045235360287471352663 -> 0.4342944819032518276511289189166052 Inexact Rounded +logx1304 log10 0.99999999999999999999999999999999 -> -4.342944819032518276511289189166073E-33 Inexact Rounded +logx1305 log10 0.999999999999999999999999999999999 -> -4.342944819032518276511289189166053E-34 Inexact Rounded +logx1306 log10 0.9999999999999999999999999999999999 -> -4.342944819032518276511289189166051E-35 Inexact Rounded +logx1307 log10 1.000000000000000000000000000000000 -> 0 +logx1308 log10 1.0000000000000000000000000000000001 -> 4.342944819032518276511289189166051E-35 Inexact Rounded +logx1309 log10 1.000000000000000000000000000000001 -> 4.342944819032518276511289189166049E-34 Inexact Rounded +logx1310 log10 1.00000000000000000000000000000001 -> 4.342944819032518276511289189166029E-33 Inexact Rounded +-- lower p +precision: 7 +logx1320 log10 0.999999 -> -4.342947E-7 Inexact Rounded +logx1321 log10 0.9999999 -> -4.342945E-8 Inexact Rounded +logx1322 log10 0.99999999 -> -4.342945E-9 Inexact Rounded +logx1323 log10 0.999999999 -> -4.342945E-10 Inexact Rounded +logx1324 log10 1.00000000 -> 0 +logx1325 log10 1.00000001 -> 4.342945E-9 Inexact Rounded +logx1326 log10 1.0000001 -> 4.342945E-8 Inexact Rounded +logx1327 log10 1.000001 -> 4.342943E-7 Inexact Rounded + +-- near 10^3 +precision: 9 +logx1331 log10 999.9999998 -> 3.00000000 Inexact Rounded +logx1332 log10 999.9999999 -> 3.00000000 Inexact Rounded +logx1333 log10 1000.000000 -> 3 +logx1334 log10 1000.000001 -> 3.00000000 Inexact Rounded +logx1335 log10 1000.000002 -> 3.00000000 Inexact Rounded +precision: 16 +logx1341 log10 999.9999998 -> 2.999999999913141 Inexact Rounded +logx1342 log10 999.9999999 -> 2.999999999956571 Inexact Rounded +logx1343 log10 1000.000000 -> 3 +logx1344 log10 1000.000001 -> 3.000000000434294 Inexact Rounded +logx1345 log10 1000.000002 -> 3.000000000868589 Inexact Rounded + +-- suggestions from Ilan Nehama +logx1400 log10 10E-3 -> -2 +logx1401 log10 10E-2 -> -1 +logx1402 log10 100E-2 -> 0 +logx1403 log10 1000E-2 -> 1 +logx1404 log10 10000E-2 -> 2 +logx1405 log10 10E-1 -> 0 +logx1406 log10 100E-1 -> 1 +logx1407 log10 1000E-1 -> 2 +logx1408 log10 10000E-1 -> 3 +logx1409 log10 10E0 -> 1 +logx1410 log10 100E0 -> 2 +logx1411 log10 1000E0 -> 3 +logx1412 log10 10000E0 -> 4 +logx1413 log10 10E1 -> 2 +logx1414 log10 100E1 -> 3 +logx1415 log10 1000E1 -> 4 +logx1416 log10 10000E1 -> 5 +logx1417 log10 10E2 -> 3 +logx1418 log10 100E2 -> 4 +logx1419 log10 1000E2 -> 5 +logx1420 log10 10000E2 -> 6 + +-- Randoms +-- P=50, within 0-9999 +Precision: 50 +logx2501 log10 0.00035448001667968141775891246991912655961163345904 -> -3.4504082425411775290864053318247274944685586188505 Inexact Rounded +logx2502 log10 70.636455726424311228255338637935330826995136597644 -> 1.8490288998408492045793070255302335558140975719247 Inexact Rounded +logx2503 log10 0.00000000000000233550362473821889060812804063040169 -> -14.631619454343834858023578299142866557717904223667 Inexact Rounded +logx2504 log10 97.783628621523244679901260358286898958832135433764 -> 1.9902661493224219517897657964362571690592734407330 Inexact Rounded +logx2505 log10 0062.2377135315858392802612812022807838599572017342 -> 1.7940536293085066199287632725026837018486533544141 Inexact Rounded +logx2506 log10 6.3767634652071053619977602804724129652981747879532 -> 0.80460030789825961615100163576080761326857374098644 Inexact Rounded +logx2507 log10 63.297088981313278529306533814195068850532666658798 -> 1.8013837373724427092417170149098614410849353839673 Inexact Rounded +logx2508 log10 0.00000077239693316881797717820110898167721602299187 -> -6.1121594592718550613773886241951966264826760310047 Inexact Rounded +logx2509 log10 0.00000003953580359780185534830572461922527831395002 -> -7.4030094293833847136252547069905477213541787177561 Inexact Rounded +logx2510 log10 754.62905817369989169188998111527272688791544577204 -> 2.8777335243761300047758534304371912099958057545416 Inexact Rounded +logx2511 log10 0.00000048360378410241428936607147056283282849158312 -> -6.3155103095309353457604038397980091650760346334512 Inexact Rounded +logx2512 log10 0.00007509037583645612577196104591672080542932166089 -> -4.1244157219700166314012344705538088030592896111026 Inexact Rounded +logx2513 log10 0.00000000000705475944638915053419839063567898092064 -> -11.151517790256466048553810002525868198178167950377 Inexact Rounded +logx2514 log10 9.6210300460497657917445410947099633479609165120661 -> 0.98322157093260978206633922877716078683518617768411 Inexact Rounded +logx2515 log10 0.00000000050150361386555527496607245976120864985611 -> -9.2997259330798261040411086835563234390934934629340 Inexact Rounded +logx2516 log10 098.24754029731994125797723545333677604490074810751 -> 1.9923216862874337077795278629351060819105679670633 Inexact Rounded +logx2517 log10 7.5091998150046994320441463854301624742491015752980 -> 0.87559366078005924080766469158763499725414024128781 Inexact Rounded +logx2518 log10 0.00000000000079540571273330075193668596942268542425 -> -12.099411294165176028817305108475326325006250936963 Inexact Rounded +logx2519 log10 0.00000042395034799555215782907515074134154915491701 -> -6.3726850039125381134069450802108893075604464135297 Inexact Rounded +logx2520 log10 56.683376304674355481905023145238799909301732694982 -> 1.7534557107853480435703421826077606250636580091754 Inexact Rounded +logx2521 log10 48.734033811444195070807606721517169810438049581227 -> 1.6878323602741065190942654710049433808208291564049 Inexact Rounded +logx2522 log10 0.00074830310930046865009851706989430228561880221063 -> -3.1259224502209974082223667712016445572431791920618 Inexact Rounded +logx2523 log10 36.677348885111593384020836720396262497122708598359 -> 1.5643979364260796086754530282302605477567469395425 Inexact Rounded +logx2524 log10 0.00000000000000004495678560480432858812419145833744 -> -16.347204748239740510014320630363244015916029619561 Inexact Rounded +logx2525 log10 9509.5854013650642799374159131940108748594774307104 -> 3.9781615829916326741100166519726824430945406302661 Inexact Rounded +logx2526 log10 0.07834891268689177014044454793608715276615743819097 -> -1.1059670262197643147805517398621288897669876996348 Inexact Rounded +logx2527 log10 0.00000029584529880706128444454688454999032801904794 -> -6.5289353275814043710076526920566721570375026917206 Inexact Rounded +logx2528 log10 3.0713496544497618098794332787772186176981011904294 -> 0.48732926103896828546424341029492468100431414072994 Inexact Rounded +logx2529 log10 352.66392670788816474407442785460803833927136413943 -> 2.5473610388199562714709836398243933320284077008314 Inexact Rounded +logx2530 log10 0.00304743125181876267210516527361742185617091801650 -> -2.5160660830163981967774124745311497447050056400207 Inexact Rounded +logx2531 log10 0.00000076120535894952136499250364604538117729437183 -> -6.1184981629047051532448413863950776496652483019415 Inexact Rounded +logx2532 log10 769.88795978534353052965286195053735007473187735815 -> 2.8864275277862652709986498581064117950288798222100 Inexact Rounded +logx2533 log10 0.00000000000000041297494808612226304619570016336188 -> -15.384076292745415917510668454361868659468669804710 Inexact Rounded +logx2534 log10 860.88864595714426940247940960258558876903741966974 -> 2.9349469800554277915920278090647283233440859155176 Inexact Rounded +logx2535 log10 5839.0328812994787235900178587371051096898683972444 -> 3.7663409208972392569269125539438874737147906238543 Inexact Rounded +logx2536 log10 0.00000028532710151284840471670497112821201598377841 -> -6.5446569753514027675878879843238065488490618159490 Inexact Rounded +logx2537 log10 0.00000000000000009734490059931638483445631835651581 -> -16.011686794011271135978633880864278692254243106931 Inexact Rounded +logx2538 log10 5.8610949526439529489252302463450302981511714144330 -> 0.76797875722452549281028552067645732490929361952278 Inexact Rounded +logx2539 log10 6.6282432221115923372151148990137179611977576327206 -> 0.82139843639227213211012044000785757267155736071361 Inexact Rounded +logx2540 log10 0.00000000001994071862386846626954819923923344413454 -> -10.700259194632339980266559224447212260115021637626 Inexact Rounded + +-- P=34, within 0-9999 +Precision: 34 +logx2201 log10 1.522513203889714179088327328864183 -> 0.1825610677098896250496651330492109 Inexact Rounded +logx2202 log10 0.171123774769717316154080888930404 -> -0.7666896483548462582461898092764408 Inexact Rounded +logx2203 log10 0.0000000997467236251714283104963838 -> -7.001101360652518274271569010312115 Inexact Rounded +logx2204 log10 0.0008856103624122479769647543468633 -> -3.052757310476070891830490327138190 Inexact Rounded +logx2205 log10 1.938274868738032930709498221236758 -> 0.2874153648259449520201536171714594 Inexact Rounded +logx2206 log10 479.5667847823826713082613445010097 -> 2.680849095850361068709165157286435 Inexact Rounded +logx2207 log10 8856.136599178820202141823157336804 -> 3.947244306584767101480454261950559 Inexact Rounded +logx2208 log10 0.0000911026318801903982642871344858 -> -4.040469076434979398438617464033826 Inexact Rounded +logx2209 log10 0.0000000000017271112650427414732630 -> -11.76267968314038748995178212654921 Inexact Rounded +logx2210 log10 6.962605370078885647639503548229695 -> 0.8427717807200322352686396925992250 Inexact Rounded +logx2211 log10 0.3354804428992793132855923541692781 -> -0.4743327923012159170967636070844834 Inexact Rounded +logx2212 log10 2.079864257474859008252165836663504 -> 0.3180349916198059046812506741388856 Inexact Rounded +logx2213 log10 2805.479529292939499220276986621988 -> 3.448007104139974344565978780624744 Inexact Rounded +logx2214 log10 66.45731133034187374557028537213949 -> 1.822542767005644041661520936223086 Inexact Rounded +logx2215 log10 0.0000001206521261762681738274822835 -> -6.918465020390216969561494755767318 Inexact Rounded +logx2216 log10 0.0000000001884891916264401160472381 -> -9.724713548119065386091933007528633 Inexact Rounded +logx2217 log10 0.0000015467279551726326581314582759 -> -5.810586065070435383755759514608738 Inexact Rounded +logx2218 log10 0.0090776316728068586744633914135952 -> -2.042027442843745884503280954390114 Inexact Rounded +logx2219 log10 0.0000000000024541106528713393740030 -> -11.61010585935635713090119156069479 Inexact Rounded +logx2220 log10 14.12936879385863410081087750645856 -> 1.150122760895466989841057385742662 Inexact Rounded +logx2221 log10 0.0000036912481831392922922647231392 -> -5.432826753789892283556211380824203 Inexact Rounded +logx2222 log10 0.0000000004067477525420424270138734 -> -9.390674838050073122857868012475060 Inexact Rounded +logx2223 log10 7080.122562705399744969319589806194 -> 3.850040775747103318724330047546916 Inexact Rounded +logx2224 log10 261.3491411363679209175524790255725 -> 2.417221077227536319655699517530855 Inexact Rounded +logx2225 log10 003.9945581449915240094728380041494 -> 0.6014687471531988260823066997845691 Inexact Rounded +logx2226 log10 0.0000000000583549164588495206767840 -> -10.23392254834182677023231713519341 Inexact Rounded +logx2227 log10 9567.961832607240278342761088487484 -> 3.980819434211107631569386147016368 Inexact Rounded +logx2228 log10 06.26592979160342972777219828867033 -> 0.7969855243966221408595024012574729 Inexact Rounded +logx2229 log10 0.0000000000589847046598067273287319 -> -10.22926059078206218717755253582907 Inexact Rounded +logx2230 log10 567.9388648235589204769442863724997 -> 2.754301589058313576472380262907638 Inexact Rounded +logx2231 log10 039.7790325480037778918162264883415 -> 1.599654216592019199639285308997886 Inexact Rounded +logx2232 log10 0.0000000005123951921894162149817207 -> -9.290394953898862694847327137242690 Inexact Rounded +logx2233 log10 0.0000000000038500999723636904276723 -> -11.41452799337924056186867324854691 Inexact Rounded +logx2234 log10 0.0006726500658977759825616537935864 -> -3.172210810922768725687671849421792 Inexact Rounded +logx2235 log10 260.2400250475967528429943779126507 -> 2.415374092073799204236801383070064 Inexact Rounded +logx2236 log10 0.0000000006101942339385102585042548 -> -9.214531900562046557191261226632509 Inexact Rounded +logx2237 log10 0.0000000010846867501382746760066557 -> -8.964695664883282406359874242387236 Inexact Rounded +logx2238 log10 60.24078375568814769010333711509928 -> 1.779890613567084253168373266648922 Inexact Rounded +logx2239 log10 0.0012058738711757669337600252986093 -> -2.918698115012605915753728220896010 Inexact Rounded +logx2240 log10 230.9450930197841600611503095185600 -> 2.363508739056822846742942599628966 Inexact Rounded + +-- P=16, within 0-999 +Precision: 16 +logx2101 log10 0.0072067119605184 -> -2.142262835573038 Inexact Rounded +logx2102 log10 503.6828482226624 -> 2.702157162195652 Inexact Rounded +logx2103 log10 64.96074447821815 -> 1.812650993464174 Inexact Rounded +logx2104 log10 48.75408597467246 -> 1.688011018842600 Inexact Rounded +logx2105 log10 0.0329009839269587 -> -1.482791113975280 Inexact Rounded +logx2106 log10 223.5320415060633 -> 2.349339784523410 Inexact Rounded +logx2107 log10 73.12765002292194 -> 1.864081617476268 Inexact Rounded +logx2108 log10 487.3749378358509 -> 2.687863192802252 Inexact Rounded +logx2109 log10 0.0000019671987621 -> -5.706151757557926 Inexact Rounded +logx2110 log10 0.0570680660609784 -> -1.243606844697873 Inexact Rounded +logx2111 log10 33.10311638788998 -> 1.519868880976773 Inexact Rounded +logx2112 log10 0.0687382699187077 -> -1.162801402868185 Inexact Rounded +logx2113 log10 258.9416193626484 -> 2.413201859654145 Inexact Rounded +logx2114 log10 0.0005306100136736 -> -3.275224558269725 Inexact Rounded +logx2115 log10 65.78490393408572 -> 1.818126244825109 Inexact Rounded +logx2116 log10 504.2328842073510 -> 2.702631165346958 Inexact Rounded +logx2117 log10 9.417432755815027 -> 0.9739325278524503 Inexact Rounded +logx2118 log10 006.7054835355498 -> 0.8264301004947640 Inexact Rounded +logx2119 log10 0.0917012272363915 -> -1.037624852133399 Inexact Rounded +logx2120 log10 5.959404385244921 -> 0.7752028561953401 Inexact Rounded +logx2121 log10 0.0001209759148486 -> -3.917301084968903 Inexact Rounded +logx2122 log10 0.0004706112139838 -> -3.327337728428039 Inexact Rounded +logx2123 log10 0.0069700457377046 -> -2.156764372035771 Inexact Rounded +logx2124 log10 0.5155584569852619 -> -0.2877220847805025 Inexact Rounded +logx2125 log10 88.06005885607414 -> 1.944778971389913 Inexact Rounded +logx2126 log10 0.0448240038219866 -> -1.348489353509709 Inexact Rounded +logx2127 log10 3.419622484059565 -> 0.5339781639101145 Inexact Rounded +logx2128 log10 5.171123353858721 -> 0.7135848977142854 Inexact Rounded +logx2129 log10 0.0002133188319807 -> -3.670970802945872 Inexact Rounded +logx2130 log10 46.21086703136966 -> 1.664744117045149 Inexact Rounded +logx2131 log10 0.0000631053714415 -> -4.199933672639880 Inexact Rounded +logx2132 log10 78.66019196870698 -> 1.895755001962469 Inexact Rounded +logx2133 log10 0.0007152278351188 -> -3.145555592082297 Inexact Rounded +logx2134 log10 45.52509819928536 -> 1.658250891256892 Inexact Rounded +logx2135 log10 0.0000703227795740 -> -4.152903971697183 Inexact Rounded +logx2136 log10 26.24438641426669 -> 1.419036423550599 Inexact Rounded +logx2137 log10 0.0000044654829535 -> -5.350131564166817 Inexact Rounded +logx2138 log10 0.7360702733062529 -> -0.1330807211893611 Inexact Rounded +logx2139 log10 8.417059176469655 -> 0.9251603805112778 Inexact Rounded +logx2140 log10 0.0002926570767968 -> -3.533640969664818 Inexact Rounded + +-- P=7, within 0-99 +Precision: 7 +logx2001 log10 57.26089 -> 1.757858 Inexact Rounded +logx2002 log10 0.0575421 -> -1.240014 Inexact Rounded +logx2003 log10 0.5918465 -> -0.2277909 Inexact Rounded +logx2004 log10 0.0068776 -> -2.162563 Inexact Rounded +logx2005 log10 0.0066833 -> -2.175009 Inexact Rounded +logx2006 log10 9.926963 -> 0.9968164 Inexact Rounded +logx2007 log10 0.0041852 -> -2.378284 Inexact Rounded +logx2008 log10 84.15412 -> 1.925075 Inexact Rounded +logx2009 log10 2.466856 -> 0.3921438 Inexact Rounded +logx2010 log10 0.0058047 -> -2.236220 Inexact Rounded +logx2011 log10 9.885154 -> 0.9949834 Inexact Rounded +logx2012 log10 0.6667654 -> -0.1760269 Inexact Rounded +logx2013 log10 34.65736 -> 1.539795 Inexact Rounded +logx2014 log10 0.0026884 -> -2.570506 Inexact Rounded +logx2015 log10 0.0432767 -> -1.363746 Inexact Rounded +logx2016 log10 66.01407 -> 1.819637 Inexact Rounded +logx2017 log10 0.0070572 -> -2.151368 Inexact Rounded +logx2018 log10 0.0731613 -> -1.135719 Inexact Rounded +logx2019 log10 9.838983 -> 0.9929502 Inexact Rounded +logx2020 log10 15.89696 -> 1.201314 Inexact Rounded +logx2021 log10 8.459247 -> 0.9273317 Inexact Rounded +logx2022 log10 0.0010873 -> -2.963651 Inexact Rounded +logx2023 log10 0.6498619 -> -0.1871789 Inexact Rounded +logx2024 log10 0.0847008 -> -1.072112 Inexact Rounded +logx2025 log10 0.0075489 -> -2.122116 Inexact Rounded +logx2026 log10 51.11152 -> 1.708519 Inexact Rounded +logx2027 log10 0.7233866 -> -0.1406295 Inexact Rounded +logx2028 log10 2.254721 -> 0.3530928 Inexact Rounded +logx2029 log10 6.568444 -> 0.8174625 Inexact Rounded +logx2030 log10 83.72639 -> 1.922862 Inexact Rounded +logx2031 log10 6.720585 -> 0.8274071 Inexact Rounded +logx2032 log10 87.90366 -> 1.944007 Inexact Rounded +logx2033 log10 0.0433324 -> -1.363187 Inexact Rounded +logx2034 log10 34.63912 -> 1.539567 Inexact Rounded +logx2035 log10 0.8089059 -> -0.09210200 Inexact Rounded +logx2036 log10 7.793405 -> 0.8917272 Inexact Rounded +logx2037 log10 0.0041757 -> -2.379271 Inexact Rounded +logx2038 log10 7.135417 -> 0.8534194 Inexact Rounded +logx2039 log10 12.49570 -> 1.096761 Inexact Rounded +logx2040 log10 6.356276 -> 0.8032027 Inexact Rounded + +-------- +maxExponent: 384 +minExponent: -383 +precision: 16 +rounding: half_even + +-- special values +logx820 log10 Infinity -> Infinity +logx821 log10 0 -> -Infinity +logx822 log10 NaN -> NaN +logx823 log10 sNaN -> NaN Invalid_operation +-- propagating NaNs +logx824 log10 sNaN123 -> NaN123 Invalid_operation +logx825 log10 -sNaN321 -> -NaN321 Invalid_operation +logx826 log10 NaN456 -> NaN456 +logx827 log10 -NaN654 -> -NaN654 +logx828 log10 NaN1 -> NaN1 + + +-- Invalid operations due to restrictions +-- [next two probably skipped by most test harnesses] +precision: 100000000 +logx901 log10 1 -> NaN Invalid_context +precision: 99999999 +logx902 log10 0 -> NaN Invalid_context + +precision: 9 +maxExponent: 1000000 +minExponent: -999999 +logx903 log10 1 -> NaN Invalid_context +maxExponent: 999999 +minExponent: -999999 +logx904 log10 0 -> -Infinity +maxExponent: 999999 +minExponent: -1000000 +logx905 log10 1 -> NaN Invalid_context +maxExponent: 999999 +minExponent: -999998 +logx906 log10 0 -> -Infinity + +-- Null test +logx900 log10 # -> NaN Invalid_operation + + diff --git a/Lib/test/decimaltestdata/logb.decTest b/Lib/test/decimaltestdata/logb.decTest index ff420d0..8b79006 100644 --- a/Lib/test/decimaltestdata/logb.decTest +++ b/Lib/test/decimaltestdata/logb.decTest @@ -1,188 +1,188 @@ ------------------------------------------------------------------------- --- logb.decTest -- return integral adjusted exponent as per 754r -- --- Copyright (c) IBM Corporation, 2005, 2009. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This emphasises the testing of notable cases, as they will often --- have unusual paths (especially the 10**n results). - -extended: 1 -rounding: half_even -maxExponent: 999 -minexponent: -999 - --- basics & examples -precision: 9 -logbx001 logb 0 -> -Infinity Division_by_zero -logbx002 logb 1E-999 -> -999 -logbx003 logb 9E-999 -> -999 -logbx004 logb 0.001 -> -3 -logbx005 logb 0.03 -> -2 -logbx006 logb 1 -> 0 -logbx007 logb 2 -> 0 -logbx008 logb 2.5 -> 0 -logbx009 logb 2.50 -> 0 -logbx010 logb 10 -> 1 -logbx011 logb 70 -> 1 -logbx012 logb 100 -> 2 -logbx013 logb 250 -> 2 -logbx014 logb +Infinity -> Infinity - --- negatives are treated as positives -logbx021 logb -0 -> -Infinity Division_by_zero -logbx022 logb -1E-999 -> -999 -logbx023 logb -9E-999 -> -999 -logbx024 logb -0.001 -> -3 -logbx025 logb -1 -> 0 -logbx026 logb -2 -> 0 -logbx027 logb -10 -> 1 -logbx028 logb -70 -> 1 -logbx029 logb -100 -> 2 -logbx030 logb -100000000 -> 8 -logbx031 logb -Infinity -> Infinity - --- zeros -logbx111 logb 0 -> -Infinity Division_by_zero -logbx112 logb -0 -> -Infinity Division_by_zero -logbx113 logb 0E+4 -> -Infinity Division_by_zero -logbx114 logb -0E+4 -> -Infinity Division_by_zero -logbx115 logb 0.0000 -> -Infinity Division_by_zero -logbx116 logb -0.0000 -> -Infinity Division_by_zero -logbx117 logb 0E-141 -> -Infinity Division_by_zero -logbx118 logb -0E-141 -> -Infinity Division_by_zero - --- full coefficients, alternating bits -logbx121 logb 268268268 -> 8 -logbx122 logb -268268268 -> 8 -logbx123 logb 134134134 -> 8 -logbx124 logb -134134134 -> 8 - --- Nmax, Nmin, Ntiny -logbx131 logb 9.99999999E+999 -> 999 -logbx132 logb 1E-999 -> -999 -logbx133 logb 1.00000000E-999 -> -999 -logbx134 logb 1E-1007 -> -1007 - -logbx135 logb -1E-1007 -> -1007 -logbx136 logb -1.00000000E-999 -> -999 -logbx137 logb -1E-999 -> -999 -logbx138 logb -9.99999999E+999 -> 999 - --- ones -logbx0061 logb 1 -> 0 -logbx0062 logb 1.0 -> 0 -logbx0063 logb 1.000000000000000 -> 0 -logbx0064 logb 1.000000000000000000 -> 0 - --- notable cases -- exact powers of 10 -logbx1100 logb 1 -> 0 -logbx1101 logb 10 -> 1 -logbx1102 logb 100 -> 2 -logbx1103 logb 1000 -> 3 -logbx1104 logb 10000 -> 4 -logbx1105 logb 100000 -> 5 -logbx1106 logb 1000000 -> 6 -logbx1107 logb 10000000 -> 7 -logbx1108 logb 100000000 -> 8 -logbx1109 logb 1000000000 -> 9 -logbx1110 logb 10000000000 -> 10 -logbx1111 logb 100000000000 -> 11 -logbx1112 logb 1000000000000 -> 12 -logbx1113 logb 0.00000000001 -> -11 -logbx1114 logb 0.0000000001 -> -10 -logbx1115 logb 0.000000001 -> -9 -logbx1116 logb 0.00000001 -> -8 -logbx1117 logb 0.0000001 -> -7 -logbx1118 logb 0.000001 -> -6 -logbx1119 logb 0.00001 -> -5 -logbx1120 logb 0.0001 -> -4 -logbx1121 logb 0.001 -> -3 -logbx1122 logb 0.01 -> -2 -logbx1123 logb 0.1 -> -1 -logbx1124 logb 1E-99 -> -99 -logbx1125 logb 1E-100 -> -100 -logbx1126 logb 1E-383 -> -383 -logbx1127 logb 1E-999 -> -999 - --- suggestions from Ilan Nehama -logbx1400 logb 10E-3 -> -2 -logbx1401 logb 10E-2 -> -1 -logbx1402 logb 100E-2 -> 0 -logbx1403 logb 1000E-2 -> 1 -logbx1404 logb 10000E-2 -> 2 -logbx1405 logb 10E-1 -> 0 -logbx1406 logb 100E-1 -> 1 -logbx1407 logb 1000E-1 -> 2 -logbx1408 logb 10000E-1 -> 3 -logbx1409 logb 10E0 -> 1 -logbx1410 logb 100E0 -> 2 -logbx1411 logb 1000E0 -> 3 -logbx1412 logb 10000E0 -> 4 -logbx1413 logb 10E1 -> 2 -logbx1414 logb 100E1 -> 3 -logbx1415 logb 1000E1 -> 4 -logbx1416 logb 10000E1 -> 5 -logbx1417 logb 10E2 -> 3 -logbx1418 logb 100E2 -> 4 -logbx1419 logb 1000E2 -> 5 -logbx1420 logb 10000E2 -> 6 - --- inexacts -precision: 2 -logbx1500 logb 10000E2 -> 6 -logbx1501 logb 1E+99 -> 99 -logbx1502 logb 1E-99 -> -99 -logbx1503 logb 1E+100 -> 1.0E+2 Rounded -logbx1504 logb 1E+999 -> 1.0E+3 Inexact Rounded -logbx1505 logb 1E-100 -> -1.0E+2 Rounded -logbx1506 logb 1E-999 -> -1.0E+3 Inexact Rounded -logbx1507 logb 1E-1111 -> -1.1E+3 Inexact Rounded -logbx1508 logb 1E-3333 -> -3.3E+3 Inexact Rounded -logbx1509 logb 1E-6666 -> -6.7E+3 Inexact Rounded -logbx1510 logb 1E+999999999 -> 1.0E+9 Inexact Rounded -logbx1511 logb 1E-999999999 -> -1.0E+9 Inexact Rounded -precision: 1 -logbx1517 logb 1E-1111 -> -1E+3 Inexact Rounded -logbx1518 logb 1E-3333 -> -3E+3 Inexact Rounded -logbx1519 logb 1E-6666 -> -7E+3 Inexact Rounded -precision: 8 -logbx1520 logb 1E+999999999 -> 1.0000000E+9 Inexact Rounded -logbx1521 logb 1E-999999999 -> -1.0000000E+9 Inexact Rounded -precision: 9 -logbx1523 logb 1E+999999999 -> 999999999 -logbx1524 logb 1E-999999999 -> -999999999 - --- special values -precision: 9 -logbx820 logb Infinity -> Infinity -logbx821 logb -Infinity -> Infinity -logbx822 logb 0 -> -Infinity Division_by_zero -logbx823 logb NaN -> NaN -logbx824 logb sNaN -> NaN Invalid_operation --- propagating NaNs -logbx825 logb sNaN123 -> NaN123 Invalid_operation -logbx826 logb -sNaN321 -> -NaN321 Invalid_operation -logbx827 logb NaN456 -> NaN456 -logbx828 logb -NaN654 -> -NaN654 -logbx829 logb NaN1 -> NaN1 - --- Null test -logbx900 logb # -> NaN Invalid_operation - - +------------------------------------------------------------------------ +-- logb.decTest -- return integral adjusted exponent as per 754r -- +-- Copyright (c) IBM Corporation, 2005, 2009. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This emphasises the testing of notable cases, as they will often +-- have unusual paths (especially the 10**n results). + +extended: 1 +rounding: half_even +maxExponent: 999 +minexponent: -999 + +-- basics & examples +precision: 9 +logbx001 logb 0 -> -Infinity Division_by_zero +logbx002 logb 1E-999 -> -999 +logbx003 logb 9E-999 -> -999 +logbx004 logb 0.001 -> -3 +logbx005 logb 0.03 -> -2 +logbx006 logb 1 -> 0 +logbx007 logb 2 -> 0 +logbx008 logb 2.5 -> 0 +logbx009 logb 2.50 -> 0 +logbx010 logb 10 -> 1 +logbx011 logb 70 -> 1 +logbx012 logb 100 -> 2 +logbx013 logb 250 -> 2 +logbx014 logb +Infinity -> Infinity + +-- negatives are treated as positives +logbx021 logb -0 -> -Infinity Division_by_zero +logbx022 logb -1E-999 -> -999 +logbx023 logb -9E-999 -> -999 +logbx024 logb -0.001 -> -3 +logbx025 logb -1 -> 0 +logbx026 logb -2 -> 0 +logbx027 logb -10 -> 1 +logbx028 logb -70 -> 1 +logbx029 logb -100 -> 2 +logbx030 logb -100000000 -> 8 +logbx031 logb -Infinity -> Infinity + +-- zeros +logbx111 logb 0 -> -Infinity Division_by_zero +logbx112 logb -0 -> -Infinity Division_by_zero +logbx113 logb 0E+4 -> -Infinity Division_by_zero +logbx114 logb -0E+4 -> -Infinity Division_by_zero +logbx115 logb 0.0000 -> -Infinity Division_by_zero +logbx116 logb -0.0000 -> -Infinity Division_by_zero +logbx117 logb 0E-141 -> -Infinity Division_by_zero +logbx118 logb -0E-141 -> -Infinity Division_by_zero + +-- full coefficients, alternating bits +logbx121 logb 268268268 -> 8 +logbx122 logb -268268268 -> 8 +logbx123 logb 134134134 -> 8 +logbx124 logb -134134134 -> 8 + +-- Nmax, Nmin, Ntiny +logbx131 logb 9.99999999E+999 -> 999 +logbx132 logb 1E-999 -> -999 +logbx133 logb 1.00000000E-999 -> -999 +logbx134 logb 1E-1007 -> -1007 + +logbx135 logb -1E-1007 -> -1007 +logbx136 logb -1.00000000E-999 -> -999 +logbx137 logb -1E-999 -> -999 +logbx138 logb -9.99999999E+999 -> 999 + +-- ones +logbx0061 logb 1 -> 0 +logbx0062 logb 1.0 -> 0 +logbx0063 logb 1.000000000000000 -> 0 +logbx0064 logb 1.000000000000000000 -> 0 + +-- notable cases -- exact powers of 10 +logbx1100 logb 1 -> 0 +logbx1101 logb 10 -> 1 +logbx1102 logb 100 -> 2 +logbx1103 logb 1000 -> 3 +logbx1104 logb 10000 -> 4 +logbx1105 logb 100000 -> 5 +logbx1106 logb 1000000 -> 6 +logbx1107 logb 10000000 -> 7 +logbx1108 logb 100000000 -> 8 +logbx1109 logb 1000000000 -> 9 +logbx1110 logb 10000000000 -> 10 +logbx1111 logb 100000000000 -> 11 +logbx1112 logb 1000000000000 -> 12 +logbx1113 logb 0.00000000001 -> -11 +logbx1114 logb 0.0000000001 -> -10 +logbx1115 logb 0.000000001 -> -9 +logbx1116 logb 0.00000001 -> -8 +logbx1117 logb 0.0000001 -> -7 +logbx1118 logb 0.000001 -> -6 +logbx1119 logb 0.00001 -> -5 +logbx1120 logb 0.0001 -> -4 +logbx1121 logb 0.001 -> -3 +logbx1122 logb 0.01 -> -2 +logbx1123 logb 0.1 -> -1 +logbx1124 logb 1E-99 -> -99 +logbx1125 logb 1E-100 -> -100 +logbx1126 logb 1E-383 -> -383 +logbx1127 logb 1E-999 -> -999 + +-- suggestions from Ilan Nehama +logbx1400 logb 10E-3 -> -2 +logbx1401 logb 10E-2 -> -1 +logbx1402 logb 100E-2 -> 0 +logbx1403 logb 1000E-2 -> 1 +logbx1404 logb 10000E-2 -> 2 +logbx1405 logb 10E-1 -> 0 +logbx1406 logb 100E-1 -> 1 +logbx1407 logb 1000E-1 -> 2 +logbx1408 logb 10000E-1 -> 3 +logbx1409 logb 10E0 -> 1 +logbx1410 logb 100E0 -> 2 +logbx1411 logb 1000E0 -> 3 +logbx1412 logb 10000E0 -> 4 +logbx1413 logb 10E1 -> 2 +logbx1414 logb 100E1 -> 3 +logbx1415 logb 1000E1 -> 4 +logbx1416 logb 10000E1 -> 5 +logbx1417 logb 10E2 -> 3 +logbx1418 logb 100E2 -> 4 +logbx1419 logb 1000E2 -> 5 +logbx1420 logb 10000E2 -> 6 + +-- inexacts +precision: 2 +logbx1500 logb 10000E2 -> 6 +logbx1501 logb 1E+99 -> 99 +logbx1502 logb 1E-99 -> -99 +logbx1503 logb 1E+100 -> 1.0E+2 Rounded +logbx1504 logb 1E+999 -> 1.0E+3 Inexact Rounded +logbx1505 logb 1E-100 -> -1.0E+2 Rounded +logbx1506 logb 1E-999 -> -1.0E+3 Inexact Rounded +logbx1507 logb 1E-1111 -> -1.1E+3 Inexact Rounded +logbx1508 logb 1E-3333 -> -3.3E+3 Inexact Rounded +logbx1509 logb 1E-6666 -> -6.7E+3 Inexact Rounded +logbx1510 logb 1E+999999999 -> 1.0E+9 Inexact Rounded +logbx1511 logb 1E-999999999 -> -1.0E+9 Inexact Rounded +precision: 1 +logbx1517 logb 1E-1111 -> -1E+3 Inexact Rounded +logbx1518 logb 1E-3333 -> -3E+3 Inexact Rounded +logbx1519 logb 1E-6666 -> -7E+3 Inexact Rounded +precision: 8 +logbx1520 logb 1E+999999999 -> 1.0000000E+9 Inexact Rounded +logbx1521 logb 1E-999999999 -> -1.0000000E+9 Inexact Rounded +precision: 9 +logbx1523 logb 1E+999999999 -> 999999999 +logbx1524 logb 1E-999999999 -> -999999999 + +-- special values +precision: 9 +logbx820 logb Infinity -> Infinity +logbx821 logb -Infinity -> Infinity +logbx822 logb 0 -> -Infinity Division_by_zero +logbx823 logb NaN -> NaN +logbx824 logb sNaN -> NaN Invalid_operation +-- propagating NaNs +logbx825 logb sNaN123 -> NaN123 Invalid_operation +logbx826 logb -sNaN321 -> -NaN321 Invalid_operation +logbx827 logb NaN456 -> NaN456 +logbx828 logb -NaN654 -> -NaN654 +logbx829 logb NaN1 -> NaN1 + +-- Null test +logbx900 logb # -> NaN Invalid_operation + + diff --git a/Lib/test/decimaltestdata/maxmag.decTest b/Lib/test/decimaltestdata/maxmag.decTest index 6b44213..265e912 100644 --- a/Lib/test/decimaltestdata/maxmag.decTest +++ b/Lib/test/decimaltestdata/maxmag.decTest @@ -1,404 +1,404 @@ ------------------------------------------------------------------------- --- maxmag.decTest -- decimal maximum by magnitude -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 384 -minexponent: -383 - --- sanity checks -mxgx001 maxmag -2 -2 -> -2 -mxgx002 maxmag -2 -1 -> -2 -mxgx003 maxmag -2 0 -> -2 -mxgx004 maxmag -2 1 -> -2 -mxgx005 maxmag -2 2 -> 2 -mxgx006 maxmag -1 -2 -> -2 -mxgx007 maxmag -1 -1 -> -1 -mxgx008 maxmag -1 0 -> -1 -mxgx009 maxmag -1 1 -> 1 -mxgx010 maxmag -1 2 -> 2 -mxgx011 maxmag 0 -2 -> -2 -mxgx012 maxmag 0 -1 -> -1 -mxgx013 maxmag 0 0 -> 0 -mxgx014 maxmag 0 1 -> 1 -mxgx015 maxmag 0 2 -> 2 -mxgx016 maxmag 1 -2 -> -2 -mxgx017 maxmag 1 -1 -> 1 -mxgx018 maxmag 1 0 -> 1 -mxgx019 maxmag 1 1 -> 1 -mxgx020 maxmag 1 2 -> 2 -mxgx021 maxmag 2 -2 -> 2 -mxgx022 maxmag 2 -1 -> 2 -mxgx023 maxmag 2 0 -> 2 -mxgx025 maxmag 2 1 -> 2 -mxgx026 maxmag 2 2 -> 2 - --- extended zeros -mxgx030 maxmag 0 0 -> 0 -mxgx031 maxmag 0 -0 -> 0 -mxgx032 maxmag 0 -0.0 -> 0 -mxgx033 maxmag 0 0.0 -> 0 -mxgx034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen -mxgx035 maxmag -0 -0 -> -0 -mxgx036 maxmag -0 -0.0 -> -0.0 -mxgx037 maxmag -0 0.0 -> 0.0 -mxgx038 maxmag 0.0 0 -> 0 -mxgx039 maxmag 0.0 -0 -> 0.0 -mxgx040 maxmag 0.0 -0.0 -> 0.0 -mxgx041 maxmag 0.0 0.0 -> 0.0 -mxgx042 maxmag -0.0 0 -> 0 -mxgx043 maxmag -0.0 -0 -> -0.0 -mxgx044 maxmag -0.0 -0.0 -> -0.0 -mxgx045 maxmag -0.0 0.0 -> 0.0 - -mxgx050 maxmag -0E1 0E1 -> 0E+1 -mxgx051 maxmag -0E2 0E2 -> 0E+2 -mxgx052 maxmag -0E2 0E1 -> 0E+1 -mxgx053 maxmag -0E1 0E2 -> 0E+2 -mxgx054 maxmag 0E1 -0E1 -> 0E+1 -mxgx055 maxmag 0E2 -0E2 -> 0E+2 -mxgx056 maxmag 0E2 -0E1 -> 0E+2 -mxgx057 maxmag 0E1 -0E2 -> 0E+1 - -mxgx058 maxmag 0E1 0E1 -> 0E+1 -mxgx059 maxmag 0E2 0E2 -> 0E+2 -mxgx060 maxmag 0E2 0E1 -> 0E+2 -mxgx061 maxmag 0E1 0E2 -> 0E+2 -mxgx062 maxmag -0E1 -0E1 -> -0E+1 -mxgx063 maxmag -0E2 -0E2 -> -0E+2 -mxgx064 maxmag -0E2 -0E1 -> -0E+1 -mxgx065 maxmag -0E1 -0E2 -> -0E+1 - --- Specials -precision: 9 -mxgx090 maxmag Inf -Inf -> Infinity -mxgx091 maxmag Inf -1000 -> Infinity -mxgx092 maxmag Inf -1 -> Infinity -mxgx093 maxmag Inf -0 -> Infinity -mxgx094 maxmag Inf 0 -> Infinity -mxgx095 maxmag Inf 1 -> Infinity -mxgx096 maxmag Inf 1000 -> Infinity -mxgx097 maxmag Inf Inf -> Infinity -mxgx098 maxmag -1000 Inf -> Infinity -mxgx099 maxmag -Inf Inf -> Infinity -mxgx100 maxmag -1 Inf -> Infinity -mxgx101 maxmag -0 Inf -> Infinity -mxgx102 maxmag 0 Inf -> Infinity -mxgx103 maxmag 1 Inf -> Infinity -mxgx104 maxmag 1000 Inf -> Infinity -mxgx105 maxmag Inf Inf -> Infinity - -mxgx120 maxmag -Inf -Inf -> -Infinity -mxgx121 maxmag -Inf -1000 -> -Infinity -mxgx122 maxmag -Inf -1 -> -Infinity -mxgx123 maxmag -Inf -0 -> -Infinity -mxgx124 maxmag -Inf 0 -> -Infinity -mxgx125 maxmag -Inf 1 -> -Infinity -mxgx126 maxmag -Inf 1000 -> -Infinity -mxgx127 maxmag -Inf Inf -> Infinity -mxgx128 maxmag -Inf -Inf -> -Infinity -mxgx129 maxmag -1000 -Inf -> -Infinity -mxgx130 maxmag -1 -Inf -> -Infinity -mxgx131 maxmag -0 -Inf -> -Infinity -mxgx132 maxmag 0 -Inf -> -Infinity -mxgx133 maxmag 1 -Inf -> -Infinity -mxgx134 maxmag 1000 -Inf -> -Infinity -mxgx135 maxmag Inf -Inf -> Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -mxgx141 maxmag NaN -Inf -> -Infinity -mxgx142 maxmag NaN -1000 -> -1000 -mxgx143 maxmag NaN -1 -> -1 -mxgx144 maxmag NaN -0 -> -0 -mxgx145 maxmag NaN 0 -> 0 -mxgx146 maxmag NaN 1 -> 1 -mxgx147 maxmag NaN 1000 -> 1000 -mxgx148 maxmag NaN Inf -> Infinity -mxgx149 maxmag NaN NaN -> NaN -mxgx150 maxmag -Inf NaN -> -Infinity -mxgx151 maxmag -1000 NaN -> -1000 -mxgx152 maxmag -1 NaN -> -1 -mxgx153 maxmag -0 NaN -> -0 -mxgx154 maxmag 0 NaN -> 0 -mxgx155 maxmag 1 NaN -> 1 -mxgx156 maxmag 1000 NaN -> 1000 -mxgx157 maxmag Inf NaN -> Infinity - -mxgx161 maxmag sNaN -Inf -> NaN Invalid_operation -mxgx162 maxmag sNaN -1000 -> NaN Invalid_operation -mxgx163 maxmag sNaN -1 -> NaN Invalid_operation -mxgx164 maxmag sNaN -0 -> NaN Invalid_operation -mxgx165 maxmag sNaN 0 -> NaN Invalid_operation -mxgx166 maxmag sNaN 1 -> NaN Invalid_operation -mxgx167 maxmag sNaN 1000 -> NaN Invalid_operation -mxgx168 maxmag sNaN NaN -> NaN Invalid_operation -mxgx169 maxmag sNaN sNaN -> NaN Invalid_operation -mxgx170 maxmag NaN sNaN -> NaN Invalid_operation -mxgx171 maxmag -Inf sNaN -> NaN Invalid_operation -mxgx172 maxmag -1000 sNaN -> NaN Invalid_operation -mxgx173 maxmag -1 sNaN -> NaN Invalid_operation -mxgx174 maxmag -0 sNaN -> NaN Invalid_operation -mxgx175 maxmag 0 sNaN -> NaN Invalid_operation -mxgx176 maxmag 1 sNaN -> NaN Invalid_operation -mxgx177 maxmag 1000 sNaN -> NaN Invalid_operation -mxgx178 maxmag Inf sNaN -> NaN Invalid_operation -mxgx179 maxmag NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -mxgx181 maxmag NaN9 -Inf -> -Infinity -mxgx182 maxmag NaN8 9 -> 9 -mxgx183 maxmag -NaN7 Inf -> Infinity - -mxgx184 maxmag -NaN1 NaN11 -> -NaN1 -mxgx185 maxmag NaN2 NaN12 -> NaN2 -mxgx186 maxmag -NaN13 -NaN7 -> -NaN13 -mxgx187 maxmag NaN14 -NaN5 -> NaN14 - -mxgx188 maxmag -Inf NaN4 -> -Infinity -mxgx189 maxmag -9 -NaN3 -> -9 -mxgx190 maxmag Inf NaN2 -> Infinity - -mxgx191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation -mxgx192 maxmag sNaN98 -1 -> NaN98 Invalid_operation -mxgx193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation -mxgx194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation -mxgx195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation -mxgx196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation -mxgx197 maxmag 0 sNaN91 -> NaN91 Invalid_operation -mxgx198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation -mxgx199 maxmag NaN sNaN89 -> NaN89 Invalid_operation - --- rounding checks -maxexponent: 999 -minexponent: -999 -precision: 9 -mxgx201 maxmag 12345678000 1 -> 1.23456780E+10 Rounded -mxgx202 maxmag 1 12345678000 -> 1.23456780E+10 Rounded -mxgx203 maxmag 1234567800 1 -> 1.23456780E+9 Rounded -mxgx204 maxmag 1 1234567800 -> 1.23456780E+9 Rounded -mxgx205 maxmag 1234567890 1 -> 1.23456789E+9 Rounded -mxgx206 maxmag 1 1234567890 -> 1.23456789E+9 Rounded -mxgx207 maxmag 1234567891 1 -> 1.23456789E+9 Inexact Rounded -mxgx208 maxmag 1 1234567891 -> 1.23456789E+9 Inexact Rounded -mxgx209 maxmag 12345678901 1 -> 1.23456789E+10 Inexact Rounded -mxgx210 maxmag 1 12345678901 -> 1.23456789E+10 Inexact Rounded -mxgx211 maxmag 1234567896 1 -> 1.23456790E+9 Inexact Rounded -mxgx212 maxmag 1 1234567896 -> 1.23456790E+9 Inexact Rounded -mxgx213 maxmag -1234567891 1 -> -1.23456789E+9 Inexact Rounded -mxgx214 maxmag 1 -1234567891 -> -1.23456789E+9 Inexact Rounded -mxgx215 maxmag -12345678901 1 -> -1.23456789E+10 Inexact Rounded -mxgx216 maxmag 1 -12345678901 -> -1.23456789E+10 Inexact Rounded -mxgx217 maxmag -1234567896 1 -> -1.23456790E+9 Inexact Rounded -mxgx218 maxmag 1 -1234567896 -> -1.23456790E+9 Inexact Rounded - -precision: 15 -mxgx221 maxmag 12345678000 1 -> 12345678000 -mxgx222 maxmag 1 12345678000 -> 12345678000 -mxgx223 maxmag 1234567800 1 -> 1234567800 -mxgx224 maxmag 1 1234567800 -> 1234567800 -mxgx225 maxmag 1234567890 1 -> 1234567890 -mxgx226 maxmag 1 1234567890 -> 1234567890 -mxgx227 maxmag 1234567891 1 -> 1234567891 -mxgx228 maxmag 1 1234567891 -> 1234567891 -mxgx229 maxmag 12345678901 1 -> 12345678901 -mxgx230 maxmag 1 12345678901 -> 12345678901 -mxgx231 maxmag 1234567896 1 -> 1234567896 -mxgx232 maxmag 1 1234567896 -> 1234567896 -mxgx233 maxmag -1234567891 1 -> -1234567891 -mxgx234 maxmag 1 -1234567891 -> -1234567891 -mxgx235 maxmag -12345678901 1 -> -12345678901 -mxgx236 maxmag 1 -12345678901 -> -12345678901 -mxgx237 maxmag -1234567896 1 -> -1234567896 -mxgx238 maxmag 1 -1234567896 -> -1234567896 - --- from examples -mxgx280 maxmag '3' '2' -> '3' -mxgx281 maxmag '-10' '3' -> '-10' -mxgx282 maxmag '1.0' '1' -> '1' -mxgx283 maxmag '1' '1.0' -> '1' -mxgx284 maxmag '7' 'NaN' -> '7' - --- overflow and underflow tests ... -maxExponent: 999999999 -minexponent: -999999999 -mxgx330 maxmag +1.23456789012345E-0 9E+999999999 -> 9E+999999999 -mxgx331 maxmag 9E+999999999 +1.23456789012345E-0 -> 9E+999999999 -mxgx332 maxmag +0.100 9E-999999999 -> 0.100 -mxgx333 maxmag 9E-999999999 +0.100 -> 0.100 -mxgx335 maxmag -1.23456789012345E-0 9E+999999999 -> 9E+999999999 -mxgx336 maxmag 9E+999999999 -1.23456789012345E-0 -> 9E+999999999 -mxgx337 maxmag -0.100 9E-999999999 -> -0.100 -mxgx338 maxmag 9E-999999999 -0.100 -> -0.100 - -mxgx339 maxmag 1e-599999999 1e-400000001 -> 1E-400000001 -mxgx340 maxmag 1e-599999999 1e-400000000 -> 1E-400000000 -mxgx341 maxmag 1e-600000000 1e-400000000 -> 1E-400000000 -mxgx342 maxmag 9e-999999998 0.01 -> 0.01 -mxgx343 maxmag 9e-999999998 0.1 -> 0.1 -mxgx344 maxmag 0.01 9e-999999998 -> 0.01 -mxgx345 maxmag 1e599999999 1e400000001 -> 1E+599999999 -mxgx346 maxmag 1e599999999 1e400000000 -> 1E+599999999 -mxgx347 maxmag 1e600000000 1e400000000 -> 1E+600000000 -mxgx348 maxmag 9e999999998 100 -> 9E+999999998 -mxgx349 maxmag 9e999999998 10 -> 9E+999999998 -mxgx350 maxmag 100 9e999999998 -> 9E+999999998 --- signs -mxgx351 maxmag 1e+777777777 1e+411111111 -> 1E+777777777 -mxgx352 maxmag 1e+777777777 -1e+411111111 -> 1E+777777777 -mxgx353 maxmag -1e+777777777 1e+411111111 -> -1E+777777777 -mxgx354 maxmag -1e+777777777 -1e+411111111 -> -1E+777777777 -mxgx355 maxmag 1e-777777777 1e-411111111 -> 1E-411111111 -mxgx356 maxmag 1e-777777777 -1e-411111111 -> -1E-411111111 -mxgx357 maxmag -1e-777777777 1e-411111111 -> 1E-411111111 -mxgx358 maxmag -1e-777777777 -1e-411111111 -> -1E-411111111 - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -mxgx401 maxmag Inf 1.1 -> Infinity -mxgx402 maxmag 1.1 1 -> 1.1 -mxgx403 maxmag 1 1.0 -> 1 -mxgx404 maxmag 1.0 0.1 -> 1.0 -mxgx405 maxmag 0.1 0.10 -> 0.1 -mxgx406 maxmag 0.10 0.100 -> 0.10 -mxgx407 maxmag 0.10 0 -> 0.10 -mxgx408 maxmag 0 0.0 -> 0 -mxgx409 maxmag 0.0 -0 -> 0.0 -mxgx410 maxmag 0.0 -0.0 -> 0.0 -mxgx411 maxmag 0.00 -0.0 -> 0.00 -mxgx412 maxmag 0.0 -0.00 -> 0.0 -mxgx413 maxmag 0 -0.0 -> 0 -mxgx414 maxmag 0 -0 -> 0 -mxgx415 maxmag -0.0 -0 -> -0.0 -mxgx416 maxmag -0 -0.100 -> -0.100 -mxgx417 maxmag -0.100 -0.10 -> -0.100 -mxgx418 maxmag -0.10 -0.1 -> -0.10 -mxgx419 maxmag -0.1 -1.0 -> -1.0 -mxgx420 maxmag -1.0 -1 -> -1.0 -mxgx421 maxmag -1 -1.1 -> -1.1 -mxgx423 maxmag -1.1 -Inf -> -Infinity --- same with operands reversed -mxgx431 maxmag 1.1 Inf -> Infinity -mxgx432 maxmag 1 1.1 -> 1.1 -mxgx433 maxmag 1.0 1 -> 1 -mxgx434 maxmag 0.1 1.0 -> 1.0 -mxgx435 maxmag 0.10 0.1 -> 0.1 -mxgx436 maxmag 0.100 0.10 -> 0.10 -mxgx437 maxmag 0 0.10 -> 0.10 -mxgx438 maxmag 0.0 0 -> 0 -mxgx439 maxmag -0 0.0 -> 0.0 -mxgx440 maxmag -0.0 0.0 -> 0.0 -mxgx441 maxmag -0.0 0.00 -> 0.00 -mxgx442 maxmag -0.00 0.0 -> 0.0 -mxgx443 maxmag -0.0 0 -> 0 -mxgx444 maxmag -0 0 -> 0 -mxgx445 maxmag -0 -0.0 -> -0.0 -mxgx446 maxmag -0.100 -0 -> -0.100 -mxgx447 maxmag -0.10 -0.100 -> -0.100 -mxgx448 maxmag -0.1 -0.10 -> -0.10 -mxgx449 maxmag -1.0 -0.1 -> -1.0 -mxgx450 maxmag -1 -1.0 -> -1.0 -mxgx451 maxmag -1.1 -1 -> -1.1 -mxgx453 maxmag -Inf -1.1 -> -Infinity --- largies -mxgx460 maxmag 1000 1E+3 -> 1E+3 -mxgx461 maxmag 1E+3 1000 -> 1E+3 -mxgx462 maxmag 1000 -1E+3 -> 1000 -mxgx463 maxmag 1E+3 -1000 -> 1E+3 -mxgx464 maxmag -1000 1E+3 -> 1E+3 -mxgx465 maxmag -1E+3 1000 -> 1000 -mxgx466 maxmag -1000 -1E+3 -> -1000 -mxgx467 maxmag -1E+3 -1000 -> -1000 - --- rounding (results treated as though plus) -maxexponent: 999999999 -minexponent: -999999999 -precision: 3 - -mxgx470 maxmag 1 .5 -> 1 -mxgx471 maxmag 10 5 -> 10 -mxgx472 maxmag 100 50 -> 100 -mxgx473 maxmag 1000 500 -> 1.00E+3 Rounded -mxgx474 maxmag 10000 5000 -> 1.00E+4 Rounded -mxgx475 maxmag 6 .5 -> 6 -mxgx476 maxmag 66 5 -> 66 -mxgx477 maxmag 666 50 -> 666 -mxgx478 maxmag 6666 500 -> 6.67E+3 Rounded Inexact -mxgx479 maxmag 66666 5000 -> 6.67E+4 Rounded Inexact -mxgx480 maxmag 33333 5000 -> 3.33E+4 Rounded Inexact -mxgx481 maxmag .5 1 -> 1 -mxgx482 maxmag .5 10 -> 10 -mxgx483 maxmag .5 100 -> 100 -mxgx484 maxmag .5 1000 -> 1.00E+3 Rounded -mxgx485 maxmag .5 10000 -> 1.00E+4 Rounded -mxgx486 maxmag .5 6 -> 6 -mxgx487 maxmag .5 66 -> 66 -mxgx488 maxmag .5 666 -> 666 -mxgx489 maxmag .5 6666 -> 6.67E+3 Rounded Inexact -mxgx490 maxmag .5 66666 -> 6.67E+4 Rounded Inexact -mxgx491 maxmag .5 33333 -> 3.33E+4 Rounded Inexact - --- overflow tests -maxexponent: 999999999 -minexponent: -999999999 -precision: 3 -mxgx500 maxmag 9.999E+999999999 0 -> Infinity Inexact Overflow Rounded -mxgx501 maxmag -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded - --- subnormals and underflow -precision: 3 -maxexponent: 999 -minexponent: -999 -mxgx510 maxmag 1.00E-999 0 -> 1.00E-999 -mxgx511 maxmag 0.1E-999 0 -> 1E-1000 Subnormal -mxgx512 maxmag 0.10E-999 0 -> 1.0E-1000 Subnormal -mxgx513 maxmag 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded -mxgx514 maxmag 0.01E-999 0 -> 1E-1001 Subnormal --- next is rounded to Nmin -mxgx515 maxmag 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow -mxgx516 maxmag 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow -mxgx517 maxmag 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow -mxgx518 maxmag 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped -mxgx519 maxmag 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped -mxgx520 maxmag 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped - -mxgx530 maxmag -1.00E-999 0 -> -1.00E-999 -mxgx531 maxmag -0.1E-999 0 -> -1E-1000 Subnormal -mxgx532 maxmag -0.10E-999 0 -> -1.0E-1000 Subnormal -mxgx533 maxmag -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded -mxgx534 maxmag -0.01E-999 0 -> -1E-1001 Subnormal --- next is rounded to -Nmin -mxgx535 maxmag -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow -mxgx536 maxmag -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow -mxgx537 maxmag -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow -mxgx538 maxmag -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped -mxgx539 maxmag -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped -mxgx540 maxmag -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped - --- Null tests -mxgx900 maxmag 10 # -> NaN Invalid_operation -mxgx901 maxmag # 10 -> NaN Invalid_operation - - - +------------------------------------------------------------------------ +-- maxmag.decTest -- decimal maximum by magnitude -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +-- sanity checks +mxgx001 maxmag -2 -2 -> -2 +mxgx002 maxmag -2 -1 -> -2 +mxgx003 maxmag -2 0 -> -2 +mxgx004 maxmag -2 1 -> -2 +mxgx005 maxmag -2 2 -> 2 +mxgx006 maxmag -1 -2 -> -2 +mxgx007 maxmag -1 -1 -> -1 +mxgx008 maxmag -1 0 -> -1 +mxgx009 maxmag -1 1 -> 1 +mxgx010 maxmag -1 2 -> 2 +mxgx011 maxmag 0 -2 -> -2 +mxgx012 maxmag 0 -1 -> -1 +mxgx013 maxmag 0 0 -> 0 +mxgx014 maxmag 0 1 -> 1 +mxgx015 maxmag 0 2 -> 2 +mxgx016 maxmag 1 -2 -> -2 +mxgx017 maxmag 1 -1 -> 1 +mxgx018 maxmag 1 0 -> 1 +mxgx019 maxmag 1 1 -> 1 +mxgx020 maxmag 1 2 -> 2 +mxgx021 maxmag 2 -2 -> 2 +mxgx022 maxmag 2 -1 -> 2 +mxgx023 maxmag 2 0 -> 2 +mxgx025 maxmag 2 1 -> 2 +mxgx026 maxmag 2 2 -> 2 + +-- extended zeros +mxgx030 maxmag 0 0 -> 0 +mxgx031 maxmag 0 -0 -> 0 +mxgx032 maxmag 0 -0.0 -> 0 +mxgx033 maxmag 0 0.0 -> 0 +mxgx034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen +mxgx035 maxmag -0 -0 -> -0 +mxgx036 maxmag -0 -0.0 -> -0.0 +mxgx037 maxmag -0 0.0 -> 0.0 +mxgx038 maxmag 0.0 0 -> 0 +mxgx039 maxmag 0.0 -0 -> 0.0 +mxgx040 maxmag 0.0 -0.0 -> 0.0 +mxgx041 maxmag 0.0 0.0 -> 0.0 +mxgx042 maxmag -0.0 0 -> 0 +mxgx043 maxmag -0.0 -0 -> -0.0 +mxgx044 maxmag -0.0 -0.0 -> -0.0 +mxgx045 maxmag -0.0 0.0 -> 0.0 + +mxgx050 maxmag -0E1 0E1 -> 0E+1 +mxgx051 maxmag -0E2 0E2 -> 0E+2 +mxgx052 maxmag -0E2 0E1 -> 0E+1 +mxgx053 maxmag -0E1 0E2 -> 0E+2 +mxgx054 maxmag 0E1 -0E1 -> 0E+1 +mxgx055 maxmag 0E2 -0E2 -> 0E+2 +mxgx056 maxmag 0E2 -0E1 -> 0E+2 +mxgx057 maxmag 0E1 -0E2 -> 0E+1 + +mxgx058 maxmag 0E1 0E1 -> 0E+1 +mxgx059 maxmag 0E2 0E2 -> 0E+2 +mxgx060 maxmag 0E2 0E1 -> 0E+2 +mxgx061 maxmag 0E1 0E2 -> 0E+2 +mxgx062 maxmag -0E1 -0E1 -> -0E+1 +mxgx063 maxmag -0E2 -0E2 -> -0E+2 +mxgx064 maxmag -0E2 -0E1 -> -0E+1 +mxgx065 maxmag -0E1 -0E2 -> -0E+1 + +-- Specials +precision: 9 +mxgx090 maxmag Inf -Inf -> Infinity +mxgx091 maxmag Inf -1000 -> Infinity +mxgx092 maxmag Inf -1 -> Infinity +mxgx093 maxmag Inf -0 -> Infinity +mxgx094 maxmag Inf 0 -> Infinity +mxgx095 maxmag Inf 1 -> Infinity +mxgx096 maxmag Inf 1000 -> Infinity +mxgx097 maxmag Inf Inf -> Infinity +mxgx098 maxmag -1000 Inf -> Infinity +mxgx099 maxmag -Inf Inf -> Infinity +mxgx100 maxmag -1 Inf -> Infinity +mxgx101 maxmag -0 Inf -> Infinity +mxgx102 maxmag 0 Inf -> Infinity +mxgx103 maxmag 1 Inf -> Infinity +mxgx104 maxmag 1000 Inf -> Infinity +mxgx105 maxmag Inf Inf -> Infinity + +mxgx120 maxmag -Inf -Inf -> -Infinity +mxgx121 maxmag -Inf -1000 -> -Infinity +mxgx122 maxmag -Inf -1 -> -Infinity +mxgx123 maxmag -Inf -0 -> -Infinity +mxgx124 maxmag -Inf 0 -> -Infinity +mxgx125 maxmag -Inf 1 -> -Infinity +mxgx126 maxmag -Inf 1000 -> -Infinity +mxgx127 maxmag -Inf Inf -> Infinity +mxgx128 maxmag -Inf -Inf -> -Infinity +mxgx129 maxmag -1000 -Inf -> -Infinity +mxgx130 maxmag -1 -Inf -> -Infinity +mxgx131 maxmag -0 -Inf -> -Infinity +mxgx132 maxmag 0 -Inf -> -Infinity +mxgx133 maxmag 1 -Inf -> -Infinity +mxgx134 maxmag 1000 -Inf -> -Infinity +mxgx135 maxmag Inf -Inf -> Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +mxgx141 maxmag NaN -Inf -> -Infinity +mxgx142 maxmag NaN -1000 -> -1000 +mxgx143 maxmag NaN -1 -> -1 +mxgx144 maxmag NaN -0 -> -0 +mxgx145 maxmag NaN 0 -> 0 +mxgx146 maxmag NaN 1 -> 1 +mxgx147 maxmag NaN 1000 -> 1000 +mxgx148 maxmag NaN Inf -> Infinity +mxgx149 maxmag NaN NaN -> NaN +mxgx150 maxmag -Inf NaN -> -Infinity +mxgx151 maxmag -1000 NaN -> -1000 +mxgx152 maxmag -1 NaN -> -1 +mxgx153 maxmag -0 NaN -> -0 +mxgx154 maxmag 0 NaN -> 0 +mxgx155 maxmag 1 NaN -> 1 +mxgx156 maxmag 1000 NaN -> 1000 +mxgx157 maxmag Inf NaN -> Infinity + +mxgx161 maxmag sNaN -Inf -> NaN Invalid_operation +mxgx162 maxmag sNaN -1000 -> NaN Invalid_operation +mxgx163 maxmag sNaN -1 -> NaN Invalid_operation +mxgx164 maxmag sNaN -0 -> NaN Invalid_operation +mxgx165 maxmag sNaN 0 -> NaN Invalid_operation +mxgx166 maxmag sNaN 1 -> NaN Invalid_operation +mxgx167 maxmag sNaN 1000 -> NaN Invalid_operation +mxgx168 maxmag sNaN NaN -> NaN Invalid_operation +mxgx169 maxmag sNaN sNaN -> NaN Invalid_operation +mxgx170 maxmag NaN sNaN -> NaN Invalid_operation +mxgx171 maxmag -Inf sNaN -> NaN Invalid_operation +mxgx172 maxmag -1000 sNaN -> NaN Invalid_operation +mxgx173 maxmag -1 sNaN -> NaN Invalid_operation +mxgx174 maxmag -0 sNaN -> NaN Invalid_operation +mxgx175 maxmag 0 sNaN -> NaN Invalid_operation +mxgx176 maxmag 1 sNaN -> NaN Invalid_operation +mxgx177 maxmag 1000 sNaN -> NaN Invalid_operation +mxgx178 maxmag Inf sNaN -> NaN Invalid_operation +mxgx179 maxmag NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +mxgx181 maxmag NaN9 -Inf -> -Infinity +mxgx182 maxmag NaN8 9 -> 9 +mxgx183 maxmag -NaN7 Inf -> Infinity + +mxgx184 maxmag -NaN1 NaN11 -> -NaN1 +mxgx185 maxmag NaN2 NaN12 -> NaN2 +mxgx186 maxmag -NaN13 -NaN7 -> -NaN13 +mxgx187 maxmag NaN14 -NaN5 -> NaN14 + +mxgx188 maxmag -Inf NaN4 -> -Infinity +mxgx189 maxmag -9 -NaN3 -> -9 +mxgx190 maxmag Inf NaN2 -> Infinity + +mxgx191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation +mxgx192 maxmag sNaN98 -1 -> NaN98 Invalid_operation +mxgx193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation +mxgx194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation +mxgx195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation +mxgx196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation +mxgx197 maxmag 0 sNaN91 -> NaN91 Invalid_operation +mxgx198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation +mxgx199 maxmag NaN sNaN89 -> NaN89 Invalid_operation + +-- rounding checks +maxexponent: 999 +minexponent: -999 +precision: 9 +mxgx201 maxmag 12345678000 1 -> 1.23456780E+10 Rounded +mxgx202 maxmag 1 12345678000 -> 1.23456780E+10 Rounded +mxgx203 maxmag 1234567800 1 -> 1.23456780E+9 Rounded +mxgx204 maxmag 1 1234567800 -> 1.23456780E+9 Rounded +mxgx205 maxmag 1234567890 1 -> 1.23456789E+9 Rounded +mxgx206 maxmag 1 1234567890 -> 1.23456789E+9 Rounded +mxgx207 maxmag 1234567891 1 -> 1.23456789E+9 Inexact Rounded +mxgx208 maxmag 1 1234567891 -> 1.23456789E+9 Inexact Rounded +mxgx209 maxmag 12345678901 1 -> 1.23456789E+10 Inexact Rounded +mxgx210 maxmag 1 12345678901 -> 1.23456789E+10 Inexact Rounded +mxgx211 maxmag 1234567896 1 -> 1.23456790E+9 Inexact Rounded +mxgx212 maxmag 1 1234567896 -> 1.23456790E+9 Inexact Rounded +mxgx213 maxmag -1234567891 1 -> -1.23456789E+9 Inexact Rounded +mxgx214 maxmag 1 -1234567891 -> -1.23456789E+9 Inexact Rounded +mxgx215 maxmag -12345678901 1 -> -1.23456789E+10 Inexact Rounded +mxgx216 maxmag 1 -12345678901 -> -1.23456789E+10 Inexact Rounded +mxgx217 maxmag -1234567896 1 -> -1.23456790E+9 Inexact Rounded +mxgx218 maxmag 1 -1234567896 -> -1.23456790E+9 Inexact Rounded + +precision: 15 +mxgx221 maxmag 12345678000 1 -> 12345678000 +mxgx222 maxmag 1 12345678000 -> 12345678000 +mxgx223 maxmag 1234567800 1 -> 1234567800 +mxgx224 maxmag 1 1234567800 -> 1234567800 +mxgx225 maxmag 1234567890 1 -> 1234567890 +mxgx226 maxmag 1 1234567890 -> 1234567890 +mxgx227 maxmag 1234567891 1 -> 1234567891 +mxgx228 maxmag 1 1234567891 -> 1234567891 +mxgx229 maxmag 12345678901 1 -> 12345678901 +mxgx230 maxmag 1 12345678901 -> 12345678901 +mxgx231 maxmag 1234567896 1 -> 1234567896 +mxgx232 maxmag 1 1234567896 -> 1234567896 +mxgx233 maxmag -1234567891 1 -> -1234567891 +mxgx234 maxmag 1 -1234567891 -> -1234567891 +mxgx235 maxmag -12345678901 1 -> -12345678901 +mxgx236 maxmag 1 -12345678901 -> -12345678901 +mxgx237 maxmag -1234567896 1 -> -1234567896 +mxgx238 maxmag 1 -1234567896 -> -1234567896 + +-- from examples +mxgx280 maxmag '3' '2' -> '3' +mxgx281 maxmag '-10' '3' -> '-10' +mxgx282 maxmag '1.0' '1' -> '1' +mxgx283 maxmag '1' '1.0' -> '1' +mxgx284 maxmag '7' 'NaN' -> '7' + +-- overflow and underflow tests ... +maxExponent: 999999999 +minexponent: -999999999 +mxgx330 maxmag +1.23456789012345E-0 9E+999999999 -> 9E+999999999 +mxgx331 maxmag 9E+999999999 +1.23456789012345E-0 -> 9E+999999999 +mxgx332 maxmag +0.100 9E-999999999 -> 0.100 +mxgx333 maxmag 9E-999999999 +0.100 -> 0.100 +mxgx335 maxmag -1.23456789012345E-0 9E+999999999 -> 9E+999999999 +mxgx336 maxmag 9E+999999999 -1.23456789012345E-0 -> 9E+999999999 +mxgx337 maxmag -0.100 9E-999999999 -> -0.100 +mxgx338 maxmag 9E-999999999 -0.100 -> -0.100 + +mxgx339 maxmag 1e-599999999 1e-400000001 -> 1E-400000001 +mxgx340 maxmag 1e-599999999 1e-400000000 -> 1E-400000000 +mxgx341 maxmag 1e-600000000 1e-400000000 -> 1E-400000000 +mxgx342 maxmag 9e-999999998 0.01 -> 0.01 +mxgx343 maxmag 9e-999999998 0.1 -> 0.1 +mxgx344 maxmag 0.01 9e-999999998 -> 0.01 +mxgx345 maxmag 1e599999999 1e400000001 -> 1E+599999999 +mxgx346 maxmag 1e599999999 1e400000000 -> 1E+599999999 +mxgx347 maxmag 1e600000000 1e400000000 -> 1E+600000000 +mxgx348 maxmag 9e999999998 100 -> 9E+999999998 +mxgx349 maxmag 9e999999998 10 -> 9E+999999998 +mxgx350 maxmag 100 9e999999998 -> 9E+999999998 +-- signs +mxgx351 maxmag 1e+777777777 1e+411111111 -> 1E+777777777 +mxgx352 maxmag 1e+777777777 -1e+411111111 -> 1E+777777777 +mxgx353 maxmag -1e+777777777 1e+411111111 -> -1E+777777777 +mxgx354 maxmag -1e+777777777 -1e+411111111 -> -1E+777777777 +mxgx355 maxmag 1e-777777777 1e-411111111 -> 1E-411111111 +mxgx356 maxmag 1e-777777777 -1e-411111111 -> -1E-411111111 +mxgx357 maxmag -1e-777777777 1e-411111111 -> 1E-411111111 +mxgx358 maxmag -1e-777777777 -1e-411111111 -> -1E-411111111 + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +mxgx401 maxmag Inf 1.1 -> Infinity +mxgx402 maxmag 1.1 1 -> 1.1 +mxgx403 maxmag 1 1.0 -> 1 +mxgx404 maxmag 1.0 0.1 -> 1.0 +mxgx405 maxmag 0.1 0.10 -> 0.1 +mxgx406 maxmag 0.10 0.100 -> 0.10 +mxgx407 maxmag 0.10 0 -> 0.10 +mxgx408 maxmag 0 0.0 -> 0 +mxgx409 maxmag 0.0 -0 -> 0.0 +mxgx410 maxmag 0.0 -0.0 -> 0.0 +mxgx411 maxmag 0.00 -0.0 -> 0.00 +mxgx412 maxmag 0.0 -0.00 -> 0.0 +mxgx413 maxmag 0 -0.0 -> 0 +mxgx414 maxmag 0 -0 -> 0 +mxgx415 maxmag -0.0 -0 -> -0.0 +mxgx416 maxmag -0 -0.100 -> -0.100 +mxgx417 maxmag -0.100 -0.10 -> -0.100 +mxgx418 maxmag -0.10 -0.1 -> -0.10 +mxgx419 maxmag -0.1 -1.0 -> -1.0 +mxgx420 maxmag -1.0 -1 -> -1.0 +mxgx421 maxmag -1 -1.1 -> -1.1 +mxgx423 maxmag -1.1 -Inf -> -Infinity +-- same with operands reversed +mxgx431 maxmag 1.1 Inf -> Infinity +mxgx432 maxmag 1 1.1 -> 1.1 +mxgx433 maxmag 1.0 1 -> 1 +mxgx434 maxmag 0.1 1.0 -> 1.0 +mxgx435 maxmag 0.10 0.1 -> 0.1 +mxgx436 maxmag 0.100 0.10 -> 0.10 +mxgx437 maxmag 0 0.10 -> 0.10 +mxgx438 maxmag 0.0 0 -> 0 +mxgx439 maxmag -0 0.0 -> 0.0 +mxgx440 maxmag -0.0 0.0 -> 0.0 +mxgx441 maxmag -0.0 0.00 -> 0.00 +mxgx442 maxmag -0.00 0.0 -> 0.0 +mxgx443 maxmag -0.0 0 -> 0 +mxgx444 maxmag -0 0 -> 0 +mxgx445 maxmag -0 -0.0 -> -0.0 +mxgx446 maxmag -0.100 -0 -> -0.100 +mxgx447 maxmag -0.10 -0.100 -> -0.100 +mxgx448 maxmag -0.1 -0.10 -> -0.10 +mxgx449 maxmag -1.0 -0.1 -> -1.0 +mxgx450 maxmag -1 -1.0 -> -1.0 +mxgx451 maxmag -1.1 -1 -> -1.1 +mxgx453 maxmag -Inf -1.1 -> -Infinity +-- largies +mxgx460 maxmag 1000 1E+3 -> 1E+3 +mxgx461 maxmag 1E+3 1000 -> 1E+3 +mxgx462 maxmag 1000 -1E+3 -> 1000 +mxgx463 maxmag 1E+3 -1000 -> 1E+3 +mxgx464 maxmag -1000 1E+3 -> 1E+3 +mxgx465 maxmag -1E+3 1000 -> 1000 +mxgx466 maxmag -1000 -1E+3 -> -1000 +mxgx467 maxmag -1E+3 -1000 -> -1000 + +-- rounding (results treated as though plus) +maxexponent: 999999999 +minexponent: -999999999 +precision: 3 + +mxgx470 maxmag 1 .5 -> 1 +mxgx471 maxmag 10 5 -> 10 +mxgx472 maxmag 100 50 -> 100 +mxgx473 maxmag 1000 500 -> 1.00E+3 Rounded +mxgx474 maxmag 10000 5000 -> 1.00E+4 Rounded +mxgx475 maxmag 6 .5 -> 6 +mxgx476 maxmag 66 5 -> 66 +mxgx477 maxmag 666 50 -> 666 +mxgx478 maxmag 6666 500 -> 6.67E+3 Rounded Inexact +mxgx479 maxmag 66666 5000 -> 6.67E+4 Rounded Inexact +mxgx480 maxmag 33333 5000 -> 3.33E+4 Rounded Inexact +mxgx481 maxmag .5 1 -> 1 +mxgx482 maxmag .5 10 -> 10 +mxgx483 maxmag .5 100 -> 100 +mxgx484 maxmag .5 1000 -> 1.00E+3 Rounded +mxgx485 maxmag .5 10000 -> 1.00E+4 Rounded +mxgx486 maxmag .5 6 -> 6 +mxgx487 maxmag .5 66 -> 66 +mxgx488 maxmag .5 666 -> 666 +mxgx489 maxmag .5 6666 -> 6.67E+3 Rounded Inexact +mxgx490 maxmag .5 66666 -> 6.67E+4 Rounded Inexact +mxgx491 maxmag .5 33333 -> 3.33E+4 Rounded Inexact + +-- overflow tests +maxexponent: 999999999 +minexponent: -999999999 +precision: 3 +mxgx500 maxmag 9.999E+999999999 0 -> Infinity Inexact Overflow Rounded +mxgx501 maxmag -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded + +-- subnormals and underflow +precision: 3 +maxexponent: 999 +minexponent: -999 +mxgx510 maxmag 1.00E-999 0 -> 1.00E-999 +mxgx511 maxmag 0.1E-999 0 -> 1E-1000 Subnormal +mxgx512 maxmag 0.10E-999 0 -> 1.0E-1000 Subnormal +mxgx513 maxmag 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded +mxgx514 maxmag 0.01E-999 0 -> 1E-1001 Subnormal +-- next is rounded to Nmin +mxgx515 maxmag 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow +mxgx516 maxmag 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow +mxgx517 maxmag 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow +mxgx518 maxmag 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +mxgx519 maxmag 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +mxgx520 maxmag 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped + +mxgx530 maxmag -1.00E-999 0 -> -1.00E-999 +mxgx531 maxmag -0.1E-999 0 -> -1E-1000 Subnormal +mxgx532 maxmag -0.10E-999 0 -> -1.0E-1000 Subnormal +mxgx533 maxmag -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded +mxgx534 maxmag -0.01E-999 0 -> -1E-1001 Subnormal +-- next is rounded to -Nmin +mxgx535 maxmag -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow +mxgx536 maxmag -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow +mxgx537 maxmag -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow +mxgx538 maxmag -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +mxgx539 maxmag -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +mxgx540 maxmag -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped + +-- Null tests +mxgx900 maxmag 10 # -> NaN Invalid_operation +mxgx901 maxmag # 10 -> NaN Invalid_operation + + + diff --git a/Lib/test/decimaltestdata/minmag.decTest b/Lib/test/decimaltestdata/minmag.decTest index 9e56233..f1ac385 100644 --- a/Lib/test/decimaltestdata/minmag.decTest +++ b/Lib/test/decimaltestdata/minmag.decTest @@ -1,390 +1,390 @@ ------------------------------------------------------------------------- --- minmag.decTest -- decimal minimum by magnitude -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- we assume that base comparison is tested in compare.decTest, so --- these mainly cover special cases and rounding - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 384 -minexponent: -383 - --- sanity checks -mngx001 minmag -2 -2 -> -2 -mngx002 minmag -2 -1 -> -1 -mngx003 minmag -2 0 -> 0 -mngx004 minmag -2 1 -> 1 -mngx005 minmag -2 2 -> -2 -mngx006 minmag -1 -2 -> -1 -mngx007 minmag -1 -1 -> -1 -mngx008 minmag -1 0 -> 0 -mngx009 minmag -1 1 -> -1 -mngx010 minmag -1 2 -> -1 -mngx011 minmag 0 -2 -> 0 -mngx012 minmag 0 -1 -> 0 -mngx013 minmag 0 0 -> 0 -mngx014 minmag 0 1 -> 0 -mngx015 minmag 0 2 -> 0 -mngx016 minmag 1 -2 -> 1 -mngx017 minmag 1 -1 -> -1 -mngx018 minmag 1 0 -> 0 -mngx019 minmag 1 1 -> 1 -mngx020 minmag 1 2 -> 1 -mngx021 minmag 2 -2 -> -2 -mngx022 minmag 2 -1 -> -1 -mngx023 minmag 2 0 -> 0 -mngx025 minmag 2 1 -> 1 -mngx026 minmag 2 2 -> 2 - --- extended zeros -mngx030 minmag 0 0 -> 0 -mngx031 minmag 0 -0 -> -0 -mngx032 minmag 0 -0.0 -> -0.0 -mngx033 minmag 0 0.0 -> 0.0 -mngx034 minmag -0 0 -> -0 -mngx035 minmag -0 -0 -> -0 -mngx036 minmag -0 -0.0 -> -0 -mngx037 minmag -0 0.0 -> -0 -mngx038 minmag 0.0 0 -> 0.0 -mngx039 minmag 0.0 -0 -> -0 -mngx040 minmag 0.0 -0.0 -> -0.0 -mngx041 minmag 0.0 0.0 -> 0.0 -mngx042 minmag -0.0 0 -> -0.0 -mngx043 minmag -0.0 -0 -> -0 -mngx044 minmag -0.0 -0.0 -> -0.0 -mngx045 minmag -0.0 0.0 -> -0.0 - -mngx046 minmag 0E1 -0E1 -> -0E+1 -mngx047 minmag -0E1 0E2 -> -0E+1 -mngx048 minmag 0E2 0E1 -> 0E+1 -mngx049 minmag 0E1 0E2 -> 0E+1 -mngx050 minmag -0E3 -0E2 -> -0E+3 -mngx051 minmag -0E2 -0E3 -> -0E+3 - --- Specials -precision: 9 -mngx090 minmag Inf -Inf -> -Infinity -mngx091 minmag Inf -1000 -> -1000 -mngx092 minmag Inf -1 -> -1 -mngx093 minmag Inf -0 -> -0 -mngx094 minmag Inf 0 -> 0 -mngx095 minmag Inf 1 -> 1 -mngx096 minmag Inf 1000 -> 1000 -mngx097 minmag Inf Inf -> Infinity -mngx098 minmag -1000 Inf -> -1000 -mngx099 minmag -Inf Inf -> -Infinity -mngx100 minmag -1 Inf -> -1 -mngx101 minmag -0 Inf -> -0 -mngx102 minmag 0 Inf -> 0 -mngx103 minmag 1 Inf -> 1 -mngx104 minmag 1000 Inf -> 1000 -mngx105 minmag Inf Inf -> Infinity - -mngx120 minmag -Inf -Inf -> -Infinity -mngx121 minmag -Inf -1000 -> -1000 -mngx122 minmag -Inf -1 -> -1 -mngx123 minmag -Inf -0 -> -0 -mngx124 minmag -Inf 0 -> 0 -mngx125 minmag -Inf 1 -> 1 -mngx126 minmag -Inf 1000 -> 1000 -mngx127 minmag -Inf Inf -> -Infinity -mngx128 minmag -Inf -Inf -> -Infinity -mngx129 minmag -1000 -Inf -> -1000 -mngx130 minmag -1 -Inf -> -1 -mngx131 minmag -0 -Inf -> -0 -mngx132 minmag 0 -Inf -> 0 -mngx133 minmag 1 -Inf -> 1 -mngx134 minmag 1000 -Inf -> 1000 -mngx135 minmag Inf -Inf -> -Infinity - --- 2004.08.02 754r chooses number over NaN in mixed cases -mngx141 minmag NaN -Inf -> -Infinity -mngx142 minmag NaN -1000 -> -1000 -mngx143 minmag NaN -1 -> -1 -mngx144 minmag NaN -0 -> -0 -mngx145 minmag NaN 0 -> 0 -mngx146 minmag NaN 1 -> 1 -mngx147 minmag NaN 1000 -> 1000 -mngx148 minmag NaN Inf -> Infinity -mngx149 minmag NaN NaN -> NaN -mngx150 minmag -Inf NaN -> -Infinity -mngx151 minmag -1000 NaN -> -1000 -mngx152 minmag -1 -NaN -> -1 -mngx153 minmag -0 NaN -> -0 -mngx154 minmag 0 -NaN -> 0 -mngx155 minmag 1 NaN -> 1 -mngx156 minmag 1000 NaN -> 1000 -mngx157 minmag Inf NaN -> Infinity - -mngx161 minmag sNaN -Inf -> NaN Invalid_operation -mngx162 minmag sNaN -1000 -> NaN Invalid_operation -mngx163 minmag sNaN -1 -> NaN Invalid_operation -mngx164 minmag sNaN -0 -> NaN Invalid_operation -mngx165 minmag -sNaN 0 -> -NaN Invalid_operation -mngx166 minmag -sNaN 1 -> -NaN Invalid_operation -mngx167 minmag sNaN 1000 -> NaN Invalid_operation -mngx168 minmag sNaN NaN -> NaN Invalid_operation -mngx169 minmag sNaN sNaN -> NaN Invalid_operation -mngx170 minmag NaN sNaN -> NaN Invalid_operation -mngx171 minmag -Inf sNaN -> NaN Invalid_operation -mngx172 minmag -1000 sNaN -> NaN Invalid_operation -mngx173 minmag -1 sNaN -> NaN Invalid_operation -mngx174 minmag -0 sNaN -> NaN Invalid_operation -mngx175 minmag 0 sNaN -> NaN Invalid_operation -mngx176 minmag 1 sNaN -> NaN Invalid_operation -mngx177 minmag 1000 sNaN -> NaN Invalid_operation -mngx178 minmag Inf sNaN -> NaN Invalid_operation -mngx179 minmag NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -mngx181 minmag NaN9 -Inf -> -Infinity -mngx182 minmag -NaN8 9990 -> 9990 -mngx183 minmag NaN71 Inf -> Infinity - -mngx184 minmag NaN1 NaN54 -> NaN1 -mngx185 minmag NaN22 -NaN53 -> NaN22 -mngx186 minmag -NaN3 NaN6 -> -NaN3 -mngx187 minmag -NaN44 NaN7 -> -NaN44 - -mngx188 minmag -Inf NaN41 -> -Infinity -mngx189 minmag -9999 -NaN33 -> -9999 -mngx190 minmag Inf NaN2 -> Infinity - -mngx191 minmag sNaN99 -Inf -> NaN99 Invalid_operation -mngx192 minmag sNaN98 -11 -> NaN98 Invalid_operation -mngx193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation -mngx194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation -mngx195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation -mngx196 minmag -Inf sNaN92 -> NaN92 Invalid_operation -mngx197 minmag 088 sNaN91 -> NaN91 Invalid_operation -mngx198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation -mngx199 minmag NaN sNaN86 -> NaN86 Invalid_operation - --- rounding checks -- chosen is rounded, or not -maxExponent: 999 -minexponent: -999 -precision: 9 -mngx201 minmag -12345678000 1 -> 1 -mngx202 minmag 1 -12345678000 -> 1 -mngx203 minmag -1234567800 1 -> 1 -mngx204 minmag 1 -1234567800 -> 1 -mngx205 minmag -1234567890 1 -> 1 -mngx206 minmag 1 -1234567890 -> 1 -mngx207 minmag -1234567891 1 -> 1 -mngx208 minmag 1 -1234567891 -> 1 -mngx209 minmag -12345678901 1 -> 1 -mngx210 minmag 1 -12345678901 -> 1 -mngx211 minmag -1234567896 1 -> 1 -mngx212 minmag 1 -1234567896 -> 1 -mngx213 minmag 1234567891 1 -> 1 -mngx214 minmag 1 1234567891 -> 1 -mngx215 minmag 12345678901 1 -> 1 -mngx216 minmag 1 12345678901 -> 1 -mngx217 minmag 1234567896 1 -> 1 -mngx218 minmag 1 1234567896 -> 1 - -precision: 15 -mngx221 minmag -12345678000 1 -> 1 -mngx222 minmag 1 -12345678000 -> 1 -mngx223 minmag -1234567800 1 -> 1 -mngx224 minmag 1 -1234567800 -> 1 -mngx225 minmag -1234567890 1 -> 1 -mngx226 minmag 1 -1234567890 -> 1 -mngx227 minmag -1234567891 1 -> 1 -mngx228 minmag 1 -1234567891 -> 1 -mngx229 minmag -12345678901 1 -> 1 -mngx230 minmag 1 -12345678901 -> 1 -mngx231 minmag -1234567896 1 -> 1 -mngx232 minmag 1 -1234567896 -> 1 -mngx233 minmag 1234567891 1 -> 1 -mngx234 minmag 1 1234567891 -> 1 -mngx235 minmag 12345678901 1 -> 1 -mngx236 minmag 1 12345678901 -> 1 -mngx237 minmag 1234567896 1 -> 1 -mngx238 minmag 1 1234567896 -> 1 - --- from examples -mngx280 minmag '3' '2' -> '2' -mngx281 minmag '-10' '3' -> '3' -mngx282 minmag '1.0' '1' -> '1.0' -mngx283 minmag '1' '1.0' -> '1.0' -mngx284 minmag '7' 'NaN' -> '7' - --- overflow and underflow tests .. subnormal results [inputs] now allowed -maxExponent: 999999999 -minexponent: -999999999 -mngx330 minmag -1.23456789012345E-0 -9E+999999999 -> -1.23456789012345 -mngx331 minmag -9E+999999999 -1.23456789012345E-0 -> -1.23456789012345 -mngx332 minmag -0.100 -9E-999999999 -> -9E-999999999 -mngx333 minmag -9E-999999999 -0.100 -> -9E-999999999 -mngx335 minmag +1.23456789012345E-0 -9E+999999999 -> 1.23456789012345 -mngx336 minmag -9E+999999999 1.23456789012345E-0 -> 1.23456789012345 -mngx337 minmag +0.100 -9E-999999999 -> -9E-999999999 -mngx338 minmag -9E-999999999 0.100 -> -9E-999999999 - -mngx339 minmag -1e-599999999 -1e-400000001 -> -1E-599999999 -mngx340 minmag -1e-599999999 -1e-400000000 -> -1E-599999999 -mngx341 minmag -1e-600000000 -1e-400000000 -> -1E-600000000 -mngx342 minmag -9e-999999998 -0.01 -> -9E-999999998 -mngx343 minmag -9e-999999998 -0.1 -> -9E-999999998 -mngx344 minmag -0.01 -9e-999999998 -> -9E-999999998 -mngx345 minmag -1e599999999 -1e400000001 -> -1E+400000001 -mngx346 minmag -1e599999999 -1e400000000 -> -1E+400000000 -mngx347 minmag -1e600000000 -1e400000000 -> -1E+400000000 -mngx348 minmag -9e999999998 -100 -> -100 -mngx349 minmag -9e999999998 -10 -> -10 -mngx350 minmag -100 -9e999999998 -> -100 --- signs -mngx351 minmag -1e+777777777 -1e+411111111 -> -1E+411111111 -mngx352 minmag -1e+777777777 +1e+411111111 -> 1E+411111111 -mngx353 minmag +1e+777777777 -1e+411111111 -> -1E+411111111 -mngx354 minmag +1e+777777777 +1e+411111111 -> 1E+411111111 -mngx355 minmag -1e-777777777 -1e-411111111 -> -1E-777777777 -mngx356 minmag -1e-777777777 +1e-411111111 -> -1E-777777777 -mngx357 minmag +1e-777777777 -1e-411111111 -> 1E-777777777 -mngx358 minmag +1e-777777777 +1e-411111111 -> 1E-777777777 - --- expanded list from min/max 754r purple prose --- [explicit tests for exponent ordering] -mngx401 minmag Inf 1.1 -> 1.1 -mngx402 minmag 1.1 1 -> 1 -mngx403 minmag 1 1.0 -> 1.0 -mngx404 minmag 1.0 0.1 -> 0.1 -mngx405 minmag 0.1 0.10 -> 0.10 -mngx406 minmag 0.10 0.100 -> 0.100 -mngx407 minmag 0.10 0 -> 0 -mngx408 minmag 0 0.0 -> 0.0 -mngx409 minmag 0.0 -0 -> -0 -mngx410 minmag 0.0 -0.0 -> -0.0 -mngx411 minmag 0.00 -0.0 -> -0.0 -mngx412 minmag 0.0 -0.00 -> -0.00 -mngx413 minmag 0 -0.0 -> -0.0 -mngx414 minmag 0 -0 -> -0 -mngx415 minmag -0.0 -0 -> -0 -mngx416 minmag -0 -0.100 -> -0 -mngx417 minmag -0.100 -0.10 -> -0.10 -mngx418 minmag -0.10 -0.1 -> -0.1 -mngx419 minmag -0.1 -1.0 -> -0.1 -mngx420 minmag -1.0 -1 -> -1 -mngx421 minmag -1 -1.1 -> -1 -mngx423 minmag -1.1 -Inf -> -1.1 --- same with operands reversed -mngx431 minmag 1.1 Inf -> 1.1 -mngx432 minmag 1 1.1 -> 1 -mngx433 minmag 1.0 1 -> 1.0 -mngx434 minmag 0.1 1.0 -> 0.1 -mngx435 minmag 0.10 0.1 -> 0.10 -mngx436 minmag 0.100 0.10 -> 0.100 -mngx437 minmag 0 0.10 -> 0 -mngx438 minmag 0.0 0 -> 0.0 -mngx439 minmag -0 0.0 -> -0 -mngx440 minmag -0.0 0.0 -> -0.0 -mngx441 minmag -0.0 0.00 -> -0.0 -mngx442 minmag -0.00 0.0 -> -0.00 -mngx443 minmag -0.0 0 -> -0.0 -mngx444 minmag -0 0 -> -0 -mngx445 minmag -0 -0.0 -> -0 -mngx446 minmag -0.100 -0 -> -0 -mngx447 minmag -0.10 -0.100 -> -0.10 -mngx448 minmag -0.1 -0.10 -> -0.1 -mngx449 minmag -1.0 -0.1 -> -0.1 -mngx450 minmag -1 -1.0 -> -1 -mngx451 minmag -1.1 -1 -> -1 -mngx453 minmag -Inf -1.1 -> -1.1 --- largies -mngx460 minmag 1000 1E+3 -> 1000 -mngx461 minmag 1E+3 1000 -> 1000 -mngx462 minmag 1000 -1E+3 -> -1E+3 -mngx463 minmag 1E+3 -1000 -> -1000 -mngx464 minmag -1000 1E+3 -> -1000 -mngx465 minmag -1E+3 1000 -> -1E+3 -mngx466 minmag -1000 -1E+3 -> -1E+3 -mngx467 minmag -1E+3 -1000 -> -1E+3 - --- rounding (results treated as though plus) -maxexponent: 999999999 -minexponent: -999999999 -precision: 3 - -mngx470 minmag 1 5 -> 1 -mngx471 minmag 10 50 -> 10 -mngx472 minmag 100 500 -> 100 -mngx473 minmag 1000 5000 -> 1.00E+3 Rounded -mngx474 minmag 10000 50000 -> 1.00E+4 Rounded -mngx475 minmag 6 50 -> 6 -mngx476 minmag 66 500 -> 66 -mngx477 minmag 666 5000 -> 666 -mngx478 minmag 6666 50000 -> 6.67E+3 Rounded Inexact -mngx479 minmag 66666 500000 -> 6.67E+4 Rounded Inexact -mngx480 minmag 33333 500000 -> 3.33E+4 Rounded Inexact -mngx481 minmag 75401 1 -> 1 -mngx482 minmag 75402 10 -> 10 -mngx483 minmag 75403 100 -> 100 -mngx484 minmag 75404 1000 -> 1.00E+3 Rounded -mngx485 minmag 75405 10000 -> 1.00E+4 Rounded -mngx486 minmag 75406 6 -> 6 -mngx487 minmag 75407 66 -> 66 -mngx488 minmag 75408 666 -> 666 -mngx489 minmag 75409 6666 -> 6.67E+3 Rounded Inexact -mngx490 minmag 75410 66666 -> 6.67E+4 Rounded Inexact -mngx491 minmag 75411 33333 -> 3.33E+4 Rounded Inexact - - --- overflow tests -maxexponent: 999999999 -minexponent: -999999999 -precision: 3 -mngx500 minmag 9.999E+999999999 0 -> 0 -mngx501 minmag -9.999E+999999999 0 -> 0 - --- subnormals and underflow -precision: 3 -maxexponent: 999 -minexponent: -999 -mngx510 minmag 1.00E-999 0 -> 0 -mngx511 minmag 0.1E-999 0 -> 0 -mngx512 minmag 0.10E-999 0 -> 0 -mngx513 minmag 0.100E-999 0 -> 0 -mngx514 minmag 0.01E-999 0 -> 0 -mngx515 minmag 0.999E-999 0 -> 0 -mngx516 minmag 0.099E-999 0 -> 0 -mngx517 minmag 0.009E-999 0 -> 0 -mngx518 minmag 0.001E-999 0 -> 0 -mngx519 minmag 0.0009E-999 0 -> 0 -mngx520 minmag 0.0001E-999 0 -> 0 - -mngx530 minmag -1.00E-999 0 -> 0 -mngx531 minmag -0.1E-999 0 -> 0 -mngx532 minmag -0.10E-999 0 -> 0 -mngx533 minmag -0.100E-999 0 -> 0 -mngx534 minmag -0.01E-999 0 -> 0 -mngx535 minmag -0.999E-999 0 -> 0 -mngx536 minmag -0.099E-999 0 -> 0 -mngx537 minmag -0.009E-999 0 -> 0 -mngx538 minmag -0.001E-999 0 -> 0 -mngx539 minmag -0.0009E-999 0 -> 0 -mngx540 minmag -0.0001E-999 0 -> 0 - - --- Null tests -mng900 minmag 10 # -> NaN Invalid_operation -mng901 minmag # 10 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- minmag.decTest -- decimal minimum by magnitude -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- we assume that base comparison is tested in compare.decTest, so +-- these mainly cover special cases and rounding + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +-- sanity checks +mngx001 minmag -2 -2 -> -2 +mngx002 minmag -2 -1 -> -1 +mngx003 minmag -2 0 -> 0 +mngx004 minmag -2 1 -> 1 +mngx005 minmag -2 2 -> -2 +mngx006 minmag -1 -2 -> -1 +mngx007 minmag -1 -1 -> -1 +mngx008 minmag -1 0 -> 0 +mngx009 minmag -1 1 -> -1 +mngx010 minmag -1 2 -> -1 +mngx011 minmag 0 -2 -> 0 +mngx012 minmag 0 -1 -> 0 +mngx013 minmag 0 0 -> 0 +mngx014 minmag 0 1 -> 0 +mngx015 minmag 0 2 -> 0 +mngx016 minmag 1 -2 -> 1 +mngx017 minmag 1 -1 -> -1 +mngx018 minmag 1 0 -> 0 +mngx019 minmag 1 1 -> 1 +mngx020 minmag 1 2 -> 1 +mngx021 minmag 2 -2 -> -2 +mngx022 minmag 2 -1 -> -1 +mngx023 minmag 2 0 -> 0 +mngx025 minmag 2 1 -> 1 +mngx026 minmag 2 2 -> 2 + +-- extended zeros +mngx030 minmag 0 0 -> 0 +mngx031 minmag 0 -0 -> -0 +mngx032 minmag 0 -0.0 -> -0.0 +mngx033 minmag 0 0.0 -> 0.0 +mngx034 minmag -0 0 -> -0 +mngx035 minmag -0 -0 -> -0 +mngx036 minmag -0 -0.0 -> -0 +mngx037 minmag -0 0.0 -> -0 +mngx038 minmag 0.0 0 -> 0.0 +mngx039 minmag 0.0 -0 -> -0 +mngx040 minmag 0.0 -0.0 -> -0.0 +mngx041 minmag 0.0 0.0 -> 0.0 +mngx042 minmag -0.0 0 -> -0.0 +mngx043 minmag -0.0 -0 -> -0 +mngx044 minmag -0.0 -0.0 -> -0.0 +mngx045 minmag -0.0 0.0 -> -0.0 + +mngx046 minmag 0E1 -0E1 -> -0E+1 +mngx047 minmag -0E1 0E2 -> -0E+1 +mngx048 minmag 0E2 0E1 -> 0E+1 +mngx049 minmag 0E1 0E2 -> 0E+1 +mngx050 minmag -0E3 -0E2 -> -0E+3 +mngx051 minmag -0E2 -0E3 -> -0E+3 + +-- Specials +precision: 9 +mngx090 minmag Inf -Inf -> -Infinity +mngx091 minmag Inf -1000 -> -1000 +mngx092 minmag Inf -1 -> -1 +mngx093 minmag Inf -0 -> -0 +mngx094 minmag Inf 0 -> 0 +mngx095 minmag Inf 1 -> 1 +mngx096 minmag Inf 1000 -> 1000 +mngx097 minmag Inf Inf -> Infinity +mngx098 minmag -1000 Inf -> -1000 +mngx099 minmag -Inf Inf -> -Infinity +mngx100 minmag -1 Inf -> -1 +mngx101 minmag -0 Inf -> -0 +mngx102 minmag 0 Inf -> 0 +mngx103 minmag 1 Inf -> 1 +mngx104 minmag 1000 Inf -> 1000 +mngx105 minmag Inf Inf -> Infinity + +mngx120 minmag -Inf -Inf -> -Infinity +mngx121 minmag -Inf -1000 -> -1000 +mngx122 minmag -Inf -1 -> -1 +mngx123 minmag -Inf -0 -> -0 +mngx124 minmag -Inf 0 -> 0 +mngx125 minmag -Inf 1 -> 1 +mngx126 minmag -Inf 1000 -> 1000 +mngx127 minmag -Inf Inf -> -Infinity +mngx128 minmag -Inf -Inf -> -Infinity +mngx129 minmag -1000 -Inf -> -1000 +mngx130 minmag -1 -Inf -> -1 +mngx131 minmag -0 -Inf -> -0 +mngx132 minmag 0 -Inf -> 0 +mngx133 minmag 1 -Inf -> 1 +mngx134 minmag 1000 -Inf -> 1000 +mngx135 minmag Inf -Inf -> -Infinity + +-- 2004.08.02 754r chooses number over NaN in mixed cases +mngx141 minmag NaN -Inf -> -Infinity +mngx142 minmag NaN -1000 -> -1000 +mngx143 minmag NaN -1 -> -1 +mngx144 minmag NaN -0 -> -0 +mngx145 minmag NaN 0 -> 0 +mngx146 minmag NaN 1 -> 1 +mngx147 minmag NaN 1000 -> 1000 +mngx148 minmag NaN Inf -> Infinity +mngx149 minmag NaN NaN -> NaN +mngx150 minmag -Inf NaN -> -Infinity +mngx151 minmag -1000 NaN -> -1000 +mngx152 minmag -1 -NaN -> -1 +mngx153 minmag -0 NaN -> -0 +mngx154 minmag 0 -NaN -> 0 +mngx155 minmag 1 NaN -> 1 +mngx156 minmag 1000 NaN -> 1000 +mngx157 minmag Inf NaN -> Infinity + +mngx161 minmag sNaN -Inf -> NaN Invalid_operation +mngx162 minmag sNaN -1000 -> NaN Invalid_operation +mngx163 minmag sNaN -1 -> NaN Invalid_operation +mngx164 minmag sNaN -0 -> NaN Invalid_operation +mngx165 minmag -sNaN 0 -> -NaN Invalid_operation +mngx166 minmag -sNaN 1 -> -NaN Invalid_operation +mngx167 minmag sNaN 1000 -> NaN Invalid_operation +mngx168 minmag sNaN NaN -> NaN Invalid_operation +mngx169 minmag sNaN sNaN -> NaN Invalid_operation +mngx170 minmag NaN sNaN -> NaN Invalid_operation +mngx171 minmag -Inf sNaN -> NaN Invalid_operation +mngx172 minmag -1000 sNaN -> NaN Invalid_operation +mngx173 minmag -1 sNaN -> NaN Invalid_operation +mngx174 minmag -0 sNaN -> NaN Invalid_operation +mngx175 minmag 0 sNaN -> NaN Invalid_operation +mngx176 minmag 1 sNaN -> NaN Invalid_operation +mngx177 minmag 1000 sNaN -> NaN Invalid_operation +mngx178 minmag Inf sNaN -> NaN Invalid_operation +mngx179 minmag NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +mngx181 minmag NaN9 -Inf -> -Infinity +mngx182 minmag -NaN8 9990 -> 9990 +mngx183 minmag NaN71 Inf -> Infinity + +mngx184 minmag NaN1 NaN54 -> NaN1 +mngx185 minmag NaN22 -NaN53 -> NaN22 +mngx186 minmag -NaN3 NaN6 -> -NaN3 +mngx187 minmag -NaN44 NaN7 -> -NaN44 + +mngx188 minmag -Inf NaN41 -> -Infinity +mngx189 minmag -9999 -NaN33 -> -9999 +mngx190 minmag Inf NaN2 -> Infinity + +mngx191 minmag sNaN99 -Inf -> NaN99 Invalid_operation +mngx192 minmag sNaN98 -11 -> NaN98 Invalid_operation +mngx193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation +mngx194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation +mngx195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation +mngx196 minmag -Inf sNaN92 -> NaN92 Invalid_operation +mngx197 minmag 088 sNaN91 -> NaN91 Invalid_operation +mngx198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation +mngx199 minmag NaN sNaN86 -> NaN86 Invalid_operation + +-- rounding checks -- chosen is rounded, or not +maxExponent: 999 +minexponent: -999 +precision: 9 +mngx201 minmag -12345678000 1 -> 1 +mngx202 minmag 1 -12345678000 -> 1 +mngx203 minmag -1234567800 1 -> 1 +mngx204 minmag 1 -1234567800 -> 1 +mngx205 minmag -1234567890 1 -> 1 +mngx206 minmag 1 -1234567890 -> 1 +mngx207 minmag -1234567891 1 -> 1 +mngx208 minmag 1 -1234567891 -> 1 +mngx209 minmag -12345678901 1 -> 1 +mngx210 minmag 1 -12345678901 -> 1 +mngx211 minmag -1234567896 1 -> 1 +mngx212 minmag 1 -1234567896 -> 1 +mngx213 minmag 1234567891 1 -> 1 +mngx214 minmag 1 1234567891 -> 1 +mngx215 minmag 12345678901 1 -> 1 +mngx216 minmag 1 12345678901 -> 1 +mngx217 minmag 1234567896 1 -> 1 +mngx218 minmag 1 1234567896 -> 1 + +precision: 15 +mngx221 minmag -12345678000 1 -> 1 +mngx222 minmag 1 -12345678000 -> 1 +mngx223 minmag -1234567800 1 -> 1 +mngx224 minmag 1 -1234567800 -> 1 +mngx225 minmag -1234567890 1 -> 1 +mngx226 minmag 1 -1234567890 -> 1 +mngx227 minmag -1234567891 1 -> 1 +mngx228 minmag 1 -1234567891 -> 1 +mngx229 minmag -12345678901 1 -> 1 +mngx230 minmag 1 -12345678901 -> 1 +mngx231 minmag -1234567896 1 -> 1 +mngx232 minmag 1 -1234567896 -> 1 +mngx233 minmag 1234567891 1 -> 1 +mngx234 minmag 1 1234567891 -> 1 +mngx235 minmag 12345678901 1 -> 1 +mngx236 minmag 1 12345678901 -> 1 +mngx237 minmag 1234567896 1 -> 1 +mngx238 minmag 1 1234567896 -> 1 + +-- from examples +mngx280 minmag '3' '2' -> '2' +mngx281 minmag '-10' '3' -> '3' +mngx282 minmag '1.0' '1' -> '1.0' +mngx283 minmag '1' '1.0' -> '1.0' +mngx284 minmag '7' 'NaN' -> '7' + +-- overflow and underflow tests .. subnormal results [inputs] now allowed +maxExponent: 999999999 +minexponent: -999999999 +mngx330 minmag -1.23456789012345E-0 -9E+999999999 -> -1.23456789012345 +mngx331 minmag -9E+999999999 -1.23456789012345E-0 -> -1.23456789012345 +mngx332 minmag -0.100 -9E-999999999 -> -9E-999999999 +mngx333 minmag -9E-999999999 -0.100 -> -9E-999999999 +mngx335 minmag +1.23456789012345E-0 -9E+999999999 -> 1.23456789012345 +mngx336 minmag -9E+999999999 1.23456789012345E-0 -> 1.23456789012345 +mngx337 minmag +0.100 -9E-999999999 -> -9E-999999999 +mngx338 minmag -9E-999999999 0.100 -> -9E-999999999 + +mngx339 minmag -1e-599999999 -1e-400000001 -> -1E-599999999 +mngx340 minmag -1e-599999999 -1e-400000000 -> -1E-599999999 +mngx341 minmag -1e-600000000 -1e-400000000 -> -1E-600000000 +mngx342 minmag -9e-999999998 -0.01 -> -9E-999999998 +mngx343 minmag -9e-999999998 -0.1 -> -9E-999999998 +mngx344 minmag -0.01 -9e-999999998 -> -9E-999999998 +mngx345 minmag -1e599999999 -1e400000001 -> -1E+400000001 +mngx346 minmag -1e599999999 -1e400000000 -> -1E+400000000 +mngx347 minmag -1e600000000 -1e400000000 -> -1E+400000000 +mngx348 minmag -9e999999998 -100 -> -100 +mngx349 minmag -9e999999998 -10 -> -10 +mngx350 minmag -100 -9e999999998 -> -100 +-- signs +mngx351 minmag -1e+777777777 -1e+411111111 -> -1E+411111111 +mngx352 minmag -1e+777777777 +1e+411111111 -> 1E+411111111 +mngx353 minmag +1e+777777777 -1e+411111111 -> -1E+411111111 +mngx354 minmag +1e+777777777 +1e+411111111 -> 1E+411111111 +mngx355 minmag -1e-777777777 -1e-411111111 -> -1E-777777777 +mngx356 minmag -1e-777777777 +1e-411111111 -> -1E-777777777 +mngx357 minmag +1e-777777777 -1e-411111111 -> 1E-777777777 +mngx358 minmag +1e-777777777 +1e-411111111 -> 1E-777777777 + +-- expanded list from min/max 754r purple prose +-- [explicit tests for exponent ordering] +mngx401 minmag Inf 1.1 -> 1.1 +mngx402 minmag 1.1 1 -> 1 +mngx403 minmag 1 1.0 -> 1.0 +mngx404 minmag 1.0 0.1 -> 0.1 +mngx405 minmag 0.1 0.10 -> 0.10 +mngx406 minmag 0.10 0.100 -> 0.100 +mngx407 minmag 0.10 0 -> 0 +mngx408 minmag 0 0.0 -> 0.0 +mngx409 minmag 0.0 -0 -> -0 +mngx410 minmag 0.0 -0.0 -> -0.0 +mngx411 minmag 0.00 -0.0 -> -0.0 +mngx412 minmag 0.0 -0.00 -> -0.00 +mngx413 minmag 0 -0.0 -> -0.0 +mngx414 minmag 0 -0 -> -0 +mngx415 minmag -0.0 -0 -> -0 +mngx416 minmag -0 -0.100 -> -0 +mngx417 minmag -0.100 -0.10 -> -0.10 +mngx418 minmag -0.10 -0.1 -> -0.1 +mngx419 minmag -0.1 -1.0 -> -0.1 +mngx420 minmag -1.0 -1 -> -1 +mngx421 minmag -1 -1.1 -> -1 +mngx423 minmag -1.1 -Inf -> -1.1 +-- same with operands reversed +mngx431 minmag 1.1 Inf -> 1.1 +mngx432 minmag 1 1.1 -> 1 +mngx433 minmag 1.0 1 -> 1.0 +mngx434 minmag 0.1 1.0 -> 0.1 +mngx435 minmag 0.10 0.1 -> 0.10 +mngx436 minmag 0.100 0.10 -> 0.100 +mngx437 minmag 0 0.10 -> 0 +mngx438 minmag 0.0 0 -> 0.0 +mngx439 minmag -0 0.0 -> -0 +mngx440 minmag -0.0 0.0 -> -0.0 +mngx441 minmag -0.0 0.00 -> -0.0 +mngx442 minmag -0.00 0.0 -> -0.00 +mngx443 minmag -0.0 0 -> -0.0 +mngx444 minmag -0 0 -> -0 +mngx445 minmag -0 -0.0 -> -0 +mngx446 minmag -0.100 -0 -> -0 +mngx447 minmag -0.10 -0.100 -> -0.10 +mngx448 minmag -0.1 -0.10 -> -0.1 +mngx449 minmag -1.0 -0.1 -> -0.1 +mngx450 minmag -1 -1.0 -> -1 +mngx451 minmag -1.1 -1 -> -1 +mngx453 minmag -Inf -1.1 -> -1.1 +-- largies +mngx460 minmag 1000 1E+3 -> 1000 +mngx461 minmag 1E+3 1000 -> 1000 +mngx462 minmag 1000 -1E+3 -> -1E+3 +mngx463 minmag 1E+3 -1000 -> -1000 +mngx464 minmag -1000 1E+3 -> -1000 +mngx465 minmag -1E+3 1000 -> -1E+3 +mngx466 minmag -1000 -1E+3 -> -1E+3 +mngx467 minmag -1E+3 -1000 -> -1E+3 + +-- rounding (results treated as though plus) +maxexponent: 999999999 +minexponent: -999999999 +precision: 3 + +mngx470 minmag 1 5 -> 1 +mngx471 minmag 10 50 -> 10 +mngx472 minmag 100 500 -> 100 +mngx473 minmag 1000 5000 -> 1.00E+3 Rounded +mngx474 minmag 10000 50000 -> 1.00E+4 Rounded +mngx475 minmag 6 50 -> 6 +mngx476 minmag 66 500 -> 66 +mngx477 minmag 666 5000 -> 666 +mngx478 minmag 6666 50000 -> 6.67E+3 Rounded Inexact +mngx479 minmag 66666 500000 -> 6.67E+4 Rounded Inexact +mngx480 minmag 33333 500000 -> 3.33E+4 Rounded Inexact +mngx481 minmag 75401 1 -> 1 +mngx482 minmag 75402 10 -> 10 +mngx483 minmag 75403 100 -> 100 +mngx484 minmag 75404 1000 -> 1.00E+3 Rounded +mngx485 minmag 75405 10000 -> 1.00E+4 Rounded +mngx486 minmag 75406 6 -> 6 +mngx487 minmag 75407 66 -> 66 +mngx488 minmag 75408 666 -> 666 +mngx489 minmag 75409 6666 -> 6.67E+3 Rounded Inexact +mngx490 minmag 75410 66666 -> 6.67E+4 Rounded Inexact +mngx491 minmag 75411 33333 -> 3.33E+4 Rounded Inexact + + +-- overflow tests +maxexponent: 999999999 +minexponent: -999999999 +precision: 3 +mngx500 minmag 9.999E+999999999 0 -> 0 +mngx501 minmag -9.999E+999999999 0 -> 0 + +-- subnormals and underflow +precision: 3 +maxexponent: 999 +minexponent: -999 +mngx510 minmag 1.00E-999 0 -> 0 +mngx511 minmag 0.1E-999 0 -> 0 +mngx512 minmag 0.10E-999 0 -> 0 +mngx513 minmag 0.100E-999 0 -> 0 +mngx514 minmag 0.01E-999 0 -> 0 +mngx515 minmag 0.999E-999 0 -> 0 +mngx516 minmag 0.099E-999 0 -> 0 +mngx517 minmag 0.009E-999 0 -> 0 +mngx518 minmag 0.001E-999 0 -> 0 +mngx519 minmag 0.0009E-999 0 -> 0 +mngx520 minmag 0.0001E-999 0 -> 0 + +mngx530 minmag -1.00E-999 0 -> 0 +mngx531 minmag -0.1E-999 0 -> 0 +mngx532 minmag -0.10E-999 0 -> 0 +mngx533 minmag -0.100E-999 0 -> 0 +mngx534 minmag -0.01E-999 0 -> 0 +mngx535 minmag -0.999E-999 0 -> 0 +mngx536 minmag -0.099E-999 0 -> 0 +mngx537 minmag -0.009E-999 0 -> 0 +mngx538 minmag -0.001E-999 0 -> 0 +mngx539 minmag -0.0009E-999 0 -> 0 +mngx540 minmag -0.0001E-999 0 -> 0 + + +-- Null tests +mng900 minmag 10 # -> NaN Invalid_operation +mng901 minmag # 10 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/nextminus.decTest b/Lib/test/decimaltestdata/nextminus.decTest index ba93066..531c525 100644 --- a/Lib/test/decimaltestdata/nextminus.decTest +++ b/Lib/test/decimaltestdata/nextminus.decTest @@ -1,148 +1,148 @@ ------------------------------------------------------------------------- --- nextminus.decTest -- decimal next that is less [754r nextdown] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 384 -minexponent: -383 - -nextm001 nextminus 0.999999995 -> 0.999999994 -nextm002 nextminus 0.999999996 -> 0.999999995 -nextm003 nextminus 0.999999997 -> 0.999999996 -nextm004 nextminus 0.999999998 -> 0.999999997 -nextm005 nextminus 0.999999999 -> 0.999999998 -nextm006 nextminus 1.00000000 -> 0.999999999 -nextm007 nextminus 1.0 -> 0.999999999 -nextm008 nextminus 1 -> 0.999999999 -nextm009 nextminus 1.00000001 -> 1.00000000 -nextm010 nextminus 1.00000002 -> 1.00000001 -nextm011 nextminus 1.00000003 -> 1.00000002 -nextm012 nextminus 1.00000004 -> 1.00000003 -nextm013 nextminus 1.00000005 -> 1.00000004 -nextm014 nextminus 1.00000006 -> 1.00000005 -nextm015 nextminus 1.00000007 -> 1.00000006 -nextm016 nextminus 1.00000008 -> 1.00000007 -nextm017 nextminus 1.00000009 -> 1.00000008 -nextm018 nextminus 1.00000010 -> 1.00000009 -nextm019 nextminus 1.00000011 -> 1.00000010 -nextm020 nextminus 1.00000012 -> 1.00000011 - -nextm021 nextminus -0.999999995 -> -0.999999996 -nextm022 nextminus -0.999999996 -> -0.999999997 -nextm023 nextminus -0.999999997 -> -0.999999998 -nextm024 nextminus -0.999999998 -> -0.999999999 -nextm025 nextminus -0.999999999 -> -1.00000000 -nextm026 nextminus -1.00000000 -> -1.00000001 -nextm027 nextminus -1.0 -> -1.00000001 -nextm028 nextminus -1 -> -1.00000001 -nextm029 nextminus -1.00000001 -> -1.00000002 -nextm030 nextminus -1.00000002 -> -1.00000003 -nextm031 nextminus -1.00000003 -> -1.00000004 -nextm032 nextminus -1.00000004 -> -1.00000005 -nextm033 nextminus -1.00000005 -> -1.00000006 -nextm034 nextminus -1.00000006 -> -1.00000007 -nextm035 nextminus -1.00000007 -> -1.00000008 -nextm036 nextminus -1.00000008 -> -1.00000009 -nextm037 nextminus -1.00000009 -> -1.00000010 -nextm038 nextminus -1.00000010 -> -1.00000011 -nextm039 nextminus -1.00000011 -> -1.00000012 - --- input operand is >precision -nextm041 nextminus 1.00000010998 -> 1.00000010 -nextm042 nextminus 1.00000010999 -> 1.00000010 -nextm043 nextminus 1.00000011000 -> 1.00000010 -nextm044 nextminus 1.00000011001 -> 1.00000011 -nextm045 nextminus 1.00000011002 -> 1.00000011 -nextm046 nextminus 1.00000011002 -> 1.00000011 -nextm047 nextminus 1.00000011052 -> 1.00000011 -nextm048 nextminus 1.00000011552 -> 1.00000011 -nextm049 nextminus -1.00000010998 -> -1.00000011 -nextm050 nextminus -1.00000010999 -> -1.00000011 -nextm051 nextminus -1.00000011000 -> -1.00000012 -nextm052 nextminus -1.00000011001 -> -1.00000012 -nextm053 nextminus -1.00000011002 -> -1.00000012 -nextm054 nextminus -1.00000011002 -> -1.00000012 -nextm055 nextminus -1.00000011052 -> -1.00000012 -nextm056 nextminus -1.00000011552 -> -1.00000012 --- ultra-tiny inputs -nextm060 nextminus 1E-99999 -> 0E-391 -nextm061 nextminus 1E-999999999 -> 0E-391 -nextm062 nextminus 1E-391 -> 0E-391 -nextm063 nextminus -1E-99999 -> -1E-391 -nextm064 nextminus -1E-999999999 -> -1E-391 -nextm065 nextminus -1E-391 -> -2E-391 - --- Zeros -nextm100 nextminus -0 -> -1E-391 -nextm101 nextminus 0 -> -1E-391 -nextm102 nextminus 0.00 -> -1E-391 -nextm103 nextminus -0.00 -> -1E-391 -nextm104 nextminus 0E-300 -> -1E-391 -nextm105 nextminus 0E+300 -> -1E-391 -nextm106 nextminus 0E+30000 -> -1E-391 -nextm107 nextminus -0E+30000 -> -1E-391 - -precision: 9 -maxExponent: 999 -minexponent: -999 --- specials -nextm150 nextminus Inf -> 9.99999999E+999 -nextm151 nextminus -Inf -> -Infinity -nextm152 nextminus NaN -> NaN -nextm153 nextminus sNaN -> NaN Invalid_operation -nextm154 nextminus NaN77 -> NaN77 -nextm155 nextminus sNaN88 -> NaN88 Invalid_operation -nextm156 nextminus -NaN -> -NaN -nextm157 nextminus -sNaN -> -NaN Invalid_operation -nextm158 nextminus -NaN77 -> -NaN77 -nextm159 nextminus -sNaN88 -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -nextm170 nextminus 9.99999999E+999 -> 9.99999998E+999 -nextm171 nextminus 9.99999998E+999 -> 9.99999997E+999 -nextm172 nextminus 1E-999 -> 9.9999999E-1000 -nextm173 nextminus 1.00000000E-999 -> 9.9999999E-1000 -nextm174 nextminus 9E-1007 -> 8E-1007 -nextm175 nextminus 9.9E-1006 -> 9.8E-1006 -nextm176 nextminus 9.9999E-1003 -> 9.9998E-1003 -nextm177 nextminus 9.9999999E-1000 -> 9.9999998E-1000 -nextm178 nextminus 9.9999998E-1000 -> 9.9999997E-1000 -nextm179 nextminus 9.9999997E-1000 -> 9.9999996E-1000 -nextm180 nextminus 0E-1007 -> -1E-1007 -nextm181 nextminus 1E-1007 -> 0E-1007 -nextm182 nextminus 2E-1007 -> 1E-1007 - -nextm183 nextminus -0E-1007 -> -1E-1007 -nextm184 nextminus -1E-1007 -> -2E-1007 -nextm185 nextminus -2E-1007 -> -3E-1007 -nextm186 nextminus -10E-1007 -> -1.1E-1006 -nextm187 nextminus -100E-1007 -> -1.01E-1005 -nextm188 nextminus -100000E-1007 -> -1.00001E-1002 -nextm189 nextminus -1.0000E-999 -> -1.00000001E-999 -nextm190 nextminus -1.00000000E-999 -> -1.00000001E-999 -nextm191 nextminus -1E-999 -> -1.00000001E-999 -nextm192 nextminus -9.99999998E+999 -> -9.99999999E+999 -nextm193 nextminus -9.99999999E+999 -> -Infinity - --- Null tests -nextm900 nextminus # -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- nextminus.decTest -- decimal next that is less [754r nextdown] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +nextm001 nextminus 0.999999995 -> 0.999999994 +nextm002 nextminus 0.999999996 -> 0.999999995 +nextm003 nextminus 0.999999997 -> 0.999999996 +nextm004 nextminus 0.999999998 -> 0.999999997 +nextm005 nextminus 0.999999999 -> 0.999999998 +nextm006 nextminus 1.00000000 -> 0.999999999 +nextm007 nextminus 1.0 -> 0.999999999 +nextm008 nextminus 1 -> 0.999999999 +nextm009 nextminus 1.00000001 -> 1.00000000 +nextm010 nextminus 1.00000002 -> 1.00000001 +nextm011 nextminus 1.00000003 -> 1.00000002 +nextm012 nextminus 1.00000004 -> 1.00000003 +nextm013 nextminus 1.00000005 -> 1.00000004 +nextm014 nextminus 1.00000006 -> 1.00000005 +nextm015 nextminus 1.00000007 -> 1.00000006 +nextm016 nextminus 1.00000008 -> 1.00000007 +nextm017 nextminus 1.00000009 -> 1.00000008 +nextm018 nextminus 1.00000010 -> 1.00000009 +nextm019 nextminus 1.00000011 -> 1.00000010 +nextm020 nextminus 1.00000012 -> 1.00000011 + +nextm021 nextminus -0.999999995 -> -0.999999996 +nextm022 nextminus -0.999999996 -> -0.999999997 +nextm023 nextminus -0.999999997 -> -0.999999998 +nextm024 nextminus -0.999999998 -> -0.999999999 +nextm025 nextminus -0.999999999 -> -1.00000000 +nextm026 nextminus -1.00000000 -> -1.00000001 +nextm027 nextminus -1.0 -> -1.00000001 +nextm028 nextminus -1 -> -1.00000001 +nextm029 nextminus -1.00000001 -> -1.00000002 +nextm030 nextminus -1.00000002 -> -1.00000003 +nextm031 nextminus -1.00000003 -> -1.00000004 +nextm032 nextminus -1.00000004 -> -1.00000005 +nextm033 nextminus -1.00000005 -> -1.00000006 +nextm034 nextminus -1.00000006 -> -1.00000007 +nextm035 nextminus -1.00000007 -> -1.00000008 +nextm036 nextminus -1.00000008 -> -1.00000009 +nextm037 nextminus -1.00000009 -> -1.00000010 +nextm038 nextminus -1.00000010 -> -1.00000011 +nextm039 nextminus -1.00000011 -> -1.00000012 + +-- input operand is >precision +nextm041 nextminus 1.00000010998 -> 1.00000010 +nextm042 nextminus 1.00000010999 -> 1.00000010 +nextm043 nextminus 1.00000011000 -> 1.00000010 +nextm044 nextminus 1.00000011001 -> 1.00000011 +nextm045 nextminus 1.00000011002 -> 1.00000011 +nextm046 nextminus 1.00000011002 -> 1.00000011 +nextm047 nextminus 1.00000011052 -> 1.00000011 +nextm048 nextminus 1.00000011552 -> 1.00000011 +nextm049 nextminus -1.00000010998 -> -1.00000011 +nextm050 nextminus -1.00000010999 -> -1.00000011 +nextm051 nextminus -1.00000011000 -> -1.00000012 +nextm052 nextminus -1.00000011001 -> -1.00000012 +nextm053 nextminus -1.00000011002 -> -1.00000012 +nextm054 nextminus -1.00000011002 -> -1.00000012 +nextm055 nextminus -1.00000011052 -> -1.00000012 +nextm056 nextminus -1.00000011552 -> -1.00000012 +-- ultra-tiny inputs +nextm060 nextminus 1E-99999 -> 0E-391 +nextm061 nextminus 1E-999999999 -> 0E-391 +nextm062 nextminus 1E-391 -> 0E-391 +nextm063 nextminus -1E-99999 -> -1E-391 +nextm064 nextminus -1E-999999999 -> -1E-391 +nextm065 nextminus -1E-391 -> -2E-391 + +-- Zeros +nextm100 nextminus -0 -> -1E-391 +nextm101 nextminus 0 -> -1E-391 +nextm102 nextminus 0.00 -> -1E-391 +nextm103 nextminus -0.00 -> -1E-391 +nextm104 nextminus 0E-300 -> -1E-391 +nextm105 nextminus 0E+300 -> -1E-391 +nextm106 nextminus 0E+30000 -> -1E-391 +nextm107 nextminus -0E+30000 -> -1E-391 + +precision: 9 +maxExponent: 999 +minexponent: -999 +-- specials +nextm150 nextminus Inf -> 9.99999999E+999 +nextm151 nextminus -Inf -> -Infinity +nextm152 nextminus NaN -> NaN +nextm153 nextminus sNaN -> NaN Invalid_operation +nextm154 nextminus NaN77 -> NaN77 +nextm155 nextminus sNaN88 -> NaN88 Invalid_operation +nextm156 nextminus -NaN -> -NaN +nextm157 nextminus -sNaN -> -NaN Invalid_operation +nextm158 nextminus -NaN77 -> -NaN77 +nextm159 nextminus -sNaN88 -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +nextm170 nextminus 9.99999999E+999 -> 9.99999998E+999 +nextm171 nextminus 9.99999998E+999 -> 9.99999997E+999 +nextm172 nextminus 1E-999 -> 9.9999999E-1000 +nextm173 nextminus 1.00000000E-999 -> 9.9999999E-1000 +nextm174 nextminus 9E-1007 -> 8E-1007 +nextm175 nextminus 9.9E-1006 -> 9.8E-1006 +nextm176 nextminus 9.9999E-1003 -> 9.9998E-1003 +nextm177 nextminus 9.9999999E-1000 -> 9.9999998E-1000 +nextm178 nextminus 9.9999998E-1000 -> 9.9999997E-1000 +nextm179 nextminus 9.9999997E-1000 -> 9.9999996E-1000 +nextm180 nextminus 0E-1007 -> -1E-1007 +nextm181 nextminus 1E-1007 -> 0E-1007 +nextm182 nextminus 2E-1007 -> 1E-1007 + +nextm183 nextminus -0E-1007 -> -1E-1007 +nextm184 nextminus -1E-1007 -> -2E-1007 +nextm185 nextminus -2E-1007 -> -3E-1007 +nextm186 nextminus -10E-1007 -> -1.1E-1006 +nextm187 nextminus -100E-1007 -> -1.01E-1005 +nextm188 nextminus -100000E-1007 -> -1.00001E-1002 +nextm189 nextminus -1.0000E-999 -> -1.00000001E-999 +nextm190 nextminus -1.00000000E-999 -> -1.00000001E-999 +nextm191 nextminus -1E-999 -> -1.00000001E-999 +nextm192 nextminus -9.99999998E+999 -> -9.99999999E+999 +nextm193 nextminus -9.99999999E+999 -> -Infinity + +-- Null tests +nextm900 nextminus # -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/nextplus.decTest b/Lib/test/decimaltestdata/nextplus.decTest index 44989e5..c66e328 100644 --- a/Lib/test/decimaltestdata/nextplus.decTest +++ b/Lib/test/decimaltestdata/nextplus.decTest @@ -1,150 +1,150 @@ ------------------------------------------------------------------------- --- nextplus.decTest -- decimal next that is greater [754r nextup] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 384 -minexponent: -383 - -nextp001 nextplus 0.999999995 -> 0.999999996 -nextp002 nextplus 0.999999996 -> 0.999999997 -nextp003 nextplus 0.999999997 -> 0.999999998 -nextp004 nextplus 0.999999998 -> 0.999999999 -nextp005 nextplus 0.999999999 -> 1.00000000 -nextp006 nextplus 1.00000000 -> 1.00000001 -nextp007 nextplus 1.0 -> 1.00000001 -nextp008 nextplus 1 -> 1.00000001 -nextp009 nextplus 1.00000001 -> 1.00000002 -nextp010 nextplus 1.00000002 -> 1.00000003 -nextp011 nextplus 1.00000003 -> 1.00000004 -nextp012 nextplus 1.00000004 -> 1.00000005 -nextp013 nextplus 1.00000005 -> 1.00000006 -nextp014 nextplus 1.00000006 -> 1.00000007 -nextp015 nextplus 1.00000007 -> 1.00000008 -nextp016 nextplus 1.00000008 -> 1.00000009 -nextp017 nextplus 1.00000009 -> 1.00000010 -nextp018 nextplus 1.00000010 -> 1.00000011 -nextp019 nextplus 1.00000011 -> 1.00000012 - -nextp021 nextplus -0.999999995 -> -0.999999994 -nextp022 nextplus -0.999999996 -> -0.999999995 -nextp023 nextplus -0.999999997 -> -0.999999996 -nextp024 nextplus -0.999999998 -> -0.999999997 -nextp025 nextplus -0.999999999 -> -0.999999998 -nextp026 nextplus -1.00000000 -> -0.999999999 -nextp027 nextplus -1.0 -> -0.999999999 -nextp028 nextplus -1 -> -0.999999999 -nextp029 nextplus -1.00000001 -> -1.00000000 -nextp030 nextplus -1.00000002 -> -1.00000001 -nextp031 nextplus -1.00000003 -> -1.00000002 -nextp032 nextplus -1.00000004 -> -1.00000003 -nextp033 nextplus -1.00000005 -> -1.00000004 -nextp034 nextplus -1.00000006 -> -1.00000005 -nextp035 nextplus -1.00000007 -> -1.00000006 -nextp036 nextplus -1.00000008 -> -1.00000007 -nextp037 nextplus -1.00000009 -> -1.00000008 -nextp038 nextplus -1.00000010 -> -1.00000009 -nextp039 nextplus -1.00000011 -> -1.00000010 -nextp040 nextplus -1.00000012 -> -1.00000011 - --- input operand is >precision -nextp041 nextplus 1.00000010998 -> 1.00000011 -nextp042 nextplus 1.00000010999 -> 1.00000011 -nextp043 nextplus 1.00000011000 -> 1.00000012 -nextp044 nextplus 1.00000011001 -> 1.00000012 -nextp045 nextplus 1.00000011002 -> 1.00000012 -nextp046 nextplus 1.00000011002 -> 1.00000012 -nextp047 nextplus 1.00000011052 -> 1.00000012 -nextp048 nextplus 1.00000011552 -> 1.00000012 -nextp049 nextplus -1.00000010998 -> -1.00000010 -nextp050 nextplus -1.00000010999 -> -1.00000010 -nextp051 nextplus -1.00000011000 -> -1.00000010 -nextp052 nextplus -1.00000011001 -> -1.00000011 -nextp053 nextplus -1.00000011002 -> -1.00000011 -nextp054 nextplus -1.00000011002 -> -1.00000011 -nextp055 nextplus -1.00000011052 -> -1.00000011 -nextp056 nextplus -1.00000011552 -> -1.00000011 --- ultra-tiny inputs -nextp060 nextplus 1E-99999 -> 1E-391 -nextp061 nextplus 1E-999999999 -> 1E-391 -nextp062 nextplus 1E-391 -> 2E-391 -nextp063 nextplus -1E-99999 -> -0E-391 -nextp064 nextplus -1E-999999999 -> -0E-391 -nextp065 nextplus -1E-391 -> -0E-391 - --- Zeros -nextp100 nextplus 0 -> 1E-391 -nextp101 nextplus 0.00 -> 1E-391 -nextp102 nextplus 0E-300 -> 1E-391 -nextp103 nextplus 0E+300 -> 1E-391 -nextp104 nextplus 0E+30000 -> 1E-391 -nextp105 nextplus -0 -> 1E-391 -nextp106 nextplus -0.00 -> 1E-391 -nextp107 nextplus -0E-300 -> 1E-391 -nextp108 nextplus -0E+300 -> 1E-391 -nextp109 nextplus -0E+30000 -> 1E-391 - -maxExponent: 999 -minexponent: -999 -precision: 9 --- specials -nextp150 nextplus Inf -> Infinity -nextp151 nextplus -Inf -> -9.99999999E+999 -nextp152 nextplus NaN -> NaN -nextp153 nextplus sNaN -> NaN Invalid_operation -nextp154 nextplus NaN77 -> NaN77 -nextp155 nextplus sNaN88 -> NaN88 Invalid_operation -nextp156 nextplus -NaN -> -NaN -nextp157 nextplus -sNaN -> -NaN Invalid_operation -nextp158 nextplus -NaN77 -> -NaN77 -nextp159 nextplus -sNaN88 -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -nextp170 nextplus 9.99999999E+999 -> Infinity -nextp171 nextplus 9.99999998E+999 -> 9.99999999E+999 -nextp172 nextplus 1E-999 -> 1.00000001E-999 -nextp173 nextplus 1.00000000E-999 -> 1.00000001E-999 -nextp174 nextplus 9E-1007 -> 1.0E-1006 -nextp175 nextplus 9.9E-1006 -> 1.00E-1005 -nextp176 nextplus 9.9999E-1003 -> 1.00000E-1002 -nextp177 nextplus 9.9999999E-1000 -> 1.00000000E-999 -nextp178 nextplus 9.9999998E-1000 -> 9.9999999E-1000 -nextp179 nextplus 9.9999997E-1000 -> 9.9999998E-1000 -nextp180 nextplus 0E-1007 -> 1E-1007 -nextp181 nextplus 1E-1007 -> 2E-1007 -nextp182 nextplus 2E-1007 -> 3E-1007 - -nextp183 nextplus -0E-1007 -> 1E-1007 -nextp184 nextplus -1E-1007 -> -0E-1007 -nextp185 nextplus -2E-1007 -> -1E-1007 -nextp186 nextplus -10E-1007 -> -9E-1007 -nextp187 nextplus -100E-1007 -> -9.9E-1006 -nextp188 nextplus -100000E-1007 -> -9.9999E-1003 -nextp189 nextplus -1.0000E-999 -> -9.9999999E-1000 -nextp190 nextplus -1.00000000E-999 -> -9.9999999E-1000 -nextp191 nextplus -1E-999 -> -9.9999999E-1000 -nextp192 nextplus -9.99999998E+999 -> -9.99999997E+999 -nextp193 nextplus -9.99999999E+999 -> -9.99999998E+999 - --- Null tests -nextp900 nextplus # -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- nextplus.decTest -- decimal next that is greater [754r nextup] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +nextp001 nextplus 0.999999995 -> 0.999999996 +nextp002 nextplus 0.999999996 -> 0.999999997 +nextp003 nextplus 0.999999997 -> 0.999999998 +nextp004 nextplus 0.999999998 -> 0.999999999 +nextp005 nextplus 0.999999999 -> 1.00000000 +nextp006 nextplus 1.00000000 -> 1.00000001 +nextp007 nextplus 1.0 -> 1.00000001 +nextp008 nextplus 1 -> 1.00000001 +nextp009 nextplus 1.00000001 -> 1.00000002 +nextp010 nextplus 1.00000002 -> 1.00000003 +nextp011 nextplus 1.00000003 -> 1.00000004 +nextp012 nextplus 1.00000004 -> 1.00000005 +nextp013 nextplus 1.00000005 -> 1.00000006 +nextp014 nextplus 1.00000006 -> 1.00000007 +nextp015 nextplus 1.00000007 -> 1.00000008 +nextp016 nextplus 1.00000008 -> 1.00000009 +nextp017 nextplus 1.00000009 -> 1.00000010 +nextp018 nextplus 1.00000010 -> 1.00000011 +nextp019 nextplus 1.00000011 -> 1.00000012 + +nextp021 nextplus -0.999999995 -> -0.999999994 +nextp022 nextplus -0.999999996 -> -0.999999995 +nextp023 nextplus -0.999999997 -> -0.999999996 +nextp024 nextplus -0.999999998 -> -0.999999997 +nextp025 nextplus -0.999999999 -> -0.999999998 +nextp026 nextplus -1.00000000 -> -0.999999999 +nextp027 nextplus -1.0 -> -0.999999999 +nextp028 nextplus -1 -> -0.999999999 +nextp029 nextplus -1.00000001 -> -1.00000000 +nextp030 nextplus -1.00000002 -> -1.00000001 +nextp031 nextplus -1.00000003 -> -1.00000002 +nextp032 nextplus -1.00000004 -> -1.00000003 +nextp033 nextplus -1.00000005 -> -1.00000004 +nextp034 nextplus -1.00000006 -> -1.00000005 +nextp035 nextplus -1.00000007 -> -1.00000006 +nextp036 nextplus -1.00000008 -> -1.00000007 +nextp037 nextplus -1.00000009 -> -1.00000008 +nextp038 nextplus -1.00000010 -> -1.00000009 +nextp039 nextplus -1.00000011 -> -1.00000010 +nextp040 nextplus -1.00000012 -> -1.00000011 + +-- input operand is >precision +nextp041 nextplus 1.00000010998 -> 1.00000011 +nextp042 nextplus 1.00000010999 -> 1.00000011 +nextp043 nextplus 1.00000011000 -> 1.00000012 +nextp044 nextplus 1.00000011001 -> 1.00000012 +nextp045 nextplus 1.00000011002 -> 1.00000012 +nextp046 nextplus 1.00000011002 -> 1.00000012 +nextp047 nextplus 1.00000011052 -> 1.00000012 +nextp048 nextplus 1.00000011552 -> 1.00000012 +nextp049 nextplus -1.00000010998 -> -1.00000010 +nextp050 nextplus -1.00000010999 -> -1.00000010 +nextp051 nextplus -1.00000011000 -> -1.00000010 +nextp052 nextplus -1.00000011001 -> -1.00000011 +nextp053 nextplus -1.00000011002 -> -1.00000011 +nextp054 nextplus -1.00000011002 -> -1.00000011 +nextp055 nextplus -1.00000011052 -> -1.00000011 +nextp056 nextplus -1.00000011552 -> -1.00000011 +-- ultra-tiny inputs +nextp060 nextplus 1E-99999 -> 1E-391 +nextp061 nextplus 1E-999999999 -> 1E-391 +nextp062 nextplus 1E-391 -> 2E-391 +nextp063 nextplus -1E-99999 -> -0E-391 +nextp064 nextplus -1E-999999999 -> -0E-391 +nextp065 nextplus -1E-391 -> -0E-391 + +-- Zeros +nextp100 nextplus 0 -> 1E-391 +nextp101 nextplus 0.00 -> 1E-391 +nextp102 nextplus 0E-300 -> 1E-391 +nextp103 nextplus 0E+300 -> 1E-391 +nextp104 nextplus 0E+30000 -> 1E-391 +nextp105 nextplus -0 -> 1E-391 +nextp106 nextplus -0.00 -> 1E-391 +nextp107 nextplus -0E-300 -> 1E-391 +nextp108 nextplus -0E+300 -> 1E-391 +nextp109 nextplus -0E+30000 -> 1E-391 + +maxExponent: 999 +minexponent: -999 +precision: 9 +-- specials +nextp150 nextplus Inf -> Infinity +nextp151 nextplus -Inf -> -9.99999999E+999 +nextp152 nextplus NaN -> NaN +nextp153 nextplus sNaN -> NaN Invalid_operation +nextp154 nextplus NaN77 -> NaN77 +nextp155 nextplus sNaN88 -> NaN88 Invalid_operation +nextp156 nextplus -NaN -> -NaN +nextp157 nextplus -sNaN -> -NaN Invalid_operation +nextp158 nextplus -NaN77 -> -NaN77 +nextp159 nextplus -sNaN88 -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +nextp170 nextplus 9.99999999E+999 -> Infinity +nextp171 nextplus 9.99999998E+999 -> 9.99999999E+999 +nextp172 nextplus 1E-999 -> 1.00000001E-999 +nextp173 nextplus 1.00000000E-999 -> 1.00000001E-999 +nextp174 nextplus 9E-1007 -> 1.0E-1006 +nextp175 nextplus 9.9E-1006 -> 1.00E-1005 +nextp176 nextplus 9.9999E-1003 -> 1.00000E-1002 +nextp177 nextplus 9.9999999E-1000 -> 1.00000000E-999 +nextp178 nextplus 9.9999998E-1000 -> 9.9999999E-1000 +nextp179 nextplus 9.9999997E-1000 -> 9.9999998E-1000 +nextp180 nextplus 0E-1007 -> 1E-1007 +nextp181 nextplus 1E-1007 -> 2E-1007 +nextp182 nextplus 2E-1007 -> 3E-1007 + +nextp183 nextplus -0E-1007 -> 1E-1007 +nextp184 nextplus -1E-1007 -> -0E-1007 +nextp185 nextplus -2E-1007 -> -1E-1007 +nextp186 nextplus -10E-1007 -> -9E-1007 +nextp187 nextplus -100E-1007 -> -9.9E-1006 +nextp188 nextplus -100000E-1007 -> -9.9999E-1003 +nextp189 nextplus -1.0000E-999 -> -9.9999999E-1000 +nextp190 nextplus -1.00000000E-999 -> -9.9999999E-1000 +nextp191 nextplus -1E-999 -> -9.9999999E-1000 +nextp192 nextplus -9.99999998E+999 -> -9.99999997E+999 +nextp193 nextplus -9.99999999E+999 -> -9.99999998E+999 + +-- Null tests +nextp900 nextplus # -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/nexttoward.decTest b/Lib/test/decimaltestdata/nexttoward.decTest index da26f65..562385a 100644 --- a/Lib/test/decimaltestdata/nexttoward.decTest +++ b/Lib/test/decimaltestdata/nexttoward.decTest @@ -1,426 +1,426 @@ ------------------------------------------------------------------------- --- nexttoward.decTest -- decimal next toward rhs [754r nextafter] -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 384 -minexponent: -383 - --- Sanity check with a scattering of numerics -nextt001 nexttoward 10 10 -> 10 -nextt002 nexttoward -10 -10 -> -10 -nextt003 nexttoward 1 10 -> 1.00000001 -nextt004 nexttoward 1 -10 -> 0.999999999 -nextt005 nexttoward -1 10 -> -0.999999999 -nextt006 nexttoward -1 -10 -> -1.00000001 -nextt007 nexttoward 0 10 -> 1E-391 Underflow Subnormal Inexact Rounded -nextt008 nexttoward 0 -10 -> -1E-391 Underflow Subnormal Inexact Rounded -nextt009 nexttoward 9.99999999E+384 +Infinity -> Infinity Overflow Inexact Rounded -nextt010 nexttoward -9.99999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded - -------- lhs=rhs --- finites -nextt101 nexttoward 7 7 -> 7 -nextt102 nexttoward -7 -7 -> -7 -nextt103 nexttoward 75 75 -> 75 -nextt104 nexttoward -75 -75 -> -75 -nextt105 nexttoward 7.50 7.5 -> 7.50 -nextt106 nexttoward -7.50 -7.50 -> -7.50 -nextt107 nexttoward 7.500 7.5000 -> 7.500 -nextt108 nexttoward -7.500 -7.5 -> -7.500 - --- zeros -nextt111 nexttoward 0 0 -> 0 -nextt112 nexttoward -0 -0 -> -0 -nextt113 nexttoward 0E+4 0 -> 0E+4 -nextt114 nexttoward -0E+4 -0 -> -0E+4 -nextt115 nexttoward 0.0000 0.00000 -> 0.0000 -nextt116 nexttoward -0.0000 -0.00 -> -0.0000 -nextt117 nexttoward 0E-141 0 -> 0E-141 -nextt118 nexttoward -0E-141 -000 -> -0E-141 - --- full coefficients, alternating bits -nextt121 nexttoward 268268268 268268268 -> 268268268 -nextt122 nexttoward -268268268 -268268268 -> -268268268 -nextt123 nexttoward 134134134 134134134 -> 134134134 -nextt124 nexttoward -134134134 -134134134 -> -134134134 - --- Nmax, Nmin, Ntiny -nextt131 nexttoward 9.99999999E+384 9.99999999E+384 -> 9.99999999E+384 -nextt132 nexttoward 1E-383 1E-383 -> 1E-383 -nextt133 nexttoward 1.00000000E-383 1.00000000E-383 -> 1.00000000E-383 -nextt134 nexttoward 1E-391 1E-391 -> 1E-391 - -nextt135 nexttoward -1E-391 -1E-391 -> -1E-391 -nextt136 nexttoward -1.00000000E-383 -1.00000000E-383 -> -1.00000000E-383 -nextt137 nexttoward -1E-383 -1E-383 -> -1E-383 -nextt138 nexttoward -9.99999999E+384 -9.99999999E+384 -> -9.99999999E+384 - -------- lhs 0.999999996 -nextt202 nexttoward 0.999999996 Infinity -> 0.999999997 -nextt203 nexttoward 0.999999997 Infinity -> 0.999999998 -nextt204 nexttoward 0.999999998 Infinity -> 0.999999999 -nextt205 nexttoward 0.999999999 Infinity -> 1.00000000 -nextt206 nexttoward 1.00000000 Infinity -> 1.00000001 -nextt207 nexttoward 1.0 Infinity -> 1.00000001 -nextt208 nexttoward 1 Infinity -> 1.00000001 -nextt209 nexttoward 1.00000001 Infinity -> 1.00000002 -nextt210 nexttoward 1.00000002 Infinity -> 1.00000003 -nextt211 nexttoward 1.00000003 Infinity -> 1.00000004 -nextt212 nexttoward 1.00000004 Infinity -> 1.00000005 -nextt213 nexttoward 1.00000005 Infinity -> 1.00000006 -nextt214 nexttoward 1.00000006 Infinity -> 1.00000007 -nextt215 nexttoward 1.00000007 Infinity -> 1.00000008 -nextt216 nexttoward 1.00000008 Infinity -> 1.00000009 -nextt217 nexttoward 1.00000009 Infinity -> 1.00000010 -nextt218 nexttoward 1.00000010 Infinity -> 1.00000011 -nextt219 nexttoward 1.00000011 Infinity -> 1.00000012 - -nextt221 nexttoward -0.999999995 Infinity -> -0.999999994 -nextt222 nexttoward -0.999999996 Infinity -> -0.999999995 -nextt223 nexttoward -0.999999997 Infinity -> -0.999999996 -nextt224 nexttoward -0.999999998 Infinity -> -0.999999997 -nextt225 nexttoward -0.999999999 Infinity -> -0.999999998 -nextt226 nexttoward -1.00000000 Infinity -> -0.999999999 -nextt227 nexttoward -1.0 Infinity -> -0.999999999 -nextt228 nexttoward -1 Infinity -> -0.999999999 -nextt229 nexttoward -1.00000001 Infinity -> -1.00000000 -nextt230 nexttoward -1.00000002 Infinity -> -1.00000001 -nextt231 nexttoward -1.00000003 Infinity -> -1.00000002 -nextt232 nexttoward -1.00000004 Infinity -> -1.00000003 -nextt233 nexttoward -1.00000005 Infinity -> -1.00000004 -nextt234 nexttoward -1.00000006 Infinity -> -1.00000005 -nextt235 nexttoward -1.00000007 Infinity -> -1.00000006 -nextt236 nexttoward -1.00000008 Infinity -> -1.00000007 -nextt237 nexttoward -1.00000009 Infinity -> -1.00000008 -nextt238 nexttoward -1.00000010 Infinity -> -1.00000009 -nextt239 nexttoward -1.00000011 Infinity -> -1.00000010 -nextt240 nexttoward -1.00000012 Infinity -> -1.00000011 - --- input operand is >precision -nextt241 nexttoward 1.00000010998 Infinity -> 1.00000011 -nextt242 nexttoward 1.00000010999 Infinity -> 1.00000011 -nextt243 nexttoward 1.00000011000 Infinity -> 1.00000012 -nextt244 nexttoward 1.00000011001 Infinity -> 1.00000012 -nextt245 nexttoward 1.00000011002 Infinity -> 1.00000012 -nextt246 nexttoward 1.00000011002 Infinity -> 1.00000012 -nextt247 nexttoward 1.00000011052 Infinity -> 1.00000012 -nextt248 nexttoward 1.00000011552 Infinity -> 1.00000012 -nextt249 nexttoward -1.00000010998 Infinity -> -1.00000010 -nextt250 nexttoward -1.00000010999 Infinity -> -1.00000010 -nextt251 nexttoward -1.00000011000 Infinity -> -1.00000010 -nextt252 nexttoward -1.00000011001 Infinity -> -1.00000011 -nextt253 nexttoward -1.00000011002 Infinity -> -1.00000011 -nextt254 nexttoward -1.00000011002 Infinity -> -1.00000011 -nextt255 nexttoward -1.00000011052 Infinity -> -1.00000011 -nextt256 nexttoward -1.00000011552 Infinity -> -1.00000011 --- ultra-tiny inputs -nextt260 nexttoward 1E-99999 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt261 nexttoward 1E-999999999 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt262 nexttoward 1E-391 Infinity -> 2E-391 Underflow Subnormal Inexact Rounded -nextt263 nexttoward -1E-99999 Infinity -> -0E-391 Underflow Subnormal Inexact Rounded Clamped -nextt264 nexttoward -1E-999999999 Infinity -> -0E-391 Underflow Subnormal Inexact Rounded Clamped -nextt265 nexttoward -1E-391 Infinity -> -0E-391 Underflow Subnormal Inexact Rounded Clamped - --- Zeros -nextt300 nexttoward 0 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt301 nexttoward 0.00 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt302 nexttoward 0E-300 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt303 nexttoward 0E+300 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt304 nexttoward 0E+30000 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt305 nexttoward -0 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt306 nexttoward -0.00 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt307 nexttoward -0E-300 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt308 nexttoward -0E+300 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded -nextt309 nexttoward -0E+30000 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded - --- specials -nextt350 nexttoward Inf Infinity -> Infinity -nextt351 nexttoward -Inf Infinity -> -9.99999999E+384 -nextt352 nexttoward NaN Infinity -> NaN -nextt353 nexttoward sNaN Infinity -> NaN Invalid_operation -nextt354 nexttoward NaN77 Infinity -> NaN77 -nextt355 nexttoward sNaN88 Infinity -> NaN88 Invalid_operation -nextt356 nexttoward -NaN Infinity -> -NaN -nextt357 nexttoward -sNaN Infinity -> -NaN Invalid_operation -nextt358 nexttoward -NaN77 Infinity -> -NaN77 -nextt359 nexttoward -sNaN88 Infinity -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -maxExponent: 999 -minexponent: -999 -nextt370 nexttoward 9.99999999E+999 Infinity -> Infinity Overflow Inexact Rounded -nextt371 nexttoward 9.99999998E+999 Infinity -> 9.99999999E+999 -nextt372 nexttoward 1E-999 Infinity -> 1.00000001E-999 -nextt373 nexttoward 1.00000000E-999 Infinity -> 1.00000001E-999 -nextt374 nexttoward 0.999999999E-999 Infinity -> 1.00000000E-999 -nextt375 nexttoward 0.99999999E-999 Infinity -> 1.00000000E-999 -nextt376 nexttoward 9E-1007 Infinity -> 1.0E-1006 Underflow Subnormal Inexact Rounded -nextt377 nexttoward 9.9E-1006 Infinity -> 1.00E-1005 Underflow Subnormal Inexact Rounded -nextt378 nexttoward 9.9999E-1003 Infinity -> 1.00000E-1002 Underflow Subnormal Inexact Rounded -nextt379 nexttoward 9.9999998E-1000 Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded -nextt380 nexttoward 9.9999997E-1000 Infinity -> 9.9999998E-1000 Underflow Subnormal Inexact Rounded -nextt381 nexttoward 0E-1007 Infinity -> 1E-1007 Underflow Subnormal Inexact Rounded -nextt382 nexttoward 1E-1007 Infinity -> 2E-1007 Underflow Subnormal Inexact Rounded -nextt383 nexttoward 2E-1007 Infinity -> 3E-1007 Underflow Subnormal Inexact Rounded - -nextt385 nexttoward -0E-1007 Infinity -> 1E-1007 Underflow Subnormal Inexact Rounded -nextt386 nexttoward -1E-1007 Infinity -> -0E-1007 Underflow Subnormal Inexact Rounded Clamped -nextt387 nexttoward -2E-1007 Infinity -> -1E-1007 Underflow Subnormal Inexact Rounded -nextt388 nexttoward -10E-1007 Infinity -> -9E-1007 Underflow Subnormal Inexact Rounded -nextt389 nexttoward -100E-1007 Infinity -> -9.9E-1006 Underflow Subnormal Inexact Rounded -nextt390 nexttoward -100000E-1007 Infinity -> -9.9999E-1003 Underflow Subnormal Inexact Rounded -nextt391 nexttoward -1.0000E-999 Infinity -> -9.9999999E-1000 Underflow Subnormal Inexact Rounded -nextt392 nexttoward -1.00000000E-999 Infinity -> -9.9999999E-1000 Underflow Subnormal Inexact Rounded -nextt393 nexttoward -1E-999 Infinity -> -9.9999999E-1000 Underflow Subnormal Inexact Rounded -nextt394 nexttoward -9.99999998E+999 Infinity -> -9.99999997E+999 -nextt395 nexttoward -9.99999999E+999 Infinity -> -9.99999998E+999 - -------- lhs>rhs -maxExponent: 384 -minexponent: -383 -nextt401 nexttoward 0.999999995 -Infinity -> 0.999999994 -nextt402 nexttoward 0.999999996 -Infinity -> 0.999999995 -nextt403 nexttoward 0.999999997 -Infinity -> 0.999999996 -nextt404 nexttoward 0.999999998 -Infinity -> 0.999999997 -nextt405 nexttoward 0.999999999 -Infinity -> 0.999999998 -nextt406 nexttoward 1.00000000 -Infinity -> 0.999999999 -nextt407 nexttoward 1.0 -Infinity -> 0.999999999 -nextt408 nexttoward 1 -Infinity -> 0.999999999 -nextt409 nexttoward 1.00000001 -Infinity -> 1.00000000 -nextt410 nexttoward 1.00000002 -Infinity -> 1.00000001 -nextt411 nexttoward 1.00000003 -Infinity -> 1.00000002 -nextt412 nexttoward 1.00000004 -Infinity -> 1.00000003 -nextt413 nexttoward 1.00000005 -Infinity -> 1.00000004 -nextt414 nexttoward 1.00000006 -Infinity -> 1.00000005 -nextt415 nexttoward 1.00000007 -Infinity -> 1.00000006 -nextt416 nexttoward 1.00000008 -Infinity -> 1.00000007 -nextt417 nexttoward 1.00000009 -Infinity -> 1.00000008 -nextt418 nexttoward 1.00000010 -Infinity -> 1.00000009 -nextt419 nexttoward 1.00000011 -Infinity -> 1.00000010 -nextt420 nexttoward 1.00000012 -Infinity -> 1.00000011 - -nextt421 nexttoward -0.999999995 -Infinity -> -0.999999996 -nextt422 nexttoward -0.999999996 -Infinity -> -0.999999997 -nextt423 nexttoward -0.999999997 -Infinity -> -0.999999998 -nextt424 nexttoward -0.999999998 -Infinity -> -0.999999999 -nextt425 nexttoward -0.999999999 -Infinity -> -1.00000000 -nextt426 nexttoward -1.00000000 -Infinity -> -1.00000001 -nextt427 nexttoward -1.0 -Infinity -> -1.00000001 -nextt428 nexttoward -1 -Infinity -> -1.00000001 -nextt429 nexttoward -1.00000001 -Infinity -> -1.00000002 -nextt430 nexttoward -1.00000002 -Infinity -> -1.00000003 -nextt431 nexttoward -1.00000003 -Infinity -> -1.00000004 -nextt432 nexttoward -1.00000004 -Infinity -> -1.00000005 -nextt433 nexttoward -1.00000005 -Infinity -> -1.00000006 -nextt434 nexttoward -1.00000006 -Infinity -> -1.00000007 -nextt435 nexttoward -1.00000007 -Infinity -> -1.00000008 -nextt436 nexttoward -1.00000008 -Infinity -> -1.00000009 -nextt437 nexttoward -1.00000009 -Infinity -> -1.00000010 -nextt438 nexttoward -1.00000010 -Infinity -> -1.00000011 -nextt439 nexttoward -1.00000011 -Infinity -> -1.00000012 - --- input operand is >precision -nextt441 nexttoward 1.00000010998 -Infinity -> 1.00000010 -nextt442 nexttoward 1.00000010999 -Infinity -> 1.00000010 -nextt443 nexttoward 1.00000011000 -Infinity -> 1.00000010 -nextt444 nexttoward 1.00000011001 -Infinity -> 1.00000011 -nextt445 nexttoward 1.00000011002 -Infinity -> 1.00000011 -nextt446 nexttoward 1.00000011002 -Infinity -> 1.00000011 -nextt447 nexttoward 1.00000011052 -Infinity -> 1.00000011 -nextt448 nexttoward 1.00000011552 -Infinity -> 1.00000011 -nextt449 nexttoward -1.00000010998 -Infinity -> -1.00000011 -nextt450 nexttoward -1.00000010999 -Infinity -> -1.00000011 -nextt451 nexttoward -1.00000011000 -Infinity -> -1.00000012 -nextt452 nexttoward -1.00000011001 -Infinity -> -1.00000012 -nextt453 nexttoward -1.00000011002 -Infinity -> -1.00000012 -nextt454 nexttoward -1.00000011002 -Infinity -> -1.00000012 -nextt455 nexttoward -1.00000011052 -Infinity -> -1.00000012 -nextt456 nexttoward -1.00000011552 -Infinity -> -1.00000012 --- ultra-tiny inputs -nextt460 nexttoward 1E-99999 -Infinity -> 0E-391 Underflow Subnormal Inexact Rounded Clamped -nextt461 nexttoward 1E-999999999 -Infinity -> 0E-391 Underflow Subnormal Inexact Rounded Clamped -nextt462 nexttoward 1E-391 -Infinity -> 0E-391 Underflow Subnormal Inexact Rounded Clamped -nextt463 nexttoward -1E-99999 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt464 nexttoward -1E-999999999 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt465 nexttoward -1E-391 -Infinity -> -2E-391 Underflow Subnormal Inexact Rounded - --- Zeros -nextt500 nexttoward -0 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt501 nexttoward 0 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt502 nexttoward 0.00 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt503 nexttoward -0.00 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt504 nexttoward 0E-300 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt505 nexttoward 0E+300 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt506 nexttoward 0E+30000 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt507 nexttoward -0E+30000 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded -nextt508 nexttoward 0.00 -0.0000 -> -0.00 - --- specials -nextt550 nexttoward Inf -Infinity -> 9.99999999E+384 -nextt551 nexttoward -Inf -Infinity -> -Infinity -nextt552 nexttoward NaN -Infinity -> NaN -nextt553 nexttoward sNaN -Infinity -> NaN Invalid_operation -nextt554 nexttoward NaN77 -Infinity -> NaN77 -nextt555 nexttoward sNaN88 -Infinity -> NaN88 Invalid_operation -nextt556 nexttoward -NaN -Infinity -> -NaN -nextt557 nexttoward -sNaN -Infinity -> -NaN Invalid_operation -nextt558 nexttoward -NaN77 -Infinity -> -NaN77 -nextt559 nexttoward -sNaN88 -Infinity -> -NaN88 Invalid_operation - --- Nmax, Nmin, Ntiny, subnormals -maxExponent: 999 -minexponent: -999 -nextt570 nexttoward 9.99999999E+999 -Infinity -> 9.99999998E+999 -nextt571 nexttoward 9.99999998E+999 -Infinity -> 9.99999997E+999 -nextt572 nexttoward 1E-999 -Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded -nextt573 nexttoward 1.00000000E-999 -Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded -nextt574 nexttoward 9E-1007 -Infinity -> 8E-1007 Underflow Subnormal Inexact Rounded -nextt575 nexttoward 9.9E-1006 -Infinity -> 9.8E-1006 Underflow Subnormal Inexact Rounded -nextt576 nexttoward 9.9999E-1003 -Infinity -> 9.9998E-1003 Underflow Subnormal Inexact Rounded -nextt577 nexttoward 9.9999999E-1000 -Infinity -> 9.9999998E-1000 Underflow Subnormal Inexact Rounded -nextt578 nexttoward 9.9999998E-1000 -Infinity -> 9.9999997E-1000 Underflow Subnormal Inexact Rounded -nextt579 nexttoward 9.9999997E-1000 -Infinity -> 9.9999996E-1000 Underflow Subnormal Inexact Rounded -nextt580 nexttoward 0E-1007 -Infinity -> -1E-1007 Underflow Subnormal Inexact Rounded -nextt581 nexttoward 1E-1007 -Infinity -> 0E-1007 Underflow Subnormal Inexact Rounded Clamped -nextt582 nexttoward 2E-1007 -Infinity -> 1E-1007 Underflow Subnormal Inexact Rounded - -nextt583 nexttoward -0E-1007 -Infinity -> -1E-1007 Underflow Subnormal Inexact Rounded -nextt584 nexttoward -1E-1007 -Infinity -> -2E-1007 Underflow Subnormal Inexact Rounded -nextt585 nexttoward -2E-1007 -Infinity -> -3E-1007 Underflow Subnormal Inexact Rounded -nextt586 nexttoward -10E-1007 -Infinity -> -1.1E-1006 Underflow Subnormal Inexact Rounded -nextt587 nexttoward -100E-1007 -Infinity -> -1.01E-1005 Underflow Subnormal Inexact Rounded -nextt588 nexttoward -100000E-1007 -Infinity -> -1.00001E-1002 Underflow Subnormal Inexact Rounded -nextt589 nexttoward -1.0000E-999 -Infinity -> -1.00000001E-999 -nextt590 nexttoward -1.00000000E-999 -Infinity -> -1.00000001E-999 -nextt591 nexttoward -1E-999 -Infinity -> -1.00000001E-999 -nextt592 nexttoward -9.99999998E+999 -Infinity -> -9.99999999E+999 -nextt593 nexttoward -9.99999999E+999 -Infinity -> -Infinity Overflow Inexact Rounded - - - - -------- Specials -maxExponent: 384 -minexponent: -383 -nextt780 nexttoward -Inf -Inf -> -Infinity -nextt781 nexttoward -Inf -1000 -> -9.99999999E+384 -nextt782 nexttoward -Inf -1 -> -9.99999999E+384 -nextt783 nexttoward -Inf -0 -> -9.99999999E+384 -nextt784 nexttoward -Inf 0 -> -9.99999999E+384 -nextt785 nexttoward -Inf 1 -> -9.99999999E+384 -nextt786 nexttoward -Inf 1000 -> -9.99999999E+384 -nextt787 nexttoward -1000 -Inf -> -1000.00001 -nextt788 nexttoward -Inf -Inf -> -Infinity -nextt789 nexttoward -1 -Inf -> -1.00000001 -nextt790 nexttoward -0 -Inf -> -1E-391 Underflow Subnormal Inexact Rounded -nextt791 nexttoward 0 -Inf -> -1E-391 Underflow Subnormal Inexact Rounded -nextt792 nexttoward 1 -Inf -> 0.999999999 -nextt793 nexttoward 1000 -Inf -> 999.999999 -nextt794 nexttoward Inf -Inf -> 9.99999999E+384 - -nextt800 nexttoward Inf -Inf -> 9.99999999E+384 -nextt801 nexttoward Inf -1000 -> 9.99999999E+384 -nextt802 nexttoward Inf -1 -> 9.99999999E+384 -nextt803 nexttoward Inf -0 -> 9.99999999E+384 -nextt804 nexttoward Inf 0 -> 9.99999999E+384 -nextt805 nexttoward Inf 1 -> 9.99999999E+384 -nextt806 nexttoward Inf 1000 -> 9.99999999E+384 -nextt807 nexttoward Inf Inf -> Infinity -nextt808 nexttoward -1000 Inf -> -999.999999 -nextt809 nexttoward -Inf Inf -> -9.99999999E+384 -nextt810 nexttoward -1 Inf -> -0.999999999 -nextt811 nexttoward -0 Inf -> 1E-391 Underflow Subnormal Inexact Rounded -nextt812 nexttoward 0 Inf -> 1E-391 Underflow Subnormal Inexact Rounded -nextt813 nexttoward 1 Inf -> 1.00000001 -nextt814 nexttoward 1000 Inf -> 1000.00001 -nextt815 nexttoward Inf Inf -> Infinity - -nextt821 nexttoward NaN -Inf -> NaN -nextt822 nexttoward NaN -1000 -> NaN -nextt823 nexttoward NaN -1 -> NaN -nextt824 nexttoward NaN -0 -> NaN -nextt825 nexttoward NaN 0 -> NaN -nextt826 nexttoward NaN 1 -> NaN -nextt827 nexttoward NaN 1000 -> NaN -nextt828 nexttoward NaN Inf -> NaN -nextt829 nexttoward NaN NaN -> NaN -nextt830 nexttoward -Inf NaN -> NaN -nextt831 nexttoward -1000 NaN -> NaN -nextt832 nexttoward -1 NaN -> NaN -nextt833 nexttoward -0 NaN -> NaN -nextt834 nexttoward 0 NaN -> NaN -nextt835 nexttoward 1 NaN -> NaN -nextt836 nexttoward 1000 NaN -> NaN -nextt837 nexttoward Inf NaN -> NaN - -nextt841 nexttoward sNaN -Inf -> NaN Invalid_operation -nextt842 nexttoward sNaN -1000 -> NaN Invalid_operation -nextt843 nexttoward sNaN -1 -> NaN Invalid_operation -nextt844 nexttoward sNaN -0 -> NaN Invalid_operation -nextt845 nexttoward sNaN 0 -> NaN Invalid_operation -nextt846 nexttoward sNaN 1 -> NaN Invalid_operation -nextt847 nexttoward sNaN 1000 -> NaN Invalid_operation -nextt848 nexttoward sNaN NaN -> NaN Invalid_operation -nextt849 nexttoward sNaN sNaN -> NaN Invalid_operation -nextt850 nexttoward NaN sNaN -> NaN Invalid_operation -nextt851 nexttoward -Inf sNaN -> NaN Invalid_operation -nextt852 nexttoward -1000 sNaN -> NaN Invalid_operation -nextt853 nexttoward -1 sNaN -> NaN Invalid_operation -nextt854 nexttoward -0 sNaN -> NaN Invalid_operation -nextt855 nexttoward 0 sNaN -> NaN Invalid_operation -nextt856 nexttoward 1 sNaN -> NaN Invalid_operation -nextt857 nexttoward 1000 sNaN -> NaN Invalid_operation -nextt858 nexttoward Inf sNaN -> NaN Invalid_operation -nextt859 nexttoward NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -nextt861 nexttoward NaN1 -Inf -> NaN1 -nextt862 nexttoward +NaN2 -1000 -> NaN2 -nextt863 nexttoward NaN3 1000 -> NaN3 -nextt864 nexttoward NaN4 Inf -> NaN4 -nextt865 nexttoward NaN5 +NaN6 -> NaN5 -nextt866 nexttoward -Inf NaN7 -> NaN7 -nextt867 nexttoward -1000 NaN8 -> NaN8 -nextt868 nexttoward 1000 NaN9 -> NaN9 -nextt869 nexttoward Inf +NaN10 -> NaN10 -nextt871 nexttoward sNaN11 -Inf -> NaN11 Invalid_operation -nextt872 nexttoward sNaN12 -1000 -> NaN12 Invalid_operation -nextt873 nexttoward sNaN13 1000 -> NaN13 Invalid_operation -nextt874 nexttoward sNaN14 NaN17 -> NaN14 Invalid_operation -nextt875 nexttoward sNaN15 sNaN18 -> NaN15 Invalid_operation -nextt876 nexttoward NaN16 sNaN19 -> NaN19 Invalid_operation -nextt877 nexttoward -Inf +sNaN20 -> NaN20 Invalid_operation -nextt878 nexttoward -1000 sNaN21 -> NaN21 Invalid_operation -nextt879 nexttoward 1000 sNaN22 -> NaN22 Invalid_operation -nextt880 nexttoward Inf sNaN23 -> NaN23 Invalid_operation -nextt881 nexttoward +NaN25 +sNaN24 -> NaN24 Invalid_operation -nextt882 nexttoward -NaN26 NaN28 -> -NaN26 -nextt883 nexttoward -sNaN27 sNaN29 -> -NaN27 Invalid_operation -nextt884 nexttoward 1000 -NaN30 -> -NaN30 -nextt885 nexttoward 1000 -sNaN31 -> -NaN31 Invalid_operation - --- Null tests -nextt900 nexttoward 1 # -> NaN Invalid_operation -nextt901 nexttoward # 1 -> NaN Invalid_operation - +------------------------------------------------------------------------ +-- nexttoward.decTest -- decimal next toward rhs [754r nextafter] -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +-- Sanity check with a scattering of numerics +nextt001 nexttoward 10 10 -> 10 +nextt002 nexttoward -10 -10 -> -10 +nextt003 nexttoward 1 10 -> 1.00000001 +nextt004 nexttoward 1 -10 -> 0.999999999 +nextt005 nexttoward -1 10 -> -0.999999999 +nextt006 nexttoward -1 -10 -> -1.00000001 +nextt007 nexttoward 0 10 -> 1E-391 Underflow Subnormal Inexact Rounded +nextt008 nexttoward 0 -10 -> -1E-391 Underflow Subnormal Inexact Rounded +nextt009 nexttoward 9.99999999E+384 +Infinity -> Infinity Overflow Inexact Rounded +nextt010 nexttoward -9.99999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded + +------- lhs=rhs +-- finites +nextt101 nexttoward 7 7 -> 7 +nextt102 nexttoward -7 -7 -> -7 +nextt103 nexttoward 75 75 -> 75 +nextt104 nexttoward -75 -75 -> -75 +nextt105 nexttoward 7.50 7.5 -> 7.50 +nextt106 nexttoward -7.50 -7.50 -> -7.50 +nextt107 nexttoward 7.500 7.5000 -> 7.500 +nextt108 nexttoward -7.500 -7.5 -> -7.500 + +-- zeros +nextt111 nexttoward 0 0 -> 0 +nextt112 nexttoward -0 -0 -> -0 +nextt113 nexttoward 0E+4 0 -> 0E+4 +nextt114 nexttoward -0E+4 -0 -> -0E+4 +nextt115 nexttoward 0.0000 0.00000 -> 0.0000 +nextt116 nexttoward -0.0000 -0.00 -> -0.0000 +nextt117 nexttoward 0E-141 0 -> 0E-141 +nextt118 nexttoward -0E-141 -000 -> -0E-141 + +-- full coefficients, alternating bits +nextt121 nexttoward 268268268 268268268 -> 268268268 +nextt122 nexttoward -268268268 -268268268 -> -268268268 +nextt123 nexttoward 134134134 134134134 -> 134134134 +nextt124 nexttoward -134134134 -134134134 -> -134134134 + +-- Nmax, Nmin, Ntiny +nextt131 nexttoward 9.99999999E+384 9.99999999E+384 -> 9.99999999E+384 +nextt132 nexttoward 1E-383 1E-383 -> 1E-383 +nextt133 nexttoward 1.00000000E-383 1.00000000E-383 -> 1.00000000E-383 +nextt134 nexttoward 1E-391 1E-391 -> 1E-391 + +nextt135 nexttoward -1E-391 -1E-391 -> -1E-391 +nextt136 nexttoward -1.00000000E-383 -1.00000000E-383 -> -1.00000000E-383 +nextt137 nexttoward -1E-383 -1E-383 -> -1E-383 +nextt138 nexttoward -9.99999999E+384 -9.99999999E+384 -> -9.99999999E+384 + +------- lhs 0.999999996 +nextt202 nexttoward 0.999999996 Infinity -> 0.999999997 +nextt203 nexttoward 0.999999997 Infinity -> 0.999999998 +nextt204 nexttoward 0.999999998 Infinity -> 0.999999999 +nextt205 nexttoward 0.999999999 Infinity -> 1.00000000 +nextt206 nexttoward 1.00000000 Infinity -> 1.00000001 +nextt207 nexttoward 1.0 Infinity -> 1.00000001 +nextt208 nexttoward 1 Infinity -> 1.00000001 +nextt209 nexttoward 1.00000001 Infinity -> 1.00000002 +nextt210 nexttoward 1.00000002 Infinity -> 1.00000003 +nextt211 nexttoward 1.00000003 Infinity -> 1.00000004 +nextt212 nexttoward 1.00000004 Infinity -> 1.00000005 +nextt213 nexttoward 1.00000005 Infinity -> 1.00000006 +nextt214 nexttoward 1.00000006 Infinity -> 1.00000007 +nextt215 nexttoward 1.00000007 Infinity -> 1.00000008 +nextt216 nexttoward 1.00000008 Infinity -> 1.00000009 +nextt217 nexttoward 1.00000009 Infinity -> 1.00000010 +nextt218 nexttoward 1.00000010 Infinity -> 1.00000011 +nextt219 nexttoward 1.00000011 Infinity -> 1.00000012 + +nextt221 nexttoward -0.999999995 Infinity -> -0.999999994 +nextt222 nexttoward -0.999999996 Infinity -> -0.999999995 +nextt223 nexttoward -0.999999997 Infinity -> -0.999999996 +nextt224 nexttoward -0.999999998 Infinity -> -0.999999997 +nextt225 nexttoward -0.999999999 Infinity -> -0.999999998 +nextt226 nexttoward -1.00000000 Infinity -> -0.999999999 +nextt227 nexttoward -1.0 Infinity -> -0.999999999 +nextt228 nexttoward -1 Infinity -> -0.999999999 +nextt229 nexttoward -1.00000001 Infinity -> -1.00000000 +nextt230 nexttoward -1.00000002 Infinity -> -1.00000001 +nextt231 nexttoward -1.00000003 Infinity -> -1.00000002 +nextt232 nexttoward -1.00000004 Infinity -> -1.00000003 +nextt233 nexttoward -1.00000005 Infinity -> -1.00000004 +nextt234 nexttoward -1.00000006 Infinity -> -1.00000005 +nextt235 nexttoward -1.00000007 Infinity -> -1.00000006 +nextt236 nexttoward -1.00000008 Infinity -> -1.00000007 +nextt237 nexttoward -1.00000009 Infinity -> -1.00000008 +nextt238 nexttoward -1.00000010 Infinity -> -1.00000009 +nextt239 nexttoward -1.00000011 Infinity -> -1.00000010 +nextt240 nexttoward -1.00000012 Infinity -> -1.00000011 + +-- input operand is >precision +nextt241 nexttoward 1.00000010998 Infinity -> 1.00000011 +nextt242 nexttoward 1.00000010999 Infinity -> 1.00000011 +nextt243 nexttoward 1.00000011000 Infinity -> 1.00000012 +nextt244 nexttoward 1.00000011001 Infinity -> 1.00000012 +nextt245 nexttoward 1.00000011002 Infinity -> 1.00000012 +nextt246 nexttoward 1.00000011002 Infinity -> 1.00000012 +nextt247 nexttoward 1.00000011052 Infinity -> 1.00000012 +nextt248 nexttoward 1.00000011552 Infinity -> 1.00000012 +nextt249 nexttoward -1.00000010998 Infinity -> -1.00000010 +nextt250 nexttoward -1.00000010999 Infinity -> -1.00000010 +nextt251 nexttoward -1.00000011000 Infinity -> -1.00000010 +nextt252 nexttoward -1.00000011001 Infinity -> -1.00000011 +nextt253 nexttoward -1.00000011002 Infinity -> -1.00000011 +nextt254 nexttoward -1.00000011002 Infinity -> -1.00000011 +nextt255 nexttoward -1.00000011052 Infinity -> -1.00000011 +nextt256 nexttoward -1.00000011552 Infinity -> -1.00000011 +-- ultra-tiny inputs +nextt260 nexttoward 1E-99999 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt261 nexttoward 1E-999999999 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt262 nexttoward 1E-391 Infinity -> 2E-391 Underflow Subnormal Inexact Rounded +nextt263 nexttoward -1E-99999 Infinity -> -0E-391 Underflow Subnormal Inexact Rounded Clamped +nextt264 nexttoward -1E-999999999 Infinity -> -0E-391 Underflow Subnormal Inexact Rounded Clamped +nextt265 nexttoward -1E-391 Infinity -> -0E-391 Underflow Subnormal Inexact Rounded Clamped + +-- Zeros +nextt300 nexttoward 0 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt301 nexttoward 0.00 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt302 nexttoward 0E-300 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt303 nexttoward 0E+300 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt304 nexttoward 0E+30000 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt305 nexttoward -0 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt306 nexttoward -0.00 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt307 nexttoward -0E-300 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt308 nexttoward -0E+300 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded +nextt309 nexttoward -0E+30000 Infinity -> 1E-391 Underflow Subnormal Inexact Rounded + +-- specials +nextt350 nexttoward Inf Infinity -> Infinity +nextt351 nexttoward -Inf Infinity -> -9.99999999E+384 +nextt352 nexttoward NaN Infinity -> NaN +nextt353 nexttoward sNaN Infinity -> NaN Invalid_operation +nextt354 nexttoward NaN77 Infinity -> NaN77 +nextt355 nexttoward sNaN88 Infinity -> NaN88 Invalid_operation +nextt356 nexttoward -NaN Infinity -> -NaN +nextt357 nexttoward -sNaN Infinity -> -NaN Invalid_operation +nextt358 nexttoward -NaN77 Infinity -> -NaN77 +nextt359 nexttoward -sNaN88 Infinity -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +maxExponent: 999 +minexponent: -999 +nextt370 nexttoward 9.99999999E+999 Infinity -> Infinity Overflow Inexact Rounded +nextt371 nexttoward 9.99999998E+999 Infinity -> 9.99999999E+999 +nextt372 nexttoward 1E-999 Infinity -> 1.00000001E-999 +nextt373 nexttoward 1.00000000E-999 Infinity -> 1.00000001E-999 +nextt374 nexttoward 0.999999999E-999 Infinity -> 1.00000000E-999 +nextt375 nexttoward 0.99999999E-999 Infinity -> 1.00000000E-999 +nextt376 nexttoward 9E-1007 Infinity -> 1.0E-1006 Underflow Subnormal Inexact Rounded +nextt377 nexttoward 9.9E-1006 Infinity -> 1.00E-1005 Underflow Subnormal Inexact Rounded +nextt378 nexttoward 9.9999E-1003 Infinity -> 1.00000E-1002 Underflow Subnormal Inexact Rounded +nextt379 nexttoward 9.9999998E-1000 Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded +nextt380 nexttoward 9.9999997E-1000 Infinity -> 9.9999998E-1000 Underflow Subnormal Inexact Rounded +nextt381 nexttoward 0E-1007 Infinity -> 1E-1007 Underflow Subnormal Inexact Rounded +nextt382 nexttoward 1E-1007 Infinity -> 2E-1007 Underflow Subnormal Inexact Rounded +nextt383 nexttoward 2E-1007 Infinity -> 3E-1007 Underflow Subnormal Inexact Rounded + +nextt385 nexttoward -0E-1007 Infinity -> 1E-1007 Underflow Subnormal Inexact Rounded +nextt386 nexttoward -1E-1007 Infinity -> -0E-1007 Underflow Subnormal Inexact Rounded Clamped +nextt387 nexttoward -2E-1007 Infinity -> -1E-1007 Underflow Subnormal Inexact Rounded +nextt388 nexttoward -10E-1007 Infinity -> -9E-1007 Underflow Subnormal Inexact Rounded +nextt389 nexttoward -100E-1007 Infinity -> -9.9E-1006 Underflow Subnormal Inexact Rounded +nextt390 nexttoward -100000E-1007 Infinity -> -9.9999E-1003 Underflow Subnormal Inexact Rounded +nextt391 nexttoward -1.0000E-999 Infinity -> -9.9999999E-1000 Underflow Subnormal Inexact Rounded +nextt392 nexttoward -1.00000000E-999 Infinity -> -9.9999999E-1000 Underflow Subnormal Inexact Rounded +nextt393 nexttoward -1E-999 Infinity -> -9.9999999E-1000 Underflow Subnormal Inexact Rounded +nextt394 nexttoward -9.99999998E+999 Infinity -> -9.99999997E+999 +nextt395 nexttoward -9.99999999E+999 Infinity -> -9.99999998E+999 + +------- lhs>rhs +maxExponent: 384 +minexponent: -383 +nextt401 nexttoward 0.999999995 -Infinity -> 0.999999994 +nextt402 nexttoward 0.999999996 -Infinity -> 0.999999995 +nextt403 nexttoward 0.999999997 -Infinity -> 0.999999996 +nextt404 nexttoward 0.999999998 -Infinity -> 0.999999997 +nextt405 nexttoward 0.999999999 -Infinity -> 0.999999998 +nextt406 nexttoward 1.00000000 -Infinity -> 0.999999999 +nextt407 nexttoward 1.0 -Infinity -> 0.999999999 +nextt408 nexttoward 1 -Infinity -> 0.999999999 +nextt409 nexttoward 1.00000001 -Infinity -> 1.00000000 +nextt410 nexttoward 1.00000002 -Infinity -> 1.00000001 +nextt411 nexttoward 1.00000003 -Infinity -> 1.00000002 +nextt412 nexttoward 1.00000004 -Infinity -> 1.00000003 +nextt413 nexttoward 1.00000005 -Infinity -> 1.00000004 +nextt414 nexttoward 1.00000006 -Infinity -> 1.00000005 +nextt415 nexttoward 1.00000007 -Infinity -> 1.00000006 +nextt416 nexttoward 1.00000008 -Infinity -> 1.00000007 +nextt417 nexttoward 1.00000009 -Infinity -> 1.00000008 +nextt418 nexttoward 1.00000010 -Infinity -> 1.00000009 +nextt419 nexttoward 1.00000011 -Infinity -> 1.00000010 +nextt420 nexttoward 1.00000012 -Infinity -> 1.00000011 + +nextt421 nexttoward -0.999999995 -Infinity -> -0.999999996 +nextt422 nexttoward -0.999999996 -Infinity -> -0.999999997 +nextt423 nexttoward -0.999999997 -Infinity -> -0.999999998 +nextt424 nexttoward -0.999999998 -Infinity -> -0.999999999 +nextt425 nexttoward -0.999999999 -Infinity -> -1.00000000 +nextt426 nexttoward -1.00000000 -Infinity -> -1.00000001 +nextt427 nexttoward -1.0 -Infinity -> -1.00000001 +nextt428 nexttoward -1 -Infinity -> -1.00000001 +nextt429 nexttoward -1.00000001 -Infinity -> -1.00000002 +nextt430 nexttoward -1.00000002 -Infinity -> -1.00000003 +nextt431 nexttoward -1.00000003 -Infinity -> -1.00000004 +nextt432 nexttoward -1.00000004 -Infinity -> -1.00000005 +nextt433 nexttoward -1.00000005 -Infinity -> -1.00000006 +nextt434 nexttoward -1.00000006 -Infinity -> -1.00000007 +nextt435 nexttoward -1.00000007 -Infinity -> -1.00000008 +nextt436 nexttoward -1.00000008 -Infinity -> -1.00000009 +nextt437 nexttoward -1.00000009 -Infinity -> -1.00000010 +nextt438 nexttoward -1.00000010 -Infinity -> -1.00000011 +nextt439 nexttoward -1.00000011 -Infinity -> -1.00000012 + +-- input operand is >precision +nextt441 nexttoward 1.00000010998 -Infinity -> 1.00000010 +nextt442 nexttoward 1.00000010999 -Infinity -> 1.00000010 +nextt443 nexttoward 1.00000011000 -Infinity -> 1.00000010 +nextt444 nexttoward 1.00000011001 -Infinity -> 1.00000011 +nextt445 nexttoward 1.00000011002 -Infinity -> 1.00000011 +nextt446 nexttoward 1.00000011002 -Infinity -> 1.00000011 +nextt447 nexttoward 1.00000011052 -Infinity -> 1.00000011 +nextt448 nexttoward 1.00000011552 -Infinity -> 1.00000011 +nextt449 nexttoward -1.00000010998 -Infinity -> -1.00000011 +nextt450 nexttoward -1.00000010999 -Infinity -> -1.00000011 +nextt451 nexttoward -1.00000011000 -Infinity -> -1.00000012 +nextt452 nexttoward -1.00000011001 -Infinity -> -1.00000012 +nextt453 nexttoward -1.00000011002 -Infinity -> -1.00000012 +nextt454 nexttoward -1.00000011002 -Infinity -> -1.00000012 +nextt455 nexttoward -1.00000011052 -Infinity -> -1.00000012 +nextt456 nexttoward -1.00000011552 -Infinity -> -1.00000012 +-- ultra-tiny inputs +nextt460 nexttoward 1E-99999 -Infinity -> 0E-391 Underflow Subnormal Inexact Rounded Clamped +nextt461 nexttoward 1E-999999999 -Infinity -> 0E-391 Underflow Subnormal Inexact Rounded Clamped +nextt462 nexttoward 1E-391 -Infinity -> 0E-391 Underflow Subnormal Inexact Rounded Clamped +nextt463 nexttoward -1E-99999 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt464 nexttoward -1E-999999999 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt465 nexttoward -1E-391 -Infinity -> -2E-391 Underflow Subnormal Inexact Rounded + +-- Zeros +nextt500 nexttoward -0 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt501 nexttoward 0 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt502 nexttoward 0.00 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt503 nexttoward -0.00 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt504 nexttoward 0E-300 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt505 nexttoward 0E+300 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt506 nexttoward 0E+30000 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt507 nexttoward -0E+30000 -Infinity -> -1E-391 Underflow Subnormal Inexact Rounded +nextt508 nexttoward 0.00 -0.0000 -> -0.00 + +-- specials +nextt550 nexttoward Inf -Infinity -> 9.99999999E+384 +nextt551 nexttoward -Inf -Infinity -> -Infinity +nextt552 nexttoward NaN -Infinity -> NaN +nextt553 nexttoward sNaN -Infinity -> NaN Invalid_operation +nextt554 nexttoward NaN77 -Infinity -> NaN77 +nextt555 nexttoward sNaN88 -Infinity -> NaN88 Invalid_operation +nextt556 nexttoward -NaN -Infinity -> -NaN +nextt557 nexttoward -sNaN -Infinity -> -NaN Invalid_operation +nextt558 nexttoward -NaN77 -Infinity -> -NaN77 +nextt559 nexttoward -sNaN88 -Infinity -> -NaN88 Invalid_operation + +-- Nmax, Nmin, Ntiny, subnormals +maxExponent: 999 +minexponent: -999 +nextt570 nexttoward 9.99999999E+999 -Infinity -> 9.99999998E+999 +nextt571 nexttoward 9.99999998E+999 -Infinity -> 9.99999997E+999 +nextt572 nexttoward 1E-999 -Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded +nextt573 nexttoward 1.00000000E-999 -Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded +nextt574 nexttoward 9E-1007 -Infinity -> 8E-1007 Underflow Subnormal Inexact Rounded +nextt575 nexttoward 9.9E-1006 -Infinity -> 9.8E-1006 Underflow Subnormal Inexact Rounded +nextt576 nexttoward 9.9999E-1003 -Infinity -> 9.9998E-1003 Underflow Subnormal Inexact Rounded +nextt577 nexttoward 9.9999999E-1000 -Infinity -> 9.9999998E-1000 Underflow Subnormal Inexact Rounded +nextt578 nexttoward 9.9999998E-1000 -Infinity -> 9.9999997E-1000 Underflow Subnormal Inexact Rounded +nextt579 nexttoward 9.9999997E-1000 -Infinity -> 9.9999996E-1000 Underflow Subnormal Inexact Rounded +nextt580 nexttoward 0E-1007 -Infinity -> -1E-1007 Underflow Subnormal Inexact Rounded +nextt581 nexttoward 1E-1007 -Infinity -> 0E-1007 Underflow Subnormal Inexact Rounded Clamped +nextt582 nexttoward 2E-1007 -Infinity -> 1E-1007 Underflow Subnormal Inexact Rounded + +nextt583 nexttoward -0E-1007 -Infinity -> -1E-1007 Underflow Subnormal Inexact Rounded +nextt584 nexttoward -1E-1007 -Infinity -> -2E-1007 Underflow Subnormal Inexact Rounded +nextt585 nexttoward -2E-1007 -Infinity -> -3E-1007 Underflow Subnormal Inexact Rounded +nextt586 nexttoward -10E-1007 -Infinity -> -1.1E-1006 Underflow Subnormal Inexact Rounded +nextt587 nexttoward -100E-1007 -Infinity -> -1.01E-1005 Underflow Subnormal Inexact Rounded +nextt588 nexttoward -100000E-1007 -Infinity -> -1.00001E-1002 Underflow Subnormal Inexact Rounded +nextt589 nexttoward -1.0000E-999 -Infinity -> -1.00000001E-999 +nextt590 nexttoward -1.00000000E-999 -Infinity -> -1.00000001E-999 +nextt591 nexttoward -1E-999 -Infinity -> -1.00000001E-999 +nextt592 nexttoward -9.99999998E+999 -Infinity -> -9.99999999E+999 +nextt593 nexttoward -9.99999999E+999 -Infinity -> -Infinity Overflow Inexact Rounded + + + + +------- Specials +maxExponent: 384 +minexponent: -383 +nextt780 nexttoward -Inf -Inf -> -Infinity +nextt781 nexttoward -Inf -1000 -> -9.99999999E+384 +nextt782 nexttoward -Inf -1 -> -9.99999999E+384 +nextt783 nexttoward -Inf -0 -> -9.99999999E+384 +nextt784 nexttoward -Inf 0 -> -9.99999999E+384 +nextt785 nexttoward -Inf 1 -> -9.99999999E+384 +nextt786 nexttoward -Inf 1000 -> -9.99999999E+384 +nextt787 nexttoward -1000 -Inf -> -1000.00001 +nextt788 nexttoward -Inf -Inf -> -Infinity +nextt789 nexttoward -1 -Inf -> -1.00000001 +nextt790 nexttoward -0 -Inf -> -1E-391 Underflow Subnormal Inexact Rounded +nextt791 nexttoward 0 -Inf -> -1E-391 Underflow Subnormal Inexact Rounded +nextt792 nexttoward 1 -Inf -> 0.999999999 +nextt793 nexttoward 1000 -Inf -> 999.999999 +nextt794 nexttoward Inf -Inf -> 9.99999999E+384 + +nextt800 nexttoward Inf -Inf -> 9.99999999E+384 +nextt801 nexttoward Inf -1000 -> 9.99999999E+384 +nextt802 nexttoward Inf -1 -> 9.99999999E+384 +nextt803 nexttoward Inf -0 -> 9.99999999E+384 +nextt804 nexttoward Inf 0 -> 9.99999999E+384 +nextt805 nexttoward Inf 1 -> 9.99999999E+384 +nextt806 nexttoward Inf 1000 -> 9.99999999E+384 +nextt807 nexttoward Inf Inf -> Infinity +nextt808 nexttoward -1000 Inf -> -999.999999 +nextt809 nexttoward -Inf Inf -> -9.99999999E+384 +nextt810 nexttoward -1 Inf -> -0.999999999 +nextt811 nexttoward -0 Inf -> 1E-391 Underflow Subnormal Inexact Rounded +nextt812 nexttoward 0 Inf -> 1E-391 Underflow Subnormal Inexact Rounded +nextt813 nexttoward 1 Inf -> 1.00000001 +nextt814 nexttoward 1000 Inf -> 1000.00001 +nextt815 nexttoward Inf Inf -> Infinity + +nextt821 nexttoward NaN -Inf -> NaN +nextt822 nexttoward NaN -1000 -> NaN +nextt823 nexttoward NaN -1 -> NaN +nextt824 nexttoward NaN -0 -> NaN +nextt825 nexttoward NaN 0 -> NaN +nextt826 nexttoward NaN 1 -> NaN +nextt827 nexttoward NaN 1000 -> NaN +nextt828 nexttoward NaN Inf -> NaN +nextt829 nexttoward NaN NaN -> NaN +nextt830 nexttoward -Inf NaN -> NaN +nextt831 nexttoward -1000 NaN -> NaN +nextt832 nexttoward -1 NaN -> NaN +nextt833 nexttoward -0 NaN -> NaN +nextt834 nexttoward 0 NaN -> NaN +nextt835 nexttoward 1 NaN -> NaN +nextt836 nexttoward 1000 NaN -> NaN +nextt837 nexttoward Inf NaN -> NaN + +nextt841 nexttoward sNaN -Inf -> NaN Invalid_operation +nextt842 nexttoward sNaN -1000 -> NaN Invalid_operation +nextt843 nexttoward sNaN -1 -> NaN Invalid_operation +nextt844 nexttoward sNaN -0 -> NaN Invalid_operation +nextt845 nexttoward sNaN 0 -> NaN Invalid_operation +nextt846 nexttoward sNaN 1 -> NaN Invalid_operation +nextt847 nexttoward sNaN 1000 -> NaN Invalid_operation +nextt848 nexttoward sNaN NaN -> NaN Invalid_operation +nextt849 nexttoward sNaN sNaN -> NaN Invalid_operation +nextt850 nexttoward NaN sNaN -> NaN Invalid_operation +nextt851 nexttoward -Inf sNaN -> NaN Invalid_operation +nextt852 nexttoward -1000 sNaN -> NaN Invalid_operation +nextt853 nexttoward -1 sNaN -> NaN Invalid_operation +nextt854 nexttoward -0 sNaN -> NaN Invalid_operation +nextt855 nexttoward 0 sNaN -> NaN Invalid_operation +nextt856 nexttoward 1 sNaN -> NaN Invalid_operation +nextt857 nexttoward 1000 sNaN -> NaN Invalid_operation +nextt858 nexttoward Inf sNaN -> NaN Invalid_operation +nextt859 nexttoward NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +nextt861 nexttoward NaN1 -Inf -> NaN1 +nextt862 nexttoward +NaN2 -1000 -> NaN2 +nextt863 nexttoward NaN3 1000 -> NaN3 +nextt864 nexttoward NaN4 Inf -> NaN4 +nextt865 nexttoward NaN5 +NaN6 -> NaN5 +nextt866 nexttoward -Inf NaN7 -> NaN7 +nextt867 nexttoward -1000 NaN8 -> NaN8 +nextt868 nexttoward 1000 NaN9 -> NaN9 +nextt869 nexttoward Inf +NaN10 -> NaN10 +nextt871 nexttoward sNaN11 -Inf -> NaN11 Invalid_operation +nextt872 nexttoward sNaN12 -1000 -> NaN12 Invalid_operation +nextt873 nexttoward sNaN13 1000 -> NaN13 Invalid_operation +nextt874 nexttoward sNaN14 NaN17 -> NaN14 Invalid_operation +nextt875 nexttoward sNaN15 sNaN18 -> NaN15 Invalid_operation +nextt876 nexttoward NaN16 sNaN19 -> NaN19 Invalid_operation +nextt877 nexttoward -Inf +sNaN20 -> NaN20 Invalid_operation +nextt878 nexttoward -1000 sNaN21 -> NaN21 Invalid_operation +nextt879 nexttoward 1000 sNaN22 -> NaN22 Invalid_operation +nextt880 nexttoward Inf sNaN23 -> NaN23 Invalid_operation +nextt881 nexttoward +NaN25 +sNaN24 -> NaN24 Invalid_operation +nextt882 nexttoward -NaN26 NaN28 -> -NaN26 +nextt883 nexttoward -sNaN27 sNaN29 -> -NaN27 Invalid_operation +nextt884 nexttoward 1000 -NaN30 -> -NaN30 +nextt885 nexttoward 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- Null tests +nextt900 nexttoward 1 # -> NaN Invalid_operation +nextt901 nexttoward # 1 -> NaN Invalid_operation + diff --git a/Lib/test/decimaltestdata/or.decTest b/Lib/test/decimaltestdata/or.decTest index f471d0b..1aebff4 100644 --- a/Lib/test/decimaltestdata/or.decTest +++ b/Lib/test/decimaltestdata/or.decTest @@ -1,334 +1,334 @@ ------------------------------------------------------------------------- --- or.decTest -- digitwise logical OR -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check (truth table) -orx001 or 0 0 -> 0 -orx002 or 0 1 -> 1 -orx003 or 1 0 -> 1 -orx004 or 1 1 -> 1 -orx005 or 1100 1010 -> 1110 --- and at msd and msd-1 -orx006 or 000000000 000000000 -> 0 -orx007 or 000000000 100000000 -> 100000000 -orx008 or 100000000 000000000 -> 100000000 -orx009 or 100000000 100000000 -> 100000000 -orx010 or 000000000 000000000 -> 0 -orx011 or 000000000 010000000 -> 10000000 -orx012 or 010000000 000000000 -> 10000000 -orx013 or 010000000 010000000 -> 10000000 - --- Various lengths --- 123456789 123456789 123456789 -orx021 or 111111111 111111111 -> 111111111 -orx022 or 111111111111 111111111 -> 111111111 -orx023 or 11111111 11111111 -> 11111111 -orx025 or 1111111 1111111 -> 1111111 -orx026 or 111111 111111 -> 111111 -orx027 or 11111 11111 -> 11111 -orx028 or 1111 1111 -> 1111 -orx029 or 111 111 -> 111 -orx031 or 11 11 -> 11 -orx032 or 1 1 -> 1 -orx033 or 111111111111 1111111111 -> 111111111 -orx034 or 11111111111 11111111111 -> 111111111 -orx035 or 1111111111 111111111111 -> 111111111 -orx036 or 111111111 1111111111111 -> 111111111 - -orx040 or 111111111 111111111111 -> 111111111 -orx041 or 11111111 111111111111 -> 111111111 -orx042 or 11111111 111111111 -> 111111111 -orx043 or 1111111 100000010 -> 101111111 -orx044 or 111111 100000100 -> 100111111 -orx045 or 11111 100001000 -> 100011111 -orx046 or 1111 100010000 -> 100011111 -orx047 or 111 100100000 -> 100100111 -orx048 or 11 101000000 -> 101000011 -orx049 or 1 110000000 -> 110000001 - -orx050 or 1111111111 1 -> 111111111 -orx051 or 111111111 1 -> 111111111 -orx052 or 11111111 1 -> 11111111 -orx053 or 1111111 1 -> 1111111 -orx054 or 111111 1 -> 111111 -orx055 or 11111 1 -> 11111 -orx056 or 1111 1 -> 1111 -orx057 or 111 1 -> 111 -orx058 or 11 1 -> 11 -orx059 or 1 1 -> 1 - -orx060 or 1111111111 0 -> 111111111 -orx061 or 111111111 0 -> 111111111 -orx062 or 11111111 0 -> 11111111 -orx063 or 1111111 0 -> 1111111 -orx064 or 111111 0 -> 111111 -orx065 or 11111 0 -> 11111 -orx066 or 1111 0 -> 1111 -orx067 or 111 0 -> 111 -orx068 or 11 0 -> 11 -orx069 or 1 0 -> 1 - -orx070 or 1 1111111111 -> 111111111 -orx071 or 1 111111111 -> 111111111 -orx072 or 1 11111111 -> 11111111 -orx073 or 1 1111111 -> 1111111 -orx074 or 1 111111 -> 111111 -orx075 or 1 11111 -> 11111 -orx076 or 1 1111 -> 1111 -orx077 or 1 111 -> 111 -orx078 or 1 11 -> 11 -orx079 or 1 1 -> 1 - -orx080 or 0 1111111111 -> 111111111 -orx081 or 0 111111111 -> 111111111 -orx082 or 0 11111111 -> 11111111 -orx083 or 0 1111111 -> 1111111 -orx084 or 0 111111 -> 111111 -orx085 or 0 11111 -> 11111 -orx086 or 0 1111 -> 1111 -orx087 or 0 111 -> 111 -orx088 or 0 11 -> 11 -orx089 or 0 1 -> 1 - -orx090 or 011111111 111101111 -> 111111111 -orx091 or 101111111 111101111 -> 111111111 -orx092 or 110111111 111101111 -> 111111111 -orx093 or 111011111 111101111 -> 111111111 -orx094 or 111101111 111101111 -> 111101111 -orx095 or 111110111 111101111 -> 111111111 -orx096 or 111111011 111101111 -> 111111111 -orx097 or 111111101 111101111 -> 111111111 -orx098 or 111111110 111101111 -> 111111111 - -orx100 or 111101111 011111111 -> 111111111 -orx101 or 111101111 101111111 -> 111111111 -orx102 or 111101111 110111111 -> 111111111 -orx103 or 111101111 111011111 -> 111111111 -orx104 or 111101111 111101111 -> 111101111 -orx105 or 111101111 111110111 -> 111111111 -orx106 or 111101111 111111011 -> 111111111 -orx107 or 111101111 111111101 -> 111111111 -orx108 or 111101111 111111110 -> 111111111 - --- non-0/1 should not be accepted, nor should signs -orx220 or 111111112 111111111 -> NaN Invalid_operation -orx221 or 333333333 333333333 -> NaN Invalid_operation -orx222 or 555555555 555555555 -> NaN Invalid_operation -orx223 or 777777777 777777777 -> NaN Invalid_operation -orx224 or 999999999 999999999 -> NaN Invalid_operation -orx225 or 222222222 999999999 -> NaN Invalid_operation -orx226 or 444444444 999999999 -> NaN Invalid_operation -orx227 or 666666666 999999999 -> NaN Invalid_operation -orx228 or 888888888 999999999 -> NaN Invalid_operation -orx229 or 999999999 222222222 -> NaN Invalid_operation -orx230 or 999999999 444444444 -> NaN Invalid_operation -orx231 or 999999999 666666666 -> NaN Invalid_operation -orx232 or 999999999 888888888 -> NaN Invalid_operation --- a few randoms -orx240 or 567468689 -934981942 -> NaN Invalid_operation -orx241 or 567367689 934981942 -> NaN Invalid_operation -orx242 or -631917772 -706014634 -> NaN Invalid_operation -orx243 or -756253257 138579234 -> NaN Invalid_operation -orx244 or 835590149 567435400 -> NaN Invalid_operation --- test MSD -orx250 or 200000000 100000000 -> NaN Invalid_operation -orx251 or 700000000 100000000 -> NaN Invalid_operation -orx252 or 800000000 100000000 -> NaN Invalid_operation -orx253 or 900000000 100000000 -> NaN Invalid_operation -orx254 or 200000000 000000000 -> NaN Invalid_operation -orx255 or 700000000 000000000 -> NaN Invalid_operation -orx256 or 800000000 000000000 -> NaN Invalid_operation -orx257 or 900000000 000000000 -> NaN Invalid_operation -orx258 or 100000000 200000000 -> NaN Invalid_operation -orx259 or 100000000 700000000 -> NaN Invalid_operation -orx260 or 100000000 800000000 -> NaN Invalid_operation -orx261 or 100000000 900000000 -> NaN Invalid_operation -orx262 or 000000000 200000000 -> NaN Invalid_operation -orx263 or 000000000 700000000 -> NaN Invalid_operation -orx264 or 000000000 800000000 -> NaN Invalid_operation -orx265 or 000000000 900000000 -> NaN Invalid_operation --- test MSD-1 -orx270 or 020000000 100000000 -> NaN Invalid_operation -orx271 or 070100000 100000000 -> NaN Invalid_operation -orx272 or 080010000 100000001 -> NaN Invalid_operation -orx273 or 090001000 100000010 -> NaN Invalid_operation -orx274 or 100000100 020010100 -> NaN Invalid_operation -orx275 or 100000000 070001000 -> NaN Invalid_operation -orx276 or 100000010 080010100 -> NaN Invalid_operation -orx277 or 100000000 090000010 -> NaN Invalid_operation --- test LSD -orx280 or 001000002 100000000 -> NaN Invalid_operation -orx281 or 000000007 100000000 -> NaN Invalid_operation -orx282 or 000000008 100000000 -> NaN Invalid_operation -orx283 or 000000009 100000000 -> NaN Invalid_operation -orx284 or 100000000 000100002 -> NaN Invalid_operation -orx285 or 100100000 001000007 -> NaN Invalid_operation -orx286 or 100010000 010000008 -> NaN Invalid_operation -orx287 or 100001000 100000009 -> NaN Invalid_operation --- test Middie -orx288 or 001020000 100000000 -> NaN Invalid_operation -orx289 or 000070001 100000000 -> NaN Invalid_operation -orx290 or 000080000 100010000 -> NaN Invalid_operation -orx291 or 000090000 100001000 -> NaN Invalid_operation -orx292 or 100000010 000020100 -> NaN Invalid_operation -orx293 or 100100000 000070010 -> NaN Invalid_operation -orx294 or 100010100 000080001 -> NaN Invalid_operation -orx295 or 100001000 000090000 -> NaN Invalid_operation --- signs -orx296 or -100001000 -000000000 -> NaN Invalid_operation -orx297 or -100001000 000010000 -> NaN Invalid_operation -orx298 or 100001000 -000000000 -> NaN Invalid_operation -orx299 or 100001000 000011000 -> 100011000 - --- Nmax, Nmin, Ntiny -orx331 or 2 9.99999999E+999 -> NaN Invalid_operation -orx332 or 3 1E-999 -> NaN Invalid_operation -orx333 or 4 1.00000000E-999 -> NaN Invalid_operation -orx334 or 5 1E-1007 -> NaN Invalid_operation -orx335 or 6 -1E-1007 -> NaN Invalid_operation -orx336 or 7 -1.00000000E-999 -> NaN Invalid_operation -orx337 or 8 -1E-999 -> NaN Invalid_operation -orx338 or 9 -9.99999999E+999 -> NaN Invalid_operation -orx341 or 9.99999999E+999 -18 -> NaN Invalid_operation -orx342 or 1E-999 01 -> NaN Invalid_operation -orx343 or 1.00000000E-999 -18 -> NaN Invalid_operation -orx344 or 1E-1007 18 -> NaN Invalid_operation -orx345 or -1E-1007 -10 -> NaN Invalid_operation -orx346 or -1.00000000E-999 18 -> NaN Invalid_operation -orx347 or -1E-999 10 -> NaN Invalid_operation -orx348 or -9.99999999E+999 -18 -> NaN Invalid_operation - --- A few other non-integers -orx361 or 1.0 1 -> NaN Invalid_operation -orx362 or 1E+1 1 -> NaN Invalid_operation -orx363 or 0.0 1 -> NaN Invalid_operation -orx364 or 0E+1 1 -> NaN Invalid_operation -orx365 or 9.9 1 -> NaN Invalid_operation -orx366 or 9E+1 1 -> NaN Invalid_operation -orx371 or 0 1.0 -> NaN Invalid_operation -orx372 or 0 1E+1 -> NaN Invalid_operation -orx373 or 0 0.0 -> NaN Invalid_operation -orx374 or 0 0E+1 -> NaN Invalid_operation -orx375 or 0 9.9 -> NaN Invalid_operation -orx376 or 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -orx780 or -Inf -Inf -> NaN Invalid_operation -orx781 or -Inf -1000 -> NaN Invalid_operation -orx782 or -Inf -1 -> NaN Invalid_operation -orx783 or -Inf -0 -> NaN Invalid_operation -orx784 or -Inf 0 -> NaN Invalid_operation -orx785 or -Inf 1 -> NaN Invalid_operation -orx786 or -Inf 1000 -> NaN Invalid_operation -orx787 or -1000 -Inf -> NaN Invalid_operation -orx788 or -Inf -Inf -> NaN Invalid_operation -orx789 or -1 -Inf -> NaN Invalid_operation -orx790 or -0 -Inf -> NaN Invalid_operation -orx791 or 0 -Inf -> NaN Invalid_operation -orx792 or 1 -Inf -> NaN Invalid_operation -orx793 or 1000 -Inf -> NaN Invalid_operation -orx794 or Inf -Inf -> NaN Invalid_operation - -orx800 or Inf -Inf -> NaN Invalid_operation -orx801 or Inf -1000 -> NaN Invalid_operation -orx802 or Inf -1 -> NaN Invalid_operation -orx803 or Inf -0 -> NaN Invalid_operation -orx804 or Inf 0 -> NaN Invalid_operation -orx805 or Inf 1 -> NaN Invalid_operation -orx806 or Inf 1000 -> NaN Invalid_operation -orx807 or Inf Inf -> NaN Invalid_operation -orx808 or -1000 Inf -> NaN Invalid_operation -orx809 or -Inf Inf -> NaN Invalid_operation -orx810 or -1 Inf -> NaN Invalid_operation -orx811 or -0 Inf -> NaN Invalid_operation -orx812 or 0 Inf -> NaN Invalid_operation -orx813 or 1 Inf -> NaN Invalid_operation -orx814 or 1000 Inf -> NaN Invalid_operation -orx815 or Inf Inf -> NaN Invalid_operation - -orx821 or NaN -Inf -> NaN Invalid_operation -orx822 or NaN -1000 -> NaN Invalid_operation -orx823 or NaN -1 -> NaN Invalid_operation -orx824 or NaN -0 -> NaN Invalid_operation -orx825 or NaN 0 -> NaN Invalid_operation -orx826 or NaN 1 -> NaN Invalid_operation -orx827 or NaN 1000 -> NaN Invalid_operation -orx828 or NaN Inf -> NaN Invalid_operation -orx829 or NaN NaN -> NaN Invalid_operation -orx830 or -Inf NaN -> NaN Invalid_operation -orx831 or -1000 NaN -> NaN Invalid_operation -orx832 or -1 NaN -> NaN Invalid_operation -orx833 or -0 NaN -> NaN Invalid_operation -orx834 or 0 NaN -> NaN Invalid_operation -orx835 or 1 NaN -> NaN Invalid_operation -orx836 or 1000 NaN -> NaN Invalid_operation -orx837 or Inf NaN -> NaN Invalid_operation - -orx841 or sNaN -Inf -> NaN Invalid_operation -orx842 or sNaN -1000 -> NaN Invalid_operation -orx843 or sNaN -1 -> NaN Invalid_operation -orx844 or sNaN -0 -> NaN Invalid_operation -orx845 or sNaN 0 -> NaN Invalid_operation -orx846 or sNaN 1 -> NaN Invalid_operation -orx847 or sNaN 1000 -> NaN Invalid_operation -orx848 or sNaN NaN -> NaN Invalid_operation -orx849 or sNaN sNaN -> NaN Invalid_operation -orx850 or NaN sNaN -> NaN Invalid_operation -orx851 or -Inf sNaN -> NaN Invalid_operation -orx852 or -1000 sNaN -> NaN Invalid_operation -orx853 or -1 sNaN -> NaN Invalid_operation -orx854 or -0 sNaN -> NaN Invalid_operation -orx855 or 0 sNaN -> NaN Invalid_operation -orx856 or 1 sNaN -> NaN Invalid_operation -orx857 or 1000 sNaN -> NaN Invalid_operation -orx858 or Inf sNaN -> NaN Invalid_operation -orx859 or NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -orx861 or NaN1 -Inf -> NaN Invalid_operation -orx862 or +NaN2 -1000 -> NaN Invalid_operation -orx863 or NaN3 1000 -> NaN Invalid_operation -orx864 or NaN4 Inf -> NaN Invalid_operation -orx865 or NaN5 +NaN6 -> NaN Invalid_operation -orx866 or -Inf NaN7 -> NaN Invalid_operation -orx867 or -1000 NaN8 -> NaN Invalid_operation -orx868 or 1000 NaN9 -> NaN Invalid_operation -orx869 or Inf +NaN10 -> NaN Invalid_operation -orx871 or sNaN11 -Inf -> NaN Invalid_operation -orx872 or sNaN12 -1000 -> NaN Invalid_operation -orx873 or sNaN13 1000 -> NaN Invalid_operation -orx874 or sNaN14 NaN17 -> NaN Invalid_operation -orx875 or sNaN15 sNaN18 -> NaN Invalid_operation -orx876 or NaN16 sNaN19 -> NaN Invalid_operation -orx877 or -Inf +sNaN20 -> NaN Invalid_operation -orx878 or -1000 sNaN21 -> NaN Invalid_operation -orx879 or 1000 sNaN22 -> NaN Invalid_operation -orx880 or Inf sNaN23 -> NaN Invalid_operation -orx881 or +NaN25 +sNaN24 -> NaN Invalid_operation -orx882 or -NaN26 NaN28 -> NaN Invalid_operation -orx883 or -sNaN27 sNaN29 -> NaN Invalid_operation -orx884 or 1000 -NaN30 -> NaN Invalid_operation -orx885 or 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- or.decTest -- digitwise logical OR -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check (truth table) +orx001 or 0 0 -> 0 +orx002 or 0 1 -> 1 +orx003 or 1 0 -> 1 +orx004 or 1 1 -> 1 +orx005 or 1100 1010 -> 1110 +-- and at msd and msd-1 +orx006 or 000000000 000000000 -> 0 +orx007 or 000000000 100000000 -> 100000000 +orx008 or 100000000 000000000 -> 100000000 +orx009 or 100000000 100000000 -> 100000000 +orx010 or 000000000 000000000 -> 0 +orx011 or 000000000 010000000 -> 10000000 +orx012 or 010000000 000000000 -> 10000000 +orx013 or 010000000 010000000 -> 10000000 + +-- Various lengths +-- 123456789 123456789 123456789 +orx021 or 111111111 111111111 -> 111111111 +orx022 or 111111111111 111111111 -> 111111111 +orx023 or 11111111 11111111 -> 11111111 +orx025 or 1111111 1111111 -> 1111111 +orx026 or 111111 111111 -> 111111 +orx027 or 11111 11111 -> 11111 +orx028 or 1111 1111 -> 1111 +orx029 or 111 111 -> 111 +orx031 or 11 11 -> 11 +orx032 or 1 1 -> 1 +orx033 or 111111111111 1111111111 -> 111111111 +orx034 or 11111111111 11111111111 -> 111111111 +orx035 or 1111111111 111111111111 -> 111111111 +orx036 or 111111111 1111111111111 -> 111111111 + +orx040 or 111111111 111111111111 -> 111111111 +orx041 or 11111111 111111111111 -> 111111111 +orx042 or 11111111 111111111 -> 111111111 +orx043 or 1111111 100000010 -> 101111111 +orx044 or 111111 100000100 -> 100111111 +orx045 or 11111 100001000 -> 100011111 +orx046 or 1111 100010000 -> 100011111 +orx047 or 111 100100000 -> 100100111 +orx048 or 11 101000000 -> 101000011 +orx049 or 1 110000000 -> 110000001 + +orx050 or 1111111111 1 -> 111111111 +orx051 or 111111111 1 -> 111111111 +orx052 or 11111111 1 -> 11111111 +orx053 or 1111111 1 -> 1111111 +orx054 or 111111 1 -> 111111 +orx055 or 11111 1 -> 11111 +orx056 or 1111 1 -> 1111 +orx057 or 111 1 -> 111 +orx058 or 11 1 -> 11 +orx059 or 1 1 -> 1 + +orx060 or 1111111111 0 -> 111111111 +orx061 or 111111111 0 -> 111111111 +orx062 or 11111111 0 -> 11111111 +orx063 or 1111111 0 -> 1111111 +orx064 or 111111 0 -> 111111 +orx065 or 11111 0 -> 11111 +orx066 or 1111 0 -> 1111 +orx067 or 111 0 -> 111 +orx068 or 11 0 -> 11 +orx069 or 1 0 -> 1 + +orx070 or 1 1111111111 -> 111111111 +orx071 or 1 111111111 -> 111111111 +orx072 or 1 11111111 -> 11111111 +orx073 or 1 1111111 -> 1111111 +orx074 or 1 111111 -> 111111 +orx075 or 1 11111 -> 11111 +orx076 or 1 1111 -> 1111 +orx077 or 1 111 -> 111 +orx078 or 1 11 -> 11 +orx079 or 1 1 -> 1 + +orx080 or 0 1111111111 -> 111111111 +orx081 or 0 111111111 -> 111111111 +orx082 or 0 11111111 -> 11111111 +orx083 or 0 1111111 -> 1111111 +orx084 or 0 111111 -> 111111 +orx085 or 0 11111 -> 11111 +orx086 or 0 1111 -> 1111 +orx087 or 0 111 -> 111 +orx088 or 0 11 -> 11 +orx089 or 0 1 -> 1 + +orx090 or 011111111 111101111 -> 111111111 +orx091 or 101111111 111101111 -> 111111111 +orx092 or 110111111 111101111 -> 111111111 +orx093 or 111011111 111101111 -> 111111111 +orx094 or 111101111 111101111 -> 111101111 +orx095 or 111110111 111101111 -> 111111111 +orx096 or 111111011 111101111 -> 111111111 +orx097 or 111111101 111101111 -> 111111111 +orx098 or 111111110 111101111 -> 111111111 + +orx100 or 111101111 011111111 -> 111111111 +orx101 or 111101111 101111111 -> 111111111 +orx102 or 111101111 110111111 -> 111111111 +orx103 or 111101111 111011111 -> 111111111 +orx104 or 111101111 111101111 -> 111101111 +orx105 or 111101111 111110111 -> 111111111 +orx106 or 111101111 111111011 -> 111111111 +orx107 or 111101111 111111101 -> 111111111 +orx108 or 111101111 111111110 -> 111111111 + +-- non-0/1 should not be accepted, nor should signs +orx220 or 111111112 111111111 -> NaN Invalid_operation +orx221 or 333333333 333333333 -> NaN Invalid_operation +orx222 or 555555555 555555555 -> NaN Invalid_operation +orx223 or 777777777 777777777 -> NaN Invalid_operation +orx224 or 999999999 999999999 -> NaN Invalid_operation +orx225 or 222222222 999999999 -> NaN Invalid_operation +orx226 or 444444444 999999999 -> NaN Invalid_operation +orx227 or 666666666 999999999 -> NaN Invalid_operation +orx228 or 888888888 999999999 -> NaN Invalid_operation +orx229 or 999999999 222222222 -> NaN Invalid_operation +orx230 or 999999999 444444444 -> NaN Invalid_operation +orx231 or 999999999 666666666 -> NaN Invalid_operation +orx232 or 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +orx240 or 567468689 -934981942 -> NaN Invalid_operation +orx241 or 567367689 934981942 -> NaN Invalid_operation +orx242 or -631917772 -706014634 -> NaN Invalid_operation +orx243 or -756253257 138579234 -> NaN Invalid_operation +orx244 or 835590149 567435400 -> NaN Invalid_operation +-- test MSD +orx250 or 200000000 100000000 -> NaN Invalid_operation +orx251 or 700000000 100000000 -> NaN Invalid_operation +orx252 or 800000000 100000000 -> NaN Invalid_operation +orx253 or 900000000 100000000 -> NaN Invalid_operation +orx254 or 200000000 000000000 -> NaN Invalid_operation +orx255 or 700000000 000000000 -> NaN Invalid_operation +orx256 or 800000000 000000000 -> NaN Invalid_operation +orx257 or 900000000 000000000 -> NaN Invalid_operation +orx258 or 100000000 200000000 -> NaN Invalid_operation +orx259 or 100000000 700000000 -> NaN Invalid_operation +orx260 or 100000000 800000000 -> NaN Invalid_operation +orx261 or 100000000 900000000 -> NaN Invalid_operation +orx262 or 000000000 200000000 -> NaN Invalid_operation +orx263 or 000000000 700000000 -> NaN Invalid_operation +orx264 or 000000000 800000000 -> NaN Invalid_operation +orx265 or 000000000 900000000 -> NaN Invalid_operation +-- test MSD-1 +orx270 or 020000000 100000000 -> NaN Invalid_operation +orx271 or 070100000 100000000 -> NaN Invalid_operation +orx272 or 080010000 100000001 -> NaN Invalid_operation +orx273 or 090001000 100000010 -> NaN Invalid_operation +orx274 or 100000100 020010100 -> NaN Invalid_operation +orx275 or 100000000 070001000 -> NaN Invalid_operation +orx276 or 100000010 080010100 -> NaN Invalid_operation +orx277 or 100000000 090000010 -> NaN Invalid_operation +-- test LSD +orx280 or 001000002 100000000 -> NaN Invalid_operation +orx281 or 000000007 100000000 -> NaN Invalid_operation +orx282 or 000000008 100000000 -> NaN Invalid_operation +orx283 or 000000009 100000000 -> NaN Invalid_operation +orx284 or 100000000 000100002 -> NaN Invalid_operation +orx285 or 100100000 001000007 -> NaN Invalid_operation +orx286 or 100010000 010000008 -> NaN Invalid_operation +orx287 or 100001000 100000009 -> NaN Invalid_operation +-- test Middie +orx288 or 001020000 100000000 -> NaN Invalid_operation +orx289 or 000070001 100000000 -> NaN Invalid_operation +orx290 or 000080000 100010000 -> NaN Invalid_operation +orx291 or 000090000 100001000 -> NaN Invalid_operation +orx292 or 100000010 000020100 -> NaN Invalid_operation +orx293 or 100100000 000070010 -> NaN Invalid_operation +orx294 or 100010100 000080001 -> NaN Invalid_operation +orx295 or 100001000 000090000 -> NaN Invalid_operation +-- signs +orx296 or -100001000 -000000000 -> NaN Invalid_operation +orx297 or -100001000 000010000 -> NaN Invalid_operation +orx298 or 100001000 -000000000 -> NaN Invalid_operation +orx299 or 100001000 000011000 -> 100011000 + +-- Nmax, Nmin, Ntiny +orx331 or 2 9.99999999E+999 -> NaN Invalid_operation +orx332 or 3 1E-999 -> NaN Invalid_operation +orx333 or 4 1.00000000E-999 -> NaN Invalid_operation +orx334 or 5 1E-1007 -> NaN Invalid_operation +orx335 or 6 -1E-1007 -> NaN Invalid_operation +orx336 or 7 -1.00000000E-999 -> NaN Invalid_operation +orx337 or 8 -1E-999 -> NaN Invalid_operation +orx338 or 9 -9.99999999E+999 -> NaN Invalid_operation +orx341 or 9.99999999E+999 -18 -> NaN Invalid_operation +orx342 or 1E-999 01 -> NaN Invalid_operation +orx343 or 1.00000000E-999 -18 -> NaN Invalid_operation +orx344 or 1E-1007 18 -> NaN Invalid_operation +orx345 or -1E-1007 -10 -> NaN Invalid_operation +orx346 or -1.00000000E-999 18 -> NaN Invalid_operation +orx347 or -1E-999 10 -> NaN Invalid_operation +orx348 or -9.99999999E+999 -18 -> NaN Invalid_operation + +-- A few other non-integers +orx361 or 1.0 1 -> NaN Invalid_operation +orx362 or 1E+1 1 -> NaN Invalid_operation +orx363 or 0.0 1 -> NaN Invalid_operation +orx364 or 0E+1 1 -> NaN Invalid_operation +orx365 or 9.9 1 -> NaN Invalid_operation +orx366 or 9E+1 1 -> NaN Invalid_operation +orx371 or 0 1.0 -> NaN Invalid_operation +orx372 or 0 1E+1 -> NaN Invalid_operation +orx373 or 0 0.0 -> NaN Invalid_operation +orx374 or 0 0E+1 -> NaN Invalid_operation +orx375 or 0 9.9 -> NaN Invalid_operation +orx376 or 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +orx780 or -Inf -Inf -> NaN Invalid_operation +orx781 or -Inf -1000 -> NaN Invalid_operation +orx782 or -Inf -1 -> NaN Invalid_operation +orx783 or -Inf -0 -> NaN Invalid_operation +orx784 or -Inf 0 -> NaN Invalid_operation +orx785 or -Inf 1 -> NaN Invalid_operation +orx786 or -Inf 1000 -> NaN Invalid_operation +orx787 or -1000 -Inf -> NaN Invalid_operation +orx788 or -Inf -Inf -> NaN Invalid_operation +orx789 or -1 -Inf -> NaN Invalid_operation +orx790 or -0 -Inf -> NaN Invalid_operation +orx791 or 0 -Inf -> NaN Invalid_operation +orx792 or 1 -Inf -> NaN Invalid_operation +orx793 or 1000 -Inf -> NaN Invalid_operation +orx794 or Inf -Inf -> NaN Invalid_operation + +orx800 or Inf -Inf -> NaN Invalid_operation +orx801 or Inf -1000 -> NaN Invalid_operation +orx802 or Inf -1 -> NaN Invalid_operation +orx803 or Inf -0 -> NaN Invalid_operation +orx804 or Inf 0 -> NaN Invalid_operation +orx805 or Inf 1 -> NaN Invalid_operation +orx806 or Inf 1000 -> NaN Invalid_operation +orx807 or Inf Inf -> NaN Invalid_operation +orx808 or -1000 Inf -> NaN Invalid_operation +orx809 or -Inf Inf -> NaN Invalid_operation +orx810 or -1 Inf -> NaN Invalid_operation +orx811 or -0 Inf -> NaN Invalid_operation +orx812 or 0 Inf -> NaN Invalid_operation +orx813 or 1 Inf -> NaN Invalid_operation +orx814 or 1000 Inf -> NaN Invalid_operation +orx815 or Inf Inf -> NaN Invalid_operation + +orx821 or NaN -Inf -> NaN Invalid_operation +orx822 or NaN -1000 -> NaN Invalid_operation +orx823 or NaN -1 -> NaN Invalid_operation +orx824 or NaN -0 -> NaN Invalid_operation +orx825 or NaN 0 -> NaN Invalid_operation +orx826 or NaN 1 -> NaN Invalid_operation +orx827 or NaN 1000 -> NaN Invalid_operation +orx828 or NaN Inf -> NaN Invalid_operation +orx829 or NaN NaN -> NaN Invalid_operation +orx830 or -Inf NaN -> NaN Invalid_operation +orx831 or -1000 NaN -> NaN Invalid_operation +orx832 or -1 NaN -> NaN Invalid_operation +orx833 or -0 NaN -> NaN Invalid_operation +orx834 or 0 NaN -> NaN Invalid_operation +orx835 or 1 NaN -> NaN Invalid_operation +orx836 or 1000 NaN -> NaN Invalid_operation +orx837 or Inf NaN -> NaN Invalid_operation + +orx841 or sNaN -Inf -> NaN Invalid_operation +orx842 or sNaN -1000 -> NaN Invalid_operation +orx843 or sNaN -1 -> NaN Invalid_operation +orx844 or sNaN -0 -> NaN Invalid_operation +orx845 or sNaN 0 -> NaN Invalid_operation +orx846 or sNaN 1 -> NaN Invalid_operation +orx847 or sNaN 1000 -> NaN Invalid_operation +orx848 or sNaN NaN -> NaN Invalid_operation +orx849 or sNaN sNaN -> NaN Invalid_operation +orx850 or NaN sNaN -> NaN Invalid_operation +orx851 or -Inf sNaN -> NaN Invalid_operation +orx852 or -1000 sNaN -> NaN Invalid_operation +orx853 or -1 sNaN -> NaN Invalid_operation +orx854 or -0 sNaN -> NaN Invalid_operation +orx855 or 0 sNaN -> NaN Invalid_operation +orx856 or 1 sNaN -> NaN Invalid_operation +orx857 or 1000 sNaN -> NaN Invalid_operation +orx858 or Inf sNaN -> NaN Invalid_operation +orx859 or NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +orx861 or NaN1 -Inf -> NaN Invalid_operation +orx862 or +NaN2 -1000 -> NaN Invalid_operation +orx863 or NaN3 1000 -> NaN Invalid_operation +orx864 or NaN4 Inf -> NaN Invalid_operation +orx865 or NaN5 +NaN6 -> NaN Invalid_operation +orx866 or -Inf NaN7 -> NaN Invalid_operation +orx867 or -1000 NaN8 -> NaN Invalid_operation +orx868 or 1000 NaN9 -> NaN Invalid_operation +orx869 or Inf +NaN10 -> NaN Invalid_operation +orx871 or sNaN11 -Inf -> NaN Invalid_operation +orx872 or sNaN12 -1000 -> NaN Invalid_operation +orx873 or sNaN13 1000 -> NaN Invalid_operation +orx874 or sNaN14 NaN17 -> NaN Invalid_operation +orx875 or sNaN15 sNaN18 -> NaN Invalid_operation +orx876 or NaN16 sNaN19 -> NaN Invalid_operation +orx877 or -Inf +sNaN20 -> NaN Invalid_operation +orx878 or -1000 sNaN21 -> NaN Invalid_operation +orx879 or 1000 sNaN22 -> NaN Invalid_operation +orx880 or Inf sNaN23 -> NaN Invalid_operation +orx881 or +NaN25 +sNaN24 -> NaN Invalid_operation +orx882 or -NaN26 NaN28 -> NaN Invalid_operation +orx883 or -sNaN27 sNaN29 -> NaN Invalid_operation +orx884 or 1000 -NaN30 -> NaN Invalid_operation +orx885 or 1000 -sNaN31 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/powersqrt.decTest b/Lib/test/decimaltestdata/powersqrt.decTest index 6c021a0..260b941 100644 --- a/Lib/test/decimaltestdata/powersqrt.decTest +++ b/Lib/test/decimaltestdata/powersqrt.decTest @@ -1,2970 +1,2970 @@ ------------------------------------------------------------------------- --- powersqrt.decTest -- decimal square root, using power -- --- Copyright (c) IBM Corporation, 2004, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- These testcases are taken from squareroot.decTest but are --- evaluated using the power operator. The differences in results --- (153 out of 2856) fall into the following categories: --- --- x ** 0.5 (x>0) has no preferred exponent, and is Inexact --- (and hence full precision); almost all differences are --- in this category --- 0.00 ** 0.5 becomes 0 (not 0.0), etc. --- -0 ** 0.5 becomes 0 (never -0) --- Some exact subnormals become inexact and hence underflows - -extended: 1 -precision: 9 -rounding: half_even -maxExponent: 384 -minexponent: -383 - --- basics -pwsx001 power 1 0.5 -> 1.00000000 Inexact Rounded -pwsx002 power -1 0.5 -> NaN Invalid_operation -pwsx003 power 1.00 0.5 -> 1.00000000 Inexact Rounded -pwsx004 power -1.00 0.5 -> NaN Invalid_operation -pwsx005 power 0 0.5 -> 0 -pwsx006 power 00.0 0.5 -> 0 -pwsx007 power 0.00 0.5 -> 0 -pwsx008 power 00.00 0.5 -> 0 -pwsx009 power 00.000 0.5 -> 0 -pwsx010 power 00.0000 0.5 -> 0 -pwsx011 power 00 0.5 -> 0 - -pwsx012 power -2 0.5 -> NaN Invalid_operation -pwsx013 power 2 0.5 -> 1.41421356 Inexact Rounded -pwsx014 power -2.00 0.5 -> NaN Invalid_operation -pwsx015 power 2.00 0.5 -> 1.41421356 Inexact Rounded -pwsx016 power -0 0.5 -> 0 -pwsx017 power -0.0 0.5 -> 0 -pwsx018 power -00.00 0.5 -> 0 -pwsx019 power -00.000 0.5 -> 0 -pwsx020 power -0.0000 0.5 -> 0 -pwsx021 power -0E+9 0.5 -> 0 -pwsx022 power -0E+10 0.5 -> 0 -pwsx023 power -0E+11 0.5 -> 0 -pwsx024 power -0E+12 0.5 -> 0 -pwsx025 power -00 0.5 -> 0 -pwsx026 power 0E+5 0.5 -> 0 -pwsx027 power 4.0 0.5 -> 2.00000000 Inexact Rounded -pwsx028 power 4.00 0.5 -> 2.00000000 Inexact Rounded - -pwsx030 power +0.1 0.5 -> 0.316227766 Inexact Rounded -pwsx031 power -0.1 0.5 -> NaN Invalid_operation -pwsx032 power +0.01 0.5 -> 0.100000000 Inexact Rounded -pwsx033 power -0.01 0.5 -> NaN Invalid_operation -pwsx034 power +0.001 0.5 -> 0.0316227766 Inexact Rounded -pwsx035 power -0.001 0.5 -> NaN Invalid_operation -pwsx036 power +0.000001 0.5 -> 0.00100000000 Inexact Rounded -pwsx037 power -0.000001 0.5 -> NaN Invalid_operation -pwsx038 power +0.000000000001 0.5 -> 0.00000100000000 Inexact Rounded -pwsx039 power -0.000000000001 0.5 -> NaN Invalid_operation - -pwsx041 power 1.1 0.5 -> 1.04880885 Inexact Rounded -pwsx042 power 1.10 0.5 -> 1.04880885 Inexact Rounded -pwsx043 power 1.100 0.5 -> 1.04880885 Inexact Rounded -pwsx044 power 1.110 0.5 -> 1.05356538 Inexact Rounded -pwsx045 power -1.1 0.5 -> NaN Invalid_operation -pwsx046 power -1.10 0.5 -> NaN Invalid_operation -pwsx047 power -1.100 0.5 -> NaN Invalid_operation -pwsx048 power -1.110 0.5 -> NaN Invalid_operation -pwsx049 power 9.9 0.5 -> 3.14642654 Inexact Rounded -pwsx050 power 9.90 0.5 -> 3.14642654 Inexact Rounded -pwsx051 power 9.900 0.5 -> 3.14642654 Inexact Rounded -pwsx052 power 9.990 0.5 -> 3.16069613 Inexact Rounded -pwsx053 power -9.9 0.5 -> NaN Invalid_operation -pwsx054 power -9.90 0.5 -> NaN Invalid_operation -pwsx055 power -9.900 0.5 -> NaN Invalid_operation -pwsx056 power -9.990 0.5 -> NaN Invalid_operation - -pwsx060 power 1 0.5 -> 1.00000000 Inexact Rounded -pwsx061 power 1.0 0.5 -> 1.00000000 Inexact Rounded -pwsx062 power 1.00 0.5 -> 1.00000000 Inexact Rounded -pwsx063 power 10.0 0.5 -> 3.16227766 Inexact Rounded -pwsx064 power 10.0 0.5 -> 3.16227766 Inexact Rounded -pwsx065 power 10.0 0.5 -> 3.16227766 Inexact Rounded -pwsx066 power 10.00 0.5 -> 3.16227766 Inexact Rounded -pwsx067 power 100 0.5 -> 10.0000000 Inexact Rounded -pwsx068 power 100.0 0.5 -> 10.0000000 Inexact Rounded -pwsx069 power 100.00 0.5 -> 10.0000000 Inexact Rounded -pwsx070 power 1.1000E+3 0.5 -> 33.1662479 Inexact Rounded -pwsx071 power 1.10000E+3 0.5 -> 33.1662479 Inexact Rounded -pwsx072 power -10.0 0.5 -> NaN Invalid_operation -pwsx073 power -10.00 0.5 -> NaN Invalid_operation -pwsx074 power -100.0 0.5 -> NaN Invalid_operation -pwsx075 power -100.00 0.5 -> NaN Invalid_operation -pwsx076 power -1.1000E+3 0.5 -> NaN Invalid_operation -pwsx077 power -1.10000E+3 0.5 -> NaN Invalid_operation - --- famous squares -pwsx080 power 1 0.5 -> 1.00000000 Inexact Rounded -pwsx081 power 4 0.5 -> 2.00000000 Inexact Rounded -pwsx082 power 9 0.5 -> 3.00000000 Inexact Rounded -pwsx083 power 16 0.5 -> 4.00000000 Inexact Rounded -pwsx084 power 25 0.5 -> 5.00000000 Inexact Rounded -pwsx085 power 36 0.5 -> 6.00000000 Inexact Rounded -pwsx086 power 49 0.5 -> 7.00000000 Inexact Rounded -pwsx087 power 64 0.5 -> 8.00000000 Inexact Rounded -pwsx088 power 81 0.5 -> 9.00000000 Inexact Rounded -pwsx089 power 100 0.5 -> 10.0000000 Inexact Rounded -pwsx090 power 121 0.5 -> 11.0000000 Inexact Rounded -pwsx091 power 144 0.5 -> 12.0000000 Inexact Rounded -pwsx092 power 169 0.5 -> 13.0000000 Inexact Rounded -pwsx093 power 256 0.5 -> 16.0000000 Inexact Rounded -pwsx094 power 1024 0.5 -> 32.0000000 Inexact Rounded -pwsx095 power 4096 0.5 -> 64.0000000 Inexact Rounded -pwsx100 power 0.01 0.5 -> 0.100000000 Inexact Rounded -pwsx101 power 0.04 0.5 -> 0.200000000 Inexact Rounded -pwsx102 power 0.09 0.5 -> 0.300000000 Inexact Rounded -pwsx103 power 0.16 0.5 -> 0.400000000 Inexact Rounded -pwsx104 power 0.25 0.5 -> 0.500000000 Inexact Rounded -pwsx105 power 0.36 0.5 -> 0.600000000 Inexact Rounded -pwsx106 power 0.49 0.5 -> 0.700000000 Inexact Rounded -pwsx107 power 0.64 0.5 -> 0.800000000 Inexact Rounded -pwsx108 power 0.81 0.5 -> 0.900000000 Inexact Rounded -pwsx109 power 1.00 0.5 -> 1.00000000 Inexact Rounded -pwsx110 power 1.21 0.5 -> 1.10000000 Inexact Rounded -pwsx111 power 1.44 0.5 -> 1.20000000 Inexact Rounded -pwsx112 power 1.69 0.5 -> 1.30000000 Inexact Rounded -pwsx113 power 2.56 0.5 -> 1.60000000 Inexact Rounded -pwsx114 power 10.24 0.5 -> 3.20000000 Inexact Rounded -pwsx115 power 40.96 0.5 -> 6.40000000 Inexact Rounded - --- Precision 1 squareroot tests [exhaustive, plus exponent adjusts] -rounding: half_even -maxExponent: 999 -minexponent: -999 -precision: 1 -pwsx1201 power 0.1 0.5 -> 0.3 Inexact Rounded -pwsx1202 power 0.01 0.5 -> 0.1 Inexact Rounded -pwsx1203 power 1.0E-1 0.5 -> 0.3 Inexact Rounded -pwsx1204 power 1.00E-2 0.5 -> 0.1 Inexact Rounded -pwsx1205 power 1E-3 0.5 -> 0.03 Inexact Rounded -pwsx1206 power 1E+1 0.5 -> 3 Inexact Rounded -pwsx1207 power 1E+2 0.5 -> 1E+1 Inexact Rounded -pwsx1208 power 1E+3 0.5 -> 3E+1 Inexact Rounded -pwsx1209 power 0.2 0.5 -> 0.4 Inexact Rounded -pwsx1210 power 0.02 0.5 -> 0.1 Inexact Rounded -pwsx1211 power 2.0E-1 0.5 -> 0.4 Inexact Rounded -pwsx1212 power 2.00E-2 0.5 -> 0.1 Inexact Rounded -pwsx1213 power 2E-3 0.5 -> 0.04 Inexact Rounded -pwsx1214 power 2E+1 0.5 -> 4 Inexact Rounded -pwsx1215 power 2E+2 0.5 -> 1E+1 Inexact Rounded -pwsx1216 power 2E+3 0.5 -> 4E+1 Inexact Rounded -pwsx1217 power 0.3 0.5 -> 0.5 Inexact Rounded -pwsx1218 power 0.03 0.5 -> 0.2 Inexact Rounded -pwsx1219 power 3.0E-1 0.5 -> 0.5 Inexact Rounded -pwsx1220 power 3.00E-2 0.5 -> 0.2 Inexact Rounded -pwsx1221 power 3E-3 0.5 -> 0.05 Inexact Rounded -pwsx1222 power 3E+1 0.5 -> 5 Inexact Rounded -pwsx1223 power 3E+2 0.5 -> 2E+1 Inexact Rounded -pwsx1224 power 3E+3 0.5 -> 5E+1 Inexact Rounded -pwsx1225 power 0.4 0.5 -> 0.6 Inexact Rounded -pwsx1226 power 0.04 0.5 -> 0.2 Inexact Rounded -pwsx1227 power 4.0E-1 0.5 -> 0.6 Inexact Rounded -pwsx1228 power 4.00E-2 0.5 -> 0.2 Inexact Rounded -pwsx1229 power 4E-3 0.5 -> 0.06 Inexact Rounded -pwsx1230 power 4E+1 0.5 -> 6 Inexact Rounded -pwsx1231 power 4E+2 0.5 -> 2E+1 Inexact Rounded -pwsx1232 power 4E+3 0.5 -> 6E+1 Inexact Rounded -pwsx1233 power 0.5 0.5 -> 0.7 Inexact Rounded -pwsx1234 power 0.05 0.5 -> 0.2 Inexact Rounded -pwsx1235 power 5.0E-1 0.5 -> 0.7 Inexact Rounded -pwsx1236 power 5.00E-2 0.5 -> 0.2 Inexact Rounded -pwsx1237 power 5E-3 0.5 -> 0.07 Inexact Rounded -pwsx1238 power 5E+1 0.5 -> 7 Inexact Rounded -pwsx1239 power 5E+2 0.5 -> 2E+1 Inexact Rounded -pwsx1240 power 5E+3 0.5 -> 7E+1 Inexact Rounded -pwsx1241 power 0.6 0.5 -> 0.8 Inexact Rounded -pwsx1242 power 0.06 0.5 -> 0.2 Inexact Rounded -pwsx1243 power 6.0E-1 0.5 -> 0.8 Inexact Rounded -pwsx1244 power 6.00E-2 0.5 -> 0.2 Inexact Rounded -pwsx1245 power 6E-3 0.5 -> 0.08 Inexact Rounded -pwsx1246 power 6E+1 0.5 -> 8 Inexact Rounded -pwsx1247 power 6E+2 0.5 -> 2E+1 Inexact Rounded -pwsx1248 power 6E+3 0.5 -> 8E+1 Inexact Rounded -pwsx1249 power 0.7 0.5 -> 0.8 Inexact Rounded -pwsx1250 power 0.07 0.5 -> 0.3 Inexact Rounded -pwsx1251 power 7.0E-1 0.5 -> 0.8 Inexact Rounded -pwsx1252 power 7.00E-2 0.5 -> 0.3 Inexact Rounded -pwsx1253 power 7E-3 0.5 -> 0.08 Inexact Rounded -pwsx1254 power 7E+1 0.5 -> 8 Inexact Rounded -pwsx1255 power 7E+2 0.5 -> 3E+1 Inexact Rounded -pwsx1256 power 7E+3 0.5 -> 8E+1 Inexact Rounded -pwsx1257 power 0.8 0.5 -> 0.9 Inexact Rounded -pwsx1258 power 0.08 0.5 -> 0.3 Inexact Rounded -pwsx1259 power 8.0E-1 0.5 -> 0.9 Inexact Rounded -pwsx1260 power 8.00E-2 0.5 -> 0.3 Inexact Rounded -pwsx1261 power 8E-3 0.5 -> 0.09 Inexact Rounded -pwsx1262 power 8E+1 0.5 -> 9 Inexact Rounded -pwsx1263 power 8E+2 0.5 -> 3E+1 Inexact Rounded -pwsx1264 power 8E+3 0.5 -> 9E+1 Inexact Rounded -pwsx1265 power 0.9 0.5 -> 0.9 Inexact Rounded -pwsx1266 power 0.09 0.5 -> 0.3 Inexact Rounded -pwsx1267 power 9.0E-1 0.5 -> 0.9 Inexact Rounded -pwsx1268 power 9.00E-2 0.5 -> 0.3 Inexact Rounded -pwsx1269 power 9E-3 0.5 -> 0.09 Inexact Rounded -pwsx1270 power 9E+1 0.5 -> 9 Inexact Rounded -pwsx1271 power 9E+2 0.5 -> 3E+1 Inexact Rounded -pwsx1272 power 9E+3 0.5 -> 9E+1 Inexact Rounded - --- Precision 2 squareroot tests [exhaustive, plus exponent adjusts] -rounding: half_even -maxExponent: 999 -minexponent: -999 -precision: 2 -pwsx2201 power 0.1 0.5 -> 0.32 Inexact Rounded -pwsx2202 power 0.01 0.5 -> 0.10 Inexact Rounded -pwsx2203 power 1.0E-1 0.5 -> 0.32 Inexact Rounded -pwsx2204 power 1.00E-2 0.5 -> 0.10 Inexact Rounded -pwsx2205 power 1E-3 0.5 -> 0.032 Inexact Rounded -pwsx2206 power 1E+1 0.5 -> 3.2 Inexact Rounded -pwsx2207 power 1E+2 0.5 -> 10 Inexact Rounded -pwsx2208 power 1E+3 0.5 -> 32 Inexact Rounded -pwsx2209 power 0.2 0.5 -> 0.45 Inexact Rounded -pwsx2210 power 0.02 0.5 -> 0.14 Inexact Rounded -pwsx2211 power 2.0E-1 0.5 -> 0.45 Inexact Rounded -pwsx2212 power 2.00E-2 0.5 -> 0.14 Inexact Rounded -pwsx2213 power 2E-3 0.5 -> 0.045 Inexact Rounded -pwsx2214 power 2E+1 0.5 -> 4.5 Inexact Rounded -pwsx2215 power 2E+2 0.5 -> 14 Inexact Rounded -pwsx2216 power 2E+3 0.5 -> 45 Inexact Rounded -pwsx2217 power 0.3 0.5 -> 0.55 Inexact Rounded -pwsx2218 power 0.03 0.5 -> 0.17 Inexact Rounded -pwsx2219 power 3.0E-1 0.5 -> 0.55 Inexact Rounded -pwsx2220 power 3.00E-2 0.5 -> 0.17 Inexact Rounded -pwsx2221 power 3E-3 0.5 -> 0.055 Inexact Rounded -pwsx2222 power 3E+1 0.5 -> 5.5 Inexact Rounded -pwsx2223 power 3E+2 0.5 -> 17 Inexact Rounded -pwsx2224 power 3E+3 0.5 -> 55 Inexact Rounded -pwsx2225 power 0.4 0.5 -> 0.63 Inexact Rounded -pwsx2226 power 0.04 0.5 -> 0.20 Inexact Rounded -pwsx2227 power 4.0E-1 0.5 -> 0.63 Inexact Rounded -pwsx2228 power 4.00E-2 0.5 -> 0.20 Inexact Rounded -pwsx2229 power 4E-3 0.5 -> 0.063 Inexact Rounded -pwsx2230 power 4E+1 0.5 -> 6.3 Inexact Rounded -pwsx2231 power 4E+2 0.5 -> 20 Inexact Rounded -pwsx2232 power 4E+3 0.5 -> 63 Inexact Rounded -pwsx2233 power 0.5 0.5 -> 0.71 Inexact Rounded -pwsx2234 power 0.05 0.5 -> 0.22 Inexact Rounded -pwsx2235 power 5.0E-1 0.5 -> 0.71 Inexact Rounded -pwsx2236 power 5.00E-2 0.5 -> 0.22 Inexact Rounded -pwsx2237 power 5E-3 0.5 -> 0.071 Inexact Rounded -pwsx2238 power 5E+1 0.5 -> 7.1 Inexact Rounded -pwsx2239 power 5E+2 0.5 -> 22 Inexact Rounded -pwsx2240 power 5E+3 0.5 -> 71 Inexact Rounded -pwsx2241 power 0.6 0.5 -> 0.77 Inexact Rounded -pwsx2242 power 0.06 0.5 -> 0.24 Inexact Rounded -pwsx2243 power 6.0E-1 0.5 -> 0.77 Inexact Rounded -pwsx2244 power 6.00E-2 0.5 -> 0.24 Inexact Rounded -pwsx2245 power 6E-3 0.5 -> 0.077 Inexact Rounded -pwsx2246 power 6E+1 0.5 -> 7.7 Inexact Rounded -pwsx2247 power 6E+2 0.5 -> 24 Inexact Rounded -pwsx2248 power 6E+3 0.5 -> 77 Inexact Rounded -pwsx2249 power 0.7 0.5 -> 0.84 Inexact Rounded -pwsx2250 power 0.07 0.5 -> 0.26 Inexact Rounded -pwsx2251 power 7.0E-1 0.5 -> 0.84 Inexact Rounded -pwsx2252 power 7.00E-2 0.5 -> 0.26 Inexact Rounded -pwsx2253 power 7E-3 0.5 -> 0.084 Inexact Rounded -pwsx2254 power 7E+1 0.5 -> 8.4 Inexact Rounded -pwsx2255 power 7E+2 0.5 -> 26 Inexact Rounded -pwsx2256 power 7E+3 0.5 -> 84 Inexact Rounded -pwsx2257 power 0.8 0.5 -> 0.89 Inexact Rounded -pwsx2258 power 0.08 0.5 -> 0.28 Inexact Rounded -pwsx2259 power 8.0E-1 0.5 -> 0.89 Inexact Rounded -pwsx2260 power 8.00E-2 0.5 -> 0.28 Inexact Rounded -pwsx2261 power 8E-3 0.5 -> 0.089 Inexact Rounded -pwsx2262 power 8E+1 0.5 -> 8.9 Inexact Rounded -pwsx2263 power 8E+2 0.5 -> 28 Inexact Rounded -pwsx2264 power 8E+3 0.5 -> 89 Inexact Rounded -pwsx2265 power 0.9 0.5 -> 0.95 Inexact Rounded -pwsx2266 power 0.09 0.5 -> 0.30 Inexact Rounded -pwsx2267 power 9.0E-1 0.5 -> 0.95 Inexact Rounded -pwsx2268 power 9.00E-2 0.5 -> 0.30 Inexact Rounded -pwsx2269 power 9E-3 0.5 -> 0.095 Inexact Rounded -pwsx2270 power 9E+1 0.5 -> 9.5 Inexact Rounded -pwsx2271 power 9E+2 0.5 -> 30 Inexact Rounded -pwsx2272 power 9E+3 0.5 -> 95 Inexact Rounded -pwsx2273 power 0.10 0.5 -> 0.32 Inexact Rounded -pwsx2274 power 0.010 0.5 -> 0.10 Inexact Rounded -pwsx2275 power 10.0E-1 0.5 -> 1.0 Inexact Rounded -pwsx2276 power 10.00E-2 0.5 -> 0.32 Inexact Rounded -pwsx2277 power 10E-3 0.5 -> 0.10 Inexact Rounded -pwsx2278 power 10E+1 0.5 -> 10 Inexact Rounded -pwsx2279 power 10E+2 0.5 -> 32 Inexact Rounded -pwsx2280 power 10E+3 0.5 -> 1.0E+2 Inexact Rounded -pwsx2281 power 0.11 0.5 -> 0.33 Inexact Rounded -pwsx2282 power 0.011 0.5 -> 0.10 Inexact Rounded -pwsx2283 power 11.0E-1 0.5 -> 1.0 Inexact Rounded -pwsx2284 power 11.00E-2 0.5 -> 0.33 Inexact Rounded -pwsx2285 power 11E-3 0.5 -> 0.10 Inexact Rounded -pwsx2286 power 11E+1 0.5 -> 10 Inexact Rounded -pwsx2287 power 11E+2 0.5 -> 33 Inexact Rounded -pwsx2288 power 11E+3 0.5 -> 1.0E+2 Inexact Rounded -pwsx2289 power 0.12 0.5 -> 0.35 Inexact Rounded -pwsx2290 power 0.012 0.5 -> 0.11 Inexact Rounded -pwsx2291 power 12.0E-1 0.5 -> 1.1 Inexact Rounded -pwsx2292 power 12.00E-2 0.5 -> 0.35 Inexact Rounded -pwsx2293 power 12E-3 0.5 -> 0.11 Inexact Rounded -pwsx2294 power 12E+1 0.5 -> 11 Inexact Rounded -pwsx2295 power 12E+2 0.5 -> 35 Inexact Rounded -pwsx2296 power 12E+3 0.5 -> 1.1E+2 Inexact Rounded -pwsx2297 power 0.13 0.5 -> 0.36 Inexact Rounded -pwsx2298 power 0.013 0.5 -> 0.11 Inexact Rounded -pwsx2299 power 13.0E-1 0.5 -> 1.1 Inexact Rounded -pwsx2300 power 13.00E-2 0.5 -> 0.36 Inexact Rounded -pwsx2301 power 13E-3 0.5 -> 0.11 Inexact Rounded -pwsx2302 power 13E+1 0.5 -> 11 Inexact Rounded -pwsx2303 power 13E+2 0.5 -> 36 Inexact Rounded -pwsx2304 power 13E+3 0.5 -> 1.1E+2 Inexact Rounded -pwsx2305 power 0.14 0.5 -> 0.37 Inexact Rounded -pwsx2306 power 0.014 0.5 -> 0.12 Inexact Rounded -pwsx2307 power 14.0E-1 0.5 -> 1.2 Inexact Rounded -pwsx2308 power 14.00E-2 0.5 -> 0.37 Inexact Rounded -pwsx2309 power 14E-3 0.5 -> 0.12 Inexact Rounded -pwsx2310 power 14E+1 0.5 -> 12 Inexact Rounded -pwsx2311 power 14E+2 0.5 -> 37 Inexact Rounded -pwsx2312 power 14E+3 0.5 -> 1.2E+2 Inexact Rounded -pwsx2313 power 0.15 0.5 -> 0.39 Inexact Rounded -pwsx2314 power 0.015 0.5 -> 0.12 Inexact Rounded -pwsx2315 power 15.0E-1 0.5 -> 1.2 Inexact Rounded -pwsx2316 power 15.00E-2 0.5 -> 0.39 Inexact Rounded -pwsx2317 power 15E-3 0.5 -> 0.12 Inexact Rounded -pwsx2318 power 15E+1 0.5 -> 12 Inexact Rounded -pwsx2319 power 15E+2 0.5 -> 39 Inexact Rounded -pwsx2320 power 15E+3 0.5 -> 1.2E+2 Inexact Rounded -pwsx2321 power 0.16 0.5 -> 0.40 Inexact Rounded -pwsx2322 power 0.016 0.5 -> 0.13 Inexact Rounded -pwsx2323 power 16.0E-1 0.5 -> 1.3 Inexact Rounded -pwsx2324 power 16.00E-2 0.5 -> 0.40 Inexact Rounded -pwsx2325 power 16E-3 0.5 -> 0.13 Inexact Rounded -pwsx2326 power 16E+1 0.5 -> 13 Inexact Rounded -pwsx2327 power 16E+2 0.5 -> 40 Inexact Rounded -pwsx2328 power 16E+3 0.5 -> 1.3E+2 Inexact Rounded -pwsx2329 power 0.17 0.5 -> 0.41 Inexact Rounded -pwsx2330 power 0.017 0.5 -> 0.13 Inexact Rounded -pwsx2331 power 17.0E-1 0.5 -> 1.3 Inexact Rounded -pwsx2332 power 17.00E-2 0.5 -> 0.41 Inexact Rounded -pwsx2333 power 17E-3 0.5 -> 0.13 Inexact Rounded -pwsx2334 power 17E+1 0.5 -> 13 Inexact Rounded -pwsx2335 power 17E+2 0.5 -> 41 Inexact Rounded -pwsx2336 power 17E+3 0.5 -> 1.3E+2 Inexact Rounded -pwsx2337 power 0.18 0.5 -> 0.42 Inexact Rounded -pwsx2338 power 0.018 0.5 -> 0.13 Inexact Rounded -pwsx2339 power 18.0E-1 0.5 -> 1.3 Inexact Rounded -pwsx2340 power 18.00E-2 0.5 -> 0.42 Inexact Rounded -pwsx2341 power 18E-3 0.5 -> 0.13 Inexact Rounded -pwsx2342 power 18E+1 0.5 -> 13 Inexact Rounded -pwsx2343 power 18E+2 0.5 -> 42 Inexact Rounded -pwsx2344 power 18E+3 0.5 -> 1.3E+2 Inexact Rounded -pwsx2345 power 0.19 0.5 -> 0.44 Inexact Rounded -pwsx2346 power 0.019 0.5 -> 0.14 Inexact Rounded -pwsx2347 power 19.0E-1 0.5 -> 1.4 Inexact Rounded -pwsx2348 power 19.00E-2 0.5 -> 0.44 Inexact Rounded -pwsx2349 power 19E-3 0.5 -> 0.14 Inexact Rounded -pwsx2350 power 19E+1 0.5 -> 14 Inexact Rounded -pwsx2351 power 19E+2 0.5 -> 44 Inexact Rounded -pwsx2352 power 19E+3 0.5 -> 1.4E+2 Inexact Rounded -pwsx2353 power 0.20 0.5 -> 0.45 Inexact Rounded -pwsx2354 power 0.020 0.5 -> 0.14 Inexact Rounded -pwsx2355 power 20.0E-1 0.5 -> 1.4 Inexact Rounded -pwsx2356 power 20.00E-2 0.5 -> 0.45 Inexact Rounded -pwsx2357 power 20E-3 0.5 -> 0.14 Inexact Rounded -pwsx2358 power 20E+1 0.5 -> 14 Inexact Rounded -pwsx2359 power 20E+2 0.5 -> 45 Inexact Rounded -pwsx2360 power 20E+3 0.5 -> 1.4E+2 Inexact Rounded -pwsx2361 power 0.21 0.5 -> 0.46 Inexact Rounded -pwsx2362 power 0.021 0.5 -> 0.14 Inexact Rounded -pwsx2363 power 21.0E-1 0.5 -> 1.4 Inexact Rounded -pwsx2364 power 21.00E-2 0.5 -> 0.46 Inexact Rounded -pwsx2365 power 21E-3 0.5 -> 0.14 Inexact Rounded -pwsx2366 power 21E+1 0.5 -> 14 Inexact Rounded -pwsx2367 power 21E+2 0.5 -> 46 Inexact Rounded -pwsx2368 power 21E+3 0.5 -> 1.4E+2 Inexact Rounded -pwsx2369 power 0.22 0.5 -> 0.47 Inexact Rounded -pwsx2370 power 0.022 0.5 -> 0.15 Inexact Rounded -pwsx2371 power 22.0E-1 0.5 -> 1.5 Inexact Rounded -pwsx2372 power 22.00E-2 0.5 -> 0.47 Inexact Rounded -pwsx2373 power 22E-3 0.5 -> 0.15 Inexact Rounded -pwsx2374 power 22E+1 0.5 -> 15 Inexact Rounded -pwsx2375 power 22E+2 0.5 -> 47 Inexact Rounded -pwsx2376 power 22E+3 0.5 -> 1.5E+2 Inexact Rounded -pwsx2377 power 0.23 0.5 -> 0.48 Inexact Rounded -pwsx2378 power 0.023 0.5 -> 0.15 Inexact Rounded -pwsx2379 power 23.0E-1 0.5 -> 1.5 Inexact Rounded -pwsx2380 power 23.00E-2 0.5 -> 0.48 Inexact Rounded -pwsx2381 power 23E-3 0.5 -> 0.15 Inexact Rounded -pwsx2382 power 23E+1 0.5 -> 15 Inexact Rounded -pwsx2383 power 23E+2 0.5 -> 48 Inexact Rounded -pwsx2384 power 23E+3 0.5 -> 1.5E+2 Inexact Rounded -pwsx2385 power 0.24 0.5 -> 0.49 Inexact Rounded -pwsx2386 power 0.024 0.5 -> 0.15 Inexact Rounded -pwsx2387 power 24.0E-1 0.5 -> 1.5 Inexact Rounded -pwsx2388 power 24.00E-2 0.5 -> 0.49 Inexact Rounded -pwsx2389 power 24E-3 0.5 -> 0.15 Inexact Rounded -pwsx2390 power 24E+1 0.5 -> 15 Inexact Rounded -pwsx2391 power 24E+2 0.5 -> 49 Inexact Rounded -pwsx2392 power 24E+3 0.5 -> 1.5E+2 Inexact Rounded -pwsx2393 power 0.25 0.5 -> 0.50 Inexact Rounded -pwsx2394 power 0.025 0.5 -> 0.16 Inexact Rounded -pwsx2395 power 25.0E-1 0.5 -> 1.6 Inexact Rounded -pwsx2396 power 25.00E-2 0.5 -> 0.50 Inexact Rounded -pwsx2397 power 25E-3 0.5 -> 0.16 Inexact Rounded -pwsx2398 power 25E+1 0.5 -> 16 Inexact Rounded -pwsx2399 power 25E+2 0.5 -> 50 Inexact Rounded -pwsx2400 power 25E+3 0.5 -> 1.6E+2 Inexact Rounded -pwsx2401 power 0.26 0.5 -> 0.51 Inexact Rounded -pwsx2402 power 0.026 0.5 -> 0.16 Inexact Rounded -pwsx2403 power 26.0E-1 0.5 -> 1.6 Inexact Rounded -pwsx2404 power 26.00E-2 0.5 -> 0.51 Inexact Rounded -pwsx2405 power 26E-3 0.5 -> 0.16 Inexact Rounded -pwsx2406 power 26E+1 0.5 -> 16 Inexact Rounded -pwsx2407 power 26E+2 0.5 -> 51 Inexact Rounded -pwsx2408 power 26E+3 0.5 -> 1.6E+2 Inexact Rounded -pwsx2409 power 0.27 0.5 -> 0.52 Inexact Rounded -pwsx2410 power 0.027 0.5 -> 0.16 Inexact Rounded -pwsx2411 power 27.0E-1 0.5 -> 1.6 Inexact Rounded -pwsx2412 power 27.00E-2 0.5 -> 0.52 Inexact Rounded -pwsx2413 power 27E-3 0.5 -> 0.16 Inexact Rounded -pwsx2414 power 27E+1 0.5 -> 16 Inexact Rounded -pwsx2415 power 27E+2 0.5 -> 52 Inexact Rounded -pwsx2416 power 27E+3 0.5 -> 1.6E+2 Inexact Rounded -pwsx2417 power 0.28 0.5 -> 0.53 Inexact Rounded -pwsx2418 power 0.028 0.5 -> 0.17 Inexact Rounded -pwsx2419 power 28.0E-1 0.5 -> 1.7 Inexact Rounded -pwsx2420 power 28.00E-2 0.5 -> 0.53 Inexact Rounded -pwsx2421 power 28E-3 0.5 -> 0.17 Inexact Rounded -pwsx2422 power 28E+1 0.5 -> 17 Inexact Rounded -pwsx2423 power 28E+2 0.5 -> 53 Inexact Rounded -pwsx2424 power 28E+3 0.5 -> 1.7E+2 Inexact Rounded -pwsx2425 power 0.29 0.5 -> 0.54 Inexact Rounded -pwsx2426 power 0.029 0.5 -> 0.17 Inexact Rounded -pwsx2427 power 29.0E-1 0.5 -> 1.7 Inexact Rounded -pwsx2428 power 29.00E-2 0.5 -> 0.54 Inexact Rounded -pwsx2429 power 29E-3 0.5 -> 0.17 Inexact Rounded -pwsx2430 power 29E+1 0.5 -> 17 Inexact Rounded -pwsx2431 power 29E+2 0.5 -> 54 Inexact Rounded -pwsx2432 power 29E+3 0.5 -> 1.7E+2 Inexact Rounded -pwsx2433 power 0.30 0.5 -> 0.55 Inexact Rounded -pwsx2434 power 0.030 0.5 -> 0.17 Inexact Rounded -pwsx2435 power 30.0E-1 0.5 -> 1.7 Inexact Rounded -pwsx2436 power 30.00E-2 0.5 -> 0.55 Inexact Rounded -pwsx2437 power 30E-3 0.5 -> 0.17 Inexact Rounded -pwsx2438 power 30E+1 0.5 -> 17 Inexact Rounded -pwsx2439 power 30E+2 0.5 -> 55 Inexact Rounded -pwsx2440 power 30E+3 0.5 -> 1.7E+2 Inexact Rounded -pwsx2441 power 0.31 0.5 -> 0.56 Inexact Rounded -pwsx2442 power 0.031 0.5 -> 0.18 Inexact Rounded -pwsx2443 power 31.0E-1 0.5 -> 1.8 Inexact Rounded -pwsx2444 power 31.00E-2 0.5 -> 0.56 Inexact Rounded -pwsx2445 power 31E-3 0.5 -> 0.18 Inexact Rounded -pwsx2446 power 31E+1 0.5 -> 18 Inexact Rounded -pwsx2447 power 31E+2 0.5 -> 56 Inexact Rounded -pwsx2448 power 31E+3 0.5 -> 1.8E+2 Inexact Rounded -pwsx2449 power 0.32 0.5 -> 0.57 Inexact Rounded -pwsx2450 power 0.032 0.5 -> 0.18 Inexact Rounded -pwsx2451 power 32.0E-1 0.5 -> 1.8 Inexact Rounded -pwsx2452 power 32.00E-2 0.5 -> 0.57 Inexact Rounded -pwsx2453 power 32E-3 0.5 -> 0.18 Inexact Rounded -pwsx2454 power 32E+1 0.5 -> 18 Inexact Rounded -pwsx2455 power 32E+2 0.5 -> 57 Inexact Rounded -pwsx2456 power 32E+3 0.5 -> 1.8E+2 Inexact Rounded -pwsx2457 power 0.33 0.5 -> 0.57 Inexact Rounded -pwsx2458 power 0.033 0.5 -> 0.18 Inexact Rounded -pwsx2459 power 33.0E-1 0.5 -> 1.8 Inexact Rounded -pwsx2460 power 33.00E-2 0.5 -> 0.57 Inexact Rounded -pwsx2461 power 33E-3 0.5 -> 0.18 Inexact Rounded -pwsx2462 power 33E+1 0.5 -> 18 Inexact Rounded -pwsx2463 power 33E+2 0.5 -> 57 Inexact Rounded -pwsx2464 power 33E+3 0.5 -> 1.8E+2 Inexact Rounded -pwsx2465 power 0.34 0.5 -> 0.58 Inexact Rounded -pwsx2466 power 0.034 0.5 -> 0.18 Inexact Rounded -pwsx2467 power 34.0E-1 0.5 -> 1.8 Inexact Rounded -pwsx2468 power 34.00E-2 0.5 -> 0.58 Inexact Rounded -pwsx2469 power 34E-3 0.5 -> 0.18 Inexact Rounded -pwsx2470 power 34E+1 0.5 -> 18 Inexact Rounded -pwsx2471 power 34E+2 0.5 -> 58 Inexact Rounded -pwsx2472 power 34E+3 0.5 -> 1.8E+2 Inexact Rounded -pwsx2473 power 0.35 0.5 -> 0.59 Inexact Rounded -pwsx2474 power 0.035 0.5 -> 0.19 Inexact Rounded -pwsx2475 power 35.0E-1 0.5 -> 1.9 Inexact Rounded -pwsx2476 power 35.00E-2 0.5 -> 0.59 Inexact Rounded -pwsx2477 power 35E-3 0.5 -> 0.19 Inexact Rounded -pwsx2478 power 35E+1 0.5 -> 19 Inexact Rounded -pwsx2479 power 35E+2 0.5 -> 59 Inexact Rounded -pwsx2480 power 35E+3 0.5 -> 1.9E+2 Inexact Rounded -pwsx2481 power 0.36 0.5 -> 0.60 Inexact Rounded -pwsx2482 power 0.036 0.5 -> 0.19 Inexact Rounded -pwsx2483 power 36.0E-1 0.5 -> 1.9 Inexact Rounded -pwsx2484 power 36.00E-2 0.5 -> 0.60 Inexact Rounded -pwsx2485 power 36E-3 0.5 -> 0.19 Inexact Rounded -pwsx2486 power 36E+1 0.5 -> 19 Inexact Rounded -pwsx2487 power 36E+2 0.5 -> 60 Inexact Rounded -pwsx2488 power 36E+3 0.5 -> 1.9E+2 Inexact Rounded -pwsx2489 power 0.37 0.5 -> 0.61 Inexact Rounded -pwsx2490 power 0.037 0.5 -> 0.19 Inexact Rounded -pwsx2491 power 37.0E-1 0.5 -> 1.9 Inexact Rounded -pwsx2492 power 37.00E-2 0.5 -> 0.61 Inexact Rounded -pwsx2493 power 37E-3 0.5 -> 0.19 Inexact Rounded -pwsx2494 power 37E+1 0.5 -> 19 Inexact Rounded -pwsx2495 power 37E+2 0.5 -> 61 Inexact Rounded -pwsx2496 power 37E+3 0.5 -> 1.9E+2 Inexact Rounded -pwsx2497 power 0.38 0.5 -> 0.62 Inexact Rounded -pwsx2498 power 0.038 0.5 -> 0.19 Inexact Rounded -pwsx2499 power 38.0E-1 0.5 -> 1.9 Inexact Rounded -pwsx2500 power 38.00E-2 0.5 -> 0.62 Inexact Rounded -pwsx2501 power 38E-3 0.5 -> 0.19 Inexact Rounded -pwsx2502 power 38E+1 0.5 -> 19 Inexact Rounded -pwsx2503 power 38E+2 0.5 -> 62 Inexact Rounded -pwsx2504 power 38E+3 0.5 -> 1.9E+2 Inexact Rounded -pwsx2505 power 0.39 0.5 -> 0.62 Inexact Rounded -pwsx2506 power 0.039 0.5 -> 0.20 Inexact Rounded -pwsx2507 power 39.0E-1 0.5 -> 2.0 Inexact Rounded -pwsx2508 power 39.00E-2 0.5 -> 0.62 Inexact Rounded -pwsx2509 power 39E-3 0.5 -> 0.20 Inexact Rounded -pwsx2510 power 39E+1 0.5 -> 20 Inexact Rounded -pwsx2511 power 39E+2 0.5 -> 62 Inexact Rounded -pwsx2512 power 39E+3 0.5 -> 2.0E+2 Inexact Rounded -pwsx2513 power 0.40 0.5 -> 0.63 Inexact Rounded -pwsx2514 power 0.040 0.5 -> 0.20 Inexact Rounded -pwsx2515 power 40.0E-1 0.5 -> 2.0 Inexact Rounded -pwsx2516 power 40.00E-2 0.5 -> 0.63 Inexact Rounded -pwsx2517 power 40E-3 0.5 -> 0.20 Inexact Rounded -pwsx2518 power 40E+1 0.5 -> 20 Inexact Rounded -pwsx2519 power 40E+2 0.5 -> 63 Inexact Rounded -pwsx2520 power 40E+3 0.5 -> 2.0E+2 Inexact Rounded -pwsx2521 power 0.41 0.5 -> 0.64 Inexact Rounded -pwsx2522 power 0.041 0.5 -> 0.20 Inexact Rounded -pwsx2523 power 41.0E-1 0.5 -> 2.0 Inexact Rounded -pwsx2524 power 41.00E-2 0.5 -> 0.64 Inexact Rounded -pwsx2525 power 41E-3 0.5 -> 0.20 Inexact Rounded -pwsx2526 power 41E+1 0.5 -> 20 Inexact Rounded -pwsx2527 power 41E+2 0.5 -> 64 Inexact Rounded -pwsx2528 power 41E+3 0.5 -> 2.0E+2 Inexact Rounded -pwsx2529 power 0.42 0.5 -> 0.65 Inexact Rounded -pwsx2530 power 0.042 0.5 -> 0.20 Inexact Rounded -pwsx2531 power 42.0E-1 0.5 -> 2.0 Inexact Rounded -pwsx2532 power 42.00E-2 0.5 -> 0.65 Inexact Rounded -pwsx2533 power 42E-3 0.5 -> 0.20 Inexact Rounded -pwsx2534 power 42E+1 0.5 -> 20 Inexact Rounded -pwsx2535 power 42E+2 0.5 -> 65 Inexact Rounded -pwsx2536 power 42E+3 0.5 -> 2.0E+2 Inexact Rounded -pwsx2537 power 0.43 0.5 -> 0.66 Inexact Rounded -pwsx2538 power 0.043 0.5 -> 0.21 Inexact Rounded -pwsx2539 power 43.0E-1 0.5 -> 2.1 Inexact Rounded -pwsx2540 power 43.00E-2 0.5 -> 0.66 Inexact Rounded -pwsx2541 power 43E-3 0.5 -> 0.21 Inexact Rounded -pwsx2542 power 43E+1 0.5 -> 21 Inexact Rounded -pwsx2543 power 43E+2 0.5 -> 66 Inexact Rounded -pwsx2544 power 43E+3 0.5 -> 2.1E+2 Inexact Rounded -pwsx2545 power 0.44 0.5 -> 0.66 Inexact Rounded -pwsx2546 power 0.044 0.5 -> 0.21 Inexact Rounded -pwsx2547 power 44.0E-1 0.5 -> 2.1 Inexact Rounded -pwsx2548 power 44.00E-2 0.5 -> 0.66 Inexact Rounded -pwsx2549 power 44E-3 0.5 -> 0.21 Inexact Rounded -pwsx2550 power 44E+1 0.5 -> 21 Inexact Rounded -pwsx2551 power 44E+2 0.5 -> 66 Inexact Rounded -pwsx2552 power 44E+3 0.5 -> 2.1E+2 Inexact Rounded -pwsx2553 power 0.45 0.5 -> 0.67 Inexact Rounded -pwsx2554 power 0.045 0.5 -> 0.21 Inexact Rounded -pwsx2555 power 45.0E-1 0.5 -> 2.1 Inexact Rounded -pwsx2556 power 45.00E-2 0.5 -> 0.67 Inexact Rounded -pwsx2557 power 45E-3 0.5 -> 0.21 Inexact Rounded -pwsx2558 power 45E+1 0.5 -> 21 Inexact Rounded -pwsx2559 power 45E+2 0.5 -> 67 Inexact Rounded -pwsx2560 power 45E+3 0.5 -> 2.1E+2 Inexact Rounded -pwsx2561 power 0.46 0.5 -> 0.68 Inexact Rounded -pwsx2562 power 0.046 0.5 -> 0.21 Inexact Rounded -pwsx2563 power 46.0E-1 0.5 -> 2.1 Inexact Rounded -pwsx2564 power 46.00E-2 0.5 -> 0.68 Inexact Rounded -pwsx2565 power 46E-3 0.5 -> 0.21 Inexact Rounded -pwsx2566 power 46E+1 0.5 -> 21 Inexact Rounded -pwsx2567 power 46E+2 0.5 -> 68 Inexact Rounded -pwsx2568 power 46E+3 0.5 -> 2.1E+2 Inexact Rounded -pwsx2569 power 0.47 0.5 -> 0.69 Inexact Rounded -pwsx2570 power 0.047 0.5 -> 0.22 Inexact Rounded -pwsx2571 power 47.0E-1 0.5 -> 2.2 Inexact Rounded -pwsx2572 power 47.00E-2 0.5 -> 0.69 Inexact Rounded -pwsx2573 power 47E-3 0.5 -> 0.22 Inexact Rounded -pwsx2574 power 47E+1 0.5 -> 22 Inexact Rounded -pwsx2575 power 47E+2 0.5 -> 69 Inexact Rounded -pwsx2576 power 47E+3 0.5 -> 2.2E+2 Inexact Rounded -pwsx2577 power 0.48 0.5 -> 0.69 Inexact Rounded -pwsx2578 power 0.048 0.5 -> 0.22 Inexact Rounded -pwsx2579 power 48.0E-1 0.5 -> 2.2 Inexact Rounded -pwsx2580 power 48.00E-2 0.5 -> 0.69 Inexact Rounded -pwsx2581 power 48E-3 0.5 -> 0.22 Inexact Rounded -pwsx2582 power 48E+1 0.5 -> 22 Inexact Rounded -pwsx2583 power 48E+2 0.5 -> 69 Inexact Rounded -pwsx2584 power 48E+3 0.5 -> 2.2E+2 Inexact Rounded -pwsx2585 power 0.49 0.5 -> 0.70 Inexact Rounded -pwsx2586 power 0.049 0.5 -> 0.22 Inexact Rounded -pwsx2587 power 49.0E-1 0.5 -> 2.2 Inexact Rounded -pwsx2588 power 49.00E-2 0.5 -> 0.70 Inexact Rounded -pwsx2589 power 49E-3 0.5 -> 0.22 Inexact Rounded -pwsx2590 power 49E+1 0.5 -> 22 Inexact Rounded -pwsx2591 power 49E+2 0.5 -> 70 Inexact Rounded -pwsx2592 power 49E+3 0.5 -> 2.2E+2 Inexact Rounded -pwsx2593 power 0.50 0.5 -> 0.71 Inexact Rounded -pwsx2594 power 0.050 0.5 -> 0.22 Inexact Rounded -pwsx2595 power 50.0E-1 0.5 -> 2.2 Inexact Rounded -pwsx2596 power 50.00E-2 0.5 -> 0.71 Inexact Rounded -pwsx2597 power 50E-3 0.5 -> 0.22 Inexact Rounded -pwsx2598 power 50E+1 0.5 -> 22 Inexact Rounded -pwsx2599 power 50E+2 0.5 -> 71 Inexact Rounded -pwsx2600 power 50E+3 0.5 -> 2.2E+2 Inexact Rounded -pwsx2601 power 0.51 0.5 -> 0.71 Inexact Rounded -pwsx2602 power 0.051 0.5 -> 0.23 Inexact Rounded -pwsx2603 power 51.0E-1 0.5 -> 2.3 Inexact Rounded -pwsx2604 power 51.00E-2 0.5 -> 0.71 Inexact Rounded -pwsx2605 power 51E-3 0.5 -> 0.23 Inexact Rounded -pwsx2606 power 51E+1 0.5 -> 23 Inexact Rounded -pwsx2607 power 51E+2 0.5 -> 71 Inexact Rounded -pwsx2608 power 51E+3 0.5 -> 2.3E+2 Inexact Rounded -pwsx2609 power 0.52 0.5 -> 0.72 Inexact Rounded -pwsx2610 power 0.052 0.5 -> 0.23 Inexact Rounded -pwsx2611 power 52.0E-1 0.5 -> 2.3 Inexact Rounded -pwsx2612 power 52.00E-2 0.5 -> 0.72 Inexact Rounded -pwsx2613 power 52E-3 0.5 -> 0.23 Inexact Rounded -pwsx2614 power 52E+1 0.5 -> 23 Inexact Rounded -pwsx2615 power 52E+2 0.5 -> 72 Inexact Rounded -pwsx2616 power 52E+3 0.5 -> 2.3E+2 Inexact Rounded -pwsx2617 power 0.53 0.5 -> 0.73 Inexact Rounded -pwsx2618 power 0.053 0.5 -> 0.23 Inexact Rounded -pwsx2619 power 53.0E-1 0.5 -> 2.3 Inexact Rounded -pwsx2620 power 53.00E-2 0.5 -> 0.73 Inexact Rounded -pwsx2621 power 53E-3 0.5 -> 0.23 Inexact Rounded -pwsx2622 power 53E+1 0.5 -> 23 Inexact Rounded -pwsx2623 power 53E+2 0.5 -> 73 Inexact Rounded -pwsx2624 power 53E+3 0.5 -> 2.3E+2 Inexact Rounded -pwsx2625 power 0.54 0.5 -> 0.73 Inexact Rounded -pwsx2626 power 0.054 0.5 -> 0.23 Inexact Rounded -pwsx2627 power 54.0E-1 0.5 -> 2.3 Inexact Rounded -pwsx2628 power 54.00E-2 0.5 -> 0.73 Inexact Rounded -pwsx2629 power 54E-3 0.5 -> 0.23 Inexact Rounded -pwsx2630 power 54E+1 0.5 -> 23 Inexact Rounded -pwsx2631 power 54E+2 0.5 -> 73 Inexact Rounded -pwsx2632 power 54E+3 0.5 -> 2.3E+2 Inexact Rounded -pwsx2633 power 0.55 0.5 -> 0.74 Inexact Rounded -pwsx2634 power 0.055 0.5 -> 0.23 Inexact Rounded -pwsx2635 power 55.0E-1 0.5 -> 2.3 Inexact Rounded -pwsx2636 power 55.00E-2 0.5 -> 0.74 Inexact Rounded -pwsx2637 power 55E-3 0.5 -> 0.23 Inexact Rounded -pwsx2638 power 55E+1 0.5 -> 23 Inexact Rounded -pwsx2639 power 55E+2 0.5 -> 74 Inexact Rounded -pwsx2640 power 55E+3 0.5 -> 2.3E+2 Inexact Rounded -pwsx2641 power 0.56 0.5 -> 0.75 Inexact Rounded -pwsx2642 power 0.056 0.5 -> 0.24 Inexact Rounded -pwsx2643 power 56.0E-1 0.5 -> 2.4 Inexact Rounded -pwsx2644 power 56.00E-2 0.5 -> 0.75 Inexact Rounded -pwsx2645 power 56E-3 0.5 -> 0.24 Inexact Rounded -pwsx2646 power 56E+1 0.5 -> 24 Inexact Rounded -pwsx2647 power 56E+2 0.5 -> 75 Inexact Rounded -pwsx2648 power 56E+3 0.5 -> 2.4E+2 Inexact Rounded -pwsx2649 power 0.57 0.5 -> 0.75 Inexact Rounded -pwsx2650 power 0.057 0.5 -> 0.24 Inexact Rounded -pwsx2651 power 57.0E-1 0.5 -> 2.4 Inexact Rounded -pwsx2652 power 57.00E-2 0.5 -> 0.75 Inexact Rounded -pwsx2653 power 57E-3 0.5 -> 0.24 Inexact Rounded -pwsx2654 power 57E+1 0.5 -> 24 Inexact Rounded -pwsx2655 power 57E+2 0.5 -> 75 Inexact Rounded -pwsx2656 power 57E+3 0.5 -> 2.4E+2 Inexact Rounded -pwsx2657 power 0.58 0.5 -> 0.76 Inexact Rounded -pwsx2658 power 0.058 0.5 -> 0.24 Inexact Rounded -pwsx2659 power 58.0E-1 0.5 -> 2.4 Inexact Rounded -pwsx2660 power 58.00E-2 0.5 -> 0.76 Inexact Rounded -pwsx2661 power 58E-3 0.5 -> 0.24 Inexact Rounded -pwsx2662 power 58E+1 0.5 -> 24 Inexact Rounded -pwsx2663 power 58E+2 0.5 -> 76 Inexact Rounded -pwsx2664 power 58E+3 0.5 -> 2.4E+2 Inexact Rounded -pwsx2665 power 0.59 0.5 -> 0.77 Inexact Rounded -pwsx2666 power 0.059 0.5 -> 0.24 Inexact Rounded -pwsx2667 power 59.0E-1 0.5 -> 2.4 Inexact Rounded -pwsx2668 power 59.00E-2 0.5 -> 0.77 Inexact Rounded -pwsx2669 power 59E-3 0.5 -> 0.24 Inexact Rounded -pwsx2670 power 59E+1 0.5 -> 24 Inexact Rounded -pwsx2671 power 59E+2 0.5 -> 77 Inexact Rounded -pwsx2672 power 59E+3 0.5 -> 2.4E+2 Inexact Rounded -pwsx2673 power 0.60 0.5 -> 0.77 Inexact Rounded -pwsx2674 power 0.060 0.5 -> 0.24 Inexact Rounded -pwsx2675 power 60.0E-1 0.5 -> 2.4 Inexact Rounded -pwsx2676 power 60.00E-2 0.5 -> 0.77 Inexact Rounded -pwsx2677 power 60E-3 0.5 -> 0.24 Inexact Rounded -pwsx2678 power 60E+1 0.5 -> 24 Inexact Rounded -pwsx2679 power 60E+2 0.5 -> 77 Inexact Rounded -pwsx2680 power 60E+3 0.5 -> 2.4E+2 Inexact Rounded -pwsx2681 power 0.61 0.5 -> 0.78 Inexact Rounded -pwsx2682 power 0.061 0.5 -> 0.25 Inexact Rounded -pwsx2683 power 61.0E-1 0.5 -> 2.5 Inexact Rounded -pwsx2684 power 61.00E-2 0.5 -> 0.78 Inexact Rounded -pwsx2685 power 61E-3 0.5 -> 0.25 Inexact Rounded -pwsx2686 power 61E+1 0.5 -> 25 Inexact Rounded -pwsx2687 power 61E+2 0.5 -> 78 Inexact Rounded -pwsx2688 power 61E+3 0.5 -> 2.5E+2 Inexact Rounded -pwsx2689 power 0.62 0.5 -> 0.79 Inexact Rounded -pwsx2690 power 0.062 0.5 -> 0.25 Inexact Rounded -pwsx2691 power 62.0E-1 0.5 -> 2.5 Inexact Rounded -pwsx2692 power 62.00E-2 0.5 -> 0.79 Inexact Rounded -pwsx2693 power 62E-3 0.5 -> 0.25 Inexact Rounded -pwsx2694 power 62E+1 0.5 -> 25 Inexact Rounded -pwsx2695 power 62E+2 0.5 -> 79 Inexact Rounded -pwsx2696 power 62E+3 0.5 -> 2.5E+2 Inexact Rounded -pwsx2697 power 0.63 0.5 -> 0.79 Inexact Rounded -pwsx2698 power 0.063 0.5 -> 0.25 Inexact Rounded -pwsx2699 power 63.0E-1 0.5 -> 2.5 Inexact Rounded -pwsx2700 power 63.00E-2 0.5 -> 0.79 Inexact Rounded -pwsx2701 power 63E-3 0.5 -> 0.25 Inexact Rounded -pwsx2702 power 63E+1 0.5 -> 25 Inexact Rounded -pwsx2703 power 63E+2 0.5 -> 79 Inexact Rounded -pwsx2704 power 63E+3 0.5 -> 2.5E+2 Inexact Rounded -pwsx2705 power 0.64 0.5 -> 0.80 Inexact Rounded -pwsx2706 power 0.064 0.5 -> 0.25 Inexact Rounded -pwsx2707 power 64.0E-1 0.5 -> 2.5 Inexact Rounded -pwsx2708 power 64.00E-2 0.5 -> 0.80 Inexact Rounded -pwsx2709 power 64E-3 0.5 -> 0.25 Inexact Rounded -pwsx2710 power 64E+1 0.5 -> 25 Inexact Rounded -pwsx2711 power 64E+2 0.5 -> 80 Inexact Rounded -pwsx2712 power 64E+3 0.5 -> 2.5E+2 Inexact Rounded -pwsx2713 power 0.65 0.5 -> 0.81 Inexact Rounded -pwsx2714 power 0.065 0.5 -> 0.25 Inexact Rounded -pwsx2715 power 65.0E-1 0.5 -> 2.5 Inexact Rounded -pwsx2716 power 65.00E-2 0.5 -> 0.81 Inexact Rounded -pwsx2717 power 65E-3 0.5 -> 0.25 Inexact Rounded -pwsx2718 power 65E+1 0.5 -> 25 Inexact Rounded -pwsx2719 power 65E+2 0.5 -> 81 Inexact Rounded -pwsx2720 power 65E+3 0.5 -> 2.5E+2 Inexact Rounded -pwsx2721 power 0.66 0.5 -> 0.81 Inexact Rounded -pwsx2722 power 0.066 0.5 -> 0.26 Inexact Rounded -pwsx2723 power 66.0E-1 0.5 -> 2.6 Inexact Rounded -pwsx2724 power 66.00E-2 0.5 -> 0.81 Inexact Rounded -pwsx2725 power 66E-3 0.5 -> 0.26 Inexact Rounded -pwsx2726 power 66E+1 0.5 -> 26 Inexact Rounded -pwsx2727 power 66E+2 0.5 -> 81 Inexact Rounded -pwsx2728 power 66E+3 0.5 -> 2.6E+2 Inexact Rounded -pwsx2729 power 0.67 0.5 -> 0.82 Inexact Rounded -pwsx2730 power 0.067 0.5 -> 0.26 Inexact Rounded -pwsx2731 power 67.0E-1 0.5 -> 2.6 Inexact Rounded -pwsx2732 power 67.00E-2 0.5 -> 0.82 Inexact Rounded -pwsx2733 power 67E-3 0.5 -> 0.26 Inexact Rounded -pwsx2734 power 67E+1 0.5 -> 26 Inexact Rounded -pwsx2735 power 67E+2 0.5 -> 82 Inexact Rounded -pwsx2736 power 67E+3 0.5 -> 2.6E+2 Inexact Rounded -pwsx2737 power 0.68 0.5 -> 0.82 Inexact Rounded -pwsx2738 power 0.068 0.5 -> 0.26 Inexact Rounded -pwsx2739 power 68.0E-1 0.5 -> 2.6 Inexact Rounded -pwsx2740 power 68.00E-2 0.5 -> 0.82 Inexact Rounded -pwsx2741 power 68E-3 0.5 -> 0.26 Inexact Rounded -pwsx2742 power 68E+1 0.5 -> 26 Inexact Rounded -pwsx2743 power 68E+2 0.5 -> 82 Inexact Rounded -pwsx2744 power 68E+3 0.5 -> 2.6E+2 Inexact Rounded -pwsx2745 power 0.69 0.5 -> 0.83 Inexact Rounded -pwsx2746 power 0.069 0.5 -> 0.26 Inexact Rounded -pwsx2747 power 69.0E-1 0.5 -> 2.6 Inexact Rounded -pwsx2748 power 69.00E-2 0.5 -> 0.83 Inexact Rounded -pwsx2749 power 69E-3 0.5 -> 0.26 Inexact Rounded -pwsx2750 power 69E+1 0.5 -> 26 Inexact Rounded -pwsx2751 power 69E+2 0.5 -> 83 Inexact Rounded -pwsx2752 power 69E+3 0.5 -> 2.6E+2 Inexact Rounded -pwsx2753 power 0.70 0.5 -> 0.84 Inexact Rounded -pwsx2754 power 0.070 0.5 -> 0.26 Inexact Rounded -pwsx2755 power 70.0E-1 0.5 -> 2.6 Inexact Rounded -pwsx2756 power 70.00E-2 0.5 -> 0.84 Inexact Rounded -pwsx2757 power 70E-3 0.5 -> 0.26 Inexact Rounded -pwsx2758 power 70E+1 0.5 -> 26 Inexact Rounded -pwsx2759 power 70E+2 0.5 -> 84 Inexact Rounded -pwsx2760 power 70E+3 0.5 -> 2.6E+2 Inexact Rounded -pwsx2761 power 0.71 0.5 -> 0.84 Inexact Rounded -pwsx2762 power 0.071 0.5 -> 0.27 Inexact Rounded -pwsx2763 power 71.0E-1 0.5 -> 2.7 Inexact Rounded -pwsx2764 power 71.00E-2 0.5 -> 0.84 Inexact Rounded -pwsx2765 power 71E-3 0.5 -> 0.27 Inexact Rounded -pwsx2766 power 71E+1 0.5 -> 27 Inexact Rounded -pwsx2767 power 71E+2 0.5 -> 84 Inexact Rounded -pwsx2768 power 71E+3 0.5 -> 2.7E+2 Inexact Rounded -pwsx2769 power 0.72 0.5 -> 0.85 Inexact Rounded -pwsx2770 power 0.072 0.5 -> 0.27 Inexact Rounded -pwsx2771 power 72.0E-1 0.5 -> 2.7 Inexact Rounded -pwsx2772 power 72.00E-2 0.5 -> 0.85 Inexact Rounded -pwsx2773 power 72E-3 0.5 -> 0.27 Inexact Rounded -pwsx2774 power 72E+1 0.5 -> 27 Inexact Rounded -pwsx2775 power 72E+2 0.5 -> 85 Inexact Rounded -pwsx2776 power 72E+3 0.5 -> 2.7E+2 Inexact Rounded -pwsx2777 power 0.73 0.5 -> 0.85 Inexact Rounded -pwsx2778 power 0.073 0.5 -> 0.27 Inexact Rounded -pwsx2779 power 73.0E-1 0.5 -> 2.7 Inexact Rounded -pwsx2780 power 73.00E-2 0.5 -> 0.85 Inexact Rounded -pwsx2781 power 73E-3 0.5 -> 0.27 Inexact Rounded -pwsx2782 power 73E+1 0.5 -> 27 Inexact Rounded -pwsx2783 power 73E+2 0.5 -> 85 Inexact Rounded -pwsx2784 power 73E+3 0.5 -> 2.7E+2 Inexact Rounded -pwsx2785 power 0.74 0.5 -> 0.86 Inexact Rounded -pwsx2786 power 0.074 0.5 -> 0.27 Inexact Rounded -pwsx2787 power 74.0E-1 0.5 -> 2.7 Inexact Rounded -pwsx2788 power 74.00E-2 0.5 -> 0.86 Inexact Rounded -pwsx2789 power 74E-3 0.5 -> 0.27 Inexact Rounded -pwsx2790 power 74E+1 0.5 -> 27 Inexact Rounded -pwsx2791 power 74E+2 0.5 -> 86 Inexact Rounded -pwsx2792 power 74E+3 0.5 -> 2.7E+2 Inexact Rounded -pwsx2793 power 0.75 0.5 -> 0.87 Inexact Rounded -pwsx2794 power 0.075 0.5 -> 0.27 Inexact Rounded -pwsx2795 power 75.0E-1 0.5 -> 2.7 Inexact Rounded -pwsx2796 power 75.00E-2 0.5 -> 0.87 Inexact Rounded -pwsx2797 power 75E-3 0.5 -> 0.27 Inexact Rounded -pwsx2798 power 75E+1 0.5 -> 27 Inexact Rounded -pwsx2799 power 75E+2 0.5 -> 87 Inexact Rounded -pwsx2800 power 75E+3 0.5 -> 2.7E+2 Inexact Rounded -pwsx2801 power 0.76 0.5 -> 0.87 Inexact Rounded -pwsx2802 power 0.076 0.5 -> 0.28 Inexact Rounded -pwsx2803 power 76.0E-1 0.5 -> 2.8 Inexact Rounded -pwsx2804 power 76.00E-2 0.5 -> 0.87 Inexact Rounded -pwsx2805 power 76E-3 0.5 -> 0.28 Inexact Rounded -pwsx2806 power 76E+1 0.5 -> 28 Inexact Rounded -pwsx2807 power 76E+2 0.5 -> 87 Inexact Rounded -pwsx2808 power 76E+3 0.5 -> 2.8E+2 Inexact Rounded -pwsx2809 power 0.77 0.5 -> 0.88 Inexact Rounded -pwsx2810 power 0.077 0.5 -> 0.28 Inexact Rounded -pwsx2811 power 77.0E-1 0.5 -> 2.8 Inexact Rounded -pwsx2812 power 77.00E-2 0.5 -> 0.88 Inexact Rounded -pwsx2813 power 77E-3 0.5 -> 0.28 Inexact Rounded -pwsx2814 power 77E+1 0.5 -> 28 Inexact Rounded -pwsx2815 power 77E+2 0.5 -> 88 Inexact Rounded -pwsx2816 power 77E+3 0.5 -> 2.8E+2 Inexact Rounded -pwsx2817 power 0.78 0.5 -> 0.88 Inexact Rounded -pwsx2818 power 0.078 0.5 -> 0.28 Inexact Rounded -pwsx2819 power 78.0E-1 0.5 -> 2.8 Inexact Rounded -pwsx2820 power 78.00E-2 0.5 -> 0.88 Inexact Rounded -pwsx2821 power 78E-3 0.5 -> 0.28 Inexact Rounded -pwsx2822 power 78E+1 0.5 -> 28 Inexact Rounded -pwsx2823 power 78E+2 0.5 -> 88 Inexact Rounded -pwsx2824 power 78E+3 0.5 -> 2.8E+2 Inexact Rounded -pwsx2825 power 0.79 0.5 -> 0.89 Inexact Rounded -pwsx2826 power 0.079 0.5 -> 0.28 Inexact Rounded -pwsx2827 power 79.0E-1 0.5 -> 2.8 Inexact Rounded -pwsx2828 power 79.00E-2 0.5 -> 0.89 Inexact Rounded -pwsx2829 power 79E-3 0.5 -> 0.28 Inexact Rounded -pwsx2830 power 79E+1 0.5 -> 28 Inexact Rounded -pwsx2831 power 79E+2 0.5 -> 89 Inexact Rounded -pwsx2832 power 79E+3 0.5 -> 2.8E+2 Inexact Rounded -pwsx2833 power 0.80 0.5 -> 0.89 Inexact Rounded -pwsx2834 power 0.080 0.5 -> 0.28 Inexact Rounded -pwsx2835 power 80.0E-1 0.5 -> 2.8 Inexact Rounded -pwsx2836 power 80.00E-2 0.5 -> 0.89 Inexact Rounded -pwsx2837 power 80E-3 0.5 -> 0.28 Inexact Rounded -pwsx2838 power 80E+1 0.5 -> 28 Inexact Rounded -pwsx2839 power 80E+2 0.5 -> 89 Inexact Rounded -pwsx2840 power 80E+3 0.5 -> 2.8E+2 Inexact Rounded -pwsx2841 power 0.81 0.5 -> 0.90 Inexact Rounded -pwsx2842 power 0.081 0.5 -> 0.28 Inexact Rounded -pwsx2843 power 81.0E-1 0.5 -> 2.8 Inexact Rounded -pwsx2844 power 81.00E-2 0.5 -> 0.90 Inexact Rounded -pwsx2845 power 81E-3 0.5 -> 0.28 Inexact Rounded -pwsx2846 power 81E+1 0.5 -> 28 Inexact Rounded -pwsx2847 power 81E+2 0.5 -> 90 Inexact Rounded -pwsx2848 power 81E+3 0.5 -> 2.8E+2 Inexact Rounded -pwsx2849 power 0.82 0.5 -> 0.91 Inexact Rounded -pwsx2850 power 0.082 0.5 -> 0.29 Inexact Rounded -pwsx2851 power 82.0E-1 0.5 -> 2.9 Inexact Rounded -pwsx2852 power 82.00E-2 0.5 -> 0.91 Inexact Rounded -pwsx2853 power 82E-3 0.5 -> 0.29 Inexact Rounded -pwsx2854 power 82E+1 0.5 -> 29 Inexact Rounded -pwsx2855 power 82E+2 0.5 -> 91 Inexact Rounded -pwsx2856 power 82E+3 0.5 -> 2.9E+2 Inexact Rounded -pwsx2857 power 0.83 0.5 -> 0.91 Inexact Rounded -pwsx2858 power 0.083 0.5 -> 0.29 Inexact Rounded -pwsx2859 power 83.0E-1 0.5 -> 2.9 Inexact Rounded -pwsx2860 power 83.00E-2 0.5 -> 0.91 Inexact Rounded -pwsx2861 power 83E-3 0.5 -> 0.29 Inexact Rounded -pwsx2862 power 83E+1 0.5 -> 29 Inexact Rounded -pwsx2863 power 83E+2 0.5 -> 91 Inexact Rounded -pwsx2864 power 83E+3 0.5 -> 2.9E+2 Inexact Rounded -pwsx2865 power 0.84 0.5 -> 0.92 Inexact Rounded -pwsx2866 power 0.084 0.5 -> 0.29 Inexact Rounded -pwsx2867 power 84.0E-1 0.5 -> 2.9 Inexact Rounded -pwsx2868 power 84.00E-2 0.5 -> 0.92 Inexact Rounded -pwsx2869 power 84E-3 0.5 -> 0.29 Inexact Rounded -pwsx2870 power 84E+1 0.5 -> 29 Inexact Rounded -pwsx2871 power 84E+2 0.5 -> 92 Inexact Rounded -pwsx2872 power 84E+3 0.5 -> 2.9E+2 Inexact Rounded -pwsx2873 power 0.85 0.5 -> 0.92 Inexact Rounded -pwsx2874 power 0.085 0.5 -> 0.29 Inexact Rounded -pwsx2875 power 85.0E-1 0.5 -> 2.9 Inexact Rounded -pwsx2876 power 85.00E-2 0.5 -> 0.92 Inexact Rounded -pwsx2877 power 85E-3 0.5 -> 0.29 Inexact Rounded -pwsx2878 power 85E+1 0.5 -> 29 Inexact Rounded -pwsx2879 power 85E+2 0.5 -> 92 Inexact Rounded -pwsx2880 power 85E+3 0.5 -> 2.9E+2 Inexact Rounded -pwsx2881 power 0.86 0.5 -> 0.93 Inexact Rounded -pwsx2882 power 0.086 0.5 -> 0.29 Inexact Rounded -pwsx2883 power 86.0E-1 0.5 -> 2.9 Inexact Rounded -pwsx2884 power 86.00E-2 0.5 -> 0.93 Inexact Rounded -pwsx2885 power 86E-3 0.5 -> 0.29 Inexact Rounded -pwsx2886 power 86E+1 0.5 -> 29 Inexact Rounded -pwsx2887 power 86E+2 0.5 -> 93 Inexact Rounded -pwsx2888 power 86E+3 0.5 -> 2.9E+2 Inexact Rounded -pwsx2889 power 0.87 0.5 -> 0.93 Inexact Rounded -pwsx2890 power 0.087 0.5 -> 0.29 Inexact Rounded -pwsx2891 power 87.0E-1 0.5 -> 2.9 Inexact Rounded -pwsx2892 power 87.00E-2 0.5 -> 0.93 Inexact Rounded -pwsx2893 power 87E-3 0.5 -> 0.29 Inexact Rounded -pwsx2894 power 87E+1 0.5 -> 29 Inexact Rounded -pwsx2895 power 87E+2 0.5 -> 93 Inexact Rounded -pwsx2896 power 87E+3 0.5 -> 2.9E+2 Inexact Rounded -pwsx2897 power 0.88 0.5 -> 0.94 Inexact Rounded -pwsx2898 power 0.088 0.5 -> 0.30 Inexact Rounded -pwsx2899 power 88.0E-1 0.5 -> 3.0 Inexact Rounded -pwsx2900 power 88.00E-2 0.5 -> 0.94 Inexact Rounded -pwsx2901 power 88E-3 0.5 -> 0.30 Inexact Rounded -pwsx2902 power 88E+1 0.5 -> 30 Inexact Rounded -pwsx2903 power 88E+2 0.5 -> 94 Inexact Rounded -pwsx2904 power 88E+3 0.5 -> 3.0E+2 Inexact Rounded -pwsx2905 power 0.89 0.5 -> 0.94 Inexact Rounded -pwsx2906 power 0.089 0.5 -> 0.30 Inexact Rounded -pwsx2907 power 89.0E-1 0.5 -> 3.0 Inexact Rounded -pwsx2908 power 89.00E-2 0.5 -> 0.94 Inexact Rounded -pwsx2909 power 89E-3 0.5 -> 0.30 Inexact Rounded -pwsx2910 power 89E+1 0.5 -> 30 Inexact Rounded -pwsx2911 power 89E+2 0.5 -> 94 Inexact Rounded -pwsx2912 power 89E+3 0.5 -> 3.0E+2 Inexact Rounded -pwsx2913 power 0.90 0.5 -> 0.95 Inexact Rounded -pwsx2914 power 0.090 0.5 -> 0.30 Inexact Rounded -pwsx2915 power 90.0E-1 0.5 -> 3.0 Inexact Rounded -pwsx2916 power 90.00E-2 0.5 -> 0.95 Inexact Rounded -pwsx2917 power 90E-3 0.5 -> 0.30 Inexact Rounded -pwsx2918 power 90E+1 0.5 -> 30 Inexact Rounded -pwsx2919 power 90E+2 0.5 -> 95 Inexact Rounded -pwsx2920 power 90E+3 0.5 -> 3.0E+2 Inexact Rounded -pwsx2921 power 0.91 0.5 -> 0.95 Inexact Rounded -pwsx2922 power 0.091 0.5 -> 0.30 Inexact Rounded -pwsx2923 power 91.0E-1 0.5 -> 3.0 Inexact Rounded -pwsx2924 power 91.00E-2 0.5 -> 0.95 Inexact Rounded -pwsx2925 power 91E-3 0.5 -> 0.30 Inexact Rounded -pwsx2926 power 91E+1 0.5 -> 30 Inexact Rounded -pwsx2927 power 91E+2 0.5 -> 95 Inexact Rounded -pwsx2928 power 91E+3 0.5 -> 3.0E+2 Inexact Rounded -pwsx2929 power 0.92 0.5 -> 0.96 Inexact Rounded -pwsx2930 power 0.092 0.5 -> 0.30 Inexact Rounded -pwsx2931 power 92.0E-1 0.5 -> 3.0 Inexact Rounded -pwsx2932 power 92.00E-2 0.5 -> 0.96 Inexact Rounded -pwsx2933 power 92E-3 0.5 -> 0.30 Inexact Rounded -pwsx2934 power 92E+1 0.5 -> 30 Inexact Rounded -pwsx2935 power 92E+2 0.5 -> 96 Inexact Rounded -pwsx2936 power 92E+3 0.5 -> 3.0E+2 Inexact Rounded -pwsx2937 power 0.93 0.5 -> 0.96 Inexact Rounded -pwsx2938 power 0.093 0.5 -> 0.30 Inexact Rounded -pwsx2939 power 93.0E-1 0.5 -> 3.0 Inexact Rounded -pwsx2940 power 93.00E-2 0.5 -> 0.96 Inexact Rounded -pwsx2941 power 93E-3 0.5 -> 0.30 Inexact Rounded -pwsx2942 power 93E+1 0.5 -> 30 Inexact Rounded -pwsx2943 power 93E+2 0.5 -> 96 Inexact Rounded -pwsx2944 power 93E+3 0.5 -> 3.0E+2 Inexact Rounded -pwsx2945 power 0.94 0.5 -> 0.97 Inexact Rounded -pwsx2946 power 0.094 0.5 -> 0.31 Inexact Rounded -pwsx2947 power 94.0E-1 0.5 -> 3.1 Inexact Rounded -pwsx2948 power 94.00E-2 0.5 -> 0.97 Inexact Rounded -pwsx2949 power 94E-3 0.5 -> 0.31 Inexact Rounded -pwsx2950 power 94E+1 0.5 -> 31 Inexact Rounded -pwsx2951 power 94E+2 0.5 -> 97 Inexact Rounded -pwsx2952 power 94E+3 0.5 -> 3.1E+2 Inexact Rounded -pwsx2953 power 0.95 0.5 -> 0.97 Inexact Rounded -pwsx2954 power 0.095 0.5 -> 0.31 Inexact Rounded -pwsx2955 power 95.0E-1 0.5 -> 3.1 Inexact Rounded -pwsx2956 power 95.00E-2 0.5 -> 0.97 Inexact Rounded -pwsx2957 power 95E-3 0.5 -> 0.31 Inexact Rounded -pwsx2958 power 95E+1 0.5 -> 31 Inexact Rounded -pwsx2959 power 95E+2 0.5 -> 97 Inexact Rounded -pwsx2960 power 95E+3 0.5 -> 3.1E+2 Inexact Rounded -pwsx2961 power 0.96 0.5 -> 0.98 Inexact Rounded -pwsx2962 power 0.096 0.5 -> 0.31 Inexact Rounded -pwsx2963 power 96.0E-1 0.5 -> 3.1 Inexact Rounded -pwsx2964 power 96.00E-2 0.5 -> 0.98 Inexact Rounded -pwsx2965 power 96E-3 0.5 -> 0.31 Inexact Rounded -pwsx2966 power 96E+1 0.5 -> 31 Inexact Rounded -pwsx2967 power 96E+2 0.5 -> 98 Inexact Rounded -pwsx2968 power 96E+3 0.5 -> 3.1E+2 Inexact Rounded -pwsx2969 power 0.97 0.5 -> 0.98 Inexact Rounded -pwsx2970 power 0.097 0.5 -> 0.31 Inexact Rounded -pwsx2971 power 97.0E-1 0.5 -> 3.1 Inexact Rounded -pwsx2972 power 97.00E-2 0.5 -> 0.98 Inexact Rounded -pwsx2973 power 97E-3 0.5 -> 0.31 Inexact Rounded -pwsx2974 power 97E+1 0.5 -> 31 Inexact Rounded -pwsx2975 power 97E+2 0.5 -> 98 Inexact Rounded -pwsx2976 power 97E+3 0.5 -> 3.1E+2 Inexact Rounded -pwsx2977 power 0.98 0.5 -> 0.99 Inexact Rounded -pwsx2978 power 0.098 0.5 -> 0.31 Inexact Rounded -pwsx2979 power 98.0E-1 0.5 -> 3.1 Inexact Rounded -pwsx2980 power 98.00E-2 0.5 -> 0.99 Inexact Rounded -pwsx2981 power 98E-3 0.5 -> 0.31 Inexact Rounded -pwsx2982 power 98E+1 0.5 -> 31 Inexact Rounded -pwsx2983 power 98E+2 0.5 -> 99 Inexact Rounded -pwsx2984 power 98E+3 0.5 -> 3.1E+2 Inexact Rounded -pwsx2985 power 0.99 0.5 -> 0.99 Inexact Rounded -pwsx2986 power 0.099 0.5 -> 0.31 Inexact Rounded -pwsx2987 power 99.0E-1 0.5 -> 3.1 Inexact Rounded -pwsx2988 power 99.00E-2 0.5 -> 0.99 Inexact Rounded -pwsx2989 power 99E-3 0.5 -> 0.31 Inexact Rounded -pwsx2990 power 99E+1 0.5 -> 31 Inexact Rounded -pwsx2991 power 99E+2 0.5 -> 99 Inexact Rounded -pwsx2992 power 99E+3 0.5 -> 3.1E+2 Inexact Rounded - --- Precision 3 squareroot tests [exhaustive, f and f/10] -rounding: half_even -maxExponent: 999 -minexponent: -999 -precision: 3 -pwsx3001 power 0.1 0.5 -> 0.316 Inexact Rounded -pwsx3002 power 0.01 0.5 -> 0.100 Inexact Rounded -pwsx3003 power 0.2 0.5 -> 0.447 Inexact Rounded -pwsx3004 power 0.02 0.5 -> 0.141 Inexact Rounded -pwsx3005 power 0.3 0.5 -> 0.548 Inexact Rounded -pwsx3006 power 0.03 0.5 -> 0.173 Inexact Rounded -pwsx3007 power 0.4 0.5 -> 0.632 Inexact Rounded -pwsx3008 power 0.04 0.5 -> 0.200 Inexact Rounded -pwsx3009 power 0.5 0.5 -> 0.707 Inexact Rounded -pwsx3010 power 0.05 0.5 -> 0.224 Inexact Rounded -pwsx3011 power 0.6 0.5 -> 0.775 Inexact Rounded -pwsx3012 power 0.06 0.5 -> 0.245 Inexact Rounded -pwsx3013 power 0.7 0.5 -> 0.837 Inexact Rounded -pwsx3014 power 0.07 0.5 -> 0.265 Inexact Rounded -pwsx3015 power 0.8 0.5 -> 0.894 Inexact Rounded -pwsx3016 power 0.08 0.5 -> 0.283 Inexact Rounded -pwsx3017 power 0.9 0.5 -> 0.949 Inexact Rounded -pwsx3018 power 0.09 0.5 -> 0.300 Inexact Rounded -pwsx3019 power 0.11 0.5 -> 0.332 Inexact Rounded -pwsx3020 power 0.011 0.5 -> 0.105 Inexact Rounded -pwsx3021 power 0.12 0.5 -> 0.346 Inexact Rounded -pwsx3022 power 0.012 0.5 -> 0.110 Inexact Rounded -pwsx3023 power 0.13 0.5 -> 0.361 Inexact Rounded -pwsx3024 power 0.013 0.5 -> 0.114 Inexact Rounded -pwsx3025 power 0.14 0.5 -> 0.374 Inexact Rounded -pwsx3026 power 0.014 0.5 -> 0.118 Inexact Rounded -pwsx3027 power 0.15 0.5 -> 0.387 Inexact Rounded -pwsx3028 power 0.015 0.5 -> 0.122 Inexact Rounded -pwsx3029 power 0.16 0.5 -> 0.400 Inexact Rounded -pwsx3030 power 0.016 0.5 -> 0.126 Inexact Rounded -pwsx3031 power 0.17 0.5 -> 0.412 Inexact Rounded -pwsx3032 power 0.017 0.5 -> 0.130 Inexact Rounded -pwsx3033 power 0.18 0.5 -> 0.424 Inexact Rounded -pwsx3034 power 0.018 0.5 -> 0.134 Inexact Rounded -pwsx3035 power 0.19 0.5 -> 0.436 Inexact Rounded -pwsx3036 power 0.019 0.5 -> 0.138 Inexact Rounded -pwsx3037 power 0.21 0.5 -> 0.458 Inexact Rounded -pwsx3038 power 0.021 0.5 -> 0.145 Inexact Rounded -pwsx3039 power 0.22 0.5 -> 0.469 Inexact Rounded -pwsx3040 power 0.022 0.5 -> 0.148 Inexact Rounded -pwsx3041 power 0.23 0.5 -> 0.480 Inexact Rounded -pwsx3042 power 0.023 0.5 -> 0.152 Inexact Rounded -pwsx3043 power 0.24 0.5 -> 0.490 Inexact Rounded -pwsx3044 power 0.024 0.5 -> 0.155 Inexact Rounded -pwsx3045 power 0.25 0.5 -> 0.500 Inexact Rounded -pwsx3046 power 0.025 0.5 -> 0.158 Inexact Rounded -pwsx3047 power 0.26 0.5 -> 0.510 Inexact Rounded -pwsx3048 power 0.026 0.5 -> 0.161 Inexact Rounded -pwsx3049 power 0.27 0.5 -> 0.520 Inexact Rounded -pwsx3050 power 0.027 0.5 -> 0.164 Inexact Rounded -pwsx3051 power 0.28 0.5 -> 0.529 Inexact Rounded -pwsx3052 power 0.028 0.5 -> 0.167 Inexact Rounded -pwsx3053 power 0.29 0.5 -> 0.539 Inexact Rounded -pwsx3054 power 0.029 0.5 -> 0.170 Inexact Rounded -pwsx3055 power 0.31 0.5 -> 0.557 Inexact Rounded -pwsx3056 power 0.031 0.5 -> 0.176 Inexact Rounded -pwsx3057 power 0.32 0.5 -> 0.566 Inexact Rounded -pwsx3058 power 0.032 0.5 -> 0.179 Inexact Rounded -pwsx3059 power 0.33 0.5 -> 0.574 Inexact Rounded -pwsx3060 power 0.033 0.5 -> 0.182 Inexact Rounded -pwsx3061 power 0.34 0.5 -> 0.583 Inexact Rounded -pwsx3062 power 0.034 0.5 -> 0.184 Inexact Rounded -pwsx3063 power 0.35 0.5 -> 0.592 Inexact Rounded -pwsx3064 power 0.035 0.5 -> 0.187 Inexact Rounded -pwsx3065 power 0.36 0.5 -> 0.600 Inexact Rounded -pwsx3066 power 0.036 0.5 -> 0.190 Inexact Rounded -pwsx3067 power 0.37 0.5 -> 0.608 Inexact Rounded -pwsx3068 power 0.037 0.5 -> 0.192 Inexact Rounded -pwsx3069 power 0.38 0.5 -> 0.616 Inexact Rounded -pwsx3070 power 0.038 0.5 -> 0.195 Inexact Rounded -pwsx3071 power 0.39 0.5 -> 0.624 Inexact Rounded -pwsx3072 power 0.039 0.5 -> 0.197 Inexact Rounded -pwsx3073 power 0.41 0.5 -> 0.640 Inexact Rounded -pwsx3074 power 0.041 0.5 -> 0.202 Inexact Rounded -pwsx3075 power 0.42 0.5 -> 0.648 Inexact Rounded -pwsx3076 power 0.042 0.5 -> 0.205 Inexact Rounded -pwsx3077 power 0.43 0.5 -> 0.656 Inexact Rounded -pwsx3078 power 0.043 0.5 -> 0.207 Inexact Rounded -pwsx3079 power 0.44 0.5 -> 0.663 Inexact Rounded -pwsx3080 power 0.044 0.5 -> 0.210 Inexact Rounded -pwsx3081 power 0.45 0.5 -> 0.671 Inexact Rounded -pwsx3082 power 0.045 0.5 -> 0.212 Inexact Rounded -pwsx3083 power 0.46 0.5 -> 0.678 Inexact Rounded -pwsx3084 power 0.046 0.5 -> 0.214 Inexact Rounded -pwsx3085 power 0.47 0.5 -> 0.686 Inexact Rounded -pwsx3086 power 0.047 0.5 -> 0.217 Inexact Rounded -pwsx3087 power 0.48 0.5 -> 0.693 Inexact Rounded -pwsx3088 power 0.048 0.5 -> 0.219 Inexact Rounded -pwsx3089 power 0.49 0.5 -> 0.700 Inexact Rounded -pwsx3090 power 0.049 0.5 -> 0.221 Inexact Rounded -pwsx3091 power 0.51 0.5 -> 0.714 Inexact Rounded -pwsx3092 power 0.051 0.5 -> 0.226 Inexact Rounded -pwsx3093 power 0.52 0.5 -> 0.721 Inexact Rounded -pwsx3094 power 0.052 0.5 -> 0.228 Inexact Rounded -pwsx3095 power 0.53 0.5 -> 0.728 Inexact Rounded -pwsx3096 power 0.053 0.5 -> 0.230 Inexact Rounded -pwsx3097 power 0.54 0.5 -> 0.735 Inexact Rounded -pwsx3098 power 0.054 0.5 -> 0.232 Inexact Rounded -pwsx3099 power 0.55 0.5 -> 0.742 Inexact Rounded -pwsx3100 power 0.055 0.5 -> 0.235 Inexact Rounded -pwsx3101 power 0.56 0.5 -> 0.748 Inexact Rounded -pwsx3102 power 0.056 0.5 -> 0.237 Inexact Rounded -pwsx3103 power 0.57 0.5 -> 0.755 Inexact Rounded -pwsx3104 power 0.057 0.5 -> 0.239 Inexact Rounded -pwsx3105 power 0.58 0.5 -> 0.762 Inexact Rounded -pwsx3106 power 0.058 0.5 -> 0.241 Inexact Rounded -pwsx3107 power 0.59 0.5 -> 0.768 Inexact Rounded -pwsx3108 power 0.059 0.5 -> 0.243 Inexact Rounded -pwsx3109 power 0.61 0.5 -> 0.781 Inexact Rounded -pwsx3110 power 0.061 0.5 -> 0.247 Inexact Rounded -pwsx3111 power 0.62 0.5 -> 0.787 Inexact Rounded -pwsx3112 power 0.062 0.5 -> 0.249 Inexact Rounded -pwsx3113 power 0.63 0.5 -> 0.794 Inexact Rounded -pwsx3114 power 0.063 0.5 -> 0.251 Inexact Rounded -pwsx3115 power 0.64 0.5 -> 0.800 Inexact Rounded -pwsx3116 power 0.064 0.5 -> 0.253 Inexact Rounded -pwsx3117 power 0.65 0.5 -> 0.806 Inexact Rounded -pwsx3118 power 0.065 0.5 -> 0.255 Inexact Rounded -pwsx3119 power 0.66 0.5 -> 0.812 Inexact Rounded -pwsx3120 power 0.066 0.5 -> 0.257 Inexact Rounded -pwsx3121 power 0.67 0.5 -> 0.819 Inexact Rounded -pwsx3122 power 0.067 0.5 -> 0.259 Inexact Rounded -pwsx3123 power 0.68 0.5 -> 0.825 Inexact Rounded -pwsx3124 power 0.068 0.5 -> 0.261 Inexact Rounded -pwsx3125 power 0.69 0.5 -> 0.831 Inexact Rounded -pwsx3126 power 0.069 0.5 -> 0.263 Inexact Rounded -pwsx3127 power 0.71 0.5 -> 0.843 Inexact Rounded -pwsx3128 power 0.071 0.5 -> 0.266 Inexact Rounded -pwsx3129 power 0.72 0.5 -> 0.849 Inexact Rounded -pwsx3130 power 0.072 0.5 -> 0.268 Inexact Rounded -pwsx3131 power 0.73 0.5 -> 0.854 Inexact Rounded -pwsx3132 power 0.073 0.5 -> 0.270 Inexact Rounded -pwsx3133 power 0.74 0.5 -> 0.860 Inexact Rounded -pwsx3134 power 0.074 0.5 -> 0.272 Inexact Rounded -pwsx3135 power 0.75 0.5 -> 0.866 Inexact Rounded -pwsx3136 power 0.075 0.5 -> 0.274 Inexact Rounded -pwsx3137 power 0.76 0.5 -> 0.872 Inexact Rounded -pwsx3138 power 0.076 0.5 -> 0.276 Inexact Rounded -pwsx3139 power 0.77 0.5 -> 0.877 Inexact Rounded -pwsx3140 power 0.077 0.5 -> 0.277 Inexact Rounded -pwsx3141 power 0.78 0.5 -> 0.883 Inexact Rounded -pwsx3142 power 0.078 0.5 -> 0.279 Inexact Rounded -pwsx3143 power 0.79 0.5 -> 0.889 Inexact Rounded -pwsx3144 power 0.079 0.5 -> 0.281 Inexact Rounded -pwsx3145 power 0.81 0.5 -> 0.900 Inexact Rounded -pwsx3146 power 0.081 0.5 -> 0.285 Inexact Rounded -pwsx3147 power 0.82 0.5 -> 0.906 Inexact Rounded -pwsx3148 power 0.082 0.5 -> 0.286 Inexact Rounded -pwsx3149 power 0.83 0.5 -> 0.911 Inexact Rounded -pwsx3150 power 0.083 0.5 -> 0.288 Inexact Rounded -pwsx3151 power 0.84 0.5 -> 0.917 Inexact Rounded -pwsx3152 power 0.084 0.5 -> 0.290 Inexact Rounded -pwsx3153 power 0.85 0.5 -> 0.922 Inexact Rounded -pwsx3154 power 0.085 0.5 -> 0.292 Inexact Rounded -pwsx3155 power 0.86 0.5 -> 0.927 Inexact Rounded -pwsx3156 power 0.086 0.5 -> 0.293 Inexact Rounded -pwsx3157 power 0.87 0.5 -> 0.933 Inexact Rounded -pwsx3158 power 0.087 0.5 -> 0.295 Inexact Rounded -pwsx3159 power 0.88 0.5 -> 0.938 Inexact Rounded -pwsx3160 power 0.088 0.5 -> 0.297 Inexact Rounded -pwsx3161 power 0.89 0.5 -> 0.943 Inexact Rounded -pwsx3162 power 0.089 0.5 -> 0.298 Inexact Rounded -pwsx3163 power 0.91 0.5 -> 0.954 Inexact Rounded -pwsx3164 power 0.091 0.5 -> 0.302 Inexact Rounded -pwsx3165 power 0.92 0.5 -> 0.959 Inexact Rounded -pwsx3166 power 0.092 0.5 -> 0.303 Inexact Rounded -pwsx3167 power 0.93 0.5 -> 0.964 Inexact Rounded -pwsx3168 power 0.093 0.5 -> 0.305 Inexact Rounded -pwsx3169 power 0.94 0.5 -> 0.970 Inexact Rounded -pwsx3170 power 0.094 0.5 -> 0.307 Inexact Rounded -pwsx3171 power 0.95 0.5 -> 0.975 Inexact Rounded -pwsx3172 power 0.095 0.5 -> 0.308 Inexact Rounded -pwsx3173 power 0.96 0.5 -> 0.980 Inexact Rounded -pwsx3174 power 0.096 0.5 -> 0.310 Inexact Rounded -pwsx3175 power 0.97 0.5 -> 0.985 Inexact Rounded -pwsx3176 power 0.097 0.5 -> 0.311 Inexact Rounded -pwsx3177 power 0.98 0.5 -> 0.990 Inexact Rounded -pwsx3178 power 0.098 0.5 -> 0.313 Inexact Rounded -pwsx3179 power 0.99 0.5 -> 0.995 Inexact Rounded -pwsx3180 power 0.099 0.5 -> 0.315 Inexact Rounded -pwsx3181 power 0.101 0.5 -> 0.318 Inexact Rounded -pwsx3182 power 0.0101 0.5 -> 0.100 Inexact Rounded -pwsx3183 power 0.102 0.5 -> 0.319 Inexact Rounded -pwsx3184 power 0.0102 0.5 -> 0.101 Inexact Rounded -pwsx3185 power 0.103 0.5 -> 0.321 Inexact Rounded -pwsx3186 power 0.0103 0.5 -> 0.101 Inexact Rounded -pwsx3187 power 0.104 0.5 -> 0.322 Inexact Rounded -pwsx3188 power 0.0104 0.5 -> 0.102 Inexact Rounded -pwsx3189 power 0.105 0.5 -> 0.324 Inexact Rounded -pwsx3190 power 0.0105 0.5 -> 0.102 Inexact Rounded -pwsx3191 power 0.106 0.5 -> 0.326 Inexact Rounded -pwsx3192 power 0.0106 0.5 -> 0.103 Inexact Rounded -pwsx3193 power 0.107 0.5 -> 0.327 Inexact Rounded -pwsx3194 power 0.0107 0.5 -> 0.103 Inexact Rounded -pwsx3195 power 0.108 0.5 -> 0.329 Inexact Rounded -pwsx3196 power 0.0108 0.5 -> 0.104 Inexact Rounded -pwsx3197 power 0.109 0.5 -> 0.330 Inexact Rounded -pwsx3198 power 0.0109 0.5 -> 0.104 Inexact Rounded -pwsx3199 power 0.111 0.5 -> 0.333 Inexact Rounded -pwsx3200 power 0.0111 0.5 -> 0.105 Inexact Rounded -pwsx3201 power 0.112 0.5 -> 0.335 Inexact Rounded -pwsx3202 power 0.0112 0.5 -> 0.106 Inexact Rounded -pwsx3203 power 0.113 0.5 -> 0.336 Inexact Rounded -pwsx3204 power 0.0113 0.5 -> 0.106 Inexact Rounded -pwsx3205 power 0.114 0.5 -> 0.338 Inexact Rounded -pwsx3206 power 0.0114 0.5 -> 0.107 Inexact Rounded -pwsx3207 power 0.115 0.5 -> 0.339 Inexact Rounded -pwsx3208 power 0.0115 0.5 -> 0.107 Inexact Rounded -pwsx3209 power 0.116 0.5 -> 0.341 Inexact Rounded -pwsx3210 power 0.0116 0.5 -> 0.108 Inexact Rounded -pwsx3211 power 0.117 0.5 -> 0.342 Inexact Rounded -pwsx3212 power 0.0117 0.5 -> 0.108 Inexact Rounded -pwsx3213 power 0.118 0.5 -> 0.344 Inexact Rounded -pwsx3214 power 0.0118 0.5 -> 0.109 Inexact Rounded -pwsx3215 power 0.119 0.5 -> 0.345 Inexact Rounded -pwsx3216 power 0.0119 0.5 -> 0.109 Inexact Rounded -pwsx3217 power 0.121 0.5 -> 0.348 Inexact Rounded -pwsx3218 power 0.0121 0.5 -> 0.110 Inexact Rounded -pwsx3219 power 0.122 0.5 -> 0.349 Inexact Rounded -pwsx3220 power 0.0122 0.5 -> 0.110 Inexact Rounded -pwsx3221 power 0.123 0.5 -> 0.351 Inexact Rounded -pwsx3222 power 0.0123 0.5 -> 0.111 Inexact Rounded -pwsx3223 power 0.124 0.5 -> 0.352 Inexact Rounded -pwsx3224 power 0.0124 0.5 -> 0.111 Inexact Rounded -pwsx3225 power 0.125 0.5 -> 0.354 Inexact Rounded -pwsx3226 power 0.0125 0.5 -> 0.112 Inexact Rounded -pwsx3227 power 0.126 0.5 -> 0.355 Inexact Rounded -pwsx3228 power 0.0126 0.5 -> 0.112 Inexact Rounded -pwsx3229 power 0.127 0.5 -> 0.356 Inexact Rounded -pwsx3230 power 0.0127 0.5 -> 0.113 Inexact Rounded -pwsx3231 power 0.128 0.5 -> 0.358 Inexact Rounded -pwsx3232 power 0.0128 0.5 -> 0.113 Inexact Rounded -pwsx3233 power 0.129 0.5 -> 0.359 Inexact Rounded -pwsx3234 power 0.0129 0.5 -> 0.114 Inexact Rounded -pwsx3235 power 0.131 0.5 -> 0.362 Inexact Rounded -pwsx3236 power 0.0131 0.5 -> 0.114 Inexact Rounded -pwsx3237 power 0.132 0.5 -> 0.363 Inexact Rounded -pwsx3238 power 0.0132 0.5 -> 0.115 Inexact Rounded -pwsx3239 power 0.133 0.5 -> 0.365 Inexact Rounded -pwsx3240 power 0.0133 0.5 -> 0.115 Inexact Rounded -pwsx3241 power 0.134 0.5 -> 0.366 Inexact Rounded -pwsx3242 power 0.0134 0.5 -> 0.116 Inexact Rounded -pwsx3243 power 0.135 0.5 -> 0.367 Inexact Rounded -pwsx3244 power 0.0135 0.5 -> 0.116 Inexact Rounded -pwsx3245 power 0.136 0.5 -> 0.369 Inexact Rounded -pwsx3246 power 0.0136 0.5 -> 0.117 Inexact Rounded -pwsx3247 power 0.137 0.5 -> 0.370 Inexact Rounded -pwsx3248 power 0.0137 0.5 -> 0.117 Inexact Rounded -pwsx3249 power 0.138 0.5 -> 0.371 Inexact Rounded -pwsx3250 power 0.0138 0.5 -> 0.117 Inexact Rounded -pwsx3251 power 0.139 0.5 -> 0.373 Inexact Rounded -pwsx3252 power 0.0139 0.5 -> 0.118 Inexact Rounded -pwsx3253 power 0.141 0.5 -> 0.375 Inexact Rounded -pwsx3254 power 0.0141 0.5 -> 0.119 Inexact Rounded -pwsx3255 power 0.142 0.5 -> 0.377 Inexact Rounded -pwsx3256 power 0.0142 0.5 -> 0.119 Inexact Rounded -pwsx3257 power 0.143 0.5 -> 0.378 Inexact Rounded -pwsx3258 power 0.0143 0.5 -> 0.120 Inexact Rounded -pwsx3259 power 0.144 0.5 -> 0.379 Inexact Rounded -pwsx3260 power 0.0144 0.5 -> 0.120 Inexact Rounded -pwsx3261 power 0.145 0.5 -> 0.381 Inexact Rounded -pwsx3262 power 0.0145 0.5 -> 0.120 Inexact Rounded -pwsx3263 power 0.146 0.5 -> 0.382 Inexact Rounded -pwsx3264 power 0.0146 0.5 -> 0.121 Inexact Rounded -pwsx3265 power 0.147 0.5 -> 0.383 Inexact Rounded -pwsx3266 power 0.0147 0.5 -> 0.121 Inexact Rounded -pwsx3267 power 0.148 0.5 -> 0.385 Inexact Rounded -pwsx3268 power 0.0148 0.5 -> 0.122 Inexact Rounded -pwsx3269 power 0.149 0.5 -> 0.386 Inexact Rounded -pwsx3270 power 0.0149 0.5 -> 0.122 Inexact Rounded -pwsx3271 power 0.151 0.5 -> 0.389 Inexact Rounded -pwsx3272 power 0.0151 0.5 -> 0.123 Inexact Rounded -pwsx3273 power 0.152 0.5 -> 0.390 Inexact Rounded -pwsx3274 power 0.0152 0.5 -> 0.123 Inexact Rounded -pwsx3275 power 0.153 0.5 -> 0.391 Inexact Rounded -pwsx3276 power 0.0153 0.5 -> 0.124 Inexact Rounded -pwsx3277 power 0.154 0.5 -> 0.392 Inexact Rounded -pwsx3278 power 0.0154 0.5 -> 0.124 Inexact Rounded -pwsx3279 power 0.155 0.5 -> 0.394 Inexact Rounded -pwsx3280 power 0.0155 0.5 -> 0.124 Inexact Rounded -pwsx3281 power 0.156 0.5 -> 0.395 Inexact Rounded -pwsx3282 power 0.0156 0.5 -> 0.125 Inexact Rounded -pwsx3283 power 0.157 0.5 -> 0.396 Inexact Rounded -pwsx3284 power 0.0157 0.5 -> 0.125 Inexact Rounded -pwsx3285 power 0.158 0.5 -> 0.397 Inexact Rounded -pwsx3286 power 0.0158 0.5 -> 0.126 Inexact Rounded -pwsx3287 power 0.159 0.5 -> 0.399 Inexact Rounded -pwsx3288 power 0.0159 0.5 -> 0.126 Inexact Rounded -pwsx3289 power 0.161 0.5 -> 0.401 Inexact Rounded -pwsx3290 power 0.0161 0.5 -> 0.127 Inexact Rounded -pwsx3291 power 0.162 0.5 -> 0.402 Inexact Rounded -pwsx3292 power 0.0162 0.5 -> 0.127 Inexact Rounded -pwsx3293 power 0.163 0.5 -> 0.404 Inexact Rounded -pwsx3294 power 0.0163 0.5 -> 0.128 Inexact Rounded -pwsx3295 power 0.164 0.5 -> 0.405 Inexact Rounded -pwsx3296 power 0.0164 0.5 -> 0.128 Inexact Rounded -pwsx3297 power 0.165 0.5 -> 0.406 Inexact Rounded -pwsx3298 power 0.0165 0.5 -> 0.128 Inexact Rounded -pwsx3299 power 0.166 0.5 -> 0.407 Inexact Rounded -pwsx3300 power 0.0166 0.5 -> 0.129 Inexact Rounded -pwsx3301 power 0.167 0.5 -> 0.409 Inexact Rounded -pwsx3302 power 0.0167 0.5 -> 0.129 Inexact Rounded -pwsx3303 power 0.168 0.5 -> 0.410 Inexact Rounded -pwsx3304 power 0.0168 0.5 -> 0.130 Inexact Rounded -pwsx3305 power 0.169 0.5 -> 0.411 Inexact Rounded -pwsx3306 power 0.0169 0.5 -> 0.130 Inexact Rounded -pwsx3307 power 0.171 0.5 -> 0.414 Inexact Rounded -pwsx3308 power 0.0171 0.5 -> 0.131 Inexact Rounded -pwsx3309 power 0.172 0.5 -> 0.415 Inexact Rounded -pwsx3310 power 0.0172 0.5 -> 0.131 Inexact Rounded -pwsx3311 power 0.173 0.5 -> 0.416 Inexact Rounded -pwsx3312 power 0.0173 0.5 -> 0.132 Inexact Rounded -pwsx3313 power 0.174 0.5 -> 0.417 Inexact Rounded -pwsx3314 power 0.0174 0.5 -> 0.132 Inexact Rounded -pwsx3315 power 0.175 0.5 -> 0.418 Inexact Rounded -pwsx3316 power 0.0175 0.5 -> 0.132 Inexact Rounded -pwsx3317 power 0.176 0.5 -> 0.420 Inexact Rounded -pwsx3318 power 0.0176 0.5 -> 0.133 Inexact Rounded -pwsx3319 power 0.177 0.5 -> 0.421 Inexact Rounded -pwsx3320 power 0.0177 0.5 -> 0.133 Inexact Rounded -pwsx3321 power 0.178 0.5 -> 0.422 Inexact Rounded -pwsx3322 power 0.0178 0.5 -> 0.133 Inexact Rounded -pwsx3323 power 0.179 0.5 -> 0.423 Inexact Rounded -pwsx3324 power 0.0179 0.5 -> 0.134 Inexact Rounded -pwsx3325 power 0.181 0.5 -> 0.425 Inexact Rounded -pwsx3326 power 0.0181 0.5 -> 0.135 Inexact Rounded -pwsx3327 power 0.182 0.5 -> 0.427 Inexact Rounded -pwsx3328 power 0.0182 0.5 -> 0.135 Inexact Rounded -pwsx3329 power 0.183 0.5 -> 0.428 Inexact Rounded -pwsx3330 power 0.0183 0.5 -> 0.135 Inexact Rounded -pwsx3331 power 0.184 0.5 -> 0.429 Inexact Rounded -pwsx3332 power 0.0184 0.5 -> 0.136 Inexact Rounded -pwsx3333 power 0.185 0.5 -> 0.430 Inexact Rounded -pwsx3334 power 0.0185 0.5 -> 0.136 Inexact Rounded -pwsx3335 power 0.186 0.5 -> 0.431 Inexact Rounded -pwsx3336 power 0.0186 0.5 -> 0.136 Inexact Rounded -pwsx3337 power 0.187 0.5 -> 0.432 Inexact Rounded -pwsx3338 power 0.0187 0.5 -> 0.137 Inexact Rounded -pwsx3339 power 0.188 0.5 -> 0.434 Inexact Rounded -pwsx3340 power 0.0188 0.5 -> 0.137 Inexact Rounded -pwsx3341 power 0.189 0.5 -> 0.435 Inexact Rounded -pwsx3342 power 0.0189 0.5 -> 0.137 Inexact Rounded -pwsx3343 power 0.191 0.5 -> 0.437 Inexact Rounded -pwsx3344 power 0.0191 0.5 -> 0.138 Inexact Rounded -pwsx3345 power 0.192 0.5 -> 0.438 Inexact Rounded -pwsx3346 power 0.0192 0.5 -> 0.139 Inexact Rounded -pwsx3347 power 0.193 0.5 -> 0.439 Inexact Rounded -pwsx3348 power 0.0193 0.5 -> 0.139 Inexact Rounded -pwsx3349 power 0.194 0.5 -> 0.440 Inexact Rounded -pwsx3350 power 0.0194 0.5 -> 0.139 Inexact Rounded -pwsx3351 power 0.195 0.5 -> 0.442 Inexact Rounded -pwsx3352 power 0.0195 0.5 -> 0.140 Inexact Rounded -pwsx3353 power 0.196 0.5 -> 0.443 Inexact Rounded -pwsx3354 power 0.0196 0.5 -> 0.140 Inexact Rounded -pwsx3355 power 0.197 0.5 -> 0.444 Inexact Rounded -pwsx3356 power 0.0197 0.5 -> 0.140 Inexact Rounded -pwsx3357 power 0.198 0.5 -> 0.445 Inexact Rounded -pwsx3358 power 0.0198 0.5 -> 0.141 Inexact Rounded -pwsx3359 power 0.199 0.5 -> 0.446 Inexact Rounded -pwsx3360 power 0.0199 0.5 -> 0.141 Inexact Rounded -pwsx3361 power 0.201 0.5 -> 0.448 Inexact Rounded -pwsx3362 power 0.0201 0.5 -> 0.142 Inexact Rounded -pwsx3363 power 0.202 0.5 -> 0.449 Inexact Rounded -pwsx3364 power 0.0202 0.5 -> 0.142 Inexact Rounded -pwsx3365 power 0.203 0.5 -> 0.451 Inexact Rounded -pwsx3366 power 0.0203 0.5 -> 0.142 Inexact Rounded -pwsx3367 power 0.204 0.5 -> 0.452 Inexact Rounded -pwsx3368 power 0.0204 0.5 -> 0.143 Inexact Rounded -pwsx3369 power 0.205 0.5 -> 0.453 Inexact Rounded -pwsx3370 power 0.0205 0.5 -> 0.143 Inexact Rounded -pwsx3371 power 0.206 0.5 -> 0.454 Inexact Rounded -pwsx3372 power 0.0206 0.5 -> 0.144 Inexact Rounded -pwsx3373 power 0.207 0.5 -> 0.455 Inexact Rounded -pwsx3374 power 0.0207 0.5 -> 0.144 Inexact Rounded -pwsx3375 power 0.208 0.5 -> 0.456 Inexact Rounded -pwsx3376 power 0.0208 0.5 -> 0.144 Inexact Rounded -pwsx3377 power 0.209 0.5 -> 0.457 Inexact Rounded -pwsx3378 power 0.0209 0.5 -> 0.145 Inexact Rounded -pwsx3379 power 0.211 0.5 -> 0.459 Inexact Rounded -pwsx3380 power 0.0211 0.5 -> 0.145 Inexact Rounded -pwsx3381 power 0.212 0.5 -> 0.460 Inexact Rounded -pwsx3382 power 0.0212 0.5 -> 0.146 Inexact Rounded -pwsx3383 power 0.213 0.5 -> 0.462 Inexact Rounded -pwsx3384 power 0.0213 0.5 -> 0.146 Inexact Rounded -pwsx3385 power 0.214 0.5 -> 0.463 Inexact Rounded -pwsx3386 power 0.0214 0.5 -> 0.146 Inexact Rounded -pwsx3387 power 0.215 0.5 -> 0.464 Inexact Rounded -pwsx3388 power 0.0215 0.5 -> 0.147 Inexact Rounded -pwsx3389 power 0.216 0.5 -> 0.465 Inexact Rounded -pwsx3390 power 0.0216 0.5 -> 0.147 Inexact Rounded -pwsx3391 power 0.217 0.5 -> 0.466 Inexact Rounded -pwsx3392 power 0.0217 0.5 -> 0.147 Inexact Rounded -pwsx3393 power 0.218 0.5 -> 0.467 Inexact Rounded -pwsx3394 power 0.0218 0.5 -> 0.148 Inexact Rounded -pwsx3395 power 0.219 0.5 -> 0.468 Inexact Rounded -pwsx3396 power 0.0219 0.5 -> 0.148 Inexact Rounded -pwsx3397 power 0.221 0.5 -> 0.470 Inexact Rounded -pwsx3398 power 0.0221 0.5 -> 0.149 Inexact Rounded -pwsx3399 power 0.222 0.5 -> 0.471 Inexact Rounded -pwsx3400 power 0.0222 0.5 -> 0.149 Inexact Rounded -pwsx3401 power 0.223 0.5 -> 0.472 Inexact Rounded -pwsx3402 power 0.0223 0.5 -> 0.149 Inexact Rounded -pwsx3403 power 0.224 0.5 -> 0.473 Inexact Rounded -pwsx3404 power 0.0224 0.5 -> 0.150 Inexact Rounded -pwsx3405 power 0.225 0.5 -> 0.474 Inexact Rounded -pwsx3406 power 0.0225 0.5 -> 0.150 Inexact Rounded -pwsx3407 power 0.226 0.5 -> 0.475 Inexact Rounded -pwsx3408 power 0.0226 0.5 -> 0.150 Inexact Rounded -pwsx3409 power 0.227 0.5 -> 0.476 Inexact Rounded -pwsx3410 power 0.0227 0.5 -> 0.151 Inexact Rounded -pwsx3411 power 0.228 0.5 -> 0.477 Inexact Rounded -pwsx3412 power 0.0228 0.5 -> 0.151 Inexact Rounded -pwsx3413 power 0.229 0.5 -> 0.479 Inexact Rounded -pwsx3414 power 0.0229 0.5 -> 0.151 Inexact Rounded -pwsx3415 power 0.231 0.5 -> 0.481 Inexact Rounded -pwsx3416 power 0.0231 0.5 -> 0.152 Inexact Rounded -pwsx3417 power 0.232 0.5 -> 0.482 Inexact Rounded -pwsx3418 power 0.0232 0.5 -> 0.152 Inexact Rounded -pwsx3419 power 0.233 0.5 -> 0.483 Inexact Rounded -pwsx3420 power 0.0233 0.5 -> 0.153 Inexact Rounded -pwsx3421 power 0.234 0.5 -> 0.484 Inexact Rounded -pwsx3422 power 0.0234 0.5 -> 0.153 Inexact Rounded -pwsx3423 power 0.235 0.5 -> 0.485 Inexact Rounded -pwsx3424 power 0.0235 0.5 -> 0.153 Inexact Rounded -pwsx3425 power 0.236 0.5 -> 0.486 Inexact Rounded -pwsx3426 power 0.0236 0.5 -> 0.154 Inexact Rounded -pwsx3427 power 0.237 0.5 -> 0.487 Inexact Rounded -pwsx3428 power 0.0237 0.5 -> 0.154 Inexact Rounded -pwsx3429 power 0.238 0.5 -> 0.488 Inexact Rounded -pwsx3430 power 0.0238 0.5 -> 0.154 Inexact Rounded -pwsx3431 power 0.239 0.5 -> 0.489 Inexact Rounded -pwsx3432 power 0.0239 0.5 -> 0.155 Inexact Rounded -pwsx3433 power 0.241 0.5 -> 0.491 Inexact Rounded -pwsx3434 power 0.0241 0.5 -> 0.155 Inexact Rounded -pwsx3435 power 0.242 0.5 -> 0.492 Inexact Rounded -pwsx3436 power 0.0242 0.5 -> 0.156 Inexact Rounded -pwsx3437 power 0.243 0.5 -> 0.493 Inexact Rounded -pwsx3438 power 0.0243 0.5 -> 0.156 Inexact Rounded -pwsx3439 power 0.244 0.5 -> 0.494 Inexact Rounded -pwsx3440 power 0.0244 0.5 -> 0.156 Inexact Rounded -pwsx3441 power 0.245 0.5 -> 0.495 Inexact Rounded -pwsx3442 power 0.0245 0.5 -> 0.157 Inexact Rounded -pwsx3443 power 0.246 0.5 -> 0.496 Inexact Rounded -pwsx3444 power 0.0246 0.5 -> 0.157 Inexact Rounded -pwsx3445 power 0.247 0.5 -> 0.497 Inexact Rounded -pwsx3446 power 0.0247 0.5 -> 0.157 Inexact Rounded -pwsx3447 power 0.248 0.5 -> 0.498 Inexact Rounded -pwsx3448 power 0.0248 0.5 -> 0.157 Inexact Rounded -pwsx3449 power 0.249 0.5 -> 0.499 Inexact Rounded -pwsx3450 power 0.0249 0.5 -> 0.158 Inexact Rounded -pwsx3451 power 0.251 0.5 -> 0.501 Inexact Rounded -pwsx3452 power 0.0251 0.5 -> 0.158 Inexact Rounded -pwsx3453 power 0.252 0.5 -> 0.502 Inexact Rounded -pwsx3454 power 0.0252 0.5 -> 0.159 Inexact Rounded -pwsx3455 power 0.253 0.5 -> 0.503 Inexact Rounded -pwsx3456 power 0.0253 0.5 -> 0.159 Inexact Rounded -pwsx3457 power 0.254 0.5 -> 0.504 Inexact Rounded -pwsx3458 power 0.0254 0.5 -> 0.159 Inexact Rounded -pwsx3459 power 0.255 0.5 -> 0.505 Inexact Rounded -pwsx3460 power 0.0255 0.5 -> 0.160 Inexact Rounded -pwsx3461 power 0.256 0.5 -> 0.506 Inexact Rounded -pwsx3462 power 0.0256 0.5 -> 0.160 Inexact Rounded -pwsx3463 power 0.257 0.5 -> 0.507 Inexact Rounded -pwsx3464 power 0.0257 0.5 -> 0.160 Inexact Rounded -pwsx3465 power 0.258 0.5 -> 0.508 Inexact Rounded -pwsx3466 power 0.0258 0.5 -> 0.161 Inexact Rounded -pwsx3467 power 0.259 0.5 -> 0.509 Inexact Rounded -pwsx3468 power 0.0259 0.5 -> 0.161 Inexact Rounded -pwsx3469 power 0.261 0.5 -> 0.511 Inexact Rounded -pwsx3470 power 0.0261 0.5 -> 0.162 Inexact Rounded -pwsx3471 power 0.262 0.5 -> 0.512 Inexact Rounded -pwsx3472 power 0.0262 0.5 -> 0.162 Inexact Rounded -pwsx3473 power 0.263 0.5 -> 0.513 Inexact Rounded -pwsx3474 power 0.0263 0.5 -> 0.162 Inexact Rounded -pwsx3475 power 0.264 0.5 -> 0.514 Inexact Rounded -pwsx3476 power 0.0264 0.5 -> 0.162 Inexact Rounded -pwsx3477 power 0.265 0.5 -> 0.515 Inexact Rounded -pwsx3478 power 0.0265 0.5 -> 0.163 Inexact Rounded -pwsx3479 power 0.266 0.5 -> 0.516 Inexact Rounded -pwsx3480 power 0.0266 0.5 -> 0.163 Inexact Rounded -pwsx3481 power 0.267 0.5 -> 0.517 Inexact Rounded -pwsx3482 power 0.0267 0.5 -> 0.163 Inexact Rounded -pwsx3483 power 0.268 0.5 -> 0.518 Inexact Rounded -pwsx3484 power 0.0268 0.5 -> 0.164 Inexact Rounded -pwsx3485 power 0.269 0.5 -> 0.519 Inexact Rounded -pwsx3486 power 0.0269 0.5 -> 0.164 Inexact Rounded -pwsx3487 power 0.271 0.5 -> 0.521 Inexact Rounded -pwsx3488 power 0.0271 0.5 -> 0.165 Inexact Rounded -pwsx3489 power 0.272 0.5 -> 0.522 Inexact Rounded -pwsx3490 power 0.0272 0.5 -> 0.165 Inexact Rounded -pwsx3491 power 0.273 0.5 -> 0.522 Inexact Rounded -pwsx3492 power 0.0273 0.5 -> 0.165 Inexact Rounded -pwsx3493 power 0.274 0.5 -> 0.523 Inexact Rounded -pwsx3494 power 0.0274 0.5 -> 0.166 Inexact Rounded -pwsx3495 power 0.275 0.5 -> 0.524 Inexact Rounded -pwsx3496 power 0.0275 0.5 -> 0.166 Inexact Rounded -pwsx3497 power 0.276 0.5 -> 0.525 Inexact Rounded -pwsx3498 power 0.0276 0.5 -> 0.166 Inexact Rounded -pwsx3499 power 0.277 0.5 -> 0.526 Inexact Rounded -pwsx3500 power 0.0277 0.5 -> 0.166 Inexact Rounded -pwsx3501 power 0.278 0.5 -> 0.527 Inexact Rounded -pwsx3502 power 0.0278 0.5 -> 0.167 Inexact Rounded -pwsx3503 power 0.279 0.5 -> 0.528 Inexact Rounded -pwsx3504 power 0.0279 0.5 -> 0.167 Inexact Rounded -pwsx3505 power 0.281 0.5 -> 0.530 Inexact Rounded -pwsx3506 power 0.0281 0.5 -> 0.168 Inexact Rounded -pwsx3507 power 0.282 0.5 -> 0.531 Inexact Rounded -pwsx3508 power 0.0282 0.5 -> 0.168 Inexact Rounded -pwsx3509 power 0.283 0.5 -> 0.532 Inexact Rounded -pwsx3510 power 0.0283 0.5 -> 0.168 Inexact Rounded -pwsx3511 power 0.284 0.5 -> 0.533 Inexact Rounded -pwsx3512 power 0.0284 0.5 -> 0.169 Inexact Rounded -pwsx3513 power 0.285 0.5 -> 0.534 Inexact Rounded -pwsx3514 power 0.0285 0.5 -> 0.169 Inexact Rounded -pwsx3515 power 0.286 0.5 -> 0.535 Inexact Rounded -pwsx3516 power 0.0286 0.5 -> 0.169 Inexact Rounded -pwsx3517 power 0.287 0.5 -> 0.536 Inexact Rounded -pwsx3518 power 0.0287 0.5 -> 0.169 Inexact Rounded -pwsx3519 power 0.288 0.5 -> 0.537 Inexact Rounded -pwsx3520 power 0.0288 0.5 -> 0.170 Inexact Rounded -pwsx3521 power 0.289 0.5 -> 0.538 Inexact Rounded -pwsx3522 power 0.0289 0.5 -> 0.170 Inexact Rounded -pwsx3523 power 0.291 0.5 -> 0.539 Inexact Rounded -pwsx3524 power 0.0291 0.5 -> 0.171 Inexact Rounded -pwsx3525 power 0.292 0.5 -> 0.540 Inexact Rounded -pwsx3526 power 0.0292 0.5 -> 0.171 Inexact Rounded -pwsx3527 power 0.293 0.5 -> 0.541 Inexact Rounded -pwsx3528 power 0.0293 0.5 -> 0.171 Inexact Rounded -pwsx3529 power 0.294 0.5 -> 0.542 Inexact Rounded -pwsx3530 power 0.0294 0.5 -> 0.171 Inexact Rounded -pwsx3531 power 0.295 0.5 -> 0.543 Inexact Rounded -pwsx3532 power 0.0295 0.5 -> 0.172 Inexact Rounded -pwsx3533 power 0.296 0.5 -> 0.544 Inexact Rounded -pwsx3534 power 0.0296 0.5 -> 0.172 Inexact Rounded -pwsx3535 power 0.297 0.5 -> 0.545 Inexact Rounded -pwsx3536 power 0.0297 0.5 -> 0.172 Inexact Rounded -pwsx3537 power 0.298 0.5 -> 0.546 Inexact Rounded -pwsx3538 power 0.0298 0.5 -> 0.173 Inexact Rounded -pwsx3539 power 0.299 0.5 -> 0.547 Inexact Rounded -pwsx3540 power 0.0299 0.5 -> 0.173 Inexact Rounded -pwsx3541 power 0.301 0.5 -> 0.549 Inexact Rounded -pwsx3542 power 0.0301 0.5 -> 0.173 Inexact Rounded -pwsx3543 power 0.302 0.5 -> 0.550 Inexact Rounded -pwsx3544 power 0.0302 0.5 -> 0.174 Inexact Rounded -pwsx3545 power 0.303 0.5 -> 0.550 Inexact Rounded -pwsx3546 power 0.0303 0.5 -> 0.174 Inexact Rounded -pwsx3547 power 0.304 0.5 -> 0.551 Inexact Rounded -pwsx3548 power 0.0304 0.5 -> 0.174 Inexact Rounded -pwsx3549 power 0.305 0.5 -> 0.552 Inexact Rounded -pwsx3550 power 0.0305 0.5 -> 0.175 Inexact Rounded -pwsx3551 power 0.306 0.5 -> 0.553 Inexact Rounded -pwsx3552 power 0.0306 0.5 -> 0.175 Inexact Rounded -pwsx3553 power 0.307 0.5 -> 0.554 Inexact Rounded -pwsx3554 power 0.0307 0.5 -> 0.175 Inexact Rounded -pwsx3555 power 0.308 0.5 -> 0.555 Inexact Rounded -pwsx3556 power 0.0308 0.5 -> 0.175 Inexact Rounded -pwsx3557 power 0.309 0.5 -> 0.556 Inexact Rounded -pwsx3558 power 0.0309 0.5 -> 0.176 Inexact Rounded -pwsx3559 power 0.311 0.5 -> 0.558 Inexact Rounded -pwsx3560 power 0.0311 0.5 -> 0.176 Inexact Rounded -pwsx3561 power 0.312 0.5 -> 0.559 Inexact Rounded -pwsx3562 power 0.0312 0.5 -> 0.177 Inexact Rounded -pwsx3563 power 0.313 0.5 -> 0.559 Inexact Rounded -pwsx3564 power 0.0313 0.5 -> 0.177 Inexact Rounded -pwsx3565 power 0.314 0.5 -> 0.560 Inexact Rounded -pwsx3566 power 0.0314 0.5 -> 0.177 Inexact Rounded -pwsx3567 power 0.315 0.5 -> 0.561 Inexact Rounded -pwsx3568 power 0.0315 0.5 -> 0.177 Inexact Rounded -pwsx3569 power 0.316 0.5 -> 0.562 Inexact Rounded -pwsx3570 power 0.0316 0.5 -> 0.178 Inexact Rounded -pwsx3571 power 0.317 0.5 -> 0.563 Inexact Rounded -pwsx3572 power 0.0317 0.5 -> 0.178 Inexact Rounded -pwsx3573 power 0.318 0.5 -> 0.564 Inexact Rounded -pwsx3574 power 0.0318 0.5 -> 0.178 Inexact Rounded -pwsx3575 power 0.319 0.5 -> 0.565 Inexact Rounded -pwsx3576 power 0.0319 0.5 -> 0.179 Inexact Rounded -pwsx3577 power 0.321 0.5 -> 0.567 Inexact Rounded -pwsx3578 power 0.0321 0.5 -> 0.179 Inexact Rounded -pwsx3579 power 0.322 0.5 -> 0.567 Inexact Rounded -pwsx3580 power 0.0322 0.5 -> 0.179 Inexact Rounded -pwsx3581 power 0.323 0.5 -> 0.568 Inexact Rounded -pwsx3582 power 0.0323 0.5 -> 0.180 Inexact Rounded -pwsx3583 power 0.324 0.5 -> 0.569 Inexact Rounded -pwsx3584 power 0.0324 0.5 -> 0.180 Inexact Rounded -pwsx3585 power 0.325 0.5 -> 0.570 Inexact Rounded -pwsx3586 power 0.0325 0.5 -> 0.180 Inexact Rounded -pwsx3587 power 0.326 0.5 -> 0.571 Inexact Rounded -pwsx3588 power 0.0326 0.5 -> 0.181 Inexact Rounded -pwsx3589 power 0.327 0.5 -> 0.572 Inexact Rounded -pwsx3590 power 0.0327 0.5 -> 0.181 Inexact Rounded -pwsx3591 power 0.328 0.5 -> 0.573 Inexact Rounded -pwsx3592 power 0.0328 0.5 -> 0.181 Inexact Rounded -pwsx3593 power 0.329 0.5 -> 0.574 Inexact Rounded -pwsx3594 power 0.0329 0.5 -> 0.181 Inexact Rounded -pwsx3595 power 0.331 0.5 -> 0.575 Inexact Rounded -pwsx3596 power 0.0331 0.5 -> 0.182 Inexact Rounded -pwsx3597 power 0.332 0.5 -> 0.576 Inexact Rounded -pwsx3598 power 0.0332 0.5 -> 0.182 Inexact Rounded -pwsx3599 power 0.333 0.5 -> 0.577 Inexact Rounded -pwsx3600 power 0.0333 0.5 -> 0.182 Inexact Rounded -pwsx3601 power 0.334 0.5 -> 0.578 Inexact Rounded -pwsx3602 power 0.0334 0.5 -> 0.183 Inexact Rounded -pwsx3603 power 0.335 0.5 -> 0.579 Inexact Rounded -pwsx3604 power 0.0335 0.5 -> 0.183 Inexact Rounded -pwsx3605 power 0.336 0.5 -> 0.580 Inexact Rounded -pwsx3606 power 0.0336 0.5 -> 0.183 Inexact Rounded -pwsx3607 power 0.337 0.5 -> 0.581 Inexact Rounded -pwsx3608 power 0.0337 0.5 -> 0.184 Inexact Rounded -pwsx3609 power 0.338 0.5 -> 0.581 Inexact Rounded -pwsx3610 power 0.0338 0.5 -> 0.184 Inexact Rounded -pwsx3611 power 0.339 0.5 -> 0.582 Inexact Rounded -pwsx3612 power 0.0339 0.5 -> 0.184 Inexact Rounded -pwsx3613 power 0.341 0.5 -> 0.584 Inexact Rounded -pwsx3614 power 0.0341 0.5 -> 0.185 Inexact Rounded -pwsx3615 power 0.342 0.5 -> 0.585 Inexact Rounded -pwsx3616 power 0.0342 0.5 -> 0.185 Inexact Rounded -pwsx3617 power 0.343 0.5 -> 0.586 Inexact Rounded -pwsx3618 power 0.0343 0.5 -> 0.185 Inexact Rounded -pwsx3619 power 0.344 0.5 -> 0.587 Inexact Rounded -pwsx3620 power 0.0344 0.5 -> 0.185 Inexact Rounded -pwsx3621 power 0.345 0.5 -> 0.587 Inexact Rounded -pwsx3622 power 0.0345 0.5 -> 0.186 Inexact Rounded -pwsx3623 power 0.346 0.5 -> 0.588 Inexact Rounded -pwsx3624 power 0.0346 0.5 -> 0.186 Inexact Rounded -pwsx3625 power 0.347 0.5 -> 0.589 Inexact Rounded -pwsx3626 power 0.0347 0.5 -> 0.186 Inexact Rounded -pwsx3627 power 0.348 0.5 -> 0.590 Inexact Rounded -pwsx3628 power 0.0348 0.5 -> 0.187 Inexact Rounded -pwsx3629 power 0.349 0.5 -> 0.591 Inexact Rounded -pwsx3630 power 0.0349 0.5 -> 0.187 Inexact Rounded -pwsx3631 power 0.351 0.5 -> 0.592 Inexact Rounded -pwsx3632 power 0.0351 0.5 -> 0.187 Inexact Rounded -pwsx3633 power 0.352 0.5 -> 0.593 Inexact Rounded -pwsx3634 power 0.0352 0.5 -> 0.188 Inexact Rounded -pwsx3635 power 0.353 0.5 -> 0.594 Inexact Rounded -pwsx3636 power 0.0353 0.5 -> 0.188 Inexact Rounded -pwsx3637 power 0.354 0.5 -> 0.595 Inexact Rounded -pwsx3638 power 0.0354 0.5 -> 0.188 Inexact Rounded -pwsx3639 power 0.355 0.5 -> 0.596 Inexact Rounded -pwsx3640 power 0.0355 0.5 -> 0.188 Inexact Rounded -pwsx3641 power 0.356 0.5 -> 0.597 Inexact Rounded -pwsx3642 power 0.0356 0.5 -> 0.189 Inexact Rounded -pwsx3643 power 0.357 0.5 -> 0.597 Inexact Rounded -pwsx3644 power 0.0357 0.5 -> 0.189 Inexact Rounded -pwsx3645 power 0.358 0.5 -> 0.598 Inexact Rounded -pwsx3646 power 0.0358 0.5 -> 0.189 Inexact Rounded -pwsx3647 power 0.359 0.5 -> 0.599 Inexact Rounded -pwsx3648 power 0.0359 0.5 -> 0.189 Inexact Rounded -pwsx3649 power 0.361 0.5 -> 0.601 Inexact Rounded -pwsx3650 power 0.0361 0.5 -> 0.190 Inexact Rounded -pwsx3651 power 0.362 0.5 -> 0.602 Inexact Rounded -pwsx3652 power 0.0362 0.5 -> 0.190 Inexact Rounded -pwsx3653 power 0.363 0.5 -> 0.602 Inexact Rounded -pwsx3654 power 0.0363 0.5 -> 0.191 Inexact Rounded -pwsx3655 power 0.364 0.5 -> 0.603 Inexact Rounded -pwsx3656 power 0.0364 0.5 -> 0.191 Inexact Rounded -pwsx3657 power 0.365 0.5 -> 0.604 Inexact Rounded -pwsx3658 power 0.0365 0.5 -> 0.191 Inexact Rounded -pwsx3659 power 0.366 0.5 -> 0.605 Inexact Rounded -pwsx3660 power 0.0366 0.5 -> 0.191 Inexact Rounded -pwsx3661 power 0.367 0.5 -> 0.606 Inexact Rounded -pwsx3662 power 0.0367 0.5 -> 0.192 Inexact Rounded -pwsx3663 power 0.368 0.5 -> 0.607 Inexact Rounded -pwsx3664 power 0.0368 0.5 -> 0.192 Inexact Rounded -pwsx3665 power 0.369 0.5 -> 0.607 Inexact Rounded -pwsx3666 power 0.0369 0.5 -> 0.192 Inexact Rounded -pwsx3667 power 0.371 0.5 -> 0.609 Inexact Rounded -pwsx3668 power 0.0371 0.5 -> 0.193 Inexact Rounded -pwsx3669 power 0.372 0.5 -> 0.610 Inexact Rounded -pwsx3670 power 0.0372 0.5 -> 0.193 Inexact Rounded -pwsx3671 power 0.373 0.5 -> 0.611 Inexact Rounded -pwsx3672 power 0.0373 0.5 -> 0.193 Inexact Rounded -pwsx3673 power 0.374 0.5 -> 0.612 Inexact Rounded -pwsx3674 power 0.0374 0.5 -> 0.193 Inexact Rounded -pwsx3675 power 0.375 0.5 -> 0.612 Inexact Rounded -pwsx3676 power 0.0375 0.5 -> 0.194 Inexact Rounded -pwsx3677 power 0.376 0.5 -> 0.613 Inexact Rounded -pwsx3678 power 0.0376 0.5 -> 0.194 Inexact Rounded -pwsx3679 power 0.377 0.5 -> 0.614 Inexact Rounded -pwsx3680 power 0.0377 0.5 -> 0.194 Inexact Rounded -pwsx3681 power 0.378 0.5 -> 0.615 Inexact Rounded -pwsx3682 power 0.0378 0.5 -> 0.194 Inexact Rounded -pwsx3683 power 0.379 0.5 -> 0.616 Inexact Rounded -pwsx3684 power 0.0379 0.5 -> 0.195 Inexact Rounded -pwsx3685 power 0.381 0.5 -> 0.617 Inexact Rounded -pwsx3686 power 0.0381 0.5 -> 0.195 Inexact Rounded -pwsx3687 power 0.382 0.5 -> 0.618 Inexact Rounded -pwsx3688 power 0.0382 0.5 -> 0.195 Inexact Rounded -pwsx3689 power 0.383 0.5 -> 0.619 Inexact Rounded -pwsx3690 power 0.0383 0.5 -> 0.196 Inexact Rounded -pwsx3691 power 0.384 0.5 -> 0.620 Inexact Rounded -pwsx3692 power 0.0384 0.5 -> 0.196 Inexact Rounded -pwsx3693 power 0.385 0.5 -> 0.620 Inexact Rounded -pwsx3694 power 0.0385 0.5 -> 0.196 Inexact Rounded -pwsx3695 power 0.386 0.5 -> 0.621 Inexact Rounded -pwsx3696 power 0.0386 0.5 -> 0.196 Inexact Rounded -pwsx3697 power 0.387 0.5 -> 0.622 Inexact Rounded -pwsx3698 power 0.0387 0.5 -> 0.197 Inexact Rounded -pwsx3699 power 0.388 0.5 -> 0.623 Inexact Rounded -pwsx3700 power 0.0388 0.5 -> 0.197 Inexact Rounded -pwsx3701 power 0.389 0.5 -> 0.624 Inexact Rounded -pwsx3702 power 0.0389 0.5 -> 0.197 Inexact Rounded -pwsx3703 power 0.391 0.5 -> 0.625 Inexact Rounded -pwsx3704 power 0.0391 0.5 -> 0.198 Inexact Rounded -pwsx3705 power 0.392 0.5 -> 0.626 Inexact Rounded -pwsx3706 power 0.0392 0.5 -> 0.198 Inexact Rounded -pwsx3707 power 0.393 0.5 -> 0.627 Inexact Rounded -pwsx3708 power 0.0393 0.5 -> 0.198 Inexact Rounded -pwsx3709 power 0.394 0.5 -> 0.628 Inexact Rounded -pwsx3710 power 0.0394 0.5 -> 0.198 Inexact Rounded -pwsx3711 power 0.395 0.5 -> 0.628 Inexact Rounded -pwsx3712 power 0.0395 0.5 -> 0.199 Inexact Rounded -pwsx3713 power 0.396 0.5 -> 0.629 Inexact Rounded -pwsx3714 power 0.0396 0.5 -> 0.199 Inexact Rounded -pwsx3715 power 0.397 0.5 -> 0.630 Inexact Rounded -pwsx3716 power 0.0397 0.5 -> 0.199 Inexact Rounded -pwsx3717 power 0.398 0.5 -> 0.631 Inexact Rounded -pwsx3718 power 0.0398 0.5 -> 0.199 Inexact Rounded -pwsx3719 power 0.399 0.5 -> 0.632 Inexact Rounded -pwsx3720 power 0.0399 0.5 -> 0.200 Inexact Rounded -pwsx3721 power 0.401 0.5 -> 0.633 Inexact Rounded -pwsx3722 power 0.0401 0.5 -> 0.200 Inexact Rounded -pwsx3723 power 0.402 0.5 -> 0.634 Inexact Rounded -pwsx3724 power 0.0402 0.5 -> 0.200 Inexact Rounded -pwsx3725 power 0.403 0.5 -> 0.635 Inexact Rounded -pwsx3726 power 0.0403 0.5 -> 0.201 Inexact Rounded -pwsx3727 power 0.404 0.5 -> 0.636 Inexact Rounded -pwsx3728 power 0.0404 0.5 -> 0.201 Inexact Rounded -pwsx3729 power 0.405 0.5 -> 0.636 Inexact Rounded -pwsx3730 power 0.0405 0.5 -> 0.201 Inexact Rounded -pwsx3731 power 0.406 0.5 -> 0.637 Inexact Rounded -pwsx3732 power 0.0406 0.5 -> 0.201 Inexact Rounded -pwsx3733 power 0.407 0.5 -> 0.638 Inexact Rounded -pwsx3734 power 0.0407 0.5 -> 0.202 Inexact Rounded -pwsx3735 power 0.408 0.5 -> 0.639 Inexact Rounded -pwsx3736 power 0.0408 0.5 -> 0.202 Inexact Rounded -pwsx3737 power 0.409 0.5 -> 0.640 Inexact Rounded -pwsx3738 power 0.0409 0.5 -> 0.202 Inexact Rounded -pwsx3739 power 0.411 0.5 -> 0.641 Inexact Rounded -pwsx3740 power 0.0411 0.5 -> 0.203 Inexact Rounded -pwsx3741 power 0.412 0.5 -> 0.642 Inexact Rounded -pwsx3742 power 0.0412 0.5 -> 0.203 Inexact Rounded -pwsx3743 power 0.413 0.5 -> 0.643 Inexact Rounded -pwsx3744 power 0.0413 0.5 -> 0.203 Inexact Rounded -pwsx3745 power 0.414 0.5 -> 0.643 Inexact Rounded -pwsx3746 power 0.0414 0.5 -> 0.203 Inexact Rounded -pwsx3747 power 0.415 0.5 -> 0.644 Inexact Rounded -pwsx3748 power 0.0415 0.5 -> 0.204 Inexact Rounded -pwsx3749 power 0.416 0.5 -> 0.645 Inexact Rounded -pwsx3750 power 0.0416 0.5 -> 0.204 Inexact Rounded -pwsx3751 power 0.417 0.5 -> 0.646 Inexact Rounded -pwsx3752 power 0.0417 0.5 -> 0.204 Inexact Rounded -pwsx3753 power 0.418 0.5 -> 0.647 Inexact Rounded -pwsx3754 power 0.0418 0.5 -> 0.204 Inexact Rounded -pwsx3755 power 0.419 0.5 -> 0.647 Inexact Rounded -pwsx3756 power 0.0419 0.5 -> 0.205 Inexact Rounded -pwsx3757 power 0.421 0.5 -> 0.649 Inexact Rounded -pwsx3758 power 0.0421 0.5 -> 0.205 Inexact Rounded -pwsx3759 power 0.422 0.5 -> 0.650 Inexact Rounded -pwsx3760 power 0.0422 0.5 -> 0.205 Inexact Rounded -pwsx3761 power 0.423 0.5 -> 0.650 Inexact Rounded -pwsx3762 power 0.0423 0.5 -> 0.206 Inexact Rounded -pwsx3763 power 0.424 0.5 -> 0.651 Inexact Rounded -pwsx3764 power 0.0424 0.5 -> 0.206 Inexact Rounded -pwsx3765 power 0.425 0.5 -> 0.652 Inexact Rounded -pwsx3766 power 0.0425 0.5 -> 0.206 Inexact Rounded -pwsx3767 power 0.426 0.5 -> 0.653 Inexact Rounded -pwsx3768 power 0.0426 0.5 -> 0.206 Inexact Rounded -pwsx3769 power 0.427 0.5 -> 0.653 Inexact Rounded -pwsx3770 power 0.0427 0.5 -> 0.207 Inexact Rounded -pwsx3771 power 0.428 0.5 -> 0.654 Inexact Rounded -pwsx3772 power 0.0428 0.5 -> 0.207 Inexact Rounded -pwsx3773 power 0.429 0.5 -> 0.655 Inexact Rounded -pwsx3774 power 0.0429 0.5 -> 0.207 Inexact Rounded -pwsx3775 power 0.431 0.5 -> 0.657 Inexact Rounded -pwsx3776 power 0.0431 0.5 -> 0.208 Inexact Rounded -pwsx3777 power 0.432 0.5 -> 0.657 Inexact Rounded -pwsx3778 power 0.0432 0.5 -> 0.208 Inexact Rounded -pwsx3779 power 0.433 0.5 -> 0.658 Inexact Rounded -pwsx3780 power 0.0433 0.5 -> 0.208 Inexact Rounded -pwsx3781 power 0.434 0.5 -> 0.659 Inexact Rounded -pwsx3782 power 0.0434 0.5 -> 0.208 Inexact Rounded -pwsx3783 power 0.435 0.5 -> 0.660 Inexact Rounded -pwsx3784 power 0.0435 0.5 -> 0.209 Inexact Rounded -pwsx3785 power 0.436 0.5 -> 0.660 Inexact Rounded -pwsx3786 power 0.0436 0.5 -> 0.209 Inexact Rounded -pwsx3787 power 0.437 0.5 -> 0.661 Inexact Rounded -pwsx3788 power 0.0437 0.5 -> 0.209 Inexact Rounded -pwsx3789 power 0.438 0.5 -> 0.662 Inexact Rounded -pwsx3790 power 0.0438 0.5 -> 0.209 Inexact Rounded -pwsx3791 power 0.439 0.5 -> 0.663 Inexact Rounded -pwsx3792 power 0.0439 0.5 -> 0.210 Inexact Rounded -pwsx3793 power 0.441 0.5 -> 0.664 Inexact Rounded -pwsx3794 power 0.0441 0.5 -> 0.210 Inexact Rounded -pwsx3795 power 0.442 0.5 -> 0.665 Inexact Rounded -pwsx3796 power 0.0442 0.5 -> 0.210 Inexact Rounded -pwsx3797 power 0.443 0.5 -> 0.666 Inexact Rounded -pwsx3798 power 0.0443 0.5 -> 0.210 Inexact Rounded -pwsx3799 power 0.444 0.5 -> 0.666 Inexact Rounded -pwsx3800 power 0.0444 0.5 -> 0.211 Inexact Rounded -pwsx3801 power 0.445 0.5 -> 0.667 Inexact Rounded -pwsx3802 power 0.0445 0.5 -> 0.211 Inexact Rounded -pwsx3803 power 0.446 0.5 -> 0.668 Inexact Rounded -pwsx3804 power 0.0446 0.5 -> 0.211 Inexact Rounded -pwsx3805 power 0.447 0.5 -> 0.669 Inexact Rounded -pwsx3806 power 0.0447 0.5 -> 0.211 Inexact Rounded -pwsx3807 power 0.448 0.5 -> 0.669 Inexact Rounded -pwsx3808 power 0.0448 0.5 -> 0.212 Inexact Rounded -pwsx3809 power 0.449 0.5 -> 0.670 Inexact Rounded -pwsx3810 power 0.0449 0.5 -> 0.212 Inexact Rounded -pwsx3811 power 0.451 0.5 -> 0.672 Inexact Rounded -pwsx3812 power 0.0451 0.5 -> 0.212 Inexact Rounded -pwsx3813 power 0.452 0.5 -> 0.672 Inexact Rounded -pwsx3814 power 0.0452 0.5 -> 0.213 Inexact Rounded -pwsx3815 power 0.453 0.5 -> 0.673 Inexact Rounded -pwsx3816 power 0.0453 0.5 -> 0.213 Inexact Rounded -pwsx3817 power 0.454 0.5 -> 0.674 Inexact Rounded -pwsx3818 power 0.0454 0.5 -> 0.213 Inexact Rounded -pwsx3819 power 0.455 0.5 -> 0.675 Inexact Rounded -pwsx3820 power 0.0455 0.5 -> 0.213 Inexact Rounded -pwsx3821 power 0.456 0.5 -> 0.675 Inexact Rounded -pwsx3822 power 0.0456 0.5 -> 0.214 Inexact Rounded -pwsx3823 power 0.457 0.5 -> 0.676 Inexact Rounded -pwsx3824 power 0.0457 0.5 -> 0.214 Inexact Rounded -pwsx3825 power 0.458 0.5 -> 0.677 Inexact Rounded -pwsx3826 power 0.0458 0.5 -> 0.214 Inexact Rounded -pwsx3827 power 0.459 0.5 -> 0.677 Inexact Rounded -pwsx3828 power 0.0459 0.5 -> 0.214 Inexact Rounded -pwsx3829 power 0.461 0.5 -> 0.679 Inexact Rounded -pwsx3830 power 0.0461 0.5 -> 0.215 Inexact Rounded -pwsx3831 power 0.462 0.5 -> 0.680 Inexact Rounded -pwsx3832 power 0.0462 0.5 -> 0.215 Inexact Rounded -pwsx3833 power 0.463 0.5 -> 0.680 Inexact Rounded -pwsx3834 power 0.0463 0.5 -> 0.215 Inexact Rounded -pwsx3835 power 0.464 0.5 -> 0.681 Inexact Rounded -pwsx3836 power 0.0464 0.5 -> 0.215 Inexact Rounded -pwsx3837 power 0.465 0.5 -> 0.682 Inexact Rounded -pwsx3838 power 0.0465 0.5 -> 0.216 Inexact Rounded -pwsx3839 power 0.466 0.5 -> 0.683 Inexact Rounded -pwsx3840 power 0.0466 0.5 -> 0.216 Inexact Rounded -pwsx3841 power 0.467 0.5 -> 0.683 Inexact Rounded -pwsx3842 power 0.0467 0.5 -> 0.216 Inexact Rounded -pwsx3843 power 0.468 0.5 -> 0.684 Inexact Rounded -pwsx3844 power 0.0468 0.5 -> 0.216 Inexact Rounded -pwsx3845 power 0.469 0.5 -> 0.685 Inexact Rounded -pwsx3846 power 0.0469 0.5 -> 0.217 Inexact Rounded -pwsx3847 power 0.471 0.5 -> 0.686 Inexact Rounded -pwsx3848 power 0.0471 0.5 -> 0.217 Inexact Rounded -pwsx3849 power 0.472 0.5 -> 0.687 Inexact Rounded -pwsx3850 power 0.0472 0.5 -> 0.217 Inexact Rounded -pwsx3851 power 0.473 0.5 -> 0.688 Inexact Rounded -pwsx3852 power 0.0473 0.5 -> 0.217 Inexact Rounded -pwsx3853 power 0.474 0.5 -> 0.688 Inexact Rounded -pwsx3854 power 0.0474 0.5 -> 0.218 Inexact Rounded -pwsx3855 power 0.475 0.5 -> 0.689 Inexact Rounded -pwsx3856 power 0.0475 0.5 -> 0.218 Inexact Rounded -pwsx3857 power 0.476 0.5 -> 0.690 Inexact Rounded -pwsx3858 power 0.0476 0.5 -> 0.218 Inexact Rounded -pwsx3859 power 0.477 0.5 -> 0.691 Inexact Rounded -pwsx3860 power 0.0477 0.5 -> 0.218 Inexact Rounded -pwsx3861 power 0.478 0.5 -> 0.691 Inexact Rounded -pwsx3862 power 0.0478 0.5 -> 0.219 Inexact Rounded -pwsx3863 power 0.479 0.5 -> 0.692 Inexact Rounded -pwsx3864 power 0.0479 0.5 -> 0.219 Inexact Rounded -pwsx3865 power 0.481 0.5 -> 0.694 Inexact Rounded -pwsx3866 power 0.0481 0.5 -> 0.219 Inexact Rounded -pwsx3867 power 0.482 0.5 -> 0.694 Inexact Rounded -pwsx3868 power 0.0482 0.5 -> 0.220 Inexact Rounded -pwsx3869 power 0.483 0.5 -> 0.695 Inexact Rounded -pwsx3870 power 0.0483 0.5 -> 0.220 Inexact Rounded -pwsx3871 power 0.484 0.5 -> 0.696 Inexact Rounded -pwsx3872 power 0.0484 0.5 -> 0.220 Inexact Rounded -pwsx3873 power 0.485 0.5 -> 0.696 Inexact Rounded -pwsx3874 power 0.0485 0.5 -> 0.220 Inexact Rounded -pwsx3875 power 0.486 0.5 -> 0.697 Inexact Rounded -pwsx3876 power 0.0486 0.5 -> 0.220 Inexact Rounded -pwsx3877 power 0.487 0.5 -> 0.698 Inexact Rounded -pwsx3878 power 0.0487 0.5 -> 0.221 Inexact Rounded -pwsx3879 power 0.488 0.5 -> 0.699 Inexact Rounded -pwsx3880 power 0.0488 0.5 -> 0.221 Inexact Rounded -pwsx3881 power 0.489 0.5 -> 0.699 Inexact Rounded -pwsx3882 power 0.0489 0.5 -> 0.221 Inexact Rounded -pwsx3883 power 0.491 0.5 -> 0.701 Inexact Rounded -pwsx3884 power 0.0491 0.5 -> 0.222 Inexact Rounded -pwsx3885 power 0.492 0.5 -> 0.701 Inexact Rounded -pwsx3886 power 0.0492 0.5 -> 0.222 Inexact Rounded -pwsx3887 power 0.493 0.5 -> 0.702 Inexact Rounded -pwsx3888 power 0.0493 0.5 -> 0.222 Inexact Rounded -pwsx3889 power 0.494 0.5 -> 0.703 Inexact Rounded -pwsx3890 power 0.0494 0.5 -> 0.222 Inexact Rounded -pwsx3891 power 0.495 0.5 -> 0.704 Inexact Rounded -pwsx3892 power 0.0495 0.5 -> 0.222 Inexact Rounded -pwsx3893 power 0.496 0.5 -> 0.704 Inexact Rounded -pwsx3894 power 0.0496 0.5 -> 0.223 Inexact Rounded -pwsx3895 power 0.497 0.5 -> 0.705 Inexact Rounded -pwsx3896 power 0.0497 0.5 -> 0.223 Inexact Rounded -pwsx3897 power 0.498 0.5 -> 0.706 Inexact Rounded -pwsx3898 power 0.0498 0.5 -> 0.223 Inexact Rounded -pwsx3899 power 0.499 0.5 -> 0.706 Inexact Rounded -pwsx3900 power 0.0499 0.5 -> 0.223 Inexact Rounded -pwsx3901 power 0.501 0.5 -> 0.708 Inexact Rounded -pwsx3902 power 0.0501 0.5 -> 0.224 Inexact Rounded -pwsx3903 power 0.502 0.5 -> 0.709 Inexact Rounded -pwsx3904 power 0.0502 0.5 -> 0.224 Inexact Rounded -pwsx3905 power 0.503 0.5 -> 0.709 Inexact Rounded -pwsx3906 power 0.0503 0.5 -> 0.224 Inexact Rounded -pwsx3907 power 0.504 0.5 -> 0.710 Inexact Rounded -pwsx3908 power 0.0504 0.5 -> 0.224 Inexact Rounded -pwsx3909 power 0.505 0.5 -> 0.711 Inexact Rounded -pwsx3910 power 0.0505 0.5 -> 0.225 Inexact Rounded -pwsx3911 power 0.506 0.5 -> 0.711 Inexact Rounded -pwsx3912 power 0.0506 0.5 -> 0.225 Inexact Rounded -pwsx3913 power 0.507 0.5 -> 0.712 Inexact Rounded -pwsx3914 power 0.0507 0.5 -> 0.225 Inexact Rounded -pwsx3915 power 0.508 0.5 -> 0.713 Inexact Rounded -pwsx3916 power 0.0508 0.5 -> 0.225 Inexact Rounded -pwsx3917 power 0.509 0.5 -> 0.713 Inexact Rounded -pwsx3918 power 0.0509 0.5 -> 0.226 Inexact Rounded -pwsx3919 power 0.511 0.5 -> 0.715 Inexact Rounded -pwsx3920 power 0.0511 0.5 -> 0.226 Inexact Rounded -pwsx3921 power 0.512 0.5 -> 0.716 Inexact Rounded -pwsx3922 power 0.0512 0.5 -> 0.226 Inexact Rounded -pwsx3923 power 0.513 0.5 -> 0.716 Inexact Rounded -pwsx3924 power 0.0513 0.5 -> 0.226 Inexact Rounded -pwsx3925 power 0.514 0.5 -> 0.717 Inexact Rounded -pwsx3926 power 0.0514 0.5 -> 0.227 Inexact Rounded -pwsx3927 power 0.515 0.5 -> 0.718 Inexact Rounded -pwsx3928 power 0.0515 0.5 -> 0.227 Inexact Rounded -pwsx3929 power 0.516 0.5 -> 0.718 Inexact Rounded -pwsx3930 power 0.0516 0.5 -> 0.227 Inexact Rounded -pwsx3931 power 0.517 0.5 -> 0.719 Inexact Rounded -pwsx3932 power 0.0517 0.5 -> 0.227 Inexact Rounded -pwsx3933 power 0.518 0.5 -> 0.720 Inexact Rounded -pwsx3934 power 0.0518 0.5 -> 0.228 Inexact Rounded -pwsx3935 power 0.519 0.5 -> 0.720 Inexact Rounded -pwsx3936 power 0.0519 0.5 -> 0.228 Inexact Rounded -pwsx3937 power 0.521 0.5 -> 0.722 Inexact Rounded -pwsx3938 power 0.0521 0.5 -> 0.228 Inexact Rounded -pwsx3939 power 0.522 0.5 -> 0.722 Inexact Rounded -pwsx3940 power 0.0522 0.5 -> 0.228 Inexact Rounded -pwsx3941 power 0.523 0.5 -> 0.723 Inexact Rounded -pwsx3942 power 0.0523 0.5 -> 0.229 Inexact Rounded -pwsx3943 power 0.524 0.5 -> 0.724 Inexact Rounded -pwsx3944 power 0.0524 0.5 -> 0.229 Inexact Rounded -pwsx3945 power 0.525 0.5 -> 0.725 Inexact Rounded -pwsx3946 power 0.0525 0.5 -> 0.229 Inexact Rounded -pwsx3947 power 0.526 0.5 -> 0.725 Inexact Rounded -pwsx3948 power 0.0526 0.5 -> 0.229 Inexact Rounded -pwsx3949 power 0.527 0.5 -> 0.726 Inexact Rounded -pwsx3950 power 0.0527 0.5 -> 0.230 Inexact Rounded -pwsx3951 power 0.528 0.5 -> 0.727 Inexact Rounded -pwsx3952 power 0.0528 0.5 -> 0.230 Inexact Rounded -pwsx3953 power 0.529 0.5 -> 0.727 Inexact Rounded -pwsx3954 power 0.0529 0.5 -> 0.230 Inexact Rounded -pwsx3955 power 0.531 0.5 -> 0.729 Inexact Rounded -pwsx3956 power 0.0531 0.5 -> 0.230 Inexact Rounded -pwsx3957 power 0.532 0.5 -> 0.729 Inexact Rounded -pwsx3958 power 0.0532 0.5 -> 0.231 Inexact Rounded -pwsx3959 power 0.533 0.5 -> 0.730 Inexact Rounded -pwsx3960 power 0.0533 0.5 -> 0.231 Inexact Rounded -pwsx3961 power 0.534 0.5 -> 0.731 Inexact Rounded -pwsx3962 power 0.0534 0.5 -> 0.231 Inexact Rounded -pwsx3963 power 0.535 0.5 -> 0.731 Inexact Rounded -pwsx3964 power 0.0535 0.5 -> 0.231 Inexact Rounded -pwsx3965 power 0.536 0.5 -> 0.732 Inexact Rounded -pwsx3966 power 0.0536 0.5 -> 0.232 Inexact Rounded -pwsx3967 power 0.537 0.5 -> 0.733 Inexact Rounded -pwsx3968 power 0.0537 0.5 -> 0.232 Inexact Rounded -pwsx3969 power 0.538 0.5 -> 0.733 Inexact Rounded -pwsx3970 power 0.0538 0.5 -> 0.232 Inexact Rounded -pwsx3971 power 0.539 0.5 -> 0.734 Inexact Rounded -pwsx3972 power 0.0539 0.5 -> 0.232 Inexact Rounded -pwsx3973 power 0.541 0.5 -> 0.736 Inexact Rounded -pwsx3974 power 0.0541 0.5 -> 0.233 Inexact Rounded -pwsx3975 power 0.542 0.5 -> 0.736 Inexact Rounded -pwsx3976 power 0.0542 0.5 -> 0.233 Inexact Rounded -pwsx3977 power 0.543 0.5 -> 0.737 Inexact Rounded -pwsx3978 power 0.0543 0.5 -> 0.233 Inexact Rounded -pwsx3979 power 0.544 0.5 -> 0.738 Inexact Rounded -pwsx3980 power 0.0544 0.5 -> 0.233 Inexact Rounded -pwsx3981 power 0.545 0.5 -> 0.738 Inexact Rounded -pwsx3982 power 0.0545 0.5 -> 0.233 Inexact Rounded -pwsx3983 power 0.546 0.5 -> 0.739 Inexact Rounded -pwsx3984 power 0.0546 0.5 -> 0.234 Inexact Rounded -pwsx3985 power 0.547 0.5 -> 0.740 Inexact Rounded -pwsx3986 power 0.0547 0.5 -> 0.234 Inexact Rounded -pwsx3987 power 0.548 0.5 -> 0.740 Inexact Rounded -pwsx3988 power 0.0548 0.5 -> 0.234 Inexact Rounded -pwsx3989 power 0.549 0.5 -> 0.741 Inexact Rounded -pwsx3990 power 0.0549 0.5 -> 0.234 Inexact Rounded -pwsx3991 power 0.551 0.5 -> 0.742 Inexact Rounded -pwsx3992 power 0.0551 0.5 -> 0.235 Inexact Rounded -pwsx3993 power 0.552 0.5 -> 0.743 Inexact Rounded -pwsx3994 power 0.0552 0.5 -> 0.235 Inexact Rounded -pwsx3995 power 0.553 0.5 -> 0.744 Inexact Rounded -pwsx3996 power 0.0553 0.5 -> 0.235 Inexact Rounded -pwsx3997 power 0.554 0.5 -> 0.744 Inexact Rounded -pwsx3998 power 0.0554 0.5 -> 0.235 Inexact Rounded -pwsx3999 power 0.555 0.5 -> 0.745 Inexact Rounded -pwsx4000 power 0.0555 0.5 -> 0.236 Inexact Rounded -pwsx4001 power 0.556 0.5 -> 0.746 Inexact Rounded -pwsx4002 power 0.0556 0.5 -> 0.236 Inexact Rounded -pwsx4003 power 0.557 0.5 -> 0.746 Inexact Rounded -pwsx4004 power 0.0557 0.5 -> 0.236 Inexact Rounded -pwsx4005 power 0.558 0.5 -> 0.747 Inexact Rounded -pwsx4006 power 0.0558 0.5 -> 0.236 Inexact Rounded -pwsx4007 power 0.559 0.5 -> 0.748 Inexact Rounded -pwsx4008 power 0.0559 0.5 -> 0.236 Inexact Rounded -pwsx4009 power 0.561 0.5 -> 0.749 Inexact Rounded -pwsx4010 power 0.0561 0.5 -> 0.237 Inexact Rounded -pwsx4011 power 0.562 0.5 -> 0.750 Inexact Rounded -pwsx4012 power 0.0562 0.5 -> 0.237 Inexact Rounded -pwsx4013 power 0.563 0.5 -> 0.750 Inexact Rounded -pwsx4014 power 0.0563 0.5 -> 0.237 Inexact Rounded -pwsx4015 power 0.564 0.5 -> 0.751 Inexact Rounded -pwsx4016 power 0.0564 0.5 -> 0.237 Inexact Rounded -pwsx4017 power 0.565 0.5 -> 0.752 Inexact Rounded -pwsx4018 power 0.0565 0.5 -> 0.238 Inexact Rounded -pwsx4019 power 0.566 0.5 -> 0.752 Inexact Rounded -pwsx4020 power 0.0566 0.5 -> 0.238 Inexact Rounded -pwsx4021 power 0.567 0.5 -> 0.753 Inexact Rounded -pwsx4022 power 0.0567 0.5 -> 0.238 Inexact Rounded -pwsx4023 power 0.568 0.5 -> 0.754 Inexact Rounded -pwsx4024 power 0.0568 0.5 -> 0.238 Inexact Rounded -pwsx4025 power 0.569 0.5 -> 0.754 Inexact Rounded -pwsx4026 power 0.0569 0.5 -> 0.239 Inexact Rounded -pwsx4027 power 0.571 0.5 -> 0.756 Inexact Rounded -pwsx4028 power 0.0571 0.5 -> 0.239 Inexact Rounded -pwsx4029 power 0.572 0.5 -> 0.756 Inexact Rounded -pwsx4030 power 0.0572 0.5 -> 0.239 Inexact Rounded -pwsx4031 power 0.573 0.5 -> 0.757 Inexact Rounded -pwsx4032 power 0.0573 0.5 -> 0.239 Inexact Rounded -pwsx4033 power 0.574 0.5 -> 0.758 Inexact Rounded -pwsx4034 power 0.0574 0.5 -> 0.240 Inexact Rounded -pwsx4035 power 0.575 0.5 -> 0.758 Inexact Rounded -pwsx4036 power 0.0575 0.5 -> 0.240 Inexact Rounded -pwsx4037 power 0.576 0.5 -> 0.759 Inexact Rounded -pwsx4038 power 0.0576 0.5 -> 0.240 Inexact Rounded -pwsx4039 power 0.577 0.5 -> 0.760 Inexact Rounded -pwsx4040 power 0.0577 0.5 -> 0.240 Inexact Rounded -pwsx4041 power 0.578 0.5 -> 0.760 Inexact Rounded -pwsx4042 power 0.0578 0.5 -> 0.240 Inexact Rounded -pwsx4043 power 0.579 0.5 -> 0.761 Inexact Rounded -pwsx4044 power 0.0579 0.5 -> 0.241 Inexact Rounded -pwsx4045 power 0.581 0.5 -> 0.762 Inexact Rounded -pwsx4046 power 0.0581 0.5 -> 0.241 Inexact Rounded -pwsx4047 power 0.582 0.5 -> 0.763 Inexact Rounded -pwsx4048 power 0.0582 0.5 -> 0.241 Inexact Rounded -pwsx4049 power 0.583 0.5 -> 0.764 Inexact Rounded -pwsx4050 power 0.0583 0.5 -> 0.241 Inexact Rounded -pwsx4051 power 0.584 0.5 -> 0.764 Inexact Rounded -pwsx4052 power 0.0584 0.5 -> 0.242 Inexact Rounded -pwsx4053 power 0.585 0.5 -> 0.765 Inexact Rounded -pwsx4054 power 0.0585 0.5 -> 0.242 Inexact Rounded -pwsx4055 power 0.586 0.5 -> 0.766 Inexact Rounded -pwsx4056 power 0.0586 0.5 -> 0.242 Inexact Rounded -pwsx4057 power 0.587 0.5 -> 0.766 Inexact Rounded -pwsx4058 power 0.0587 0.5 -> 0.242 Inexact Rounded -pwsx4059 power 0.588 0.5 -> 0.767 Inexact Rounded -pwsx4060 power 0.0588 0.5 -> 0.242 Inexact Rounded -pwsx4061 power 0.589 0.5 -> 0.767 Inexact Rounded -pwsx4062 power 0.0589 0.5 -> 0.243 Inexact Rounded -pwsx4063 power 0.591 0.5 -> 0.769 Inexact Rounded -pwsx4064 power 0.0591 0.5 -> 0.243 Inexact Rounded -pwsx4065 power 0.592 0.5 -> 0.769 Inexact Rounded -pwsx4066 power 0.0592 0.5 -> 0.243 Inexact Rounded -pwsx4067 power 0.593 0.5 -> 0.770 Inexact Rounded -pwsx4068 power 0.0593 0.5 -> 0.244 Inexact Rounded -pwsx4069 power 0.594 0.5 -> 0.771 Inexact Rounded -pwsx4070 power 0.0594 0.5 -> 0.244 Inexact Rounded -pwsx4071 power 0.595 0.5 -> 0.771 Inexact Rounded -pwsx4072 power 0.0595 0.5 -> 0.244 Inexact Rounded -pwsx4073 power 0.596 0.5 -> 0.772 Inexact Rounded -pwsx4074 power 0.0596 0.5 -> 0.244 Inexact Rounded -pwsx4075 power 0.597 0.5 -> 0.773 Inexact Rounded -pwsx4076 power 0.0597 0.5 -> 0.244 Inexact Rounded -pwsx4077 power 0.598 0.5 -> 0.773 Inexact Rounded -pwsx4078 power 0.0598 0.5 -> 0.245 Inexact Rounded -pwsx4079 power 0.599 0.5 -> 0.774 Inexact Rounded -pwsx4080 power 0.0599 0.5 -> 0.245 Inexact Rounded -pwsx4081 power 0.601 0.5 -> 0.775 Inexact Rounded -pwsx4082 power 0.0601 0.5 -> 0.245 Inexact Rounded -pwsx4083 power 0.602 0.5 -> 0.776 Inexact Rounded -pwsx4084 power 0.0602 0.5 -> 0.245 Inexact Rounded -pwsx4085 power 0.603 0.5 -> 0.777 Inexact Rounded -pwsx4086 power 0.0603 0.5 -> 0.246 Inexact Rounded -pwsx4087 power 0.604 0.5 -> 0.777 Inexact Rounded -pwsx4088 power 0.0604 0.5 -> 0.246 Inexact Rounded -pwsx4089 power 0.605 0.5 -> 0.778 Inexact Rounded -pwsx4090 power 0.0605 0.5 -> 0.246 Inexact Rounded -pwsx4091 power 0.606 0.5 -> 0.778 Inexact Rounded -pwsx4092 power 0.0606 0.5 -> 0.246 Inexact Rounded -pwsx4093 power 0.607 0.5 -> 0.779 Inexact Rounded -pwsx4094 power 0.0607 0.5 -> 0.246 Inexact Rounded -pwsx4095 power 0.608 0.5 -> 0.780 Inexact Rounded -pwsx4096 power 0.0608 0.5 -> 0.247 Inexact Rounded -pwsx4097 power 0.609 0.5 -> 0.780 Inexact Rounded -pwsx4098 power 0.0609 0.5 -> 0.247 Inexact Rounded -pwsx4099 power 0.611 0.5 -> 0.782 Inexact Rounded -pwsx4100 power 0.0611 0.5 -> 0.247 Inexact Rounded -pwsx4101 power 0.612 0.5 -> 0.782 Inexact Rounded -pwsx4102 power 0.0612 0.5 -> 0.247 Inexact Rounded -pwsx4103 power 0.613 0.5 -> 0.783 Inexact Rounded -pwsx4104 power 0.0613 0.5 -> 0.248 Inexact Rounded -pwsx4105 power 0.614 0.5 -> 0.784 Inexact Rounded -pwsx4106 power 0.0614 0.5 -> 0.248 Inexact Rounded -pwsx4107 power 0.615 0.5 -> 0.784 Inexact Rounded -pwsx4108 power 0.0615 0.5 -> 0.248 Inexact Rounded -pwsx4109 power 0.616 0.5 -> 0.785 Inexact Rounded -pwsx4110 power 0.0616 0.5 -> 0.248 Inexact Rounded -pwsx4111 power 0.617 0.5 -> 0.785 Inexact Rounded -pwsx4112 power 0.0617 0.5 -> 0.248 Inexact Rounded -pwsx4113 power 0.618 0.5 -> 0.786 Inexact Rounded -pwsx4114 power 0.0618 0.5 -> 0.249 Inexact Rounded -pwsx4115 power 0.619 0.5 -> 0.787 Inexact Rounded -pwsx4116 power 0.0619 0.5 -> 0.249 Inexact Rounded -pwsx4117 power 0.621 0.5 -> 0.788 Inexact Rounded -pwsx4118 power 0.0621 0.5 -> 0.249 Inexact Rounded -pwsx4119 power 0.622 0.5 -> 0.789 Inexact Rounded -pwsx4120 power 0.0622 0.5 -> 0.249 Inexact Rounded -pwsx4121 power 0.623 0.5 -> 0.789 Inexact Rounded -pwsx4122 power 0.0623 0.5 -> 0.250 Inexact Rounded -pwsx4123 power 0.624 0.5 -> 0.790 Inexact Rounded -pwsx4124 power 0.0624 0.5 -> 0.250 Inexact Rounded -pwsx4125 power 0.625 0.5 -> 0.791 Inexact Rounded -pwsx4126 power 0.0625 0.5 -> 0.250 Inexact Rounded -pwsx4127 power 0.626 0.5 -> 0.791 Inexact Rounded -pwsx4128 power 0.0626 0.5 -> 0.250 Inexact Rounded -pwsx4129 power 0.627 0.5 -> 0.792 Inexact Rounded -pwsx4130 power 0.0627 0.5 -> 0.250 Inexact Rounded -pwsx4131 power 0.628 0.5 -> 0.792 Inexact Rounded -pwsx4132 power 0.0628 0.5 -> 0.251 Inexact Rounded -pwsx4133 power 0.629 0.5 -> 0.793 Inexact Rounded -pwsx4134 power 0.0629 0.5 -> 0.251 Inexact Rounded -pwsx4135 power 0.631 0.5 -> 0.794 Inexact Rounded -pwsx4136 power 0.0631 0.5 -> 0.251 Inexact Rounded -pwsx4137 power 0.632 0.5 -> 0.795 Inexact Rounded -pwsx4138 power 0.0632 0.5 -> 0.251 Inexact Rounded -pwsx4139 power 0.633 0.5 -> 0.796 Inexact Rounded -pwsx4140 power 0.0633 0.5 -> 0.252 Inexact Rounded -pwsx4141 power 0.634 0.5 -> 0.796 Inexact Rounded -pwsx4142 power 0.0634 0.5 -> 0.252 Inexact Rounded -pwsx4143 power 0.635 0.5 -> 0.797 Inexact Rounded -pwsx4144 power 0.0635 0.5 -> 0.252 Inexact Rounded -pwsx4145 power 0.636 0.5 -> 0.797 Inexact Rounded -pwsx4146 power 0.0636 0.5 -> 0.252 Inexact Rounded -pwsx4147 power 0.637 0.5 -> 0.798 Inexact Rounded -pwsx4148 power 0.0637 0.5 -> 0.252 Inexact Rounded -pwsx4149 power 0.638 0.5 -> 0.799 Inexact Rounded -pwsx4150 power 0.0638 0.5 -> 0.253 Inexact Rounded -pwsx4151 power 0.639 0.5 -> 0.799 Inexact Rounded -pwsx4152 power 0.0639 0.5 -> 0.253 Inexact Rounded -pwsx4153 power 0.641 0.5 -> 0.801 Inexact Rounded -pwsx4154 power 0.0641 0.5 -> 0.253 Inexact Rounded -pwsx4155 power 0.642 0.5 -> 0.801 Inexact Rounded -pwsx4156 power 0.0642 0.5 -> 0.253 Inexact Rounded -pwsx4157 power 0.643 0.5 -> 0.802 Inexact Rounded -pwsx4158 power 0.0643 0.5 -> 0.254 Inexact Rounded -pwsx4159 power 0.644 0.5 -> 0.802 Inexact Rounded -pwsx4160 power 0.0644 0.5 -> 0.254 Inexact Rounded -pwsx4161 power 0.645 0.5 -> 0.803 Inexact Rounded -pwsx4162 power 0.0645 0.5 -> 0.254 Inexact Rounded -pwsx4163 power 0.646 0.5 -> 0.804 Inexact Rounded -pwsx4164 power 0.0646 0.5 -> 0.254 Inexact Rounded -pwsx4165 power 0.647 0.5 -> 0.804 Inexact Rounded -pwsx4166 power 0.0647 0.5 -> 0.254 Inexact Rounded -pwsx4167 power 0.648 0.5 -> 0.805 Inexact Rounded -pwsx4168 power 0.0648 0.5 -> 0.255 Inexact Rounded -pwsx4169 power 0.649 0.5 -> 0.806 Inexact Rounded -pwsx4170 power 0.0649 0.5 -> 0.255 Inexact Rounded -pwsx4171 power 0.651 0.5 -> 0.807 Inexact Rounded -pwsx4172 power 0.0651 0.5 -> 0.255 Inexact Rounded -pwsx4173 power 0.652 0.5 -> 0.807 Inexact Rounded -pwsx4174 power 0.0652 0.5 -> 0.255 Inexact Rounded -pwsx4175 power 0.653 0.5 -> 0.808 Inexact Rounded -pwsx4176 power 0.0653 0.5 -> 0.256 Inexact Rounded -pwsx4177 power 0.654 0.5 -> 0.809 Inexact Rounded -pwsx4178 power 0.0654 0.5 -> 0.256 Inexact Rounded -pwsx4179 power 0.655 0.5 -> 0.809 Inexact Rounded -pwsx4180 power 0.0655 0.5 -> 0.256 Inexact Rounded -pwsx4181 power 0.656 0.5 -> 0.810 Inexact Rounded -pwsx4182 power 0.0656 0.5 -> 0.256 Inexact Rounded -pwsx4183 power 0.657 0.5 -> 0.811 Inexact Rounded -pwsx4184 power 0.0657 0.5 -> 0.256 Inexact Rounded -pwsx4185 power 0.658 0.5 -> 0.811 Inexact Rounded -pwsx4186 power 0.0658 0.5 -> 0.257 Inexact Rounded -pwsx4187 power 0.659 0.5 -> 0.812 Inexact Rounded -pwsx4188 power 0.0659 0.5 -> 0.257 Inexact Rounded -pwsx4189 power 0.661 0.5 -> 0.813 Inexact Rounded -pwsx4190 power 0.0661 0.5 -> 0.257 Inexact Rounded -pwsx4191 power 0.662 0.5 -> 0.814 Inexact Rounded -pwsx4192 power 0.0662 0.5 -> 0.257 Inexact Rounded -pwsx4193 power 0.663 0.5 -> 0.814 Inexact Rounded -pwsx4194 power 0.0663 0.5 -> 0.257 Inexact Rounded -pwsx4195 power 0.664 0.5 -> 0.815 Inexact Rounded -pwsx4196 power 0.0664 0.5 -> 0.258 Inexact Rounded -pwsx4197 power 0.665 0.5 -> 0.815 Inexact Rounded -pwsx4198 power 0.0665 0.5 -> 0.258 Inexact Rounded -pwsx4199 power 0.666 0.5 -> 0.816 Inexact Rounded -pwsx4200 power 0.0666 0.5 -> 0.258 Inexact Rounded -pwsx4201 power 0.667 0.5 -> 0.817 Inexact Rounded -pwsx4202 power 0.0667 0.5 -> 0.258 Inexact Rounded -pwsx4203 power 0.668 0.5 -> 0.817 Inexact Rounded -pwsx4204 power 0.0668 0.5 -> 0.258 Inexact Rounded -pwsx4205 power 0.669 0.5 -> 0.818 Inexact Rounded -pwsx4206 power 0.0669 0.5 -> 0.259 Inexact Rounded -pwsx4207 power 0.671 0.5 -> 0.819 Inexact Rounded -pwsx4208 power 0.0671 0.5 -> 0.259 Inexact Rounded -pwsx4209 power 0.672 0.5 -> 0.820 Inexact Rounded -pwsx4210 power 0.0672 0.5 -> 0.259 Inexact Rounded -pwsx4211 power 0.673 0.5 -> 0.820 Inexact Rounded -pwsx4212 power 0.0673 0.5 -> 0.259 Inexact Rounded -pwsx4213 power 0.674 0.5 -> 0.821 Inexact Rounded -pwsx4214 power 0.0674 0.5 -> 0.260 Inexact Rounded -pwsx4215 power 0.675 0.5 -> 0.822 Inexact Rounded -pwsx4216 power 0.0675 0.5 -> 0.260 Inexact Rounded -pwsx4217 power 0.676 0.5 -> 0.822 Inexact Rounded -pwsx4218 power 0.0676 0.5 -> 0.260 Inexact Rounded -pwsx4219 power 0.677 0.5 -> 0.823 Inexact Rounded -pwsx4220 power 0.0677 0.5 -> 0.260 Inexact Rounded -pwsx4221 power 0.678 0.5 -> 0.823 Inexact Rounded -pwsx4222 power 0.0678 0.5 -> 0.260 Inexact Rounded -pwsx4223 power 0.679 0.5 -> 0.824 Inexact Rounded -pwsx4224 power 0.0679 0.5 -> 0.261 Inexact Rounded -pwsx4225 power 0.681 0.5 -> 0.825 Inexact Rounded -pwsx4226 power 0.0681 0.5 -> 0.261 Inexact Rounded -pwsx4227 power 0.682 0.5 -> 0.826 Inexact Rounded -pwsx4228 power 0.0682 0.5 -> 0.261 Inexact Rounded -pwsx4229 power 0.683 0.5 -> 0.826 Inexact Rounded -pwsx4230 power 0.0683 0.5 -> 0.261 Inexact Rounded -pwsx4231 power 0.684 0.5 -> 0.827 Inexact Rounded -pwsx4232 power 0.0684 0.5 -> 0.262 Inexact Rounded -pwsx4233 power 0.685 0.5 -> 0.828 Inexact Rounded -pwsx4234 power 0.0685 0.5 -> 0.262 Inexact Rounded -pwsx4235 power 0.686 0.5 -> 0.828 Inexact Rounded -pwsx4236 power 0.0686 0.5 -> 0.262 Inexact Rounded -pwsx4237 power 0.687 0.5 -> 0.829 Inexact Rounded -pwsx4238 power 0.0687 0.5 -> 0.262 Inexact Rounded -pwsx4239 power 0.688 0.5 -> 0.829 Inexact Rounded -pwsx4240 power 0.0688 0.5 -> 0.262 Inexact Rounded -pwsx4241 power 0.689 0.5 -> 0.830 Inexact Rounded -pwsx4242 power 0.0689 0.5 -> 0.262 Inexact Rounded -pwsx4243 power 0.691 0.5 -> 0.831 Inexact Rounded -pwsx4244 power 0.0691 0.5 -> 0.263 Inexact Rounded -pwsx4245 power 0.692 0.5 -> 0.832 Inexact Rounded -pwsx4246 power 0.0692 0.5 -> 0.263 Inexact Rounded -pwsx4247 power 0.693 0.5 -> 0.832 Inexact Rounded -pwsx4248 power 0.0693 0.5 -> 0.263 Inexact Rounded -pwsx4249 power 0.694 0.5 -> 0.833 Inexact Rounded -pwsx4250 power 0.0694 0.5 -> 0.263 Inexact Rounded -pwsx4251 power 0.695 0.5 -> 0.834 Inexact Rounded -pwsx4252 power 0.0695 0.5 -> 0.264 Inexact Rounded -pwsx4253 power 0.696 0.5 -> 0.834 Inexact Rounded -pwsx4254 power 0.0696 0.5 -> 0.264 Inexact Rounded -pwsx4255 power 0.697 0.5 -> 0.835 Inexact Rounded -pwsx4256 power 0.0697 0.5 -> 0.264 Inexact Rounded -pwsx4257 power 0.698 0.5 -> 0.835 Inexact Rounded -pwsx4258 power 0.0698 0.5 -> 0.264 Inexact Rounded -pwsx4259 power 0.699 0.5 -> 0.836 Inexact Rounded -pwsx4260 power 0.0699 0.5 -> 0.264 Inexact Rounded -pwsx4261 power 0.701 0.5 -> 0.837 Inexact Rounded -pwsx4262 power 0.0701 0.5 -> 0.265 Inexact Rounded -pwsx4263 power 0.702 0.5 -> 0.838 Inexact Rounded -pwsx4264 power 0.0702 0.5 -> 0.265 Inexact Rounded -pwsx4265 power 0.703 0.5 -> 0.838 Inexact Rounded -pwsx4266 power 0.0703 0.5 -> 0.265 Inexact Rounded -pwsx4267 power 0.704 0.5 -> 0.839 Inexact Rounded -pwsx4268 power 0.0704 0.5 -> 0.265 Inexact Rounded -pwsx4269 power 0.705 0.5 -> 0.840 Inexact Rounded -pwsx4270 power 0.0705 0.5 -> 0.266 Inexact Rounded -pwsx4271 power 0.706 0.5 -> 0.840 Inexact Rounded -pwsx4272 power 0.0706 0.5 -> 0.266 Inexact Rounded -pwsx4273 power 0.707 0.5 -> 0.841 Inexact Rounded -pwsx4274 power 0.0707 0.5 -> 0.266 Inexact Rounded -pwsx4275 power 0.708 0.5 -> 0.841 Inexact Rounded -pwsx4276 power 0.0708 0.5 -> 0.266 Inexact Rounded -pwsx4277 power 0.709 0.5 -> 0.842 Inexact Rounded -pwsx4278 power 0.0709 0.5 -> 0.266 Inexact Rounded -pwsx4279 power 0.711 0.5 -> 0.843 Inexact Rounded -pwsx4280 power 0.0711 0.5 -> 0.267 Inexact Rounded -pwsx4281 power 0.712 0.5 -> 0.844 Inexact Rounded -pwsx4282 power 0.0712 0.5 -> 0.267 Inexact Rounded -pwsx4283 power 0.713 0.5 -> 0.844 Inexact Rounded -pwsx4284 power 0.0713 0.5 -> 0.267 Inexact Rounded -pwsx4285 power 0.714 0.5 -> 0.845 Inexact Rounded -pwsx4286 power 0.0714 0.5 -> 0.267 Inexact Rounded -pwsx4287 power 0.715 0.5 -> 0.846 Inexact Rounded -pwsx4288 power 0.0715 0.5 -> 0.267 Inexact Rounded -pwsx4289 power 0.716 0.5 -> 0.846 Inexact Rounded -pwsx4290 power 0.0716 0.5 -> 0.268 Inexact Rounded -pwsx4291 power 0.717 0.5 -> 0.847 Inexact Rounded -pwsx4292 power 0.0717 0.5 -> 0.268 Inexact Rounded -pwsx4293 power 0.718 0.5 -> 0.847 Inexact Rounded -pwsx4294 power 0.0718 0.5 -> 0.268 Inexact Rounded -pwsx4295 power 0.719 0.5 -> 0.848 Inexact Rounded -pwsx4296 power 0.0719 0.5 -> 0.268 Inexact Rounded -pwsx4297 power 0.721 0.5 -> 0.849 Inexact Rounded -pwsx4298 power 0.0721 0.5 -> 0.269 Inexact Rounded -pwsx4299 power 0.722 0.5 -> 0.850 Inexact Rounded -pwsx4300 power 0.0722 0.5 -> 0.269 Inexact Rounded -pwsx4301 power 0.723 0.5 -> 0.850 Inexact Rounded -pwsx4302 power 0.0723 0.5 -> 0.269 Inexact Rounded -pwsx4303 power 0.724 0.5 -> 0.851 Inexact Rounded -pwsx4304 power 0.0724 0.5 -> 0.269 Inexact Rounded -pwsx4305 power 0.725 0.5 -> 0.851 Inexact Rounded -pwsx4306 power 0.0725 0.5 -> 0.269 Inexact Rounded -pwsx4307 power 0.726 0.5 -> 0.852 Inexact Rounded -pwsx4308 power 0.0726 0.5 -> 0.269 Inexact Rounded -pwsx4309 power 0.727 0.5 -> 0.853 Inexact Rounded -pwsx4310 power 0.0727 0.5 -> 0.270 Inexact Rounded -pwsx4311 power 0.728 0.5 -> 0.853 Inexact Rounded -pwsx4312 power 0.0728 0.5 -> 0.270 Inexact Rounded -pwsx4313 power 0.729 0.5 -> 0.854 Inexact Rounded -pwsx4314 power 0.0729 0.5 -> 0.270 Inexact Rounded -pwsx4315 power 0.731 0.5 -> 0.855 Inexact Rounded -pwsx4316 power 0.0731 0.5 -> 0.270 Inexact Rounded -pwsx4317 power 0.732 0.5 -> 0.856 Inexact Rounded -pwsx4318 power 0.0732 0.5 -> 0.271 Inexact Rounded -pwsx4319 power 0.733 0.5 -> 0.856 Inexact Rounded -pwsx4320 power 0.0733 0.5 -> 0.271 Inexact Rounded -pwsx4321 power 0.734 0.5 -> 0.857 Inexact Rounded -pwsx4322 power 0.0734 0.5 -> 0.271 Inexact Rounded -pwsx4323 power 0.735 0.5 -> 0.857 Inexact Rounded -pwsx4324 power 0.0735 0.5 -> 0.271 Inexact Rounded -pwsx4325 power 0.736 0.5 -> 0.858 Inexact Rounded -pwsx4326 power 0.0736 0.5 -> 0.271 Inexact Rounded -pwsx4327 power 0.737 0.5 -> 0.858 Inexact Rounded -pwsx4328 power 0.0737 0.5 -> 0.271 Inexact Rounded -pwsx4329 power 0.738 0.5 -> 0.859 Inexact Rounded -pwsx4330 power 0.0738 0.5 -> 0.272 Inexact Rounded -pwsx4331 power 0.739 0.5 -> 0.860 Inexact Rounded -pwsx4332 power 0.0739 0.5 -> 0.272 Inexact Rounded -pwsx4333 power 0.741 0.5 -> 0.861 Inexact Rounded -pwsx4334 power 0.0741 0.5 -> 0.272 Inexact Rounded -pwsx4335 power 0.742 0.5 -> 0.861 Inexact Rounded -pwsx4336 power 0.0742 0.5 -> 0.272 Inexact Rounded -pwsx4337 power 0.743 0.5 -> 0.862 Inexact Rounded -pwsx4338 power 0.0743 0.5 -> 0.273 Inexact Rounded -pwsx4339 power 0.744 0.5 -> 0.863 Inexact Rounded -pwsx4340 power 0.0744 0.5 -> 0.273 Inexact Rounded -pwsx4341 power 0.745 0.5 -> 0.863 Inexact Rounded -pwsx4342 power 0.0745 0.5 -> 0.273 Inexact Rounded -pwsx4343 power 0.746 0.5 -> 0.864 Inexact Rounded -pwsx4344 power 0.0746 0.5 -> 0.273 Inexact Rounded -pwsx4345 power 0.747 0.5 -> 0.864 Inexact Rounded -pwsx4346 power 0.0747 0.5 -> 0.273 Inexact Rounded -pwsx4347 power 0.748 0.5 -> 0.865 Inexact Rounded -pwsx4348 power 0.0748 0.5 -> 0.273 Inexact Rounded -pwsx4349 power 0.749 0.5 -> 0.865 Inexact Rounded -pwsx4350 power 0.0749 0.5 -> 0.274 Inexact Rounded -pwsx4351 power 0.751 0.5 -> 0.867 Inexact Rounded -pwsx4352 power 0.0751 0.5 -> 0.274 Inexact Rounded -pwsx4353 power 0.752 0.5 -> 0.867 Inexact Rounded -pwsx4354 power 0.0752 0.5 -> 0.274 Inexact Rounded -pwsx4355 power 0.753 0.5 -> 0.868 Inexact Rounded -pwsx4356 power 0.0753 0.5 -> 0.274 Inexact Rounded -pwsx4357 power 0.754 0.5 -> 0.868 Inexact Rounded -pwsx4358 power 0.0754 0.5 -> 0.275 Inexact Rounded -pwsx4359 power 0.755 0.5 -> 0.869 Inexact Rounded -pwsx4360 power 0.0755 0.5 -> 0.275 Inexact Rounded -pwsx4361 power 0.756 0.5 -> 0.869 Inexact Rounded -pwsx4362 power 0.0756 0.5 -> 0.275 Inexact Rounded -pwsx4363 power 0.757 0.5 -> 0.870 Inexact Rounded -pwsx4364 power 0.0757 0.5 -> 0.275 Inexact Rounded -pwsx4365 power 0.758 0.5 -> 0.871 Inexact Rounded -pwsx4366 power 0.0758 0.5 -> 0.275 Inexact Rounded -pwsx4367 power 0.759 0.5 -> 0.871 Inexact Rounded -pwsx4368 power 0.0759 0.5 -> 0.275 Inexact Rounded -pwsx4369 power 0.761 0.5 -> 0.872 Inexact Rounded -pwsx4370 power 0.0761 0.5 -> 0.276 Inexact Rounded -pwsx4371 power 0.762 0.5 -> 0.873 Inexact Rounded -pwsx4372 power 0.0762 0.5 -> 0.276 Inexact Rounded -pwsx4373 power 0.763 0.5 -> 0.873 Inexact Rounded -pwsx4374 power 0.0763 0.5 -> 0.276 Inexact Rounded -pwsx4375 power 0.764 0.5 -> 0.874 Inexact Rounded -pwsx4376 power 0.0764 0.5 -> 0.276 Inexact Rounded -pwsx4377 power 0.765 0.5 -> 0.875 Inexact Rounded -pwsx4378 power 0.0765 0.5 -> 0.277 Inexact Rounded -pwsx4379 power 0.766 0.5 -> 0.875 Inexact Rounded -pwsx4380 power 0.0766 0.5 -> 0.277 Inexact Rounded -pwsx4381 power 0.767 0.5 -> 0.876 Inexact Rounded -pwsx4382 power 0.0767 0.5 -> 0.277 Inexact Rounded -pwsx4383 power 0.768 0.5 -> 0.876 Inexact Rounded -pwsx4384 power 0.0768 0.5 -> 0.277 Inexact Rounded -pwsx4385 power 0.769 0.5 -> 0.877 Inexact Rounded -pwsx4386 power 0.0769 0.5 -> 0.277 Inexact Rounded -pwsx4387 power 0.771 0.5 -> 0.878 Inexact Rounded -pwsx4388 power 0.0771 0.5 -> 0.278 Inexact Rounded -pwsx4389 power 0.772 0.5 -> 0.879 Inexact Rounded -pwsx4390 power 0.0772 0.5 -> 0.278 Inexact Rounded -pwsx4391 power 0.773 0.5 -> 0.879 Inexact Rounded -pwsx4392 power 0.0773 0.5 -> 0.278 Inexact Rounded -pwsx4393 power 0.774 0.5 -> 0.880 Inexact Rounded -pwsx4394 power 0.0774 0.5 -> 0.278 Inexact Rounded -pwsx4395 power 0.775 0.5 -> 0.880 Inexact Rounded -pwsx4396 power 0.0775 0.5 -> 0.278 Inexact Rounded -pwsx4397 power 0.776 0.5 -> 0.881 Inexact Rounded -pwsx4398 power 0.0776 0.5 -> 0.279 Inexact Rounded -pwsx4399 power 0.777 0.5 -> 0.881 Inexact Rounded -pwsx4400 power 0.0777 0.5 -> 0.279 Inexact Rounded -pwsx4401 power 0.778 0.5 -> 0.882 Inexact Rounded -pwsx4402 power 0.0778 0.5 -> 0.279 Inexact Rounded -pwsx4403 power 0.779 0.5 -> 0.883 Inexact Rounded -pwsx4404 power 0.0779 0.5 -> 0.279 Inexact Rounded -pwsx4405 power 0.781 0.5 -> 0.884 Inexact Rounded -pwsx4406 power 0.0781 0.5 -> 0.279 Inexact Rounded -pwsx4407 power 0.782 0.5 -> 0.884 Inexact Rounded -pwsx4408 power 0.0782 0.5 -> 0.280 Inexact Rounded -pwsx4409 power 0.783 0.5 -> 0.885 Inexact Rounded -pwsx4410 power 0.0783 0.5 -> 0.280 Inexact Rounded -pwsx4411 power 0.784 0.5 -> 0.885 Inexact Rounded -pwsx4412 power 0.0784 0.5 -> 0.280 Inexact Rounded -pwsx4413 power 0.785 0.5 -> 0.886 Inexact Rounded -pwsx4414 power 0.0785 0.5 -> 0.280 Inexact Rounded -pwsx4415 power 0.786 0.5 -> 0.887 Inexact Rounded -pwsx4416 power 0.0786 0.5 -> 0.280 Inexact Rounded -pwsx4417 power 0.787 0.5 -> 0.887 Inexact Rounded -pwsx4418 power 0.0787 0.5 -> 0.281 Inexact Rounded -pwsx4419 power 0.788 0.5 -> 0.888 Inexact Rounded -pwsx4420 power 0.0788 0.5 -> 0.281 Inexact Rounded -pwsx4421 power 0.789 0.5 -> 0.888 Inexact Rounded -pwsx4422 power 0.0789 0.5 -> 0.281 Inexact Rounded -pwsx4423 power 0.791 0.5 -> 0.889 Inexact Rounded -pwsx4424 power 0.0791 0.5 -> 0.281 Inexact Rounded -pwsx4425 power 0.792 0.5 -> 0.890 Inexact Rounded -pwsx4426 power 0.0792 0.5 -> 0.281 Inexact Rounded -pwsx4427 power 0.793 0.5 -> 0.891 Inexact Rounded -pwsx4428 power 0.0793 0.5 -> 0.282 Inexact Rounded -pwsx4429 power 0.794 0.5 -> 0.891 Inexact Rounded -pwsx4430 power 0.0794 0.5 -> 0.282 Inexact Rounded -pwsx4431 power 0.795 0.5 -> 0.892 Inexact Rounded -pwsx4432 power 0.0795 0.5 -> 0.282 Inexact Rounded -pwsx4433 power 0.796 0.5 -> 0.892 Inexact Rounded -pwsx4434 power 0.0796 0.5 -> 0.282 Inexact Rounded -pwsx4435 power 0.797 0.5 -> 0.893 Inexact Rounded -pwsx4436 power 0.0797 0.5 -> 0.282 Inexact Rounded -pwsx4437 power 0.798 0.5 -> 0.893 Inexact Rounded -pwsx4438 power 0.0798 0.5 -> 0.282 Inexact Rounded -pwsx4439 power 0.799 0.5 -> 0.894 Inexact Rounded -pwsx4440 power 0.0799 0.5 -> 0.283 Inexact Rounded -pwsx4441 power 0.801 0.5 -> 0.895 Inexact Rounded -pwsx4442 power 0.0801 0.5 -> 0.283 Inexact Rounded -pwsx4443 power 0.802 0.5 -> 0.896 Inexact Rounded -pwsx4444 power 0.0802 0.5 -> 0.283 Inexact Rounded -pwsx4445 power 0.803 0.5 -> 0.896 Inexact Rounded -pwsx4446 power 0.0803 0.5 -> 0.283 Inexact Rounded -pwsx4447 power 0.804 0.5 -> 0.897 Inexact Rounded -pwsx4448 power 0.0804 0.5 -> 0.284 Inexact Rounded -pwsx4449 power 0.805 0.5 -> 0.897 Inexact Rounded -pwsx4450 power 0.0805 0.5 -> 0.284 Inexact Rounded -pwsx4451 power 0.806 0.5 -> 0.898 Inexact Rounded -pwsx4452 power 0.0806 0.5 -> 0.284 Inexact Rounded -pwsx4453 power 0.807 0.5 -> 0.898 Inexact Rounded -pwsx4454 power 0.0807 0.5 -> 0.284 Inexact Rounded -pwsx4455 power 0.808 0.5 -> 0.899 Inexact Rounded -pwsx4456 power 0.0808 0.5 -> 0.284 Inexact Rounded -pwsx4457 power 0.809 0.5 -> 0.899 Inexact Rounded -pwsx4458 power 0.0809 0.5 -> 0.284 Inexact Rounded -pwsx4459 power 0.811 0.5 -> 0.901 Inexact Rounded -pwsx4460 power 0.0811 0.5 -> 0.285 Inexact Rounded -pwsx4461 power 0.812 0.5 -> 0.901 Inexact Rounded -pwsx4462 power 0.0812 0.5 -> 0.285 Inexact Rounded -pwsx4463 power 0.813 0.5 -> 0.902 Inexact Rounded -pwsx4464 power 0.0813 0.5 -> 0.285 Inexact Rounded -pwsx4465 power 0.814 0.5 -> 0.902 Inexact Rounded -pwsx4466 power 0.0814 0.5 -> 0.285 Inexact Rounded -pwsx4467 power 0.815 0.5 -> 0.903 Inexact Rounded -pwsx4468 power 0.0815 0.5 -> 0.285 Inexact Rounded -pwsx4469 power 0.816 0.5 -> 0.903 Inexact Rounded -pwsx4470 power 0.0816 0.5 -> 0.286 Inexact Rounded -pwsx4471 power 0.817 0.5 -> 0.904 Inexact Rounded -pwsx4472 power 0.0817 0.5 -> 0.286 Inexact Rounded -pwsx4473 power 0.818 0.5 -> 0.904 Inexact Rounded -pwsx4474 power 0.0818 0.5 -> 0.286 Inexact Rounded -pwsx4475 power 0.819 0.5 -> 0.905 Inexact Rounded -pwsx4476 power 0.0819 0.5 -> 0.286 Inexact Rounded -pwsx4477 power 0.821 0.5 -> 0.906 Inexact Rounded -pwsx4478 power 0.0821 0.5 -> 0.287 Inexact Rounded -pwsx4479 power 0.822 0.5 -> 0.907 Inexact Rounded -pwsx4480 power 0.0822 0.5 -> 0.287 Inexact Rounded -pwsx4481 power 0.823 0.5 -> 0.907 Inexact Rounded -pwsx4482 power 0.0823 0.5 -> 0.287 Inexact Rounded -pwsx4483 power 0.824 0.5 -> 0.908 Inexact Rounded -pwsx4484 power 0.0824 0.5 -> 0.287 Inexact Rounded -pwsx4485 power 0.825 0.5 -> 0.908 Inexact Rounded -pwsx4486 power 0.0825 0.5 -> 0.287 Inexact Rounded -pwsx4487 power 0.826 0.5 -> 0.909 Inexact Rounded -pwsx4488 power 0.0826 0.5 -> 0.287 Inexact Rounded -pwsx4489 power 0.827 0.5 -> 0.909 Inexact Rounded -pwsx4490 power 0.0827 0.5 -> 0.288 Inexact Rounded -pwsx4491 power 0.828 0.5 -> 0.910 Inexact Rounded -pwsx4492 power 0.0828 0.5 -> 0.288 Inexact Rounded -pwsx4493 power 0.829 0.5 -> 0.910 Inexact Rounded -pwsx4494 power 0.0829 0.5 -> 0.288 Inexact Rounded -pwsx4495 power 0.831 0.5 -> 0.912 Inexact Rounded -pwsx4496 power 0.0831 0.5 -> 0.288 Inexact Rounded -pwsx4497 power 0.832 0.5 -> 0.912 Inexact Rounded -pwsx4498 power 0.0832 0.5 -> 0.288 Inexact Rounded -pwsx4499 power 0.833 0.5 -> 0.913 Inexact Rounded -pwsx4500 power 0.0833 0.5 -> 0.289 Inexact Rounded -pwsx4501 power 0.834 0.5 -> 0.913 Inexact Rounded -pwsx4502 power 0.0834 0.5 -> 0.289 Inexact Rounded -pwsx4503 power 0.835 0.5 -> 0.914 Inexact Rounded -pwsx4504 power 0.0835 0.5 -> 0.289 Inexact Rounded -pwsx4505 power 0.836 0.5 -> 0.914 Inexact Rounded -pwsx4506 power 0.0836 0.5 -> 0.289 Inexact Rounded -pwsx4507 power 0.837 0.5 -> 0.915 Inexact Rounded -pwsx4508 power 0.0837 0.5 -> 0.289 Inexact Rounded -pwsx4509 power 0.838 0.5 -> 0.915 Inexact Rounded -pwsx4510 power 0.0838 0.5 -> 0.289 Inexact Rounded -pwsx4511 power 0.839 0.5 -> 0.916 Inexact Rounded -pwsx4512 power 0.0839 0.5 -> 0.290 Inexact Rounded -pwsx4513 power 0.841 0.5 -> 0.917 Inexact Rounded -pwsx4514 power 0.0841 0.5 -> 0.290 Inexact Rounded -pwsx4515 power 0.842 0.5 -> 0.918 Inexact Rounded -pwsx4516 power 0.0842 0.5 -> 0.290 Inexact Rounded -pwsx4517 power 0.843 0.5 -> 0.918 Inexact Rounded -pwsx4518 power 0.0843 0.5 -> 0.290 Inexact Rounded -pwsx4519 power 0.844 0.5 -> 0.919 Inexact Rounded -pwsx4520 power 0.0844 0.5 -> 0.291 Inexact Rounded -pwsx4521 power 0.845 0.5 -> 0.919 Inexact Rounded -pwsx4522 power 0.0845 0.5 -> 0.291 Inexact Rounded -pwsx4523 power 0.846 0.5 -> 0.920 Inexact Rounded -pwsx4524 power 0.0846 0.5 -> 0.291 Inexact Rounded -pwsx4525 power 0.847 0.5 -> 0.920 Inexact Rounded -pwsx4526 power 0.0847 0.5 -> 0.291 Inexact Rounded -pwsx4527 power 0.848 0.5 -> 0.921 Inexact Rounded -pwsx4528 power 0.0848 0.5 -> 0.291 Inexact Rounded -pwsx4529 power 0.849 0.5 -> 0.921 Inexact Rounded -pwsx4530 power 0.0849 0.5 -> 0.291 Inexact Rounded -pwsx4531 power 0.851 0.5 -> 0.922 Inexact Rounded -pwsx4532 power 0.0851 0.5 -> 0.292 Inexact Rounded -pwsx4533 power 0.852 0.5 -> 0.923 Inexact Rounded -pwsx4534 power 0.0852 0.5 -> 0.292 Inexact Rounded -pwsx4535 power 0.853 0.5 -> 0.924 Inexact Rounded -pwsx4536 power 0.0853 0.5 -> 0.292 Inexact Rounded -pwsx4537 power 0.854 0.5 -> 0.924 Inexact Rounded -pwsx4538 power 0.0854 0.5 -> 0.292 Inexact Rounded -pwsx4539 power 0.855 0.5 -> 0.925 Inexact Rounded -pwsx4540 power 0.0855 0.5 -> 0.292 Inexact Rounded -pwsx4541 power 0.856 0.5 -> 0.925 Inexact Rounded -pwsx4542 power 0.0856 0.5 -> 0.293 Inexact Rounded -pwsx4543 power 0.857 0.5 -> 0.926 Inexact Rounded -pwsx4544 power 0.0857 0.5 -> 0.293 Inexact Rounded -pwsx4545 power 0.858 0.5 -> 0.926 Inexact Rounded -pwsx4546 power 0.0858 0.5 -> 0.293 Inexact Rounded -pwsx4547 power 0.859 0.5 -> 0.927 Inexact Rounded -pwsx4548 power 0.0859 0.5 -> 0.293 Inexact Rounded -pwsx4549 power 0.861 0.5 -> 0.928 Inexact Rounded -pwsx4550 power 0.0861 0.5 -> 0.293 Inexact Rounded -pwsx4551 power 0.862 0.5 -> 0.928 Inexact Rounded -pwsx4552 power 0.0862 0.5 -> 0.294 Inexact Rounded -pwsx4553 power 0.863 0.5 -> 0.929 Inexact Rounded -pwsx4554 power 0.0863 0.5 -> 0.294 Inexact Rounded -pwsx4555 power 0.864 0.5 -> 0.930 Inexact Rounded -pwsx4556 power 0.0864 0.5 -> 0.294 Inexact Rounded -pwsx4557 power 0.865 0.5 -> 0.930 Inexact Rounded -pwsx4558 power 0.0865 0.5 -> 0.294 Inexact Rounded -pwsx4559 power 0.866 0.5 -> 0.931 Inexact Rounded -pwsx4560 power 0.0866 0.5 -> 0.294 Inexact Rounded -pwsx4561 power 0.867 0.5 -> 0.931 Inexact Rounded -pwsx4562 power 0.0867 0.5 -> 0.294 Inexact Rounded -pwsx4563 power 0.868 0.5 -> 0.932 Inexact Rounded -pwsx4564 power 0.0868 0.5 -> 0.295 Inexact Rounded -pwsx4565 power 0.869 0.5 -> 0.932 Inexact Rounded -pwsx4566 power 0.0869 0.5 -> 0.295 Inexact Rounded -pwsx4567 power 0.871 0.5 -> 0.933 Inexact Rounded -pwsx4568 power 0.0871 0.5 -> 0.295 Inexact Rounded -pwsx4569 power 0.872 0.5 -> 0.934 Inexact Rounded -pwsx4570 power 0.0872 0.5 -> 0.295 Inexact Rounded -pwsx4571 power 0.873 0.5 -> 0.934 Inexact Rounded -pwsx4572 power 0.0873 0.5 -> 0.295 Inexact Rounded -pwsx4573 power 0.874 0.5 -> 0.935 Inexact Rounded -pwsx4574 power 0.0874 0.5 -> 0.296 Inexact Rounded -pwsx4575 power 0.875 0.5 -> 0.935 Inexact Rounded -pwsx4576 power 0.0875 0.5 -> 0.296 Inexact Rounded -pwsx4577 power 0.876 0.5 -> 0.936 Inexact Rounded -pwsx4578 power 0.0876 0.5 -> 0.296 Inexact Rounded -pwsx4579 power 0.877 0.5 -> 0.936 Inexact Rounded -pwsx4580 power 0.0877 0.5 -> 0.296 Inexact Rounded -pwsx4581 power 0.878 0.5 -> 0.937 Inexact Rounded -pwsx4582 power 0.0878 0.5 -> 0.296 Inexact Rounded -pwsx4583 power 0.879 0.5 -> 0.938 Inexact Rounded -pwsx4584 power 0.0879 0.5 -> 0.296 Inexact Rounded -pwsx4585 power 0.881 0.5 -> 0.939 Inexact Rounded -pwsx4586 power 0.0881 0.5 -> 0.297 Inexact Rounded -pwsx4587 power 0.882 0.5 -> 0.939 Inexact Rounded -pwsx4588 power 0.0882 0.5 -> 0.297 Inexact Rounded -pwsx4589 power 0.883 0.5 -> 0.940 Inexact Rounded -pwsx4590 power 0.0883 0.5 -> 0.297 Inexact Rounded -pwsx4591 power 0.884 0.5 -> 0.940 Inexact Rounded -pwsx4592 power 0.0884 0.5 -> 0.297 Inexact Rounded -pwsx4593 power 0.885 0.5 -> 0.941 Inexact Rounded -pwsx4594 power 0.0885 0.5 -> 0.297 Inexact Rounded -pwsx4595 power 0.886 0.5 -> 0.941 Inexact Rounded -pwsx4596 power 0.0886 0.5 -> 0.298 Inexact Rounded -pwsx4597 power 0.887 0.5 -> 0.942 Inexact Rounded -pwsx4598 power 0.0887 0.5 -> 0.298 Inexact Rounded -pwsx4599 power 0.888 0.5 -> 0.942 Inexact Rounded -pwsx4600 power 0.0888 0.5 -> 0.298 Inexact Rounded -pwsx4601 power 0.889 0.5 -> 0.943 Inexact Rounded -pwsx4602 power 0.0889 0.5 -> 0.298 Inexact Rounded -pwsx4603 power 0.891 0.5 -> 0.944 Inexact Rounded -pwsx4604 power 0.0891 0.5 -> 0.298 Inexact Rounded -pwsx4605 power 0.892 0.5 -> 0.944 Inexact Rounded -pwsx4606 power 0.0892 0.5 -> 0.299 Inexact Rounded -pwsx4607 power 0.893 0.5 -> 0.945 Inexact Rounded -pwsx4608 power 0.0893 0.5 -> 0.299 Inexact Rounded -pwsx4609 power 0.894 0.5 -> 0.946 Inexact Rounded -pwsx4610 power 0.0894 0.5 -> 0.299 Inexact Rounded -pwsx4611 power 0.895 0.5 -> 0.946 Inexact Rounded -pwsx4612 power 0.0895 0.5 -> 0.299 Inexact Rounded -pwsx4613 power 0.896 0.5 -> 0.947 Inexact Rounded -pwsx4614 power 0.0896 0.5 -> 0.299 Inexact Rounded -pwsx4615 power 0.897 0.5 -> 0.947 Inexact Rounded -pwsx4616 power 0.0897 0.5 -> 0.299 Inexact Rounded -pwsx4617 power 0.898 0.5 -> 0.948 Inexact Rounded -pwsx4618 power 0.0898 0.5 -> 0.300 Inexact Rounded -pwsx4619 power 0.899 0.5 -> 0.948 Inexact Rounded -pwsx4620 power 0.0899 0.5 -> 0.300 Inexact Rounded -pwsx4621 power 0.901 0.5 -> 0.949 Inexact Rounded -pwsx4622 power 0.0901 0.5 -> 0.300 Inexact Rounded -pwsx4623 power 0.902 0.5 -> 0.950 Inexact Rounded -pwsx4624 power 0.0902 0.5 -> 0.300 Inexact Rounded -pwsx4625 power 0.903 0.5 -> 0.950 Inexact Rounded -pwsx4626 power 0.0903 0.5 -> 0.300 Inexact Rounded -pwsx4627 power 0.904 0.5 -> 0.951 Inexact Rounded -pwsx4628 power 0.0904 0.5 -> 0.301 Inexact Rounded -pwsx4629 power 0.905 0.5 -> 0.951 Inexact Rounded -pwsx4630 power 0.0905 0.5 -> 0.301 Inexact Rounded -pwsx4631 power 0.906 0.5 -> 0.952 Inexact Rounded -pwsx4632 power 0.0906 0.5 -> 0.301 Inexact Rounded -pwsx4633 power 0.907 0.5 -> 0.952 Inexact Rounded -pwsx4634 power 0.0907 0.5 -> 0.301 Inexact Rounded -pwsx4635 power 0.908 0.5 -> 0.953 Inexact Rounded -pwsx4636 power 0.0908 0.5 -> 0.301 Inexact Rounded -pwsx4637 power 0.909 0.5 -> 0.953 Inexact Rounded -pwsx4638 power 0.0909 0.5 -> 0.301 Inexact Rounded -pwsx4639 power 0.911 0.5 -> 0.954 Inexact Rounded -pwsx4640 power 0.0911 0.5 -> 0.302 Inexact Rounded -pwsx4641 power 0.912 0.5 -> 0.955 Inexact Rounded -pwsx4642 power 0.0912 0.5 -> 0.302 Inexact Rounded -pwsx4643 power 0.913 0.5 -> 0.956 Inexact Rounded -pwsx4644 power 0.0913 0.5 -> 0.302 Inexact Rounded -pwsx4645 power 0.914 0.5 -> 0.956 Inexact Rounded -pwsx4646 power 0.0914 0.5 -> 0.302 Inexact Rounded -pwsx4647 power 0.915 0.5 -> 0.957 Inexact Rounded -pwsx4648 power 0.0915 0.5 -> 0.302 Inexact Rounded -pwsx4649 power 0.916 0.5 -> 0.957 Inexact Rounded -pwsx4650 power 0.0916 0.5 -> 0.303 Inexact Rounded -pwsx4651 power 0.917 0.5 -> 0.958 Inexact Rounded -pwsx4652 power 0.0917 0.5 -> 0.303 Inexact Rounded -pwsx4653 power 0.918 0.5 -> 0.958 Inexact Rounded -pwsx4654 power 0.0918 0.5 -> 0.303 Inexact Rounded -pwsx4655 power 0.919 0.5 -> 0.959 Inexact Rounded -pwsx4656 power 0.0919 0.5 -> 0.303 Inexact Rounded -pwsx4657 power 0.921 0.5 -> 0.960 Inexact Rounded -pwsx4658 power 0.0921 0.5 -> 0.303 Inexact Rounded -pwsx4659 power 0.922 0.5 -> 0.960 Inexact Rounded -pwsx4660 power 0.0922 0.5 -> 0.304 Inexact Rounded -pwsx4661 power 0.923 0.5 -> 0.961 Inexact Rounded -pwsx4662 power 0.0923 0.5 -> 0.304 Inexact Rounded -pwsx4663 power 0.924 0.5 -> 0.961 Inexact Rounded -pwsx4664 power 0.0924 0.5 -> 0.304 Inexact Rounded -pwsx4665 power 0.925 0.5 -> 0.962 Inexact Rounded -pwsx4666 power 0.0925 0.5 -> 0.304 Inexact Rounded -pwsx4667 power 0.926 0.5 -> 0.962 Inexact Rounded -pwsx4668 power 0.0926 0.5 -> 0.304 Inexact Rounded -pwsx4669 power 0.927 0.5 -> 0.963 Inexact Rounded -pwsx4670 power 0.0927 0.5 -> 0.304 Inexact Rounded -pwsx4671 power 0.928 0.5 -> 0.963 Inexact Rounded -pwsx4672 power 0.0928 0.5 -> 0.305 Inexact Rounded -pwsx4673 power 0.929 0.5 -> 0.964 Inexact Rounded -pwsx4674 power 0.0929 0.5 -> 0.305 Inexact Rounded -pwsx4675 power 0.931 0.5 -> 0.965 Inexact Rounded -pwsx4676 power 0.0931 0.5 -> 0.305 Inexact Rounded -pwsx4677 power 0.932 0.5 -> 0.965 Inexact Rounded -pwsx4678 power 0.0932 0.5 -> 0.305 Inexact Rounded -pwsx4679 power 0.933 0.5 -> 0.966 Inexact Rounded -pwsx4680 power 0.0933 0.5 -> 0.305 Inexact Rounded -pwsx4681 power 0.934 0.5 -> 0.966 Inexact Rounded -pwsx4682 power 0.0934 0.5 -> 0.306 Inexact Rounded -pwsx4683 power 0.935 0.5 -> 0.967 Inexact Rounded -pwsx4684 power 0.0935 0.5 -> 0.306 Inexact Rounded -pwsx4685 power 0.936 0.5 -> 0.967 Inexact Rounded -pwsx4686 power 0.0936 0.5 -> 0.306 Inexact Rounded -pwsx4687 power 0.937 0.5 -> 0.968 Inexact Rounded -pwsx4688 power 0.0937 0.5 -> 0.306 Inexact Rounded -pwsx4689 power 0.938 0.5 -> 0.969 Inexact Rounded -pwsx4690 power 0.0938 0.5 -> 0.306 Inexact Rounded -pwsx4691 power 0.939 0.5 -> 0.969 Inexact Rounded -pwsx4692 power 0.0939 0.5 -> 0.306 Inexact Rounded -pwsx4693 power 0.941 0.5 -> 0.970 Inexact Rounded -pwsx4694 power 0.0941 0.5 -> 0.307 Inexact Rounded -pwsx4695 power 0.942 0.5 -> 0.971 Inexact Rounded -pwsx4696 power 0.0942 0.5 -> 0.307 Inexact Rounded -pwsx4697 power 0.943 0.5 -> 0.971 Inexact Rounded -pwsx4698 power 0.0943 0.5 -> 0.307 Inexact Rounded -pwsx4699 power 0.944 0.5 -> 0.972 Inexact Rounded -pwsx4700 power 0.0944 0.5 -> 0.307 Inexact Rounded -pwsx4701 power 0.945 0.5 -> 0.972 Inexact Rounded -pwsx4702 power 0.0945 0.5 -> 0.307 Inexact Rounded -pwsx4703 power 0.946 0.5 -> 0.973 Inexact Rounded -pwsx4704 power 0.0946 0.5 -> 0.308 Inexact Rounded -pwsx4705 power 0.947 0.5 -> 0.973 Inexact Rounded -pwsx4706 power 0.0947 0.5 -> 0.308 Inexact Rounded -pwsx4707 power 0.948 0.5 -> 0.974 Inexact Rounded -pwsx4708 power 0.0948 0.5 -> 0.308 Inexact Rounded -pwsx4709 power 0.949 0.5 -> 0.974 Inexact Rounded -pwsx4710 power 0.0949 0.5 -> 0.308 Inexact Rounded -pwsx4711 power 0.951 0.5 -> 0.975 Inexact Rounded -pwsx4712 power 0.0951 0.5 -> 0.308 Inexact Rounded -pwsx4713 power 0.952 0.5 -> 0.976 Inexact Rounded -pwsx4714 power 0.0952 0.5 -> 0.309 Inexact Rounded -pwsx4715 power 0.953 0.5 -> 0.976 Inexact Rounded -pwsx4716 power 0.0953 0.5 -> 0.309 Inexact Rounded -pwsx4717 power 0.954 0.5 -> 0.977 Inexact Rounded -pwsx4718 power 0.0954 0.5 -> 0.309 Inexact Rounded -pwsx4719 power 0.955 0.5 -> 0.977 Inexact Rounded -pwsx4720 power 0.0955 0.5 -> 0.309 Inexact Rounded -pwsx4721 power 0.956 0.5 -> 0.978 Inexact Rounded -pwsx4722 power 0.0956 0.5 -> 0.309 Inexact Rounded -pwsx4723 power 0.957 0.5 -> 0.978 Inexact Rounded -pwsx4724 power 0.0957 0.5 -> 0.309 Inexact Rounded -pwsx4725 power 0.958 0.5 -> 0.979 Inexact Rounded -pwsx4726 power 0.0958 0.5 -> 0.310 Inexact Rounded -pwsx4727 power 0.959 0.5 -> 0.979 Inexact Rounded -pwsx4728 power 0.0959 0.5 -> 0.310 Inexact Rounded -pwsx4729 power 0.961 0.5 -> 0.980 Inexact Rounded -pwsx4730 power 0.0961 0.5 -> 0.310 Inexact Rounded -pwsx4731 power 0.962 0.5 -> 0.981 Inexact Rounded -pwsx4732 power 0.0962 0.5 -> 0.310 Inexact Rounded -pwsx4733 power 0.963 0.5 -> 0.981 Inexact Rounded -pwsx4734 power 0.0963 0.5 -> 0.310 Inexact Rounded -pwsx4735 power 0.964 0.5 -> 0.982 Inexact Rounded -pwsx4736 power 0.0964 0.5 -> 0.310 Inexact Rounded -pwsx4737 power 0.965 0.5 -> 0.982 Inexact Rounded -pwsx4738 power 0.0965 0.5 -> 0.311 Inexact Rounded -pwsx4739 power 0.966 0.5 -> 0.983 Inexact Rounded -pwsx4740 power 0.0966 0.5 -> 0.311 Inexact Rounded -pwsx4741 power 0.967 0.5 -> 0.983 Inexact Rounded -pwsx4742 power 0.0967 0.5 -> 0.311 Inexact Rounded -pwsx4743 power 0.968 0.5 -> 0.984 Inexact Rounded -pwsx4744 power 0.0968 0.5 -> 0.311 Inexact Rounded -pwsx4745 power 0.969 0.5 -> 0.984 Inexact Rounded -pwsx4746 power 0.0969 0.5 -> 0.311 Inexact Rounded -pwsx4747 power 0.971 0.5 -> 0.985 Inexact Rounded -pwsx4748 power 0.0971 0.5 -> 0.312 Inexact Rounded -pwsx4749 power 0.972 0.5 -> 0.986 Inexact Rounded -pwsx4750 power 0.0972 0.5 -> 0.312 Inexact Rounded -pwsx4751 power 0.973 0.5 -> 0.986 Inexact Rounded -pwsx4752 power 0.0973 0.5 -> 0.312 Inexact Rounded -pwsx4753 power 0.974 0.5 -> 0.987 Inexact Rounded -pwsx4754 power 0.0974 0.5 -> 0.312 Inexact Rounded -pwsx4755 power 0.975 0.5 -> 0.987 Inexact Rounded -pwsx4756 power 0.0975 0.5 -> 0.312 Inexact Rounded -pwsx4757 power 0.976 0.5 -> 0.988 Inexact Rounded -pwsx4758 power 0.0976 0.5 -> 0.312 Inexact Rounded -pwsx4759 power 0.977 0.5 -> 0.988 Inexact Rounded -pwsx4760 power 0.0977 0.5 -> 0.313 Inexact Rounded -pwsx4761 power 0.978 0.5 -> 0.989 Inexact Rounded -pwsx4762 power 0.0978 0.5 -> 0.313 Inexact Rounded -pwsx4763 power 0.979 0.5 -> 0.989 Inexact Rounded -pwsx4764 power 0.0979 0.5 -> 0.313 Inexact Rounded -pwsx4765 power 0.981 0.5 -> 0.990 Inexact Rounded -pwsx4766 power 0.0981 0.5 -> 0.313 Inexact Rounded -pwsx4767 power 0.982 0.5 -> 0.991 Inexact Rounded -pwsx4768 power 0.0982 0.5 -> 0.313 Inexact Rounded -pwsx4769 power 0.983 0.5 -> 0.991 Inexact Rounded -pwsx4770 power 0.0983 0.5 -> 0.314 Inexact Rounded -pwsx4771 power 0.984 0.5 -> 0.992 Inexact Rounded -pwsx4772 power 0.0984 0.5 -> 0.314 Inexact Rounded -pwsx4773 power 0.985 0.5 -> 0.992 Inexact Rounded -pwsx4774 power 0.0985 0.5 -> 0.314 Inexact Rounded -pwsx4775 power 0.986 0.5 -> 0.993 Inexact Rounded -pwsx4776 power 0.0986 0.5 -> 0.314 Inexact Rounded -pwsx4777 power 0.987 0.5 -> 0.993 Inexact Rounded -pwsx4778 power 0.0987 0.5 -> 0.314 Inexact Rounded -pwsx4779 power 0.988 0.5 -> 0.994 Inexact Rounded -pwsx4780 power 0.0988 0.5 -> 0.314 Inexact Rounded -pwsx4781 power 0.989 0.5 -> 0.994 Inexact Rounded -pwsx4782 power 0.0989 0.5 -> 0.314 Inexact Rounded -pwsx4783 power 0.991 0.5 -> 0.995 Inexact Rounded -pwsx4784 power 0.0991 0.5 -> 0.315 Inexact Rounded -pwsx4785 power 0.992 0.5 -> 0.996 Inexact Rounded -pwsx4786 power 0.0992 0.5 -> 0.315 Inexact Rounded -pwsx4787 power 0.993 0.5 -> 0.996 Inexact Rounded -pwsx4788 power 0.0993 0.5 -> 0.315 Inexact Rounded -pwsx4789 power 0.994 0.5 -> 0.997 Inexact Rounded -pwsx4790 power 0.0994 0.5 -> 0.315 Inexact Rounded -pwsx4791 power 0.995 0.5 -> 0.997 Inexact Rounded -pwsx4792 power 0.0995 0.5 -> 0.315 Inexact Rounded -pwsx4793 power 0.996 0.5 -> 0.998 Inexact Rounded -pwsx4794 power 0.0996 0.5 -> 0.316 Inexact Rounded -pwsx4795 power 0.997 0.5 -> 0.998 Inexact Rounded -pwsx4796 power 0.0997 0.5 -> 0.316 Inexact Rounded -pwsx4797 power 0.998 0.5 -> 0.999 Inexact Rounded -pwsx4798 power 0.0998 0.5 -> 0.316 Inexact Rounded -pwsx4799 power 0.999 0.5 -> 0.999 Inexact Rounded -pwsx4800 power 0.0999 0.5 -> 0.316 Inexact Rounded - --- A group of precision 4 tests where Hull & Abrham adjustments are --- needed in some cases (both up and down) [see Hull1985b] -rounding: half_even -maxExponent: 999 -minexponent: -999 -precision: 4 -pwsx5001 power 0.0118 0.5 -> 0.1086 Inexact Rounded -pwsx5002 power 0.119 0.5 -> 0.3450 Inexact Rounded -pwsx5003 power 0.0119 0.5 -> 0.1091 Inexact Rounded -pwsx5004 power 0.121 0.5 -> 0.3479 Inexact Rounded -pwsx5005 power 0.0121 0.5 -> 0.1100 Inexact Rounded -pwsx5006 power 0.122 0.5 -> 0.3493 Inexact Rounded -pwsx5007 power 0.0122 0.5 -> 0.1105 Inexact Rounded -pwsx5008 power 0.123 0.5 -> 0.3507 Inexact Rounded -pwsx5009 power 0.494 0.5 -> 0.7029 Inexact Rounded -pwsx5010 power 0.0669 0.5 -> 0.2587 Inexact Rounded -pwsx5011 power 0.9558 0.5 -> 0.9777 Inexact Rounded -pwsx5012 power 0.9348 0.5 -> 0.9669 Inexact Rounded -pwsx5013 power 0.9345 0.5 -> 0.9667 Inexact Rounded -pwsx5014 power 0.09345 0.5 -> 0.3057 Inexact Rounded -pwsx5015 power 0.9346 0.5 -> 0.9667 Inexact Rounded -pwsx5016 power 0.09346 0.5 -> 0.3057 Inexact Rounded -pwsx5017 power 0.9347 0.5 -> 0.9668 Inexact Rounded - --- examples from decArith -precision: 9 -pwsx700 power 0 0.5 -> '0' -pwsx701 power -0 0.5 -> '0' -pwsx702 power 0.39 0.5 -> 0.624499800 Inexact Rounded -pwsx703 power 100 0.5 -> '10.0000000' Inexact Rounded -pwsx704 power 1.00 0.5 -> '1.00000000' Inexact Rounded -pwsx705 power 7 0.5 -> '2.64575131' Inexact Rounded -pwsx706 power 10 0.5 -> 3.16227766 Inexact Rounded - --- some one-offs -precision: 9 -pwsx711 power 0.1 0.5 -> 0.316227766 Inexact Rounded -pwsx712 power 0.2 0.5 -> 0.447213595 Inexact Rounded -pwsx713 power 0.3 0.5 -> 0.547722558 Inexact Rounded -pwsx714 power 0.4 0.5 -> 0.632455532 Inexact Rounded -pwsx715 power 0.5 0.5 -> 0.707106781 Inexact Rounded -pwsx716 power 0.6 0.5 -> 0.774596669 Inexact Rounded -pwsx717 power 0.7 0.5 -> 0.836660027 Inexact Rounded -pwsx718 power 0.8 0.5 -> 0.894427191 Inexact Rounded -pwsx719 power 0.9 0.5 -> 0.948683298 Inexact Rounded -precision: 10 -- note no normalizatoin here -pwsx720 power +0.1 0.5 -> 0.3162277660 Inexact Rounded -precision: 11 -pwsx721 power +0.1 0.5 -> 0.31622776602 Inexact Rounded -precision: 12 -pwsx722 power +0.1 0.5 -> 0.316227766017 Inexact Rounded -precision: 9 -pwsx723 power 0.39 0.5 -> 0.624499800 Inexact Rounded -precision: 15 -pwsx724 power 0.39 0.5 -> 0.624499799839840 Inexact Rounded - --- discussion cases -precision: 7 -pwsx731 power 9 0.5 -> 3.000000 Inexact Rounded -pwsx732 power 100 0.5 -> 10.00000 Inexact Rounded -pwsx733 power 123 0.5 -> 11.09054 Inexact Rounded -pwsx734 power 144 0.5 -> 12.00000 Inexact Rounded -pwsx735 power 156 0.5 -> 12.49000 Inexact Rounded -pwsx736 power 10000 0.5 -> 100.0000 Inexact Rounded - --- values close to overflow (if there were input rounding) -maxexponent: 99 -minexponent: -99 -precision: 5 -pwsx760 power 9.9997E+99 0.5 -> 9.9998E+49 Inexact Rounded -pwsx761 power 9.9998E+99 0.5 -> 9.9999E+49 Inexact Rounded -pwsx762 power 9.9999E+99 0.5 -> 9.9999E+49 Inexact Rounded -pwsx763 power 9.99991E+99 0.5 -> 1.0000E+50 Inexact Rounded -pwsx764 power 9.99994E+99 0.5 -> 1.0000E+50 Inexact Rounded -pwsx765 power 9.99995E+99 0.5 -> 1.0000E+50 Inexact Rounded -pwsx766 power 9.99999E+99 0.5 -> 1.0000E+50 Inexact Rounded -precision: 9 -pwsx770 power 9.9997E+99 0.5 -> 9.99985000E+49 Inexact Rounded -pwsx771 power 9.9998E+99 0.5 -> 9.99990000E+49 Inexact Rounded -pwsx772 power 9.9999E+99 0.5 -> 9.99995000E+49 Inexact Rounded -pwsx773 power 9.99991E+99 0.5 -> 9.99995500E+49 Inexact Rounded -pwsx774 power 9.99994E+99 0.5 -> 9.99997000E+49 Inexact Rounded -pwsx775 power 9.99995E+99 0.5 -> 9.99997500E+49 Inexact Rounded -pwsx776 power 9.99999E+99 0.5 -> 9.99999500E+49 Inexact Rounded -precision: 20 -pwsx780 power 9.9997E+99 0.5 -> '9.9998499988749831247E+49' Inexact Rounded -pwsx781 power 9.9998E+99 0.5 -> '9.9998999994999949999E+49' Inexact Rounded -pwsx782 power 9.9999E+99 0.5 -> '9.9999499998749993750E+49' Inexact Rounded -pwsx783 power 9.99991E+99 0.5 -> '9.9999549998987495444E+49' Inexact Rounded -pwsx784 power 9.99994E+99 0.5 -> '9.9999699999549998650E+49' Inexact Rounded -pwsx785 power 9.99995E+99 0.5 -> '9.9999749999687499219E+49' Inexact Rounded -pwsx786 power 9.99999E+99 0.5 -> '9.9999949999987499994E+49' Inexact Rounded - --- subnormals and underflows [these can only result when eMax is < digits+1] --- Etiny = -(Emax + (precision-1)) --- start with subnormal operands and normal results -maxexponent: 9 -minexponent: -9 -precision: 9 -- Etiny=-17 -pwsx800 power 1E-17 0.5 -> 3.16227766E-9 Inexact Rounded -pwsx801 power 10E-17 0.5 -> 1.00000000E-8 Inexact Rounded -precision: 10 -- Etiny=-18 -pwsx802 power 10E-18 0.5 -> 3.162277660E-9 Inexact Rounded -pwsx803 power 1E-18 0.5 -> 1.000000000E-9 Inexact Rounded - -precision: 11 -- Etiny=-19 -pwsx804 power 1E-19 0.5 -> 3.162277660E-10 Underflow Subnormal Inexact Rounded --- The next test should be skipped for decNumber -pwsx805 power 10E-19 0.5 -> 1.0000000000E-9 Inexact Rounded -precision: 12 -- Etiny=-20 -pwsx806 power 10E-20 0.5 -> 3.1622776602E-10 Underflow Subnormal Inexact Rounded -pwsx807 power 1E-20 0.5 -> 1.0000000000E-10 Underflow Subnormal Inexact Rounded - -precision: 13 -- Etiny=-21 -pwsx808 power 1E-21 0.5 -> 3.1622776602E-11 Underflow Subnormal Inexact Rounded -pwsx809 power 10E-21 0.5 -> 1.00000000000E-10 Underflow Subnormal Inexact Rounded -precision: 14 -- Etiny=-22 -pwsx810 power 1E-21 0.5 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded -pwsx811 power 10E-22 0.5 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded -pwsx812 power 1E-22 0.5 -> 1.00000000000E-11 Underflow Subnormal Inexact Rounded - - --- special values -maxexponent: 999 -minexponent: -999 -pwsx820 power Inf 0.5 -> Infinity -pwsx821 power -Inf 0.5 -> NaN Invalid_operation -pwsx822 power NaN 0.5 -> NaN -pwsx823 power sNaN 0.5 -> NaN Invalid_operation --- propagating NaNs -pwsx824 power sNaN123 0.5 -> NaN123 Invalid_operation -pwsx825 power -sNaN321 0.5 -> -NaN321 Invalid_operation -pwsx826 power NaN456 0.5 -> NaN456 -pwsx827 power -NaN654 0.5 -> -NaN654 -pwsx828 power NaN1 0.5 -> NaN1 - --- Null test -pwsx900 power # 0.5 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- powersqrt.decTest -- decimal square root, using power -- +-- Copyright (c) IBM Corporation, 2004, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- These testcases are taken from squareroot.decTest but are +-- evaluated using the power operator. The differences in results +-- (153 out of 2856) fall into the following categories: +-- +-- x ** 0.5 (x>0) has no preferred exponent, and is Inexact +-- (and hence full precision); almost all differences are +-- in this category +-- 0.00 ** 0.5 becomes 0 (not 0.0), etc. +-- -0 ** 0.5 becomes 0 (never -0) +-- Some exact subnormals become inexact and hence underflows + +extended: 1 +precision: 9 +rounding: half_even +maxExponent: 384 +minexponent: -383 + +-- basics +pwsx001 power 1 0.5 -> 1.00000000 Inexact Rounded +pwsx002 power -1 0.5 -> NaN Invalid_operation +pwsx003 power 1.00 0.5 -> 1.00000000 Inexact Rounded +pwsx004 power -1.00 0.5 -> NaN Invalid_operation +pwsx005 power 0 0.5 -> 0 +pwsx006 power 00.0 0.5 -> 0 +pwsx007 power 0.00 0.5 -> 0 +pwsx008 power 00.00 0.5 -> 0 +pwsx009 power 00.000 0.5 -> 0 +pwsx010 power 00.0000 0.5 -> 0 +pwsx011 power 00 0.5 -> 0 + +pwsx012 power -2 0.5 -> NaN Invalid_operation +pwsx013 power 2 0.5 -> 1.41421356 Inexact Rounded +pwsx014 power -2.00 0.5 -> NaN Invalid_operation +pwsx015 power 2.00 0.5 -> 1.41421356 Inexact Rounded +pwsx016 power -0 0.5 -> 0 +pwsx017 power -0.0 0.5 -> 0 +pwsx018 power -00.00 0.5 -> 0 +pwsx019 power -00.000 0.5 -> 0 +pwsx020 power -0.0000 0.5 -> 0 +pwsx021 power -0E+9 0.5 -> 0 +pwsx022 power -0E+10 0.5 -> 0 +pwsx023 power -0E+11 0.5 -> 0 +pwsx024 power -0E+12 0.5 -> 0 +pwsx025 power -00 0.5 -> 0 +pwsx026 power 0E+5 0.5 -> 0 +pwsx027 power 4.0 0.5 -> 2.00000000 Inexact Rounded +pwsx028 power 4.00 0.5 -> 2.00000000 Inexact Rounded + +pwsx030 power +0.1 0.5 -> 0.316227766 Inexact Rounded +pwsx031 power -0.1 0.5 -> NaN Invalid_operation +pwsx032 power +0.01 0.5 -> 0.100000000 Inexact Rounded +pwsx033 power -0.01 0.5 -> NaN Invalid_operation +pwsx034 power +0.001 0.5 -> 0.0316227766 Inexact Rounded +pwsx035 power -0.001 0.5 -> NaN Invalid_operation +pwsx036 power +0.000001 0.5 -> 0.00100000000 Inexact Rounded +pwsx037 power -0.000001 0.5 -> NaN Invalid_operation +pwsx038 power +0.000000000001 0.5 -> 0.00000100000000 Inexact Rounded +pwsx039 power -0.000000000001 0.5 -> NaN Invalid_operation + +pwsx041 power 1.1 0.5 -> 1.04880885 Inexact Rounded +pwsx042 power 1.10 0.5 -> 1.04880885 Inexact Rounded +pwsx043 power 1.100 0.5 -> 1.04880885 Inexact Rounded +pwsx044 power 1.110 0.5 -> 1.05356538 Inexact Rounded +pwsx045 power -1.1 0.5 -> NaN Invalid_operation +pwsx046 power -1.10 0.5 -> NaN Invalid_operation +pwsx047 power -1.100 0.5 -> NaN Invalid_operation +pwsx048 power -1.110 0.5 -> NaN Invalid_operation +pwsx049 power 9.9 0.5 -> 3.14642654 Inexact Rounded +pwsx050 power 9.90 0.5 -> 3.14642654 Inexact Rounded +pwsx051 power 9.900 0.5 -> 3.14642654 Inexact Rounded +pwsx052 power 9.990 0.5 -> 3.16069613 Inexact Rounded +pwsx053 power -9.9 0.5 -> NaN Invalid_operation +pwsx054 power -9.90 0.5 -> NaN Invalid_operation +pwsx055 power -9.900 0.5 -> NaN Invalid_operation +pwsx056 power -9.990 0.5 -> NaN Invalid_operation + +pwsx060 power 1 0.5 -> 1.00000000 Inexact Rounded +pwsx061 power 1.0 0.5 -> 1.00000000 Inexact Rounded +pwsx062 power 1.00 0.5 -> 1.00000000 Inexact Rounded +pwsx063 power 10.0 0.5 -> 3.16227766 Inexact Rounded +pwsx064 power 10.0 0.5 -> 3.16227766 Inexact Rounded +pwsx065 power 10.0 0.5 -> 3.16227766 Inexact Rounded +pwsx066 power 10.00 0.5 -> 3.16227766 Inexact Rounded +pwsx067 power 100 0.5 -> 10.0000000 Inexact Rounded +pwsx068 power 100.0 0.5 -> 10.0000000 Inexact Rounded +pwsx069 power 100.00 0.5 -> 10.0000000 Inexact Rounded +pwsx070 power 1.1000E+3 0.5 -> 33.1662479 Inexact Rounded +pwsx071 power 1.10000E+3 0.5 -> 33.1662479 Inexact Rounded +pwsx072 power -10.0 0.5 -> NaN Invalid_operation +pwsx073 power -10.00 0.5 -> NaN Invalid_operation +pwsx074 power -100.0 0.5 -> NaN Invalid_operation +pwsx075 power -100.00 0.5 -> NaN Invalid_operation +pwsx076 power -1.1000E+3 0.5 -> NaN Invalid_operation +pwsx077 power -1.10000E+3 0.5 -> NaN Invalid_operation + +-- famous squares +pwsx080 power 1 0.5 -> 1.00000000 Inexact Rounded +pwsx081 power 4 0.5 -> 2.00000000 Inexact Rounded +pwsx082 power 9 0.5 -> 3.00000000 Inexact Rounded +pwsx083 power 16 0.5 -> 4.00000000 Inexact Rounded +pwsx084 power 25 0.5 -> 5.00000000 Inexact Rounded +pwsx085 power 36 0.5 -> 6.00000000 Inexact Rounded +pwsx086 power 49 0.5 -> 7.00000000 Inexact Rounded +pwsx087 power 64 0.5 -> 8.00000000 Inexact Rounded +pwsx088 power 81 0.5 -> 9.00000000 Inexact Rounded +pwsx089 power 100 0.5 -> 10.0000000 Inexact Rounded +pwsx090 power 121 0.5 -> 11.0000000 Inexact Rounded +pwsx091 power 144 0.5 -> 12.0000000 Inexact Rounded +pwsx092 power 169 0.5 -> 13.0000000 Inexact Rounded +pwsx093 power 256 0.5 -> 16.0000000 Inexact Rounded +pwsx094 power 1024 0.5 -> 32.0000000 Inexact Rounded +pwsx095 power 4096 0.5 -> 64.0000000 Inexact Rounded +pwsx100 power 0.01 0.5 -> 0.100000000 Inexact Rounded +pwsx101 power 0.04 0.5 -> 0.200000000 Inexact Rounded +pwsx102 power 0.09 0.5 -> 0.300000000 Inexact Rounded +pwsx103 power 0.16 0.5 -> 0.400000000 Inexact Rounded +pwsx104 power 0.25 0.5 -> 0.500000000 Inexact Rounded +pwsx105 power 0.36 0.5 -> 0.600000000 Inexact Rounded +pwsx106 power 0.49 0.5 -> 0.700000000 Inexact Rounded +pwsx107 power 0.64 0.5 -> 0.800000000 Inexact Rounded +pwsx108 power 0.81 0.5 -> 0.900000000 Inexact Rounded +pwsx109 power 1.00 0.5 -> 1.00000000 Inexact Rounded +pwsx110 power 1.21 0.5 -> 1.10000000 Inexact Rounded +pwsx111 power 1.44 0.5 -> 1.20000000 Inexact Rounded +pwsx112 power 1.69 0.5 -> 1.30000000 Inexact Rounded +pwsx113 power 2.56 0.5 -> 1.60000000 Inexact Rounded +pwsx114 power 10.24 0.5 -> 3.20000000 Inexact Rounded +pwsx115 power 40.96 0.5 -> 6.40000000 Inexact Rounded + +-- Precision 1 squareroot tests [exhaustive, plus exponent adjusts] +rounding: half_even +maxExponent: 999 +minexponent: -999 +precision: 1 +pwsx1201 power 0.1 0.5 -> 0.3 Inexact Rounded +pwsx1202 power 0.01 0.5 -> 0.1 Inexact Rounded +pwsx1203 power 1.0E-1 0.5 -> 0.3 Inexact Rounded +pwsx1204 power 1.00E-2 0.5 -> 0.1 Inexact Rounded +pwsx1205 power 1E-3 0.5 -> 0.03 Inexact Rounded +pwsx1206 power 1E+1 0.5 -> 3 Inexact Rounded +pwsx1207 power 1E+2 0.5 -> 1E+1 Inexact Rounded +pwsx1208 power 1E+3 0.5 -> 3E+1 Inexact Rounded +pwsx1209 power 0.2 0.5 -> 0.4 Inexact Rounded +pwsx1210 power 0.02 0.5 -> 0.1 Inexact Rounded +pwsx1211 power 2.0E-1 0.5 -> 0.4 Inexact Rounded +pwsx1212 power 2.00E-2 0.5 -> 0.1 Inexact Rounded +pwsx1213 power 2E-3 0.5 -> 0.04 Inexact Rounded +pwsx1214 power 2E+1 0.5 -> 4 Inexact Rounded +pwsx1215 power 2E+2 0.5 -> 1E+1 Inexact Rounded +pwsx1216 power 2E+3 0.5 -> 4E+1 Inexact Rounded +pwsx1217 power 0.3 0.5 -> 0.5 Inexact Rounded +pwsx1218 power 0.03 0.5 -> 0.2 Inexact Rounded +pwsx1219 power 3.0E-1 0.5 -> 0.5 Inexact Rounded +pwsx1220 power 3.00E-2 0.5 -> 0.2 Inexact Rounded +pwsx1221 power 3E-3 0.5 -> 0.05 Inexact Rounded +pwsx1222 power 3E+1 0.5 -> 5 Inexact Rounded +pwsx1223 power 3E+2 0.5 -> 2E+1 Inexact Rounded +pwsx1224 power 3E+3 0.5 -> 5E+1 Inexact Rounded +pwsx1225 power 0.4 0.5 -> 0.6 Inexact Rounded +pwsx1226 power 0.04 0.5 -> 0.2 Inexact Rounded +pwsx1227 power 4.0E-1 0.5 -> 0.6 Inexact Rounded +pwsx1228 power 4.00E-2 0.5 -> 0.2 Inexact Rounded +pwsx1229 power 4E-3 0.5 -> 0.06 Inexact Rounded +pwsx1230 power 4E+1 0.5 -> 6 Inexact Rounded +pwsx1231 power 4E+2 0.5 -> 2E+1 Inexact Rounded +pwsx1232 power 4E+3 0.5 -> 6E+1 Inexact Rounded +pwsx1233 power 0.5 0.5 -> 0.7 Inexact Rounded +pwsx1234 power 0.05 0.5 -> 0.2 Inexact Rounded +pwsx1235 power 5.0E-1 0.5 -> 0.7 Inexact Rounded +pwsx1236 power 5.00E-2 0.5 -> 0.2 Inexact Rounded +pwsx1237 power 5E-3 0.5 -> 0.07 Inexact Rounded +pwsx1238 power 5E+1 0.5 -> 7 Inexact Rounded +pwsx1239 power 5E+2 0.5 -> 2E+1 Inexact Rounded +pwsx1240 power 5E+3 0.5 -> 7E+1 Inexact Rounded +pwsx1241 power 0.6 0.5 -> 0.8 Inexact Rounded +pwsx1242 power 0.06 0.5 -> 0.2 Inexact Rounded +pwsx1243 power 6.0E-1 0.5 -> 0.8 Inexact Rounded +pwsx1244 power 6.00E-2 0.5 -> 0.2 Inexact Rounded +pwsx1245 power 6E-3 0.5 -> 0.08 Inexact Rounded +pwsx1246 power 6E+1 0.5 -> 8 Inexact Rounded +pwsx1247 power 6E+2 0.5 -> 2E+1 Inexact Rounded +pwsx1248 power 6E+3 0.5 -> 8E+1 Inexact Rounded +pwsx1249 power 0.7 0.5 -> 0.8 Inexact Rounded +pwsx1250 power 0.07 0.5 -> 0.3 Inexact Rounded +pwsx1251 power 7.0E-1 0.5 -> 0.8 Inexact Rounded +pwsx1252 power 7.00E-2 0.5 -> 0.3 Inexact Rounded +pwsx1253 power 7E-3 0.5 -> 0.08 Inexact Rounded +pwsx1254 power 7E+1 0.5 -> 8 Inexact Rounded +pwsx1255 power 7E+2 0.5 -> 3E+1 Inexact Rounded +pwsx1256 power 7E+3 0.5 -> 8E+1 Inexact Rounded +pwsx1257 power 0.8 0.5 -> 0.9 Inexact Rounded +pwsx1258 power 0.08 0.5 -> 0.3 Inexact Rounded +pwsx1259 power 8.0E-1 0.5 -> 0.9 Inexact Rounded +pwsx1260 power 8.00E-2 0.5 -> 0.3 Inexact Rounded +pwsx1261 power 8E-3 0.5 -> 0.09 Inexact Rounded +pwsx1262 power 8E+1 0.5 -> 9 Inexact Rounded +pwsx1263 power 8E+2 0.5 -> 3E+1 Inexact Rounded +pwsx1264 power 8E+3 0.5 -> 9E+1 Inexact Rounded +pwsx1265 power 0.9 0.5 -> 0.9 Inexact Rounded +pwsx1266 power 0.09 0.5 -> 0.3 Inexact Rounded +pwsx1267 power 9.0E-1 0.5 -> 0.9 Inexact Rounded +pwsx1268 power 9.00E-2 0.5 -> 0.3 Inexact Rounded +pwsx1269 power 9E-3 0.5 -> 0.09 Inexact Rounded +pwsx1270 power 9E+1 0.5 -> 9 Inexact Rounded +pwsx1271 power 9E+2 0.5 -> 3E+1 Inexact Rounded +pwsx1272 power 9E+3 0.5 -> 9E+1 Inexact Rounded + +-- Precision 2 squareroot tests [exhaustive, plus exponent adjusts] +rounding: half_even +maxExponent: 999 +minexponent: -999 +precision: 2 +pwsx2201 power 0.1 0.5 -> 0.32 Inexact Rounded +pwsx2202 power 0.01 0.5 -> 0.10 Inexact Rounded +pwsx2203 power 1.0E-1 0.5 -> 0.32 Inexact Rounded +pwsx2204 power 1.00E-2 0.5 -> 0.10 Inexact Rounded +pwsx2205 power 1E-3 0.5 -> 0.032 Inexact Rounded +pwsx2206 power 1E+1 0.5 -> 3.2 Inexact Rounded +pwsx2207 power 1E+2 0.5 -> 10 Inexact Rounded +pwsx2208 power 1E+3 0.5 -> 32 Inexact Rounded +pwsx2209 power 0.2 0.5 -> 0.45 Inexact Rounded +pwsx2210 power 0.02 0.5 -> 0.14 Inexact Rounded +pwsx2211 power 2.0E-1 0.5 -> 0.45 Inexact Rounded +pwsx2212 power 2.00E-2 0.5 -> 0.14 Inexact Rounded +pwsx2213 power 2E-3 0.5 -> 0.045 Inexact Rounded +pwsx2214 power 2E+1 0.5 -> 4.5 Inexact Rounded +pwsx2215 power 2E+2 0.5 -> 14 Inexact Rounded +pwsx2216 power 2E+3 0.5 -> 45 Inexact Rounded +pwsx2217 power 0.3 0.5 -> 0.55 Inexact Rounded +pwsx2218 power 0.03 0.5 -> 0.17 Inexact Rounded +pwsx2219 power 3.0E-1 0.5 -> 0.55 Inexact Rounded +pwsx2220 power 3.00E-2 0.5 -> 0.17 Inexact Rounded +pwsx2221 power 3E-3 0.5 -> 0.055 Inexact Rounded +pwsx2222 power 3E+1 0.5 -> 5.5 Inexact Rounded +pwsx2223 power 3E+2 0.5 -> 17 Inexact Rounded +pwsx2224 power 3E+3 0.5 -> 55 Inexact Rounded +pwsx2225 power 0.4 0.5 -> 0.63 Inexact Rounded +pwsx2226 power 0.04 0.5 -> 0.20 Inexact Rounded +pwsx2227 power 4.0E-1 0.5 -> 0.63 Inexact Rounded +pwsx2228 power 4.00E-2 0.5 -> 0.20 Inexact Rounded +pwsx2229 power 4E-3 0.5 -> 0.063 Inexact Rounded +pwsx2230 power 4E+1 0.5 -> 6.3 Inexact Rounded +pwsx2231 power 4E+2 0.5 -> 20 Inexact Rounded +pwsx2232 power 4E+3 0.5 -> 63 Inexact Rounded +pwsx2233 power 0.5 0.5 -> 0.71 Inexact Rounded +pwsx2234 power 0.05 0.5 -> 0.22 Inexact Rounded +pwsx2235 power 5.0E-1 0.5 -> 0.71 Inexact Rounded +pwsx2236 power 5.00E-2 0.5 -> 0.22 Inexact Rounded +pwsx2237 power 5E-3 0.5 -> 0.071 Inexact Rounded +pwsx2238 power 5E+1 0.5 -> 7.1 Inexact Rounded +pwsx2239 power 5E+2 0.5 -> 22 Inexact Rounded +pwsx2240 power 5E+3 0.5 -> 71 Inexact Rounded +pwsx2241 power 0.6 0.5 -> 0.77 Inexact Rounded +pwsx2242 power 0.06 0.5 -> 0.24 Inexact Rounded +pwsx2243 power 6.0E-1 0.5 -> 0.77 Inexact Rounded +pwsx2244 power 6.00E-2 0.5 -> 0.24 Inexact Rounded +pwsx2245 power 6E-3 0.5 -> 0.077 Inexact Rounded +pwsx2246 power 6E+1 0.5 -> 7.7 Inexact Rounded +pwsx2247 power 6E+2 0.5 -> 24 Inexact Rounded +pwsx2248 power 6E+3 0.5 -> 77 Inexact Rounded +pwsx2249 power 0.7 0.5 -> 0.84 Inexact Rounded +pwsx2250 power 0.07 0.5 -> 0.26 Inexact Rounded +pwsx2251 power 7.0E-1 0.5 -> 0.84 Inexact Rounded +pwsx2252 power 7.00E-2 0.5 -> 0.26 Inexact Rounded +pwsx2253 power 7E-3 0.5 -> 0.084 Inexact Rounded +pwsx2254 power 7E+1 0.5 -> 8.4 Inexact Rounded +pwsx2255 power 7E+2 0.5 -> 26 Inexact Rounded +pwsx2256 power 7E+3 0.5 -> 84 Inexact Rounded +pwsx2257 power 0.8 0.5 -> 0.89 Inexact Rounded +pwsx2258 power 0.08 0.5 -> 0.28 Inexact Rounded +pwsx2259 power 8.0E-1 0.5 -> 0.89 Inexact Rounded +pwsx2260 power 8.00E-2 0.5 -> 0.28 Inexact Rounded +pwsx2261 power 8E-3 0.5 -> 0.089 Inexact Rounded +pwsx2262 power 8E+1 0.5 -> 8.9 Inexact Rounded +pwsx2263 power 8E+2 0.5 -> 28 Inexact Rounded +pwsx2264 power 8E+3 0.5 -> 89 Inexact Rounded +pwsx2265 power 0.9 0.5 -> 0.95 Inexact Rounded +pwsx2266 power 0.09 0.5 -> 0.30 Inexact Rounded +pwsx2267 power 9.0E-1 0.5 -> 0.95 Inexact Rounded +pwsx2268 power 9.00E-2 0.5 -> 0.30 Inexact Rounded +pwsx2269 power 9E-3 0.5 -> 0.095 Inexact Rounded +pwsx2270 power 9E+1 0.5 -> 9.5 Inexact Rounded +pwsx2271 power 9E+2 0.5 -> 30 Inexact Rounded +pwsx2272 power 9E+3 0.5 -> 95 Inexact Rounded +pwsx2273 power 0.10 0.5 -> 0.32 Inexact Rounded +pwsx2274 power 0.010 0.5 -> 0.10 Inexact Rounded +pwsx2275 power 10.0E-1 0.5 -> 1.0 Inexact Rounded +pwsx2276 power 10.00E-2 0.5 -> 0.32 Inexact Rounded +pwsx2277 power 10E-3 0.5 -> 0.10 Inexact Rounded +pwsx2278 power 10E+1 0.5 -> 10 Inexact Rounded +pwsx2279 power 10E+2 0.5 -> 32 Inexact Rounded +pwsx2280 power 10E+3 0.5 -> 1.0E+2 Inexact Rounded +pwsx2281 power 0.11 0.5 -> 0.33 Inexact Rounded +pwsx2282 power 0.011 0.5 -> 0.10 Inexact Rounded +pwsx2283 power 11.0E-1 0.5 -> 1.0 Inexact Rounded +pwsx2284 power 11.00E-2 0.5 -> 0.33 Inexact Rounded +pwsx2285 power 11E-3 0.5 -> 0.10 Inexact Rounded +pwsx2286 power 11E+1 0.5 -> 10 Inexact Rounded +pwsx2287 power 11E+2 0.5 -> 33 Inexact Rounded +pwsx2288 power 11E+3 0.5 -> 1.0E+2 Inexact Rounded +pwsx2289 power 0.12 0.5 -> 0.35 Inexact Rounded +pwsx2290 power 0.012 0.5 -> 0.11 Inexact Rounded +pwsx2291 power 12.0E-1 0.5 -> 1.1 Inexact Rounded +pwsx2292 power 12.00E-2 0.5 -> 0.35 Inexact Rounded +pwsx2293 power 12E-3 0.5 -> 0.11 Inexact Rounded +pwsx2294 power 12E+1 0.5 -> 11 Inexact Rounded +pwsx2295 power 12E+2 0.5 -> 35 Inexact Rounded +pwsx2296 power 12E+3 0.5 -> 1.1E+2 Inexact Rounded +pwsx2297 power 0.13 0.5 -> 0.36 Inexact Rounded +pwsx2298 power 0.013 0.5 -> 0.11 Inexact Rounded +pwsx2299 power 13.0E-1 0.5 -> 1.1 Inexact Rounded +pwsx2300 power 13.00E-2 0.5 -> 0.36 Inexact Rounded +pwsx2301 power 13E-3 0.5 -> 0.11 Inexact Rounded +pwsx2302 power 13E+1 0.5 -> 11 Inexact Rounded +pwsx2303 power 13E+2 0.5 -> 36 Inexact Rounded +pwsx2304 power 13E+3 0.5 -> 1.1E+2 Inexact Rounded +pwsx2305 power 0.14 0.5 -> 0.37 Inexact Rounded +pwsx2306 power 0.014 0.5 -> 0.12 Inexact Rounded +pwsx2307 power 14.0E-1 0.5 -> 1.2 Inexact Rounded +pwsx2308 power 14.00E-2 0.5 -> 0.37 Inexact Rounded +pwsx2309 power 14E-3 0.5 -> 0.12 Inexact Rounded +pwsx2310 power 14E+1 0.5 -> 12 Inexact Rounded +pwsx2311 power 14E+2 0.5 -> 37 Inexact Rounded +pwsx2312 power 14E+3 0.5 -> 1.2E+2 Inexact Rounded +pwsx2313 power 0.15 0.5 -> 0.39 Inexact Rounded +pwsx2314 power 0.015 0.5 -> 0.12 Inexact Rounded +pwsx2315 power 15.0E-1 0.5 -> 1.2 Inexact Rounded +pwsx2316 power 15.00E-2 0.5 -> 0.39 Inexact Rounded +pwsx2317 power 15E-3 0.5 -> 0.12 Inexact Rounded +pwsx2318 power 15E+1 0.5 -> 12 Inexact Rounded +pwsx2319 power 15E+2 0.5 -> 39 Inexact Rounded +pwsx2320 power 15E+3 0.5 -> 1.2E+2 Inexact Rounded +pwsx2321 power 0.16 0.5 -> 0.40 Inexact Rounded +pwsx2322 power 0.016 0.5 -> 0.13 Inexact Rounded +pwsx2323 power 16.0E-1 0.5 -> 1.3 Inexact Rounded +pwsx2324 power 16.00E-2 0.5 -> 0.40 Inexact Rounded +pwsx2325 power 16E-3 0.5 -> 0.13 Inexact Rounded +pwsx2326 power 16E+1 0.5 -> 13 Inexact Rounded +pwsx2327 power 16E+2 0.5 -> 40 Inexact Rounded +pwsx2328 power 16E+3 0.5 -> 1.3E+2 Inexact Rounded +pwsx2329 power 0.17 0.5 -> 0.41 Inexact Rounded +pwsx2330 power 0.017 0.5 -> 0.13 Inexact Rounded +pwsx2331 power 17.0E-1 0.5 -> 1.3 Inexact Rounded +pwsx2332 power 17.00E-2 0.5 -> 0.41 Inexact Rounded +pwsx2333 power 17E-3 0.5 -> 0.13 Inexact Rounded +pwsx2334 power 17E+1 0.5 -> 13 Inexact Rounded +pwsx2335 power 17E+2 0.5 -> 41 Inexact Rounded +pwsx2336 power 17E+3 0.5 -> 1.3E+2 Inexact Rounded +pwsx2337 power 0.18 0.5 -> 0.42 Inexact Rounded +pwsx2338 power 0.018 0.5 -> 0.13 Inexact Rounded +pwsx2339 power 18.0E-1 0.5 -> 1.3 Inexact Rounded +pwsx2340 power 18.00E-2 0.5 -> 0.42 Inexact Rounded +pwsx2341 power 18E-3 0.5 -> 0.13 Inexact Rounded +pwsx2342 power 18E+1 0.5 -> 13 Inexact Rounded +pwsx2343 power 18E+2 0.5 -> 42 Inexact Rounded +pwsx2344 power 18E+3 0.5 -> 1.3E+2 Inexact Rounded +pwsx2345 power 0.19 0.5 -> 0.44 Inexact Rounded +pwsx2346 power 0.019 0.5 -> 0.14 Inexact Rounded +pwsx2347 power 19.0E-1 0.5 -> 1.4 Inexact Rounded +pwsx2348 power 19.00E-2 0.5 -> 0.44 Inexact Rounded +pwsx2349 power 19E-3 0.5 -> 0.14 Inexact Rounded +pwsx2350 power 19E+1 0.5 -> 14 Inexact Rounded +pwsx2351 power 19E+2 0.5 -> 44 Inexact Rounded +pwsx2352 power 19E+3 0.5 -> 1.4E+2 Inexact Rounded +pwsx2353 power 0.20 0.5 -> 0.45 Inexact Rounded +pwsx2354 power 0.020 0.5 -> 0.14 Inexact Rounded +pwsx2355 power 20.0E-1 0.5 -> 1.4 Inexact Rounded +pwsx2356 power 20.00E-2 0.5 -> 0.45 Inexact Rounded +pwsx2357 power 20E-3 0.5 -> 0.14 Inexact Rounded +pwsx2358 power 20E+1 0.5 -> 14 Inexact Rounded +pwsx2359 power 20E+2 0.5 -> 45 Inexact Rounded +pwsx2360 power 20E+3 0.5 -> 1.4E+2 Inexact Rounded +pwsx2361 power 0.21 0.5 -> 0.46 Inexact Rounded +pwsx2362 power 0.021 0.5 -> 0.14 Inexact Rounded +pwsx2363 power 21.0E-1 0.5 -> 1.4 Inexact Rounded +pwsx2364 power 21.00E-2 0.5 -> 0.46 Inexact Rounded +pwsx2365 power 21E-3 0.5 -> 0.14 Inexact Rounded +pwsx2366 power 21E+1 0.5 -> 14 Inexact Rounded +pwsx2367 power 21E+2 0.5 -> 46 Inexact Rounded +pwsx2368 power 21E+3 0.5 -> 1.4E+2 Inexact Rounded +pwsx2369 power 0.22 0.5 -> 0.47 Inexact Rounded +pwsx2370 power 0.022 0.5 -> 0.15 Inexact Rounded +pwsx2371 power 22.0E-1 0.5 -> 1.5 Inexact Rounded +pwsx2372 power 22.00E-2 0.5 -> 0.47 Inexact Rounded +pwsx2373 power 22E-3 0.5 -> 0.15 Inexact Rounded +pwsx2374 power 22E+1 0.5 -> 15 Inexact Rounded +pwsx2375 power 22E+2 0.5 -> 47 Inexact Rounded +pwsx2376 power 22E+3 0.5 -> 1.5E+2 Inexact Rounded +pwsx2377 power 0.23 0.5 -> 0.48 Inexact Rounded +pwsx2378 power 0.023 0.5 -> 0.15 Inexact Rounded +pwsx2379 power 23.0E-1 0.5 -> 1.5 Inexact Rounded +pwsx2380 power 23.00E-2 0.5 -> 0.48 Inexact Rounded +pwsx2381 power 23E-3 0.5 -> 0.15 Inexact Rounded +pwsx2382 power 23E+1 0.5 -> 15 Inexact Rounded +pwsx2383 power 23E+2 0.5 -> 48 Inexact Rounded +pwsx2384 power 23E+3 0.5 -> 1.5E+2 Inexact Rounded +pwsx2385 power 0.24 0.5 -> 0.49 Inexact Rounded +pwsx2386 power 0.024 0.5 -> 0.15 Inexact Rounded +pwsx2387 power 24.0E-1 0.5 -> 1.5 Inexact Rounded +pwsx2388 power 24.00E-2 0.5 -> 0.49 Inexact Rounded +pwsx2389 power 24E-3 0.5 -> 0.15 Inexact Rounded +pwsx2390 power 24E+1 0.5 -> 15 Inexact Rounded +pwsx2391 power 24E+2 0.5 -> 49 Inexact Rounded +pwsx2392 power 24E+3 0.5 -> 1.5E+2 Inexact Rounded +pwsx2393 power 0.25 0.5 -> 0.50 Inexact Rounded +pwsx2394 power 0.025 0.5 -> 0.16 Inexact Rounded +pwsx2395 power 25.0E-1 0.5 -> 1.6 Inexact Rounded +pwsx2396 power 25.00E-2 0.5 -> 0.50 Inexact Rounded +pwsx2397 power 25E-3 0.5 -> 0.16 Inexact Rounded +pwsx2398 power 25E+1 0.5 -> 16 Inexact Rounded +pwsx2399 power 25E+2 0.5 -> 50 Inexact Rounded +pwsx2400 power 25E+3 0.5 -> 1.6E+2 Inexact Rounded +pwsx2401 power 0.26 0.5 -> 0.51 Inexact Rounded +pwsx2402 power 0.026 0.5 -> 0.16 Inexact Rounded +pwsx2403 power 26.0E-1 0.5 -> 1.6 Inexact Rounded +pwsx2404 power 26.00E-2 0.5 -> 0.51 Inexact Rounded +pwsx2405 power 26E-3 0.5 -> 0.16 Inexact Rounded +pwsx2406 power 26E+1 0.5 -> 16 Inexact Rounded +pwsx2407 power 26E+2 0.5 -> 51 Inexact Rounded +pwsx2408 power 26E+3 0.5 -> 1.6E+2 Inexact Rounded +pwsx2409 power 0.27 0.5 -> 0.52 Inexact Rounded +pwsx2410 power 0.027 0.5 -> 0.16 Inexact Rounded +pwsx2411 power 27.0E-1 0.5 -> 1.6 Inexact Rounded +pwsx2412 power 27.00E-2 0.5 -> 0.52 Inexact Rounded +pwsx2413 power 27E-3 0.5 -> 0.16 Inexact Rounded +pwsx2414 power 27E+1 0.5 -> 16 Inexact Rounded +pwsx2415 power 27E+2 0.5 -> 52 Inexact Rounded +pwsx2416 power 27E+3 0.5 -> 1.6E+2 Inexact Rounded +pwsx2417 power 0.28 0.5 -> 0.53 Inexact Rounded +pwsx2418 power 0.028 0.5 -> 0.17 Inexact Rounded +pwsx2419 power 28.0E-1 0.5 -> 1.7 Inexact Rounded +pwsx2420 power 28.00E-2 0.5 -> 0.53 Inexact Rounded +pwsx2421 power 28E-3 0.5 -> 0.17 Inexact Rounded +pwsx2422 power 28E+1 0.5 -> 17 Inexact Rounded +pwsx2423 power 28E+2 0.5 -> 53 Inexact Rounded +pwsx2424 power 28E+3 0.5 -> 1.7E+2 Inexact Rounded +pwsx2425 power 0.29 0.5 -> 0.54 Inexact Rounded +pwsx2426 power 0.029 0.5 -> 0.17 Inexact Rounded +pwsx2427 power 29.0E-1 0.5 -> 1.7 Inexact Rounded +pwsx2428 power 29.00E-2 0.5 -> 0.54 Inexact Rounded +pwsx2429 power 29E-3 0.5 -> 0.17 Inexact Rounded +pwsx2430 power 29E+1 0.5 -> 17 Inexact Rounded +pwsx2431 power 29E+2 0.5 -> 54 Inexact Rounded +pwsx2432 power 29E+3 0.5 -> 1.7E+2 Inexact Rounded +pwsx2433 power 0.30 0.5 -> 0.55 Inexact Rounded +pwsx2434 power 0.030 0.5 -> 0.17 Inexact Rounded +pwsx2435 power 30.0E-1 0.5 -> 1.7 Inexact Rounded +pwsx2436 power 30.00E-2 0.5 -> 0.55 Inexact Rounded +pwsx2437 power 30E-3 0.5 -> 0.17 Inexact Rounded +pwsx2438 power 30E+1 0.5 -> 17 Inexact Rounded +pwsx2439 power 30E+2 0.5 -> 55 Inexact Rounded +pwsx2440 power 30E+3 0.5 -> 1.7E+2 Inexact Rounded +pwsx2441 power 0.31 0.5 -> 0.56 Inexact Rounded +pwsx2442 power 0.031 0.5 -> 0.18 Inexact Rounded +pwsx2443 power 31.0E-1 0.5 -> 1.8 Inexact Rounded +pwsx2444 power 31.00E-2 0.5 -> 0.56 Inexact Rounded +pwsx2445 power 31E-3 0.5 -> 0.18 Inexact Rounded +pwsx2446 power 31E+1 0.5 -> 18 Inexact Rounded +pwsx2447 power 31E+2 0.5 -> 56 Inexact Rounded +pwsx2448 power 31E+3 0.5 -> 1.8E+2 Inexact Rounded +pwsx2449 power 0.32 0.5 -> 0.57 Inexact Rounded +pwsx2450 power 0.032 0.5 -> 0.18 Inexact Rounded +pwsx2451 power 32.0E-1 0.5 -> 1.8 Inexact Rounded +pwsx2452 power 32.00E-2 0.5 -> 0.57 Inexact Rounded +pwsx2453 power 32E-3 0.5 -> 0.18 Inexact Rounded +pwsx2454 power 32E+1 0.5 -> 18 Inexact Rounded +pwsx2455 power 32E+2 0.5 -> 57 Inexact Rounded +pwsx2456 power 32E+3 0.5 -> 1.8E+2 Inexact Rounded +pwsx2457 power 0.33 0.5 -> 0.57 Inexact Rounded +pwsx2458 power 0.033 0.5 -> 0.18 Inexact Rounded +pwsx2459 power 33.0E-1 0.5 -> 1.8 Inexact Rounded +pwsx2460 power 33.00E-2 0.5 -> 0.57 Inexact Rounded +pwsx2461 power 33E-3 0.5 -> 0.18 Inexact Rounded +pwsx2462 power 33E+1 0.5 -> 18 Inexact Rounded +pwsx2463 power 33E+2 0.5 -> 57 Inexact Rounded +pwsx2464 power 33E+3 0.5 -> 1.8E+2 Inexact Rounded +pwsx2465 power 0.34 0.5 -> 0.58 Inexact Rounded +pwsx2466 power 0.034 0.5 -> 0.18 Inexact Rounded +pwsx2467 power 34.0E-1 0.5 -> 1.8 Inexact Rounded +pwsx2468 power 34.00E-2 0.5 -> 0.58 Inexact Rounded +pwsx2469 power 34E-3 0.5 -> 0.18 Inexact Rounded +pwsx2470 power 34E+1 0.5 -> 18 Inexact Rounded +pwsx2471 power 34E+2 0.5 -> 58 Inexact Rounded +pwsx2472 power 34E+3 0.5 -> 1.8E+2 Inexact Rounded +pwsx2473 power 0.35 0.5 -> 0.59 Inexact Rounded +pwsx2474 power 0.035 0.5 -> 0.19 Inexact Rounded +pwsx2475 power 35.0E-1 0.5 -> 1.9 Inexact Rounded +pwsx2476 power 35.00E-2 0.5 -> 0.59 Inexact Rounded +pwsx2477 power 35E-3 0.5 -> 0.19 Inexact Rounded +pwsx2478 power 35E+1 0.5 -> 19 Inexact Rounded +pwsx2479 power 35E+2 0.5 -> 59 Inexact Rounded +pwsx2480 power 35E+3 0.5 -> 1.9E+2 Inexact Rounded +pwsx2481 power 0.36 0.5 -> 0.60 Inexact Rounded +pwsx2482 power 0.036 0.5 -> 0.19 Inexact Rounded +pwsx2483 power 36.0E-1 0.5 -> 1.9 Inexact Rounded +pwsx2484 power 36.00E-2 0.5 -> 0.60 Inexact Rounded +pwsx2485 power 36E-3 0.5 -> 0.19 Inexact Rounded +pwsx2486 power 36E+1 0.5 -> 19 Inexact Rounded +pwsx2487 power 36E+2 0.5 -> 60 Inexact Rounded +pwsx2488 power 36E+3 0.5 -> 1.9E+2 Inexact Rounded +pwsx2489 power 0.37 0.5 -> 0.61 Inexact Rounded +pwsx2490 power 0.037 0.5 -> 0.19 Inexact Rounded +pwsx2491 power 37.0E-1 0.5 -> 1.9 Inexact Rounded +pwsx2492 power 37.00E-2 0.5 -> 0.61 Inexact Rounded +pwsx2493 power 37E-3 0.5 -> 0.19 Inexact Rounded +pwsx2494 power 37E+1 0.5 -> 19 Inexact Rounded +pwsx2495 power 37E+2 0.5 -> 61 Inexact Rounded +pwsx2496 power 37E+3 0.5 -> 1.9E+2 Inexact Rounded +pwsx2497 power 0.38 0.5 -> 0.62 Inexact Rounded +pwsx2498 power 0.038 0.5 -> 0.19 Inexact Rounded +pwsx2499 power 38.0E-1 0.5 -> 1.9 Inexact Rounded +pwsx2500 power 38.00E-2 0.5 -> 0.62 Inexact Rounded +pwsx2501 power 38E-3 0.5 -> 0.19 Inexact Rounded +pwsx2502 power 38E+1 0.5 -> 19 Inexact Rounded +pwsx2503 power 38E+2 0.5 -> 62 Inexact Rounded +pwsx2504 power 38E+3 0.5 -> 1.9E+2 Inexact Rounded +pwsx2505 power 0.39 0.5 -> 0.62 Inexact Rounded +pwsx2506 power 0.039 0.5 -> 0.20 Inexact Rounded +pwsx2507 power 39.0E-1 0.5 -> 2.0 Inexact Rounded +pwsx2508 power 39.00E-2 0.5 -> 0.62 Inexact Rounded +pwsx2509 power 39E-3 0.5 -> 0.20 Inexact Rounded +pwsx2510 power 39E+1 0.5 -> 20 Inexact Rounded +pwsx2511 power 39E+2 0.5 -> 62 Inexact Rounded +pwsx2512 power 39E+3 0.5 -> 2.0E+2 Inexact Rounded +pwsx2513 power 0.40 0.5 -> 0.63 Inexact Rounded +pwsx2514 power 0.040 0.5 -> 0.20 Inexact Rounded +pwsx2515 power 40.0E-1 0.5 -> 2.0 Inexact Rounded +pwsx2516 power 40.00E-2 0.5 -> 0.63 Inexact Rounded +pwsx2517 power 40E-3 0.5 -> 0.20 Inexact Rounded +pwsx2518 power 40E+1 0.5 -> 20 Inexact Rounded +pwsx2519 power 40E+2 0.5 -> 63 Inexact Rounded +pwsx2520 power 40E+3 0.5 -> 2.0E+2 Inexact Rounded +pwsx2521 power 0.41 0.5 -> 0.64 Inexact Rounded +pwsx2522 power 0.041 0.5 -> 0.20 Inexact Rounded +pwsx2523 power 41.0E-1 0.5 -> 2.0 Inexact Rounded +pwsx2524 power 41.00E-2 0.5 -> 0.64 Inexact Rounded +pwsx2525 power 41E-3 0.5 -> 0.20 Inexact Rounded +pwsx2526 power 41E+1 0.5 -> 20 Inexact Rounded +pwsx2527 power 41E+2 0.5 -> 64 Inexact Rounded +pwsx2528 power 41E+3 0.5 -> 2.0E+2 Inexact Rounded +pwsx2529 power 0.42 0.5 -> 0.65 Inexact Rounded +pwsx2530 power 0.042 0.5 -> 0.20 Inexact Rounded +pwsx2531 power 42.0E-1 0.5 -> 2.0 Inexact Rounded +pwsx2532 power 42.00E-2 0.5 -> 0.65 Inexact Rounded +pwsx2533 power 42E-3 0.5 -> 0.20 Inexact Rounded +pwsx2534 power 42E+1 0.5 -> 20 Inexact Rounded +pwsx2535 power 42E+2 0.5 -> 65 Inexact Rounded +pwsx2536 power 42E+3 0.5 -> 2.0E+2 Inexact Rounded +pwsx2537 power 0.43 0.5 -> 0.66 Inexact Rounded +pwsx2538 power 0.043 0.5 -> 0.21 Inexact Rounded +pwsx2539 power 43.0E-1 0.5 -> 2.1 Inexact Rounded +pwsx2540 power 43.00E-2 0.5 -> 0.66 Inexact Rounded +pwsx2541 power 43E-3 0.5 -> 0.21 Inexact Rounded +pwsx2542 power 43E+1 0.5 -> 21 Inexact Rounded +pwsx2543 power 43E+2 0.5 -> 66 Inexact Rounded +pwsx2544 power 43E+3 0.5 -> 2.1E+2 Inexact Rounded +pwsx2545 power 0.44 0.5 -> 0.66 Inexact Rounded +pwsx2546 power 0.044 0.5 -> 0.21 Inexact Rounded +pwsx2547 power 44.0E-1 0.5 -> 2.1 Inexact Rounded +pwsx2548 power 44.00E-2 0.5 -> 0.66 Inexact Rounded +pwsx2549 power 44E-3 0.5 -> 0.21 Inexact Rounded +pwsx2550 power 44E+1 0.5 -> 21 Inexact Rounded +pwsx2551 power 44E+2 0.5 -> 66 Inexact Rounded +pwsx2552 power 44E+3 0.5 -> 2.1E+2 Inexact Rounded +pwsx2553 power 0.45 0.5 -> 0.67 Inexact Rounded +pwsx2554 power 0.045 0.5 -> 0.21 Inexact Rounded +pwsx2555 power 45.0E-1 0.5 -> 2.1 Inexact Rounded +pwsx2556 power 45.00E-2 0.5 -> 0.67 Inexact Rounded +pwsx2557 power 45E-3 0.5 -> 0.21 Inexact Rounded +pwsx2558 power 45E+1 0.5 -> 21 Inexact Rounded +pwsx2559 power 45E+2 0.5 -> 67 Inexact Rounded +pwsx2560 power 45E+3 0.5 -> 2.1E+2 Inexact Rounded +pwsx2561 power 0.46 0.5 -> 0.68 Inexact Rounded +pwsx2562 power 0.046 0.5 -> 0.21 Inexact Rounded +pwsx2563 power 46.0E-1 0.5 -> 2.1 Inexact Rounded +pwsx2564 power 46.00E-2 0.5 -> 0.68 Inexact Rounded +pwsx2565 power 46E-3 0.5 -> 0.21 Inexact Rounded +pwsx2566 power 46E+1 0.5 -> 21 Inexact Rounded +pwsx2567 power 46E+2 0.5 -> 68 Inexact Rounded +pwsx2568 power 46E+3 0.5 -> 2.1E+2 Inexact Rounded +pwsx2569 power 0.47 0.5 -> 0.69 Inexact Rounded +pwsx2570 power 0.047 0.5 -> 0.22 Inexact Rounded +pwsx2571 power 47.0E-1 0.5 -> 2.2 Inexact Rounded +pwsx2572 power 47.00E-2 0.5 -> 0.69 Inexact Rounded +pwsx2573 power 47E-3 0.5 -> 0.22 Inexact Rounded +pwsx2574 power 47E+1 0.5 -> 22 Inexact Rounded +pwsx2575 power 47E+2 0.5 -> 69 Inexact Rounded +pwsx2576 power 47E+3 0.5 -> 2.2E+2 Inexact Rounded +pwsx2577 power 0.48 0.5 -> 0.69 Inexact Rounded +pwsx2578 power 0.048 0.5 -> 0.22 Inexact Rounded +pwsx2579 power 48.0E-1 0.5 -> 2.2 Inexact Rounded +pwsx2580 power 48.00E-2 0.5 -> 0.69 Inexact Rounded +pwsx2581 power 48E-3 0.5 -> 0.22 Inexact Rounded +pwsx2582 power 48E+1 0.5 -> 22 Inexact Rounded +pwsx2583 power 48E+2 0.5 -> 69 Inexact Rounded +pwsx2584 power 48E+3 0.5 -> 2.2E+2 Inexact Rounded +pwsx2585 power 0.49 0.5 -> 0.70 Inexact Rounded +pwsx2586 power 0.049 0.5 -> 0.22 Inexact Rounded +pwsx2587 power 49.0E-1 0.5 -> 2.2 Inexact Rounded +pwsx2588 power 49.00E-2 0.5 -> 0.70 Inexact Rounded +pwsx2589 power 49E-3 0.5 -> 0.22 Inexact Rounded +pwsx2590 power 49E+1 0.5 -> 22 Inexact Rounded +pwsx2591 power 49E+2 0.5 -> 70 Inexact Rounded +pwsx2592 power 49E+3 0.5 -> 2.2E+2 Inexact Rounded +pwsx2593 power 0.50 0.5 -> 0.71 Inexact Rounded +pwsx2594 power 0.050 0.5 -> 0.22 Inexact Rounded +pwsx2595 power 50.0E-1 0.5 -> 2.2 Inexact Rounded +pwsx2596 power 50.00E-2 0.5 -> 0.71 Inexact Rounded +pwsx2597 power 50E-3 0.5 -> 0.22 Inexact Rounded +pwsx2598 power 50E+1 0.5 -> 22 Inexact Rounded +pwsx2599 power 50E+2 0.5 -> 71 Inexact Rounded +pwsx2600 power 50E+3 0.5 -> 2.2E+2 Inexact Rounded +pwsx2601 power 0.51 0.5 -> 0.71 Inexact Rounded +pwsx2602 power 0.051 0.5 -> 0.23 Inexact Rounded +pwsx2603 power 51.0E-1 0.5 -> 2.3 Inexact Rounded +pwsx2604 power 51.00E-2 0.5 -> 0.71 Inexact Rounded +pwsx2605 power 51E-3 0.5 -> 0.23 Inexact Rounded +pwsx2606 power 51E+1 0.5 -> 23 Inexact Rounded +pwsx2607 power 51E+2 0.5 -> 71 Inexact Rounded +pwsx2608 power 51E+3 0.5 -> 2.3E+2 Inexact Rounded +pwsx2609 power 0.52 0.5 -> 0.72 Inexact Rounded +pwsx2610 power 0.052 0.5 -> 0.23 Inexact Rounded +pwsx2611 power 52.0E-1 0.5 -> 2.3 Inexact Rounded +pwsx2612 power 52.00E-2 0.5 -> 0.72 Inexact Rounded +pwsx2613 power 52E-3 0.5 -> 0.23 Inexact Rounded +pwsx2614 power 52E+1 0.5 -> 23 Inexact Rounded +pwsx2615 power 52E+2 0.5 -> 72 Inexact Rounded +pwsx2616 power 52E+3 0.5 -> 2.3E+2 Inexact Rounded +pwsx2617 power 0.53 0.5 -> 0.73 Inexact Rounded +pwsx2618 power 0.053 0.5 -> 0.23 Inexact Rounded +pwsx2619 power 53.0E-1 0.5 -> 2.3 Inexact Rounded +pwsx2620 power 53.00E-2 0.5 -> 0.73 Inexact Rounded +pwsx2621 power 53E-3 0.5 -> 0.23 Inexact Rounded +pwsx2622 power 53E+1 0.5 -> 23 Inexact Rounded +pwsx2623 power 53E+2 0.5 -> 73 Inexact Rounded +pwsx2624 power 53E+3 0.5 -> 2.3E+2 Inexact Rounded +pwsx2625 power 0.54 0.5 -> 0.73 Inexact Rounded +pwsx2626 power 0.054 0.5 -> 0.23 Inexact Rounded +pwsx2627 power 54.0E-1 0.5 -> 2.3 Inexact Rounded +pwsx2628 power 54.00E-2 0.5 -> 0.73 Inexact Rounded +pwsx2629 power 54E-3 0.5 -> 0.23 Inexact Rounded +pwsx2630 power 54E+1 0.5 -> 23 Inexact Rounded +pwsx2631 power 54E+2 0.5 -> 73 Inexact Rounded +pwsx2632 power 54E+3 0.5 -> 2.3E+2 Inexact Rounded +pwsx2633 power 0.55 0.5 -> 0.74 Inexact Rounded +pwsx2634 power 0.055 0.5 -> 0.23 Inexact Rounded +pwsx2635 power 55.0E-1 0.5 -> 2.3 Inexact Rounded +pwsx2636 power 55.00E-2 0.5 -> 0.74 Inexact Rounded +pwsx2637 power 55E-3 0.5 -> 0.23 Inexact Rounded +pwsx2638 power 55E+1 0.5 -> 23 Inexact Rounded +pwsx2639 power 55E+2 0.5 -> 74 Inexact Rounded +pwsx2640 power 55E+3 0.5 -> 2.3E+2 Inexact Rounded +pwsx2641 power 0.56 0.5 -> 0.75 Inexact Rounded +pwsx2642 power 0.056 0.5 -> 0.24 Inexact Rounded +pwsx2643 power 56.0E-1 0.5 -> 2.4 Inexact Rounded +pwsx2644 power 56.00E-2 0.5 -> 0.75 Inexact Rounded +pwsx2645 power 56E-3 0.5 -> 0.24 Inexact Rounded +pwsx2646 power 56E+1 0.5 -> 24 Inexact Rounded +pwsx2647 power 56E+2 0.5 -> 75 Inexact Rounded +pwsx2648 power 56E+3 0.5 -> 2.4E+2 Inexact Rounded +pwsx2649 power 0.57 0.5 -> 0.75 Inexact Rounded +pwsx2650 power 0.057 0.5 -> 0.24 Inexact Rounded +pwsx2651 power 57.0E-1 0.5 -> 2.4 Inexact Rounded +pwsx2652 power 57.00E-2 0.5 -> 0.75 Inexact Rounded +pwsx2653 power 57E-3 0.5 -> 0.24 Inexact Rounded +pwsx2654 power 57E+1 0.5 -> 24 Inexact Rounded +pwsx2655 power 57E+2 0.5 -> 75 Inexact Rounded +pwsx2656 power 57E+3 0.5 -> 2.4E+2 Inexact Rounded +pwsx2657 power 0.58 0.5 -> 0.76 Inexact Rounded +pwsx2658 power 0.058 0.5 -> 0.24 Inexact Rounded +pwsx2659 power 58.0E-1 0.5 -> 2.4 Inexact Rounded +pwsx2660 power 58.00E-2 0.5 -> 0.76 Inexact Rounded +pwsx2661 power 58E-3 0.5 -> 0.24 Inexact Rounded +pwsx2662 power 58E+1 0.5 -> 24 Inexact Rounded +pwsx2663 power 58E+2 0.5 -> 76 Inexact Rounded +pwsx2664 power 58E+3 0.5 -> 2.4E+2 Inexact Rounded +pwsx2665 power 0.59 0.5 -> 0.77 Inexact Rounded +pwsx2666 power 0.059 0.5 -> 0.24 Inexact Rounded +pwsx2667 power 59.0E-1 0.5 -> 2.4 Inexact Rounded +pwsx2668 power 59.00E-2 0.5 -> 0.77 Inexact Rounded +pwsx2669 power 59E-3 0.5 -> 0.24 Inexact Rounded +pwsx2670 power 59E+1 0.5 -> 24 Inexact Rounded +pwsx2671 power 59E+2 0.5 -> 77 Inexact Rounded +pwsx2672 power 59E+3 0.5 -> 2.4E+2 Inexact Rounded +pwsx2673 power 0.60 0.5 -> 0.77 Inexact Rounded +pwsx2674 power 0.060 0.5 -> 0.24 Inexact Rounded +pwsx2675 power 60.0E-1 0.5 -> 2.4 Inexact Rounded +pwsx2676 power 60.00E-2 0.5 -> 0.77 Inexact Rounded +pwsx2677 power 60E-3 0.5 -> 0.24 Inexact Rounded +pwsx2678 power 60E+1 0.5 -> 24 Inexact Rounded +pwsx2679 power 60E+2 0.5 -> 77 Inexact Rounded +pwsx2680 power 60E+3 0.5 -> 2.4E+2 Inexact Rounded +pwsx2681 power 0.61 0.5 -> 0.78 Inexact Rounded +pwsx2682 power 0.061 0.5 -> 0.25 Inexact Rounded +pwsx2683 power 61.0E-1 0.5 -> 2.5 Inexact Rounded +pwsx2684 power 61.00E-2 0.5 -> 0.78 Inexact Rounded +pwsx2685 power 61E-3 0.5 -> 0.25 Inexact Rounded +pwsx2686 power 61E+1 0.5 -> 25 Inexact Rounded +pwsx2687 power 61E+2 0.5 -> 78 Inexact Rounded +pwsx2688 power 61E+3 0.5 -> 2.5E+2 Inexact Rounded +pwsx2689 power 0.62 0.5 -> 0.79 Inexact Rounded +pwsx2690 power 0.062 0.5 -> 0.25 Inexact Rounded +pwsx2691 power 62.0E-1 0.5 -> 2.5 Inexact Rounded +pwsx2692 power 62.00E-2 0.5 -> 0.79 Inexact Rounded +pwsx2693 power 62E-3 0.5 -> 0.25 Inexact Rounded +pwsx2694 power 62E+1 0.5 -> 25 Inexact Rounded +pwsx2695 power 62E+2 0.5 -> 79 Inexact Rounded +pwsx2696 power 62E+3 0.5 -> 2.5E+2 Inexact Rounded +pwsx2697 power 0.63 0.5 -> 0.79 Inexact Rounded +pwsx2698 power 0.063 0.5 -> 0.25 Inexact Rounded +pwsx2699 power 63.0E-1 0.5 -> 2.5 Inexact Rounded +pwsx2700 power 63.00E-2 0.5 -> 0.79 Inexact Rounded +pwsx2701 power 63E-3 0.5 -> 0.25 Inexact Rounded +pwsx2702 power 63E+1 0.5 -> 25 Inexact Rounded +pwsx2703 power 63E+2 0.5 -> 79 Inexact Rounded +pwsx2704 power 63E+3 0.5 -> 2.5E+2 Inexact Rounded +pwsx2705 power 0.64 0.5 -> 0.80 Inexact Rounded +pwsx2706 power 0.064 0.5 -> 0.25 Inexact Rounded +pwsx2707 power 64.0E-1 0.5 -> 2.5 Inexact Rounded +pwsx2708 power 64.00E-2 0.5 -> 0.80 Inexact Rounded +pwsx2709 power 64E-3 0.5 -> 0.25 Inexact Rounded +pwsx2710 power 64E+1 0.5 -> 25 Inexact Rounded +pwsx2711 power 64E+2 0.5 -> 80 Inexact Rounded +pwsx2712 power 64E+3 0.5 -> 2.5E+2 Inexact Rounded +pwsx2713 power 0.65 0.5 -> 0.81 Inexact Rounded +pwsx2714 power 0.065 0.5 -> 0.25 Inexact Rounded +pwsx2715 power 65.0E-1 0.5 -> 2.5 Inexact Rounded +pwsx2716 power 65.00E-2 0.5 -> 0.81 Inexact Rounded +pwsx2717 power 65E-3 0.5 -> 0.25 Inexact Rounded +pwsx2718 power 65E+1 0.5 -> 25 Inexact Rounded +pwsx2719 power 65E+2 0.5 -> 81 Inexact Rounded +pwsx2720 power 65E+3 0.5 -> 2.5E+2 Inexact Rounded +pwsx2721 power 0.66 0.5 -> 0.81 Inexact Rounded +pwsx2722 power 0.066 0.5 -> 0.26 Inexact Rounded +pwsx2723 power 66.0E-1 0.5 -> 2.6 Inexact Rounded +pwsx2724 power 66.00E-2 0.5 -> 0.81 Inexact Rounded +pwsx2725 power 66E-3 0.5 -> 0.26 Inexact Rounded +pwsx2726 power 66E+1 0.5 -> 26 Inexact Rounded +pwsx2727 power 66E+2 0.5 -> 81 Inexact Rounded +pwsx2728 power 66E+3 0.5 -> 2.6E+2 Inexact Rounded +pwsx2729 power 0.67 0.5 -> 0.82 Inexact Rounded +pwsx2730 power 0.067 0.5 -> 0.26 Inexact Rounded +pwsx2731 power 67.0E-1 0.5 -> 2.6 Inexact Rounded +pwsx2732 power 67.00E-2 0.5 -> 0.82 Inexact Rounded +pwsx2733 power 67E-3 0.5 -> 0.26 Inexact Rounded +pwsx2734 power 67E+1 0.5 -> 26 Inexact Rounded +pwsx2735 power 67E+2 0.5 -> 82 Inexact Rounded +pwsx2736 power 67E+3 0.5 -> 2.6E+2 Inexact Rounded +pwsx2737 power 0.68 0.5 -> 0.82 Inexact Rounded +pwsx2738 power 0.068 0.5 -> 0.26 Inexact Rounded +pwsx2739 power 68.0E-1 0.5 -> 2.6 Inexact Rounded +pwsx2740 power 68.00E-2 0.5 -> 0.82 Inexact Rounded +pwsx2741 power 68E-3 0.5 -> 0.26 Inexact Rounded +pwsx2742 power 68E+1 0.5 -> 26 Inexact Rounded +pwsx2743 power 68E+2 0.5 -> 82 Inexact Rounded +pwsx2744 power 68E+3 0.5 -> 2.6E+2 Inexact Rounded +pwsx2745 power 0.69 0.5 -> 0.83 Inexact Rounded +pwsx2746 power 0.069 0.5 -> 0.26 Inexact Rounded +pwsx2747 power 69.0E-1 0.5 -> 2.6 Inexact Rounded +pwsx2748 power 69.00E-2 0.5 -> 0.83 Inexact Rounded +pwsx2749 power 69E-3 0.5 -> 0.26 Inexact Rounded +pwsx2750 power 69E+1 0.5 -> 26 Inexact Rounded +pwsx2751 power 69E+2 0.5 -> 83 Inexact Rounded +pwsx2752 power 69E+3 0.5 -> 2.6E+2 Inexact Rounded +pwsx2753 power 0.70 0.5 -> 0.84 Inexact Rounded +pwsx2754 power 0.070 0.5 -> 0.26 Inexact Rounded +pwsx2755 power 70.0E-1 0.5 -> 2.6 Inexact Rounded +pwsx2756 power 70.00E-2 0.5 -> 0.84 Inexact Rounded +pwsx2757 power 70E-3 0.5 -> 0.26 Inexact Rounded +pwsx2758 power 70E+1 0.5 -> 26 Inexact Rounded +pwsx2759 power 70E+2 0.5 -> 84 Inexact Rounded +pwsx2760 power 70E+3 0.5 -> 2.6E+2 Inexact Rounded +pwsx2761 power 0.71 0.5 -> 0.84 Inexact Rounded +pwsx2762 power 0.071 0.5 -> 0.27 Inexact Rounded +pwsx2763 power 71.0E-1 0.5 -> 2.7 Inexact Rounded +pwsx2764 power 71.00E-2 0.5 -> 0.84 Inexact Rounded +pwsx2765 power 71E-3 0.5 -> 0.27 Inexact Rounded +pwsx2766 power 71E+1 0.5 -> 27 Inexact Rounded +pwsx2767 power 71E+2 0.5 -> 84 Inexact Rounded +pwsx2768 power 71E+3 0.5 -> 2.7E+2 Inexact Rounded +pwsx2769 power 0.72 0.5 -> 0.85 Inexact Rounded +pwsx2770 power 0.072 0.5 -> 0.27 Inexact Rounded +pwsx2771 power 72.0E-1 0.5 -> 2.7 Inexact Rounded +pwsx2772 power 72.00E-2 0.5 -> 0.85 Inexact Rounded +pwsx2773 power 72E-3 0.5 -> 0.27 Inexact Rounded +pwsx2774 power 72E+1 0.5 -> 27 Inexact Rounded +pwsx2775 power 72E+2 0.5 -> 85 Inexact Rounded +pwsx2776 power 72E+3 0.5 -> 2.7E+2 Inexact Rounded +pwsx2777 power 0.73 0.5 -> 0.85 Inexact Rounded +pwsx2778 power 0.073 0.5 -> 0.27 Inexact Rounded +pwsx2779 power 73.0E-1 0.5 -> 2.7 Inexact Rounded +pwsx2780 power 73.00E-2 0.5 -> 0.85 Inexact Rounded +pwsx2781 power 73E-3 0.5 -> 0.27 Inexact Rounded +pwsx2782 power 73E+1 0.5 -> 27 Inexact Rounded +pwsx2783 power 73E+2 0.5 -> 85 Inexact Rounded +pwsx2784 power 73E+3 0.5 -> 2.7E+2 Inexact Rounded +pwsx2785 power 0.74 0.5 -> 0.86 Inexact Rounded +pwsx2786 power 0.074 0.5 -> 0.27 Inexact Rounded +pwsx2787 power 74.0E-1 0.5 -> 2.7 Inexact Rounded +pwsx2788 power 74.00E-2 0.5 -> 0.86 Inexact Rounded +pwsx2789 power 74E-3 0.5 -> 0.27 Inexact Rounded +pwsx2790 power 74E+1 0.5 -> 27 Inexact Rounded +pwsx2791 power 74E+2 0.5 -> 86 Inexact Rounded +pwsx2792 power 74E+3 0.5 -> 2.7E+2 Inexact Rounded +pwsx2793 power 0.75 0.5 -> 0.87 Inexact Rounded +pwsx2794 power 0.075 0.5 -> 0.27 Inexact Rounded +pwsx2795 power 75.0E-1 0.5 -> 2.7 Inexact Rounded +pwsx2796 power 75.00E-2 0.5 -> 0.87 Inexact Rounded +pwsx2797 power 75E-3 0.5 -> 0.27 Inexact Rounded +pwsx2798 power 75E+1 0.5 -> 27 Inexact Rounded +pwsx2799 power 75E+2 0.5 -> 87 Inexact Rounded +pwsx2800 power 75E+3 0.5 -> 2.7E+2 Inexact Rounded +pwsx2801 power 0.76 0.5 -> 0.87 Inexact Rounded +pwsx2802 power 0.076 0.5 -> 0.28 Inexact Rounded +pwsx2803 power 76.0E-1 0.5 -> 2.8 Inexact Rounded +pwsx2804 power 76.00E-2 0.5 -> 0.87 Inexact Rounded +pwsx2805 power 76E-3 0.5 -> 0.28 Inexact Rounded +pwsx2806 power 76E+1 0.5 -> 28 Inexact Rounded +pwsx2807 power 76E+2 0.5 -> 87 Inexact Rounded +pwsx2808 power 76E+3 0.5 -> 2.8E+2 Inexact Rounded +pwsx2809 power 0.77 0.5 -> 0.88 Inexact Rounded +pwsx2810 power 0.077 0.5 -> 0.28 Inexact Rounded +pwsx2811 power 77.0E-1 0.5 -> 2.8 Inexact Rounded +pwsx2812 power 77.00E-2 0.5 -> 0.88 Inexact Rounded +pwsx2813 power 77E-3 0.5 -> 0.28 Inexact Rounded +pwsx2814 power 77E+1 0.5 -> 28 Inexact Rounded +pwsx2815 power 77E+2 0.5 -> 88 Inexact Rounded +pwsx2816 power 77E+3 0.5 -> 2.8E+2 Inexact Rounded +pwsx2817 power 0.78 0.5 -> 0.88 Inexact Rounded +pwsx2818 power 0.078 0.5 -> 0.28 Inexact Rounded +pwsx2819 power 78.0E-1 0.5 -> 2.8 Inexact Rounded +pwsx2820 power 78.00E-2 0.5 -> 0.88 Inexact Rounded +pwsx2821 power 78E-3 0.5 -> 0.28 Inexact Rounded +pwsx2822 power 78E+1 0.5 -> 28 Inexact Rounded +pwsx2823 power 78E+2 0.5 -> 88 Inexact Rounded +pwsx2824 power 78E+3 0.5 -> 2.8E+2 Inexact Rounded +pwsx2825 power 0.79 0.5 -> 0.89 Inexact Rounded +pwsx2826 power 0.079 0.5 -> 0.28 Inexact Rounded +pwsx2827 power 79.0E-1 0.5 -> 2.8 Inexact Rounded +pwsx2828 power 79.00E-2 0.5 -> 0.89 Inexact Rounded +pwsx2829 power 79E-3 0.5 -> 0.28 Inexact Rounded +pwsx2830 power 79E+1 0.5 -> 28 Inexact Rounded +pwsx2831 power 79E+2 0.5 -> 89 Inexact Rounded +pwsx2832 power 79E+3 0.5 -> 2.8E+2 Inexact Rounded +pwsx2833 power 0.80 0.5 -> 0.89 Inexact Rounded +pwsx2834 power 0.080 0.5 -> 0.28 Inexact Rounded +pwsx2835 power 80.0E-1 0.5 -> 2.8 Inexact Rounded +pwsx2836 power 80.00E-2 0.5 -> 0.89 Inexact Rounded +pwsx2837 power 80E-3 0.5 -> 0.28 Inexact Rounded +pwsx2838 power 80E+1 0.5 -> 28 Inexact Rounded +pwsx2839 power 80E+2 0.5 -> 89 Inexact Rounded +pwsx2840 power 80E+3 0.5 -> 2.8E+2 Inexact Rounded +pwsx2841 power 0.81 0.5 -> 0.90 Inexact Rounded +pwsx2842 power 0.081 0.5 -> 0.28 Inexact Rounded +pwsx2843 power 81.0E-1 0.5 -> 2.8 Inexact Rounded +pwsx2844 power 81.00E-2 0.5 -> 0.90 Inexact Rounded +pwsx2845 power 81E-3 0.5 -> 0.28 Inexact Rounded +pwsx2846 power 81E+1 0.5 -> 28 Inexact Rounded +pwsx2847 power 81E+2 0.5 -> 90 Inexact Rounded +pwsx2848 power 81E+3 0.5 -> 2.8E+2 Inexact Rounded +pwsx2849 power 0.82 0.5 -> 0.91 Inexact Rounded +pwsx2850 power 0.082 0.5 -> 0.29 Inexact Rounded +pwsx2851 power 82.0E-1 0.5 -> 2.9 Inexact Rounded +pwsx2852 power 82.00E-2 0.5 -> 0.91 Inexact Rounded +pwsx2853 power 82E-3 0.5 -> 0.29 Inexact Rounded +pwsx2854 power 82E+1 0.5 -> 29 Inexact Rounded +pwsx2855 power 82E+2 0.5 -> 91 Inexact Rounded +pwsx2856 power 82E+3 0.5 -> 2.9E+2 Inexact Rounded +pwsx2857 power 0.83 0.5 -> 0.91 Inexact Rounded +pwsx2858 power 0.083 0.5 -> 0.29 Inexact Rounded +pwsx2859 power 83.0E-1 0.5 -> 2.9 Inexact Rounded +pwsx2860 power 83.00E-2 0.5 -> 0.91 Inexact Rounded +pwsx2861 power 83E-3 0.5 -> 0.29 Inexact Rounded +pwsx2862 power 83E+1 0.5 -> 29 Inexact Rounded +pwsx2863 power 83E+2 0.5 -> 91 Inexact Rounded +pwsx2864 power 83E+3 0.5 -> 2.9E+2 Inexact Rounded +pwsx2865 power 0.84 0.5 -> 0.92 Inexact Rounded +pwsx2866 power 0.084 0.5 -> 0.29 Inexact Rounded +pwsx2867 power 84.0E-1 0.5 -> 2.9 Inexact Rounded +pwsx2868 power 84.00E-2 0.5 -> 0.92 Inexact Rounded +pwsx2869 power 84E-3 0.5 -> 0.29 Inexact Rounded +pwsx2870 power 84E+1 0.5 -> 29 Inexact Rounded +pwsx2871 power 84E+2 0.5 -> 92 Inexact Rounded +pwsx2872 power 84E+3 0.5 -> 2.9E+2 Inexact Rounded +pwsx2873 power 0.85 0.5 -> 0.92 Inexact Rounded +pwsx2874 power 0.085 0.5 -> 0.29 Inexact Rounded +pwsx2875 power 85.0E-1 0.5 -> 2.9 Inexact Rounded +pwsx2876 power 85.00E-2 0.5 -> 0.92 Inexact Rounded +pwsx2877 power 85E-3 0.5 -> 0.29 Inexact Rounded +pwsx2878 power 85E+1 0.5 -> 29 Inexact Rounded +pwsx2879 power 85E+2 0.5 -> 92 Inexact Rounded +pwsx2880 power 85E+3 0.5 -> 2.9E+2 Inexact Rounded +pwsx2881 power 0.86 0.5 -> 0.93 Inexact Rounded +pwsx2882 power 0.086 0.5 -> 0.29 Inexact Rounded +pwsx2883 power 86.0E-1 0.5 -> 2.9 Inexact Rounded +pwsx2884 power 86.00E-2 0.5 -> 0.93 Inexact Rounded +pwsx2885 power 86E-3 0.5 -> 0.29 Inexact Rounded +pwsx2886 power 86E+1 0.5 -> 29 Inexact Rounded +pwsx2887 power 86E+2 0.5 -> 93 Inexact Rounded +pwsx2888 power 86E+3 0.5 -> 2.9E+2 Inexact Rounded +pwsx2889 power 0.87 0.5 -> 0.93 Inexact Rounded +pwsx2890 power 0.087 0.5 -> 0.29 Inexact Rounded +pwsx2891 power 87.0E-1 0.5 -> 2.9 Inexact Rounded +pwsx2892 power 87.00E-2 0.5 -> 0.93 Inexact Rounded +pwsx2893 power 87E-3 0.5 -> 0.29 Inexact Rounded +pwsx2894 power 87E+1 0.5 -> 29 Inexact Rounded +pwsx2895 power 87E+2 0.5 -> 93 Inexact Rounded +pwsx2896 power 87E+3 0.5 -> 2.9E+2 Inexact Rounded +pwsx2897 power 0.88 0.5 -> 0.94 Inexact Rounded +pwsx2898 power 0.088 0.5 -> 0.30 Inexact Rounded +pwsx2899 power 88.0E-1 0.5 -> 3.0 Inexact Rounded +pwsx2900 power 88.00E-2 0.5 -> 0.94 Inexact Rounded +pwsx2901 power 88E-3 0.5 -> 0.30 Inexact Rounded +pwsx2902 power 88E+1 0.5 -> 30 Inexact Rounded +pwsx2903 power 88E+2 0.5 -> 94 Inexact Rounded +pwsx2904 power 88E+3 0.5 -> 3.0E+2 Inexact Rounded +pwsx2905 power 0.89 0.5 -> 0.94 Inexact Rounded +pwsx2906 power 0.089 0.5 -> 0.30 Inexact Rounded +pwsx2907 power 89.0E-1 0.5 -> 3.0 Inexact Rounded +pwsx2908 power 89.00E-2 0.5 -> 0.94 Inexact Rounded +pwsx2909 power 89E-3 0.5 -> 0.30 Inexact Rounded +pwsx2910 power 89E+1 0.5 -> 30 Inexact Rounded +pwsx2911 power 89E+2 0.5 -> 94 Inexact Rounded +pwsx2912 power 89E+3 0.5 -> 3.0E+2 Inexact Rounded +pwsx2913 power 0.90 0.5 -> 0.95 Inexact Rounded +pwsx2914 power 0.090 0.5 -> 0.30 Inexact Rounded +pwsx2915 power 90.0E-1 0.5 -> 3.0 Inexact Rounded +pwsx2916 power 90.00E-2 0.5 -> 0.95 Inexact Rounded +pwsx2917 power 90E-3 0.5 -> 0.30 Inexact Rounded +pwsx2918 power 90E+1 0.5 -> 30 Inexact Rounded +pwsx2919 power 90E+2 0.5 -> 95 Inexact Rounded +pwsx2920 power 90E+3 0.5 -> 3.0E+2 Inexact Rounded +pwsx2921 power 0.91 0.5 -> 0.95 Inexact Rounded +pwsx2922 power 0.091 0.5 -> 0.30 Inexact Rounded +pwsx2923 power 91.0E-1 0.5 -> 3.0 Inexact Rounded +pwsx2924 power 91.00E-2 0.5 -> 0.95 Inexact Rounded +pwsx2925 power 91E-3 0.5 -> 0.30 Inexact Rounded +pwsx2926 power 91E+1 0.5 -> 30 Inexact Rounded +pwsx2927 power 91E+2 0.5 -> 95 Inexact Rounded +pwsx2928 power 91E+3 0.5 -> 3.0E+2 Inexact Rounded +pwsx2929 power 0.92 0.5 -> 0.96 Inexact Rounded +pwsx2930 power 0.092 0.5 -> 0.30 Inexact Rounded +pwsx2931 power 92.0E-1 0.5 -> 3.0 Inexact Rounded +pwsx2932 power 92.00E-2 0.5 -> 0.96 Inexact Rounded +pwsx2933 power 92E-3 0.5 -> 0.30 Inexact Rounded +pwsx2934 power 92E+1 0.5 -> 30 Inexact Rounded +pwsx2935 power 92E+2 0.5 -> 96 Inexact Rounded +pwsx2936 power 92E+3 0.5 -> 3.0E+2 Inexact Rounded +pwsx2937 power 0.93 0.5 -> 0.96 Inexact Rounded +pwsx2938 power 0.093 0.5 -> 0.30 Inexact Rounded +pwsx2939 power 93.0E-1 0.5 -> 3.0 Inexact Rounded +pwsx2940 power 93.00E-2 0.5 -> 0.96 Inexact Rounded +pwsx2941 power 93E-3 0.5 -> 0.30 Inexact Rounded +pwsx2942 power 93E+1 0.5 -> 30 Inexact Rounded +pwsx2943 power 93E+2 0.5 -> 96 Inexact Rounded +pwsx2944 power 93E+3 0.5 -> 3.0E+2 Inexact Rounded +pwsx2945 power 0.94 0.5 -> 0.97 Inexact Rounded +pwsx2946 power 0.094 0.5 -> 0.31 Inexact Rounded +pwsx2947 power 94.0E-1 0.5 -> 3.1 Inexact Rounded +pwsx2948 power 94.00E-2 0.5 -> 0.97 Inexact Rounded +pwsx2949 power 94E-3 0.5 -> 0.31 Inexact Rounded +pwsx2950 power 94E+1 0.5 -> 31 Inexact Rounded +pwsx2951 power 94E+2 0.5 -> 97 Inexact Rounded +pwsx2952 power 94E+3 0.5 -> 3.1E+2 Inexact Rounded +pwsx2953 power 0.95 0.5 -> 0.97 Inexact Rounded +pwsx2954 power 0.095 0.5 -> 0.31 Inexact Rounded +pwsx2955 power 95.0E-1 0.5 -> 3.1 Inexact Rounded +pwsx2956 power 95.00E-2 0.5 -> 0.97 Inexact Rounded +pwsx2957 power 95E-3 0.5 -> 0.31 Inexact Rounded +pwsx2958 power 95E+1 0.5 -> 31 Inexact Rounded +pwsx2959 power 95E+2 0.5 -> 97 Inexact Rounded +pwsx2960 power 95E+3 0.5 -> 3.1E+2 Inexact Rounded +pwsx2961 power 0.96 0.5 -> 0.98 Inexact Rounded +pwsx2962 power 0.096 0.5 -> 0.31 Inexact Rounded +pwsx2963 power 96.0E-1 0.5 -> 3.1 Inexact Rounded +pwsx2964 power 96.00E-2 0.5 -> 0.98 Inexact Rounded +pwsx2965 power 96E-3 0.5 -> 0.31 Inexact Rounded +pwsx2966 power 96E+1 0.5 -> 31 Inexact Rounded +pwsx2967 power 96E+2 0.5 -> 98 Inexact Rounded +pwsx2968 power 96E+3 0.5 -> 3.1E+2 Inexact Rounded +pwsx2969 power 0.97 0.5 -> 0.98 Inexact Rounded +pwsx2970 power 0.097 0.5 -> 0.31 Inexact Rounded +pwsx2971 power 97.0E-1 0.5 -> 3.1 Inexact Rounded +pwsx2972 power 97.00E-2 0.5 -> 0.98 Inexact Rounded +pwsx2973 power 97E-3 0.5 -> 0.31 Inexact Rounded +pwsx2974 power 97E+1 0.5 -> 31 Inexact Rounded +pwsx2975 power 97E+2 0.5 -> 98 Inexact Rounded +pwsx2976 power 97E+3 0.5 -> 3.1E+2 Inexact Rounded +pwsx2977 power 0.98 0.5 -> 0.99 Inexact Rounded +pwsx2978 power 0.098 0.5 -> 0.31 Inexact Rounded +pwsx2979 power 98.0E-1 0.5 -> 3.1 Inexact Rounded +pwsx2980 power 98.00E-2 0.5 -> 0.99 Inexact Rounded +pwsx2981 power 98E-3 0.5 -> 0.31 Inexact Rounded +pwsx2982 power 98E+1 0.5 -> 31 Inexact Rounded +pwsx2983 power 98E+2 0.5 -> 99 Inexact Rounded +pwsx2984 power 98E+3 0.5 -> 3.1E+2 Inexact Rounded +pwsx2985 power 0.99 0.5 -> 0.99 Inexact Rounded +pwsx2986 power 0.099 0.5 -> 0.31 Inexact Rounded +pwsx2987 power 99.0E-1 0.5 -> 3.1 Inexact Rounded +pwsx2988 power 99.00E-2 0.5 -> 0.99 Inexact Rounded +pwsx2989 power 99E-3 0.5 -> 0.31 Inexact Rounded +pwsx2990 power 99E+1 0.5 -> 31 Inexact Rounded +pwsx2991 power 99E+2 0.5 -> 99 Inexact Rounded +pwsx2992 power 99E+3 0.5 -> 3.1E+2 Inexact Rounded + +-- Precision 3 squareroot tests [exhaustive, f and f/10] +rounding: half_even +maxExponent: 999 +minexponent: -999 +precision: 3 +pwsx3001 power 0.1 0.5 -> 0.316 Inexact Rounded +pwsx3002 power 0.01 0.5 -> 0.100 Inexact Rounded +pwsx3003 power 0.2 0.5 -> 0.447 Inexact Rounded +pwsx3004 power 0.02 0.5 -> 0.141 Inexact Rounded +pwsx3005 power 0.3 0.5 -> 0.548 Inexact Rounded +pwsx3006 power 0.03 0.5 -> 0.173 Inexact Rounded +pwsx3007 power 0.4 0.5 -> 0.632 Inexact Rounded +pwsx3008 power 0.04 0.5 -> 0.200 Inexact Rounded +pwsx3009 power 0.5 0.5 -> 0.707 Inexact Rounded +pwsx3010 power 0.05 0.5 -> 0.224 Inexact Rounded +pwsx3011 power 0.6 0.5 -> 0.775 Inexact Rounded +pwsx3012 power 0.06 0.5 -> 0.245 Inexact Rounded +pwsx3013 power 0.7 0.5 -> 0.837 Inexact Rounded +pwsx3014 power 0.07 0.5 -> 0.265 Inexact Rounded +pwsx3015 power 0.8 0.5 -> 0.894 Inexact Rounded +pwsx3016 power 0.08 0.5 -> 0.283 Inexact Rounded +pwsx3017 power 0.9 0.5 -> 0.949 Inexact Rounded +pwsx3018 power 0.09 0.5 -> 0.300 Inexact Rounded +pwsx3019 power 0.11 0.5 -> 0.332 Inexact Rounded +pwsx3020 power 0.011 0.5 -> 0.105 Inexact Rounded +pwsx3021 power 0.12 0.5 -> 0.346 Inexact Rounded +pwsx3022 power 0.012 0.5 -> 0.110 Inexact Rounded +pwsx3023 power 0.13 0.5 -> 0.361 Inexact Rounded +pwsx3024 power 0.013 0.5 -> 0.114 Inexact Rounded +pwsx3025 power 0.14 0.5 -> 0.374 Inexact Rounded +pwsx3026 power 0.014 0.5 -> 0.118 Inexact Rounded +pwsx3027 power 0.15 0.5 -> 0.387 Inexact Rounded +pwsx3028 power 0.015 0.5 -> 0.122 Inexact Rounded +pwsx3029 power 0.16 0.5 -> 0.400 Inexact Rounded +pwsx3030 power 0.016 0.5 -> 0.126 Inexact Rounded +pwsx3031 power 0.17 0.5 -> 0.412 Inexact Rounded +pwsx3032 power 0.017 0.5 -> 0.130 Inexact Rounded +pwsx3033 power 0.18 0.5 -> 0.424 Inexact Rounded +pwsx3034 power 0.018 0.5 -> 0.134 Inexact Rounded +pwsx3035 power 0.19 0.5 -> 0.436 Inexact Rounded +pwsx3036 power 0.019 0.5 -> 0.138 Inexact Rounded +pwsx3037 power 0.21 0.5 -> 0.458 Inexact Rounded +pwsx3038 power 0.021 0.5 -> 0.145 Inexact Rounded +pwsx3039 power 0.22 0.5 -> 0.469 Inexact Rounded +pwsx3040 power 0.022 0.5 -> 0.148 Inexact Rounded +pwsx3041 power 0.23 0.5 -> 0.480 Inexact Rounded +pwsx3042 power 0.023 0.5 -> 0.152 Inexact Rounded +pwsx3043 power 0.24 0.5 -> 0.490 Inexact Rounded +pwsx3044 power 0.024 0.5 -> 0.155 Inexact Rounded +pwsx3045 power 0.25 0.5 -> 0.500 Inexact Rounded +pwsx3046 power 0.025 0.5 -> 0.158 Inexact Rounded +pwsx3047 power 0.26 0.5 -> 0.510 Inexact Rounded +pwsx3048 power 0.026 0.5 -> 0.161 Inexact Rounded +pwsx3049 power 0.27 0.5 -> 0.520 Inexact Rounded +pwsx3050 power 0.027 0.5 -> 0.164 Inexact Rounded +pwsx3051 power 0.28 0.5 -> 0.529 Inexact Rounded +pwsx3052 power 0.028 0.5 -> 0.167 Inexact Rounded +pwsx3053 power 0.29 0.5 -> 0.539 Inexact Rounded +pwsx3054 power 0.029 0.5 -> 0.170 Inexact Rounded +pwsx3055 power 0.31 0.5 -> 0.557 Inexact Rounded +pwsx3056 power 0.031 0.5 -> 0.176 Inexact Rounded +pwsx3057 power 0.32 0.5 -> 0.566 Inexact Rounded +pwsx3058 power 0.032 0.5 -> 0.179 Inexact Rounded +pwsx3059 power 0.33 0.5 -> 0.574 Inexact Rounded +pwsx3060 power 0.033 0.5 -> 0.182 Inexact Rounded +pwsx3061 power 0.34 0.5 -> 0.583 Inexact Rounded +pwsx3062 power 0.034 0.5 -> 0.184 Inexact Rounded +pwsx3063 power 0.35 0.5 -> 0.592 Inexact Rounded +pwsx3064 power 0.035 0.5 -> 0.187 Inexact Rounded +pwsx3065 power 0.36 0.5 -> 0.600 Inexact Rounded +pwsx3066 power 0.036 0.5 -> 0.190 Inexact Rounded +pwsx3067 power 0.37 0.5 -> 0.608 Inexact Rounded +pwsx3068 power 0.037 0.5 -> 0.192 Inexact Rounded +pwsx3069 power 0.38 0.5 -> 0.616 Inexact Rounded +pwsx3070 power 0.038 0.5 -> 0.195 Inexact Rounded +pwsx3071 power 0.39 0.5 -> 0.624 Inexact Rounded +pwsx3072 power 0.039 0.5 -> 0.197 Inexact Rounded +pwsx3073 power 0.41 0.5 -> 0.640 Inexact Rounded +pwsx3074 power 0.041 0.5 -> 0.202 Inexact Rounded +pwsx3075 power 0.42 0.5 -> 0.648 Inexact Rounded +pwsx3076 power 0.042 0.5 -> 0.205 Inexact Rounded +pwsx3077 power 0.43 0.5 -> 0.656 Inexact Rounded +pwsx3078 power 0.043 0.5 -> 0.207 Inexact Rounded +pwsx3079 power 0.44 0.5 -> 0.663 Inexact Rounded +pwsx3080 power 0.044 0.5 -> 0.210 Inexact Rounded +pwsx3081 power 0.45 0.5 -> 0.671 Inexact Rounded +pwsx3082 power 0.045 0.5 -> 0.212 Inexact Rounded +pwsx3083 power 0.46 0.5 -> 0.678 Inexact Rounded +pwsx3084 power 0.046 0.5 -> 0.214 Inexact Rounded +pwsx3085 power 0.47 0.5 -> 0.686 Inexact Rounded +pwsx3086 power 0.047 0.5 -> 0.217 Inexact Rounded +pwsx3087 power 0.48 0.5 -> 0.693 Inexact Rounded +pwsx3088 power 0.048 0.5 -> 0.219 Inexact Rounded +pwsx3089 power 0.49 0.5 -> 0.700 Inexact Rounded +pwsx3090 power 0.049 0.5 -> 0.221 Inexact Rounded +pwsx3091 power 0.51 0.5 -> 0.714 Inexact Rounded +pwsx3092 power 0.051 0.5 -> 0.226 Inexact Rounded +pwsx3093 power 0.52 0.5 -> 0.721 Inexact Rounded +pwsx3094 power 0.052 0.5 -> 0.228 Inexact Rounded +pwsx3095 power 0.53 0.5 -> 0.728 Inexact Rounded +pwsx3096 power 0.053 0.5 -> 0.230 Inexact Rounded +pwsx3097 power 0.54 0.5 -> 0.735 Inexact Rounded +pwsx3098 power 0.054 0.5 -> 0.232 Inexact Rounded +pwsx3099 power 0.55 0.5 -> 0.742 Inexact Rounded +pwsx3100 power 0.055 0.5 -> 0.235 Inexact Rounded +pwsx3101 power 0.56 0.5 -> 0.748 Inexact Rounded +pwsx3102 power 0.056 0.5 -> 0.237 Inexact Rounded +pwsx3103 power 0.57 0.5 -> 0.755 Inexact Rounded +pwsx3104 power 0.057 0.5 -> 0.239 Inexact Rounded +pwsx3105 power 0.58 0.5 -> 0.762 Inexact Rounded +pwsx3106 power 0.058 0.5 -> 0.241 Inexact Rounded +pwsx3107 power 0.59 0.5 -> 0.768 Inexact Rounded +pwsx3108 power 0.059 0.5 -> 0.243 Inexact Rounded +pwsx3109 power 0.61 0.5 -> 0.781 Inexact Rounded +pwsx3110 power 0.061 0.5 -> 0.247 Inexact Rounded +pwsx3111 power 0.62 0.5 -> 0.787 Inexact Rounded +pwsx3112 power 0.062 0.5 -> 0.249 Inexact Rounded +pwsx3113 power 0.63 0.5 -> 0.794 Inexact Rounded +pwsx3114 power 0.063 0.5 -> 0.251 Inexact Rounded +pwsx3115 power 0.64 0.5 -> 0.800 Inexact Rounded +pwsx3116 power 0.064 0.5 -> 0.253 Inexact Rounded +pwsx3117 power 0.65 0.5 -> 0.806 Inexact Rounded +pwsx3118 power 0.065 0.5 -> 0.255 Inexact Rounded +pwsx3119 power 0.66 0.5 -> 0.812 Inexact Rounded +pwsx3120 power 0.066 0.5 -> 0.257 Inexact Rounded +pwsx3121 power 0.67 0.5 -> 0.819 Inexact Rounded +pwsx3122 power 0.067 0.5 -> 0.259 Inexact Rounded +pwsx3123 power 0.68 0.5 -> 0.825 Inexact Rounded +pwsx3124 power 0.068 0.5 -> 0.261 Inexact Rounded +pwsx3125 power 0.69 0.5 -> 0.831 Inexact Rounded +pwsx3126 power 0.069 0.5 -> 0.263 Inexact Rounded +pwsx3127 power 0.71 0.5 -> 0.843 Inexact Rounded +pwsx3128 power 0.071 0.5 -> 0.266 Inexact Rounded +pwsx3129 power 0.72 0.5 -> 0.849 Inexact Rounded +pwsx3130 power 0.072 0.5 -> 0.268 Inexact Rounded +pwsx3131 power 0.73 0.5 -> 0.854 Inexact Rounded +pwsx3132 power 0.073 0.5 -> 0.270 Inexact Rounded +pwsx3133 power 0.74 0.5 -> 0.860 Inexact Rounded +pwsx3134 power 0.074 0.5 -> 0.272 Inexact Rounded +pwsx3135 power 0.75 0.5 -> 0.866 Inexact Rounded +pwsx3136 power 0.075 0.5 -> 0.274 Inexact Rounded +pwsx3137 power 0.76 0.5 -> 0.872 Inexact Rounded +pwsx3138 power 0.076 0.5 -> 0.276 Inexact Rounded +pwsx3139 power 0.77 0.5 -> 0.877 Inexact Rounded +pwsx3140 power 0.077 0.5 -> 0.277 Inexact Rounded +pwsx3141 power 0.78 0.5 -> 0.883 Inexact Rounded +pwsx3142 power 0.078 0.5 -> 0.279 Inexact Rounded +pwsx3143 power 0.79 0.5 -> 0.889 Inexact Rounded +pwsx3144 power 0.079 0.5 -> 0.281 Inexact Rounded +pwsx3145 power 0.81 0.5 -> 0.900 Inexact Rounded +pwsx3146 power 0.081 0.5 -> 0.285 Inexact Rounded +pwsx3147 power 0.82 0.5 -> 0.906 Inexact Rounded +pwsx3148 power 0.082 0.5 -> 0.286 Inexact Rounded +pwsx3149 power 0.83 0.5 -> 0.911 Inexact Rounded +pwsx3150 power 0.083 0.5 -> 0.288 Inexact Rounded +pwsx3151 power 0.84 0.5 -> 0.917 Inexact Rounded +pwsx3152 power 0.084 0.5 -> 0.290 Inexact Rounded +pwsx3153 power 0.85 0.5 -> 0.922 Inexact Rounded +pwsx3154 power 0.085 0.5 -> 0.292 Inexact Rounded +pwsx3155 power 0.86 0.5 -> 0.927 Inexact Rounded +pwsx3156 power 0.086 0.5 -> 0.293 Inexact Rounded +pwsx3157 power 0.87 0.5 -> 0.933 Inexact Rounded +pwsx3158 power 0.087 0.5 -> 0.295 Inexact Rounded +pwsx3159 power 0.88 0.5 -> 0.938 Inexact Rounded +pwsx3160 power 0.088 0.5 -> 0.297 Inexact Rounded +pwsx3161 power 0.89 0.5 -> 0.943 Inexact Rounded +pwsx3162 power 0.089 0.5 -> 0.298 Inexact Rounded +pwsx3163 power 0.91 0.5 -> 0.954 Inexact Rounded +pwsx3164 power 0.091 0.5 -> 0.302 Inexact Rounded +pwsx3165 power 0.92 0.5 -> 0.959 Inexact Rounded +pwsx3166 power 0.092 0.5 -> 0.303 Inexact Rounded +pwsx3167 power 0.93 0.5 -> 0.964 Inexact Rounded +pwsx3168 power 0.093 0.5 -> 0.305 Inexact Rounded +pwsx3169 power 0.94 0.5 -> 0.970 Inexact Rounded +pwsx3170 power 0.094 0.5 -> 0.307 Inexact Rounded +pwsx3171 power 0.95 0.5 -> 0.975 Inexact Rounded +pwsx3172 power 0.095 0.5 -> 0.308 Inexact Rounded +pwsx3173 power 0.96 0.5 -> 0.980 Inexact Rounded +pwsx3174 power 0.096 0.5 -> 0.310 Inexact Rounded +pwsx3175 power 0.97 0.5 -> 0.985 Inexact Rounded +pwsx3176 power 0.097 0.5 -> 0.311 Inexact Rounded +pwsx3177 power 0.98 0.5 -> 0.990 Inexact Rounded +pwsx3178 power 0.098 0.5 -> 0.313 Inexact Rounded +pwsx3179 power 0.99 0.5 -> 0.995 Inexact Rounded +pwsx3180 power 0.099 0.5 -> 0.315 Inexact Rounded +pwsx3181 power 0.101 0.5 -> 0.318 Inexact Rounded +pwsx3182 power 0.0101 0.5 -> 0.100 Inexact Rounded +pwsx3183 power 0.102 0.5 -> 0.319 Inexact Rounded +pwsx3184 power 0.0102 0.5 -> 0.101 Inexact Rounded +pwsx3185 power 0.103 0.5 -> 0.321 Inexact Rounded +pwsx3186 power 0.0103 0.5 -> 0.101 Inexact Rounded +pwsx3187 power 0.104 0.5 -> 0.322 Inexact Rounded +pwsx3188 power 0.0104 0.5 -> 0.102 Inexact Rounded +pwsx3189 power 0.105 0.5 -> 0.324 Inexact Rounded +pwsx3190 power 0.0105 0.5 -> 0.102 Inexact Rounded +pwsx3191 power 0.106 0.5 -> 0.326 Inexact Rounded +pwsx3192 power 0.0106 0.5 -> 0.103 Inexact Rounded +pwsx3193 power 0.107 0.5 -> 0.327 Inexact Rounded +pwsx3194 power 0.0107 0.5 -> 0.103 Inexact Rounded +pwsx3195 power 0.108 0.5 -> 0.329 Inexact Rounded +pwsx3196 power 0.0108 0.5 -> 0.104 Inexact Rounded +pwsx3197 power 0.109 0.5 -> 0.330 Inexact Rounded +pwsx3198 power 0.0109 0.5 -> 0.104 Inexact Rounded +pwsx3199 power 0.111 0.5 -> 0.333 Inexact Rounded +pwsx3200 power 0.0111 0.5 -> 0.105 Inexact Rounded +pwsx3201 power 0.112 0.5 -> 0.335 Inexact Rounded +pwsx3202 power 0.0112 0.5 -> 0.106 Inexact Rounded +pwsx3203 power 0.113 0.5 -> 0.336 Inexact Rounded +pwsx3204 power 0.0113 0.5 -> 0.106 Inexact Rounded +pwsx3205 power 0.114 0.5 -> 0.338 Inexact Rounded +pwsx3206 power 0.0114 0.5 -> 0.107 Inexact Rounded +pwsx3207 power 0.115 0.5 -> 0.339 Inexact Rounded +pwsx3208 power 0.0115 0.5 -> 0.107 Inexact Rounded +pwsx3209 power 0.116 0.5 -> 0.341 Inexact Rounded +pwsx3210 power 0.0116 0.5 -> 0.108 Inexact Rounded +pwsx3211 power 0.117 0.5 -> 0.342 Inexact Rounded +pwsx3212 power 0.0117 0.5 -> 0.108 Inexact Rounded +pwsx3213 power 0.118 0.5 -> 0.344 Inexact Rounded +pwsx3214 power 0.0118 0.5 -> 0.109 Inexact Rounded +pwsx3215 power 0.119 0.5 -> 0.345 Inexact Rounded +pwsx3216 power 0.0119 0.5 -> 0.109 Inexact Rounded +pwsx3217 power 0.121 0.5 -> 0.348 Inexact Rounded +pwsx3218 power 0.0121 0.5 -> 0.110 Inexact Rounded +pwsx3219 power 0.122 0.5 -> 0.349 Inexact Rounded +pwsx3220 power 0.0122 0.5 -> 0.110 Inexact Rounded +pwsx3221 power 0.123 0.5 -> 0.351 Inexact Rounded +pwsx3222 power 0.0123 0.5 -> 0.111 Inexact Rounded +pwsx3223 power 0.124 0.5 -> 0.352 Inexact Rounded +pwsx3224 power 0.0124 0.5 -> 0.111 Inexact Rounded +pwsx3225 power 0.125 0.5 -> 0.354 Inexact Rounded +pwsx3226 power 0.0125 0.5 -> 0.112 Inexact Rounded +pwsx3227 power 0.126 0.5 -> 0.355 Inexact Rounded +pwsx3228 power 0.0126 0.5 -> 0.112 Inexact Rounded +pwsx3229 power 0.127 0.5 -> 0.356 Inexact Rounded +pwsx3230 power 0.0127 0.5 -> 0.113 Inexact Rounded +pwsx3231 power 0.128 0.5 -> 0.358 Inexact Rounded +pwsx3232 power 0.0128 0.5 -> 0.113 Inexact Rounded +pwsx3233 power 0.129 0.5 -> 0.359 Inexact Rounded +pwsx3234 power 0.0129 0.5 -> 0.114 Inexact Rounded +pwsx3235 power 0.131 0.5 -> 0.362 Inexact Rounded +pwsx3236 power 0.0131 0.5 -> 0.114 Inexact Rounded +pwsx3237 power 0.132 0.5 -> 0.363 Inexact Rounded +pwsx3238 power 0.0132 0.5 -> 0.115 Inexact Rounded +pwsx3239 power 0.133 0.5 -> 0.365 Inexact Rounded +pwsx3240 power 0.0133 0.5 -> 0.115 Inexact Rounded +pwsx3241 power 0.134 0.5 -> 0.366 Inexact Rounded +pwsx3242 power 0.0134 0.5 -> 0.116 Inexact Rounded +pwsx3243 power 0.135 0.5 -> 0.367 Inexact Rounded +pwsx3244 power 0.0135 0.5 -> 0.116 Inexact Rounded +pwsx3245 power 0.136 0.5 -> 0.369 Inexact Rounded +pwsx3246 power 0.0136 0.5 -> 0.117 Inexact Rounded +pwsx3247 power 0.137 0.5 -> 0.370 Inexact Rounded +pwsx3248 power 0.0137 0.5 -> 0.117 Inexact Rounded +pwsx3249 power 0.138 0.5 -> 0.371 Inexact Rounded +pwsx3250 power 0.0138 0.5 -> 0.117 Inexact Rounded +pwsx3251 power 0.139 0.5 -> 0.373 Inexact Rounded +pwsx3252 power 0.0139 0.5 -> 0.118 Inexact Rounded +pwsx3253 power 0.141 0.5 -> 0.375 Inexact Rounded +pwsx3254 power 0.0141 0.5 -> 0.119 Inexact Rounded +pwsx3255 power 0.142 0.5 -> 0.377 Inexact Rounded +pwsx3256 power 0.0142 0.5 -> 0.119 Inexact Rounded +pwsx3257 power 0.143 0.5 -> 0.378 Inexact Rounded +pwsx3258 power 0.0143 0.5 -> 0.120 Inexact Rounded +pwsx3259 power 0.144 0.5 -> 0.379 Inexact Rounded +pwsx3260 power 0.0144 0.5 -> 0.120 Inexact Rounded +pwsx3261 power 0.145 0.5 -> 0.381 Inexact Rounded +pwsx3262 power 0.0145 0.5 -> 0.120 Inexact Rounded +pwsx3263 power 0.146 0.5 -> 0.382 Inexact Rounded +pwsx3264 power 0.0146 0.5 -> 0.121 Inexact Rounded +pwsx3265 power 0.147 0.5 -> 0.383 Inexact Rounded +pwsx3266 power 0.0147 0.5 -> 0.121 Inexact Rounded +pwsx3267 power 0.148 0.5 -> 0.385 Inexact Rounded +pwsx3268 power 0.0148 0.5 -> 0.122 Inexact Rounded +pwsx3269 power 0.149 0.5 -> 0.386 Inexact Rounded +pwsx3270 power 0.0149 0.5 -> 0.122 Inexact Rounded +pwsx3271 power 0.151 0.5 -> 0.389 Inexact Rounded +pwsx3272 power 0.0151 0.5 -> 0.123 Inexact Rounded +pwsx3273 power 0.152 0.5 -> 0.390 Inexact Rounded +pwsx3274 power 0.0152 0.5 -> 0.123 Inexact Rounded +pwsx3275 power 0.153 0.5 -> 0.391 Inexact Rounded +pwsx3276 power 0.0153 0.5 -> 0.124 Inexact Rounded +pwsx3277 power 0.154 0.5 -> 0.392 Inexact Rounded +pwsx3278 power 0.0154 0.5 -> 0.124 Inexact Rounded +pwsx3279 power 0.155 0.5 -> 0.394 Inexact Rounded +pwsx3280 power 0.0155 0.5 -> 0.124 Inexact Rounded +pwsx3281 power 0.156 0.5 -> 0.395 Inexact Rounded +pwsx3282 power 0.0156 0.5 -> 0.125 Inexact Rounded +pwsx3283 power 0.157 0.5 -> 0.396 Inexact Rounded +pwsx3284 power 0.0157 0.5 -> 0.125 Inexact Rounded +pwsx3285 power 0.158 0.5 -> 0.397 Inexact Rounded +pwsx3286 power 0.0158 0.5 -> 0.126 Inexact Rounded +pwsx3287 power 0.159 0.5 -> 0.399 Inexact Rounded +pwsx3288 power 0.0159 0.5 -> 0.126 Inexact Rounded +pwsx3289 power 0.161 0.5 -> 0.401 Inexact Rounded +pwsx3290 power 0.0161 0.5 -> 0.127 Inexact Rounded +pwsx3291 power 0.162 0.5 -> 0.402 Inexact Rounded +pwsx3292 power 0.0162 0.5 -> 0.127 Inexact Rounded +pwsx3293 power 0.163 0.5 -> 0.404 Inexact Rounded +pwsx3294 power 0.0163 0.5 -> 0.128 Inexact Rounded +pwsx3295 power 0.164 0.5 -> 0.405 Inexact Rounded +pwsx3296 power 0.0164 0.5 -> 0.128 Inexact Rounded +pwsx3297 power 0.165 0.5 -> 0.406 Inexact Rounded +pwsx3298 power 0.0165 0.5 -> 0.128 Inexact Rounded +pwsx3299 power 0.166 0.5 -> 0.407 Inexact Rounded +pwsx3300 power 0.0166 0.5 -> 0.129 Inexact Rounded +pwsx3301 power 0.167 0.5 -> 0.409 Inexact Rounded +pwsx3302 power 0.0167 0.5 -> 0.129 Inexact Rounded +pwsx3303 power 0.168 0.5 -> 0.410 Inexact Rounded +pwsx3304 power 0.0168 0.5 -> 0.130 Inexact Rounded +pwsx3305 power 0.169 0.5 -> 0.411 Inexact Rounded +pwsx3306 power 0.0169 0.5 -> 0.130 Inexact Rounded +pwsx3307 power 0.171 0.5 -> 0.414 Inexact Rounded +pwsx3308 power 0.0171 0.5 -> 0.131 Inexact Rounded +pwsx3309 power 0.172 0.5 -> 0.415 Inexact Rounded +pwsx3310 power 0.0172 0.5 -> 0.131 Inexact Rounded +pwsx3311 power 0.173 0.5 -> 0.416 Inexact Rounded +pwsx3312 power 0.0173 0.5 -> 0.132 Inexact Rounded +pwsx3313 power 0.174 0.5 -> 0.417 Inexact Rounded +pwsx3314 power 0.0174 0.5 -> 0.132 Inexact Rounded +pwsx3315 power 0.175 0.5 -> 0.418 Inexact Rounded +pwsx3316 power 0.0175 0.5 -> 0.132 Inexact Rounded +pwsx3317 power 0.176 0.5 -> 0.420 Inexact Rounded +pwsx3318 power 0.0176 0.5 -> 0.133 Inexact Rounded +pwsx3319 power 0.177 0.5 -> 0.421 Inexact Rounded +pwsx3320 power 0.0177 0.5 -> 0.133 Inexact Rounded +pwsx3321 power 0.178 0.5 -> 0.422 Inexact Rounded +pwsx3322 power 0.0178 0.5 -> 0.133 Inexact Rounded +pwsx3323 power 0.179 0.5 -> 0.423 Inexact Rounded +pwsx3324 power 0.0179 0.5 -> 0.134 Inexact Rounded +pwsx3325 power 0.181 0.5 -> 0.425 Inexact Rounded +pwsx3326 power 0.0181 0.5 -> 0.135 Inexact Rounded +pwsx3327 power 0.182 0.5 -> 0.427 Inexact Rounded +pwsx3328 power 0.0182 0.5 -> 0.135 Inexact Rounded +pwsx3329 power 0.183 0.5 -> 0.428 Inexact Rounded +pwsx3330 power 0.0183 0.5 -> 0.135 Inexact Rounded +pwsx3331 power 0.184 0.5 -> 0.429 Inexact Rounded +pwsx3332 power 0.0184 0.5 -> 0.136 Inexact Rounded +pwsx3333 power 0.185 0.5 -> 0.430 Inexact Rounded +pwsx3334 power 0.0185 0.5 -> 0.136 Inexact Rounded +pwsx3335 power 0.186 0.5 -> 0.431 Inexact Rounded +pwsx3336 power 0.0186 0.5 -> 0.136 Inexact Rounded +pwsx3337 power 0.187 0.5 -> 0.432 Inexact Rounded +pwsx3338 power 0.0187 0.5 -> 0.137 Inexact Rounded +pwsx3339 power 0.188 0.5 -> 0.434 Inexact Rounded +pwsx3340 power 0.0188 0.5 -> 0.137 Inexact Rounded +pwsx3341 power 0.189 0.5 -> 0.435 Inexact Rounded +pwsx3342 power 0.0189 0.5 -> 0.137 Inexact Rounded +pwsx3343 power 0.191 0.5 -> 0.437 Inexact Rounded +pwsx3344 power 0.0191 0.5 -> 0.138 Inexact Rounded +pwsx3345 power 0.192 0.5 -> 0.438 Inexact Rounded +pwsx3346 power 0.0192 0.5 -> 0.139 Inexact Rounded +pwsx3347 power 0.193 0.5 -> 0.439 Inexact Rounded +pwsx3348 power 0.0193 0.5 -> 0.139 Inexact Rounded +pwsx3349 power 0.194 0.5 -> 0.440 Inexact Rounded +pwsx3350 power 0.0194 0.5 -> 0.139 Inexact Rounded +pwsx3351 power 0.195 0.5 -> 0.442 Inexact Rounded +pwsx3352 power 0.0195 0.5 -> 0.140 Inexact Rounded +pwsx3353 power 0.196 0.5 -> 0.443 Inexact Rounded +pwsx3354 power 0.0196 0.5 -> 0.140 Inexact Rounded +pwsx3355 power 0.197 0.5 -> 0.444 Inexact Rounded +pwsx3356 power 0.0197 0.5 -> 0.140 Inexact Rounded +pwsx3357 power 0.198 0.5 -> 0.445 Inexact Rounded +pwsx3358 power 0.0198 0.5 -> 0.141 Inexact Rounded +pwsx3359 power 0.199 0.5 -> 0.446 Inexact Rounded +pwsx3360 power 0.0199 0.5 -> 0.141 Inexact Rounded +pwsx3361 power 0.201 0.5 -> 0.448 Inexact Rounded +pwsx3362 power 0.0201 0.5 -> 0.142 Inexact Rounded +pwsx3363 power 0.202 0.5 -> 0.449 Inexact Rounded +pwsx3364 power 0.0202 0.5 -> 0.142 Inexact Rounded +pwsx3365 power 0.203 0.5 -> 0.451 Inexact Rounded +pwsx3366 power 0.0203 0.5 -> 0.142 Inexact Rounded +pwsx3367 power 0.204 0.5 -> 0.452 Inexact Rounded +pwsx3368 power 0.0204 0.5 -> 0.143 Inexact Rounded +pwsx3369 power 0.205 0.5 -> 0.453 Inexact Rounded +pwsx3370 power 0.0205 0.5 -> 0.143 Inexact Rounded +pwsx3371 power 0.206 0.5 -> 0.454 Inexact Rounded +pwsx3372 power 0.0206 0.5 -> 0.144 Inexact Rounded +pwsx3373 power 0.207 0.5 -> 0.455 Inexact Rounded +pwsx3374 power 0.0207 0.5 -> 0.144 Inexact Rounded +pwsx3375 power 0.208 0.5 -> 0.456 Inexact Rounded +pwsx3376 power 0.0208 0.5 -> 0.144 Inexact Rounded +pwsx3377 power 0.209 0.5 -> 0.457 Inexact Rounded +pwsx3378 power 0.0209 0.5 -> 0.145 Inexact Rounded +pwsx3379 power 0.211 0.5 -> 0.459 Inexact Rounded +pwsx3380 power 0.0211 0.5 -> 0.145 Inexact Rounded +pwsx3381 power 0.212 0.5 -> 0.460 Inexact Rounded +pwsx3382 power 0.0212 0.5 -> 0.146 Inexact Rounded +pwsx3383 power 0.213 0.5 -> 0.462 Inexact Rounded +pwsx3384 power 0.0213 0.5 -> 0.146 Inexact Rounded +pwsx3385 power 0.214 0.5 -> 0.463 Inexact Rounded +pwsx3386 power 0.0214 0.5 -> 0.146 Inexact Rounded +pwsx3387 power 0.215 0.5 -> 0.464 Inexact Rounded +pwsx3388 power 0.0215 0.5 -> 0.147 Inexact Rounded +pwsx3389 power 0.216 0.5 -> 0.465 Inexact Rounded +pwsx3390 power 0.0216 0.5 -> 0.147 Inexact Rounded +pwsx3391 power 0.217 0.5 -> 0.466 Inexact Rounded +pwsx3392 power 0.0217 0.5 -> 0.147 Inexact Rounded +pwsx3393 power 0.218 0.5 -> 0.467 Inexact Rounded +pwsx3394 power 0.0218 0.5 -> 0.148 Inexact Rounded +pwsx3395 power 0.219 0.5 -> 0.468 Inexact Rounded +pwsx3396 power 0.0219 0.5 -> 0.148 Inexact Rounded +pwsx3397 power 0.221 0.5 -> 0.470 Inexact Rounded +pwsx3398 power 0.0221 0.5 -> 0.149 Inexact Rounded +pwsx3399 power 0.222 0.5 -> 0.471 Inexact Rounded +pwsx3400 power 0.0222 0.5 -> 0.149 Inexact Rounded +pwsx3401 power 0.223 0.5 -> 0.472 Inexact Rounded +pwsx3402 power 0.0223 0.5 -> 0.149 Inexact Rounded +pwsx3403 power 0.224 0.5 -> 0.473 Inexact Rounded +pwsx3404 power 0.0224 0.5 -> 0.150 Inexact Rounded +pwsx3405 power 0.225 0.5 -> 0.474 Inexact Rounded +pwsx3406 power 0.0225 0.5 -> 0.150 Inexact Rounded +pwsx3407 power 0.226 0.5 -> 0.475 Inexact Rounded +pwsx3408 power 0.0226 0.5 -> 0.150 Inexact Rounded +pwsx3409 power 0.227 0.5 -> 0.476 Inexact Rounded +pwsx3410 power 0.0227 0.5 -> 0.151 Inexact Rounded +pwsx3411 power 0.228 0.5 -> 0.477 Inexact Rounded +pwsx3412 power 0.0228 0.5 -> 0.151 Inexact Rounded +pwsx3413 power 0.229 0.5 -> 0.479 Inexact Rounded +pwsx3414 power 0.0229 0.5 -> 0.151 Inexact Rounded +pwsx3415 power 0.231 0.5 -> 0.481 Inexact Rounded +pwsx3416 power 0.0231 0.5 -> 0.152 Inexact Rounded +pwsx3417 power 0.232 0.5 -> 0.482 Inexact Rounded +pwsx3418 power 0.0232 0.5 -> 0.152 Inexact Rounded +pwsx3419 power 0.233 0.5 -> 0.483 Inexact Rounded +pwsx3420 power 0.0233 0.5 -> 0.153 Inexact Rounded +pwsx3421 power 0.234 0.5 -> 0.484 Inexact Rounded +pwsx3422 power 0.0234 0.5 -> 0.153 Inexact Rounded +pwsx3423 power 0.235 0.5 -> 0.485 Inexact Rounded +pwsx3424 power 0.0235 0.5 -> 0.153 Inexact Rounded +pwsx3425 power 0.236 0.5 -> 0.486 Inexact Rounded +pwsx3426 power 0.0236 0.5 -> 0.154 Inexact Rounded +pwsx3427 power 0.237 0.5 -> 0.487 Inexact Rounded +pwsx3428 power 0.0237 0.5 -> 0.154 Inexact Rounded +pwsx3429 power 0.238 0.5 -> 0.488 Inexact Rounded +pwsx3430 power 0.0238 0.5 -> 0.154 Inexact Rounded +pwsx3431 power 0.239 0.5 -> 0.489 Inexact Rounded +pwsx3432 power 0.0239 0.5 -> 0.155 Inexact Rounded +pwsx3433 power 0.241 0.5 -> 0.491 Inexact Rounded +pwsx3434 power 0.0241 0.5 -> 0.155 Inexact Rounded +pwsx3435 power 0.242 0.5 -> 0.492 Inexact Rounded +pwsx3436 power 0.0242 0.5 -> 0.156 Inexact Rounded +pwsx3437 power 0.243 0.5 -> 0.493 Inexact Rounded +pwsx3438 power 0.0243 0.5 -> 0.156 Inexact Rounded +pwsx3439 power 0.244 0.5 -> 0.494 Inexact Rounded +pwsx3440 power 0.0244 0.5 -> 0.156 Inexact Rounded +pwsx3441 power 0.245 0.5 -> 0.495 Inexact Rounded +pwsx3442 power 0.0245 0.5 -> 0.157 Inexact Rounded +pwsx3443 power 0.246 0.5 -> 0.496 Inexact Rounded +pwsx3444 power 0.0246 0.5 -> 0.157 Inexact Rounded +pwsx3445 power 0.247 0.5 -> 0.497 Inexact Rounded +pwsx3446 power 0.0247 0.5 -> 0.157 Inexact Rounded +pwsx3447 power 0.248 0.5 -> 0.498 Inexact Rounded +pwsx3448 power 0.0248 0.5 -> 0.157 Inexact Rounded +pwsx3449 power 0.249 0.5 -> 0.499 Inexact Rounded +pwsx3450 power 0.0249 0.5 -> 0.158 Inexact Rounded +pwsx3451 power 0.251 0.5 -> 0.501 Inexact Rounded +pwsx3452 power 0.0251 0.5 -> 0.158 Inexact Rounded +pwsx3453 power 0.252 0.5 -> 0.502 Inexact Rounded +pwsx3454 power 0.0252 0.5 -> 0.159 Inexact Rounded +pwsx3455 power 0.253 0.5 -> 0.503 Inexact Rounded +pwsx3456 power 0.0253 0.5 -> 0.159 Inexact Rounded +pwsx3457 power 0.254 0.5 -> 0.504 Inexact Rounded +pwsx3458 power 0.0254 0.5 -> 0.159 Inexact Rounded +pwsx3459 power 0.255 0.5 -> 0.505 Inexact Rounded +pwsx3460 power 0.0255 0.5 -> 0.160 Inexact Rounded +pwsx3461 power 0.256 0.5 -> 0.506 Inexact Rounded +pwsx3462 power 0.0256 0.5 -> 0.160 Inexact Rounded +pwsx3463 power 0.257 0.5 -> 0.507 Inexact Rounded +pwsx3464 power 0.0257 0.5 -> 0.160 Inexact Rounded +pwsx3465 power 0.258 0.5 -> 0.508 Inexact Rounded +pwsx3466 power 0.0258 0.5 -> 0.161 Inexact Rounded +pwsx3467 power 0.259 0.5 -> 0.509 Inexact Rounded +pwsx3468 power 0.0259 0.5 -> 0.161 Inexact Rounded +pwsx3469 power 0.261 0.5 -> 0.511 Inexact Rounded +pwsx3470 power 0.0261 0.5 -> 0.162 Inexact Rounded +pwsx3471 power 0.262 0.5 -> 0.512 Inexact Rounded +pwsx3472 power 0.0262 0.5 -> 0.162 Inexact Rounded +pwsx3473 power 0.263 0.5 -> 0.513 Inexact Rounded +pwsx3474 power 0.0263 0.5 -> 0.162 Inexact Rounded +pwsx3475 power 0.264 0.5 -> 0.514 Inexact Rounded +pwsx3476 power 0.0264 0.5 -> 0.162 Inexact Rounded +pwsx3477 power 0.265 0.5 -> 0.515 Inexact Rounded +pwsx3478 power 0.0265 0.5 -> 0.163 Inexact Rounded +pwsx3479 power 0.266 0.5 -> 0.516 Inexact Rounded +pwsx3480 power 0.0266 0.5 -> 0.163 Inexact Rounded +pwsx3481 power 0.267 0.5 -> 0.517 Inexact Rounded +pwsx3482 power 0.0267 0.5 -> 0.163 Inexact Rounded +pwsx3483 power 0.268 0.5 -> 0.518 Inexact Rounded +pwsx3484 power 0.0268 0.5 -> 0.164 Inexact Rounded +pwsx3485 power 0.269 0.5 -> 0.519 Inexact Rounded +pwsx3486 power 0.0269 0.5 -> 0.164 Inexact Rounded +pwsx3487 power 0.271 0.5 -> 0.521 Inexact Rounded +pwsx3488 power 0.0271 0.5 -> 0.165 Inexact Rounded +pwsx3489 power 0.272 0.5 -> 0.522 Inexact Rounded +pwsx3490 power 0.0272 0.5 -> 0.165 Inexact Rounded +pwsx3491 power 0.273 0.5 -> 0.522 Inexact Rounded +pwsx3492 power 0.0273 0.5 -> 0.165 Inexact Rounded +pwsx3493 power 0.274 0.5 -> 0.523 Inexact Rounded +pwsx3494 power 0.0274 0.5 -> 0.166 Inexact Rounded +pwsx3495 power 0.275 0.5 -> 0.524 Inexact Rounded +pwsx3496 power 0.0275 0.5 -> 0.166 Inexact Rounded +pwsx3497 power 0.276 0.5 -> 0.525 Inexact Rounded +pwsx3498 power 0.0276 0.5 -> 0.166 Inexact Rounded +pwsx3499 power 0.277 0.5 -> 0.526 Inexact Rounded +pwsx3500 power 0.0277 0.5 -> 0.166 Inexact Rounded +pwsx3501 power 0.278 0.5 -> 0.527 Inexact Rounded +pwsx3502 power 0.0278 0.5 -> 0.167 Inexact Rounded +pwsx3503 power 0.279 0.5 -> 0.528 Inexact Rounded +pwsx3504 power 0.0279 0.5 -> 0.167 Inexact Rounded +pwsx3505 power 0.281 0.5 -> 0.530 Inexact Rounded +pwsx3506 power 0.0281 0.5 -> 0.168 Inexact Rounded +pwsx3507 power 0.282 0.5 -> 0.531 Inexact Rounded +pwsx3508 power 0.0282 0.5 -> 0.168 Inexact Rounded +pwsx3509 power 0.283 0.5 -> 0.532 Inexact Rounded +pwsx3510 power 0.0283 0.5 -> 0.168 Inexact Rounded +pwsx3511 power 0.284 0.5 -> 0.533 Inexact Rounded +pwsx3512 power 0.0284 0.5 -> 0.169 Inexact Rounded +pwsx3513 power 0.285 0.5 -> 0.534 Inexact Rounded +pwsx3514 power 0.0285 0.5 -> 0.169 Inexact Rounded +pwsx3515 power 0.286 0.5 -> 0.535 Inexact Rounded +pwsx3516 power 0.0286 0.5 -> 0.169 Inexact Rounded +pwsx3517 power 0.287 0.5 -> 0.536 Inexact Rounded +pwsx3518 power 0.0287 0.5 -> 0.169 Inexact Rounded +pwsx3519 power 0.288 0.5 -> 0.537 Inexact Rounded +pwsx3520 power 0.0288 0.5 -> 0.170 Inexact Rounded +pwsx3521 power 0.289 0.5 -> 0.538 Inexact Rounded +pwsx3522 power 0.0289 0.5 -> 0.170 Inexact Rounded +pwsx3523 power 0.291 0.5 -> 0.539 Inexact Rounded +pwsx3524 power 0.0291 0.5 -> 0.171 Inexact Rounded +pwsx3525 power 0.292 0.5 -> 0.540 Inexact Rounded +pwsx3526 power 0.0292 0.5 -> 0.171 Inexact Rounded +pwsx3527 power 0.293 0.5 -> 0.541 Inexact Rounded +pwsx3528 power 0.0293 0.5 -> 0.171 Inexact Rounded +pwsx3529 power 0.294 0.5 -> 0.542 Inexact Rounded +pwsx3530 power 0.0294 0.5 -> 0.171 Inexact Rounded +pwsx3531 power 0.295 0.5 -> 0.543 Inexact Rounded +pwsx3532 power 0.0295 0.5 -> 0.172 Inexact Rounded +pwsx3533 power 0.296 0.5 -> 0.544 Inexact Rounded +pwsx3534 power 0.0296 0.5 -> 0.172 Inexact Rounded +pwsx3535 power 0.297 0.5 -> 0.545 Inexact Rounded +pwsx3536 power 0.0297 0.5 -> 0.172 Inexact Rounded +pwsx3537 power 0.298 0.5 -> 0.546 Inexact Rounded +pwsx3538 power 0.0298 0.5 -> 0.173 Inexact Rounded +pwsx3539 power 0.299 0.5 -> 0.547 Inexact Rounded +pwsx3540 power 0.0299 0.5 -> 0.173 Inexact Rounded +pwsx3541 power 0.301 0.5 -> 0.549 Inexact Rounded +pwsx3542 power 0.0301 0.5 -> 0.173 Inexact Rounded +pwsx3543 power 0.302 0.5 -> 0.550 Inexact Rounded +pwsx3544 power 0.0302 0.5 -> 0.174 Inexact Rounded +pwsx3545 power 0.303 0.5 -> 0.550 Inexact Rounded +pwsx3546 power 0.0303 0.5 -> 0.174 Inexact Rounded +pwsx3547 power 0.304 0.5 -> 0.551 Inexact Rounded +pwsx3548 power 0.0304 0.5 -> 0.174 Inexact Rounded +pwsx3549 power 0.305 0.5 -> 0.552 Inexact Rounded +pwsx3550 power 0.0305 0.5 -> 0.175 Inexact Rounded +pwsx3551 power 0.306 0.5 -> 0.553 Inexact Rounded +pwsx3552 power 0.0306 0.5 -> 0.175 Inexact Rounded +pwsx3553 power 0.307 0.5 -> 0.554 Inexact Rounded +pwsx3554 power 0.0307 0.5 -> 0.175 Inexact Rounded +pwsx3555 power 0.308 0.5 -> 0.555 Inexact Rounded +pwsx3556 power 0.0308 0.5 -> 0.175 Inexact Rounded +pwsx3557 power 0.309 0.5 -> 0.556 Inexact Rounded +pwsx3558 power 0.0309 0.5 -> 0.176 Inexact Rounded +pwsx3559 power 0.311 0.5 -> 0.558 Inexact Rounded +pwsx3560 power 0.0311 0.5 -> 0.176 Inexact Rounded +pwsx3561 power 0.312 0.5 -> 0.559 Inexact Rounded +pwsx3562 power 0.0312 0.5 -> 0.177 Inexact Rounded +pwsx3563 power 0.313 0.5 -> 0.559 Inexact Rounded +pwsx3564 power 0.0313 0.5 -> 0.177 Inexact Rounded +pwsx3565 power 0.314 0.5 -> 0.560 Inexact Rounded +pwsx3566 power 0.0314 0.5 -> 0.177 Inexact Rounded +pwsx3567 power 0.315 0.5 -> 0.561 Inexact Rounded +pwsx3568 power 0.0315 0.5 -> 0.177 Inexact Rounded +pwsx3569 power 0.316 0.5 -> 0.562 Inexact Rounded +pwsx3570 power 0.0316 0.5 -> 0.178 Inexact Rounded +pwsx3571 power 0.317 0.5 -> 0.563 Inexact Rounded +pwsx3572 power 0.0317 0.5 -> 0.178 Inexact Rounded +pwsx3573 power 0.318 0.5 -> 0.564 Inexact Rounded +pwsx3574 power 0.0318 0.5 -> 0.178 Inexact Rounded +pwsx3575 power 0.319 0.5 -> 0.565 Inexact Rounded +pwsx3576 power 0.0319 0.5 -> 0.179 Inexact Rounded +pwsx3577 power 0.321 0.5 -> 0.567 Inexact Rounded +pwsx3578 power 0.0321 0.5 -> 0.179 Inexact Rounded +pwsx3579 power 0.322 0.5 -> 0.567 Inexact Rounded +pwsx3580 power 0.0322 0.5 -> 0.179 Inexact Rounded +pwsx3581 power 0.323 0.5 -> 0.568 Inexact Rounded +pwsx3582 power 0.0323 0.5 -> 0.180 Inexact Rounded +pwsx3583 power 0.324 0.5 -> 0.569 Inexact Rounded +pwsx3584 power 0.0324 0.5 -> 0.180 Inexact Rounded +pwsx3585 power 0.325 0.5 -> 0.570 Inexact Rounded +pwsx3586 power 0.0325 0.5 -> 0.180 Inexact Rounded +pwsx3587 power 0.326 0.5 -> 0.571 Inexact Rounded +pwsx3588 power 0.0326 0.5 -> 0.181 Inexact Rounded +pwsx3589 power 0.327 0.5 -> 0.572 Inexact Rounded +pwsx3590 power 0.0327 0.5 -> 0.181 Inexact Rounded +pwsx3591 power 0.328 0.5 -> 0.573 Inexact Rounded +pwsx3592 power 0.0328 0.5 -> 0.181 Inexact Rounded +pwsx3593 power 0.329 0.5 -> 0.574 Inexact Rounded +pwsx3594 power 0.0329 0.5 -> 0.181 Inexact Rounded +pwsx3595 power 0.331 0.5 -> 0.575 Inexact Rounded +pwsx3596 power 0.0331 0.5 -> 0.182 Inexact Rounded +pwsx3597 power 0.332 0.5 -> 0.576 Inexact Rounded +pwsx3598 power 0.0332 0.5 -> 0.182 Inexact Rounded +pwsx3599 power 0.333 0.5 -> 0.577 Inexact Rounded +pwsx3600 power 0.0333 0.5 -> 0.182 Inexact Rounded +pwsx3601 power 0.334 0.5 -> 0.578 Inexact Rounded +pwsx3602 power 0.0334 0.5 -> 0.183 Inexact Rounded +pwsx3603 power 0.335 0.5 -> 0.579 Inexact Rounded +pwsx3604 power 0.0335 0.5 -> 0.183 Inexact Rounded +pwsx3605 power 0.336 0.5 -> 0.580 Inexact Rounded +pwsx3606 power 0.0336 0.5 -> 0.183 Inexact Rounded +pwsx3607 power 0.337 0.5 -> 0.581 Inexact Rounded +pwsx3608 power 0.0337 0.5 -> 0.184 Inexact Rounded +pwsx3609 power 0.338 0.5 -> 0.581 Inexact Rounded +pwsx3610 power 0.0338 0.5 -> 0.184 Inexact Rounded +pwsx3611 power 0.339 0.5 -> 0.582 Inexact Rounded +pwsx3612 power 0.0339 0.5 -> 0.184 Inexact Rounded +pwsx3613 power 0.341 0.5 -> 0.584 Inexact Rounded +pwsx3614 power 0.0341 0.5 -> 0.185 Inexact Rounded +pwsx3615 power 0.342 0.5 -> 0.585 Inexact Rounded +pwsx3616 power 0.0342 0.5 -> 0.185 Inexact Rounded +pwsx3617 power 0.343 0.5 -> 0.586 Inexact Rounded +pwsx3618 power 0.0343 0.5 -> 0.185 Inexact Rounded +pwsx3619 power 0.344 0.5 -> 0.587 Inexact Rounded +pwsx3620 power 0.0344 0.5 -> 0.185 Inexact Rounded +pwsx3621 power 0.345 0.5 -> 0.587 Inexact Rounded +pwsx3622 power 0.0345 0.5 -> 0.186 Inexact Rounded +pwsx3623 power 0.346 0.5 -> 0.588 Inexact Rounded +pwsx3624 power 0.0346 0.5 -> 0.186 Inexact Rounded +pwsx3625 power 0.347 0.5 -> 0.589 Inexact Rounded +pwsx3626 power 0.0347 0.5 -> 0.186 Inexact Rounded +pwsx3627 power 0.348 0.5 -> 0.590 Inexact Rounded +pwsx3628 power 0.0348 0.5 -> 0.187 Inexact Rounded +pwsx3629 power 0.349 0.5 -> 0.591 Inexact Rounded +pwsx3630 power 0.0349 0.5 -> 0.187 Inexact Rounded +pwsx3631 power 0.351 0.5 -> 0.592 Inexact Rounded +pwsx3632 power 0.0351 0.5 -> 0.187 Inexact Rounded +pwsx3633 power 0.352 0.5 -> 0.593 Inexact Rounded +pwsx3634 power 0.0352 0.5 -> 0.188 Inexact Rounded +pwsx3635 power 0.353 0.5 -> 0.594 Inexact Rounded +pwsx3636 power 0.0353 0.5 -> 0.188 Inexact Rounded +pwsx3637 power 0.354 0.5 -> 0.595 Inexact Rounded +pwsx3638 power 0.0354 0.5 -> 0.188 Inexact Rounded +pwsx3639 power 0.355 0.5 -> 0.596 Inexact Rounded +pwsx3640 power 0.0355 0.5 -> 0.188 Inexact Rounded +pwsx3641 power 0.356 0.5 -> 0.597 Inexact Rounded +pwsx3642 power 0.0356 0.5 -> 0.189 Inexact Rounded +pwsx3643 power 0.357 0.5 -> 0.597 Inexact Rounded +pwsx3644 power 0.0357 0.5 -> 0.189 Inexact Rounded +pwsx3645 power 0.358 0.5 -> 0.598 Inexact Rounded +pwsx3646 power 0.0358 0.5 -> 0.189 Inexact Rounded +pwsx3647 power 0.359 0.5 -> 0.599 Inexact Rounded +pwsx3648 power 0.0359 0.5 -> 0.189 Inexact Rounded +pwsx3649 power 0.361 0.5 -> 0.601 Inexact Rounded +pwsx3650 power 0.0361 0.5 -> 0.190 Inexact Rounded +pwsx3651 power 0.362 0.5 -> 0.602 Inexact Rounded +pwsx3652 power 0.0362 0.5 -> 0.190 Inexact Rounded +pwsx3653 power 0.363 0.5 -> 0.602 Inexact Rounded +pwsx3654 power 0.0363 0.5 -> 0.191 Inexact Rounded +pwsx3655 power 0.364 0.5 -> 0.603 Inexact Rounded +pwsx3656 power 0.0364 0.5 -> 0.191 Inexact Rounded +pwsx3657 power 0.365 0.5 -> 0.604 Inexact Rounded +pwsx3658 power 0.0365 0.5 -> 0.191 Inexact Rounded +pwsx3659 power 0.366 0.5 -> 0.605 Inexact Rounded +pwsx3660 power 0.0366 0.5 -> 0.191 Inexact Rounded +pwsx3661 power 0.367 0.5 -> 0.606 Inexact Rounded +pwsx3662 power 0.0367 0.5 -> 0.192 Inexact Rounded +pwsx3663 power 0.368 0.5 -> 0.607 Inexact Rounded +pwsx3664 power 0.0368 0.5 -> 0.192 Inexact Rounded +pwsx3665 power 0.369 0.5 -> 0.607 Inexact Rounded +pwsx3666 power 0.0369 0.5 -> 0.192 Inexact Rounded +pwsx3667 power 0.371 0.5 -> 0.609 Inexact Rounded +pwsx3668 power 0.0371 0.5 -> 0.193 Inexact Rounded +pwsx3669 power 0.372 0.5 -> 0.610 Inexact Rounded +pwsx3670 power 0.0372 0.5 -> 0.193 Inexact Rounded +pwsx3671 power 0.373 0.5 -> 0.611 Inexact Rounded +pwsx3672 power 0.0373 0.5 -> 0.193 Inexact Rounded +pwsx3673 power 0.374 0.5 -> 0.612 Inexact Rounded +pwsx3674 power 0.0374 0.5 -> 0.193 Inexact Rounded +pwsx3675 power 0.375 0.5 -> 0.612 Inexact Rounded +pwsx3676 power 0.0375 0.5 -> 0.194 Inexact Rounded +pwsx3677 power 0.376 0.5 -> 0.613 Inexact Rounded +pwsx3678 power 0.0376 0.5 -> 0.194 Inexact Rounded +pwsx3679 power 0.377 0.5 -> 0.614 Inexact Rounded +pwsx3680 power 0.0377 0.5 -> 0.194 Inexact Rounded +pwsx3681 power 0.378 0.5 -> 0.615 Inexact Rounded +pwsx3682 power 0.0378 0.5 -> 0.194 Inexact Rounded +pwsx3683 power 0.379 0.5 -> 0.616 Inexact Rounded +pwsx3684 power 0.0379 0.5 -> 0.195 Inexact Rounded +pwsx3685 power 0.381 0.5 -> 0.617 Inexact Rounded +pwsx3686 power 0.0381 0.5 -> 0.195 Inexact Rounded +pwsx3687 power 0.382 0.5 -> 0.618 Inexact Rounded +pwsx3688 power 0.0382 0.5 -> 0.195 Inexact Rounded +pwsx3689 power 0.383 0.5 -> 0.619 Inexact Rounded +pwsx3690 power 0.0383 0.5 -> 0.196 Inexact Rounded +pwsx3691 power 0.384 0.5 -> 0.620 Inexact Rounded +pwsx3692 power 0.0384 0.5 -> 0.196 Inexact Rounded +pwsx3693 power 0.385 0.5 -> 0.620 Inexact Rounded +pwsx3694 power 0.0385 0.5 -> 0.196 Inexact Rounded +pwsx3695 power 0.386 0.5 -> 0.621 Inexact Rounded +pwsx3696 power 0.0386 0.5 -> 0.196 Inexact Rounded +pwsx3697 power 0.387 0.5 -> 0.622 Inexact Rounded +pwsx3698 power 0.0387 0.5 -> 0.197 Inexact Rounded +pwsx3699 power 0.388 0.5 -> 0.623 Inexact Rounded +pwsx3700 power 0.0388 0.5 -> 0.197 Inexact Rounded +pwsx3701 power 0.389 0.5 -> 0.624 Inexact Rounded +pwsx3702 power 0.0389 0.5 -> 0.197 Inexact Rounded +pwsx3703 power 0.391 0.5 -> 0.625 Inexact Rounded +pwsx3704 power 0.0391 0.5 -> 0.198 Inexact Rounded +pwsx3705 power 0.392 0.5 -> 0.626 Inexact Rounded +pwsx3706 power 0.0392 0.5 -> 0.198 Inexact Rounded +pwsx3707 power 0.393 0.5 -> 0.627 Inexact Rounded +pwsx3708 power 0.0393 0.5 -> 0.198 Inexact Rounded +pwsx3709 power 0.394 0.5 -> 0.628 Inexact Rounded +pwsx3710 power 0.0394 0.5 -> 0.198 Inexact Rounded +pwsx3711 power 0.395 0.5 -> 0.628 Inexact Rounded +pwsx3712 power 0.0395 0.5 -> 0.199 Inexact Rounded +pwsx3713 power 0.396 0.5 -> 0.629 Inexact Rounded +pwsx3714 power 0.0396 0.5 -> 0.199 Inexact Rounded +pwsx3715 power 0.397 0.5 -> 0.630 Inexact Rounded +pwsx3716 power 0.0397 0.5 -> 0.199 Inexact Rounded +pwsx3717 power 0.398 0.5 -> 0.631 Inexact Rounded +pwsx3718 power 0.0398 0.5 -> 0.199 Inexact Rounded +pwsx3719 power 0.399 0.5 -> 0.632 Inexact Rounded +pwsx3720 power 0.0399 0.5 -> 0.200 Inexact Rounded +pwsx3721 power 0.401 0.5 -> 0.633 Inexact Rounded +pwsx3722 power 0.0401 0.5 -> 0.200 Inexact Rounded +pwsx3723 power 0.402 0.5 -> 0.634 Inexact Rounded +pwsx3724 power 0.0402 0.5 -> 0.200 Inexact Rounded +pwsx3725 power 0.403 0.5 -> 0.635 Inexact Rounded +pwsx3726 power 0.0403 0.5 -> 0.201 Inexact Rounded +pwsx3727 power 0.404 0.5 -> 0.636 Inexact Rounded +pwsx3728 power 0.0404 0.5 -> 0.201 Inexact Rounded +pwsx3729 power 0.405 0.5 -> 0.636 Inexact Rounded +pwsx3730 power 0.0405 0.5 -> 0.201 Inexact Rounded +pwsx3731 power 0.406 0.5 -> 0.637 Inexact Rounded +pwsx3732 power 0.0406 0.5 -> 0.201 Inexact Rounded +pwsx3733 power 0.407 0.5 -> 0.638 Inexact Rounded +pwsx3734 power 0.0407 0.5 -> 0.202 Inexact Rounded +pwsx3735 power 0.408 0.5 -> 0.639 Inexact Rounded +pwsx3736 power 0.0408 0.5 -> 0.202 Inexact Rounded +pwsx3737 power 0.409 0.5 -> 0.640 Inexact Rounded +pwsx3738 power 0.0409 0.5 -> 0.202 Inexact Rounded +pwsx3739 power 0.411 0.5 -> 0.641 Inexact Rounded +pwsx3740 power 0.0411 0.5 -> 0.203 Inexact Rounded +pwsx3741 power 0.412 0.5 -> 0.642 Inexact Rounded +pwsx3742 power 0.0412 0.5 -> 0.203 Inexact Rounded +pwsx3743 power 0.413 0.5 -> 0.643 Inexact Rounded +pwsx3744 power 0.0413 0.5 -> 0.203 Inexact Rounded +pwsx3745 power 0.414 0.5 -> 0.643 Inexact Rounded +pwsx3746 power 0.0414 0.5 -> 0.203 Inexact Rounded +pwsx3747 power 0.415 0.5 -> 0.644 Inexact Rounded +pwsx3748 power 0.0415 0.5 -> 0.204 Inexact Rounded +pwsx3749 power 0.416 0.5 -> 0.645 Inexact Rounded +pwsx3750 power 0.0416 0.5 -> 0.204 Inexact Rounded +pwsx3751 power 0.417 0.5 -> 0.646 Inexact Rounded +pwsx3752 power 0.0417 0.5 -> 0.204 Inexact Rounded +pwsx3753 power 0.418 0.5 -> 0.647 Inexact Rounded +pwsx3754 power 0.0418 0.5 -> 0.204 Inexact Rounded +pwsx3755 power 0.419 0.5 -> 0.647 Inexact Rounded +pwsx3756 power 0.0419 0.5 -> 0.205 Inexact Rounded +pwsx3757 power 0.421 0.5 -> 0.649 Inexact Rounded +pwsx3758 power 0.0421 0.5 -> 0.205 Inexact Rounded +pwsx3759 power 0.422 0.5 -> 0.650 Inexact Rounded +pwsx3760 power 0.0422 0.5 -> 0.205 Inexact Rounded +pwsx3761 power 0.423 0.5 -> 0.650 Inexact Rounded +pwsx3762 power 0.0423 0.5 -> 0.206 Inexact Rounded +pwsx3763 power 0.424 0.5 -> 0.651 Inexact Rounded +pwsx3764 power 0.0424 0.5 -> 0.206 Inexact Rounded +pwsx3765 power 0.425 0.5 -> 0.652 Inexact Rounded +pwsx3766 power 0.0425 0.5 -> 0.206 Inexact Rounded +pwsx3767 power 0.426 0.5 -> 0.653 Inexact Rounded +pwsx3768 power 0.0426 0.5 -> 0.206 Inexact Rounded +pwsx3769 power 0.427 0.5 -> 0.653 Inexact Rounded +pwsx3770 power 0.0427 0.5 -> 0.207 Inexact Rounded +pwsx3771 power 0.428 0.5 -> 0.654 Inexact Rounded +pwsx3772 power 0.0428 0.5 -> 0.207 Inexact Rounded +pwsx3773 power 0.429 0.5 -> 0.655 Inexact Rounded +pwsx3774 power 0.0429 0.5 -> 0.207 Inexact Rounded +pwsx3775 power 0.431 0.5 -> 0.657 Inexact Rounded +pwsx3776 power 0.0431 0.5 -> 0.208 Inexact Rounded +pwsx3777 power 0.432 0.5 -> 0.657 Inexact Rounded +pwsx3778 power 0.0432 0.5 -> 0.208 Inexact Rounded +pwsx3779 power 0.433 0.5 -> 0.658 Inexact Rounded +pwsx3780 power 0.0433 0.5 -> 0.208 Inexact Rounded +pwsx3781 power 0.434 0.5 -> 0.659 Inexact Rounded +pwsx3782 power 0.0434 0.5 -> 0.208 Inexact Rounded +pwsx3783 power 0.435 0.5 -> 0.660 Inexact Rounded +pwsx3784 power 0.0435 0.5 -> 0.209 Inexact Rounded +pwsx3785 power 0.436 0.5 -> 0.660 Inexact Rounded +pwsx3786 power 0.0436 0.5 -> 0.209 Inexact Rounded +pwsx3787 power 0.437 0.5 -> 0.661 Inexact Rounded +pwsx3788 power 0.0437 0.5 -> 0.209 Inexact Rounded +pwsx3789 power 0.438 0.5 -> 0.662 Inexact Rounded +pwsx3790 power 0.0438 0.5 -> 0.209 Inexact Rounded +pwsx3791 power 0.439 0.5 -> 0.663 Inexact Rounded +pwsx3792 power 0.0439 0.5 -> 0.210 Inexact Rounded +pwsx3793 power 0.441 0.5 -> 0.664 Inexact Rounded +pwsx3794 power 0.0441 0.5 -> 0.210 Inexact Rounded +pwsx3795 power 0.442 0.5 -> 0.665 Inexact Rounded +pwsx3796 power 0.0442 0.5 -> 0.210 Inexact Rounded +pwsx3797 power 0.443 0.5 -> 0.666 Inexact Rounded +pwsx3798 power 0.0443 0.5 -> 0.210 Inexact Rounded +pwsx3799 power 0.444 0.5 -> 0.666 Inexact Rounded +pwsx3800 power 0.0444 0.5 -> 0.211 Inexact Rounded +pwsx3801 power 0.445 0.5 -> 0.667 Inexact Rounded +pwsx3802 power 0.0445 0.5 -> 0.211 Inexact Rounded +pwsx3803 power 0.446 0.5 -> 0.668 Inexact Rounded +pwsx3804 power 0.0446 0.5 -> 0.211 Inexact Rounded +pwsx3805 power 0.447 0.5 -> 0.669 Inexact Rounded +pwsx3806 power 0.0447 0.5 -> 0.211 Inexact Rounded +pwsx3807 power 0.448 0.5 -> 0.669 Inexact Rounded +pwsx3808 power 0.0448 0.5 -> 0.212 Inexact Rounded +pwsx3809 power 0.449 0.5 -> 0.670 Inexact Rounded +pwsx3810 power 0.0449 0.5 -> 0.212 Inexact Rounded +pwsx3811 power 0.451 0.5 -> 0.672 Inexact Rounded +pwsx3812 power 0.0451 0.5 -> 0.212 Inexact Rounded +pwsx3813 power 0.452 0.5 -> 0.672 Inexact Rounded +pwsx3814 power 0.0452 0.5 -> 0.213 Inexact Rounded +pwsx3815 power 0.453 0.5 -> 0.673 Inexact Rounded +pwsx3816 power 0.0453 0.5 -> 0.213 Inexact Rounded +pwsx3817 power 0.454 0.5 -> 0.674 Inexact Rounded +pwsx3818 power 0.0454 0.5 -> 0.213 Inexact Rounded +pwsx3819 power 0.455 0.5 -> 0.675 Inexact Rounded +pwsx3820 power 0.0455 0.5 -> 0.213 Inexact Rounded +pwsx3821 power 0.456 0.5 -> 0.675 Inexact Rounded +pwsx3822 power 0.0456 0.5 -> 0.214 Inexact Rounded +pwsx3823 power 0.457 0.5 -> 0.676 Inexact Rounded +pwsx3824 power 0.0457 0.5 -> 0.214 Inexact Rounded +pwsx3825 power 0.458 0.5 -> 0.677 Inexact Rounded +pwsx3826 power 0.0458 0.5 -> 0.214 Inexact Rounded +pwsx3827 power 0.459 0.5 -> 0.677 Inexact Rounded +pwsx3828 power 0.0459 0.5 -> 0.214 Inexact Rounded +pwsx3829 power 0.461 0.5 -> 0.679 Inexact Rounded +pwsx3830 power 0.0461 0.5 -> 0.215 Inexact Rounded +pwsx3831 power 0.462 0.5 -> 0.680 Inexact Rounded +pwsx3832 power 0.0462 0.5 -> 0.215 Inexact Rounded +pwsx3833 power 0.463 0.5 -> 0.680 Inexact Rounded +pwsx3834 power 0.0463 0.5 -> 0.215 Inexact Rounded +pwsx3835 power 0.464 0.5 -> 0.681 Inexact Rounded +pwsx3836 power 0.0464 0.5 -> 0.215 Inexact Rounded +pwsx3837 power 0.465 0.5 -> 0.682 Inexact Rounded +pwsx3838 power 0.0465 0.5 -> 0.216 Inexact Rounded +pwsx3839 power 0.466 0.5 -> 0.683 Inexact Rounded +pwsx3840 power 0.0466 0.5 -> 0.216 Inexact Rounded +pwsx3841 power 0.467 0.5 -> 0.683 Inexact Rounded +pwsx3842 power 0.0467 0.5 -> 0.216 Inexact Rounded +pwsx3843 power 0.468 0.5 -> 0.684 Inexact Rounded +pwsx3844 power 0.0468 0.5 -> 0.216 Inexact Rounded +pwsx3845 power 0.469 0.5 -> 0.685 Inexact Rounded +pwsx3846 power 0.0469 0.5 -> 0.217 Inexact Rounded +pwsx3847 power 0.471 0.5 -> 0.686 Inexact Rounded +pwsx3848 power 0.0471 0.5 -> 0.217 Inexact Rounded +pwsx3849 power 0.472 0.5 -> 0.687 Inexact Rounded +pwsx3850 power 0.0472 0.5 -> 0.217 Inexact Rounded +pwsx3851 power 0.473 0.5 -> 0.688 Inexact Rounded +pwsx3852 power 0.0473 0.5 -> 0.217 Inexact Rounded +pwsx3853 power 0.474 0.5 -> 0.688 Inexact Rounded +pwsx3854 power 0.0474 0.5 -> 0.218 Inexact Rounded +pwsx3855 power 0.475 0.5 -> 0.689 Inexact Rounded +pwsx3856 power 0.0475 0.5 -> 0.218 Inexact Rounded +pwsx3857 power 0.476 0.5 -> 0.690 Inexact Rounded +pwsx3858 power 0.0476 0.5 -> 0.218 Inexact Rounded +pwsx3859 power 0.477 0.5 -> 0.691 Inexact Rounded +pwsx3860 power 0.0477 0.5 -> 0.218 Inexact Rounded +pwsx3861 power 0.478 0.5 -> 0.691 Inexact Rounded +pwsx3862 power 0.0478 0.5 -> 0.219 Inexact Rounded +pwsx3863 power 0.479 0.5 -> 0.692 Inexact Rounded +pwsx3864 power 0.0479 0.5 -> 0.219 Inexact Rounded +pwsx3865 power 0.481 0.5 -> 0.694 Inexact Rounded +pwsx3866 power 0.0481 0.5 -> 0.219 Inexact Rounded +pwsx3867 power 0.482 0.5 -> 0.694 Inexact Rounded +pwsx3868 power 0.0482 0.5 -> 0.220 Inexact Rounded +pwsx3869 power 0.483 0.5 -> 0.695 Inexact Rounded +pwsx3870 power 0.0483 0.5 -> 0.220 Inexact Rounded +pwsx3871 power 0.484 0.5 -> 0.696 Inexact Rounded +pwsx3872 power 0.0484 0.5 -> 0.220 Inexact Rounded +pwsx3873 power 0.485 0.5 -> 0.696 Inexact Rounded +pwsx3874 power 0.0485 0.5 -> 0.220 Inexact Rounded +pwsx3875 power 0.486 0.5 -> 0.697 Inexact Rounded +pwsx3876 power 0.0486 0.5 -> 0.220 Inexact Rounded +pwsx3877 power 0.487 0.5 -> 0.698 Inexact Rounded +pwsx3878 power 0.0487 0.5 -> 0.221 Inexact Rounded +pwsx3879 power 0.488 0.5 -> 0.699 Inexact Rounded +pwsx3880 power 0.0488 0.5 -> 0.221 Inexact Rounded +pwsx3881 power 0.489 0.5 -> 0.699 Inexact Rounded +pwsx3882 power 0.0489 0.5 -> 0.221 Inexact Rounded +pwsx3883 power 0.491 0.5 -> 0.701 Inexact Rounded +pwsx3884 power 0.0491 0.5 -> 0.222 Inexact Rounded +pwsx3885 power 0.492 0.5 -> 0.701 Inexact Rounded +pwsx3886 power 0.0492 0.5 -> 0.222 Inexact Rounded +pwsx3887 power 0.493 0.5 -> 0.702 Inexact Rounded +pwsx3888 power 0.0493 0.5 -> 0.222 Inexact Rounded +pwsx3889 power 0.494 0.5 -> 0.703 Inexact Rounded +pwsx3890 power 0.0494 0.5 -> 0.222 Inexact Rounded +pwsx3891 power 0.495 0.5 -> 0.704 Inexact Rounded +pwsx3892 power 0.0495 0.5 -> 0.222 Inexact Rounded +pwsx3893 power 0.496 0.5 -> 0.704 Inexact Rounded +pwsx3894 power 0.0496 0.5 -> 0.223 Inexact Rounded +pwsx3895 power 0.497 0.5 -> 0.705 Inexact Rounded +pwsx3896 power 0.0497 0.5 -> 0.223 Inexact Rounded +pwsx3897 power 0.498 0.5 -> 0.706 Inexact Rounded +pwsx3898 power 0.0498 0.5 -> 0.223 Inexact Rounded +pwsx3899 power 0.499 0.5 -> 0.706 Inexact Rounded +pwsx3900 power 0.0499 0.5 -> 0.223 Inexact Rounded +pwsx3901 power 0.501 0.5 -> 0.708 Inexact Rounded +pwsx3902 power 0.0501 0.5 -> 0.224 Inexact Rounded +pwsx3903 power 0.502 0.5 -> 0.709 Inexact Rounded +pwsx3904 power 0.0502 0.5 -> 0.224 Inexact Rounded +pwsx3905 power 0.503 0.5 -> 0.709 Inexact Rounded +pwsx3906 power 0.0503 0.5 -> 0.224 Inexact Rounded +pwsx3907 power 0.504 0.5 -> 0.710 Inexact Rounded +pwsx3908 power 0.0504 0.5 -> 0.224 Inexact Rounded +pwsx3909 power 0.505 0.5 -> 0.711 Inexact Rounded +pwsx3910 power 0.0505 0.5 -> 0.225 Inexact Rounded +pwsx3911 power 0.506 0.5 -> 0.711 Inexact Rounded +pwsx3912 power 0.0506 0.5 -> 0.225 Inexact Rounded +pwsx3913 power 0.507 0.5 -> 0.712 Inexact Rounded +pwsx3914 power 0.0507 0.5 -> 0.225 Inexact Rounded +pwsx3915 power 0.508 0.5 -> 0.713 Inexact Rounded +pwsx3916 power 0.0508 0.5 -> 0.225 Inexact Rounded +pwsx3917 power 0.509 0.5 -> 0.713 Inexact Rounded +pwsx3918 power 0.0509 0.5 -> 0.226 Inexact Rounded +pwsx3919 power 0.511 0.5 -> 0.715 Inexact Rounded +pwsx3920 power 0.0511 0.5 -> 0.226 Inexact Rounded +pwsx3921 power 0.512 0.5 -> 0.716 Inexact Rounded +pwsx3922 power 0.0512 0.5 -> 0.226 Inexact Rounded +pwsx3923 power 0.513 0.5 -> 0.716 Inexact Rounded +pwsx3924 power 0.0513 0.5 -> 0.226 Inexact Rounded +pwsx3925 power 0.514 0.5 -> 0.717 Inexact Rounded +pwsx3926 power 0.0514 0.5 -> 0.227 Inexact Rounded +pwsx3927 power 0.515 0.5 -> 0.718 Inexact Rounded +pwsx3928 power 0.0515 0.5 -> 0.227 Inexact Rounded +pwsx3929 power 0.516 0.5 -> 0.718 Inexact Rounded +pwsx3930 power 0.0516 0.5 -> 0.227 Inexact Rounded +pwsx3931 power 0.517 0.5 -> 0.719 Inexact Rounded +pwsx3932 power 0.0517 0.5 -> 0.227 Inexact Rounded +pwsx3933 power 0.518 0.5 -> 0.720 Inexact Rounded +pwsx3934 power 0.0518 0.5 -> 0.228 Inexact Rounded +pwsx3935 power 0.519 0.5 -> 0.720 Inexact Rounded +pwsx3936 power 0.0519 0.5 -> 0.228 Inexact Rounded +pwsx3937 power 0.521 0.5 -> 0.722 Inexact Rounded +pwsx3938 power 0.0521 0.5 -> 0.228 Inexact Rounded +pwsx3939 power 0.522 0.5 -> 0.722 Inexact Rounded +pwsx3940 power 0.0522 0.5 -> 0.228 Inexact Rounded +pwsx3941 power 0.523 0.5 -> 0.723 Inexact Rounded +pwsx3942 power 0.0523 0.5 -> 0.229 Inexact Rounded +pwsx3943 power 0.524 0.5 -> 0.724 Inexact Rounded +pwsx3944 power 0.0524 0.5 -> 0.229 Inexact Rounded +pwsx3945 power 0.525 0.5 -> 0.725 Inexact Rounded +pwsx3946 power 0.0525 0.5 -> 0.229 Inexact Rounded +pwsx3947 power 0.526 0.5 -> 0.725 Inexact Rounded +pwsx3948 power 0.0526 0.5 -> 0.229 Inexact Rounded +pwsx3949 power 0.527 0.5 -> 0.726 Inexact Rounded +pwsx3950 power 0.0527 0.5 -> 0.230 Inexact Rounded +pwsx3951 power 0.528 0.5 -> 0.727 Inexact Rounded +pwsx3952 power 0.0528 0.5 -> 0.230 Inexact Rounded +pwsx3953 power 0.529 0.5 -> 0.727 Inexact Rounded +pwsx3954 power 0.0529 0.5 -> 0.230 Inexact Rounded +pwsx3955 power 0.531 0.5 -> 0.729 Inexact Rounded +pwsx3956 power 0.0531 0.5 -> 0.230 Inexact Rounded +pwsx3957 power 0.532 0.5 -> 0.729 Inexact Rounded +pwsx3958 power 0.0532 0.5 -> 0.231 Inexact Rounded +pwsx3959 power 0.533 0.5 -> 0.730 Inexact Rounded +pwsx3960 power 0.0533 0.5 -> 0.231 Inexact Rounded +pwsx3961 power 0.534 0.5 -> 0.731 Inexact Rounded +pwsx3962 power 0.0534 0.5 -> 0.231 Inexact Rounded +pwsx3963 power 0.535 0.5 -> 0.731 Inexact Rounded +pwsx3964 power 0.0535 0.5 -> 0.231 Inexact Rounded +pwsx3965 power 0.536 0.5 -> 0.732 Inexact Rounded +pwsx3966 power 0.0536 0.5 -> 0.232 Inexact Rounded +pwsx3967 power 0.537 0.5 -> 0.733 Inexact Rounded +pwsx3968 power 0.0537 0.5 -> 0.232 Inexact Rounded +pwsx3969 power 0.538 0.5 -> 0.733 Inexact Rounded +pwsx3970 power 0.0538 0.5 -> 0.232 Inexact Rounded +pwsx3971 power 0.539 0.5 -> 0.734 Inexact Rounded +pwsx3972 power 0.0539 0.5 -> 0.232 Inexact Rounded +pwsx3973 power 0.541 0.5 -> 0.736 Inexact Rounded +pwsx3974 power 0.0541 0.5 -> 0.233 Inexact Rounded +pwsx3975 power 0.542 0.5 -> 0.736 Inexact Rounded +pwsx3976 power 0.0542 0.5 -> 0.233 Inexact Rounded +pwsx3977 power 0.543 0.5 -> 0.737 Inexact Rounded +pwsx3978 power 0.0543 0.5 -> 0.233 Inexact Rounded +pwsx3979 power 0.544 0.5 -> 0.738 Inexact Rounded +pwsx3980 power 0.0544 0.5 -> 0.233 Inexact Rounded +pwsx3981 power 0.545 0.5 -> 0.738 Inexact Rounded +pwsx3982 power 0.0545 0.5 -> 0.233 Inexact Rounded +pwsx3983 power 0.546 0.5 -> 0.739 Inexact Rounded +pwsx3984 power 0.0546 0.5 -> 0.234 Inexact Rounded +pwsx3985 power 0.547 0.5 -> 0.740 Inexact Rounded +pwsx3986 power 0.0547 0.5 -> 0.234 Inexact Rounded +pwsx3987 power 0.548 0.5 -> 0.740 Inexact Rounded +pwsx3988 power 0.0548 0.5 -> 0.234 Inexact Rounded +pwsx3989 power 0.549 0.5 -> 0.741 Inexact Rounded +pwsx3990 power 0.0549 0.5 -> 0.234 Inexact Rounded +pwsx3991 power 0.551 0.5 -> 0.742 Inexact Rounded +pwsx3992 power 0.0551 0.5 -> 0.235 Inexact Rounded +pwsx3993 power 0.552 0.5 -> 0.743 Inexact Rounded +pwsx3994 power 0.0552 0.5 -> 0.235 Inexact Rounded +pwsx3995 power 0.553 0.5 -> 0.744 Inexact Rounded +pwsx3996 power 0.0553 0.5 -> 0.235 Inexact Rounded +pwsx3997 power 0.554 0.5 -> 0.744 Inexact Rounded +pwsx3998 power 0.0554 0.5 -> 0.235 Inexact Rounded +pwsx3999 power 0.555 0.5 -> 0.745 Inexact Rounded +pwsx4000 power 0.0555 0.5 -> 0.236 Inexact Rounded +pwsx4001 power 0.556 0.5 -> 0.746 Inexact Rounded +pwsx4002 power 0.0556 0.5 -> 0.236 Inexact Rounded +pwsx4003 power 0.557 0.5 -> 0.746 Inexact Rounded +pwsx4004 power 0.0557 0.5 -> 0.236 Inexact Rounded +pwsx4005 power 0.558 0.5 -> 0.747 Inexact Rounded +pwsx4006 power 0.0558 0.5 -> 0.236 Inexact Rounded +pwsx4007 power 0.559 0.5 -> 0.748 Inexact Rounded +pwsx4008 power 0.0559 0.5 -> 0.236 Inexact Rounded +pwsx4009 power 0.561 0.5 -> 0.749 Inexact Rounded +pwsx4010 power 0.0561 0.5 -> 0.237 Inexact Rounded +pwsx4011 power 0.562 0.5 -> 0.750 Inexact Rounded +pwsx4012 power 0.0562 0.5 -> 0.237 Inexact Rounded +pwsx4013 power 0.563 0.5 -> 0.750 Inexact Rounded +pwsx4014 power 0.0563 0.5 -> 0.237 Inexact Rounded +pwsx4015 power 0.564 0.5 -> 0.751 Inexact Rounded +pwsx4016 power 0.0564 0.5 -> 0.237 Inexact Rounded +pwsx4017 power 0.565 0.5 -> 0.752 Inexact Rounded +pwsx4018 power 0.0565 0.5 -> 0.238 Inexact Rounded +pwsx4019 power 0.566 0.5 -> 0.752 Inexact Rounded +pwsx4020 power 0.0566 0.5 -> 0.238 Inexact Rounded +pwsx4021 power 0.567 0.5 -> 0.753 Inexact Rounded +pwsx4022 power 0.0567 0.5 -> 0.238 Inexact Rounded +pwsx4023 power 0.568 0.5 -> 0.754 Inexact Rounded +pwsx4024 power 0.0568 0.5 -> 0.238 Inexact Rounded +pwsx4025 power 0.569 0.5 -> 0.754 Inexact Rounded +pwsx4026 power 0.0569 0.5 -> 0.239 Inexact Rounded +pwsx4027 power 0.571 0.5 -> 0.756 Inexact Rounded +pwsx4028 power 0.0571 0.5 -> 0.239 Inexact Rounded +pwsx4029 power 0.572 0.5 -> 0.756 Inexact Rounded +pwsx4030 power 0.0572 0.5 -> 0.239 Inexact Rounded +pwsx4031 power 0.573 0.5 -> 0.757 Inexact Rounded +pwsx4032 power 0.0573 0.5 -> 0.239 Inexact Rounded +pwsx4033 power 0.574 0.5 -> 0.758 Inexact Rounded +pwsx4034 power 0.0574 0.5 -> 0.240 Inexact Rounded +pwsx4035 power 0.575 0.5 -> 0.758 Inexact Rounded +pwsx4036 power 0.0575 0.5 -> 0.240 Inexact Rounded +pwsx4037 power 0.576 0.5 -> 0.759 Inexact Rounded +pwsx4038 power 0.0576 0.5 -> 0.240 Inexact Rounded +pwsx4039 power 0.577 0.5 -> 0.760 Inexact Rounded +pwsx4040 power 0.0577 0.5 -> 0.240 Inexact Rounded +pwsx4041 power 0.578 0.5 -> 0.760 Inexact Rounded +pwsx4042 power 0.0578 0.5 -> 0.240 Inexact Rounded +pwsx4043 power 0.579 0.5 -> 0.761 Inexact Rounded +pwsx4044 power 0.0579 0.5 -> 0.241 Inexact Rounded +pwsx4045 power 0.581 0.5 -> 0.762 Inexact Rounded +pwsx4046 power 0.0581 0.5 -> 0.241 Inexact Rounded +pwsx4047 power 0.582 0.5 -> 0.763 Inexact Rounded +pwsx4048 power 0.0582 0.5 -> 0.241 Inexact Rounded +pwsx4049 power 0.583 0.5 -> 0.764 Inexact Rounded +pwsx4050 power 0.0583 0.5 -> 0.241 Inexact Rounded +pwsx4051 power 0.584 0.5 -> 0.764 Inexact Rounded +pwsx4052 power 0.0584 0.5 -> 0.242 Inexact Rounded +pwsx4053 power 0.585 0.5 -> 0.765 Inexact Rounded +pwsx4054 power 0.0585 0.5 -> 0.242 Inexact Rounded +pwsx4055 power 0.586 0.5 -> 0.766 Inexact Rounded +pwsx4056 power 0.0586 0.5 -> 0.242 Inexact Rounded +pwsx4057 power 0.587 0.5 -> 0.766 Inexact Rounded +pwsx4058 power 0.0587 0.5 -> 0.242 Inexact Rounded +pwsx4059 power 0.588 0.5 -> 0.767 Inexact Rounded +pwsx4060 power 0.0588 0.5 -> 0.242 Inexact Rounded +pwsx4061 power 0.589 0.5 -> 0.767 Inexact Rounded +pwsx4062 power 0.0589 0.5 -> 0.243 Inexact Rounded +pwsx4063 power 0.591 0.5 -> 0.769 Inexact Rounded +pwsx4064 power 0.0591 0.5 -> 0.243 Inexact Rounded +pwsx4065 power 0.592 0.5 -> 0.769 Inexact Rounded +pwsx4066 power 0.0592 0.5 -> 0.243 Inexact Rounded +pwsx4067 power 0.593 0.5 -> 0.770 Inexact Rounded +pwsx4068 power 0.0593 0.5 -> 0.244 Inexact Rounded +pwsx4069 power 0.594 0.5 -> 0.771 Inexact Rounded +pwsx4070 power 0.0594 0.5 -> 0.244 Inexact Rounded +pwsx4071 power 0.595 0.5 -> 0.771 Inexact Rounded +pwsx4072 power 0.0595 0.5 -> 0.244 Inexact Rounded +pwsx4073 power 0.596 0.5 -> 0.772 Inexact Rounded +pwsx4074 power 0.0596 0.5 -> 0.244 Inexact Rounded +pwsx4075 power 0.597 0.5 -> 0.773 Inexact Rounded +pwsx4076 power 0.0597 0.5 -> 0.244 Inexact Rounded +pwsx4077 power 0.598 0.5 -> 0.773 Inexact Rounded +pwsx4078 power 0.0598 0.5 -> 0.245 Inexact Rounded +pwsx4079 power 0.599 0.5 -> 0.774 Inexact Rounded +pwsx4080 power 0.0599 0.5 -> 0.245 Inexact Rounded +pwsx4081 power 0.601 0.5 -> 0.775 Inexact Rounded +pwsx4082 power 0.0601 0.5 -> 0.245 Inexact Rounded +pwsx4083 power 0.602 0.5 -> 0.776 Inexact Rounded +pwsx4084 power 0.0602 0.5 -> 0.245 Inexact Rounded +pwsx4085 power 0.603 0.5 -> 0.777 Inexact Rounded +pwsx4086 power 0.0603 0.5 -> 0.246 Inexact Rounded +pwsx4087 power 0.604 0.5 -> 0.777 Inexact Rounded +pwsx4088 power 0.0604 0.5 -> 0.246 Inexact Rounded +pwsx4089 power 0.605 0.5 -> 0.778 Inexact Rounded +pwsx4090 power 0.0605 0.5 -> 0.246 Inexact Rounded +pwsx4091 power 0.606 0.5 -> 0.778 Inexact Rounded +pwsx4092 power 0.0606 0.5 -> 0.246 Inexact Rounded +pwsx4093 power 0.607 0.5 -> 0.779 Inexact Rounded +pwsx4094 power 0.0607 0.5 -> 0.246 Inexact Rounded +pwsx4095 power 0.608 0.5 -> 0.780 Inexact Rounded +pwsx4096 power 0.0608 0.5 -> 0.247 Inexact Rounded +pwsx4097 power 0.609 0.5 -> 0.780 Inexact Rounded +pwsx4098 power 0.0609 0.5 -> 0.247 Inexact Rounded +pwsx4099 power 0.611 0.5 -> 0.782 Inexact Rounded +pwsx4100 power 0.0611 0.5 -> 0.247 Inexact Rounded +pwsx4101 power 0.612 0.5 -> 0.782 Inexact Rounded +pwsx4102 power 0.0612 0.5 -> 0.247 Inexact Rounded +pwsx4103 power 0.613 0.5 -> 0.783 Inexact Rounded +pwsx4104 power 0.0613 0.5 -> 0.248 Inexact Rounded +pwsx4105 power 0.614 0.5 -> 0.784 Inexact Rounded +pwsx4106 power 0.0614 0.5 -> 0.248 Inexact Rounded +pwsx4107 power 0.615 0.5 -> 0.784 Inexact Rounded +pwsx4108 power 0.0615 0.5 -> 0.248 Inexact Rounded +pwsx4109 power 0.616 0.5 -> 0.785 Inexact Rounded +pwsx4110 power 0.0616 0.5 -> 0.248 Inexact Rounded +pwsx4111 power 0.617 0.5 -> 0.785 Inexact Rounded +pwsx4112 power 0.0617 0.5 -> 0.248 Inexact Rounded +pwsx4113 power 0.618 0.5 -> 0.786 Inexact Rounded +pwsx4114 power 0.0618 0.5 -> 0.249 Inexact Rounded +pwsx4115 power 0.619 0.5 -> 0.787 Inexact Rounded +pwsx4116 power 0.0619 0.5 -> 0.249 Inexact Rounded +pwsx4117 power 0.621 0.5 -> 0.788 Inexact Rounded +pwsx4118 power 0.0621 0.5 -> 0.249 Inexact Rounded +pwsx4119 power 0.622 0.5 -> 0.789 Inexact Rounded +pwsx4120 power 0.0622 0.5 -> 0.249 Inexact Rounded +pwsx4121 power 0.623 0.5 -> 0.789 Inexact Rounded +pwsx4122 power 0.0623 0.5 -> 0.250 Inexact Rounded +pwsx4123 power 0.624 0.5 -> 0.790 Inexact Rounded +pwsx4124 power 0.0624 0.5 -> 0.250 Inexact Rounded +pwsx4125 power 0.625 0.5 -> 0.791 Inexact Rounded +pwsx4126 power 0.0625 0.5 -> 0.250 Inexact Rounded +pwsx4127 power 0.626 0.5 -> 0.791 Inexact Rounded +pwsx4128 power 0.0626 0.5 -> 0.250 Inexact Rounded +pwsx4129 power 0.627 0.5 -> 0.792 Inexact Rounded +pwsx4130 power 0.0627 0.5 -> 0.250 Inexact Rounded +pwsx4131 power 0.628 0.5 -> 0.792 Inexact Rounded +pwsx4132 power 0.0628 0.5 -> 0.251 Inexact Rounded +pwsx4133 power 0.629 0.5 -> 0.793 Inexact Rounded +pwsx4134 power 0.0629 0.5 -> 0.251 Inexact Rounded +pwsx4135 power 0.631 0.5 -> 0.794 Inexact Rounded +pwsx4136 power 0.0631 0.5 -> 0.251 Inexact Rounded +pwsx4137 power 0.632 0.5 -> 0.795 Inexact Rounded +pwsx4138 power 0.0632 0.5 -> 0.251 Inexact Rounded +pwsx4139 power 0.633 0.5 -> 0.796 Inexact Rounded +pwsx4140 power 0.0633 0.5 -> 0.252 Inexact Rounded +pwsx4141 power 0.634 0.5 -> 0.796 Inexact Rounded +pwsx4142 power 0.0634 0.5 -> 0.252 Inexact Rounded +pwsx4143 power 0.635 0.5 -> 0.797 Inexact Rounded +pwsx4144 power 0.0635 0.5 -> 0.252 Inexact Rounded +pwsx4145 power 0.636 0.5 -> 0.797 Inexact Rounded +pwsx4146 power 0.0636 0.5 -> 0.252 Inexact Rounded +pwsx4147 power 0.637 0.5 -> 0.798 Inexact Rounded +pwsx4148 power 0.0637 0.5 -> 0.252 Inexact Rounded +pwsx4149 power 0.638 0.5 -> 0.799 Inexact Rounded +pwsx4150 power 0.0638 0.5 -> 0.253 Inexact Rounded +pwsx4151 power 0.639 0.5 -> 0.799 Inexact Rounded +pwsx4152 power 0.0639 0.5 -> 0.253 Inexact Rounded +pwsx4153 power 0.641 0.5 -> 0.801 Inexact Rounded +pwsx4154 power 0.0641 0.5 -> 0.253 Inexact Rounded +pwsx4155 power 0.642 0.5 -> 0.801 Inexact Rounded +pwsx4156 power 0.0642 0.5 -> 0.253 Inexact Rounded +pwsx4157 power 0.643 0.5 -> 0.802 Inexact Rounded +pwsx4158 power 0.0643 0.5 -> 0.254 Inexact Rounded +pwsx4159 power 0.644 0.5 -> 0.802 Inexact Rounded +pwsx4160 power 0.0644 0.5 -> 0.254 Inexact Rounded +pwsx4161 power 0.645 0.5 -> 0.803 Inexact Rounded +pwsx4162 power 0.0645 0.5 -> 0.254 Inexact Rounded +pwsx4163 power 0.646 0.5 -> 0.804 Inexact Rounded +pwsx4164 power 0.0646 0.5 -> 0.254 Inexact Rounded +pwsx4165 power 0.647 0.5 -> 0.804 Inexact Rounded +pwsx4166 power 0.0647 0.5 -> 0.254 Inexact Rounded +pwsx4167 power 0.648 0.5 -> 0.805 Inexact Rounded +pwsx4168 power 0.0648 0.5 -> 0.255 Inexact Rounded +pwsx4169 power 0.649 0.5 -> 0.806 Inexact Rounded +pwsx4170 power 0.0649 0.5 -> 0.255 Inexact Rounded +pwsx4171 power 0.651 0.5 -> 0.807 Inexact Rounded +pwsx4172 power 0.0651 0.5 -> 0.255 Inexact Rounded +pwsx4173 power 0.652 0.5 -> 0.807 Inexact Rounded +pwsx4174 power 0.0652 0.5 -> 0.255 Inexact Rounded +pwsx4175 power 0.653 0.5 -> 0.808 Inexact Rounded +pwsx4176 power 0.0653 0.5 -> 0.256 Inexact Rounded +pwsx4177 power 0.654 0.5 -> 0.809 Inexact Rounded +pwsx4178 power 0.0654 0.5 -> 0.256 Inexact Rounded +pwsx4179 power 0.655 0.5 -> 0.809 Inexact Rounded +pwsx4180 power 0.0655 0.5 -> 0.256 Inexact Rounded +pwsx4181 power 0.656 0.5 -> 0.810 Inexact Rounded +pwsx4182 power 0.0656 0.5 -> 0.256 Inexact Rounded +pwsx4183 power 0.657 0.5 -> 0.811 Inexact Rounded +pwsx4184 power 0.0657 0.5 -> 0.256 Inexact Rounded +pwsx4185 power 0.658 0.5 -> 0.811 Inexact Rounded +pwsx4186 power 0.0658 0.5 -> 0.257 Inexact Rounded +pwsx4187 power 0.659 0.5 -> 0.812 Inexact Rounded +pwsx4188 power 0.0659 0.5 -> 0.257 Inexact Rounded +pwsx4189 power 0.661 0.5 -> 0.813 Inexact Rounded +pwsx4190 power 0.0661 0.5 -> 0.257 Inexact Rounded +pwsx4191 power 0.662 0.5 -> 0.814 Inexact Rounded +pwsx4192 power 0.0662 0.5 -> 0.257 Inexact Rounded +pwsx4193 power 0.663 0.5 -> 0.814 Inexact Rounded +pwsx4194 power 0.0663 0.5 -> 0.257 Inexact Rounded +pwsx4195 power 0.664 0.5 -> 0.815 Inexact Rounded +pwsx4196 power 0.0664 0.5 -> 0.258 Inexact Rounded +pwsx4197 power 0.665 0.5 -> 0.815 Inexact Rounded +pwsx4198 power 0.0665 0.5 -> 0.258 Inexact Rounded +pwsx4199 power 0.666 0.5 -> 0.816 Inexact Rounded +pwsx4200 power 0.0666 0.5 -> 0.258 Inexact Rounded +pwsx4201 power 0.667 0.5 -> 0.817 Inexact Rounded +pwsx4202 power 0.0667 0.5 -> 0.258 Inexact Rounded +pwsx4203 power 0.668 0.5 -> 0.817 Inexact Rounded +pwsx4204 power 0.0668 0.5 -> 0.258 Inexact Rounded +pwsx4205 power 0.669 0.5 -> 0.818 Inexact Rounded +pwsx4206 power 0.0669 0.5 -> 0.259 Inexact Rounded +pwsx4207 power 0.671 0.5 -> 0.819 Inexact Rounded +pwsx4208 power 0.0671 0.5 -> 0.259 Inexact Rounded +pwsx4209 power 0.672 0.5 -> 0.820 Inexact Rounded +pwsx4210 power 0.0672 0.5 -> 0.259 Inexact Rounded +pwsx4211 power 0.673 0.5 -> 0.820 Inexact Rounded +pwsx4212 power 0.0673 0.5 -> 0.259 Inexact Rounded +pwsx4213 power 0.674 0.5 -> 0.821 Inexact Rounded +pwsx4214 power 0.0674 0.5 -> 0.260 Inexact Rounded +pwsx4215 power 0.675 0.5 -> 0.822 Inexact Rounded +pwsx4216 power 0.0675 0.5 -> 0.260 Inexact Rounded +pwsx4217 power 0.676 0.5 -> 0.822 Inexact Rounded +pwsx4218 power 0.0676 0.5 -> 0.260 Inexact Rounded +pwsx4219 power 0.677 0.5 -> 0.823 Inexact Rounded +pwsx4220 power 0.0677 0.5 -> 0.260 Inexact Rounded +pwsx4221 power 0.678 0.5 -> 0.823 Inexact Rounded +pwsx4222 power 0.0678 0.5 -> 0.260 Inexact Rounded +pwsx4223 power 0.679 0.5 -> 0.824 Inexact Rounded +pwsx4224 power 0.0679 0.5 -> 0.261 Inexact Rounded +pwsx4225 power 0.681 0.5 -> 0.825 Inexact Rounded +pwsx4226 power 0.0681 0.5 -> 0.261 Inexact Rounded +pwsx4227 power 0.682 0.5 -> 0.826 Inexact Rounded +pwsx4228 power 0.0682 0.5 -> 0.261 Inexact Rounded +pwsx4229 power 0.683 0.5 -> 0.826 Inexact Rounded +pwsx4230 power 0.0683 0.5 -> 0.261 Inexact Rounded +pwsx4231 power 0.684 0.5 -> 0.827 Inexact Rounded +pwsx4232 power 0.0684 0.5 -> 0.262 Inexact Rounded +pwsx4233 power 0.685 0.5 -> 0.828 Inexact Rounded +pwsx4234 power 0.0685 0.5 -> 0.262 Inexact Rounded +pwsx4235 power 0.686 0.5 -> 0.828 Inexact Rounded +pwsx4236 power 0.0686 0.5 -> 0.262 Inexact Rounded +pwsx4237 power 0.687 0.5 -> 0.829 Inexact Rounded +pwsx4238 power 0.0687 0.5 -> 0.262 Inexact Rounded +pwsx4239 power 0.688 0.5 -> 0.829 Inexact Rounded +pwsx4240 power 0.0688 0.5 -> 0.262 Inexact Rounded +pwsx4241 power 0.689 0.5 -> 0.830 Inexact Rounded +pwsx4242 power 0.0689 0.5 -> 0.262 Inexact Rounded +pwsx4243 power 0.691 0.5 -> 0.831 Inexact Rounded +pwsx4244 power 0.0691 0.5 -> 0.263 Inexact Rounded +pwsx4245 power 0.692 0.5 -> 0.832 Inexact Rounded +pwsx4246 power 0.0692 0.5 -> 0.263 Inexact Rounded +pwsx4247 power 0.693 0.5 -> 0.832 Inexact Rounded +pwsx4248 power 0.0693 0.5 -> 0.263 Inexact Rounded +pwsx4249 power 0.694 0.5 -> 0.833 Inexact Rounded +pwsx4250 power 0.0694 0.5 -> 0.263 Inexact Rounded +pwsx4251 power 0.695 0.5 -> 0.834 Inexact Rounded +pwsx4252 power 0.0695 0.5 -> 0.264 Inexact Rounded +pwsx4253 power 0.696 0.5 -> 0.834 Inexact Rounded +pwsx4254 power 0.0696 0.5 -> 0.264 Inexact Rounded +pwsx4255 power 0.697 0.5 -> 0.835 Inexact Rounded +pwsx4256 power 0.0697 0.5 -> 0.264 Inexact Rounded +pwsx4257 power 0.698 0.5 -> 0.835 Inexact Rounded +pwsx4258 power 0.0698 0.5 -> 0.264 Inexact Rounded +pwsx4259 power 0.699 0.5 -> 0.836 Inexact Rounded +pwsx4260 power 0.0699 0.5 -> 0.264 Inexact Rounded +pwsx4261 power 0.701 0.5 -> 0.837 Inexact Rounded +pwsx4262 power 0.0701 0.5 -> 0.265 Inexact Rounded +pwsx4263 power 0.702 0.5 -> 0.838 Inexact Rounded +pwsx4264 power 0.0702 0.5 -> 0.265 Inexact Rounded +pwsx4265 power 0.703 0.5 -> 0.838 Inexact Rounded +pwsx4266 power 0.0703 0.5 -> 0.265 Inexact Rounded +pwsx4267 power 0.704 0.5 -> 0.839 Inexact Rounded +pwsx4268 power 0.0704 0.5 -> 0.265 Inexact Rounded +pwsx4269 power 0.705 0.5 -> 0.840 Inexact Rounded +pwsx4270 power 0.0705 0.5 -> 0.266 Inexact Rounded +pwsx4271 power 0.706 0.5 -> 0.840 Inexact Rounded +pwsx4272 power 0.0706 0.5 -> 0.266 Inexact Rounded +pwsx4273 power 0.707 0.5 -> 0.841 Inexact Rounded +pwsx4274 power 0.0707 0.5 -> 0.266 Inexact Rounded +pwsx4275 power 0.708 0.5 -> 0.841 Inexact Rounded +pwsx4276 power 0.0708 0.5 -> 0.266 Inexact Rounded +pwsx4277 power 0.709 0.5 -> 0.842 Inexact Rounded +pwsx4278 power 0.0709 0.5 -> 0.266 Inexact Rounded +pwsx4279 power 0.711 0.5 -> 0.843 Inexact Rounded +pwsx4280 power 0.0711 0.5 -> 0.267 Inexact Rounded +pwsx4281 power 0.712 0.5 -> 0.844 Inexact Rounded +pwsx4282 power 0.0712 0.5 -> 0.267 Inexact Rounded +pwsx4283 power 0.713 0.5 -> 0.844 Inexact Rounded +pwsx4284 power 0.0713 0.5 -> 0.267 Inexact Rounded +pwsx4285 power 0.714 0.5 -> 0.845 Inexact Rounded +pwsx4286 power 0.0714 0.5 -> 0.267 Inexact Rounded +pwsx4287 power 0.715 0.5 -> 0.846 Inexact Rounded +pwsx4288 power 0.0715 0.5 -> 0.267 Inexact Rounded +pwsx4289 power 0.716 0.5 -> 0.846 Inexact Rounded +pwsx4290 power 0.0716 0.5 -> 0.268 Inexact Rounded +pwsx4291 power 0.717 0.5 -> 0.847 Inexact Rounded +pwsx4292 power 0.0717 0.5 -> 0.268 Inexact Rounded +pwsx4293 power 0.718 0.5 -> 0.847 Inexact Rounded +pwsx4294 power 0.0718 0.5 -> 0.268 Inexact Rounded +pwsx4295 power 0.719 0.5 -> 0.848 Inexact Rounded +pwsx4296 power 0.0719 0.5 -> 0.268 Inexact Rounded +pwsx4297 power 0.721 0.5 -> 0.849 Inexact Rounded +pwsx4298 power 0.0721 0.5 -> 0.269 Inexact Rounded +pwsx4299 power 0.722 0.5 -> 0.850 Inexact Rounded +pwsx4300 power 0.0722 0.5 -> 0.269 Inexact Rounded +pwsx4301 power 0.723 0.5 -> 0.850 Inexact Rounded +pwsx4302 power 0.0723 0.5 -> 0.269 Inexact Rounded +pwsx4303 power 0.724 0.5 -> 0.851 Inexact Rounded +pwsx4304 power 0.0724 0.5 -> 0.269 Inexact Rounded +pwsx4305 power 0.725 0.5 -> 0.851 Inexact Rounded +pwsx4306 power 0.0725 0.5 -> 0.269 Inexact Rounded +pwsx4307 power 0.726 0.5 -> 0.852 Inexact Rounded +pwsx4308 power 0.0726 0.5 -> 0.269 Inexact Rounded +pwsx4309 power 0.727 0.5 -> 0.853 Inexact Rounded +pwsx4310 power 0.0727 0.5 -> 0.270 Inexact Rounded +pwsx4311 power 0.728 0.5 -> 0.853 Inexact Rounded +pwsx4312 power 0.0728 0.5 -> 0.270 Inexact Rounded +pwsx4313 power 0.729 0.5 -> 0.854 Inexact Rounded +pwsx4314 power 0.0729 0.5 -> 0.270 Inexact Rounded +pwsx4315 power 0.731 0.5 -> 0.855 Inexact Rounded +pwsx4316 power 0.0731 0.5 -> 0.270 Inexact Rounded +pwsx4317 power 0.732 0.5 -> 0.856 Inexact Rounded +pwsx4318 power 0.0732 0.5 -> 0.271 Inexact Rounded +pwsx4319 power 0.733 0.5 -> 0.856 Inexact Rounded +pwsx4320 power 0.0733 0.5 -> 0.271 Inexact Rounded +pwsx4321 power 0.734 0.5 -> 0.857 Inexact Rounded +pwsx4322 power 0.0734 0.5 -> 0.271 Inexact Rounded +pwsx4323 power 0.735 0.5 -> 0.857 Inexact Rounded +pwsx4324 power 0.0735 0.5 -> 0.271 Inexact Rounded +pwsx4325 power 0.736 0.5 -> 0.858 Inexact Rounded +pwsx4326 power 0.0736 0.5 -> 0.271 Inexact Rounded +pwsx4327 power 0.737 0.5 -> 0.858 Inexact Rounded +pwsx4328 power 0.0737 0.5 -> 0.271 Inexact Rounded +pwsx4329 power 0.738 0.5 -> 0.859 Inexact Rounded +pwsx4330 power 0.0738 0.5 -> 0.272 Inexact Rounded +pwsx4331 power 0.739 0.5 -> 0.860 Inexact Rounded +pwsx4332 power 0.0739 0.5 -> 0.272 Inexact Rounded +pwsx4333 power 0.741 0.5 -> 0.861 Inexact Rounded +pwsx4334 power 0.0741 0.5 -> 0.272 Inexact Rounded +pwsx4335 power 0.742 0.5 -> 0.861 Inexact Rounded +pwsx4336 power 0.0742 0.5 -> 0.272 Inexact Rounded +pwsx4337 power 0.743 0.5 -> 0.862 Inexact Rounded +pwsx4338 power 0.0743 0.5 -> 0.273 Inexact Rounded +pwsx4339 power 0.744 0.5 -> 0.863 Inexact Rounded +pwsx4340 power 0.0744 0.5 -> 0.273 Inexact Rounded +pwsx4341 power 0.745 0.5 -> 0.863 Inexact Rounded +pwsx4342 power 0.0745 0.5 -> 0.273 Inexact Rounded +pwsx4343 power 0.746 0.5 -> 0.864 Inexact Rounded +pwsx4344 power 0.0746 0.5 -> 0.273 Inexact Rounded +pwsx4345 power 0.747 0.5 -> 0.864 Inexact Rounded +pwsx4346 power 0.0747 0.5 -> 0.273 Inexact Rounded +pwsx4347 power 0.748 0.5 -> 0.865 Inexact Rounded +pwsx4348 power 0.0748 0.5 -> 0.273 Inexact Rounded +pwsx4349 power 0.749 0.5 -> 0.865 Inexact Rounded +pwsx4350 power 0.0749 0.5 -> 0.274 Inexact Rounded +pwsx4351 power 0.751 0.5 -> 0.867 Inexact Rounded +pwsx4352 power 0.0751 0.5 -> 0.274 Inexact Rounded +pwsx4353 power 0.752 0.5 -> 0.867 Inexact Rounded +pwsx4354 power 0.0752 0.5 -> 0.274 Inexact Rounded +pwsx4355 power 0.753 0.5 -> 0.868 Inexact Rounded +pwsx4356 power 0.0753 0.5 -> 0.274 Inexact Rounded +pwsx4357 power 0.754 0.5 -> 0.868 Inexact Rounded +pwsx4358 power 0.0754 0.5 -> 0.275 Inexact Rounded +pwsx4359 power 0.755 0.5 -> 0.869 Inexact Rounded +pwsx4360 power 0.0755 0.5 -> 0.275 Inexact Rounded +pwsx4361 power 0.756 0.5 -> 0.869 Inexact Rounded +pwsx4362 power 0.0756 0.5 -> 0.275 Inexact Rounded +pwsx4363 power 0.757 0.5 -> 0.870 Inexact Rounded +pwsx4364 power 0.0757 0.5 -> 0.275 Inexact Rounded +pwsx4365 power 0.758 0.5 -> 0.871 Inexact Rounded +pwsx4366 power 0.0758 0.5 -> 0.275 Inexact Rounded +pwsx4367 power 0.759 0.5 -> 0.871 Inexact Rounded +pwsx4368 power 0.0759 0.5 -> 0.275 Inexact Rounded +pwsx4369 power 0.761 0.5 -> 0.872 Inexact Rounded +pwsx4370 power 0.0761 0.5 -> 0.276 Inexact Rounded +pwsx4371 power 0.762 0.5 -> 0.873 Inexact Rounded +pwsx4372 power 0.0762 0.5 -> 0.276 Inexact Rounded +pwsx4373 power 0.763 0.5 -> 0.873 Inexact Rounded +pwsx4374 power 0.0763 0.5 -> 0.276 Inexact Rounded +pwsx4375 power 0.764 0.5 -> 0.874 Inexact Rounded +pwsx4376 power 0.0764 0.5 -> 0.276 Inexact Rounded +pwsx4377 power 0.765 0.5 -> 0.875 Inexact Rounded +pwsx4378 power 0.0765 0.5 -> 0.277 Inexact Rounded +pwsx4379 power 0.766 0.5 -> 0.875 Inexact Rounded +pwsx4380 power 0.0766 0.5 -> 0.277 Inexact Rounded +pwsx4381 power 0.767 0.5 -> 0.876 Inexact Rounded +pwsx4382 power 0.0767 0.5 -> 0.277 Inexact Rounded +pwsx4383 power 0.768 0.5 -> 0.876 Inexact Rounded +pwsx4384 power 0.0768 0.5 -> 0.277 Inexact Rounded +pwsx4385 power 0.769 0.5 -> 0.877 Inexact Rounded +pwsx4386 power 0.0769 0.5 -> 0.277 Inexact Rounded +pwsx4387 power 0.771 0.5 -> 0.878 Inexact Rounded +pwsx4388 power 0.0771 0.5 -> 0.278 Inexact Rounded +pwsx4389 power 0.772 0.5 -> 0.879 Inexact Rounded +pwsx4390 power 0.0772 0.5 -> 0.278 Inexact Rounded +pwsx4391 power 0.773 0.5 -> 0.879 Inexact Rounded +pwsx4392 power 0.0773 0.5 -> 0.278 Inexact Rounded +pwsx4393 power 0.774 0.5 -> 0.880 Inexact Rounded +pwsx4394 power 0.0774 0.5 -> 0.278 Inexact Rounded +pwsx4395 power 0.775 0.5 -> 0.880 Inexact Rounded +pwsx4396 power 0.0775 0.5 -> 0.278 Inexact Rounded +pwsx4397 power 0.776 0.5 -> 0.881 Inexact Rounded +pwsx4398 power 0.0776 0.5 -> 0.279 Inexact Rounded +pwsx4399 power 0.777 0.5 -> 0.881 Inexact Rounded +pwsx4400 power 0.0777 0.5 -> 0.279 Inexact Rounded +pwsx4401 power 0.778 0.5 -> 0.882 Inexact Rounded +pwsx4402 power 0.0778 0.5 -> 0.279 Inexact Rounded +pwsx4403 power 0.779 0.5 -> 0.883 Inexact Rounded +pwsx4404 power 0.0779 0.5 -> 0.279 Inexact Rounded +pwsx4405 power 0.781 0.5 -> 0.884 Inexact Rounded +pwsx4406 power 0.0781 0.5 -> 0.279 Inexact Rounded +pwsx4407 power 0.782 0.5 -> 0.884 Inexact Rounded +pwsx4408 power 0.0782 0.5 -> 0.280 Inexact Rounded +pwsx4409 power 0.783 0.5 -> 0.885 Inexact Rounded +pwsx4410 power 0.0783 0.5 -> 0.280 Inexact Rounded +pwsx4411 power 0.784 0.5 -> 0.885 Inexact Rounded +pwsx4412 power 0.0784 0.5 -> 0.280 Inexact Rounded +pwsx4413 power 0.785 0.5 -> 0.886 Inexact Rounded +pwsx4414 power 0.0785 0.5 -> 0.280 Inexact Rounded +pwsx4415 power 0.786 0.5 -> 0.887 Inexact Rounded +pwsx4416 power 0.0786 0.5 -> 0.280 Inexact Rounded +pwsx4417 power 0.787 0.5 -> 0.887 Inexact Rounded +pwsx4418 power 0.0787 0.5 -> 0.281 Inexact Rounded +pwsx4419 power 0.788 0.5 -> 0.888 Inexact Rounded +pwsx4420 power 0.0788 0.5 -> 0.281 Inexact Rounded +pwsx4421 power 0.789 0.5 -> 0.888 Inexact Rounded +pwsx4422 power 0.0789 0.5 -> 0.281 Inexact Rounded +pwsx4423 power 0.791 0.5 -> 0.889 Inexact Rounded +pwsx4424 power 0.0791 0.5 -> 0.281 Inexact Rounded +pwsx4425 power 0.792 0.5 -> 0.890 Inexact Rounded +pwsx4426 power 0.0792 0.5 -> 0.281 Inexact Rounded +pwsx4427 power 0.793 0.5 -> 0.891 Inexact Rounded +pwsx4428 power 0.0793 0.5 -> 0.282 Inexact Rounded +pwsx4429 power 0.794 0.5 -> 0.891 Inexact Rounded +pwsx4430 power 0.0794 0.5 -> 0.282 Inexact Rounded +pwsx4431 power 0.795 0.5 -> 0.892 Inexact Rounded +pwsx4432 power 0.0795 0.5 -> 0.282 Inexact Rounded +pwsx4433 power 0.796 0.5 -> 0.892 Inexact Rounded +pwsx4434 power 0.0796 0.5 -> 0.282 Inexact Rounded +pwsx4435 power 0.797 0.5 -> 0.893 Inexact Rounded +pwsx4436 power 0.0797 0.5 -> 0.282 Inexact Rounded +pwsx4437 power 0.798 0.5 -> 0.893 Inexact Rounded +pwsx4438 power 0.0798 0.5 -> 0.282 Inexact Rounded +pwsx4439 power 0.799 0.5 -> 0.894 Inexact Rounded +pwsx4440 power 0.0799 0.5 -> 0.283 Inexact Rounded +pwsx4441 power 0.801 0.5 -> 0.895 Inexact Rounded +pwsx4442 power 0.0801 0.5 -> 0.283 Inexact Rounded +pwsx4443 power 0.802 0.5 -> 0.896 Inexact Rounded +pwsx4444 power 0.0802 0.5 -> 0.283 Inexact Rounded +pwsx4445 power 0.803 0.5 -> 0.896 Inexact Rounded +pwsx4446 power 0.0803 0.5 -> 0.283 Inexact Rounded +pwsx4447 power 0.804 0.5 -> 0.897 Inexact Rounded +pwsx4448 power 0.0804 0.5 -> 0.284 Inexact Rounded +pwsx4449 power 0.805 0.5 -> 0.897 Inexact Rounded +pwsx4450 power 0.0805 0.5 -> 0.284 Inexact Rounded +pwsx4451 power 0.806 0.5 -> 0.898 Inexact Rounded +pwsx4452 power 0.0806 0.5 -> 0.284 Inexact Rounded +pwsx4453 power 0.807 0.5 -> 0.898 Inexact Rounded +pwsx4454 power 0.0807 0.5 -> 0.284 Inexact Rounded +pwsx4455 power 0.808 0.5 -> 0.899 Inexact Rounded +pwsx4456 power 0.0808 0.5 -> 0.284 Inexact Rounded +pwsx4457 power 0.809 0.5 -> 0.899 Inexact Rounded +pwsx4458 power 0.0809 0.5 -> 0.284 Inexact Rounded +pwsx4459 power 0.811 0.5 -> 0.901 Inexact Rounded +pwsx4460 power 0.0811 0.5 -> 0.285 Inexact Rounded +pwsx4461 power 0.812 0.5 -> 0.901 Inexact Rounded +pwsx4462 power 0.0812 0.5 -> 0.285 Inexact Rounded +pwsx4463 power 0.813 0.5 -> 0.902 Inexact Rounded +pwsx4464 power 0.0813 0.5 -> 0.285 Inexact Rounded +pwsx4465 power 0.814 0.5 -> 0.902 Inexact Rounded +pwsx4466 power 0.0814 0.5 -> 0.285 Inexact Rounded +pwsx4467 power 0.815 0.5 -> 0.903 Inexact Rounded +pwsx4468 power 0.0815 0.5 -> 0.285 Inexact Rounded +pwsx4469 power 0.816 0.5 -> 0.903 Inexact Rounded +pwsx4470 power 0.0816 0.5 -> 0.286 Inexact Rounded +pwsx4471 power 0.817 0.5 -> 0.904 Inexact Rounded +pwsx4472 power 0.0817 0.5 -> 0.286 Inexact Rounded +pwsx4473 power 0.818 0.5 -> 0.904 Inexact Rounded +pwsx4474 power 0.0818 0.5 -> 0.286 Inexact Rounded +pwsx4475 power 0.819 0.5 -> 0.905 Inexact Rounded +pwsx4476 power 0.0819 0.5 -> 0.286 Inexact Rounded +pwsx4477 power 0.821 0.5 -> 0.906 Inexact Rounded +pwsx4478 power 0.0821 0.5 -> 0.287 Inexact Rounded +pwsx4479 power 0.822 0.5 -> 0.907 Inexact Rounded +pwsx4480 power 0.0822 0.5 -> 0.287 Inexact Rounded +pwsx4481 power 0.823 0.5 -> 0.907 Inexact Rounded +pwsx4482 power 0.0823 0.5 -> 0.287 Inexact Rounded +pwsx4483 power 0.824 0.5 -> 0.908 Inexact Rounded +pwsx4484 power 0.0824 0.5 -> 0.287 Inexact Rounded +pwsx4485 power 0.825 0.5 -> 0.908 Inexact Rounded +pwsx4486 power 0.0825 0.5 -> 0.287 Inexact Rounded +pwsx4487 power 0.826 0.5 -> 0.909 Inexact Rounded +pwsx4488 power 0.0826 0.5 -> 0.287 Inexact Rounded +pwsx4489 power 0.827 0.5 -> 0.909 Inexact Rounded +pwsx4490 power 0.0827 0.5 -> 0.288 Inexact Rounded +pwsx4491 power 0.828 0.5 -> 0.910 Inexact Rounded +pwsx4492 power 0.0828 0.5 -> 0.288 Inexact Rounded +pwsx4493 power 0.829 0.5 -> 0.910 Inexact Rounded +pwsx4494 power 0.0829 0.5 -> 0.288 Inexact Rounded +pwsx4495 power 0.831 0.5 -> 0.912 Inexact Rounded +pwsx4496 power 0.0831 0.5 -> 0.288 Inexact Rounded +pwsx4497 power 0.832 0.5 -> 0.912 Inexact Rounded +pwsx4498 power 0.0832 0.5 -> 0.288 Inexact Rounded +pwsx4499 power 0.833 0.5 -> 0.913 Inexact Rounded +pwsx4500 power 0.0833 0.5 -> 0.289 Inexact Rounded +pwsx4501 power 0.834 0.5 -> 0.913 Inexact Rounded +pwsx4502 power 0.0834 0.5 -> 0.289 Inexact Rounded +pwsx4503 power 0.835 0.5 -> 0.914 Inexact Rounded +pwsx4504 power 0.0835 0.5 -> 0.289 Inexact Rounded +pwsx4505 power 0.836 0.5 -> 0.914 Inexact Rounded +pwsx4506 power 0.0836 0.5 -> 0.289 Inexact Rounded +pwsx4507 power 0.837 0.5 -> 0.915 Inexact Rounded +pwsx4508 power 0.0837 0.5 -> 0.289 Inexact Rounded +pwsx4509 power 0.838 0.5 -> 0.915 Inexact Rounded +pwsx4510 power 0.0838 0.5 -> 0.289 Inexact Rounded +pwsx4511 power 0.839 0.5 -> 0.916 Inexact Rounded +pwsx4512 power 0.0839 0.5 -> 0.290 Inexact Rounded +pwsx4513 power 0.841 0.5 -> 0.917 Inexact Rounded +pwsx4514 power 0.0841 0.5 -> 0.290 Inexact Rounded +pwsx4515 power 0.842 0.5 -> 0.918 Inexact Rounded +pwsx4516 power 0.0842 0.5 -> 0.290 Inexact Rounded +pwsx4517 power 0.843 0.5 -> 0.918 Inexact Rounded +pwsx4518 power 0.0843 0.5 -> 0.290 Inexact Rounded +pwsx4519 power 0.844 0.5 -> 0.919 Inexact Rounded +pwsx4520 power 0.0844 0.5 -> 0.291 Inexact Rounded +pwsx4521 power 0.845 0.5 -> 0.919 Inexact Rounded +pwsx4522 power 0.0845 0.5 -> 0.291 Inexact Rounded +pwsx4523 power 0.846 0.5 -> 0.920 Inexact Rounded +pwsx4524 power 0.0846 0.5 -> 0.291 Inexact Rounded +pwsx4525 power 0.847 0.5 -> 0.920 Inexact Rounded +pwsx4526 power 0.0847 0.5 -> 0.291 Inexact Rounded +pwsx4527 power 0.848 0.5 -> 0.921 Inexact Rounded +pwsx4528 power 0.0848 0.5 -> 0.291 Inexact Rounded +pwsx4529 power 0.849 0.5 -> 0.921 Inexact Rounded +pwsx4530 power 0.0849 0.5 -> 0.291 Inexact Rounded +pwsx4531 power 0.851 0.5 -> 0.922 Inexact Rounded +pwsx4532 power 0.0851 0.5 -> 0.292 Inexact Rounded +pwsx4533 power 0.852 0.5 -> 0.923 Inexact Rounded +pwsx4534 power 0.0852 0.5 -> 0.292 Inexact Rounded +pwsx4535 power 0.853 0.5 -> 0.924 Inexact Rounded +pwsx4536 power 0.0853 0.5 -> 0.292 Inexact Rounded +pwsx4537 power 0.854 0.5 -> 0.924 Inexact Rounded +pwsx4538 power 0.0854 0.5 -> 0.292 Inexact Rounded +pwsx4539 power 0.855 0.5 -> 0.925 Inexact Rounded +pwsx4540 power 0.0855 0.5 -> 0.292 Inexact Rounded +pwsx4541 power 0.856 0.5 -> 0.925 Inexact Rounded +pwsx4542 power 0.0856 0.5 -> 0.293 Inexact Rounded +pwsx4543 power 0.857 0.5 -> 0.926 Inexact Rounded +pwsx4544 power 0.0857 0.5 -> 0.293 Inexact Rounded +pwsx4545 power 0.858 0.5 -> 0.926 Inexact Rounded +pwsx4546 power 0.0858 0.5 -> 0.293 Inexact Rounded +pwsx4547 power 0.859 0.5 -> 0.927 Inexact Rounded +pwsx4548 power 0.0859 0.5 -> 0.293 Inexact Rounded +pwsx4549 power 0.861 0.5 -> 0.928 Inexact Rounded +pwsx4550 power 0.0861 0.5 -> 0.293 Inexact Rounded +pwsx4551 power 0.862 0.5 -> 0.928 Inexact Rounded +pwsx4552 power 0.0862 0.5 -> 0.294 Inexact Rounded +pwsx4553 power 0.863 0.5 -> 0.929 Inexact Rounded +pwsx4554 power 0.0863 0.5 -> 0.294 Inexact Rounded +pwsx4555 power 0.864 0.5 -> 0.930 Inexact Rounded +pwsx4556 power 0.0864 0.5 -> 0.294 Inexact Rounded +pwsx4557 power 0.865 0.5 -> 0.930 Inexact Rounded +pwsx4558 power 0.0865 0.5 -> 0.294 Inexact Rounded +pwsx4559 power 0.866 0.5 -> 0.931 Inexact Rounded +pwsx4560 power 0.0866 0.5 -> 0.294 Inexact Rounded +pwsx4561 power 0.867 0.5 -> 0.931 Inexact Rounded +pwsx4562 power 0.0867 0.5 -> 0.294 Inexact Rounded +pwsx4563 power 0.868 0.5 -> 0.932 Inexact Rounded +pwsx4564 power 0.0868 0.5 -> 0.295 Inexact Rounded +pwsx4565 power 0.869 0.5 -> 0.932 Inexact Rounded +pwsx4566 power 0.0869 0.5 -> 0.295 Inexact Rounded +pwsx4567 power 0.871 0.5 -> 0.933 Inexact Rounded +pwsx4568 power 0.0871 0.5 -> 0.295 Inexact Rounded +pwsx4569 power 0.872 0.5 -> 0.934 Inexact Rounded +pwsx4570 power 0.0872 0.5 -> 0.295 Inexact Rounded +pwsx4571 power 0.873 0.5 -> 0.934 Inexact Rounded +pwsx4572 power 0.0873 0.5 -> 0.295 Inexact Rounded +pwsx4573 power 0.874 0.5 -> 0.935 Inexact Rounded +pwsx4574 power 0.0874 0.5 -> 0.296 Inexact Rounded +pwsx4575 power 0.875 0.5 -> 0.935 Inexact Rounded +pwsx4576 power 0.0875 0.5 -> 0.296 Inexact Rounded +pwsx4577 power 0.876 0.5 -> 0.936 Inexact Rounded +pwsx4578 power 0.0876 0.5 -> 0.296 Inexact Rounded +pwsx4579 power 0.877 0.5 -> 0.936 Inexact Rounded +pwsx4580 power 0.0877 0.5 -> 0.296 Inexact Rounded +pwsx4581 power 0.878 0.5 -> 0.937 Inexact Rounded +pwsx4582 power 0.0878 0.5 -> 0.296 Inexact Rounded +pwsx4583 power 0.879 0.5 -> 0.938 Inexact Rounded +pwsx4584 power 0.0879 0.5 -> 0.296 Inexact Rounded +pwsx4585 power 0.881 0.5 -> 0.939 Inexact Rounded +pwsx4586 power 0.0881 0.5 -> 0.297 Inexact Rounded +pwsx4587 power 0.882 0.5 -> 0.939 Inexact Rounded +pwsx4588 power 0.0882 0.5 -> 0.297 Inexact Rounded +pwsx4589 power 0.883 0.5 -> 0.940 Inexact Rounded +pwsx4590 power 0.0883 0.5 -> 0.297 Inexact Rounded +pwsx4591 power 0.884 0.5 -> 0.940 Inexact Rounded +pwsx4592 power 0.0884 0.5 -> 0.297 Inexact Rounded +pwsx4593 power 0.885 0.5 -> 0.941 Inexact Rounded +pwsx4594 power 0.0885 0.5 -> 0.297 Inexact Rounded +pwsx4595 power 0.886 0.5 -> 0.941 Inexact Rounded +pwsx4596 power 0.0886 0.5 -> 0.298 Inexact Rounded +pwsx4597 power 0.887 0.5 -> 0.942 Inexact Rounded +pwsx4598 power 0.0887 0.5 -> 0.298 Inexact Rounded +pwsx4599 power 0.888 0.5 -> 0.942 Inexact Rounded +pwsx4600 power 0.0888 0.5 -> 0.298 Inexact Rounded +pwsx4601 power 0.889 0.5 -> 0.943 Inexact Rounded +pwsx4602 power 0.0889 0.5 -> 0.298 Inexact Rounded +pwsx4603 power 0.891 0.5 -> 0.944 Inexact Rounded +pwsx4604 power 0.0891 0.5 -> 0.298 Inexact Rounded +pwsx4605 power 0.892 0.5 -> 0.944 Inexact Rounded +pwsx4606 power 0.0892 0.5 -> 0.299 Inexact Rounded +pwsx4607 power 0.893 0.5 -> 0.945 Inexact Rounded +pwsx4608 power 0.0893 0.5 -> 0.299 Inexact Rounded +pwsx4609 power 0.894 0.5 -> 0.946 Inexact Rounded +pwsx4610 power 0.0894 0.5 -> 0.299 Inexact Rounded +pwsx4611 power 0.895 0.5 -> 0.946 Inexact Rounded +pwsx4612 power 0.0895 0.5 -> 0.299 Inexact Rounded +pwsx4613 power 0.896 0.5 -> 0.947 Inexact Rounded +pwsx4614 power 0.0896 0.5 -> 0.299 Inexact Rounded +pwsx4615 power 0.897 0.5 -> 0.947 Inexact Rounded +pwsx4616 power 0.0897 0.5 -> 0.299 Inexact Rounded +pwsx4617 power 0.898 0.5 -> 0.948 Inexact Rounded +pwsx4618 power 0.0898 0.5 -> 0.300 Inexact Rounded +pwsx4619 power 0.899 0.5 -> 0.948 Inexact Rounded +pwsx4620 power 0.0899 0.5 -> 0.300 Inexact Rounded +pwsx4621 power 0.901 0.5 -> 0.949 Inexact Rounded +pwsx4622 power 0.0901 0.5 -> 0.300 Inexact Rounded +pwsx4623 power 0.902 0.5 -> 0.950 Inexact Rounded +pwsx4624 power 0.0902 0.5 -> 0.300 Inexact Rounded +pwsx4625 power 0.903 0.5 -> 0.950 Inexact Rounded +pwsx4626 power 0.0903 0.5 -> 0.300 Inexact Rounded +pwsx4627 power 0.904 0.5 -> 0.951 Inexact Rounded +pwsx4628 power 0.0904 0.5 -> 0.301 Inexact Rounded +pwsx4629 power 0.905 0.5 -> 0.951 Inexact Rounded +pwsx4630 power 0.0905 0.5 -> 0.301 Inexact Rounded +pwsx4631 power 0.906 0.5 -> 0.952 Inexact Rounded +pwsx4632 power 0.0906 0.5 -> 0.301 Inexact Rounded +pwsx4633 power 0.907 0.5 -> 0.952 Inexact Rounded +pwsx4634 power 0.0907 0.5 -> 0.301 Inexact Rounded +pwsx4635 power 0.908 0.5 -> 0.953 Inexact Rounded +pwsx4636 power 0.0908 0.5 -> 0.301 Inexact Rounded +pwsx4637 power 0.909 0.5 -> 0.953 Inexact Rounded +pwsx4638 power 0.0909 0.5 -> 0.301 Inexact Rounded +pwsx4639 power 0.911 0.5 -> 0.954 Inexact Rounded +pwsx4640 power 0.0911 0.5 -> 0.302 Inexact Rounded +pwsx4641 power 0.912 0.5 -> 0.955 Inexact Rounded +pwsx4642 power 0.0912 0.5 -> 0.302 Inexact Rounded +pwsx4643 power 0.913 0.5 -> 0.956 Inexact Rounded +pwsx4644 power 0.0913 0.5 -> 0.302 Inexact Rounded +pwsx4645 power 0.914 0.5 -> 0.956 Inexact Rounded +pwsx4646 power 0.0914 0.5 -> 0.302 Inexact Rounded +pwsx4647 power 0.915 0.5 -> 0.957 Inexact Rounded +pwsx4648 power 0.0915 0.5 -> 0.302 Inexact Rounded +pwsx4649 power 0.916 0.5 -> 0.957 Inexact Rounded +pwsx4650 power 0.0916 0.5 -> 0.303 Inexact Rounded +pwsx4651 power 0.917 0.5 -> 0.958 Inexact Rounded +pwsx4652 power 0.0917 0.5 -> 0.303 Inexact Rounded +pwsx4653 power 0.918 0.5 -> 0.958 Inexact Rounded +pwsx4654 power 0.0918 0.5 -> 0.303 Inexact Rounded +pwsx4655 power 0.919 0.5 -> 0.959 Inexact Rounded +pwsx4656 power 0.0919 0.5 -> 0.303 Inexact Rounded +pwsx4657 power 0.921 0.5 -> 0.960 Inexact Rounded +pwsx4658 power 0.0921 0.5 -> 0.303 Inexact Rounded +pwsx4659 power 0.922 0.5 -> 0.960 Inexact Rounded +pwsx4660 power 0.0922 0.5 -> 0.304 Inexact Rounded +pwsx4661 power 0.923 0.5 -> 0.961 Inexact Rounded +pwsx4662 power 0.0923 0.5 -> 0.304 Inexact Rounded +pwsx4663 power 0.924 0.5 -> 0.961 Inexact Rounded +pwsx4664 power 0.0924 0.5 -> 0.304 Inexact Rounded +pwsx4665 power 0.925 0.5 -> 0.962 Inexact Rounded +pwsx4666 power 0.0925 0.5 -> 0.304 Inexact Rounded +pwsx4667 power 0.926 0.5 -> 0.962 Inexact Rounded +pwsx4668 power 0.0926 0.5 -> 0.304 Inexact Rounded +pwsx4669 power 0.927 0.5 -> 0.963 Inexact Rounded +pwsx4670 power 0.0927 0.5 -> 0.304 Inexact Rounded +pwsx4671 power 0.928 0.5 -> 0.963 Inexact Rounded +pwsx4672 power 0.0928 0.5 -> 0.305 Inexact Rounded +pwsx4673 power 0.929 0.5 -> 0.964 Inexact Rounded +pwsx4674 power 0.0929 0.5 -> 0.305 Inexact Rounded +pwsx4675 power 0.931 0.5 -> 0.965 Inexact Rounded +pwsx4676 power 0.0931 0.5 -> 0.305 Inexact Rounded +pwsx4677 power 0.932 0.5 -> 0.965 Inexact Rounded +pwsx4678 power 0.0932 0.5 -> 0.305 Inexact Rounded +pwsx4679 power 0.933 0.5 -> 0.966 Inexact Rounded +pwsx4680 power 0.0933 0.5 -> 0.305 Inexact Rounded +pwsx4681 power 0.934 0.5 -> 0.966 Inexact Rounded +pwsx4682 power 0.0934 0.5 -> 0.306 Inexact Rounded +pwsx4683 power 0.935 0.5 -> 0.967 Inexact Rounded +pwsx4684 power 0.0935 0.5 -> 0.306 Inexact Rounded +pwsx4685 power 0.936 0.5 -> 0.967 Inexact Rounded +pwsx4686 power 0.0936 0.5 -> 0.306 Inexact Rounded +pwsx4687 power 0.937 0.5 -> 0.968 Inexact Rounded +pwsx4688 power 0.0937 0.5 -> 0.306 Inexact Rounded +pwsx4689 power 0.938 0.5 -> 0.969 Inexact Rounded +pwsx4690 power 0.0938 0.5 -> 0.306 Inexact Rounded +pwsx4691 power 0.939 0.5 -> 0.969 Inexact Rounded +pwsx4692 power 0.0939 0.5 -> 0.306 Inexact Rounded +pwsx4693 power 0.941 0.5 -> 0.970 Inexact Rounded +pwsx4694 power 0.0941 0.5 -> 0.307 Inexact Rounded +pwsx4695 power 0.942 0.5 -> 0.971 Inexact Rounded +pwsx4696 power 0.0942 0.5 -> 0.307 Inexact Rounded +pwsx4697 power 0.943 0.5 -> 0.971 Inexact Rounded +pwsx4698 power 0.0943 0.5 -> 0.307 Inexact Rounded +pwsx4699 power 0.944 0.5 -> 0.972 Inexact Rounded +pwsx4700 power 0.0944 0.5 -> 0.307 Inexact Rounded +pwsx4701 power 0.945 0.5 -> 0.972 Inexact Rounded +pwsx4702 power 0.0945 0.5 -> 0.307 Inexact Rounded +pwsx4703 power 0.946 0.5 -> 0.973 Inexact Rounded +pwsx4704 power 0.0946 0.5 -> 0.308 Inexact Rounded +pwsx4705 power 0.947 0.5 -> 0.973 Inexact Rounded +pwsx4706 power 0.0947 0.5 -> 0.308 Inexact Rounded +pwsx4707 power 0.948 0.5 -> 0.974 Inexact Rounded +pwsx4708 power 0.0948 0.5 -> 0.308 Inexact Rounded +pwsx4709 power 0.949 0.5 -> 0.974 Inexact Rounded +pwsx4710 power 0.0949 0.5 -> 0.308 Inexact Rounded +pwsx4711 power 0.951 0.5 -> 0.975 Inexact Rounded +pwsx4712 power 0.0951 0.5 -> 0.308 Inexact Rounded +pwsx4713 power 0.952 0.5 -> 0.976 Inexact Rounded +pwsx4714 power 0.0952 0.5 -> 0.309 Inexact Rounded +pwsx4715 power 0.953 0.5 -> 0.976 Inexact Rounded +pwsx4716 power 0.0953 0.5 -> 0.309 Inexact Rounded +pwsx4717 power 0.954 0.5 -> 0.977 Inexact Rounded +pwsx4718 power 0.0954 0.5 -> 0.309 Inexact Rounded +pwsx4719 power 0.955 0.5 -> 0.977 Inexact Rounded +pwsx4720 power 0.0955 0.5 -> 0.309 Inexact Rounded +pwsx4721 power 0.956 0.5 -> 0.978 Inexact Rounded +pwsx4722 power 0.0956 0.5 -> 0.309 Inexact Rounded +pwsx4723 power 0.957 0.5 -> 0.978 Inexact Rounded +pwsx4724 power 0.0957 0.5 -> 0.309 Inexact Rounded +pwsx4725 power 0.958 0.5 -> 0.979 Inexact Rounded +pwsx4726 power 0.0958 0.5 -> 0.310 Inexact Rounded +pwsx4727 power 0.959 0.5 -> 0.979 Inexact Rounded +pwsx4728 power 0.0959 0.5 -> 0.310 Inexact Rounded +pwsx4729 power 0.961 0.5 -> 0.980 Inexact Rounded +pwsx4730 power 0.0961 0.5 -> 0.310 Inexact Rounded +pwsx4731 power 0.962 0.5 -> 0.981 Inexact Rounded +pwsx4732 power 0.0962 0.5 -> 0.310 Inexact Rounded +pwsx4733 power 0.963 0.5 -> 0.981 Inexact Rounded +pwsx4734 power 0.0963 0.5 -> 0.310 Inexact Rounded +pwsx4735 power 0.964 0.5 -> 0.982 Inexact Rounded +pwsx4736 power 0.0964 0.5 -> 0.310 Inexact Rounded +pwsx4737 power 0.965 0.5 -> 0.982 Inexact Rounded +pwsx4738 power 0.0965 0.5 -> 0.311 Inexact Rounded +pwsx4739 power 0.966 0.5 -> 0.983 Inexact Rounded +pwsx4740 power 0.0966 0.5 -> 0.311 Inexact Rounded +pwsx4741 power 0.967 0.5 -> 0.983 Inexact Rounded +pwsx4742 power 0.0967 0.5 -> 0.311 Inexact Rounded +pwsx4743 power 0.968 0.5 -> 0.984 Inexact Rounded +pwsx4744 power 0.0968 0.5 -> 0.311 Inexact Rounded +pwsx4745 power 0.969 0.5 -> 0.984 Inexact Rounded +pwsx4746 power 0.0969 0.5 -> 0.311 Inexact Rounded +pwsx4747 power 0.971 0.5 -> 0.985 Inexact Rounded +pwsx4748 power 0.0971 0.5 -> 0.312 Inexact Rounded +pwsx4749 power 0.972 0.5 -> 0.986 Inexact Rounded +pwsx4750 power 0.0972 0.5 -> 0.312 Inexact Rounded +pwsx4751 power 0.973 0.5 -> 0.986 Inexact Rounded +pwsx4752 power 0.0973 0.5 -> 0.312 Inexact Rounded +pwsx4753 power 0.974 0.5 -> 0.987 Inexact Rounded +pwsx4754 power 0.0974 0.5 -> 0.312 Inexact Rounded +pwsx4755 power 0.975 0.5 -> 0.987 Inexact Rounded +pwsx4756 power 0.0975 0.5 -> 0.312 Inexact Rounded +pwsx4757 power 0.976 0.5 -> 0.988 Inexact Rounded +pwsx4758 power 0.0976 0.5 -> 0.312 Inexact Rounded +pwsx4759 power 0.977 0.5 -> 0.988 Inexact Rounded +pwsx4760 power 0.0977 0.5 -> 0.313 Inexact Rounded +pwsx4761 power 0.978 0.5 -> 0.989 Inexact Rounded +pwsx4762 power 0.0978 0.5 -> 0.313 Inexact Rounded +pwsx4763 power 0.979 0.5 -> 0.989 Inexact Rounded +pwsx4764 power 0.0979 0.5 -> 0.313 Inexact Rounded +pwsx4765 power 0.981 0.5 -> 0.990 Inexact Rounded +pwsx4766 power 0.0981 0.5 -> 0.313 Inexact Rounded +pwsx4767 power 0.982 0.5 -> 0.991 Inexact Rounded +pwsx4768 power 0.0982 0.5 -> 0.313 Inexact Rounded +pwsx4769 power 0.983 0.5 -> 0.991 Inexact Rounded +pwsx4770 power 0.0983 0.5 -> 0.314 Inexact Rounded +pwsx4771 power 0.984 0.5 -> 0.992 Inexact Rounded +pwsx4772 power 0.0984 0.5 -> 0.314 Inexact Rounded +pwsx4773 power 0.985 0.5 -> 0.992 Inexact Rounded +pwsx4774 power 0.0985 0.5 -> 0.314 Inexact Rounded +pwsx4775 power 0.986 0.5 -> 0.993 Inexact Rounded +pwsx4776 power 0.0986 0.5 -> 0.314 Inexact Rounded +pwsx4777 power 0.987 0.5 -> 0.993 Inexact Rounded +pwsx4778 power 0.0987 0.5 -> 0.314 Inexact Rounded +pwsx4779 power 0.988 0.5 -> 0.994 Inexact Rounded +pwsx4780 power 0.0988 0.5 -> 0.314 Inexact Rounded +pwsx4781 power 0.989 0.5 -> 0.994 Inexact Rounded +pwsx4782 power 0.0989 0.5 -> 0.314 Inexact Rounded +pwsx4783 power 0.991 0.5 -> 0.995 Inexact Rounded +pwsx4784 power 0.0991 0.5 -> 0.315 Inexact Rounded +pwsx4785 power 0.992 0.5 -> 0.996 Inexact Rounded +pwsx4786 power 0.0992 0.5 -> 0.315 Inexact Rounded +pwsx4787 power 0.993 0.5 -> 0.996 Inexact Rounded +pwsx4788 power 0.0993 0.5 -> 0.315 Inexact Rounded +pwsx4789 power 0.994 0.5 -> 0.997 Inexact Rounded +pwsx4790 power 0.0994 0.5 -> 0.315 Inexact Rounded +pwsx4791 power 0.995 0.5 -> 0.997 Inexact Rounded +pwsx4792 power 0.0995 0.5 -> 0.315 Inexact Rounded +pwsx4793 power 0.996 0.5 -> 0.998 Inexact Rounded +pwsx4794 power 0.0996 0.5 -> 0.316 Inexact Rounded +pwsx4795 power 0.997 0.5 -> 0.998 Inexact Rounded +pwsx4796 power 0.0997 0.5 -> 0.316 Inexact Rounded +pwsx4797 power 0.998 0.5 -> 0.999 Inexact Rounded +pwsx4798 power 0.0998 0.5 -> 0.316 Inexact Rounded +pwsx4799 power 0.999 0.5 -> 0.999 Inexact Rounded +pwsx4800 power 0.0999 0.5 -> 0.316 Inexact Rounded + +-- A group of precision 4 tests where Hull & Abrham adjustments are +-- needed in some cases (both up and down) [see Hull1985b] +rounding: half_even +maxExponent: 999 +minexponent: -999 +precision: 4 +pwsx5001 power 0.0118 0.5 -> 0.1086 Inexact Rounded +pwsx5002 power 0.119 0.5 -> 0.3450 Inexact Rounded +pwsx5003 power 0.0119 0.5 -> 0.1091 Inexact Rounded +pwsx5004 power 0.121 0.5 -> 0.3479 Inexact Rounded +pwsx5005 power 0.0121 0.5 -> 0.1100 Inexact Rounded +pwsx5006 power 0.122 0.5 -> 0.3493 Inexact Rounded +pwsx5007 power 0.0122 0.5 -> 0.1105 Inexact Rounded +pwsx5008 power 0.123 0.5 -> 0.3507 Inexact Rounded +pwsx5009 power 0.494 0.5 -> 0.7029 Inexact Rounded +pwsx5010 power 0.0669 0.5 -> 0.2587 Inexact Rounded +pwsx5011 power 0.9558 0.5 -> 0.9777 Inexact Rounded +pwsx5012 power 0.9348 0.5 -> 0.9669 Inexact Rounded +pwsx5013 power 0.9345 0.5 -> 0.9667 Inexact Rounded +pwsx5014 power 0.09345 0.5 -> 0.3057 Inexact Rounded +pwsx5015 power 0.9346 0.5 -> 0.9667 Inexact Rounded +pwsx5016 power 0.09346 0.5 -> 0.3057 Inexact Rounded +pwsx5017 power 0.9347 0.5 -> 0.9668 Inexact Rounded + +-- examples from decArith +precision: 9 +pwsx700 power 0 0.5 -> '0' +pwsx701 power -0 0.5 -> '0' +pwsx702 power 0.39 0.5 -> 0.624499800 Inexact Rounded +pwsx703 power 100 0.5 -> '10.0000000' Inexact Rounded +pwsx704 power 1.00 0.5 -> '1.00000000' Inexact Rounded +pwsx705 power 7 0.5 -> '2.64575131' Inexact Rounded +pwsx706 power 10 0.5 -> 3.16227766 Inexact Rounded + +-- some one-offs +precision: 9 +pwsx711 power 0.1 0.5 -> 0.316227766 Inexact Rounded +pwsx712 power 0.2 0.5 -> 0.447213595 Inexact Rounded +pwsx713 power 0.3 0.5 -> 0.547722558 Inexact Rounded +pwsx714 power 0.4 0.5 -> 0.632455532 Inexact Rounded +pwsx715 power 0.5 0.5 -> 0.707106781 Inexact Rounded +pwsx716 power 0.6 0.5 -> 0.774596669 Inexact Rounded +pwsx717 power 0.7 0.5 -> 0.836660027 Inexact Rounded +pwsx718 power 0.8 0.5 -> 0.894427191 Inexact Rounded +pwsx719 power 0.9 0.5 -> 0.948683298 Inexact Rounded +precision: 10 -- note no normalizatoin here +pwsx720 power +0.1 0.5 -> 0.3162277660 Inexact Rounded +precision: 11 +pwsx721 power +0.1 0.5 -> 0.31622776602 Inexact Rounded +precision: 12 +pwsx722 power +0.1 0.5 -> 0.316227766017 Inexact Rounded +precision: 9 +pwsx723 power 0.39 0.5 -> 0.624499800 Inexact Rounded +precision: 15 +pwsx724 power 0.39 0.5 -> 0.624499799839840 Inexact Rounded + +-- discussion cases +precision: 7 +pwsx731 power 9 0.5 -> 3.000000 Inexact Rounded +pwsx732 power 100 0.5 -> 10.00000 Inexact Rounded +pwsx733 power 123 0.5 -> 11.09054 Inexact Rounded +pwsx734 power 144 0.5 -> 12.00000 Inexact Rounded +pwsx735 power 156 0.5 -> 12.49000 Inexact Rounded +pwsx736 power 10000 0.5 -> 100.0000 Inexact Rounded + +-- values close to overflow (if there were input rounding) +maxexponent: 99 +minexponent: -99 +precision: 5 +pwsx760 power 9.9997E+99 0.5 -> 9.9998E+49 Inexact Rounded +pwsx761 power 9.9998E+99 0.5 -> 9.9999E+49 Inexact Rounded +pwsx762 power 9.9999E+99 0.5 -> 9.9999E+49 Inexact Rounded +pwsx763 power 9.99991E+99 0.5 -> 1.0000E+50 Inexact Rounded +pwsx764 power 9.99994E+99 0.5 -> 1.0000E+50 Inexact Rounded +pwsx765 power 9.99995E+99 0.5 -> 1.0000E+50 Inexact Rounded +pwsx766 power 9.99999E+99 0.5 -> 1.0000E+50 Inexact Rounded +precision: 9 +pwsx770 power 9.9997E+99 0.5 -> 9.99985000E+49 Inexact Rounded +pwsx771 power 9.9998E+99 0.5 -> 9.99990000E+49 Inexact Rounded +pwsx772 power 9.9999E+99 0.5 -> 9.99995000E+49 Inexact Rounded +pwsx773 power 9.99991E+99 0.5 -> 9.99995500E+49 Inexact Rounded +pwsx774 power 9.99994E+99 0.5 -> 9.99997000E+49 Inexact Rounded +pwsx775 power 9.99995E+99 0.5 -> 9.99997500E+49 Inexact Rounded +pwsx776 power 9.99999E+99 0.5 -> 9.99999500E+49 Inexact Rounded +precision: 20 +pwsx780 power 9.9997E+99 0.5 -> '9.9998499988749831247E+49' Inexact Rounded +pwsx781 power 9.9998E+99 0.5 -> '9.9998999994999949999E+49' Inexact Rounded +pwsx782 power 9.9999E+99 0.5 -> '9.9999499998749993750E+49' Inexact Rounded +pwsx783 power 9.99991E+99 0.5 -> '9.9999549998987495444E+49' Inexact Rounded +pwsx784 power 9.99994E+99 0.5 -> '9.9999699999549998650E+49' Inexact Rounded +pwsx785 power 9.99995E+99 0.5 -> '9.9999749999687499219E+49' Inexact Rounded +pwsx786 power 9.99999E+99 0.5 -> '9.9999949999987499994E+49' Inexact Rounded + +-- subnormals and underflows [these can only result when eMax is < digits+1] +-- Etiny = -(Emax + (precision-1)) +-- start with subnormal operands and normal results +maxexponent: 9 +minexponent: -9 +precision: 9 -- Etiny=-17 +pwsx800 power 1E-17 0.5 -> 3.16227766E-9 Inexact Rounded +pwsx801 power 10E-17 0.5 -> 1.00000000E-8 Inexact Rounded +precision: 10 -- Etiny=-18 +pwsx802 power 10E-18 0.5 -> 3.162277660E-9 Inexact Rounded +pwsx803 power 1E-18 0.5 -> 1.000000000E-9 Inexact Rounded + +precision: 11 -- Etiny=-19 +pwsx804 power 1E-19 0.5 -> 3.162277660E-10 Underflow Subnormal Inexact Rounded +-- The next test should be skipped for decNumber +pwsx805 power 10E-19 0.5 -> 1.0000000000E-9 Inexact Rounded +precision: 12 -- Etiny=-20 +pwsx806 power 10E-20 0.5 -> 3.1622776602E-10 Underflow Subnormal Inexact Rounded +pwsx807 power 1E-20 0.5 -> 1.0000000000E-10 Underflow Subnormal Inexact Rounded + +precision: 13 -- Etiny=-21 +pwsx808 power 1E-21 0.5 -> 3.1622776602E-11 Underflow Subnormal Inexact Rounded +pwsx809 power 10E-21 0.5 -> 1.00000000000E-10 Underflow Subnormal Inexact Rounded +precision: 14 -- Etiny=-22 +pwsx810 power 1E-21 0.5 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded +pwsx811 power 10E-22 0.5 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded +pwsx812 power 1E-22 0.5 -> 1.00000000000E-11 Underflow Subnormal Inexact Rounded + + +-- special values +maxexponent: 999 +minexponent: -999 +pwsx820 power Inf 0.5 -> Infinity +pwsx821 power -Inf 0.5 -> NaN Invalid_operation +pwsx822 power NaN 0.5 -> NaN +pwsx823 power sNaN 0.5 -> NaN Invalid_operation +-- propagating NaNs +pwsx824 power sNaN123 0.5 -> NaN123 Invalid_operation +pwsx825 power -sNaN321 0.5 -> -NaN321 Invalid_operation +pwsx826 power NaN456 0.5 -> NaN456 +pwsx827 power -NaN654 0.5 -> -NaN654 +pwsx828 power NaN1 0.5 -> NaN1 + +-- Null test +pwsx900 power # 0.5 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/rotate.decTest b/Lib/test/decimaltestdata/rotate.decTest index 12db821..81ade79 100644 --- a/Lib/test/decimaltestdata/rotate.decTest +++ b/Lib/test/decimaltestdata/rotate.decTest @@ -1,247 +1,247 @@ ------------------------------------------------------------------------- --- rotate.decTest -- rotate coefficient left or right -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check -rotx001 rotate 0 0 -> 0 -rotx002 rotate 0 2 -> 0 -rotx003 rotate 1 2 -> 100 -rotx004 rotate 34 8 -> 400000003 -rotx005 rotate 1 9 -> 1 -rotx006 rotate 1 -1 -> 100000000 -rotx007 rotate 123456789 -1 -> 912345678 -rotx008 rotate 123456789 -8 -> 234567891 -rotx009 rotate 123456789 -9 -> 123456789 -rotx010 rotate 0 -2 -> 0 - --- rhs must be an integer -rotx011 rotate 1 1.5 -> NaN Invalid_operation -rotx012 rotate 1 1.0 -> NaN Invalid_operation -rotx013 rotate 1 0.1 -> NaN Invalid_operation -rotx014 rotate 1 0.0 -> NaN Invalid_operation -rotx015 rotate 1 1E+1 -> NaN Invalid_operation -rotx016 rotate 1 1E+99 -> NaN Invalid_operation -rotx017 rotate 1 Inf -> NaN Invalid_operation -rotx018 rotate 1 -Inf -> NaN Invalid_operation --- and |rhs| <= precision -rotx020 rotate 1 -1000 -> NaN Invalid_operation -rotx021 rotate 1 -10 -> NaN Invalid_operation -rotx022 rotate 1 10 -> NaN Invalid_operation -rotx023 rotate 1 1000 -> NaN Invalid_operation - --- full pattern -rotx030 rotate 123456789 -9 -> 123456789 -rotx031 rotate 123456789 -8 -> 234567891 -rotx032 rotate 123456789 -7 -> 345678912 -rotx033 rotate 123456789 -6 -> 456789123 -rotx034 rotate 123456789 -5 -> 567891234 -rotx035 rotate 123456789 -4 -> 678912345 -rotx036 rotate 123456789 -3 -> 789123456 -rotx037 rotate 123456789 -2 -> 891234567 -rotx038 rotate 123456789 -1 -> 912345678 -rotx039 rotate 123456789 -0 -> 123456789 -rotx040 rotate 123456789 +0 -> 123456789 -rotx041 rotate 123456789 +1 -> 234567891 -rotx042 rotate 123456789 +2 -> 345678912 -rotx043 rotate 123456789 +3 -> 456789123 -rotx044 rotate 123456789 +4 -> 567891234 -rotx045 rotate 123456789 +5 -> 678912345 -rotx046 rotate 123456789 +6 -> 789123456 -rotx047 rotate 123456789 +7 -> 891234567 -rotx048 rotate 123456789 +8 -> 912345678 -rotx049 rotate 123456789 +9 -> 123456789 - --- zeros -rotx060 rotate 0E-10 +9 -> 0E-10 -rotx061 rotate 0E-10 -9 -> 0E-10 -rotx062 rotate 0.000 +9 -> 0.000 -rotx063 rotate 0.000 -9 -> 0.000 -rotx064 rotate 0E+10 +9 -> 0E+10 -rotx065 rotate 0E+10 -9 -> 0E+10 -rotx066 rotate -0E-10 +9 -> -0E-10 -rotx067 rotate -0E-10 -9 -> -0E-10 -rotx068 rotate -0.000 +9 -> -0.000 -rotx069 rotate -0.000 -9 -> -0.000 -rotx070 rotate -0E+10 +9 -> -0E+10 -rotx071 rotate -0E+10 -9 -> -0E+10 - --- Nmax, Nmin, Ntiny -rotx141 rotate 9.99999999E+999 -1 -> 9.99999999E+999 -rotx142 rotate 9.99999999E+999 -8 -> 9.99999999E+999 -rotx143 rotate 9.99999999E+999 1 -> 9.99999999E+999 -rotx144 rotate 9.99999999E+999 8 -> 9.99999999E+999 -rotx145 rotate 1E-999 -1 -> 1.00000000E-991 -rotx146 rotate 1E-999 -8 -> 1.0E-998 -rotx147 rotate 1E-999 1 -> 1.0E-998 -rotx148 rotate 1E-999 8 -> 1.00000000E-991 -rotx151 rotate 1.00000000E-999 -1 -> 1.0000000E-1000 -rotx152 rotate 1.00000000E-999 -8 -> 1E-1007 -rotx153 rotate 1.00000000E-999 1 -> 1E-1007 -rotx154 rotate 1.00000000E-999 8 -> 1.0000000E-1000 -rotx155 rotate 9.00000000E-999 -1 -> 9.0000000E-1000 -rotx156 rotate 9.00000000E-999 -8 -> 9E-1007 -rotx157 rotate 9.00000000E-999 1 -> 9E-1007 -rotx158 rotate 9.00000000E-999 8 -> 9.0000000E-1000 -rotx160 rotate 1E-1007 -1 -> 1.00000000E-999 -rotx161 rotate 1E-1007 -8 -> 1.0E-1006 -rotx162 rotate 1E-1007 1 -> 1.0E-1006 -rotx163 rotate 1E-1007 8 -> 1.00000000E-999 --- negatives -rotx171 rotate -9.99999999E+999 -1 -> -9.99999999E+999 -rotx172 rotate -9.99999999E+999 -8 -> -9.99999999E+999 -rotx173 rotate -9.99999999E+999 1 -> -9.99999999E+999 -rotx174 rotate -9.99999999E+999 8 -> -9.99999999E+999 -rotx175 rotate -1E-999 -1 -> -1.00000000E-991 -rotx176 rotate -1E-999 -8 -> -1.0E-998 -rotx177 rotate -1E-999 1 -> -1.0E-998 -rotx178 rotate -1E-999 8 -> -1.00000000E-991 -rotx181 rotate -1.00000000E-999 -1 -> -1.0000000E-1000 -rotx182 rotate -1.00000000E-999 -8 -> -1E-1007 -rotx183 rotate -1.00000000E-999 1 -> -1E-1007 -rotx184 rotate -1.00000000E-999 8 -> -1.0000000E-1000 -rotx185 rotate -9.00000000E-999 -1 -> -9.0000000E-1000 -rotx186 rotate -9.00000000E-999 -8 -> -9E-1007 -rotx187 rotate -9.00000000E-999 1 -> -9E-1007 -rotx188 rotate -9.00000000E-999 8 -> -9.0000000E-1000 -rotx190 rotate -1E-1007 -1 -> -1.00000000E-999 -rotx191 rotate -1E-1007 -8 -> -1.0E-1006 -rotx192 rotate -1E-1007 1 -> -1.0E-1006 -rotx193 rotate -1E-1007 8 -> -1.00000000E-999 - --- more negatives (of sanities) -rotx201 rotate -0 0 -> -0 -rotx202 rotate -0 2 -> -0 -rotx203 rotate -1 2 -> -100 -rotx204 rotate -1 8 -> -100000000 -rotx205 rotate -1 9 -> -1 -rotx206 rotate -1 -1 -> -100000000 -rotx207 rotate -123456789 -1 -> -912345678 -rotx208 rotate -123456789 -8 -> -234567891 -rotx209 rotate -123456789 -9 -> -123456789 -rotx210 rotate -0 -2 -> -0 - --- Specials; NaNs are handled as usual -rotx781 rotate -Inf -8 -> -Infinity -rotx782 rotate -Inf -1 -> -Infinity -rotx783 rotate -Inf -0 -> -Infinity -rotx784 rotate -Inf 0 -> -Infinity -rotx785 rotate -Inf 1 -> -Infinity -rotx786 rotate -Inf 8 -> -Infinity -rotx787 rotate -1000 -Inf -> NaN Invalid_operation -rotx788 rotate -Inf -Inf -> NaN Invalid_operation -rotx789 rotate -1 -Inf -> NaN Invalid_operation -rotx790 rotate -0 -Inf -> NaN Invalid_operation -rotx791 rotate 0 -Inf -> NaN Invalid_operation -rotx792 rotate 1 -Inf -> NaN Invalid_operation -rotx793 rotate 1000 -Inf -> NaN Invalid_operation -rotx794 rotate Inf -Inf -> NaN Invalid_operation - -rotx800 rotate Inf -Inf -> NaN Invalid_operation -rotx801 rotate Inf -8 -> Infinity -rotx802 rotate Inf -1 -> Infinity -rotx803 rotate Inf -0 -> Infinity -rotx804 rotate Inf 0 -> Infinity -rotx805 rotate Inf 1 -> Infinity -rotx806 rotate Inf 8 -> Infinity -rotx807 rotate Inf Inf -> NaN Invalid_operation -rotx808 rotate -1000 Inf -> NaN Invalid_operation -rotx809 rotate -Inf Inf -> NaN Invalid_operation -rotx810 rotate -1 Inf -> NaN Invalid_operation -rotx811 rotate -0 Inf -> NaN Invalid_operation -rotx812 rotate 0 Inf -> NaN Invalid_operation -rotx813 rotate 1 Inf -> NaN Invalid_operation -rotx814 rotate 1000 Inf -> NaN Invalid_operation -rotx815 rotate Inf Inf -> NaN Invalid_operation - -rotx821 rotate NaN -Inf -> NaN -rotx822 rotate NaN -1000 -> NaN -rotx823 rotate NaN -1 -> NaN -rotx824 rotate NaN -0 -> NaN -rotx825 rotate NaN 0 -> NaN -rotx826 rotate NaN 1 -> NaN -rotx827 rotate NaN 1000 -> NaN -rotx828 rotate NaN Inf -> NaN -rotx829 rotate NaN NaN -> NaN -rotx830 rotate -Inf NaN -> NaN -rotx831 rotate -1000 NaN -> NaN -rotx832 rotate -1 NaN -> NaN -rotx833 rotate -0 NaN -> NaN -rotx834 rotate 0 NaN -> NaN -rotx835 rotate 1 NaN -> NaN -rotx836 rotate 1000 NaN -> NaN -rotx837 rotate Inf NaN -> NaN - - - -rotx841 rotate sNaN -Inf -> NaN Invalid_operation -rotx842 rotate sNaN -1000 -> NaN Invalid_operation -rotx843 rotate sNaN -1 -> NaN Invalid_operation -rotx844 rotate sNaN -0 -> NaN Invalid_operation -rotx845 rotate sNaN 0 -> NaN Invalid_operation -rotx846 rotate sNaN 1 -> NaN Invalid_operation -rotx847 rotate sNaN 1000 -> NaN Invalid_operation -rotx848 rotate sNaN NaN -> NaN Invalid_operation -rotx849 rotate sNaN sNaN -> NaN Invalid_operation -rotx850 rotate NaN sNaN -> NaN Invalid_operation -rotx851 rotate -Inf sNaN -> NaN Invalid_operation -rotx852 rotate -1000 sNaN -> NaN Invalid_operation -rotx853 rotate -1 sNaN -> NaN Invalid_operation -rotx854 rotate -0 sNaN -> NaN Invalid_operation -rotx855 rotate 0 sNaN -> NaN Invalid_operation -rotx856 rotate 1 sNaN -> NaN Invalid_operation -rotx857 rotate 1000 sNaN -> NaN Invalid_operation -rotx858 rotate Inf sNaN -> NaN Invalid_operation -rotx859 rotate NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -rotx861 rotate NaN1 -Inf -> NaN1 -rotx862 rotate +NaN2 -1000 -> NaN2 -rotx863 rotate NaN3 1000 -> NaN3 -rotx864 rotate NaN4 Inf -> NaN4 -rotx865 rotate NaN5 +NaN6 -> NaN5 -rotx866 rotate -Inf NaN7 -> NaN7 -rotx867 rotate -1000 NaN8 -> NaN8 -rotx868 rotate 1000 NaN9 -> NaN9 -rotx869 rotate Inf +NaN10 -> NaN10 -rotx871 rotate sNaN11 -Inf -> NaN11 Invalid_operation -rotx872 rotate sNaN12 -1000 -> NaN12 Invalid_operation -rotx873 rotate sNaN13 1000 -> NaN13 Invalid_operation -rotx874 rotate sNaN14 NaN17 -> NaN14 Invalid_operation -rotx875 rotate sNaN15 sNaN18 -> NaN15 Invalid_operation -rotx876 rotate NaN16 sNaN19 -> NaN19 Invalid_operation -rotx877 rotate -Inf +sNaN20 -> NaN20 Invalid_operation -rotx878 rotate -1000 sNaN21 -> NaN21 Invalid_operation -rotx879 rotate 1000 sNaN22 -> NaN22 Invalid_operation -rotx880 rotate Inf sNaN23 -> NaN23 Invalid_operation -rotx881 rotate +NaN25 +sNaN24 -> NaN24 Invalid_operation -rotx882 rotate -NaN26 NaN28 -> -NaN26 -rotx883 rotate -sNaN27 sNaN29 -> -NaN27 Invalid_operation -rotx884 rotate 1000 -NaN30 -> -NaN30 -rotx885 rotate 1000 -sNaN31 -> -NaN31 Invalid_operation - --- payload decapitate -precision: 5 -rotx886 rotate 11 -sNaN1234567890 -> -NaN67890 Invalid_operation +------------------------------------------------------------------------ +-- rotate.decTest -- rotate coefficient left or right -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check +rotx001 rotate 0 0 -> 0 +rotx002 rotate 0 2 -> 0 +rotx003 rotate 1 2 -> 100 +rotx004 rotate 34 8 -> 400000003 +rotx005 rotate 1 9 -> 1 +rotx006 rotate 1 -1 -> 100000000 +rotx007 rotate 123456789 -1 -> 912345678 +rotx008 rotate 123456789 -8 -> 234567891 +rotx009 rotate 123456789 -9 -> 123456789 +rotx010 rotate 0 -2 -> 0 + +-- rhs must be an integer +rotx011 rotate 1 1.5 -> NaN Invalid_operation +rotx012 rotate 1 1.0 -> NaN Invalid_operation +rotx013 rotate 1 0.1 -> NaN Invalid_operation +rotx014 rotate 1 0.0 -> NaN Invalid_operation +rotx015 rotate 1 1E+1 -> NaN Invalid_operation +rotx016 rotate 1 1E+99 -> NaN Invalid_operation +rotx017 rotate 1 Inf -> NaN Invalid_operation +rotx018 rotate 1 -Inf -> NaN Invalid_operation +-- and |rhs| <= precision +rotx020 rotate 1 -1000 -> NaN Invalid_operation +rotx021 rotate 1 -10 -> NaN Invalid_operation +rotx022 rotate 1 10 -> NaN Invalid_operation +rotx023 rotate 1 1000 -> NaN Invalid_operation + +-- full pattern +rotx030 rotate 123456789 -9 -> 123456789 +rotx031 rotate 123456789 -8 -> 234567891 +rotx032 rotate 123456789 -7 -> 345678912 +rotx033 rotate 123456789 -6 -> 456789123 +rotx034 rotate 123456789 -5 -> 567891234 +rotx035 rotate 123456789 -4 -> 678912345 +rotx036 rotate 123456789 -3 -> 789123456 +rotx037 rotate 123456789 -2 -> 891234567 +rotx038 rotate 123456789 -1 -> 912345678 +rotx039 rotate 123456789 -0 -> 123456789 +rotx040 rotate 123456789 +0 -> 123456789 +rotx041 rotate 123456789 +1 -> 234567891 +rotx042 rotate 123456789 +2 -> 345678912 +rotx043 rotate 123456789 +3 -> 456789123 +rotx044 rotate 123456789 +4 -> 567891234 +rotx045 rotate 123456789 +5 -> 678912345 +rotx046 rotate 123456789 +6 -> 789123456 +rotx047 rotate 123456789 +7 -> 891234567 +rotx048 rotate 123456789 +8 -> 912345678 +rotx049 rotate 123456789 +9 -> 123456789 + +-- zeros +rotx060 rotate 0E-10 +9 -> 0E-10 +rotx061 rotate 0E-10 -9 -> 0E-10 +rotx062 rotate 0.000 +9 -> 0.000 +rotx063 rotate 0.000 -9 -> 0.000 +rotx064 rotate 0E+10 +9 -> 0E+10 +rotx065 rotate 0E+10 -9 -> 0E+10 +rotx066 rotate -0E-10 +9 -> -0E-10 +rotx067 rotate -0E-10 -9 -> -0E-10 +rotx068 rotate -0.000 +9 -> -0.000 +rotx069 rotate -0.000 -9 -> -0.000 +rotx070 rotate -0E+10 +9 -> -0E+10 +rotx071 rotate -0E+10 -9 -> -0E+10 + +-- Nmax, Nmin, Ntiny +rotx141 rotate 9.99999999E+999 -1 -> 9.99999999E+999 +rotx142 rotate 9.99999999E+999 -8 -> 9.99999999E+999 +rotx143 rotate 9.99999999E+999 1 -> 9.99999999E+999 +rotx144 rotate 9.99999999E+999 8 -> 9.99999999E+999 +rotx145 rotate 1E-999 -1 -> 1.00000000E-991 +rotx146 rotate 1E-999 -8 -> 1.0E-998 +rotx147 rotate 1E-999 1 -> 1.0E-998 +rotx148 rotate 1E-999 8 -> 1.00000000E-991 +rotx151 rotate 1.00000000E-999 -1 -> 1.0000000E-1000 +rotx152 rotate 1.00000000E-999 -8 -> 1E-1007 +rotx153 rotate 1.00000000E-999 1 -> 1E-1007 +rotx154 rotate 1.00000000E-999 8 -> 1.0000000E-1000 +rotx155 rotate 9.00000000E-999 -1 -> 9.0000000E-1000 +rotx156 rotate 9.00000000E-999 -8 -> 9E-1007 +rotx157 rotate 9.00000000E-999 1 -> 9E-1007 +rotx158 rotate 9.00000000E-999 8 -> 9.0000000E-1000 +rotx160 rotate 1E-1007 -1 -> 1.00000000E-999 +rotx161 rotate 1E-1007 -8 -> 1.0E-1006 +rotx162 rotate 1E-1007 1 -> 1.0E-1006 +rotx163 rotate 1E-1007 8 -> 1.00000000E-999 +-- negatives +rotx171 rotate -9.99999999E+999 -1 -> -9.99999999E+999 +rotx172 rotate -9.99999999E+999 -8 -> -9.99999999E+999 +rotx173 rotate -9.99999999E+999 1 -> -9.99999999E+999 +rotx174 rotate -9.99999999E+999 8 -> -9.99999999E+999 +rotx175 rotate -1E-999 -1 -> -1.00000000E-991 +rotx176 rotate -1E-999 -8 -> -1.0E-998 +rotx177 rotate -1E-999 1 -> -1.0E-998 +rotx178 rotate -1E-999 8 -> -1.00000000E-991 +rotx181 rotate -1.00000000E-999 -1 -> -1.0000000E-1000 +rotx182 rotate -1.00000000E-999 -8 -> -1E-1007 +rotx183 rotate -1.00000000E-999 1 -> -1E-1007 +rotx184 rotate -1.00000000E-999 8 -> -1.0000000E-1000 +rotx185 rotate -9.00000000E-999 -1 -> -9.0000000E-1000 +rotx186 rotate -9.00000000E-999 -8 -> -9E-1007 +rotx187 rotate -9.00000000E-999 1 -> -9E-1007 +rotx188 rotate -9.00000000E-999 8 -> -9.0000000E-1000 +rotx190 rotate -1E-1007 -1 -> -1.00000000E-999 +rotx191 rotate -1E-1007 -8 -> -1.0E-1006 +rotx192 rotate -1E-1007 1 -> -1.0E-1006 +rotx193 rotate -1E-1007 8 -> -1.00000000E-999 + +-- more negatives (of sanities) +rotx201 rotate -0 0 -> -0 +rotx202 rotate -0 2 -> -0 +rotx203 rotate -1 2 -> -100 +rotx204 rotate -1 8 -> -100000000 +rotx205 rotate -1 9 -> -1 +rotx206 rotate -1 -1 -> -100000000 +rotx207 rotate -123456789 -1 -> -912345678 +rotx208 rotate -123456789 -8 -> -234567891 +rotx209 rotate -123456789 -9 -> -123456789 +rotx210 rotate -0 -2 -> -0 + +-- Specials; NaNs are handled as usual +rotx781 rotate -Inf -8 -> -Infinity +rotx782 rotate -Inf -1 -> -Infinity +rotx783 rotate -Inf -0 -> -Infinity +rotx784 rotate -Inf 0 -> -Infinity +rotx785 rotate -Inf 1 -> -Infinity +rotx786 rotate -Inf 8 -> -Infinity +rotx787 rotate -1000 -Inf -> NaN Invalid_operation +rotx788 rotate -Inf -Inf -> NaN Invalid_operation +rotx789 rotate -1 -Inf -> NaN Invalid_operation +rotx790 rotate -0 -Inf -> NaN Invalid_operation +rotx791 rotate 0 -Inf -> NaN Invalid_operation +rotx792 rotate 1 -Inf -> NaN Invalid_operation +rotx793 rotate 1000 -Inf -> NaN Invalid_operation +rotx794 rotate Inf -Inf -> NaN Invalid_operation + +rotx800 rotate Inf -Inf -> NaN Invalid_operation +rotx801 rotate Inf -8 -> Infinity +rotx802 rotate Inf -1 -> Infinity +rotx803 rotate Inf -0 -> Infinity +rotx804 rotate Inf 0 -> Infinity +rotx805 rotate Inf 1 -> Infinity +rotx806 rotate Inf 8 -> Infinity +rotx807 rotate Inf Inf -> NaN Invalid_operation +rotx808 rotate -1000 Inf -> NaN Invalid_operation +rotx809 rotate -Inf Inf -> NaN Invalid_operation +rotx810 rotate -1 Inf -> NaN Invalid_operation +rotx811 rotate -0 Inf -> NaN Invalid_operation +rotx812 rotate 0 Inf -> NaN Invalid_operation +rotx813 rotate 1 Inf -> NaN Invalid_operation +rotx814 rotate 1000 Inf -> NaN Invalid_operation +rotx815 rotate Inf Inf -> NaN Invalid_operation + +rotx821 rotate NaN -Inf -> NaN +rotx822 rotate NaN -1000 -> NaN +rotx823 rotate NaN -1 -> NaN +rotx824 rotate NaN -0 -> NaN +rotx825 rotate NaN 0 -> NaN +rotx826 rotate NaN 1 -> NaN +rotx827 rotate NaN 1000 -> NaN +rotx828 rotate NaN Inf -> NaN +rotx829 rotate NaN NaN -> NaN +rotx830 rotate -Inf NaN -> NaN +rotx831 rotate -1000 NaN -> NaN +rotx832 rotate -1 NaN -> NaN +rotx833 rotate -0 NaN -> NaN +rotx834 rotate 0 NaN -> NaN +rotx835 rotate 1 NaN -> NaN +rotx836 rotate 1000 NaN -> NaN +rotx837 rotate Inf NaN -> NaN + + + +rotx841 rotate sNaN -Inf -> NaN Invalid_operation +rotx842 rotate sNaN -1000 -> NaN Invalid_operation +rotx843 rotate sNaN -1 -> NaN Invalid_operation +rotx844 rotate sNaN -0 -> NaN Invalid_operation +rotx845 rotate sNaN 0 -> NaN Invalid_operation +rotx846 rotate sNaN 1 -> NaN Invalid_operation +rotx847 rotate sNaN 1000 -> NaN Invalid_operation +rotx848 rotate sNaN NaN -> NaN Invalid_operation +rotx849 rotate sNaN sNaN -> NaN Invalid_operation +rotx850 rotate NaN sNaN -> NaN Invalid_operation +rotx851 rotate -Inf sNaN -> NaN Invalid_operation +rotx852 rotate -1000 sNaN -> NaN Invalid_operation +rotx853 rotate -1 sNaN -> NaN Invalid_operation +rotx854 rotate -0 sNaN -> NaN Invalid_operation +rotx855 rotate 0 sNaN -> NaN Invalid_operation +rotx856 rotate 1 sNaN -> NaN Invalid_operation +rotx857 rotate 1000 sNaN -> NaN Invalid_operation +rotx858 rotate Inf sNaN -> NaN Invalid_operation +rotx859 rotate NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +rotx861 rotate NaN1 -Inf -> NaN1 +rotx862 rotate +NaN2 -1000 -> NaN2 +rotx863 rotate NaN3 1000 -> NaN3 +rotx864 rotate NaN4 Inf -> NaN4 +rotx865 rotate NaN5 +NaN6 -> NaN5 +rotx866 rotate -Inf NaN7 -> NaN7 +rotx867 rotate -1000 NaN8 -> NaN8 +rotx868 rotate 1000 NaN9 -> NaN9 +rotx869 rotate Inf +NaN10 -> NaN10 +rotx871 rotate sNaN11 -Inf -> NaN11 Invalid_operation +rotx872 rotate sNaN12 -1000 -> NaN12 Invalid_operation +rotx873 rotate sNaN13 1000 -> NaN13 Invalid_operation +rotx874 rotate sNaN14 NaN17 -> NaN14 Invalid_operation +rotx875 rotate sNaN15 sNaN18 -> NaN15 Invalid_operation +rotx876 rotate NaN16 sNaN19 -> NaN19 Invalid_operation +rotx877 rotate -Inf +sNaN20 -> NaN20 Invalid_operation +rotx878 rotate -1000 sNaN21 -> NaN21 Invalid_operation +rotx879 rotate 1000 sNaN22 -> NaN22 Invalid_operation +rotx880 rotate Inf sNaN23 -> NaN23 Invalid_operation +rotx881 rotate +NaN25 +sNaN24 -> NaN24 Invalid_operation +rotx882 rotate -NaN26 NaN28 -> -NaN26 +rotx883 rotate -sNaN27 sNaN29 -> -NaN27 Invalid_operation +rotx884 rotate 1000 -NaN30 -> -NaN30 +rotx885 rotate 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- payload decapitate +precision: 5 +rotx886 rotate 11 -sNaN1234567890 -> -NaN67890 Invalid_operation diff --git a/Lib/test/decimaltestdata/scaleb.decTest b/Lib/test/decimaltestdata/scaleb.decTest index 372e3dd..04a65d6 100644 --- a/Lib/test/decimaltestdata/scaleb.decTest +++ b/Lib/test/decimaltestdata/scaleb.decTest @@ -1,209 +1,209 @@ ------------------------------------------------------------------------- --- scaleb.decTest -- scale a number by powers of 10 -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Max |rhs| is 2*(999+9) = 2016 - --- Sanity checks -scbx001 scaleb 7.50 10 -> 7.50E+10 -scbx002 scaleb 7.50 3 -> 7.50E+3 -scbx003 scaleb 7.50 2 -> 750 -scbx004 scaleb 7.50 1 -> 75.0 -scbx005 scaleb 7.50 0 -> 7.50 -scbx006 scaleb 7.50 -1 -> 0.750 -scbx007 scaleb 7.50 -2 -> 0.0750 -scbx008 scaleb 7.50 -10 -> 7.50E-10 -scbx009 scaleb -7.50 3 -> -7.50E+3 -scbx010 scaleb -7.50 2 -> -750 -scbx011 scaleb -7.50 1 -> -75.0 -scbx012 scaleb -7.50 0 -> -7.50 -scbx013 scaleb -7.50 -1 -> -0.750 - --- Infinities -scbx014 scaleb Infinity 1 -> Infinity -scbx015 scaleb -Infinity 2 -> -Infinity -scbx016 scaleb Infinity -1 -> Infinity -scbx017 scaleb -Infinity -2 -> -Infinity - --- Next two are somewhat undefined in 754r; treat as non-integer -scbx018 scaleb 10 Infinity -> NaN Invalid_operation -scbx019 scaleb 10 -Infinity -> NaN Invalid_operation - --- NaNs are undefined in 754r; assume usual processing --- NaNs, 0 payload -scbx021 scaleb NaN 1 -> NaN -scbx022 scaleb -NaN -1 -> -NaN -scbx023 scaleb sNaN 1 -> NaN Invalid_operation -scbx024 scaleb -sNaN 1 -> -NaN Invalid_operation -scbx025 scaleb 4 NaN -> NaN -scbx026 scaleb -Inf -NaN -> -NaN -scbx027 scaleb 4 sNaN -> NaN Invalid_operation -scbx028 scaleb Inf -sNaN -> -NaN Invalid_operation - --- non-integer RHS -scbx030 scaleb 1.23 1 -> 12.3 -scbx031 scaleb 1.23 1.00 -> NaN Invalid_operation -scbx032 scaleb 1.23 1.1 -> NaN Invalid_operation -scbx033 scaleb 1.23 1.01 -> NaN Invalid_operation -scbx034 scaleb 1.23 0.01 -> NaN Invalid_operation -scbx035 scaleb 1.23 0.11 -> NaN Invalid_operation -scbx036 scaleb 1.23 0.999999999 -> NaN Invalid_operation -scbx037 scaleb 1.23 -1 -> 0.123 -scbx038 scaleb 1.23 -1.00 -> NaN Invalid_operation -scbx039 scaleb 1.23 -1.1 -> NaN Invalid_operation -scbx040 scaleb 1.23 -1.01 -> NaN Invalid_operation -scbx041 scaleb 1.23 -0.01 -> NaN Invalid_operation -scbx042 scaleb 1.23 -0.11 -> NaN Invalid_operation -scbx043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation -scbx044 scaleb 1.23 0.1 -> NaN Invalid_operation -scbx045 scaleb 1.23 1E+1 -> NaN Invalid_operation -scbx046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation -scbx047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation - - -scbx120 scaleb 1.23 2015 -> Infinity Overflow Inexact Rounded -scbx121 scaleb 1.23 2016 -> Infinity Overflow Inexact Rounded -scbx122 scaleb 1.23 2017 -> NaN Invalid_operation -scbx123 scaleb 1.23 2018 -> NaN Invalid_operation -scbx124 scaleb 1.23 -2015 -> 0E-1007 Underflow Subnormal Inexact Rounded Clamped -scbx125 scaleb 1.23 -2016 -> 0E-1007 Underflow Subnormal Inexact Rounded Clamped -scbx126 scaleb 1.23 -2017 -> NaN Invalid_operation -scbx127 scaleb 1.23 -2018 -> NaN Invalid_operation - --- NaNs, non-0 payload --- propagating NaNs -scbx861 scaleb NaN01 -Inf -> NaN1 -scbx862 scaleb -NaN02 -1000 -> -NaN2 -scbx863 scaleb NaN03 1000 -> NaN3 -scbx864 scaleb NaN04 Inf -> NaN4 -scbx865 scaleb NaN05 NaN61 -> NaN5 -scbx866 scaleb -Inf -NaN71 -> -NaN71 -scbx867 scaleb -1000 NaN81 -> NaN81 -scbx868 scaleb 1000 NaN91 -> NaN91 -scbx869 scaleb Inf NaN101 -> NaN101 -scbx871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation -scbx872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation -scbx873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation -scbx874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation -scbx875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation -scbx876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation -scbx877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation -scbx878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation -scbx879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation -scbx880 scaleb Inf sNaN231 -> NaN231 Invalid_operation -scbx881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation - --- finites -scbx051 scaleb 7 -2 -> 0.07 -scbx052 scaleb -7 -2 -> -0.07 -scbx053 scaleb 75 -2 -> 0.75 -scbx054 scaleb -75 -2 -> -0.75 -scbx055 scaleb 7.50 -2 -> 0.0750 -scbx056 scaleb -7.50 -2 -> -0.0750 -scbx057 scaleb 7.500 -2 -> 0.07500 -scbx058 scaleb -7.500 -2 -> -0.07500 -scbx061 scaleb 7 -1 -> 0.7 -scbx062 scaleb -7 -1 -> -0.7 -scbx063 scaleb 75 -1 -> 7.5 -scbx064 scaleb -75 -1 -> -7.5 -scbx065 scaleb 7.50 -1 -> 0.750 -scbx066 scaleb -7.50 -1 -> -0.750 -scbx067 scaleb 7.500 -1 -> 0.7500 -scbx068 scaleb -7.500 -1 -> -0.7500 -scbx071 scaleb 7 0 -> 7 -scbx072 scaleb -7 0 -> -7 -scbx073 scaleb 75 0 -> 75 -scbx074 scaleb -75 0 -> -75 -scbx075 scaleb 7.50 0 -> 7.50 -scbx076 scaleb -7.50 0 -> -7.50 -scbx077 scaleb 7.500 0 -> 7.500 -scbx078 scaleb -7.500 0 -> -7.500 -scbx081 scaleb 7 1 -> 7E+1 -scbx082 scaleb -7 1 -> -7E+1 -scbx083 scaleb 75 1 -> 7.5E+2 -scbx084 scaleb -75 1 -> -7.5E+2 -scbx085 scaleb 7.50 1 -> 75.0 -scbx086 scaleb -7.50 1 -> -75.0 -scbx087 scaleb 7.500 1 -> 75.00 -scbx088 scaleb -7.500 1 -> -75.00 -scbx091 scaleb 7 2 -> 7E+2 -scbx092 scaleb -7 2 -> -7E+2 -scbx093 scaleb 75 2 -> 7.5E+3 -scbx094 scaleb -75 2 -> -7.5E+3 -scbx095 scaleb 7.50 2 -> 750 -scbx096 scaleb -7.50 2 -> -750 -scbx097 scaleb 7.500 2 -> 750.0 -scbx098 scaleb -7.500 2 -> -750.0 - --- zeros -scbx111 scaleb 0 1 -> 0E+1 -scbx112 scaleb -0 2 -> -0E+2 -scbx113 scaleb 0E+4 3 -> 0E+7 -scbx114 scaleb -0E+4 4 -> -0E+8 -scbx115 scaleb 0.0000 5 -> 0E+1 -scbx116 scaleb -0.0000 6 -> -0E+2 -scbx117 scaleb 0E-141 7 -> 0E-134 -scbx118 scaleb -0E-141 8 -> -0E-133 - --- Nmax, Nmin, Ntiny -scbx132 scaleb 9.99999999E+999 +999 -> Infinity Overflow Inexact Rounded -scbx133 scaleb 9.99999999E+999 +10 -> Infinity Overflow Inexact Rounded -scbx134 scaleb 9.99999999E+999 +1 -> Infinity Overflow Inexact Rounded -scbx135 scaleb 9.99999999E+999 0 -> 9.99999999E+999 -scbx136 scaleb 9.99999999E+999 -1 -> 9.99999999E+998 -scbx137 scaleb 1E-999 +1 -> 1E-998 -scbx138 scaleb 1E-999 -0 -> 1E-999 -scbx139 scaleb 1E-999 -1 -> 1E-1000 Subnormal -scbx140 scaleb 1.00000000E-999 +1 -> 1.00000000E-998 -scbx141 scaleb 1.00000000E-999 0 -> 1.00000000E-999 -scbx142 scaleb 1.00000000E-999 -1 -> 1.0000000E-1000 Subnormal Rounded -scbx143 scaleb 1E-1007 +1 -> 1E-1006 Subnormal -scbx144 scaleb 1E-1007 -0 -> 1E-1007 Subnormal -scbx145 scaleb 1E-1007 -1 -> 0E-1007 Underflow Subnormal Inexact Rounded Clamped - -scbx150 scaleb -1E-1007 +1 -> -1E-1006 Subnormal -scbx151 scaleb -1E-1007 -0 -> -1E-1007 Subnormal -scbx152 scaleb -1E-1007 -1 -> -0E-1007 Underflow Subnormal Inexact Rounded Clamped -scbx153 scaleb -1.00000000E-999 +1 -> -1.00000000E-998 -scbx154 scaleb -1.00000000E-999 +0 -> -1.00000000E-999 -scbx155 scaleb -1.00000000E-999 -1 -> -1.0000000E-1000 Subnormal Rounded -scbx156 scaleb -1E-999 +1 -> -1E-998 -scbx157 scaleb -1E-999 -0 -> -1E-999 -scbx158 scaleb -1E-999 -1 -> -1E-1000 Subnormal -scbx159 scaleb -9.99999999E+999 +1 -> -Infinity Overflow Inexact Rounded -scbx160 scaleb -9.99999999E+999 +0 -> -9.99999999E+999 -scbx161 scaleb -9.99999999E+999 -1 -> -9.99999999E+998 -scbx162 scaleb -9E+999 +1 -> -Infinity Overflow Inexact Rounded -scbx163 scaleb -1E+999 +1 -> -Infinity Overflow Inexact Rounded - --- Krah examples -precision: 34 -maxExponent: 999999999 -minExponent: -999999999 --- integer overflow in 3.61 or earlier -scbx164 scaleb 1E-999999999 -1200000000 -> NaN Invalid_operation --- out of range -scbx165 scaleb -1E-999999999 +1200000000 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- scaleb.decTest -- scale a number by powers of 10 -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Max |rhs| is 2*(999+9) = 2016 + +-- Sanity checks +scbx001 scaleb 7.50 10 -> 7.50E+10 +scbx002 scaleb 7.50 3 -> 7.50E+3 +scbx003 scaleb 7.50 2 -> 750 +scbx004 scaleb 7.50 1 -> 75.0 +scbx005 scaleb 7.50 0 -> 7.50 +scbx006 scaleb 7.50 -1 -> 0.750 +scbx007 scaleb 7.50 -2 -> 0.0750 +scbx008 scaleb 7.50 -10 -> 7.50E-10 +scbx009 scaleb -7.50 3 -> -7.50E+3 +scbx010 scaleb -7.50 2 -> -750 +scbx011 scaleb -7.50 1 -> -75.0 +scbx012 scaleb -7.50 0 -> -7.50 +scbx013 scaleb -7.50 -1 -> -0.750 + +-- Infinities +scbx014 scaleb Infinity 1 -> Infinity +scbx015 scaleb -Infinity 2 -> -Infinity +scbx016 scaleb Infinity -1 -> Infinity +scbx017 scaleb -Infinity -2 -> -Infinity + +-- Next two are somewhat undefined in 754r; treat as non-integer +scbx018 scaleb 10 Infinity -> NaN Invalid_operation +scbx019 scaleb 10 -Infinity -> NaN Invalid_operation + +-- NaNs are undefined in 754r; assume usual processing +-- NaNs, 0 payload +scbx021 scaleb NaN 1 -> NaN +scbx022 scaleb -NaN -1 -> -NaN +scbx023 scaleb sNaN 1 -> NaN Invalid_operation +scbx024 scaleb -sNaN 1 -> -NaN Invalid_operation +scbx025 scaleb 4 NaN -> NaN +scbx026 scaleb -Inf -NaN -> -NaN +scbx027 scaleb 4 sNaN -> NaN Invalid_operation +scbx028 scaleb Inf -sNaN -> -NaN Invalid_operation + +-- non-integer RHS +scbx030 scaleb 1.23 1 -> 12.3 +scbx031 scaleb 1.23 1.00 -> NaN Invalid_operation +scbx032 scaleb 1.23 1.1 -> NaN Invalid_operation +scbx033 scaleb 1.23 1.01 -> NaN Invalid_operation +scbx034 scaleb 1.23 0.01 -> NaN Invalid_operation +scbx035 scaleb 1.23 0.11 -> NaN Invalid_operation +scbx036 scaleb 1.23 0.999999999 -> NaN Invalid_operation +scbx037 scaleb 1.23 -1 -> 0.123 +scbx038 scaleb 1.23 -1.00 -> NaN Invalid_operation +scbx039 scaleb 1.23 -1.1 -> NaN Invalid_operation +scbx040 scaleb 1.23 -1.01 -> NaN Invalid_operation +scbx041 scaleb 1.23 -0.01 -> NaN Invalid_operation +scbx042 scaleb 1.23 -0.11 -> NaN Invalid_operation +scbx043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation +scbx044 scaleb 1.23 0.1 -> NaN Invalid_operation +scbx045 scaleb 1.23 1E+1 -> NaN Invalid_operation +scbx046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation +scbx047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation + + +scbx120 scaleb 1.23 2015 -> Infinity Overflow Inexact Rounded +scbx121 scaleb 1.23 2016 -> Infinity Overflow Inexact Rounded +scbx122 scaleb 1.23 2017 -> NaN Invalid_operation +scbx123 scaleb 1.23 2018 -> NaN Invalid_operation +scbx124 scaleb 1.23 -2015 -> 0E-1007 Underflow Subnormal Inexact Rounded Clamped +scbx125 scaleb 1.23 -2016 -> 0E-1007 Underflow Subnormal Inexact Rounded Clamped +scbx126 scaleb 1.23 -2017 -> NaN Invalid_operation +scbx127 scaleb 1.23 -2018 -> NaN Invalid_operation + +-- NaNs, non-0 payload +-- propagating NaNs +scbx861 scaleb NaN01 -Inf -> NaN1 +scbx862 scaleb -NaN02 -1000 -> -NaN2 +scbx863 scaleb NaN03 1000 -> NaN3 +scbx864 scaleb NaN04 Inf -> NaN4 +scbx865 scaleb NaN05 NaN61 -> NaN5 +scbx866 scaleb -Inf -NaN71 -> -NaN71 +scbx867 scaleb -1000 NaN81 -> NaN81 +scbx868 scaleb 1000 NaN91 -> NaN91 +scbx869 scaleb Inf NaN101 -> NaN101 +scbx871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation +scbx872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation +scbx873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation +scbx874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation +scbx875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation +scbx876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation +scbx877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation +scbx878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation +scbx879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation +scbx880 scaleb Inf sNaN231 -> NaN231 Invalid_operation +scbx881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation + +-- finites +scbx051 scaleb 7 -2 -> 0.07 +scbx052 scaleb -7 -2 -> -0.07 +scbx053 scaleb 75 -2 -> 0.75 +scbx054 scaleb -75 -2 -> -0.75 +scbx055 scaleb 7.50 -2 -> 0.0750 +scbx056 scaleb -7.50 -2 -> -0.0750 +scbx057 scaleb 7.500 -2 -> 0.07500 +scbx058 scaleb -7.500 -2 -> -0.07500 +scbx061 scaleb 7 -1 -> 0.7 +scbx062 scaleb -7 -1 -> -0.7 +scbx063 scaleb 75 -1 -> 7.5 +scbx064 scaleb -75 -1 -> -7.5 +scbx065 scaleb 7.50 -1 -> 0.750 +scbx066 scaleb -7.50 -1 -> -0.750 +scbx067 scaleb 7.500 -1 -> 0.7500 +scbx068 scaleb -7.500 -1 -> -0.7500 +scbx071 scaleb 7 0 -> 7 +scbx072 scaleb -7 0 -> -7 +scbx073 scaleb 75 0 -> 75 +scbx074 scaleb -75 0 -> -75 +scbx075 scaleb 7.50 0 -> 7.50 +scbx076 scaleb -7.50 0 -> -7.50 +scbx077 scaleb 7.500 0 -> 7.500 +scbx078 scaleb -7.500 0 -> -7.500 +scbx081 scaleb 7 1 -> 7E+1 +scbx082 scaleb -7 1 -> -7E+1 +scbx083 scaleb 75 1 -> 7.5E+2 +scbx084 scaleb -75 1 -> -7.5E+2 +scbx085 scaleb 7.50 1 -> 75.0 +scbx086 scaleb -7.50 1 -> -75.0 +scbx087 scaleb 7.500 1 -> 75.00 +scbx088 scaleb -7.500 1 -> -75.00 +scbx091 scaleb 7 2 -> 7E+2 +scbx092 scaleb -7 2 -> -7E+2 +scbx093 scaleb 75 2 -> 7.5E+3 +scbx094 scaleb -75 2 -> -7.5E+3 +scbx095 scaleb 7.50 2 -> 750 +scbx096 scaleb -7.50 2 -> -750 +scbx097 scaleb 7.500 2 -> 750.0 +scbx098 scaleb -7.500 2 -> -750.0 + +-- zeros +scbx111 scaleb 0 1 -> 0E+1 +scbx112 scaleb -0 2 -> -0E+2 +scbx113 scaleb 0E+4 3 -> 0E+7 +scbx114 scaleb -0E+4 4 -> -0E+8 +scbx115 scaleb 0.0000 5 -> 0E+1 +scbx116 scaleb -0.0000 6 -> -0E+2 +scbx117 scaleb 0E-141 7 -> 0E-134 +scbx118 scaleb -0E-141 8 -> -0E-133 + +-- Nmax, Nmin, Ntiny +scbx132 scaleb 9.99999999E+999 +999 -> Infinity Overflow Inexact Rounded +scbx133 scaleb 9.99999999E+999 +10 -> Infinity Overflow Inexact Rounded +scbx134 scaleb 9.99999999E+999 +1 -> Infinity Overflow Inexact Rounded +scbx135 scaleb 9.99999999E+999 0 -> 9.99999999E+999 +scbx136 scaleb 9.99999999E+999 -1 -> 9.99999999E+998 +scbx137 scaleb 1E-999 +1 -> 1E-998 +scbx138 scaleb 1E-999 -0 -> 1E-999 +scbx139 scaleb 1E-999 -1 -> 1E-1000 Subnormal +scbx140 scaleb 1.00000000E-999 +1 -> 1.00000000E-998 +scbx141 scaleb 1.00000000E-999 0 -> 1.00000000E-999 +scbx142 scaleb 1.00000000E-999 -1 -> 1.0000000E-1000 Subnormal Rounded +scbx143 scaleb 1E-1007 +1 -> 1E-1006 Subnormal +scbx144 scaleb 1E-1007 -0 -> 1E-1007 Subnormal +scbx145 scaleb 1E-1007 -1 -> 0E-1007 Underflow Subnormal Inexact Rounded Clamped + +scbx150 scaleb -1E-1007 +1 -> -1E-1006 Subnormal +scbx151 scaleb -1E-1007 -0 -> -1E-1007 Subnormal +scbx152 scaleb -1E-1007 -1 -> -0E-1007 Underflow Subnormal Inexact Rounded Clamped +scbx153 scaleb -1.00000000E-999 +1 -> -1.00000000E-998 +scbx154 scaleb -1.00000000E-999 +0 -> -1.00000000E-999 +scbx155 scaleb -1.00000000E-999 -1 -> -1.0000000E-1000 Subnormal Rounded +scbx156 scaleb -1E-999 +1 -> -1E-998 +scbx157 scaleb -1E-999 -0 -> -1E-999 +scbx158 scaleb -1E-999 -1 -> -1E-1000 Subnormal +scbx159 scaleb -9.99999999E+999 +1 -> -Infinity Overflow Inexact Rounded +scbx160 scaleb -9.99999999E+999 +0 -> -9.99999999E+999 +scbx161 scaleb -9.99999999E+999 -1 -> -9.99999999E+998 +scbx162 scaleb -9E+999 +1 -> -Infinity Overflow Inexact Rounded +scbx163 scaleb -1E+999 +1 -> -Infinity Overflow Inexact Rounded + +-- Krah examples +precision: 34 +maxExponent: 999999999 +minExponent: -999999999 +-- integer overflow in 3.61 or earlier +scbx164 scaleb 1E-999999999 -1200000000 -> NaN Invalid_operation +-- out of range +scbx165 scaleb -1E-999999999 +1200000000 -> NaN Invalid_operation diff --git a/Lib/test/decimaltestdata/shift.decTest b/Lib/test/decimaltestdata/shift.decTest index 3fac72f..78838cc 100644 --- a/Lib/test/decimaltestdata/shift.decTest +++ b/Lib/test/decimaltestdata/shift.decTest @@ -1,250 +1,250 @@ ------------------------------------------------------------------------- --- shift.decTest -- shift coefficient left or right -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check -shix001 shift 0 0 -> 0 -shix002 shift 0 2 -> 0 -shix003 shift 1 2 -> 100 -shix004 shift 1 8 -> 100000000 -shix005 shift 1 9 -> 0 -shix006 shift 1 -1 -> 0 -shix007 shift 123456789 -1 -> 12345678 -shix008 shift 123456789 -8 -> 1 -shix009 shift 123456789 -9 -> 0 -shix010 shift 0 -2 -> 0 - --- rhs must be an integer -shix011 shift 1 1.5 -> NaN Invalid_operation -shix012 shift 1 1.0 -> NaN Invalid_operation -shix013 shift 1 0.1 -> NaN Invalid_operation -shix014 shift 1 0.0 -> NaN Invalid_operation -shix015 shift 1 1E+1 -> NaN Invalid_operation -shix016 shift 1 1E+99 -> NaN Invalid_operation -shix017 shift 1 Inf -> NaN Invalid_operation -shix018 shift 1 -Inf -> NaN Invalid_operation --- and |rhs| <= precision -shix020 shift 1 -1000 -> NaN Invalid_operation -shix021 shift 1 -10 -> NaN Invalid_operation -shix022 shift 1 10 -> NaN Invalid_operation -shix023 shift 1 1000 -> NaN Invalid_operation - --- full shifting pattern -shix030 shift 123456789 -9 -> 0 -shix031 shift 123456789 -8 -> 1 -shix032 shift 123456789 -7 -> 12 -shix033 shift 123456789 -6 -> 123 -shix034 shift 123456789 -5 -> 1234 -shix035 shift 123456789 -4 -> 12345 -shix036 shift 123456789 -3 -> 123456 -shix037 shift 123456789 -2 -> 1234567 -shix038 shift 123456789 -1 -> 12345678 -shix039 shift 123456789 -0 -> 123456789 -shix040 shift 123456789 +0 -> 123456789 -shix041 shift 123456789 +1 -> 234567890 -shix042 shift 123456789 +2 -> 345678900 -shix043 shift 123456789 +3 -> 456789000 -shix044 shift 123456789 +4 -> 567890000 -shix045 shift 123456789 +5 -> 678900000 -shix046 shift 123456789 +6 -> 789000000 -shix047 shift 123456789 +7 -> 890000000 -shix048 shift 123456789 +8 -> 900000000 -shix049 shift 123456789 +9 -> 0 - --- from examples -shix051 shift 34 8 -> '400000000' -shix052 shift 12 9 -> '0' -shix053 shift 123456789 -2 -> '1234567' -shix054 shift 123456789 0 -> '123456789' -shix055 shift 123456789 +2 -> '345678900' - --- zeros -shix060 shift 0E-10 +9 -> 0E-10 -shix061 shift 0E-10 -9 -> 0E-10 -shix062 shift 0.000 +9 -> 0.000 -shix063 shift 0.000 -9 -> 0.000 -shix064 shift 0E+10 +9 -> 0E+10 -shix065 shift 0E+10 -9 -> 0E+10 -shix066 shift -0E-10 +9 -> -0E-10 -shix067 shift -0E-10 -9 -> -0E-10 -shix068 shift -0.000 +9 -> -0.000 -shix069 shift -0.000 -9 -> -0.000 -shix070 shift -0E+10 +9 -> -0E+10 -shix071 shift -0E+10 -9 -> -0E+10 - --- Nmax, Nmin, Ntiny -shix141 shift 9.99999999E+999 -1 -> 9.9999999E+998 -shix142 shift 9.99999999E+999 -8 -> 9E+991 -shix143 shift 9.99999999E+999 1 -> 9.99999990E+999 -shix144 shift 9.99999999E+999 8 -> 9.00000000E+999 -shix145 shift 1E-999 -1 -> 0E-999 -shix146 shift 1E-999 -8 -> 0E-999 -shix147 shift 1E-999 1 -> 1.0E-998 -shix148 shift 1E-999 8 -> 1.00000000E-991 -shix151 shift 1.00000000E-999 -1 -> 1.0000000E-1000 -shix152 shift 1.00000000E-999 -8 -> 1E-1007 -shix153 shift 1.00000000E-999 1 -> 0E-1007 -shix154 shift 1.00000000E-999 8 -> 0E-1007 -shix155 shift 9.00000000E-999 -1 -> 9.0000000E-1000 -shix156 shift 9.00000000E-999 -8 -> 9E-1007 -shix157 shift 9.00000000E-999 1 -> 0E-1007 -shix158 shift 9.00000000E-999 8 -> 0E-1007 -shix160 shift 1E-1007 -1 -> 0E-1007 -shix161 shift 1E-1007 -8 -> 0E-1007 -shix162 shift 1E-1007 1 -> 1.0E-1006 -shix163 shift 1E-1007 8 -> 1.00000000E-999 --- negatives -shix171 shift -9.99999999E+999 -1 -> -9.9999999E+998 -shix172 shift -9.99999999E+999 -8 -> -9E+991 -shix173 shift -9.99999999E+999 1 -> -9.99999990E+999 -shix174 shift -9.99999999E+999 8 -> -9.00000000E+999 -shix175 shift -1E-999 -1 -> -0E-999 -shix176 shift -1E-999 -8 -> -0E-999 -shix177 shift -1E-999 1 -> -1.0E-998 -shix178 shift -1E-999 8 -> -1.00000000E-991 -shix181 shift -1.00000000E-999 -1 -> -1.0000000E-1000 -shix182 shift -1.00000000E-999 -8 -> -1E-1007 -shix183 shift -1.00000000E-999 1 -> -0E-1007 -shix184 shift -1.00000000E-999 8 -> -0E-1007 -shix185 shift -9.00000000E-999 -1 -> -9.0000000E-1000 -shix186 shift -9.00000000E-999 -8 -> -9E-1007 -shix187 shift -9.00000000E-999 1 -> -0E-1007 -shix188 shift -9.00000000E-999 8 -> -0E-1007 -shix190 shift -1E-1007 -1 -> -0E-1007 -shix191 shift -1E-1007 -8 -> -0E-1007 -shix192 shift -1E-1007 1 -> -1.0E-1006 -shix193 shift -1E-1007 8 -> -1.00000000E-999 - --- more negatives (of sanities) -shix201 shift -0 0 -> -0 -shix202 shift -0 2 -> -0 -shix203 shift -1 2 -> -100 -shix204 shift -1 8 -> -100000000 -shix205 shift -1 9 -> -0 -shix206 shift -1 -1 -> -0 -shix207 shift -123456789 -1 -> -12345678 -shix208 shift -123456789 -8 -> -1 -shix209 shift -123456789 -9 -> -0 -shix210 shift -0 -2 -> -0 -shix211 shift -0 -0 -> -0 - - --- Specials; NaNs are handled as usual -shix781 shift -Inf -8 -> -Infinity -shix782 shift -Inf -1 -> -Infinity -shix783 shift -Inf -0 -> -Infinity -shix784 shift -Inf 0 -> -Infinity -shix785 shift -Inf 1 -> -Infinity -shix786 shift -Inf 8 -> -Infinity -shix787 shift -1000 -Inf -> NaN Invalid_operation -shix788 shift -Inf -Inf -> NaN Invalid_operation -shix789 shift -1 -Inf -> NaN Invalid_operation -shix790 shift -0 -Inf -> NaN Invalid_operation -shix791 shift 0 -Inf -> NaN Invalid_operation -shix792 shift 1 -Inf -> NaN Invalid_operation -shix793 shift 1000 -Inf -> NaN Invalid_operation -shix794 shift Inf -Inf -> NaN Invalid_operation - -shix800 shift Inf -Inf -> NaN Invalid_operation -shix801 shift Inf -8 -> Infinity -shix802 shift Inf -1 -> Infinity -shix803 shift Inf -0 -> Infinity -shix804 shift Inf 0 -> Infinity -shix805 shift Inf 1 -> Infinity -shix806 shift Inf 8 -> Infinity -shix807 shift Inf Inf -> NaN Invalid_operation -shix808 shift -1000 Inf -> NaN Invalid_operation -shix809 shift -Inf Inf -> NaN Invalid_operation -shix810 shift -1 Inf -> NaN Invalid_operation -shix811 shift -0 Inf -> NaN Invalid_operation -shix812 shift 0 Inf -> NaN Invalid_operation -shix813 shift 1 Inf -> NaN Invalid_operation -shix814 shift 1000 Inf -> NaN Invalid_operation -shix815 shift Inf Inf -> NaN Invalid_operation - -shix821 shift NaN -Inf -> NaN -shix822 shift NaN -1000 -> NaN -shix823 shift NaN -1 -> NaN -shix824 shift NaN -0 -> NaN -shix825 shift NaN 0 -> NaN -shix826 shift NaN 1 -> NaN -shix827 shift NaN 1000 -> NaN -shix828 shift NaN Inf -> NaN -shix829 shift NaN NaN -> NaN -shix830 shift -Inf NaN -> NaN -shix831 shift -1000 NaN -> NaN -shix832 shift -1 NaN -> NaN -shix833 shift -0 NaN -> NaN -shix834 shift 0 NaN -> NaN -shix835 shift 1 NaN -> NaN -shix836 shift 1000 NaN -> NaN -shix837 shift Inf NaN -> NaN - -shix841 shift sNaN -Inf -> NaN Invalid_operation -shix842 shift sNaN -1000 -> NaN Invalid_operation -shix843 shift sNaN -1 -> NaN Invalid_operation -shix844 shift sNaN -0 -> NaN Invalid_operation -shix845 shift sNaN 0 -> NaN Invalid_operation -shix846 shift sNaN 1 -> NaN Invalid_operation -shix847 shift sNaN 1000 -> NaN Invalid_operation -shix848 shift sNaN NaN -> NaN Invalid_operation -shix849 shift sNaN sNaN -> NaN Invalid_operation -shix850 shift NaN sNaN -> NaN Invalid_operation -shix851 shift -Inf sNaN -> NaN Invalid_operation -shix852 shift -1000 sNaN -> NaN Invalid_operation -shix853 shift -1 sNaN -> NaN Invalid_operation -shix854 shift -0 sNaN -> NaN Invalid_operation -shix855 shift 0 sNaN -> NaN Invalid_operation -shix856 shift 1 sNaN -> NaN Invalid_operation -shix857 shift 1000 sNaN -> NaN Invalid_operation -shix858 shift Inf sNaN -> NaN Invalid_operation -shix859 shift NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -shix861 shift NaN1 -Inf -> NaN1 -shix862 shift +NaN2 -1000 -> NaN2 -shix863 shift NaN3 1000 -> NaN3 -shix864 shift NaN4 Inf -> NaN4 -shix865 shift NaN5 +NaN6 -> NaN5 -shix866 shift -Inf NaN7 -> NaN7 -shix867 shift -1000 NaN8 -> NaN8 -shix868 shift 1000 NaN9 -> NaN9 -shix869 shift Inf +NaN10 -> NaN10 -shix871 shift sNaN11 -Inf -> NaN11 Invalid_operation -shix872 shift sNaN12 -1000 -> NaN12 Invalid_operation -shix873 shift sNaN13 1000 -> NaN13 Invalid_operation -shix874 shift sNaN14 NaN17 -> NaN14 Invalid_operation -shix875 shift sNaN15 sNaN18 -> NaN15 Invalid_operation -shix876 shift NaN16 sNaN19 -> NaN19 Invalid_operation -shix877 shift -Inf +sNaN20 -> NaN20 Invalid_operation -shix878 shift -1000 sNaN21 -> NaN21 Invalid_operation -shix879 shift 1000 sNaN22 -> NaN22 Invalid_operation -shix880 shift Inf sNaN23 -> NaN23 Invalid_operation -shix881 shift +NaN25 +sNaN24 -> NaN24 Invalid_operation -shix882 shift -NaN26 NaN28 -> -NaN26 -shix883 shift -sNaN27 sNaN29 -> -NaN27 Invalid_operation -shix884 shift 1000 -NaN30 -> -NaN30 -shix885 shift 1000 -sNaN31 -> -NaN31 Invalid_operation +------------------------------------------------------------------------ +-- shift.decTest -- shift coefficient left or right -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check +shix001 shift 0 0 -> 0 +shix002 shift 0 2 -> 0 +shix003 shift 1 2 -> 100 +shix004 shift 1 8 -> 100000000 +shix005 shift 1 9 -> 0 +shix006 shift 1 -1 -> 0 +shix007 shift 123456789 -1 -> 12345678 +shix008 shift 123456789 -8 -> 1 +shix009 shift 123456789 -9 -> 0 +shix010 shift 0 -2 -> 0 + +-- rhs must be an integer +shix011 shift 1 1.5 -> NaN Invalid_operation +shix012 shift 1 1.0 -> NaN Invalid_operation +shix013 shift 1 0.1 -> NaN Invalid_operation +shix014 shift 1 0.0 -> NaN Invalid_operation +shix015 shift 1 1E+1 -> NaN Invalid_operation +shix016 shift 1 1E+99 -> NaN Invalid_operation +shix017 shift 1 Inf -> NaN Invalid_operation +shix018 shift 1 -Inf -> NaN Invalid_operation +-- and |rhs| <= precision +shix020 shift 1 -1000 -> NaN Invalid_operation +shix021 shift 1 -10 -> NaN Invalid_operation +shix022 shift 1 10 -> NaN Invalid_operation +shix023 shift 1 1000 -> NaN Invalid_operation + +-- full shifting pattern +shix030 shift 123456789 -9 -> 0 +shix031 shift 123456789 -8 -> 1 +shix032 shift 123456789 -7 -> 12 +shix033 shift 123456789 -6 -> 123 +shix034 shift 123456789 -5 -> 1234 +shix035 shift 123456789 -4 -> 12345 +shix036 shift 123456789 -3 -> 123456 +shix037 shift 123456789 -2 -> 1234567 +shix038 shift 123456789 -1 -> 12345678 +shix039 shift 123456789 -0 -> 123456789 +shix040 shift 123456789 +0 -> 123456789 +shix041 shift 123456789 +1 -> 234567890 +shix042 shift 123456789 +2 -> 345678900 +shix043 shift 123456789 +3 -> 456789000 +shix044 shift 123456789 +4 -> 567890000 +shix045 shift 123456789 +5 -> 678900000 +shix046 shift 123456789 +6 -> 789000000 +shix047 shift 123456789 +7 -> 890000000 +shix048 shift 123456789 +8 -> 900000000 +shix049 shift 123456789 +9 -> 0 + +-- from examples +shix051 shift 34 8 -> '400000000' +shix052 shift 12 9 -> '0' +shix053 shift 123456789 -2 -> '1234567' +shix054 shift 123456789 0 -> '123456789' +shix055 shift 123456789 +2 -> '345678900' + +-- zeros +shix060 shift 0E-10 +9 -> 0E-10 +shix061 shift 0E-10 -9 -> 0E-10 +shix062 shift 0.000 +9 -> 0.000 +shix063 shift 0.000 -9 -> 0.000 +shix064 shift 0E+10 +9 -> 0E+10 +shix065 shift 0E+10 -9 -> 0E+10 +shix066 shift -0E-10 +9 -> -0E-10 +shix067 shift -0E-10 -9 -> -0E-10 +shix068 shift -0.000 +9 -> -0.000 +shix069 shift -0.000 -9 -> -0.000 +shix070 shift -0E+10 +9 -> -0E+10 +shix071 shift -0E+10 -9 -> -0E+10 + +-- Nmax, Nmin, Ntiny +shix141 shift 9.99999999E+999 -1 -> 9.9999999E+998 +shix142 shift 9.99999999E+999 -8 -> 9E+991 +shix143 shift 9.99999999E+999 1 -> 9.99999990E+999 +shix144 shift 9.99999999E+999 8 -> 9.00000000E+999 +shix145 shift 1E-999 -1 -> 0E-999 +shix146 shift 1E-999 -8 -> 0E-999 +shix147 shift 1E-999 1 -> 1.0E-998 +shix148 shift 1E-999 8 -> 1.00000000E-991 +shix151 shift 1.00000000E-999 -1 -> 1.0000000E-1000 +shix152 shift 1.00000000E-999 -8 -> 1E-1007 +shix153 shift 1.00000000E-999 1 -> 0E-1007 +shix154 shift 1.00000000E-999 8 -> 0E-1007 +shix155 shift 9.00000000E-999 -1 -> 9.0000000E-1000 +shix156 shift 9.00000000E-999 -8 -> 9E-1007 +shix157 shift 9.00000000E-999 1 -> 0E-1007 +shix158 shift 9.00000000E-999 8 -> 0E-1007 +shix160 shift 1E-1007 -1 -> 0E-1007 +shix161 shift 1E-1007 -8 -> 0E-1007 +shix162 shift 1E-1007 1 -> 1.0E-1006 +shix163 shift 1E-1007 8 -> 1.00000000E-999 +-- negatives +shix171 shift -9.99999999E+999 -1 -> -9.9999999E+998 +shix172 shift -9.99999999E+999 -8 -> -9E+991 +shix173 shift -9.99999999E+999 1 -> -9.99999990E+999 +shix174 shift -9.99999999E+999 8 -> -9.00000000E+999 +shix175 shift -1E-999 -1 -> -0E-999 +shix176 shift -1E-999 -8 -> -0E-999 +shix177 shift -1E-999 1 -> -1.0E-998 +shix178 shift -1E-999 8 -> -1.00000000E-991 +shix181 shift -1.00000000E-999 -1 -> -1.0000000E-1000 +shix182 shift -1.00000000E-999 -8 -> -1E-1007 +shix183 shift -1.00000000E-999 1 -> -0E-1007 +shix184 shift -1.00000000E-999 8 -> -0E-1007 +shix185 shift -9.00000000E-999 -1 -> -9.0000000E-1000 +shix186 shift -9.00000000E-999 -8 -> -9E-1007 +shix187 shift -9.00000000E-999 1 -> -0E-1007 +shix188 shift -9.00000000E-999 8 -> -0E-1007 +shix190 shift -1E-1007 -1 -> -0E-1007 +shix191 shift -1E-1007 -8 -> -0E-1007 +shix192 shift -1E-1007 1 -> -1.0E-1006 +shix193 shift -1E-1007 8 -> -1.00000000E-999 + +-- more negatives (of sanities) +shix201 shift -0 0 -> -0 +shix202 shift -0 2 -> -0 +shix203 shift -1 2 -> -100 +shix204 shift -1 8 -> -100000000 +shix205 shift -1 9 -> -0 +shix206 shift -1 -1 -> -0 +shix207 shift -123456789 -1 -> -12345678 +shix208 shift -123456789 -8 -> -1 +shix209 shift -123456789 -9 -> -0 +shix210 shift -0 -2 -> -0 +shix211 shift -0 -0 -> -0 + + +-- Specials; NaNs are handled as usual +shix781 shift -Inf -8 -> -Infinity +shix782 shift -Inf -1 -> -Infinity +shix783 shift -Inf -0 -> -Infinity +shix784 shift -Inf 0 -> -Infinity +shix785 shift -Inf 1 -> -Infinity +shix786 shift -Inf 8 -> -Infinity +shix787 shift -1000 -Inf -> NaN Invalid_operation +shix788 shift -Inf -Inf -> NaN Invalid_operation +shix789 shift -1 -Inf -> NaN Invalid_operation +shix790 shift -0 -Inf -> NaN Invalid_operation +shix791 shift 0 -Inf -> NaN Invalid_operation +shix792 shift 1 -Inf -> NaN Invalid_operation +shix793 shift 1000 -Inf -> NaN Invalid_operation +shix794 shift Inf -Inf -> NaN Invalid_operation + +shix800 shift Inf -Inf -> NaN Invalid_operation +shix801 shift Inf -8 -> Infinity +shix802 shift Inf -1 -> Infinity +shix803 shift Inf -0 -> Infinity +shix804 shift Inf 0 -> Infinity +shix805 shift Inf 1 -> Infinity +shix806 shift Inf 8 -> Infinity +shix807 shift Inf Inf -> NaN Invalid_operation +shix808 shift -1000 Inf -> NaN Invalid_operation +shix809 shift -Inf Inf -> NaN Invalid_operation +shix810 shift -1 Inf -> NaN Invalid_operation +shix811 shift -0 Inf -> NaN Invalid_operation +shix812 shift 0 Inf -> NaN Invalid_operation +shix813 shift 1 Inf -> NaN Invalid_operation +shix814 shift 1000 Inf -> NaN Invalid_operation +shix815 shift Inf Inf -> NaN Invalid_operation + +shix821 shift NaN -Inf -> NaN +shix822 shift NaN -1000 -> NaN +shix823 shift NaN -1 -> NaN +shix824 shift NaN -0 -> NaN +shix825 shift NaN 0 -> NaN +shix826 shift NaN 1 -> NaN +shix827 shift NaN 1000 -> NaN +shix828 shift NaN Inf -> NaN +shix829 shift NaN NaN -> NaN +shix830 shift -Inf NaN -> NaN +shix831 shift -1000 NaN -> NaN +shix832 shift -1 NaN -> NaN +shix833 shift -0 NaN -> NaN +shix834 shift 0 NaN -> NaN +shix835 shift 1 NaN -> NaN +shix836 shift 1000 NaN -> NaN +shix837 shift Inf NaN -> NaN + +shix841 shift sNaN -Inf -> NaN Invalid_operation +shix842 shift sNaN -1000 -> NaN Invalid_operation +shix843 shift sNaN -1 -> NaN Invalid_operation +shix844 shift sNaN -0 -> NaN Invalid_operation +shix845 shift sNaN 0 -> NaN Invalid_operation +shix846 shift sNaN 1 -> NaN Invalid_operation +shix847 shift sNaN 1000 -> NaN Invalid_operation +shix848 shift sNaN NaN -> NaN Invalid_operation +shix849 shift sNaN sNaN -> NaN Invalid_operation +shix850 shift NaN sNaN -> NaN Invalid_operation +shix851 shift -Inf sNaN -> NaN Invalid_operation +shix852 shift -1000 sNaN -> NaN Invalid_operation +shix853 shift -1 sNaN -> NaN Invalid_operation +shix854 shift -0 sNaN -> NaN Invalid_operation +shix855 shift 0 sNaN -> NaN Invalid_operation +shix856 shift 1 sNaN -> NaN Invalid_operation +shix857 shift 1000 sNaN -> NaN Invalid_operation +shix858 shift Inf sNaN -> NaN Invalid_operation +shix859 shift NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +shix861 shift NaN1 -Inf -> NaN1 +shix862 shift +NaN2 -1000 -> NaN2 +shix863 shift NaN3 1000 -> NaN3 +shix864 shift NaN4 Inf -> NaN4 +shix865 shift NaN5 +NaN6 -> NaN5 +shix866 shift -Inf NaN7 -> NaN7 +shix867 shift -1000 NaN8 -> NaN8 +shix868 shift 1000 NaN9 -> NaN9 +shix869 shift Inf +NaN10 -> NaN10 +shix871 shift sNaN11 -Inf -> NaN11 Invalid_operation +shix872 shift sNaN12 -1000 -> NaN12 Invalid_operation +shix873 shift sNaN13 1000 -> NaN13 Invalid_operation +shix874 shift sNaN14 NaN17 -> NaN14 Invalid_operation +shix875 shift sNaN15 sNaN18 -> NaN15 Invalid_operation +shix876 shift NaN16 sNaN19 -> NaN19 Invalid_operation +shix877 shift -Inf +sNaN20 -> NaN20 Invalid_operation +shix878 shift -1000 sNaN21 -> NaN21 Invalid_operation +shix879 shift 1000 sNaN22 -> NaN22 Invalid_operation +shix880 shift Inf sNaN23 -> NaN23 Invalid_operation +shix881 shift +NaN25 +sNaN24 -> NaN24 Invalid_operation +shix882 shift -NaN26 NaN28 -> -NaN26 +shix883 shift -sNaN27 sNaN29 -> -NaN27 Invalid_operation +shix884 shift 1000 -NaN30 -> -NaN30 +shix885 shift 1000 -sNaN31 -> -NaN31 Invalid_operation diff --git a/Lib/test/decimaltestdata/tointegralx.decTest b/Lib/test/decimaltestdata/tointegralx.decTest index 0ce0d09..e250e3a 100644 --- a/Lib/test/decimaltestdata/tointegralx.decTest +++ b/Lib/test/decimaltestdata/tointegralx.decTest @@ -1,255 +1,255 @@ ------------------------------------------------------------------------- --- tointegralx.decTest -- round decimal to integral value, exact -- --- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - --- This set of tests tests the extended specification 'round-to-integral --- value' operation (from IEEE 854, later modified in 754r). --- All non-zero results are defined as being those from either copy or --- quantize, so those are assumed to have been tested. - --- This tests toIntegraExact, which may set Inexact - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - -intxx001 tointegralx 0 -> 0 -intxx002 tointegralx 0.0 -> 0 -intxx003 tointegralx 0.1 -> 0 Inexact Rounded -intxx004 tointegralx 0.2 -> 0 Inexact Rounded -intxx005 tointegralx 0.3 -> 0 Inexact Rounded -intxx006 tointegralx 0.4 -> 0 Inexact Rounded -intxx007 tointegralx 0.5 -> 1 Inexact Rounded -intxx008 tointegralx 0.6 -> 1 Inexact Rounded -intxx009 tointegralx 0.7 -> 1 Inexact Rounded -intxx010 tointegralx 0.8 -> 1 Inexact Rounded -intxx011 tointegralx 0.9 -> 1 Inexact Rounded -intxx012 tointegralx 1 -> 1 -intxx013 tointegralx 1.0 -> 1 Rounded -intxx014 tointegralx 1.1 -> 1 Inexact Rounded -intxx015 tointegralx 1.2 -> 1 Inexact Rounded -intxx016 tointegralx 1.3 -> 1 Inexact Rounded -intxx017 tointegralx 1.4 -> 1 Inexact Rounded -intxx018 tointegralx 1.5 -> 2 Inexact Rounded -intxx019 tointegralx 1.6 -> 2 Inexact Rounded -intxx020 tointegralx 1.7 -> 2 Inexact Rounded -intxx021 tointegralx 1.8 -> 2 Inexact Rounded -intxx022 tointegralx 1.9 -> 2 Inexact Rounded --- negatives -intxx031 tointegralx -0 -> -0 -intxx032 tointegralx -0.0 -> -0 -intxx033 tointegralx -0.1 -> -0 Inexact Rounded -intxx034 tointegralx -0.2 -> -0 Inexact Rounded -intxx035 tointegralx -0.3 -> -0 Inexact Rounded -intxx036 tointegralx -0.4 -> -0 Inexact Rounded -intxx037 tointegralx -0.5 -> -1 Inexact Rounded -intxx038 tointegralx -0.6 -> -1 Inexact Rounded -intxx039 tointegralx -0.7 -> -1 Inexact Rounded -intxx040 tointegralx -0.8 -> -1 Inexact Rounded -intxx041 tointegralx -0.9 -> -1 Inexact Rounded -intxx042 tointegralx -1 -> -1 -intxx043 tointegralx -1.0 -> -1 Rounded -intxx044 tointegralx -1.1 -> -1 Inexact Rounded -intxx045 tointegralx -1.2 -> -1 Inexact Rounded -intxx046 tointegralx -1.3 -> -1 Inexact Rounded -intxx047 tointegralx -1.4 -> -1 Inexact Rounded -intxx048 tointegralx -1.5 -> -2 Inexact Rounded -intxx049 tointegralx -1.6 -> -2 Inexact Rounded -intxx050 tointegralx -1.7 -> -2 Inexact Rounded -intxx051 tointegralx -1.8 -> -2 Inexact Rounded -intxx052 tointegralx -1.9 -> -2 Inexact Rounded --- next two would be NaN using quantize(x, 0) -intxx053 tointegralx 10E+30 -> 1.0E+31 -intxx054 tointegralx -10E+30 -> -1.0E+31 - --- numbers around precision -precision: 9 -intxx060 tointegralx '56267E-10' -> '0' Inexact Rounded -intxx061 tointegralx '56267E-5' -> '1' Inexact Rounded -intxx062 tointegralx '56267E-2' -> '563' Inexact Rounded -intxx063 tointegralx '56267E-1' -> '5627' Inexact Rounded -intxx065 tointegralx '56267E-0' -> '56267' -intxx066 tointegralx '56267E+0' -> '56267' -intxx067 tointegralx '56267E+1' -> '5.6267E+5' -intxx068 tointegralx '56267E+2' -> '5.6267E+6' -intxx069 tointegralx '56267E+3' -> '5.6267E+7' -intxx070 tointegralx '56267E+4' -> '5.6267E+8' -intxx071 tointegralx '56267E+5' -> '5.6267E+9' -intxx072 tointegralx '56267E+6' -> '5.6267E+10' -intxx073 tointegralx '1.23E+96' -> '1.23E+96' -intxx074 tointegralx '1.23E+384' -> '1.23E+384' -intxx075 tointegralx '1.23E+999' -> '1.23E+999' - -intxx080 tointegralx '-56267E-10' -> '-0' Inexact Rounded -intxx081 tointegralx '-56267E-5' -> '-1' Inexact Rounded -intxx082 tointegralx '-56267E-2' -> '-563' Inexact Rounded -intxx083 tointegralx '-56267E-1' -> '-5627' Inexact Rounded -intxx085 tointegralx '-56267E-0' -> '-56267' -intxx086 tointegralx '-56267E+0' -> '-56267' -intxx087 tointegralx '-56267E+1' -> '-5.6267E+5' -intxx088 tointegralx '-56267E+2' -> '-5.6267E+6' -intxx089 tointegralx '-56267E+3' -> '-5.6267E+7' -intxx090 tointegralx '-56267E+4' -> '-5.6267E+8' -intxx091 tointegralx '-56267E+5' -> '-5.6267E+9' -intxx092 tointegralx '-56267E+6' -> '-5.6267E+10' -intxx093 tointegralx '-1.23E+96' -> '-1.23E+96' -intxx094 tointegralx '-1.23E+384' -> '-1.23E+384' -intxx095 tointegralx '-1.23E+999' -> '-1.23E+999' - --- subnormal inputs -intxx100 tointegralx 1E-999 -> 0 Inexact Rounded -intxx101 tointegralx 0.1E-999 -> 0 Inexact Rounded -intxx102 tointegralx 0.01E-999 -> 0 Inexact Rounded -intxx103 tointegralx 0E-999 -> 0 - --- specials and zeros -intxx120 tointegralx 'Inf' -> Infinity -intxx121 tointegralx '-Inf' -> -Infinity -intxx122 tointegralx NaN -> NaN -intxx123 tointegralx sNaN -> NaN Invalid_operation -intxx124 tointegralx 0 -> 0 -intxx125 tointegralx -0 -> -0 -intxx126 tointegralx 0.000 -> 0 -intxx127 tointegralx 0.00 -> 0 -intxx128 tointegralx 0.0 -> 0 -intxx129 tointegralx 0 -> 0 -intxx130 tointegralx 0E-3 -> 0 -intxx131 tointegralx 0E-2 -> 0 -intxx132 tointegralx 0E-1 -> 0 -intxx133 tointegralx 0E-0 -> 0 -intxx134 tointegralx 0E+1 -> 0E+1 -intxx135 tointegralx 0E+2 -> 0E+2 -intxx136 tointegralx 0E+3 -> 0E+3 -intxx137 tointegralx 0E+4 -> 0E+4 -intxx138 tointegralx 0E+5 -> 0E+5 -intxx139 tointegralx -0.000 -> -0 -intxx140 tointegralx -0.00 -> -0 -intxx141 tointegralx -0.0 -> -0 -intxx142 tointegralx -0 -> -0 -intxx143 tointegralx -0E-3 -> -0 -intxx144 tointegralx -0E-2 -> -0 -intxx145 tointegralx -0E-1 -> -0 -intxx146 tointegralx -0E-0 -> -0 -intxx147 tointegralx -0E+1 -> -0E+1 -intxx148 tointegralx -0E+2 -> -0E+2 -intxx149 tointegralx -0E+3 -> -0E+3 -intxx150 tointegralx -0E+4 -> -0E+4 -intxx151 tointegralx -0E+5 -> -0E+5 --- propagating NaNs -intxx152 tointegralx NaN808 -> NaN808 -intxx153 tointegralx sNaN080 -> NaN80 Invalid_operation -intxx154 tointegralx -NaN808 -> -NaN808 -intxx155 tointegralx -sNaN080 -> -NaN80 Invalid_operation -intxx156 tointegralx -NaN -> -NaN -intxx157 tointegralx -sNaN -> -NaN Invalid_operation - --- examples -rounding: half_up -precision: 9 -intxx200 tointegralx 2.1 -> 2 Inexact Rounded -intxx201 tointegralx 100 -> 100 -intxx202 tointegralx 100.0 -> 100 Rounded -intxx203 tointegralx 101.5 -> 102 Inexact Rounded -intxx204 tointegralx -101.5 -> -102 Inexact Rounded -intxx205 tointegralx 10E+5 -> 1.0E+6 -intxx206 tointegralx 7.89E+77 -> 7.89E+77 -intxx207 tointegralx -Inf -> -Infinity - - --- all rounding modes -rounding: half_even - -intxx210 tointegralx 55.5 -> 56 Inexact Rounded -intxx211 tointegralx 56.5 -> 56 Inexact Rounded -intxx212 tointegralx 57.5 -> 58 Inexact Rounded -intxx213 tointegralx -55.5 -> -56 Inexact Rounded -intxx214 tointegralx -56.5 -> -56 Inexact Rounded -intxx215 tointegralx -57.5 -> -58 Inexact Rounded - -rounding: half_up - -intxx220 tointegralx 55.5 -> 56 Inexact Rounded -intxx221 tointegralx 56.5 -> 57 Inexact Rounded -intxx222 tointegralx 57.5 -> 58 Inexact Rounded -intxx223 tointegralx -55.5 -> -56 Inexact Rounded -intxx224 tointegralx -56.5 -> -57 Inexact Rounded -intxx225 tointegralx -57.5 -> -58 Inexact Rounded - -rounding: half_down - -intxx230 tointegralx 55.5 -> 55 Inexact Rounded -intxx231 tointegralx 56.5 -> 56 Inexact Rounded -intxx232 tointegralx 57.5 -> 57 Inexact Rounded -intxx233 tointegralx -55.5 -> -55 Inexact Rounded -intxx234 tointegralx -56.5 -> -56 Inexact Rounded -intxx235 tointegralx -57.5 -> -57 Inexact Rounded - -rounding: up - -intxx240 tointegralx 55.3 -> 56 Inexact Rounded -intxx241 tointegralx 56.3 -> 57 Inexact Rounded -intxx242 tointegralx 57.3 -> 58 Inexact Rounded -intxx243 tointegralx -55.3 -> -56 Inexact Rounded -intxx244 tointegralx -56.3 -> -57 Inexact Rounded -intxx245 tointegralx -57.3 -> -58 Inexact Rounded - -rounding: down - -intxx250 tointegralx 55.7 -> 55 Inexact Rounded -intxx251 tointegralx 56.7 -> 56 Inexact Rounded -intxx252 tointegralx 57.7 -> 57 Inexact Rounded -intxx253 tointegralx -55.7 -> -55 Inexact Rounded -intxx254 tointegralx -56.7 -> -56 Inexact Rounded -intxx255 tointegralx -57.7 -> -57 Inexact Rounded - -rounding: ceiling - -intxx260 tointegralx 55.3 -> 56 Inexact Rounded -intxx261 tointegralx 56.3 -> 57 Inexact Rounded -intxx262 tointegralx 57.3 -> 58 Inexact Rounded -intxx263 tointegralx -55.3 -> -55 Inexact Rounded -intxx264 tointegralx -56.3 -> -56 Inexact Rounded -intxx265 tointegralx -57.3 -> -57 Inexact Rounded - -rounding: floor - -intxx270 tointegralx 55.7 -> 55 Inexact Rounded -intxx271 tointegralx 56.7 -> 56 Inexact Rounded -intxx272 tointegralx 57.7 -> 57 Inexact Rounded -intxx273 tointegralx -55.7 -> -56 Inexact Rounded -intxx274 tointegralx -56.7 -> -57 Inexact Rounded -intxx275 tointegralx -57.7 -> -58 Inexact Rounded - --- Int and uInt32 edge values for testing conversions -precision: 16 -intxx300 tointegralx -2147483646 -> -2147483646 -intxx301 tointegralx -2147483647 -> -2147483647 -intxx302 tointegralx -2147483648 -> -2147483648 -intxx303 tointegralx -2147483649 -> -2147483649 -intxx304 tointegralx 2147483646 -> 2147483646 -intxx305 tointegralx 2147483647 -> 2147483647 -intxx306 tointegralx 2147483648 -> 2147483648 -intxx307 tointegralx 2147483649 -> 2147483649 -intxx308 tointegralx 4294967294 -> 4294967294 -intxx309 tointegralx 4294967295 -> 4294967295 -intxx310 tointegralx 4294967296 -> 4294967296 -intxx311 tointegralx 4294967297 -> 4294967297 +------------------------------------------------------------------------ +-- tointegralx.decTest -- round decimal to integral value, exact -- +-- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +-- This set of tests tests the extended specification 'round-to-integral +-- value' operation (from IEEE 854, later modified in 754r). +-- All non-zero results are defined as being those from either copy or +-- quantize, so those are assumed to have been tested. + +-- This tests toIntegraExact, which may set Inexact + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +intxx001 tointegralx 0 -> 0 +intxx002 tointegralx 0.0 -> 0 +intxx003 tointegralx 0.1 -> 0 Inexact Rounded +intxx004 tointegralx 0.2 -> 0 Inexact Rounded +intxx005 tointegralx 0.3 -> 0 Inexact Rounded +intxx006 tointegralx 0.4 -> 0 Inexact Rounded +intxx007 tointegralx 0.5 -> 1 Inexact Rounded +intxx008 tointegralx 0.6 -> 1 Inexact Rounded +intxx009 tointegralx 0.7 -> 1 Inexact Rounded +intxx010 tointegralx 0.8 -> 1 Inexact Rounded +intxx011 tointegralx 0.9 -> 1 Inexact Rounded +intxx012 tointegralx 1 -> 1 +intxx013 tointegralx 1.0 -> 1 Rounded +intxx014 tointegralx 1.1 -> 1 Inexact Rounded +intxx015 tointegralx 1.2 -> 1 Inexact Rounded +intxx016 tointegralx 1.3 -> 1 Inexact Rounded +intxx017 tointegralx 1.4 -> 1 Inexact Rounded +intxx018 tointegralx 1.5 -> 2 Inexact Rounded +intxx019 tointegralx 1.6 -> 2 Inexact Rounded +intxx020 tointegralx 1.7 -> 2 Inexact Rounded +intxx021 tointegralx 1.8 -> 2 Inexact Rounded +intxx022 tointegralx 1.9 -> 2 Inexact Rounded +-- negatives +intxx031 tointegralx -0 -> -0 +intxx032 tointegralx -0.0 -> -0 +intxx033 tointegralx -0.1 -> -0 Inexact Rounded +intxx034 tointegralx -0.2 -> -0 Inexact Rounded +intxx035 tointegralx -0.3 -> -0 Inexact Rounded +intxx036 tointegralx -0.4 -> -0 Inexact Rounded +intxx037 tointegralx -0.5 -> -1 Inexact Rounded +intxx038 tointegralx -0.6 -> -1 Inexact Rounded +intxx039 tointegralx -0.7 -> -1 Inexact Rounded +intxx040 tointegralx -0.8 -> -1 Inexact Rounded +intxx041 tointegralx -0.9 -> -1 Inexact Rounded +intxx042 tointegralx -1 -> -1 +intxx043 tointegralx -1.0 -> -1 Rounded +intxx044 tointegralx -1.1 -> -1 Inexact Rounded +intxx045 tointegralx -1.2 -> -1 Inexact Rounded +intxx046 tointegralx -1.3 -> -1 Inexact Rounded +intxx047 tointegralx -1.4 -> -1 Inexact Rounded +intxx048 tointegralx -1.5 -> -2 Inexact Rounded +intxx049 tointegralx -1.6 -> -2 Inexact Rounded +intxx050 tointegralx -1.7 -> -2 Inexact Rounded +intxx051 tointegralx -1.8 -> -2 Inexact Rounded +intxx052 tointegralx -1.9 -> -2 Inexact Rounded +-- next two would be NaN using quantize(x, 0) +intxx053 tointegralx 10E+30 -> 1.0E+31 +intxx054 tointegralx -10E+30 -> -1.0E+31 + +-- numbers around precision +precision: 9 +intxx060 tointegralx '56267E-10' -> '0' Inexact Rounded +intxx061 tointegralx '56267E-5' -> '1' Inexact Rounded +intxx062 tointegralx '56267E-2' -> '563' Inexact Rounded +intxx063 tointegralx '56267E-1' -> '5627' Inexact Rounded +intxx065 tointegralx '56267E-0' -> '56267' +intxx066 tointegralx '56267E+0' -> '56267' +intxx067 tointegralx '56267E+1' -> '5.6267E+5' +intxx068 tointegralx '56267E+2' -> '5.6267E+6' +intxx069 tointegralx '56267E+3' -> '5.6267E+7' +intxx070 tointegralx '56267E+4' -> '5.6267E+8' +intxx071 tointegralx '56267E+5' -> '5.6267E+9' +intxx072 tointegralx '56267E+6' -> '5.6267E+10' +intxx073 tointegralx '1.23E+96' -> '1.23E+96' +intxx074 tointegralx '1.23E+384' -> '1.23E+384' +intxx075 tointegralx '1.23E+999' -> '1.23E+999' + +intxx080 tointegralx '-56267E-10' -> '-0' Inexact Rounded +intxx081 tointegralx '-56267E-5' -> '-1' Inexact Rounded +intxx082 tointegralx '-56267E-2' -> '-563' Inexact Rounded +intxx083 tointegralx '-56267E-1' -> '-5627' Inexact Rounded +intxx085 tointegralx '-56267E-0' -> '-56267' +intxx086 tointegralx '-56267E+0' -> '-56267' +intxx087 tointegralx '-56267E+1' -> '-5.6267E+5' +intxx088 tointegralx '-56267E+2' -> '-5.6267E+6' +intxx089 tointegralx '-56267E+3' -> '-5.6267E+7' +intxx090 tointegralx '-56267E+4' -> '-5.6267E+8' +intxx091 tointegralx '-56267E+5' -> '-5.6267E+9' +intxx092 tointegralx '-56267E+6' -> '-5.6267E+10' +intxx093 tointegralx '-1.23E+96' -> '-1.23E+96' +intxx094 tointegralx '-1.23E+384' -> '-1.23E+384' +intxx095 tointegralx '-1.23E+999' -> '-1.23E+999' + +-- subnormal inputs +intxx100 tointegralx 1E-999 -> 0 Inexact Rounded +intxx101 tointegralx 0.1E-999 -> 0 Inexact Rounded +intxx102 tointegralx 0.01E-999 -> 0 Inexact Rounded +intxx103 tointegralx 0E-999 -> 0 + +-- specials and zeros +intxx120 tointegralx 'Inf' -> Infinity +intxx121 tointegralx '-Inf' -> -Infinity +intxx122 tointegralx NaN -> NaN +intxx123 tointegralx sNaN -> NaN Invalid_operation +intxx124 tointegralx 0 -> 0 +intxx125 tointegralx -0 -> -0 +intxx126 tointegralx 0.000 -> 0 +intxx127 tointegralx 0.00 -> 0 +intxx128 tointegralx 0.0 -> 0 +intxx129 tointegralx 0 -> 0 +intxx130 tointegralx 0E-3 -> 0 +intxx131 tointegralx 0E-2 -> 0 +intxx132 tointegralx 0E-1 -> 0 +intxx133 tointegralx 0E-0 -> 0 +intxx134 tointegralx 0E+1 -> 0E+1 +intxx135 tointegralx 0E+2 -> 0E+2 +intxx136 tointegralx 0E+3 -> 0E+3 +intxx137 tointegralx 0E+4 -> 0E+4 +intxx138 tointegralx 0E+5 -> 0E+5 +intxx139 tointegralx -0.000 -> -0 +intxx140 tointegralx -0.00 -> -0 +intxx141 tointegralx -0.0 -> -0 +intxx142 tointegralx -0 -> -0 +intxx143 tointegralx -0E-3 -> -0 +intxx144 tointegralx -0E-2 -> -0 +intxx145 tointegralx -0E-1 -> -0 +intxx146 tointegralx -0E-0 -> -0 +intxx147 tointegralx -0E+1 -> -0E+1 +intxx148 tointegralx -0E+2 -> -0E+2 +intxx149 tointegralx -0E+3 -> -0E+3 +intxx150 tointegralx -0E+4 -> -0E+4 +intxx151 tointegralx -0E+5 -> -0E+5 +-- propagating NaNs +intxx152 tointegralx NaN808 -> NaN808 +intxx153 tointegralx sNaN080 -> NaN80 Invalid_operation +intxx154 tointegralx -NaN808 -> -NaN808 +intxx155 tointegralx -sNaN080 -> -NaN80 Invalid_operation +intxx156 tointegralx -NaN -> -NaN +intxx157 tointegralx -sNaN -> -NaN Invalid_operation + +-- examples +rounding: half_up +precision: 9 +intxx200 tointegralx 2.1 -> 2 Inexact Rounded +intxx201 tointegralx 100 -> 100 +intxx202 tointegralx 100.0 -> 100 Rounded +intxx203 tointegralx 101.5 -> 102 Inexact Rounded +intxx204 tointegralx -101.5 -> -102 Inexact Rounded +intxx205 tointegralx 10E+5 -> 1.0E+6 +intxx206 tointegralx 7.89E+77 -> 7.89E+77 +intxx207 tointegralx -Inf -> -Infinity + + +-- all rounding modes +rounding: half_even + +intxx210 tointegralx 55.5 -> 56 Inexact Rounded +intxx211 tointegralx 56.5 -> 56 Inexact Rounded +intxx212 tointegralx 57.5 -> 58 Inexact Rounded +intxx213 tointegralx -55.5 -> -56 Inexact Rounded +intxx214 tointegralx -56.5 -> -56 Inexact Rounded +intxx215 tointegralx -57.5 -> -58 Inexact Rounded + +rounding: half_up + +intxx220 tointegralx 55.5 -> 56 Inexact Rounded +intxx221 tointegralx 56.5 -> 57 Inexact Rounded +intxx222 tointegralx 57.5 -> 58 Inexact Rounded +intxx223 tointegralx -55.5 -> -56 Inexact Rounded +intxx224 tointegralx -56.5 -> -57 Inexact Rounded +intxx225 tointegralx -57.5 -> -58 Inexact Rounded + +rounding: half_down + +intxx230 tointegralx 55.5 -> 55 Inexact Rounded +intxx231 tointegralx 56.5 -> 56 Inexact Rounded +intxx232 tointegralx 57.5 -> 57 Inexact Rounded +intxx233 tointegralx -55.5 -> -55 Inexact Rounded +intxx234 tointegralx -56.5 -> -56 Inexact Rounded +intxx235 tointegralx -57.5 -> -57 Inexact Rounded + +rounding: up + +intxx240 tointegralx 55.3 -> 56 Inexact Rounded +intxx241 tointegralx 56.3 -> 57 Inexact Rounded +intxx242 tointegralx 57.3 -> 58 Inexact Rounded +intxx243 tointegralx -55.3 -> -56 Inexact Rounded +intxx244 tointegralx -56.3 -> -57 Inexact Rounded +intxx245 tointegralx -57.3 -> -58 Inexact Rounded + +rounding: down + +intxx250 tointegralx 55.7 -> 55 Inexact Rounded +intxx251 tointegralx 56.7 -> 56 Inexact Rounded +intxx252 tointegralx 57.7 -> 57 Inexact Rounded +intxx253 tointegralx -55.7 -> -55 Inexact Rounded +intxx254 tointegralx -56.7 -> -56 Inexact Rounded +intxx255 tointegralx -57.7 -> -57 Inexact Rounded + +rounding: ceiling + +intxx260 tointegralx 55.3 -> 56 Inexact Rounded +intxx261 tointegralx 56.3 -> 57 Inexact Rounded +intxx262 tointegralx 57.3 -> 58 Inexact Rounded +intxx263 tointegralx -55.3 -> -55 Inexact Rounded +intxx264 tointegralx -56.3 -> -56 Inexact Rounded +intxx265 tointegralx -57.3 -> -57 Inexact Rounded + +rounding: floor + +intxx270 tointegralx 55.7 -> 55 Inexact Rounded +intxx271 tointegralx 56.7 -> 56 Inexact Rounded +intxx272 tointegralx 57.7 -> 57 Inexact Rounded +intxx273 tointegralx -55.7 -> -56 Inexact Rounded +intxx274 tointegralx -56.7 -> -57 Inexact Rounded +intxx275 tointegralx -57.7 -> -58 Inexact Rounded + +-- Int and uInt32 edge values for testing conversions +precision: 16 +intxx300 tointegralx -2147483646 -> -2147483646 +intxx301 tointegralx -2147483647 -> -2147483647 +intxx302 tointegralx -2147483648 -> -2147483648 +intxx303 tointegralx -2147483649 -> -2147483649 +intxx304 tointegralx 2147483646 -> 2147483646 +intxx305 tointegralx 2147483647 -> 2147483647 +intxx306 tointegralx 2147483648 -> 2147483648 +intxx307 tointegralx 2147483649 -> 2147483649 +intxx308 tointegralx 4294967294 -> 4294967294 +intxx309 tointegralx 4294967295 -> 4294967295 +intxx310 tointegralx 4294967296 -> 4294967296 +intxx311 tointegralx 4294967297 -> 4294967297 diff --git a/Lib/test/decimaltestdata/xor.decTest b/Lib/test/decimaltestdata/xor.decTest index cd71bbc..122976e 100644 --- a/Lib/test/decimaltestdata/xor.decTest +++ b/Lib/test/decimaltestdata/xor.decTest @@ -1,335 +1,335 @@ ------------------------------------------------------------------------- --- xor.decTest -- digitwise logical XOR -- --- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc@uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.59 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minExponent: -999 - --- Sanity check (truth table) -xorx001 xor 0 0 -> 0 -xorx002 xor 0 1 -> 1 -xorx003 xor 1 0 -> 1 -xorx004 xor 1 1 -> 0 -xorx005 xor 1100 1010 -> 110 -xorx006 xor 1111 10 -> 1101 --- and at msd and msd-1 -xorx010 xor 000000000 000000000 -> 0 -xorx011 xor 000000000 100000000 -> 100000000 -xorx012 xor 100000000 000000000 -> 100000000 -xorx013 xor 100000000 100000000 -> 0 -xorx014 xor 000000000 000000000 -> 0 -xorx015 xor 000000000 010000000 -> 10000000 -xorx016 xor 010000000 000000000 -> 10000000 -xorx017 xor 010000000 010000000 -> 0 - --- Various lengths --- 123456789 123456789 123456789 -xorx021 xor 111111111 111111111 -> 0 -xorx022 xor 111111111111 111111111 -> 0 -xorx023 xor 11111111 11111111 -> 0 -xorx025 xor 1111111 1111111 -> 0 -xorx026 xor 111111 111111 -> 0 -xorx027 xor 11111 11111 -> 0 -xorx028 xor 1111 1111 -> 0 -xorx029 xor 111 111 -> 0 -xorx031 xor 11 11 -> 0 -xorx032 xor 1 1 -> 0 -xorx033 xor 111111111111 1111111111 -> 0 -xorx034 xor 11111111111 11111111111 -> 0 -xorx035 xor 1111111111 111111111111 -> 0 -xorx036 xor 111111111 1111111111111 -> 0 - -xorx040 xor 111111111 111111111111 -> 0 -xorx041 xor 11111111 111111111111 -> 100000000 -xorx042 xor 11111111 111111111 -> 100000000 -xorx043 xor 1111111 100000010 -> 101111101 -xorx044 xor 111111 100000100 -> 100111011 -xorx045 xor 11111 100001000 -> 100010111 -xorx046 xor 1111 100010000 -> 100011111 -xorx047 xor 111 100100000 -> 100100111 -xorx048 xor 11 101000000 -> 101000011 -xorx049 xor 1 110000000 -> 110000001 - -xorx050 xor 1111111111 1 -> 111111110 -xorx051 xor 111111111 1 -> 111111110 -xorx052 xor 11111111 1 -> 11111110 -xorx053 xor 1111111 1 -> 1111110 -xorx054 xor 111111 1 -> 111110 -xorx055 xor 11111 1 -> 11110 -xorx056 xor 1111 1 -> 1110 -xorx057 xor 111 1 -> 110 -xorx058 xor 11 1 -> 10 -xorx059 xor 1 1 -> 0 - -xorx060 xor 1111111111 0 -> 111111111 -xorx061 xor 111111111 0 -> 111111111 -xorx062 xor 11111111 0 -> 11111111 -xorx063 xor 1111111 0 -> 1111111 -xorx064 xor 111111 0 -> 111111 -xorx065 xor 11111 0 -> 11111 -xorx066 xor 1111 0 -> 1111 -xorx067 xor 111 0 -> 111 -xorx068 xor 11 0 -> 11 -xorx069 xor 1 0 -> 1 - -xorx070 xor 1 1111111111 -> 111111110 -xorx071 xor 1 111111111 -> 111111110 -xorx072 xor 1 11111111 -> 11111110 -xorx073 xor 1 1111111 -> 1111110 -xorx074 xor 1 111111 -> 111110 -xorx075 xor 1 11111 -> 11110 -xorx076 xor 1 1111 -> 1110 -xorx077 xor 1 111 -> 110 -xorx078 xor 1 11 -> 10 -xorx079 xor 1 1 -> 0 - -xorx080 xor 0 1111111111 -> 111111111 -xorx081 xor 0 111111111 -> 111111111 -xorx082 xor 0 11111111 -> 11111111 -xorx083 xor 0 1111111 -> 1111111 -xorx084 xor 0 111111 -> 111111 -xorx085 xor 0 11111 -> 11111 -xorx086 xor 0 1111 -> 1111 -xorx087 xor 0 111 -> 111 -xorx088 xor 0 11 -> 11 -xorx089 xor 0 1 -> 1 - -xorx090 xor 011111111 111101111 -> 100010000 -xorx091 xor 101111111 111101111 -> 10010000 -xorx092 xor 110111111 111101111 -> 1010000 -xorx093 xor 111011111 111101111 -> 110000 -xorx094 xor 111101111 111101111 -> 0 -xorx095 xor 111110111 111101111 -> 11000 -xorx096 xor 111111011 111101111 -> 10100 -xorx097 xor 111111101 111101111 -> 10010 -xorx098 xor 111111110 111101111 -> 10001 - -xorx100 xor 111101111 011111111 -> 100010000 -xorx101 xor 111101111 101111111 -> 10010000 -xorx102 xor 111101111 110111111 -> 1010000 -xorx103 xor 111101111 111011111 -> 110000 -xorx104 xor 111101111 111101111 -> 0 -xorx105 xor 111101111 111110111 -> 11000 -xorx106 xor 111101111 111111011 -> 10100 -xorx107 xor 111101111 111111101 -> 10010 -xorx108 xor 111101111 111111110 -> 10001 - --- non-0/1 should not be accepted, nor should signs -xorx220 xor 111111112 111111111 -> NaN Invalid_operation -xorx221 xor 333333333 333333333 -> NaN Invalid_operation -xorx222 xor 555555555 555555555 -> NaN Invalid_operation -xorx223 xor 777777777 777777777 -> NaN Invalid_operation -xorx224 xor 999999999 999999999 -> NaN Invalid_operation -xorx225 xor 222222222 999999999 -> NaN Invalid_operation -xorx226 xor 444444444 999999999 -> NaN Invalid_operation -xorx227 xor 666666666 999999999 -> NaN Invalid_operation -xorx228 xor 888888888 999999999 -> NaN Invalid_operation -xorx229 xor 999999999 222222222 -> NaN Invalid_operation -xorx230 xor 999999999 444444444 -> NaN Invalid_operation -xorx231 xor 999999999 666666666 -> NaN Invalid_operation -xorx232 xor 999999999 888888888 -> NaN Invalid_operation --- a few randoms -xorx240 xor 567468689 -934981942 -> NaN Invalid_operation -xorx241 xor 567367689 934981942 -> NaN Invalid_operation -xorx242 xor -631917772 -706014634 -> NaN Invalid_operation -xorx243 xor -756253257 138579234 -> NaN Invalid_operation -xorx244 xor 835590149 567435400 -> NaN Invalid_operation --- test MSD -xorx250 xor 200000000 100000000 -> NaN Invalid_operation -xorx251 xor 700000000 100000000 -> NaN Invalid_operation -xorx252 xor 800000000 100000000 -> NaN Invalid_operation -xorx253 xor 900000000 100000000 -> NaN Invalid_operation -xorx254 xor 200000000 000000000 -> NaN Invalid_operation -xorx255 xor 700000000 000000000 -> NaN Invalid_operation -xorx256 xor 800000000 000000000 -> NaN Invalid_operation -xorx257 xor 900000000 000000000 -> NaN Invalid_operation -xorx258 xor 100000000 200000000 -> NaN Invalid_operation -xorx259 xor 100000000 700000000 -> NaN Invalid_operation -xorx260 xor 100000000 800000000 -> NaN Invalid_operation -xorx261 xor 100000000 900000000 -> NaN Invalid_operation -xorx262 xor 000000000 200000000 -> NaN Invalid_operation -xorx263 xor 000000000 700000000 -> NaN Invalid_operation -xorx264 xor 000000000 800000000 -> NaN Invalid_operation -xorx265 xor 000000000 900000000 -> NaN Invalid_operation --- test MSD-1 -xorx270 xor 020000000 100000000 -> NaN Invalid_operation -xorx271 xor 070100000 100000000 -> NaN Invalid_operation -xorx272 xor 080010000 100000001 -> NaN Invalid_operation -xorx273 xor 090001000 100000010 -> NaN Invalid_operation -xorx274 xor 100000100 020010100 -> NaN Invalid_operation -xorx275 xor 100000000 070001000 -> NaN Invalid_operation -xorx276 xor 100000010 080010100 -> NaN Invalid_operation -xorx277 xor 100000000 090000010 -> NaN Invalid_operation --- test LSD -xorx280 xor 001000002 100000000 -> NaN Invalid_operation -xorx281 xor 000000007 100000000 -> NaN Invalid_operation -xorx282 xor 000000008 100000000 -> NaN Invalid_operation -xorx283 xor 000000009 100000000 -> NaN Invalid_operation -xorx284 xor 100000000 000100002 -> NaN Invalid_operation -xorx285 xor 100100000 001000007 -> NaN Invalid_operation -xorx286 xor 100010000 010000008 -> NaN Invalid_operation -xorx287 xor 100001000 100000009 -> NaN Invalid_operation --- test Middie -xorx288 xor 001020000 100000000 -> NaN Invalid_operation -xorx289 xor 000070001 100000000 -> NaN Invalid_operation -xorx290 xor 000080000 100010000 -> NaN Invalid_operation -xorx291 xor 000090000 100001000 -> NaN Invalid_operation -xorx292 xor 100000010 000020100 -> NaN Invalid_operation -xorx293 xor 100100000 000070010 -> NaN Invalid_operation -xorx294 xor 100010100 000080001 -> NaN Invalid_operation -xorx295 xor 100001000 000090000 -> NaN Invalid_operation --- signs -xorx296 xor -100001000 -000000000 -> NaN Invalid_operation -xorx297 xor -100001000 000010000 -> NaN Invalid_operation -xorx298 xor 100001000 -000000000 -> NaN Invalid_operation -xorx299 xor 100001000 000011000 -> 100010000 - --- Nmax, Nmin, Ntiny -xorx331 xor 2 9.99999999E+999 -> NaN Invalid_operation -xorx332 xor 3 1E-999 -> NaN Invalid_operation -xorx333 xor 4 1.00000000E-999 -> NaN Invalid_operation -xorx334 xor 5 1E-1007 -> NaN Invalid_operation -xorx335 xor 6 -1E-1007 -> NaN Invalid_operation -xorx336 xor 7 -1.00000000E-999 -> NaN Invalid_operation -xorx337 xor 8 -1E-999 -> NaN Invalid_operation -xorx338 xor 9 -9.99999999E+999 -> NaN Invalid_operation -xorx341 xor 9.99999999E+999 -18 -> NaN Invalid_operation -xorx342 xor 1E-999 01 -> NaN Invalid_operation -xorx343 xor 1.00000000E-999 -18 -> NaN Invalid_operation -xorx344 xor 1E-1007 18 -> NaN Invalid_operation -xorx345 xor -1E-1007 -10 -> NaN Invalid_operation -xorx346 xor -1.00000000E-999 18 -> NaN Invalid_operation -xorx347 xor -1E-999 10 -> NaN Invalid_operation -xorx348 xor -9.99999999E+999 -18 -> NaN Invalid_operation - --- A few other non-integers -xorx361 xor 1.0 1 -> NaN Invalid_operation -xorx362 xor 1E+1 1 -> NaN Invalid_operation -xorx363 xor 0.0 1 -> NaN Invalid_operation -xorx364 xor 0E+1 1 -> NaN Invalid_operation -xorx365 xor 9.9 1 -> NaN Invalid_operation -xorx366 xor 9E+1 1 -> NaN Invalid_operation -xorx371 xor 0 1.0 -> NaN Invalid_operation -xorx372 xor 0 1E+1 -> NaN Invalid_operation -xorx373 xor 0 0.0 -> NaN Invalid_operation -xorx374 xor 0 0E+1 -> NaN Invalid_operation -xorx375 xor 0 9.9 -> NaN Invalid_operation -xorx376 xor 0 9E+1 -> NaN Invalid_operation - --- All Specials are in error -xorx780 xor -Inf -Inf -> NaN Invalid_operation -xorx781 xor -Inf -1000 -> NaN Invalid_operation -xorx782 xor -Inf -1 -> NaN Invalid_operation -xorx783 xor -Inf -0 -> NaN Invalid_operation -xorx784 xor -Inf 0 -> NaN Invalid_operation -xorx785 xor -Inf 1 -> NaN Invalid_operation -xorx786 xor -Inf 1000 -> NaN Invalid_operation -xorx787 xor -1000 -Inf -> NaN Invalid_operation -xorx788 xor -Inf -Inf -> NaN Invalid_operation -xorx789 xor -1 -Inf -> NaN Invalid_operation -xorx790 xor -0 -Inf -> NaN Invalid_operation -xorx791 xor 0 -Inf -> NaN Invalid_operation -xorx792 xor 1 -Inf -> NaN Invalid_operation -xorx793 xor 1000 -Inf -> NaN Invalid_operation -xorx794 xor Inf -Inf -> NaN Invalid_operation - -xorx800 xor Inf -Inf -> NaN Invalid_operation -xorx801 xor Inf -1000 -> NaN Invalid_operation -xorx802 xor Inf -1 -> NaN Invalid_operation -xorx803 xor Inf -0 -> NaN Invalid_operation -xorx804 xor Inf 0 -> NaN Invalid_operation -xorx805 xor Inf 1 -> NaN Invalid_operation -xorx806 xor Inf 1000 -> NaN Invalid_operation -xorx807 xor Inf Inf -> NaN Invalid_operation -xorx808 xor -1000 Inf -> NaN Invalid_operation -xorx809 xor -Inf Inf -> NaN Invalid_operation -xorx810 xor -1 Inf -> NaN Invalid_operation -xorx811 xor -0 Inf -> NaN Invalid_operation -xorx812 xor 0 Inf -> NaN Invalid_operation -xorx813 xor 1 Inf -> NaN Invalid_operation -xorx814 xor 1000 Inf -> NaN Invalid_operation -xorx815 xor Inf Inf -> NaN Invalid_operation - -xorx821 xor NaN -Inf -> NaN Invalid_operation -xorx822 xor NaN -1000 -> NaN Invalid_operation -xorx823 xor NaN -1 -> NaN Invalid_operation -xorx824 xor NaN -0 -> NaN Invalid_operation -xorx825 xor NaN 0 -> NaN Invalid_operation -xorx826 xor NaN 1 -> NaN Invalid_operation -xorx827 xor NaN 1000 -> NaN Invalid_operation -xorx828 xor NaN Inf -> NaN Invalid_operation -xorx829 xor NaN NaN -> NaN Invalid_operation -xorx830 xor -Inf NaN -> NaN Invalid_operation -xorx831 xor -1000 NaN -> NaN Invalid_operation -xorx832 xor -1 NaN -> NaN Invalid_operation -xorx833 xor -0 NaN -> NaN Invalid_operation -xorx834 xor 0 NaN -> NaN Invalid_operation -xorx835 xor 1 NaN -> NaN Invalid_operation -xorx836 xor 1000 NaN -> NaN Invalid_operation -xorx837 xor Inf NaN -> NaN Invalid_operation - -xorx841 xor sNaN -Inf -> NaN Invalid_operation -xorx842 xor sNaN -1000 -> NaN Invalid_operation -xorx843 xor sNaN -1 -> NaN Invalid_operation -xorx844 xor sNaN -0 -> NaN Invalid_operation -xorx845 xor sNaN 0 -> NaN Invalid_operation -xorx846 xor sNaN 1 -> NaN Invalid_operation -xorx847 xor sNaN 1000 -> NaN Invalid_operation -xorx848 xor sNaN NaN -> NaN Invalid_operation -xorx849 xor sNaN sNaN -> NaN Invalid_operation -xorx850 xor NaN sNaN -> NaN Invalid_operation -xorx851 xor -Inf sNaN -> NaN Invalid_operation -xorx852 xor -1000 sNaN -> NaN Invalid_operation -xorx853 xor -1 sNaN -> NaN Invalid_operation -xorx854 xor -0 sNaN -> NaN Invalid_operation -xorx855 xor 0 sNaN -> NaN Invalid_operation -xorx856 xor 1 sNaN -> NaN Invalid_operation -xorx857 xor 1000 sNaN -> NaN Invalid_operation -xorx858 xor Inf sNaN -> NaN Invalid_operation -xorx859 xor NaN sNaN -> NaN Invalid_operation - --- propagating NaNs -xorx861 xor NaN1 -Inf -> NaN Invalid_operation -xorx862 xor +NaN2 -1000 -> NaN Invalid_operation -xorx863 xor NaN3 1000 -> NaN Invalid_operation -xorx864 xor NaN4 Inf -> NaN Invalid_operation -xorx865 xor NaN5 +NaN6 -> NaN Invalid_operation -xorx866 xor -Inf NaN7 -> NaN Invalid_operation -xorx867 xor -1000 NaN8 -> NaN Invalid_operation -xorx868 xor 1000 NaN9 -> NaN Invalid_operation -xorx869 xor Inf +NaN10 -> NaN Invalid_operation -xorx871 xor sNaN11 -Inf -> NaN Invalid_operation -xorx872 xor sNaN12 -1000 -> NaN Invalid_operation -xorx873 xor sNaN13 1000 -> NaN Invalid_operation -xorx874 xor sNaN14 NaN17 -> NaN Invalid_operation -xorx875 xor sNaN15 sNaN18 -> NaN Invalid_operation -xorx876 xor NaN16 sNaN19 -> NaN Invalid_operation -xorx877 xor -Inf +sNaN20 -> NaN Invalid_operation -xorx878 xor -1000 sNaN21 -> NaN Invalid_operation -xorx879 xor 1000 sNaN22 -> NaN Invalid_operation -xorx880 xor Inf sNaN23 -> NaN Invalid_operation -xorx881 xor +NaN25 +sNaN24 -> NaN Invalid_operation -xorx882 xor -NaN26 NaN28 -> NaN Invalid_operation -xorx883 xor -sNaN27 sNaN29 -> NaN Invalid_operation -xorx884 xor 1000 -NaN30 -> NaN Invalid_operation -xorx885 xor 1000 -sNaN31 -> NaN Invalid_operation +------------------------------------------------------------------------ +-- xor.decTest -- digitwise logical XOR -- +-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- +------------------------------------------------------------------------ +-- Please see the document "General Decimal Arithmetic Testcases" -- +-- at http://www2.hursley.ibm.com/decimal for the description of -- +-- these testcases. -- +-- -- +-- These testcases are experimental ('beta' versions), and they -- +-- may contain errors. They are offered on an as-is basis. In -- +-- particular, achieving the same results as the tests here is not -- +-- a guarantee that an implementation complies with any Standard -- +-- or specification. The tests are not exhaustive. -- +-- -- +-- Please send comments, suggestions, and corrections to the author: -- +-- Mike Cowlishaw, IBM Fellow -- +-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- +-- mfc@uk.ibm.com -- +------------------------------------------------------------------------ +version: 2.59 + +extended: 1 +precision: 9 +rounding: half_up +maxExponent: 999 +minExponent: -999 + +-- Sanity check (truth table) +xorx001 xor 0 0 -> 0 +xorx002 xor 0 1 -> 1 +xorx003 xor 1 0 -> 1 +xorx004 xor 1 1 -> 0 +xorx005 xor 1100 1010 -> 110 +xorx006 xor 1111 10 -> 1101 +-- and at msd and msd-1 +xorx010 xor 000000000 000000000 -> 0 +xorx011 xor 000000000 100000000 -> 100000000 +xorx012 xor 100000000 000000000 -> 100000000 +xorx013 xor 100000000 100000000 -> 0 +xorx014 xor 000000000 000000000 -> 0 +xorx015 xor 000000000 010000000 -> 10000000 +xorx016 xor 010000000 000000000 -> 10000000 +xorx017 xor 010000000 010000000 -> 0 + +-- Various lengths +-- 123456789 123456789 123456789 +xorx021 xor 111111111 111111111 -> 0 +xorx022 xor 111111111111 111111111 -> 0 +xorx023 xor 11111111 11111111 -> 0 +xorx025 xor 1111111 1111111 -> 0 +xorx026 xor 111111 111111 -> 0 +xorx027 xor 11111 11111 -> 0 +xorx028 xor 1111 1111 -> 0 +xorx029 xor 111 111 -> 0 +xorx031 xor 11 11 -> 0 +xorx032 xor 1 1 -> 0 +xorx033 xor 111111111111 1111111111 -> 0 +xorx034 xor 11111111111 11111111111 -> 0 +xorx035 xor 1111111111 111111111111 -> 0 +xorx036 xor 111111111 1111111111111 -> 0 + +xorx040 xor 111111111 111111111111 -> 0 +xorx041 xor 11111111 111111111111 -> 100000000 +xorx042 xor 11111111 111111111 -> 100000000 +xorx043 xor 1111111 100000010 -> 101111101 +xorx044 xor 111111 100000100 -> 100111011 +xorx045 xor 11111 100001000 -> 100010111 +xorx046 xor 1111 100010000 -> 100011111 +xorx047 xor 111 100100000 -> 100100111 +xorx048 xor 11 101000000 -> 101000011 +xorx049 xor 1 110000000 -> 110000001 + +xorx050 xor 1111111111 1 -> 111111110 +xorx051 xor 111111111 1 -> 111111110 +xorx052 xor 11111111 1 -> 11111110 +xorx053 xor 1111111 1 -> 1111110 +xorx054 xor 111111 1 -> 111110 +xorx055 xor 11111 1 -> 11110 +xorx056 xor 1111 1 -> 1110 +xorx057 xor 111 1 -> 110 +xorx058 xor 11 1 -> 10 +xorx059 xor 1 1 -> 0 + +xorx060 xor 1111111111 0 -> 111111111 +xorx061 xor 111111111 0 -> 111111111 +xorx062 xor 11111111 0 -> 11111111 +xorx063 xor 1111111 0 -> 1111111 +xorx064 xor 111111 0 -> 111111 +xorx065 xor 11111 0 -> 11111 +xorx066 xor 1111 0 -> 1111 +xorx067 xor 111 0 -> 111 +xorx068 xor 11 0 -> 11 +xorx069 xor 1 0 -> 1 + +xorx070 xor 1 1111111111 -> 111111110 +xorx071 xor 1 111111111 -> 111111110 +xorx072 xor 1 11111111 -> 11111110 +xorx073 xor 1 1111111 -> 1111110 +xorx074 xor 1 111111 -> 111110 +xorx075 xor 1 11111 -> 11110 +xorx076 xor 1 1111 -> 1110 +xorx077 xor 1 111 -> 110 +xorx078 xor 1 11 -> 10 +xorx079 xor 1 1 -> 0 + +xorx080 xor 0 1111111111 -> 111111111 +xorx081 xor 0 111111111 -> 111111111 +xorx082 xor 0 11111111 -> 11111111 +xorx083 xor 0 1111111 -> 1111111 +xorx084 xor 0 111111 -> 111111 +xorx085 xor 0 11111 -> 11111 +xorx086 xor 0 1111 -> 1111 +xorx087 xor 0 111 -> 111 +xorx088 xor 0 11 -> 11 +xorx089 xor 0 1 -> 1 + +xorx090 xor 011111111 111101111 -> 100010000 +xorx091 xor 101111111 111101111 -> 10010000 +xorx092 xor 110111111 111101111 -> 1010000 +xorx093 xor 111011111 111101111 -> 110000 +xorx094 xor 111101111 111101111 -> 0 +xorx095 xor 111110111 111101111 -> 11000 +xorx096 xor 111111011 111101111 -> 10100 +xorx097 xor 111111101 111101111 -> 10010 +xorx098 xor 111111110 111101111 -> 10001 + +xorx100 xor 111101111 011111111 -> 100010000 +xorx101 xor 111101111 101111111 -> 10010000 +xorx102 xor 111101111 110111111 -> 1010000 +xorx103 xor 111101111 111011111 -> 110000 +xorx104 xor 111101111 111101111 -> 0 +xorx105 xor 111101111 111110111 -> 11000 +xorx106 xor 111101111 111111011 -> 10100 +xorx107 xor 111101111 111111101 -> 10010 +xorx108 xor 111101111 111111110 -> 10001 + +-- non-0/1 should not be accepted, nor should signs +xorx220 xor 111111112 111111111 -> NaN Invalid_operation +xorx221 xor 333333333 333333333 -> NaN Invalid_operation +xorx222 xor 555555555 555555555 -> NaN Invalid_operation +xorx223 xor 777777777 777777777 -> NaN Invalid_operation +xorx224 xor 999999999 999999999 -> NaN Invalid_operation +xorx225 xor 222222222 999999999 -> NaN Invalid_operation +xorx226 xor 444444444 999999999 -> NaN Invalid_operation +xorx227 xor 666666666 999999999 -> NaN Invalid_operation +xorx228 xor 888888888 999999999 -> NaN Invalid_operation +xorx229 xor 999999999 222222222 -> NaN Invalid_operation +xorx230 xor 999999999 444444444 -> NaN Invalid_operation +xorx231 xor 999999999 666666666 -> NaN Invalid_operation +xorx232 xor 999999999 888888888 -> NaN Invalid_operation +-- a few randoms +xorx240 xor 567468689 -934981942 -> NaN Invalid_operation +xorx241 xor 567367689 934981942 -> NaN Invalid_operation +xorx242 xor -631917772 -706014634 -> NaN Invalid_operation +xorx243 xor -756253257 138579234 -> NaN Invalid_operation +xorx244 xor 835590149 567435400 -> NaN Invalid_operation +-- test MSD +xorx250 xor 200000000 100000000 -> NaN Invalid_operation +xorx251 xor 700000000 100000000 -> NaN Invalid_operation +xorx252 xor 800000000 100000000 -> NaN Invalid_operation +xorx253 xor 900000000 100000000 -> NaN Invalid_operation +xorx254 xor 200000000 000000000 -> NaN Invalid_operation +xorx255 xor 700000000 000000000 -> NaN Invalid_operation +xorx256 xor 800000000 000000000 -> NaN Invalid_operation +xorx257 xor 900000000 000000000 -> NaN Invalid_operation +xorx258 xor 100000000 200000000 -> NaN Invalid_operation +xorx259 xor 100000000 700000000 -> NaN Invalid_operation +xorx260 xor 100000000 800000000 -> NaN Invalid_operation +xorx261 xor 100000000 900000000 -> NaN Invalid_operation +xorx262 xor 000000000 200000000 -> NaN Invalid_operation +xorx263 xor 000000000 700000000 -> NaN Invalid_operation +xorx264 xor 000000000 800000000 -> NaN Invalid_operation +xorx265 xor 000000000 900000000 -> NaN Invalid_operation +-- test MSD-1 +xorx270 xor 020000000 100000000 -> NaN Invalid_operation +xorx271 xor 070100000 100000000 -> NaN Invalid_operation +xorx272 xor 080010000 100000001 -> NaN Invalid_operation +xorx273 xor 090001000 100000010 -> NaN Invalid_operation +xorx274 xor 100000100 020010100 -> NaN Invalid_operation +xorx275 xor 100000000 070001000 -> NaN Invalid_operation +xorx276 xor 100000010 080010100 -> NaN Invalid_operation +xorx277 xor 100000000 090000010 -> NaN Invalid_operation +-- test LSD +xorx280 xor 001000002 100000000 -> NaN Invalid_operation +xorx281 xor 000000007 100000000 -> NaN Invalid_operation +xorx282 xor 000000008 100000000 -> NaN Invalid_operation +xorx283 xor 000000009 100000000 -> NaN Invalid_operation +xorx284 xor 100000000 000100002 -> NaN Invalid_operation +xorx285 xor 100100000 001000007 -> NaN Invalid_operation +xorx286 xor 100010000 010000008 -> NaN Invalid_operation +xorx287 xor 100001000 100000009 -> NaN Invalid_operation +-- test Middie +xorx288 xor 001020000 100000000 -> NaN Invalid_operation +xorx289 xor 000070001 100000000 -> NaN Invalid_operation +xorx290 xor 000080000 100010000 -> NaN Invalid_operation +xorx291 xor 000090000 100001000 -> NaN Invalid_operation +xorx292 xor 100000010 000020100 -> NaN Invalid_operation +xorx293 xor 100100000 000070010 -> NaN Invalid_operation +xorx294 xor 100010100 000080001 -> NaN Invalid_operation +xorx295 xor 100001000 000090000 -> NaN Invalid_operation +-- signs +xorx296 xor -100001000 -000000000 -> NaN Invalid_operation +xorx297 xor -100001000 000010000 -> NaN Invalid_operation +xorx298 xor 100001000 -000000000 -> NaN Invalid_operation +xorx299 xor 100001000 000011000 -> 100010000 + +-- Nmax, Nmin, Ntiny +xorx331 xor 2 9.99999999E+999 -> NaN Invalid_operation +xorx332 xor 3 1E-999 -> NaN Invalid_operation +xorx333 xor 4 1.00000000E-999 -> NaN Invalid_operation +xorx334 xor 5 1E-1007 -> NaN Invalid_operation +xorx335 xor 6 -1E-1007 -> NaN Invalid_operation +xorx336 xor 7 -1.00000000E-999 -> NaN Invalid_operation +xorx337 xor 8 -1E-999 -> NaN Invalid_operation +xorx338 xor 9 -9.99999999E+999 -> NaN Invalid_operation +xorx341 xor 9.99999999E+999 -18 -> NaN Invalid_operation +xorx342 xor 1E-999 01 -> NaN Invalid_operation +xorx343 xor 1.00000000E-999 -18 -> NaN Invalid_operation +xorx344 xor 1E-1007 18 -> NaN Invalid_operation +xorx345 xor -1E-1007 -10 -> NaN Invalid_operation +xorx346 xor -1.00000000E-999 18 -> NaN Invalid_operation +xorx347 xor -1E-999 10 -> NaN Invalid_operation +xorx348 xor -9.99999999E+999 -18 -> NaN Invalid_operation + +-- A few other non-integers +xorx361 xor 1.0 1 -> NaN Invalid_operation +xorx362 xor 1E+1 1 -> NaN Invalid_operation +xorx363 xor 0.0 1 -> NaN Invalid_operation +xorx364 xor 0E+1 1 -> NaN Invalid_operation +xorx365 xor 9.9 1 -> NaN Invalid_operation +xorx366 xor 9E+1 1 -> NaN Invalid_operation +xorx371 xor 0 1.0 -> NaN Invalid_operation +xorx372 xor 0 1E+1 -> NaN Invalid_operation +xorx373 xor 0 0.0 -> NaN Invalid_operation +xorx374 xor 0 0E+1 -> NaN Invalid_operation +xorx375 xor 0 9.9 -> NaN Invalid_operation +xorx376 xor 0 9E+1 -> NaN Invalid_operation + +-- All Specials are in error +xorx780 xor -Inf -Inf -> NaN Invalid_operation +xorx781 xor -Inf -1000 -> NaN Invalid_operation +xorx782 xor -Inf -1 -> NaN Invalid_operation +xorx783 xor -Inf -0 -> NaN Invalid_operation +xorx784 xor -Inf 0 -> NaN Invalid_operation +xorx785 xor -Inf 1 -> NaN Invalid_operation +xorx786 xor -Inf 1000 -> NaN Invalid_operation +xorx787 xor -1000 -Inf -> NaN Invalid_operation +xorx788 xor -Inf -Inf -> NaN Invalid_operation +xorx789 xor -1 -Inf -> NaN Invalid_operation +xorx790 xor -0 -Inf -> NaN Invalid_operation +xorx791 xor 0 -Inf -> NaN Invalid_operation +xorx792 xor 1 -Inf -> NaN Invalid_operation +xorx793 xor 1000 -Inf -> NaN Invalid_operation +xorx794 xor Inf -Inf -> NaN Invalid_operation + +xorx800 xor Inf -Inf -> NaN Invalid_operation +xorx801 xor Inf -1000 -> NaN Invalid_operation +xorx802 xor Inf -1 -> NaN Invalid_operation +xorx803 xor Inf -0 -> NaN Invalid_operation +xorx804 xor Inf 0 -> NaN Invalid_operation +xorx805 xor Inf 1 -> NaN Invalid_operation +xorx806 xor Inf 1000 -> NaN Invalid_operation +xorx807 xor Inf Inf -> NaN Invalid_operation +xorx808 xor -1000 Inf -> NaN Invalid_operation +xorx809 xor -Inf Inf -> NaN Invalid_operation +xorx810 xor -1 Inf -> NaN Invalid_operation +xorx811 xor -0 Inf -> NaN Invalid_operation +xorx812 xor 0 Inf -> NaN Invalid_operation +xorx813 xor 1 Inf -> NaN Invalid_operation +xorx814 xor 1000 Inf -> NaN Invalid_operation +xorx815 xor Inf Inf -> NaN Invalid_operation + +xorx821 xor NaN -Inf -> NaN Invalid_operation +xorx822 xor NaN -1000 -> NaN Invalid_operation +xorx823 xor NaN -1 -> NaN Invalid_operation +xorx824 xor NaN -0 -> NaN Invalid_operation +xorx825 xor NaN 0 -> NaN Invalid_operation +xorx826 xor NaN 1 -> NaN Invalid_operation +xorx827 xor NaN 1000 -> NaN Invalid_operation +xorx828 xor NaN Inf -> NaN Invalid_operation +xorx829 xor NaN NaN -> NaN Invalid_operation +xorx830 xor -Inf NaN -> NaN Invalid_operation +xorx831 xor -1000 NaN -> NaN Invalid_operation +xorx832 xor -1 NaN -> NaN Invalid_operation +xorx833 xor -0 NaN -> NaN Invalid_operation +xorx834 xor 0 NaN -> NaN Invalid_operation +xorx835 xor 1 NaN -> NaN Invalid_operation +xorx836 xor 1000 NaN -> NaN Invalid_operation +xorx837 xor Inf NaN -> NaN Invalid_operation + +xorx841 xor sNaN -Inf -> NaN Invalid_operation +xorx842 xor sNaN -1000 -> NaN Invalid_operation +xorx843 xor sNaN -1 -> NaN Invalid_operation +xorx844 xor sNaN -0 -> NaN Invalid_operation +xorx845 xor sNaN 0 -> NaN Invalid_operation +xorx846 xor sNaN 1 -> NaN Invalid_operation +xorx847 xor sNaN 1000 -> NaN Invalid_operation +xorx848 xor sNaN NaN -> NaN Invalid_operation +xorx849 xor sNaN sNaN -> NaN Invalid_operation +xorx850 xor NaN sNaN -> NaN Invalid_operation +xorx851 xor -Inf sNaN -> NaN Invalid_operation +xorx852 xor -1000 sNaN -> NaN Invalid_operation +xorx853 xor -1 sNaN -> NaN Invalid_operation +xorx854 xor -0 sNaN -> NaN Invalid_operation +xorx855 xor 0 sNaN -> NaN Invalid_operation +xorx856 xor 1 sNaN -> NaN Invalid_operation +xorx857 xor 1000 sNaN -> NaN Invalid_operation +xorx858 xor Inf sNaN -> NaN Invalid_operation +xorx859 xor NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +xorx861 xor NaN1 -Inf -> NaN Invalid_operation +xorx862 xor +NaN2 -1000 -> NaN Invalid_operation +xorx863 xor NaN3 1000 -> NaN Invalid_operation +xorx864 xor NaN4 Inf -> NaN Invalid_operation +xorx865 xor NaN5 +NaN6 -> NaN Invalid_operation +xorx866 xor -Inf NaN7 -> NaN Invalid_operation +xorx867 xor -1000 NaN8 -> NaN Invalid_operation +xorx868 xor 1000 NaN9 -> NaN Invalid_operation +xorx869 xor Inf +NaN10 -> NaN Invalid_operation +xorx871 xor sNaN11 -Inf -> NaN Invalid_operation +xorx872 xor sNaN12 -1000 -> NaN Invalid_operation +xorx873 xor sNaN13 1000 -> NaN Invalid_operation +xorx874 xor sNaN14 NaN17 -> NaN Invalid_operation +xorx875 xor sNaN15 sNaN18 -> NaN Invalid_operation +xorx876 xor NaN16 sNaN19 -> NaN Invalid_operation +xorx877 xor -Inf +sNaN20 -> NaN Invalid_operation +xorx878 xor -1000 sNaN21 -> NaN Invalid_operation +xorx879 xor 1000 sNaN22 -> NaN Invalid_operation +xorx880 xor Inf sNaN23 -> NaN Invalid_operation +xorx881 xor +NaN25 +sNaN24 -> NaN Invalid_operation +xorx882 xor -NaN26 NaN28 -> NaN Invalid_operation +xorx883 xor -sNaN27 sNaN29 -> NaN Invalid_operation +xorx884 xor 1000 -NaN30 -> NaN Invalid_operation +xorx885 xor 1000 -sNaN31 -> NaN Invalid_operation diff --git a/PC/VC6/_ctypes.dsp b/PC/VC6/_ctypes.dsp index 70368bf..e4cbbba 100644 --- a/PC/VC6/_ctypes.dsp +++ b/PC/VC6/_ctypes.dsp @@ -1,131 +1,131 @@ -# Microsoft Developer Studio Project File - Name="_ctypes" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_ctypes - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_ctypes.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_ctypes.mak" CFG="_ctypes - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_ctypes - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_ctypes - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_ctypes" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_ctypes - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_ctypes" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_ctypes - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_ctypes" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_ctypes - Win32 Release" -# Name "_ctypes - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\_ctypes.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\callbacks.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\callproc.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\cfield.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\libffi_msvc\ffi.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\malloc_closure.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\libffi_msvc\prep_cif.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\stgdict.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\libffi_msvc\win32.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_ctypes" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_ctypes - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_ctypes.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_ctypes.mak" CFG="_ctypes - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_ctypes - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_ctypes - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_ctypes" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_ctypes - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_ctypes" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_ctypes - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_ctypes" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_ctypes - Win32 Release" +# Name "_ctypes - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\_ctypes.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\callbacks.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\callproc.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\cfield.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\libffi_msvc\ffi.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\malloc_closure.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\libffi_msvc\prep_cif.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\stgdict.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\libffi_msvc\win32.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/_ctypes_test.dsp b/PC/VC6/_ctypes_test.dsp index d1eb217..75d2d14 100644 --- a/PC/VC6/_ctypes_test.dsp +++ b/PC/VC6/_ctypes_test.dsp @@ -1,99 +1,99 @@ -# Microsoft Developer Studio Project File - Name="_ctypes_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_ctypes_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_ctypes_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_ctypes_test.mak" CFG="_ctypes_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_ctypes_test - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_ctypes_test - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_ctypes_test" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_ctypes_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_ctypes_test" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_test.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_ctypes_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_ctypes_test" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_test_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_ctypes_test - Win32 Release" -# Name "_ctypes_test - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\_ctypes\_ctypes_test.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_ctypes_test" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_ctypes_test - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_ctypes_test.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_ctypes_test.mak" CFG="_ctypes_test - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_ctypes_test - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_ctypes_test - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_ctypes_test" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_ctypes_test - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_ctypes_test" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_test.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_ctypes_test - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_ctypes_test" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"./_ctypes_test_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_ctypes_test - Win32 Release" +# Name "_ctypes_test - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\_ctypes\_ctypes_test.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/_elementtree.dsp b/PC/VC6/_elementtree.dsp index 8dc0cdd..8ff3d25 100644 --- a/PC/VC6/_elementtree.dsp +++ b/PC/VC6/_elementtree.dsp @@ -1,111 +1,111 @@ -# Microsoft Developer Studio Project File - Name="_elementtree" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_elementtree - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_elementtree.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_elementtree.mak" CFG="_elementtree - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_elementtree - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_elementtree - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_elementtree" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_elementtree - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_elementtree" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D "BYTEORDER=1234" /D "XML_CONTEXT_BYTES=1024" /D "USE_PYEXPAT_CAPI" /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d100000" /subsystem:windows /dll /debug /machine:I386 /out:"./_elementtree.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_elementtree - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_elementtree" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D "BYTEORDER=1234" /D "XML_CONTEXT_BYTES=1024" /D "USE_PYEXPAT_CAPI" /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d100000" /subsystem:windows /dll /debug /machine:I386 /out:"./_elementtree_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_elementtree - Win32 Release" -# Name "_elementtree - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\_elementtree.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\expat\xmlparse.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\expat\xmlrole.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\expat\xmltok.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_elementtree" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_elementtree - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_elementtree.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_elementtree.mak" CFG="_elementtree - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_elementtree - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_elementtree - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_elementtree" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_elementtree - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_elementtree" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D "BYTEORDER=1234" /D "XML_CONTEXT_BYTES=1024" /D "USE_PYEXPAT_CAPI" /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d100000" /subsystem:windows /dll /debug /machine:I386 /out:"./_elementtree.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_elementtree - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_elementtree" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D "BYTEORDER=1234" /D "XML_CONTEXT_BYTES=1024" /D "USE_PYEXPAT_CAPI" /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1d100000" /subsystem:windows /dll /debug /machine:I386 /out:"./_elementtree_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_elementtree - Win32 Release" +# Name "_elementtree - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\_elementtree.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\expat\xmlparse.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\expat\xmlrole.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\expat\xmltok.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/_msi.dsp b/PC/VC6/_msi.dsp index 16e96e3..f3d6864 100644 --- a/PC/VC6/_msi.dsp +++ b/PC/VC6/_msi.dsp @@ -1,99 +1,99 @@ -# Microsoft Developer Studio Project File - Name="_msi" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_msi - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_msi.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_msi.mak" CFG="_msi - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_msi - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_msi - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_msi" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_msi - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_msi" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_msi.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_msi - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_msi" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_msi_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_msi - Win32 Release" -# Name "_msi - Win32 Debug" -# Begin Source File - -SOURCE=..\..\PC\_msi.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_msi" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_msi - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_msi.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_msi.mak" CFG="_msi - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_msi - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_msi - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_msi" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_msi - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_msi" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_msi.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_msi - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_msi" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib fci.lib msi.lib rpcrt4.lib /nologo /base:"0x1d1a0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_msi_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_msi - Win32 Release" +# Name "_msi - Win32 Debug" +# Begin Source File + +SOURCE=..\..\PC\_msi.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/_multiprocessing.dsp b/PC/VC6/_multiprocessing.dsp index 2dcaf83..32fdbd0 100644 --- a/PC/VC6/_multiprocessing.dsp +++ b/PC/VC6/_multiprocessing.dsp @@ -1,115 +1,115 @@ -# Microsoft Developer Studio Project File - Name="_multiprocessing" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_multiprocessing - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_multiprocessing.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_multiprocessing.mak" CFG="_multiprocessing - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_multiprocessing - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_multiprocessing - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_multiprocessing" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_multiprocessing - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_multiprocessing" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_multiprocessing.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_multiprocessing - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_multiprocessing" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1d0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_multiprocessing_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_multiprocessing - Win32 Release" -# Name "_multiprocessing - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\_multiprocessing\multiprocessing.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_multiprocessing\pipe_connection.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_multiprocessing\semaphore.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_multiprocessing\socket_connection.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_multiprocessing\win32_functions.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_multiprocessing" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_multiprocessing - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_multiprocessing.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_multiprocessing.mak" CFG="_multiprocessing - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_multiprocessing - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_multiprocessing - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_multiprocessing" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_multiprocessing - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_multiprocessing" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_multiprocessing.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_multiprocessing - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_multiprocessing" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1d0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_multiprocessing_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_multiprocessing - Win32 Release" +# Name "_multiprocessing - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\_multiprocessing\multiprocessing.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_multiprocessing\pipe_connection.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_multiprocessing\semaphore.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_multiprocessing\socket_connection.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_multiprocessing\win32_functions.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/_socket.dsp b/PC/VC6/_socket.dsp index 55ee8f2..6de9ce7 100644 --- a/PC/VC6/_socket.dsp +++ b/PC/VC6/_socket.dsp @@ -1,99 +1,99 @@ -# Microsoft Developer Studio Project File - Name="_socket" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_socket - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_socket.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_socket.mak" CFG="_socket - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_socket - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_socket - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_socket" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_socket - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_socket" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_socket - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_socket" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_socket - Win32 Release" -# Name "_socket - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\socketmodule.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_socket" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_socket - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_socket.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_socket.mak" CFG="_socket - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_socket - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_socket - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_socket" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_socket - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_socket" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_socket - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_socket" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_socket - Win32 Release" +# Name "_socket - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\socketmodule.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/_sqlite3.dsp b/PC/VC6/_sqlite3.dsp index 3869938..7115a82 100644 --- a/PC/VC6/_sqlite3.dsp +++ b/PC/VC6/_sqlite3.dsp @@ -1,131 +1,131 @@ -# Microsoft Developer Studio Project File - Name="_sqlite3" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_sqlite3 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_sqlite3.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_sqlite3.mak" CFG="_sqlite3 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_sqlite3 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_sqlite3 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_sqlite3" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_sqlite3 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_sqlite3" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\sqlite-source-3.3.4" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D MODULE_NAME=\"sqlite3\" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\sqlite-source-3.3.4\sqlite3.lib /nologo /base:"0x1e180000" /subsystem:windows /dll /debug /machine:I386 /out:"./_sqlite3.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_sqlite3 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_sqlite3" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\..\sqlite-source-3.3.4" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D MODULE_NAME=\"sqlite3\" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\sqlite-source-3.3.4\sqlite3.lib /nologo /base:"0x1e180000" /subsystem:windows /dll /debug /machine:I386 /out:"./_sqlite3_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_sqlite3 - Win32 Release" -# Name "_sqlite3 - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\cache.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\connection.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\cursor.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\microprotocols.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\module.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\prepare_protocol.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\row.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\statement.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sqlite\util.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_sqlite3" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_sqlite3 - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_sqlite3.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_sqlite3.mak" CFG="_sqlite3 - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_sqlite3 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_sqlite3 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_sqlite3" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_sqlite3 - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_sqlite3" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\sqlite-source-3.3.4" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D MODULE_NAME=\"sqlite3\" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\sqlite-source-3.3.4\sqlite3.lib /nologo /base:"0x1e180000" /subsystem:windows /dll /debug /machine:I386 /out:"./_sqlite3.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_sqlite3 - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_sqlite3" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\..\sqlite-source-3.3.4" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D MODULE_NAME=\"sqlite3\" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\sqlite-source-3.3.4\sqlite3.lib /nologo /base:"0x1e180000" /subsystem:windows /dll /debug /machine:I386 /out:"./_sqlite3_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_sqlite3 - Win32 Release" +# Name "_sqlite3 - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\cache.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\connection.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\cursor.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\microprotocols.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\module.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\prepare_protocol.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\row.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\statement.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sqlite\util.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/_testcapi.dsp b/PC/VC6/_testcapi.dsp index 0eaa25a..746a2c0 100644 --- a/PC/VC6/_testcapi.dsp +++ b/PC/VC6/_testcapi.dsp @@ -1,99 +1,99 @@ -# Microsoft Developer Studio Project File - Name="_testcapi" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_testcapi - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_testcapi.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_testcapi.mak" CFG="_testcapi - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_testcapi - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_testcapi - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_testcapi" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_testcapi - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_testcapi" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc09 /d "NDEBUG" -# ADD RSC /l 0xc09 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1e1F0000" /dll /machine:I386 /out:"./_testcapi.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_testcapi - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_testcapi" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc09 /d "_DEBUG" -# ADD RSC /l 0xc09 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1e1F0000" /dll /debug /machine:I386 /out:"./_testcapi_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_testcapi - Win32 Release" -# Name "_testcapi - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\_testcapimodule.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_testcapi" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_testcapi - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_testcapi.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_testcapi.mak" CFG="_testcapi - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_testcapi - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_testcapi - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_testcapi" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_testcapi - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_testcapi" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0xc09 /d "NDEBUG" +# ADD RSC /l 0xc09 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1e1F0000" /dll /machine:I386 /out:"./_testcapi.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_testcapi - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_testcapi" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0xc09 /d "_DEBUG" +# ADD RSC /l 0xc09 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1e1F0000" /dll /debug /machine:I386 /out:"./_testcapi_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_testcapi - Win32 Release" +# Name "_testcapi - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\_testcapimodule.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/_tkinter.dsp b/PC/VC6/_tkinter.dsp index 5d69f59..496b6c1 100644 --- a/PC/VC6/_tkinter.dsp +++ b/PC/VC6/_tkinter.dsp @@ -1,103 +1,103 @@ -# Microsoft Developer Studio Project File - Name="_tkinter" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=_tkinter - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_tkinter.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_tkinter.mak" CFG="_tkinter - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_tkinter - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "_tkinter - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "_tkinter" -# PROP Scc_LocalPath "..\..\.." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "_tkinter - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\_tkinter" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\tcltk\include" /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "WITH_APPINIT" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\..\..\tcltk\lib\tk85g.lib ..\..\..\tcltk\lib\tcl85g.lib odbc32.lib odbccp32.lib user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1e190000" /subsystem:windows /dll /debug /machine:I386 /out:"./_tkinter_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "_tkinter - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\_tkinter" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\..\tcltk\include" /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "WITH_APPINIT" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 ..\..\..\tcltk\lib\tk85.lib ..\..\..\tcltk\lib\tcl85.lib odbc32.lib odbccp32.lib user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1e190000" /subsystem:windows /dll /debug /machine:I386 /out:"./_tkinter.pyd" -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "_tkinter - Win32 Release" -# Name "_tkinter - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\_tkinter.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\tkappinit.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="_tkinter" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=_tkinter - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "_tkinter.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "_tkinter.mak" CFG="_tkinter - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "_tkinter - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "_tkinter - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "_tkinter" +# PROP Scc_LocalPath "..\..\.." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "_tkinter - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\_tkinter" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\tcltk\include" /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "WITH_APPINIT" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\..\..\tcltk\lib\tk85g.lib ..\..\..\tcltk\lib\tcl85g.lib odbc32.lib odbccp32.lib user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1e190000" /subsystem:windows /dll /debug /machine:I386 /out:"./_tkinter_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "_tkinter - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\_tkinter" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\..\tcltk\include" /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "WITH_APPINIT" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 ..\..\..\tcltk\lib\tk85.lib ..\..\..\tcltk\lib\tcl85.lib odbc32.lib odbccp32.lib user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x1e190000" /subsystem:windows /dll /debug /machine:I386 /out:"./_tkinter.pyd" +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "_tkinter - Win32 Release" +# Name "_tkinter - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\_tkinter.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\tkappinit.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/bz2.dsp b/PC/VC6/bz2.dsp index 1e96904..044b102 100644 --- a/PC/VC6/bz2.dsp +++ b/PC/VC6/bz2.dsp @@ -1,99 +1,99 @@ -# Microsoft Developer Studio Project File - Name="bz2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=bz2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bz2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bz2.mak" CFG="bz2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bz2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "bz2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "bz2" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bz2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\bz2" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\bzip2-1.0.5" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 ..\..\..\bzip2-1.0.5\libbz2.lib /nologo /base:"0x1D170000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./bz2.pyd" -# SUBTRACT LINK32 /pdb:none /nodefaultlib - -!ELSEIF "$(CFG)" == "bz2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\bz2" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\..\bzip2-1.0.5" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\..\..\bzip2-1.0.5\libbz2.lib /nologo /base:"0x1D170000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"msvcrt" /nodefaultlib:"libc" /out:"./bz2_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "bz2 - Win32 Release" -# Name "bz2 - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\bz2module.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="bz2" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=bz2 - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "bz2.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "bz2.mak" CFG="bz2 - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "bz2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "bz2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "bz2" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "bz2 - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\bz2" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\bzip2-1.0.5" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 ..\..\..\bzip2-1.0.5\libbz2.lib /nologo /base:"0x1D170000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./bz2.pyd" +# SUBTRACT LINK32 /pdb:none /nodefaultlib + +!ELSEIF "$(CFG)" == "bz2 - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\bz2" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\..\bzip2-1.0.5" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\..\..\bzip2-1.0.5\libbz2.lib /nologo /base:"0x1D170000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"msvcrt" /nodefaultlib:"libc" /out:"./bz2_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "bz2 - Win32 Release" +# Name "bz2 - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\bz2module.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/pyexpat.dsp b/PC/VC6/pyexpat.dsp index 561c9ef..1636627 100644 --- a/PC/VC6/pyexpat.dsp +++ b/PC/VC6/pyexpat.dsp @@ -1,111 +1,111 @@ -# Microsoft Developer Studio Project File - Name="pyexpat" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=pyexpat - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "pyexpat.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "pyexpat.mak" CFG="pyexpat - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "pyexpat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "pyexpat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "pyexpat" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "pyexpat - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\pyexpat" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D BYTEORDER=1234 /D XML_CONTEXT_BYTES=1024 /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D100000" /subsystem:windows /dll /debug /machine:I386 /out:"./pyexpat.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "pyexpat - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\pyexpat" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "HAVE_EXPAT_H" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D BYTEORDER=1234 /D XML_CONTEXT_BYTES=1024 /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D100000" /subsystem:windows /dll /debug /machine:I386 /out:"./pyexpat_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "pyexpat - Win32 Release" -# Name "pyexpat - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\pyexpat.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\expat\xmlparse.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\expat\xmlrole.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\expat\xmltok.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="pyexpat" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=pyexpat - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "pyexpat.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "pyexpat.mak" CFG="pyexpat - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "pyexpat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "pyexpat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "pyexpat" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "pyexpat - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\pyexpat" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D BYTEORDER=1234 /D XML_CONTEXT_BYTES=1024 /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D100000" /subsystem:windows /dll /debug /machine:I386 /out:"./pyexpat.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "pyexpat - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\pyexpat" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\Modules\expat" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "HAVE_EXPAT_H" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /D "XML_DTD" /D BYTEORDER=1234 /D XML_CONTEXT_BYTES=1024 /D "XML_STATIC" /D "HAVE_MEMMOVE" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D100000" /subsystem:windows /dll /debug /machine:I386 /out:"./pyexpat_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "pyexpat - Win32 Release" +# Name "pyexpat - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\pyexpat.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\expat\xmlparse.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\expat\xmlrole.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\expat\xmltok.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/pythoncore.dsp b/PC/VC6/pythoncore.dsp index ea4f52d..6ef2cf8 100644 --- a/PC/VC6/pythoncore.dsp +++ b/PC/VC6/pythoncore.dsp @@ -1,761 +1,761 @@ -# Microsoft Developer Studio Project File - Name="pythoncore" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=pythoncore - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "pythoncore.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "pythoncore.mak" CFG="pythoncore - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "pythoncore - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "pythoncore - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "pythoncore" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "pythoncore - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\pythoncore" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\modules\zlib" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "USE_DL_EXPORT" /YX /FD /Zm200 /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /i "..\..\Include" /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python31.dll" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "pythoncore - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\pythoncore" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\modules\zlib" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "USE_DL_EXPORT" /D "WIN32" /D "_WINDOWS" /YX /FD /Zm200 /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /i "..\..\Include" /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python31_d.dll" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "pythoncore - Win32 Release" -# Name "pythoncore - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\_bisectmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\cjkcodecs\_codecs_cn.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\cjkcodecs\_codecs_hk.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\cjkcodecs\_codecs_iso2022.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\cjkcodecs\_codecs_jp.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\cjkcodecs\_codecs_kr.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\cjkcodecs\_codecs_tw.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_codecsmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_collectionsmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_csv.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_functoolsmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_heapqmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_io\_iomodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_json.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_localemodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_lsprof.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_pickle.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_randommodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_sre.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_struct.c -# End Source File -# Begin Source File - -SOURCE=..\..\PC\_subprocess.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_threadmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\_warnings.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_weakref.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\abstract.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\acceler.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\adler32.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\arraymodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\asdl.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\ast.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\atexitmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\audioop.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\binascii.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\bitset.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\bltinmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\boolobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_io\bufferedio.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\bytearrayobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\bytes_methods.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_io\bytesio.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\bytesobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\capsule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\cellobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\ceval.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\classobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\cmathmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\cobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\codecs.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\codeobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\compile.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\complexobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\compress.c -# End Source File -# Begin Source File - -SOURCE=..\config.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\crc32.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\datetimemodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\deflate.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\descrobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\dictobject.c -# End Source File -# Begin Source File - -SOURCE=..\dl_nt.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\dtoa.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\dynload_win.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\enumobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\errnomodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\errors.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\exceptions.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_io\fileio.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\fileobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\firstsets.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\floatobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\formatter_unicode.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\frameobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\frozen.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\funcobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\future.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\gcmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\genobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\getargs.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\getbuildinfo.c -# ADD CPP /D BUILD=46 -# End Source File -# Begin Source File - -SOURCE=..\..\Python\getcompiler.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\getcopyright.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\getopt.c -# End Source File -# Begin Source File - -SOURCE=..\getpathp.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\getplatform.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\getversion.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\graminit.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\grammar.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\grammar1.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\gzio.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\import.c -# End Source File -# Begin Source File - -SOURCE=..\import_nt.c -# ADD CPP /I "..\..\Python" -# End Source File -# Begin Source File - -SOURCE=..\..\Python\importdl.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\infback.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\inffast.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\inflate.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\inftrees.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_io\iobase.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\iterobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\itertoolsmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\listnode.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\listobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\longobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\main.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\marshal.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\mathmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\md5module.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\memoryobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\metagrammar.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\methodobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\mmapmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\modsupport.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\moduleobject.c -# End Source File -# Begin Source File - -SOURCE=..\msvcrtmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\cjkcodecs\multibytecodec.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\myreadline.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\mysnprintf.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\mystrtoul.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\node.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\object.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\obmalloc.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\operator.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\parser.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\parsermodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\parsetok.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\peephole.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\posixmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\pyarena.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\pyctype.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\pyfpe.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\pymath.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\pystate.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\pystrcmp.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\pystrtod.c -# End Source File -# Begin Source File - -SOURCE="..\..\Python\Python-ast.c" -# End Source File -# Begin Source File - -SOURCE=..\python_nt.rc -# End Source File -# Begin Source File - -SOURCE=..\..\Python\pythonrun.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\rangeobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\rotatingtree.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\setobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\sha1module.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\sha256module.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\sha512module.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\signalmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\sliceobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_io\stringio.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\structmember.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\structseq.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\symtable.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\symtablemodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\sysmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\_io\textio.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\thread.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\timemodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Parser\tokenizer.c -# End Source File -# Begin Source File - -SOURCE=..\..\Python\traceback.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\trees.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\tupleobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\typeobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\uncompr.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\unicodectype.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\unicodeobject.c -# End Source File -# Begin Source File - -SOURCE=..\..\Objects\weakrefobject.c -# End Source File -# Begin Source File - -SOURCE=..\winreg.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\xxsubtype.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zipimport.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlibmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\Modules\zlib\zutil.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="pythoncore" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=pythoncore - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "pythoncore.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "pythoncore.mak" CFG="pythoncore - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "pythoncore - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "pythoncore - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "pythoncore" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "pythoncore - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\pythoncore" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\modules\zlib" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "USE_DL_EXPORT" /YX /FD /Zm200 /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\Include" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python31.dll" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "pythoncore - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\pythoncore" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /I "..\..\modules\zlib" /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "USE_DL_EXPORT" /D "WIN32" /D "_WINDOWS" /YX /FD /Zm200 /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\Include" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python31_d.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "pythoncore - Win32 Release" +# Name "pythoncore - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\_bisectmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\cjkcodecs\_codecs_cn.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\cjkcodecs\_codecs_hk.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\cjkcodecs\_codecs_iso2022.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\cjkcodecs\_codecs_jp.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\cjkcodecs\_codecs_kr.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\cjkcodecs\_codecs_tw.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_codecsmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_collectionsmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_csv.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_functoolsmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_heapqmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_io\_iomodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_json.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_localemodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_lsprof.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_pickle.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_randommodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_sre.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_struct.c +# End Source File +# Begin Source File + +SOURCE=..\..\PC\_subprocess.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_threadmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\_warnings.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_weakref.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\abstract.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\acceler.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\adler32.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\arraymodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\asdl.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\ast.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\atexitmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\audioop.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\binascii.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\bitset.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\bltinmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\boolobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_io\bufferedio.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\bytearrayobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\bytes_methods.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_io\bytesio.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\bytesobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\capsule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\cellobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\ceval.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\classobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\cmathmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\cobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\codecs.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\codeobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\compile.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\complexobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\compress.c +# End Source File +# Begin Source File + +SOURCE=..\config.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\crc32.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\datetimemodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\deflate.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\descrobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\dictobject.c +# End Source File +# Begin Source File + +SOURCE=..\dl_nt.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\dtoa.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\dynload_win.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\enumobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\errnomodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\errors.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\exceptions.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_io\fileio.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\fileobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\firstsets.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\floatobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\formatter_unicode.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\frameobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\frozen.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\funcobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\future.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\gcmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\genobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\getargs.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\getbuildinfo.c +# ADD CPP /D BUILD=46 +# End Source File +# Begin Source File + +SOURCE=..\..\Python\getcompiler.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\getcopyright.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\getopt.c +# End Source File +# Begin Source File + +SOURCE=..\getpathp.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\getplatform.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\getversion.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\graminit.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\grammar.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\grammar1.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\gzio.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\import.c +# End Source File +# Begin Source File + +SOURCE=..\import_nt.c +# ADD CPP /I "..\..\Python" +# End Source File +# Begin Source File + +SOURCE=..\..\Python\importdl.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\infback.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\inffast.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\inflate.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\inftrees.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_io\iobase.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\iterobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\itertoolsmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\listnode.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\listobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\longobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\main.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\marshal.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\mathmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\md5module.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\memoryobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\metagrammar.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\methodobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\mmapmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\modsupport.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\moduleobject.c +# End Source File +# Begin Source File + +SOURCE=..\msvcrtmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\cjkcodecs\multibytecodec.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\myreadline.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\mysnprintf.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\mystrtoul.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\node.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\object.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\obmalloc.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\operator.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\parser.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\parsermodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\parsetok.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\peephole.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\posixmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\pyarena.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\pyctype.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\pyfpe.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\pymath.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\pystate.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\pystrcmp.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\pystrtod.c +# End Source File +# Begin Source File + +SOURCE="..\..\Python\Python-ast.c" +# End Source File +# Begin Source File + +SOURCE=..\python_nt.rc +# End Source File +# Begin Source File + +SOURCE=..\..\Python\pythonrun.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\rangeobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\rotatingtree.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\setobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\sha1module.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\sha256module.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\sha512module.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\signalmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\sliceobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_io\stringio.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\structmember.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\structseq.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\symtable.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\symtablemodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\sysmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\_io\textio.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\thread.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\timemodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Parser\tokenizer.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\traceback.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\trees.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\tupleobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\typeobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\uncompr.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\unicodectype.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\unicodeobject.c +# End Source File +# Begin Source File + +SOURCE=..\..\Objects\weakrefobject.c +# End Source File +# Begin Source File + +SOURCE=..\winreg.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\xxsubtype.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zipimport.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlibmodule.c +# End Source File +# Begin Source File + +SOURCE=..\..\Modules\zlib\zutil.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/select.dsp b/PC/VC6/select.dsp index d0e528c..a46d2ea 100644 --- a/PC/VC6/select.dsp +++ b/PC/VC6/select.dsp @@ -1,99 +1,99 @@ -# Microsoft Developer Studio Project File - Name="select" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=select - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "select.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "select.mak" CFG="select - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "select - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "select - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "select" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "select - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\select" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /base:"0x1D110000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./select.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "select - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\select" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /base:"0x1D110000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /nodefaultlib:"msvcrt" /out:"./select_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "select - Win32 Release" -# Name "select - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\selectmodule.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="select" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=select - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "select.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "select.mak" CFG="select - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "select - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "select - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "select" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "select - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\select" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /base:"0x1D110000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./select.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "select - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\select" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /base:"0x1D110000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /nodefaultlib:"msvcrt" /out:"./select_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "select - Win32 Release" +# Name "select - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\selectmodule.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/unicodedata.dsp b/PC/VC6/unicodedata.dsp index a04db67..3b9a8b7 100644 --- a/PC/VC6/unicodedata.dsp +++ b/PC/VC6/unicodedata.dsp @@ -1,99 +1,99 @@ -# Microsoft Developer Studio Project File - Name="unicodedata" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=unicodedata - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "unicodedata.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "unicodedata.mak" CFG="unicodedata - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "unicodedata - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unicodedata - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "unicodedata" -# PROP Scc_LocalPath ".." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "unicodedata - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\unicodedata" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc09 /d "NDEBUG" -# ADD RSC /l 0xc09 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D120000" /dll /machine:I386 /out:"./unicodedata.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "unicodedata - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\unicodedata" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc09 /d "_DEBUG" -# ADD RSC /l 0xc09 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D120000" /dll /debug /machine:I386 /out:"./unicodedata_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "unicodedata - Win32 Release" -# Name "unicodedata - Win32 Debug" -# Begin Source File - -SOURCE=..\..\Modules\unicodedata.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="unicodedata" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=unicodedata - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "unicodedata.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "unicodedata.mak" CFG="unicodedata - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "unicodedata - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "unicodedata - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "unicodedata" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "unicodedata - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\unicodedata" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0xc09 /d "NDEBUG" +# ADD RSC /l 0xc09 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D120000" /dll /machine:I386 /out:"./unicodedata.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "unicodedata - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\unicodedata" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0xc09 /d "_DEBUG" +# ADD RSC /l 0xc09 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1D120000" /dll /debug /machine:I386 /out:"./unicodedata_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "unicodedata - Win32 Release" +# Name "unicodedata - Win32 Debug" +# Begin Source File + +SOURCE=..\..\Modules\unicodedata.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/w9xpopen.dsp b/PC/VC6/w9xpopen.dsp index 6a6403c..ee63cb9 100644 --- a/PC/VC6/w9xpopen.dsp +++ b/PC/VC6/w9xpopen.dsp @@ -1,97 +1,97 @@ -# Microsoft Developer Studio Project File - Name="w9xpopen" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=w9xpopen - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "w9xpopen.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "w9xpopen.mak" CFG="w9xpopen - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "w9xpopen - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "w9xpopen - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "w9xpopen - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\w9xpopen" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc09 /d "NDEBUG" -# ADD RSC /l 0xc09 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 user32.lib /nologo /machine:I386 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "w9xpopen - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\w9xpopen" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc09 /d "_DEBUG" -# ADD RSC /l 0xc09 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 user32.lib /nologo /debug /machine:I386 /out:"./w9xpopen_d.exe" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "w9xpopen - Win32 Release" -# Name "w9xpopen - Win32 Debug" -# Begin Source File - -SOURCE=..\w9xpopen.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="w9xpopen" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=w9xpopen - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "w9xpopen.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "w9xpopen.mak" CFG="w9xpopen - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "w9xpopen - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "w9xpopen - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "w9xpopen - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\w9xpopen" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0xc09 /d "NDEBUG" +# ADD RSC /l 0xc09 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 user32.lib /nologo /machine:I386 +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "w9xpopen - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\w9xpopen" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0xc09 /d "_DEBUG" +# ADD RSC /l 0xc09 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 user32.lib /nologo /debug /machine:I386 /out:"./w9xpopen_d.exe" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "w9xpopen - Win32 Release" +# Name "w9xpopen - Win32 Debug" +# Begin Source File + +SOURCE=..\w9xpopen.c +# End Source File +# End Target +# End Project diff --git a/PC/VC6/winsound.dsp b/PC/VC6/winsound.dsp index 6e09b9b..68e814c 100644 --- a/PC/VC6/winsound.dsp +++ b/PC/VC6/winsound.dsp @@ -1,99 +1,99 @@ -# Microsoft Developer Studio Project File - Name="winsound" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=winsound - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "winsound.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "winsound.mak" CFG="winsound - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "winsound - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "winsound - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "winsound" -# PROP Scc_LocalPath "..\pc" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "winsound - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-release\winsound" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc09 /d "NDEBUG" -# ADD RSC /l 0xc09 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib winmm.lib user32.lib /nologo /base:"0x1D160000" /dll /machine:I386 /out:"./winsound.pyd" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "winsound - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "x86-temp-debug\winsound" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc09 /d "_DEBUG" -# ADD RSC /l 0xc09 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 user32.lib kernel32.lib winmm.lib /nologo /base:"0x1D160000" /dll /debug /machine:I386 /out:"./winsound_d.pyd" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "winsound - Win32 Release" -# Name "winsound - Win32 Debug" -# Begin Source File - -SOURCE=..\winsound.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="winsound" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=winsound - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "winsound.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "winsound.mak" CFG="winsound - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "winsound - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "winsound - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "winsound" +# PROP Scc_LocalPath "..\pc" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "winsound - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-release\winsound" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0xc09 /d "NDEBUG" +# ADD RSC /l 0xc09 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib winmm.lib user32.lib /nologo /base:"0x1D160000" /dll /machine:I386 /out:"./winsound.pyd" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "winsound - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "x86-temp-debug\winsound" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +F90=df.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WINSOUND_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0xc09 /d "_DEBUG" +# ADD RSC /l 0xc09 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 user32.lib kernel32.lib winmm.lib /nologo /base:"0x1D160000" /dll /debug /machine:I386 /out:"./winsound_d.pyd" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "winsound - Win32 Release" +# Name "winsound - Win32 Debug" +# Begin Source File + +SOURCE=..\winsound.c +# End Source File +# End Target +# End Project diff --git a/PC/VS7.1/build_ssl.bat b/PC/VS7.1/build_ssl.bat index 9aad441..f6be3c0 100644 --- a/PC/VS7.1/build_ssl.bat +++ b/PC/VS7.1/build_ssl.bat @@ -1,12 +1,12 @@ -if "%1" == "ReleaseAMD64" call "%MSSdk%\SetEnv" /XP64 /RETAIL - -@echo off -if not defined HOST_PYTHON ( - if %1 EQU Debug ( - set HOST_PYTHON=python_d.exe - ) ELSE ( - set HOST_PYTHON=python.exe - ) -) -%HOST_PYTHON% build_ssl.py %1 %2 - +if "%1" == "ReleaseAMD64" call "%MSSdk%\SetEnv" /XP64 /RETAIL + +@echo off +if not defined HOST_PYTHON ( + if %1 EQU Debug ( + set HOST_PYTHON=python_d.exe + ) ELSE ( + set HOST_PYTHON=python.exe + ) +) +%HOST_PYTHON% build_ssl.py %1 %2 + diff --git a/PC/VS8.0/build.bat b/PC/VS8.0/build.bat index a6d961e..9bc8186 100644 --- a/PC/VS8.0/build.bat +++ b/PC/VS8.0/build.bat @@ -1,17 +1,17 @@ -@echo off -rem A batch program to build or rebuild a particular configuration. -rem just for convenience. - -setlocal -set platf=Win32 -set conf=Release -set build=/build - -:CheckOpts -if "%1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts -if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts -if "%1"=="-r" (set build=/rebuild) & shift & goto CheckOpts - -set cmd=devenv pcbuild.sln %build% "%conf%|%platf%" -echo %cmd% -%cmd% +@echo off +rem A batch program to build or rebuild a particular configuration. +rem just for convenience. + +setlocal +set platf=Win32 +set conf=Release +set build=/build + +:CheckOpts +if "%1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts +if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts +if "%1"=="-r" (set build=/rebuild) & shift & goto CheckOpts + +set cmd=devenv pcbuild.sln %build% "%conf%|%platf%" +echo %cmd% +%cmd% diff --git a/PC/VS8.0/build_env.bat b/PC/VS8.0/build_env.bat index 01024cf..4c67ae3 100644 --- a/PC/VS8.0/build_env.bat +++ b/PC/VS8.0/build_env.bat @@ -1 +1 @@ -@%comspec% /k env.bat %* +@%comspec% /k env.bat %* diff --git a/PC/VS8.0/build_pgo.bat b/PC/VS8.0/build_pgo.bat index d28a767..a37b5bf 100644 --- a/PC/VS8.0/build_pgo.bat +++ b/PC/VS8.0/build_pgo.bat @@ -1,41 +1,41 @@ -@echo off -rem A batch program to build PGO (Profile guided optimization) by first -rem building instrumented binaries, then running the testsuite, and -rem finally building the optimized code. -rem Note, after the first instrumented run, one can just keep on -rem building the PGUpdate configuration while developing. - -setlocal -set platf=Win32 - -rem use the performance testsuite. This is quick and simple -set job1=..\..\tools\pybench\pybench.py -n 1 -C 1 --with-gc -set path1=..\..\tools\pybench - -rem or the whole testsuite for more thorough testing -set job2=..\..\lib\test\regrtest.py -set path2=..\..\lib - -set job=%job1% -set clrpath=%path1% - -:CheckOpts -if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts -if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts - -set PGI=%platf%-pgi -set PGO=%platf%-pgo - -@echo on -rem build the instrumented version -call build -p %platf% -c PGInstrument - -rem remove .pyc files, .pgc files and execute the job -%PGI%\python.exe rmpyc.py %clrpath% -del %PGI%\*.pgc -%PGI%\python.exe %job% - -rem finally build the optimized version -if exist %PGO% del /s /q %PGO% -call build -p %platf% -c PGUpdate - +@echo off +rem A batch program to build PGO (Profile guided optimization) by first +rem building instrumented binaries, then running the testsuite, and +rem finally building the optimized code. +rem Note, after the first instrumented run, one can just keep on +rem building the PGUpdate configuration while developing. + +setlocal +set platf=Win32 + +rem use the performance testsuite. This is quick and simple +set job1=..\..\tools\pybench\pybench.py -n 1 -C 1 --with-gc +set path1=..\..\tools\pybench + +rem or the whole testsuite for more thorough testing +set job2=..\..\lib\test\regrtest.py +set path2=..\..\lib + +set job=%job1% +set clrpath=%path1% + +:CheckOpts +if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts +if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts + +set PGI=%platf%-pgi +set PGO=%platf%-pgo + +@echo on +rem build the instrumented version +call build -p %platf% -c PGInstrument + +rem remove .pyc files, .pgc files and execute the job +%PGI%\python.exe rmpyc.py %clrpath% +del %PGI%\*.pgc +%PGI%\python.exe %job% + +rem finally build the optimized version +if exist %PGO% del /s /q %PGO% +call build -p %platf% -c PGUpdate + diff --git a/PC/VS8.0/build_ssl.bat b/PC/VS8.0/build_ssl.bat index 4effc6f..cee64a8 100644 --- a/PC/VS8.0/build_ssl.bat +++ b/PC/VS8.0/build_ssl.bat @@ -1,12 +1,12 @@ -@echo off -if not defined HOST_PYTHON ( - if %1 EQU Debug ( - set HOST_PYTHON=python_d.exe - if not exist python31_d.dll exit 1 - ) ELSE ( - set HOST_PYTHON=python.exe - if not exist python31.dll exit 1 - ) -) -%HOST_PYTHON% build_ssl.py %1 %2 %3 - +@echo off +if not defined HOST_PYTHON ( + if %1 EQU Debug ( + set HOST_PYTHON=python_d.exe + if not exist python31_d.dll exit 1 + ) ELSE ( + set HOST_PYTHON=python.exe + if not exist python31.dll exit 1 + ) +) +%HOST_PYTHON% build_ssl.py %1 %2 %3 + diff --git a/PC/VS8.0/env.bat b/PC/VS8.0/env.bat index 7717d01..a4990a8 100644 --- a/PC/VS8.0/env.bat +++ b/PC/VS8.0/env.bat @@ -1,5 +1,5 @@ -@echo off -set VS8=%ProgramFiles%\Microsoft Visual Studio 8 -echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64 -echo. -call "%VS8%\VC\vcvarsall.bat" %1 +@echo off +set VS8=%ProgramFiles%\Microsoft Visual Studio 8 +echo Build environments: x86, ia64, amd64, x86_amd64, x86_ia64 +echo. +call "%VS8%\VC\vcvarsall.bat" %1 diff --git a/PC/VS8.0/idle.bat b/PC/VS8.0/idle.bat index 274ae1a..123e704 100644 --- a/PC/VS8.0/idle.bat +++ b/PC/VS8.0/idle.bat @@ -1,15 +1,15 @@ -@echo off -rem start idle -rem Usage: idle [-d] -rem -d Run Debug build (python_d.exe). Else release build. - -setlocal -set exe=python -PATH %PATH%;..\..\..\tcltk\bin - -if "%1"=="-d" (set exe=python_d) & shift - -set cmd=%exe% ../../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 - -echo on -%cmd% +@echo off +rem start idle +rem Usage: idle [-d] +rem -d Run Debug build (python_d.exe). Else release build. + +setlocal +set exe=python +PATH %PATH%;..\..\..\tcltk\bin + +if "%1"=="-d" (set exe=python_d) & shift + +set cmd=%exe% ../../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 + +echo on +%cmd% diff --git a/PC/VS8.0/pyd.vsprops b/PC/VS8.0/pyd.vsprops index 34c21e1..ce039eb 100644 --- a/PC/VS8.0/pyd.vsprops +++ b/PC/VS8.0/pyd.vsprops @@ -1,28 +1,28 @@ - - - - - - - + + + + + + + diff --git a/PC/VS8.0/pyd_d.vsprops b/PC/VS8.0/pyd_d.vsprops index 313a30b..8508156 100644 --- a/PC/VS8.0/pyd_d.vsprops +++ b/PC/VS8.0/pyd_d.vsprops @@ -1,36 +1,36 @@ - - - - - - - - + + + + + + + + diff --git a/PC/VS8.0/pyproject.vsprops b/PC/VS8.0/pyproject.vsprops index 70025bd..1585706 100644 --- a/PC/VS8.0/pyproject.vsprops +++ b/PC/VS8.0/pyproject.vsprops @@ -1,87 +1,87 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/PC/VS8.0/rt.bat b/PC/VS8.0/rt.bat index d691cbd..c35ec0c 100644 --- a/PC/VS8.0/rt.bat +++ b/PC/VS8.0/rt.bat @@ -1,52 +1,52 @@ -@echo off -rem Run Tests. Run the regression test suite. -rem Usage: rt [-d] [-O] [-q] regrtest_args -rem -d Run Debug build (python_d.exe). Else release build. -rem -O Run python.exe or python_d.exe (see -d) with -O. -rem -q "quick" -- normally the tests are run twice, the first time -rem after deleting all the .py[co] files reachable from Lib/. -rem -q runs the tests just once, and without deleting .py[co] files. -rem All leading instances of these switches are shifted off, and -rem whatever remains is passed to regrtest.py. For example, -rem rt -O -d -x test_thread -rem runs -rem python_d -O ../lib/test/regrtest.py -x test_thread -rem twice, and -rem rt -q -g test_binascii -rem runs -rem python_d ../lib/test/regrtest.py -g test_binascii -rem to generate the expected-output file for binascii quickly. -rem -rem Confusing: if you want to pass a comma-separated list, like -rem -u network,largefile -rem then you have to quote it on the rt line, like -rem rt -u "network,largefile" - -setlocal - -set exe=python -set qmode= -set dashO= -PATH %PATH%;..\..\..\tcltk\bin - -:CheckOpts -if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts -if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts -if "%1"=="-d" (set exe=python_d) & shift & goto CheckOpts - -set cmd=%exe% %dashO% -E ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9 -if defined qmode goto Qmode - -echo Deleting .pyc/.pyo files ... -%exe% rmpyc.py - -echo on -%cmd% -@echo off - -echo About to run again without deleting .pyc/.pyo first: -pause - -:Qmode -echo on -%cmd% +@echo off +rem Run Tests. Run the regression test suite. +rem Usage: rt [-d] [-O] [-q] regrtest_args +rem -d Run Debug build (python_d.exe). Else release build. +rem -O Run python.exe or python_d.exe (see -d) with -O. +rem -q "quick" -- normally the tests are run twice, the first time +rem after deleting all the .py[co] files reachable from Lib/. +rem -q runs the tests just once, and without deleting .py[co] files. +rem All leading instances of these switches are shifted off, and +rem whatever remains is passed to regrtest.py. For example, +rem rt -O -d -x test_thread +rem runs +rem python_d -O ../lib/test/regrtest.py -x test_thread +rem twice, and +rem rt -q -g test_binascii +rem runs +rem python_d ../lib/test/regrtest.py -g test_binascii +rem to generate the expected-output file for binascii quickly. +rem +rem Confusing: if you want to pass a comma-separated list, like +rem -u network,largefile +rem then you have to quote it on the rt line, like +rem rt -u "network,largefile" + +setlocal + +set exe=python +set qmode= +set dashO= +PATH %PATH%;..\..\..\tcltk\bin + +:CheckOpts +if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts +if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts +if "%1"=="-d" (set exe=python_d) & shift & goto CheckOpts + +set cmd=%exe% %dashO% -E ../../lib/test/regrtest.py %1 %2 %3 %4 %5 %6 %7 %8 %9 +if defined qmode goto Qmode + +echo Deleting .pyc/.pyo files ... +%exe% rmpyc.py + +echo on +%cmd% +@echo off + +echo About to run again without deleting .pyc/.pyo first: +pause + +:Qmode +echo on +%cmd% diff --git a/PC/VS8.0/sqlite3.vsprops b/PC/VS8.0/sqlite3.vsprops index 8c028dc..4a59c60 100644 --- a/PC/VS8.0/sqlite3.vsprops +++ b/PC/VS8.0/sqlite3.vsprops @@ -1,14 +1,14 @@ - - - - + + + + diff --git a/Tools/buildbot/build-amd64.bat b/Tools/buildbot/build-amd64.bat index 8ec3328..5175c62 100644 --- a/Tools/buildbot/build-amd64.bat +++ b/Tools/buildbot/build-amd64.bat @@ -1,6 +1,6 @@ -@rem Used by the buildbot "compile" step. -cmd /c Tools\buildbot\external-amd64.bat -call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 -cmd /c Tools\buildbot\clean-amd64.bat -vcbuild /useenv PCbuild\kill_python.vcproj "Debug|x64" && PCbuild\amd64\kill_python_d.exe -vcbuild PCbuild\pcbuild.sln "Debug|x64" +@rem Used by the buildbot "compile" step. +cmd /c Tools\buildbot\external-amd64.bat +call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 +cmd /c Tools\buildbot\clean-amd64.bat +vcbuild /useenv PCbuild\kill_python.vcproj "Debug|x64" && PCbuild\amd64\kill_python_d.exe +vcbuild PCbuild\pcbuild.sln "Debug|x64" diff --git a/Tools/buildbot/build.bat b/Tools/buildbot/build.bat index 976ce72..ab3ea7d 100644 --- a/Tools/buildbot/build.bat +++ b/Tools/buildbot/build.bat @@ -1,7 +1,7 @@ -@rem Used by the buildbot "compile" step. -cmd /c Tools\buildbot\external.bat -call "%VS90COMNTOOLS%vsvars32.bat" -cmd /c Tools\buildbot\clean.bat -vcbuild /useenv PCbuild\kill_python.vcproj "Debug|Win32" && PCbuild\kill_python_d.exe -vcbuild /useenv PCbuild\pcbuild.sln "Debug|Win32" - +@rem Used by the buildbot "compile" step. +cmd /c Tools\buildbot\external.bat +call "%VS90COMNTOOLS%vsvars32.bat" +cmd /c Tools\buildbot\clean.bat +vcbuild /useenv PCbuild\kill_python.vcproj "Debug|Win32" && PCbuild\kill_python_d.exe +vcbuild /useenv PCbuild\pcbuild.sln "Debug|Win32" + diff --git a/Tools/buildbot/buildmsi.bat b/Tools/buildbot/buildmsi.bat index 167efd0..4430cb8 100644 --- a/Tools/buildbot/buildmsi.bat +++ b/Tools/buildbot/buildmsi.bat @@ -1,21 +1,21 @@ -@rem Used by the buildbot "buildmsi" step. - -cmd /c Tools\buildbot\external.bat -@rem build release versions of things -call "%VS90COMNTOOLS%vsvars32.bat" - -@rem build Python -vcbuild /useenv PCbuild\pcbuild.sln "Release|Win32" - -@rem build the documentation -bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp' -"%ProgramFiles%\HTML Help Workshop\hhc.exe" Doc\build\htmlhelp\python26a3.hhp - -@rem build the MSI file -cd PC -nmake /f icons.mak -cd ..\Tools\msi -del *.msi -nmake /f msisupport.mak -%HOST_PYTHON% msi.py - +@rem Used by the buildbot "buildmsi" step. + +cmd /c Tools\buildbot\external.bat +@rem build release versions of things +call "%VS90COMNTOOLS%vsvars32.bat" + +@rem build Python +vcbuild /useenv PCbuild\pcbuild.sln "Release|Win32" + +@rem build the documentation +bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp' +"%ProgramFiles%\HTML Help Workshop\hhc.exe" Doc\build\htmlhelp\python26a3.hhp + +@rem build the MSI file +cd PC +nmake /f icons.mak +cd ..\Tools\msi +del *.msi +nmake /f msisupport.mak +%HOST_PYTHON% msi.py + diff --git a/Tools/buildbot/clean-amd64.bat b/Tools/buildbot/clean-amd64.bat index 1ce1605..9fb35e9 100644 --- a/Tools/buildbot/clean-amd64.bat +++ b/Tools/buildbot/clean-amd64.bat @@ -1,7 +1,7 @@ -@rem Used by the buildbot "clean" step. -call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 -cd PCbuild -@echo Deleting .pyc/.pyo files ... -del /s Lib\*.pyc Lib\*.pyo -vcbuild /clean pcbuild.sln "Release|x64" -vcbuild /clean pcbuild.sln "Debug|x64" +@rem Used by the buildbot "clean" step. +call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 +cd PCbuild +@echo Deleting .pyc/.pyo files ... +del /s Lib\*.pyc Lib\*.pyo +vcbuild /clean pcbuild.sln "Release|x64" +vcbuild /clean pcbuild.sln "Debug|x64" diff --git a/Tools/buildbot/clean.bat b/Tools/buildbot/clean.bat index 0d4d12e..ec71804 100644 --- a/Tools/buildbot/clean.bat +++ b/Tools/buildbot/clean.bat @@ -1,7 +1,7 @@ -@rem Used by the buildbot "clean" step. -call "%VS90COMNTOOLS%vsvars32.bat" -@echo Deleting .pyc/.pyo files ... -del /s Lib\*.pyc Lib\*.pyo -cd PCbuild -vcbuild /clean pcbuild.sln "Release|Win32" -vcbuild /clean pcbuild.sln "Debug|Win32" +@rem Used by the buildbot "clean" step. +call "%VS90COMNTOOLS%vsvars32.bat" +@echo Deleting .pyc/.pyo files ... +del /s Lib\*.pyc Lib\*.pyo +cd PCbuild +vcbuild /clean pcbuild.sln "Release|Win32" +vcbuild /clean pcbuild.sln "Debug|Win32" diff --git a/Tools/buildbot/external-amd64.bat b/Tools/buildbot/external-amd64.bat index 0f46cf9..1cb2ce7 100644 --- a/Tools/buildbot/external-amd64.bat +++ b/Tools/buildbot/external-amd64.bat @@ -1,21 +1,21 @@ -@rem Fetches (and builds if necessary) external dependencies - -@rem Assume we start inside the Python source directory -call "Tools\buildbot\external-common.bat" -call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 - -if not exist tcltk64\bin\tcl85g.dll ( - cd tcl-8.5.2.1\win - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean all - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 install - cd ..\.. -) - -if not exist tcltk64\bin\tk85g.dll ( - cd tk-8.5.2.0\win - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 clean - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 all - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 install - cd ..\.. -) - +@rem Fetches (and builds if necessary) external dependencies + +@rem Assume we start inside the Python source directory +call "Tools\buildbot\external-common.bat" +call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64 + +if not exist tcltk64\bin\tcl85g.dll ( + cd tcl-8.5.2.1\win + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean all + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 install + cd ..\.. +) + +if not exist tcltk64\bin\tk85g.dll ( + cd tk-8.5.2.0\win + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 clean + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 all + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 install + cd ..\.. +) + diff --git a/Tools/buildbot/external-common.bat b/Tools/buildbot/external-common.bat index aba7fa9..8beee14 100644 --- a/Tools/buildbot/external-common.bat +++ b/Tools/buildbot/external-common.bat @@ -1,43 +1,43 @@ -@rem Common file shared between external.bat and external-amd64.bat. Responsible for -@rem fetching external components into the root\.. buildbot directories. - -cd .. -@rem XXX: If you need to force the buildbots to start from a fresh environment, uncomment -@rem the following, check it in, then check it out, comment it out, then check it back in. -@rem if exist bzip2-1.0.5 rd /s/q bzip2-1.0.5 -@rem if exist tcltk rd /s/q tcltk -@rem if exist tcltk64 rd /s/q tcltk64 -@rem if exist tcl8.4.12 rd /s/q tcl8.4.12 -@rem if exist tcl8.4.16 rd /s/q tcl8.4.16 -@rem if exist tcl-8.4.18.1 rd /s/q tcl-8.4.18.1 -@rem if exist tk8.4.12 rd /s/q tk8.4.12 -@rem if exist tk8.4.16 rd /s/q tk8.4.16 -@rem if exist tk-8.4.18.1 rd /s/q tk-8.4.18.1 -@rem if exist db-4.4.20 rd /s/q db-4.4.20 -@rem if exist openssl-0.9.8l rd /s/q openssl-0.9.8l -@rem if exist sqlite-3.5.9 rd /s/q sqlite-3.5.9 - -@rem bzip -if not exist bzip2-1.0.5 ( - rd /s/q bzip2-1.0.3 - svn export http://svn.python.org/projects/external/bzip2-1.0.5 -) - -@rem Sleepycat db -if not exist db-4.4.20 svn export http://svn.python.org/projects/external/db-4.4.20-vs9 db-4.4.20 - -@rem OpenSSL -if not exist openssl-0.9.8l svn export http://svn.python.org/projects/external/openssl-0.9.8l - -@rem tcl/tk -if not exist tcl-8.5.2.1 ( - rd /s/q tcltk tcltk64 - svn export http://svn.python.org/projects/external/tcl-8.5.2.1 -) -if not exist tk-8.5.2.0 svn export http://svn.python.org/projects/external/tk-8.5.2.0 - -@rem sqlite3 -if not exist sqlite-3.5.9 ( - rd /s/q sqlite-source-3.3.4 - svn export http://svn.python.org/projects/external/sqlite-3.5.9 -) +@rem Common file shared between external.bat and external-amd64.bat. Responsible for +@rem fetching external components into the root\.. buildbot directories. + +cd .. +@rem XXX: If you need to force the buildbots to start from a fresh environment, uncomment +@rem the following, check it in, then check it out, comment it out, then check it back in. +@rem if exist bzip2-1.0.5 rd /s/q bzip2-1.0.5 +@rem if exist tcltk rd /s/q tcltk +@rem if exist tcltk64 rd /s/q tcltk64 +@rem if exist tcl8.4.12 rd /s/q tcl8.4.12 +@rem if exist tcl8.4.16 rd /s/q tcl8.4.16 +@rem if exist tcl-8.4.18.1 rd /s/q tcl-8.4.18.1 +@rem if exist tk8.4.12 rd /s/q tk8.4.12 +@rem if exist tk8.4.16 rd /s/q tk8.4.16 +@rem if exist tk-8.4.18.1 rd /s/q tk-8.4.18.1 +@rem if exist db-4.4.20 rd /s/q db-4.4.20 +@rem if exist openssl-0.9.8l rd /s/q openssl-0.9.8l +@rem if exist sqlite-3.5.9 rd /s/q sqlite-3.5.9 + +@rem bzip +if not exist bzip2-1.0.5 ( + rd /s/q bzip2-1.0.3 + svn export http://svn.python.org/projects/external/bzip2-1.0.5 +) + +@rem Sleepycat db +if not exist db-4.4.20 svn export http://svn.python.org/projects/external/db-4.4.20-vs9 db-4.4.20 + +@rem OpenSSL +if not exist openssl-0.9.8l svn export http://svn.python.org/projects/external/openssl-0.9.8l + +@rem tcl/tk +if not exist tcl-8.5.2.1 ( + rd /s/q tcltk tcltk64 + svn export http://svn.python.org/projects/external/tcl-8.5.2.1 +) +if not exist tk-8.5.2.0 svn export http://svn.python.org/projects/external/tk-8.5.2.0 + +@rem sqlite3 +if not exist sqlite-3.5.9 ( + rd /s/q sqlite-source-3.3.4 + svn export http://svn.python.org/projects/external/sqlite-3.5.9 +) diff --git a/Tools/buildbot/external.bat b/Tools/buildbot/external.bat index d6b18ae..d90e8ce 100644 --- a/Tools/buildbot/external.bat +++ b/Tools/buildbot/external.bat @@ -1,21 +1,21 @@ -@rem Fetches (and builds if necessary) external dependencies - -@rem Assume we start inside the Python source directory -call "Tools\buildbot\external-common.bat" -call "%VS90COMNTOOLS%\vsvars32.bat" - -if not exist tcltk\bin\tcl85g.dll ( - @rem all and install need to be separate invocations, otherwise nmakehlp is not found on install - cd tcl-8.5.2.1\win - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk clean all - nmake -f makefile.vc DEBUG=1 INSTALLDIR=..\..\tcltk install - cd ..\.. -) - -if not exist tcltk\bin\tk85g.dll ( - cd tk-8.5.2.0\win - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 clean - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 all - nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 install - cd ..\.. -) +@rem Fetches (and builds if necessary) external dependencies + +@rem Assume we start inside the Python source directory +call "Tools\buildbot\external-common.bat" +call "%VS90COMNTOOLS%\vsvars32.bat" + +if not exist tcltk\bin\tcl85g.dll ( + @rem all and install need to be separate invocations, otherwise nmakehlp is not found on install + cd tcl-8.5.2.1\win + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk clean all + nmake -f makefile.vc DEBUG=1 INSTALLDIR=..\..\tcltk install + cd ..\.. +) + +if not exist tcltk\bin\tk85g.dll ( + cd tk-8.5.2.0\win + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 clean + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 all + nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 install + cd ..\.. +) diff --git a/Tools/buildbot/test-amd64.bat b/Tools/buildbot/test-amd64.bat index 6124b51..d178c92 100644 --- a/Tools/buildbot/test-amd64.bat +++ b/Tools/buildbot/test-amd64.bat @@ -1,3 +1,3 @@ -@rem Used by the buildbot "test" step. -cd PCbuild -call rt.bat -q -d -x64 -uall -rw +@rem Used by the buildbot "test" step. +cd PCbuild +call rt.bat -q -d -x64 -uall -rw diff --git a/Tools/buildbot/test.bat b/Tools/buildbot/test.bat index 7879046..16c07fb 100644 --- a/Tools/buildbot/test.bat +++ b/Tools/buildbot/test.bat @@ -1,4 +1,4 @@ -@rem Used by the buildbot "test" step. -cd PCbuild -call rt.bat -d -q -uall -rw -n - +@rem Used by the buildbot "test" step. +cd PCbuild +call rt.bat -d -q -uall -rw -n + diff --git a/Tools/msi/merge.py b/Tools/msi/merge.py index def3964..85de209 100644 --- a/Tools/msi/merge.py +++ b/Tools/msi/merge.py @@ -1,84 +1,84 @@ -import msilib,os,win32com,tempfile,sys -PCBUILD="PCBuild" -certname = None -from config import * - -Win64 = "amd64" in PCBUILD - -mod_dir = os.path.join(os.environ["ProgramFiles"], "Common Files", "Merge Modules") -msi = None -if len(sys.argv)==2: - msi = sys.argv[1] -if Win64: - modules = ["Microsoft_VC90_CRT_x86_x64.msm", "policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"] - if not msi: msi = "python-%s.amd64.msi" % full_current_version -else: - modules = ["Microsoft_VC90_CRT_x86.msm","policy_9_0_Microsoft_VC90_CRT_x86.msm"] - if not msi: msi = "python-%s.msi" % full_current_version -for i, n in enumerate(modules): - modules[i] = os.path.join(mod_dir, n) - -def merge(msi, feature, rootdir, modules): - cab_and_filecount = [] - # Step 1: Merge databases, extract cabfiles - m = msilib.MakeMerge2() - m.OpenLog("merge.log") - print "Opened Log" - m.OpenDatabase(msi) - print "Opened DB" - for module in modules: - print module - m.OpenModule(module,0) - print "Opened Module",module - m.Merge(feature, rootdir) - print "Errors:" - for e in m.Errors: - print e.Type, e.ModuleTable, e.DatabaseTable - print " Modkeys:", - for s in e.ModuleKeys: print s, - print - print " DBKeys:", - for s in e.DatabaseKeys: print s, - print - cabname = tempfile.mktemp(suffix=".cab") - m.ExtractCAB(cabname) - cab_and_filecount.append((cabname, len(m.ModuleFiles))) - m.CloseModule() - m.CloseDatabase(True) - m.CloseLog() - - # Step 2: Add CAB files - i = msilib.MakeInstaller() - db = i.OpenDatabase(msi, win32com.client.constants.msiOpenDatabaseModeTransact) - - v = db.OpenView("SELECT LastSequence FROM Media") - v.Execute(None) - maxmedia = -1 - while 1: - r = v.Fetch() - if not r: break - seq = r.IntegerData(1) - if seq > maxmedia: - maxmedia = seq - print "Start of Media", maxmedia - - for cabname, count in cab_and_filecount: - stream = "merged%d" % maxmedia - msilib.add_data(db, "Media", - [(maxmedia+1, maxmedia+count, None, "#"+stream, None, None)]) - msilib.add_stream(db, stream, cabname) - os.unlink(cabname) - maxmedia += count - # The merge module sets ALLUSERS to 1 in the property table. - # This is undesired; delete that - v = db.OpenView("DELETE FROM Property WHERE Property='ALLUSERS'") - v.Execute(None) - v.Close() - db.Commit() - -merge(msi, "SharedCRT", "TARGETDIR", modules) - -# certname (from config.py) should be (a substring of) -# the certificate subject, e.g. "Python Software Foundation" -if certname: - os.system('signtool sign /n "%s" /t http://timestamp.verisign.com/scripts/timestamp.dll %s' % (certname, msi)) +import msilib,os,win32com,tempfile,sys +PCBUILD="PCBuild" +certname = None +from config import * + +Win64 = "amd64" in PCBUILD + +mod_dir = os.path.join(os.environ["ProgramFiles"], "Common Files", "Merge Modules") +msi = None +if len(sys.argv)==2: + msi = sys.argv[1] +if Win64: + modules = ["Microsoft_VC90_CRT_x86_x64.msm", "policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"] + if not msi: msi = "python-%s.amd64.msi" % full_current_version +else: + modules = ["Microsoft_VC90_CRT_x86.msm","policy_9_0_Microsoft_VC90_CRT_x86.msm"] + if not msi: msi = "python-%s.msi" % full_current_version +for i, n in enumerate(modules): + modules[i] = os.path.join(mod_dir, n) + +def merge(msi, feature, rootdir, modules): + cab_and_filecount = [] + # Step 1: Merge databases, extract cabfiles + m = msilib.MakeMerge2() + m.OpenLog("merge.log") + print "Opened Log" + m.OpenDatabase(msi) + print "Opened DB" + for module in modules: + print module + m.OpenModule(module,0) + print "Opened Module",module + m.Merge(feature, rootdir) + print "Errors:" + for e in m.Errors: + print e.Type, e.ModuleTable, e.DatabaseTable + print " Modkeys:", + for s in e.ModuleKeys: print s, + print + print " DBKeys:", + for s in e.DatabaseKeys: print s, + print + cabname = tempfile.mktemp(suffix=".cab") + m.ExtractCAB(cabname) + cab_and_filecount.append((cabname, len(m.ModuleFiles))) + m.CloseModule() + m.CloseDatabase(True) + m.CloseLog() + + # Step 2: Add CAB files + i = msilib.MakeInstaller() + db = i.OpenDatabase(msi, win32com.client.constants.msiOpenDatabaseModeTransact) + + v = db.OpenView("SELECT LastSequence FROM Media") + v.Execute(None) + maxmedia = -1 + while 1: + r = v.Fetch() + if not r: break + seq = r.IntegerData(1) + if seq > maxmedia: + maxmedia = seq + print "Start of Media", maxmedia + + for cabname, count in cab_and_filecount: + stream = "merged%d" % maxmedia + msilib.add_data(db, "Media", + [(maxmedia+1, maxmedia+count, None, "#"+stream, None, None)]) + msilib.add_stream(db, stream, cabname) + os.unlink(cabname) + maxmedia += count + # The merge module sets ALLUSERS to 1 in the property table. + # This is undesired; delete that + v = db.OpenView("DELETE FROM Property WHERE Property='ALLUSERS'") + v.Execute(None) + v.Close() + db.Commit() + +merge(msi, "SharedCRT", "TARGETDIR", modules) + +# certname (from config.py) should be (a substring of) +# the certificate subject, e.g. "Python Software Foundation" +if certname: + os.system('signtool sign /n "%s" /t http://timestamp.verisign.com/scripts/timestamp.dll %s' % (certname, msi)) -- cgit v0.12