⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 power.dectest

📁 eda is an estimation of distributions algorithm
💻 DECTEST
📖 第 1 页 / 共 2 页
字号:
----------------------------------------------------------------------
-- power.decTest -- decimal exponentiation                            --
-- Copyright (c) IBM Corporation, 1981, 2002.  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.15

-- This set of testcases tests raising numbers to an integer power only.
-- If arbitrary powers were supported, 1 ulp differences would be
-- permitted.

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999

-- base checks.  Note 0**0 is an error.
powx001 power    '0'  '0'         -> NaN Invalid_operation
powx002 power    '0'  '1'         -> '0'
powx003 power    '0'  '2'         -> '0'
powx004 power    '1'  '0'         -> '1'
powx005 power    '1'  '1'         -> '1'
powx006 power    '1'  '2'         -> '1'

powx010 power    '2'  '0'         -> '1'
powx011 power    '2'  '1'         -> '2'
powx012 power    '2'  '2'         -> '4'
powx013 power    '2'  '3'         -> '8'
powx014 power    '2'  '4'         -> '16'
powx015 power    '2'  '5'         -> '32'
powx016 power    '2'  '6'         -> '64'
powx017 power    '2'  '7'         -> '128'
powx018 power    '2'  '8'         -> '256'
powx019 power    '2'  '9'         -> '512'
powx020 power    '2'  '10'        -> '1024'
powx021 power    '2'  '11'        -> '2048'
powx022 power    '2'  '12'        -> '4096'
powx023 power    '2'  '15'        -> '32768'
powx024 power    '2'  '16'        -> '65536'
powx025 power    '2'  '31'        -> '2.14748365E+9' Inexact Rounded
-- NB 0 not stripped in next
powx026 power    '2'  '32'        -> '4.29496730E+9' Inexact Rounded
precision: 10
powx027 power    '2'  '31'        -> '2147483648'
powx028 power    '2'  '32'        -> '4294967296'
precision: 9

powx030 power    '3'  '2'         -> 9
powx031 power    '4'  '2'         -> 16
powx032 power    '5'  '2'         -> 25
powx033 power    '6'  '2'         -> 36
powx034 power    '7'  '2'         -> 49
powx035 power    '8'  '2'         -> 64
powx036 power    '9'  '2'         -> 81
powx037 power    '10' '2'         -> 100
powx038 power    '11' '2'         -> 121
powx039 power    '12' '2'         -> 144

powx040 power    '3'  '3'         -> 27
powx041 power    '4'  '3'         -> 64
powx042 power    '5'  '3'         -> 125
powx043 power    '6'  '3'         -> 216
powx044 power    '7'  '3'         -> 343

powx050 power   '10'  '0'         -> 1
powx051 power   '10'  '1'         -> 10
powx052 power   '10'  '2'         -> 100
powx053 power   '10'  '3'         -> 1000
powx054 power   '10'  '4'         -> 10000
powx055 power   '10'  '5'         -> 100000
powx056 power   '10'  '6'         -> 1000000
powx057 power   '10'  '7'         -> 10000000
powx058 power   '10'  '8'         -> 100000000
powx059 power   '10'  '9'         -> 1.00000000E+9 Rounded
powx060 power   '10'  '22'        -> 1.00000000E+22 Rounded
powx061 power   '10'  '77'        -> 1.00000000E+77 Rounded
powx062 power   '10'  '99'        -> 1.00000000E+99 Rounded

maxexponent: 999999999
powx063 power   '10'  '999999999' -> '1.00000000E+999999999' Rounded
powx064 power   '10'  '999999998' -> '1.00000000E+999999998' Rounded
powx065 power   '10'  '999999997' -> '1.00000000E+999999997' Rounded
powx066 power   '10'  '333333333' -> '1.00000000E+333333333' Rounded

powx070 power  '0.3'  '0'           -> '1'
powx071 power  '0.3'  '1'           -> '0.3'
powx072 power  '0.3'  '1.00'        -> '0.3'
powx073 power  '0.3'  '2.00'        -> '0.09'
powx074 power  '0.3'  '2.000000000' -> '0.09'
powx075 power  '6.0'  '1'           -> '6.0'     -- NB zeros not stripped
powx076 power  '6.0'  '2'           -> '36.00'   -- ..
powx077 power   '-3'  '2'           -> '9'       -- from NetRexx book
powx078 power    '4'  '3'           -> '64'      -- .. (sort of)

powx080 power   0.1    0            -> 1
powx081 power   0.1    1            -> 0.1
powx082 power   0.1    2            -> 0.01
powx083 power   0.1    3            -> 0.001
powx084 power   0.1    4            -> 0.0001
powx085 power   0.1    5            -> 0.00001
powx086 power   0.1    6            -> 0.000001
powx087 power   0.1    7            -> 1E-7
powx088 power   0.1    8            -> 1E-8
powx089 power   0.1    9            -> 1E-9

powx090 power   101    2            -> 10201
powx091 power   101    3            -> 1030301
powx092 power   101    4            -> 104060401
powx093 power   101    5            -> 1.05101005E+10 Inexact Rounded
powx094 power   101    6            -> 1.06152015E+12 Inexact Rounded
powx095 power   101    7            -> 1.07213535E+14 Inexact Rounded

-- negative powers
powx101 power  '2'  '-1'  -> 0.5
powx102 power  '2'  '-2'  -> 0.25
powx103 power  '2'  '-4'  -> 0.0625
powx104 power  '2'  '-8'  -> 0.00390625
powx105 power  '2'  '-16' -> 0.0000152587891 Inexact Rounded
powx106 power  '2'  '-32' -> 2.32830644E-10 Inexact Rounded
powx108 power  '2'  '-64' -> 5.42101086E-20 Inexact Rounded
powx110 power  '10'  '-8' -> 1E-8
powx111 power  '10'  '-7' -> 1E-7
powx112 power  '10'  '-6' -> 0.000001
powx113 power  '10'  '-5' -> 0.00001
powx114 power  '10'  '-4' -> 0.0001
powx115 power  '10'  '-3' -> 0.001
powx116 power  '10'  '-2' -> 0.01
powx117 power  '10'  '-1' -> 0.1

powx118 power  '10'  '-333333333'   -> 1E-333333333
powx119 power  '10'  '-999999998'   -> 1E-999999998
powx120 power  '10'  '-999999999'   -> 1E-999999999
powx121 power  '10'  '-77'          -> '1E-77'
powx122 power  '10'  '-22'          -> '1E-22'

powx123 power   '2'  '-1'           -> '0.5'
powx124 power   '2'  '-2'           -> '0.25'
powx125 power   '2'  '-4'           -> '0.0625'
powx126 power   '0'  '-1'           -> Infinity Division_by_zero
powx127 power   '0'  '-2'           -> Infinity Division_by_zero
powx128 power   -0   '-1'           -> -Infinity Division_by_zero
powx129 power   -0   '-2'           -> Infinity Division_by_zero

-- out-of-range edge cases
powx181 power   '7'   '999999998'   -> 2.10892313E+845098038 Inexact Rounded
powx182 power   '7'   '999999999'   -> 1.47624619E+845098039 Inexact Rounded
powx183 power   '7'   '1000000000'  -> NaN Invalid_operation
powx184 power   '7'   '1000000001'  -> NaN Invalid_operation
powx185 power   '7'   '10000000000' -> NaN Invalid_operation
powx186 power   '7'   '-1000000001' -> NaN Invalid_operation
powx187 power   '7'   '-1000000000' -> NaN Invalid_operation
powx189 power   '7'   '-999999999'  -> 6.77393787E-845098040 Inexact Rounded
powx190 power   '7'   '-999999998'  -> 4.74175651E-845098039 Inexact Rounded

-- some baddies [more below]
powx191 power   '2'   '2.000001'     -> NaN Invalid_operation
powx192 power   '2'   '2.00000000'   -> 4
powx193 power   '2'   '2.000000001'  -> NaN Invalid_operation
powx194 power   '2'   '2.0000000001' -> NaN Invalid_operation

-- "0.5" tests from original Rexx diagnostics [loop unrolled]
powx200 power   0.5    0            -> 1
powx201 power   0.5    1            -> 0.5
powx202 power   0.5    2            -> 0.25
powx203 power   0.5    3            -> 0.125
powx204 power   0.5    4            -> 0.0625
powx205 power   0.5    5            -> 0.03125
powx206 power   0.5    6            -> 0.015625
powx207 power   0.5    7            -> 0.0078125
powx208 power   0.5    8            -> 0.00390625
powx209 power   0.5    9            -> 0.001953125
powx210 power   0.5   10            -> 0.0009765625

-- A (rare) case where the last digit is not within 0.5 ULP
precision: 9
powx215 power "-21971575.0E+31454441" "-7" -> "-4.04549503E-220181139" Inexact Rounded
precision: 20
powx216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded

-- The Vienna case.  Checks both setup and 1/acc working precision
-- Modified 1998.12.14 as RHS no longer rounded before use (must fit)
-- Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
--    '123456789E+10'    -- lhs .. rounded to 1.23E+18
--    '-1.23000e+2'      -- rhs .. [was: -1.23455e+2, rounds to -123]
-- Modified 2002.10.06 -- finally, no input rounding
-- With input rounding, result would be 8.74E-2226
precision: 3
powx219 power '123456789E+10' '-1.23000e+2' -> '5.54E-2226' Inexact Rounded

-- whole number checks
precision: 9
powx221 power 1 1234 -> 1
precision: 4
powx222 power 1 1234 -> 1
precision: 3
powx223 power 1 1234     -> 1
powx224 power 1 12.34e+2 -> 1
powx225 power 1 12.3     -> NaN Invalid_operation
powx226 power 1 12.0     -> 1
powx227 power 1 1.01     -> NaN Invalid_operation
powx228 power 2 1.00     -> 2
powx229 power 2 2.00     -> 4
precision: 9
powx230 power 1 1.0001           -> NaN Invalid_operation
powx231 power 1 1.0000001        -> NaN Invalid_operation
powx232 power 1 1.0000000001     -> NaN Invalid_operation
powx233 power 1 1.0000000000001  -> NaN Invalid_operation
precision: 5
powx234 power 1 1.0001           -> NaN Invalid_operation
powx235 power 1 1.0000001        -> NaN Invalid_operation
powx236 power 1 1.0000000001     -> NaN Invalid_operation
powx237 power 1 1.0000000000001  -> NaN Invalid_operation
powx238 power 1 1.0000000000001  -> NaN Invalid_operation

maxexponent: 999999999
powx239 power 1 5.67E-987654321  -> NaN Invalid_operation

powx240 power 1  100000000 -> 1
powx241 power 1  999999998 -> 1
powx242 power 1  999999999 -> 1
powx243 power 1 1000000000 -> NaN Invalid_operation
powx244 power 1 9999999999 -> NaN Invalid_operation

-- Checks for 'Too much precision needed'
-- For x^12, digits+elength+1 = digits+3
precision: 999999999
powx249 add 1 1 -> 2   -- check basic operation at this precision
powx250 power          2 12  -> Infinity Overflow
precision: 999999998
powx251 power          2 12  -> Infinity Overflow
precision: 999999997
powx252 power          2 12  -> Infinity Overflow
precision: 999999996
powx253 power          2 12  -> 4096
precision: 999999995
powx254 power          2 12  -> 4096

-- overflow and underflow tests
maxexponent: 999999999
precision: 9
powx280 power  9            999999999 -> 3.05550054E+954242508 Inexact Rounded
powx281 power 10            999999999 -> 1.00000000E+999999999 Rounded
powx282 power 10.0001       999999999 -> Infinity Overflow Inexact Rounded
powx283 power 10.1          999999999 -> Infinity Overflow Inexact Rounded
powx284 power 11            999999999 -> Infinity Overflow Inexact Rounded
powx285 power 12            999999999 -> Infinity Overflow Inexact Rounded
powx286 power 999           999999999 -> Infinity Overflow Inexact Rounded
powx287 power 999999        999999999 -> Infinity Overflow Inexact Rounded
powx288 power 999999999     999999999 -> Infinity Overflow Inexact Rounded
powx289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded

powx290 power 0.5           999999999 -> 4.33559594E-301029996 Inexact Rounded
powx291 power 0.1           999999999 -> 1E-999999999  -- unrounded
powx292 power 0.09          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
powx293 power 0.05          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
powx294 power 0.01          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
powx295 power 0.0001        999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
powx297 power 0.0000001     999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
powx298 power 0.0000000001  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
powx299 power 1E-999999999  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded

powx310 power -9             999999999 -> -3.05550054E+954242508 Inexact Rounded
powx311 power -10            999999999 -> -1.00000000E+999999999 Rounded
powx312 power -10.0001       999999999 -> -Infinity Overflow Inexact Rounded
powx313 power -10.1          999999999 -> -Infinity Overflow Inexact Rounded
powx314 power -11            999999999 -> -Infinity Overflow Inexact Rounded
powx315 power -12            999999999 -> -Infinity Overflow Inexact Rounded
powx316 power -999           999999999 -> -Infinity Overflow Inexact Rounded
powx317 power -999999        999999999 -> -Infinity Overflow Inexact Rounded
powx318 power -999999999     999999999 -> -Infinity Overflow Inexact Rounded
powx319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded

powx320 power -0.5           999999999 -> -4.33559594E-301029996 Inexact Rounded
powx321 power -0.1           999999999 -> -1E-999999999
powx322 power -0.09          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
powx323 power -0.05          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
powx324 power -0.01          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
powx325 power -0.0001        999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
powx327 power -0.0000001     999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
powx328 power -0.0000000001  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
powx329 power -1E-999999999  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded

-- note no trim of next result
powx330 power -9             999999998 ->  3.39500060E+954242507 Inexact Rounded
powx331 power -10            999999998 ->  1.00000000E+999999998 Rounded
powx332 power -10.0001       999999998 ->  Infinity Overflow Inexact Rounded
powx333 power -10.1          999999998 ->  Infinity Overflow Inexact Rounded

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -