Home | History | Annotate | Download | only in lang
      1 /* Licensed to the Apache Software Foundation (ASF) under one or more
      2  * contributor license agreements.  See the NOTICE file distributed with
      3  * this work for additional information regarding copyright ownership.
      4  * The ASF licenses this file to You under the Apache License, Version 2.0
      5  * (the "License"); you may not use this file except in compliance with
      6  * the License.  You may obtain a copy of the License at
      7  *
      8  *     http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package org.apache.harmony.tests.java.lang;
     18 
     19 import java.util.Locale;
     20 
     21 import junit.framework.TestCase;
     22 
     23 public class DoubleTest extends TestCase {
     24     private static final long rawBitsFor3_4en324ToN1[] = { 0x1L, 0x7L, 0x45L, 0x2b0L, 0x1ae2L,
     25             0x10cd1L, 0xa8028L, 0x69018dL, 0x41a0f7eL, 0x29049aedL, 0x19a2e0d44L,
     26             0x1005cc84acL, 0xa039fd2ebdL, 0x64243e3d361L, 0x3e96a6e641c6L, 0x271e284fe91b8L,
     27             0x1872d931f1b131L, 0x4e8f8f7e6e1d7dL, 0x8319b9af04d26eL, 0xb7e0281ac6070aL,
     28             0xedd832217788ccL, 0x122a71f54eab580L, 0x15750e72a2562e0L, 0x18d2520f4aebb98L,
     29             0x1c2373498ed353fL, 0x1f6c501bf28828eL, 0x22c76422ef2a332L, 0x261c9e95d57a5ffL,
     30             0x2963c63b4ad8f7fL, 0x2cbcb7ca1d8f35fL, 0x3015f2de527981bL, 0x335b6f95e717e22L,
     31             0x36b24b7b60dddabL, 0x3a0f6f2d1c8aa8bL, 0x3d534af863ad52dL, 0x40a81db67c98a79L,
     32             0x440912920ddf68bL, 0x474b5736915742eL, 0x4a9e2d0435ad13aL, 0x4e02dc22a18c2c4L,
     33             0x5143932b49ef375L, 0x549477f61c6b052L, 0x57f995f3a385c67L, 0x5b3bfdb846339c0L,
     34             0x5e8afd2657c0830L, 0x61edbc6fedb0a3dL, 0x653495c5f48e666L, 0x6881bb3771b1fffL,
     35             0x6be22a054e1e7ffL, 0x6f2d5a4350d30ffL, 0x7278b0d42507d3fL, 0x75d6dd092e49c8fL,
     36             0x79264a25bcee1daL, 0x7c6fdcaf2c29a50L, 0x7fcbd3daf7340e4L, 0x831f6468da8088eL,
     37             0x86673d831120ab2L, 0x89c10ce3d568d5fL, 0x8d18a80e656185bL, 0x905ed211feb9e72L,
     38             0x93b686967e6860eL, 0x9712141e0f013c9L, 0x9a56992592c18bbL, 0x9dac3f6ef771eeaL,
     39             0xa10ba7a55aa7352L, 0xa44e918eb151027L, 0xa7a235f25da5430L, 0xab0561b77a8749eL,
     40             0xae46ba2559291c6L, 0xb19868aeaf73637L, 0xb4fe82da5b503c5L, 0xb83f11c8791225bL,
     41             0xbb8ed63a9756af2L, 0xbef28bc93d2c5afL, 0xc237975dc63bb8dL, 0xc5857d3537caa70L,
     42             0xc8e6dc8285bd50cL, 0xcc3049d19396528L, 0xcf7c5c45f87be72L, 0xd2db7357769ae0eL,
     43             0xd6292816aa20cc9L, 0xd973721c54a8ffbL, 0xdcd04ea369d33faL, 0xe0223126222407cL,
     44             0xe36abd6faaad09bL, 0xe6c56ccb95584c2L, 0xea1b63ff3d572f9L, 0xed623cff0cacfb8L,
     45             0xf0bacc3ecfd83a5L, 0xf414bfa741e7247L, 0xf759ef911260ed9L, 0xfab06b7556f9290L,
     46             0xfe0e4329565bb9aL, 0x10151d3f3abf2a80L, 0x104a648f096ef520L, 0x10807ed965e55934L,
     47             0x10b49e8fbf5eaf81L, 0x10e9c633af365b61L, 0x11201be04d81f91dL, 0x115422d860e27764L,
     48             0x11892b8e791b153dL, 0x11bf76721761da8cL, 0x11f3aa074e9d2898L, 0x12289489224472beL,
     49             0x125eb9ab6ad58f6dL, 0x1293340b22c579a4L, 0x12c8010deb76d80dL, 0x12fe015166548e11L,
     50             0x1332c0d2dff4d8caL, 0x1367710797f20efdL, 0x139d4d497dee92bcL, 0x13d2504deeb51bb6L,
     51             0x1406e4616a6262a3L, 0x143c9d79c4fafb4cL, 0x1471e26c1b1cdd0fL, 0x14a65b0721e41453L,
     52             0x14dbf1c8ea5d1968L, 0x1511771d927a2fe1L, 0x1545d4e4f718bbd9L, 0x157b4a1e34deead0L,
     53             0x15b10e52e10b52c2L, 0x15e551e7994e2772L, 0x161aa6617fa1b14fL, 0x1650a7fcefc50ed1L,
     54             0x1684d1fc2bb65286L, 0x16ba067b36a3e727L, 0x16f0440d02267078L, 0x1724551042b00c96L,
     55             0x17596a54535c0fbcL, 0x178fc4e9683313abL, 0x17c3db11e11fec4bL, 0x17f8d1d65967e75eL,
     56             0x182f064befc1e135L, 0x186363ef75d92cc1L, 0x18983ceb534f77f1L, 0x18ce4c26282355eeL,
     57             0x1902ef97d91615b5L, 0x1937ab7dcf5b9b22L, 0x196d965d433281eaL, 0x19a27dfa49ff9132L,
     58             0x19d71d78dc7f757fL, 0x1a0ce4d7139f52dfL, 0x1a420f066c4393cbL, 0x1a7692c8075478beL,
     59             0x1aac377a092996edL, 0x1ae1a2ac45b9fe54L, 0x1b160b5757287de9L, 0x1b4b8e2d2cf29d64L,
     60             0x1b8138dc3c17a25eL, 0x1bb587134b1d8af6L, 0x1beae8d81de4edb4L, 0x1c20d18712af1490L,
     61             0x1c5505e8d75ad9b4L, 0x1c8a47630d319021L, 0x1cc06c9de83efa15L, 0x1cf487c5624eb89aL,
     62             0x1d29a9b6bae266c1L, 0x1d600a1234cd8038L, 0x1d940c96c200e046L, 0x1dc90fbc72811858L,
     63             0x1dff53ab8f215e6eL, 0x1e33944b3974db05L, 0x1e68795e07d211c6L, 0x1e9e97b589c69637L,
     64             0x1ed31ed1761c1de3L, 0x1f07e685d3a3255bL, 0x1f3de027488beeb2L, 0x1f72ac188d57752fL,
     65             0x1fa7571eb0ad527bL, 0x1fdd2ce65cd8a71aL, 0x20123c0ffa076870L, 0x2046cb13f889428cL,
     66             0x207c7dd8f6ab932fL, 0x20b1cea79a2b3bfeL, 0x20e6425180b60afdL, 0x211bd2e5e0e38dbcL,
     67             0x215163cfac8e3896L, 0x2185bcc397b1c6bbL, 0x21bb2bf47d9e386aL, 0x21f0fb78ce82e342L,
     68             0x22253a5702239c13L, 0x225a88ecc2ac8317L, 0x22909593f9abd1efL, 0x22c4baf8f816c66aL,
     69             0x22f9e9b7361c7805L, 0x2330321281d1cb03L, 0x23643e9722463dc4L, 0x23994e3cead7cd35L,
     70             0x23cfa1cc258dc082L, 0x2403c51f97789851L, 0x2438b6677d56be65L, 0x246ee4015cac6dffL,
     71             0x24a34e80d9ebc4bfL, 0x24d822211066b5efL, 0x250e2aa95480636bL, 0x2542daa9d4d03e23L,
     72             0x257791544a044dabL, 0x25ad75a95c856116L, 0x25e26989d9d35caeL, 0x261703ec504833d9L,
     73             0x264cc4e7645a40d0L, 0x2681fb109eb86882L, 0x26b679d4c66682a2L, 0x26ec1849f800234bL,
     74             0x27218f2e3b00160fL, 0x2755f2f9c9c01b93L, 0x278b6fb83c302277L, 0x27c125d3259e158bL,
     75             0x27f56f47ef059aedL, 0x282acb19eac701a8L, 0x2860bef032bc6109L, 0x2894eeac3f6b794cL,
     76             0x28ca2a574f46579eL, 0x29005a76918bf6c3L, 0x2934711435eef474L, 0x29698d59436ab191L,
     77             0x299ff0af94455df5L, 0x29d3f66dbcab5ab9L, 0x2a08f4092bd63167L, 0x2a3f310b76cbbdc1L,
     78             0x2a737ea72a3f5699L, 0x2aa85e50f4cf2c3fL, 0x2ade75e53202f74fL, 0x2b1309af3f41da91L,
     79             0x2b47cc1b0f125135L, 0x2b7dbf21d2d6e583L, 0x2bb2977523c64f72L, 0x2be73d526cb7e34eL,
     80             0x2c1d0ca707e5dc22L, 0x2c5227e864efa995L, 0x2c86b1e27e2b93faL, 0x2cbc5e5b1db678f9L,
     81             0x2cf1baf8f2920b9cL, 0x2d2629b72f368e83L, 0x2d5bb424fb043223L, 0x2d9150971ce29f56L,
     82             0x2dc5a4bce41b472bL, 0x2dfb0dec1d2218f6L, 0x2e30e8b392354f9aL, 0x2e6522e076c2a380L,
     83             0x2e9a6b9894734c61L, 0x2ed0833f5cc80fbcL, 0x2f04a40f33fa13abL, 0x2f39cd1300f89896L,
     84             0x2f70202be09b5f5eL, 0x2fa42836d8c23735L, 0x2fd932448ef2c503L, 0x300f7ed5b2af7643L,
     85             0x3043af458fada9eaL, 0x30789b16f3991465L, 0x30aec1dcb07f597eL, 0x30e33929ee4f97efL,
     86             0x3118077469e37deaL, 0x314e0951845c5d65L, 0x3182c5d2f2b9ba5fL, 0x31b77747af6828f7L,
     87             0x31ed55199b423335L, 0x3222553001096001L, 0x3256ea7c014bb801L, 0x328ca51b019ea601L,
     88             0x32c1e730e10327c1L, 0x32f660fd1943f1b1L, 0x332bf93c5f94ee1dL, 0x33617bc5bbbd14d2L,
     89             0x3395dab72aac5a07L, 0x33cb5164f5577089L, 0x340112df1956a655L, 0x34355796dfac4febL,
     90             0x346aad7c979763e5L, 0x34a0ac6ddebe9e6fL, 0x34d4d789566e460bL, 0x350a0d6bac09d78eL,
     91             0x354048634b8626b9L, 0x35745a7c1e67b067L, 0x35a9711b26019c81L, 0x35dfcd61ef8203a1L,
     92             0x3613e05d35b14245L, 0x3648d874831d92d6L, 0x367f0e91a3e4f78bL, 0x36b3691b066f1ab7L,
     93             0x36e84361c80ae165L, 0x371e543a3a0d99beL, 0x3752f4a464488017L, 0x3787b1cd7d5aa01cL,
     94             0x37bd9e40dcb14823L, 0x37f282e889eecd16L, 0x382723a2ac6a805cL, 0x385cec8b57852073L,
     95             0x389213d716b33448L, 0x38c698ccdc60015aL, 0x38fc3f00137801b0L, 0x3931a7600c2b010eL,
     96             0x396611380f35c151L, 0x399b9586130331a6L, 0x39d13d73cbe1ff08L, 0x3a058cd0beda7ec9L,
     97             0x3a3af004ee911e7cL, 0x3a70d603151ab30dL, 0x3aa50b83da615fd1L, 0x3ada4e64d0f9b7c5L,
     98             0x3b1070ff029c12dbL, 0x3b448d3ec3431792L, 0x3b79b08e7413dd76L, 0x3bb00e59088c6a6aL,
     99             0x3be411ef4aaf8504L, 0x3c19166b1d5b6646L, 0x3c4f5c05e4b23fd7L, 0x3c839983aeef67e6L,
    100             0x3cb87fe49aab41e0L, 0x3cee9fddc1561258L, 0x3d2323ea98d5cb77L, 0x3d57ece53f0b3e55L,
    101             0x3d8de81e8ece0deaL, 0x3dc2b1131940c8b2L, 0x3df75d57df90fadfL, 0x3e2d34add7753996L,
    102             0x3e6240eca6a943feL, 0x3e96d127d05394fdL, 0x3ecc8571c4687a3dL, 0x3f01d3671ac14c66L,
    103             0x3f364840e1719f80L, 0x3f6bda5119ce075fL, 0x3fa16872b020c49cL, 0x3fd5c28f5c28f5c3L,
    104             0x400B333333333333L };
    105 
    106     private static final long rawBitsFor1_2e0To309[] = { 0x3ff3333333333333L, 0x4028000000000000L,
    107             0x405e000000000000L, 0x4092c00000000000L, 0x40c7700000000000L, 0x40fd4c0000000000L,
    108             0x41324f8000000000L, 0x4166e36000000000L, 0x419c9c3800000000L, 0x41d1e1a300000000L,
    109             0x42065a0bc0000000L, 0x423bf08eb0000000L, 0x427176592e000000L, 0x42a5d3ef79800000L,
    110             0x42db48eb57e00000L, 0x43110d9316ec0000L, 0x434550f7dca70000L, 0x437aa535d3d0c000L,
    111             0x43b0a741a4627800L, 0x43e4d1120d7b1600L, 0x441a055690d9db80L, 0x445043561a882930L,
    112             0x4484542ba12a337cL, 0x44b969368974c05bL, 0x44efc3842bd1f072L, 0x4523da329b633647L,
    113             0x4558d0bf423c03d9L, 0x458f04ef12cb04cfL, 0x45c363156bbee301L, 0x45f83bdac6ae9bc2L,
    114             0x462e4ad1785a42b2L, 0x4662eec2eb3869afL, 0x4697aa73a606841bL, 0x46cd95108f882522L,
    115             0x47027d2a59b51735L, 0x47371c74f0225d03L, 0x476ce3922c2af443L, 0x47a20e3b5b9ad8aaL,
    116             0x47d691ca32818ed5L, 0x480c363cbf21f28aL, 0x4841a1e5f7753796L, 0x48760a5f7552857cL,
    117             0x48ab8cf752a726daL, 0x48e1381a93a87849L, 0x491586213892965bL, 0x494ae7a986b73bf1L,
    118             0x4980d0c9f4328577L, 0x49b504fc713f26d5L, 0x49ea463b8d8ef08aL, 0x4a206be538795656L,
    119             0x4a5486de8697abecL, 0x4a89a896283d96e6L, 0x4ac0095dd9267e50L, 0x4af40bb54f701de4L,
    120             0x4b290ea2a34c255dL, 0x4b5f524b4c1f2eb4L, 0x4b93936f0f937d31L, 0x4bc8784ad3785c7dL,
    121             0x4bfe965d8856739cL, 0x4c331dfa75360842L, 0x4c67e57912838a52L, 0x4c9dded757246ce6L,
    122             0x4cd2ab469676c410L, 0x4d0756183c147514L, 0x4d3d2b9e4b199259L, 0x4d723b42eeeffb78L,
    123             0x4da6ca13aaabfa56L, 0x4ddc7c989556f8ebL, 0x4e11cddf5d565b93L, 0x4e46415734abf278L,
    124             0x4e7bd1ad01d6ef15L, 0x4eb1630c2126556dL, 0x4ee5bbcf296feac9L, 0x4f1b2ac2f3cbe57bL,
    125             0x4f50fab9d85f6f6dL, 0x4f8539684e774b48L, 0x4fba87c262151e1aL, 0x4ff094d97d4d32d0L,
    126             0x5024ba0fdca07f84L, 0x5059e893d3c89f65L, 0x5090315c645d639fL, 0x50c43db37d74bc87L,
    127             0x50f94d205cd1eba9L, 0x512fa06874066693L, 0x5163c4414884001cL, 0x5198b5519aa50023L,
    128             0x51cee2a6014e402cL, 0x52034da7c0d0e81bL, 0x52382111b1052222L, 0x526e29561d466aabL,
    129             0x52a2d9d5d24c02abL, 0x52d7904b46df0355L, 0x530d745e1896c42bL, 0x534268bacf5e3a9bL,
    130             0x537702e98335c941L, 0x53acc3a3e4033b92L, 0x53e1fa466e82053bL, 0x541678d80a22868aL,
    131             0x544c170e0cab282cL, 0x54818e68c7eaf91cL, 0x54b5f202f9e5b763L, 0x54eb6e83b85f253bL,
    132             0x55212512533b7745L, 0x55556e56e80a5516L, 0x558ac9eca20cea5cL, 0x55c0be33e5481279L,
    133             0x55f4edc0de9a1718L, 0x562a293116409cdeL, 0x566059beade8620bL, 0x5694702e59627a8dL,
    134             0x56c98c39efbb1931L, 0x56ffef486ba9df7dL, 0x5733f58d434a2baeL, 0x5768f2f0941cb699L,
    135             0x579f2facb923e440L, 0x57d37dcbf3b66ea8L, 0x58085d3ef0a40a52L, 0x583e748eaccd0ce6L,
    136             0x587308d92c002810L, 0x58a7cb0f77003214L, 0x58ddbdd354c03e99L, 0x591296a414f82720L,
    137             0x59473c4d1a3630e8L, 0x597d0b6060c3bd21L, 0x59b2271c3c7a5635L, 0x59e6b0e34b98ebc2L,
    138             0x5a1c5d1c1e7f26b3L, 0x5a51ba31930f7830L, 0x5a8628bdf7d3563cL, 0x5abbb2ed75c82bcaL,
    139             0x5af14fd4699d1b5fL, 0x5b25a3c984046236L, 0x5b5b0cbbe5057ac4L, 0x5b90e7f56f236cbaL,
    140             0x5bc521f2caec47e9L, 0x5bfa6a6f7da759e3L, 0x5c308285ae88982eL, 0x5c64a3271a2abe39L,
    141             0x5c99cbf0e0b56dc8L, 0x5cd01f768c71649dL, 0x5d0427542f8dbdc4L, 0x5d3931293b712d35L,
    142             0x5d6f7d738a4d7882L, 0x5da3ae6836706b51L, 0x5dd89a02440c8626L, 0x5e0ec082d50fa7afL,
    143             0x5e433851c529c8ceL, 0x5e78066636743b01L, 0x5eae07ffc41149c1L, 0x5ee2c4ffda8ace19L,
    144             0x5f17763fd12d819fL, 0x5f4d53cfc578e207L, 0x5f825461db6b8d44L, 0x5fb6e97a52467095L,
    145             0x5feca3d8e6d80cbbL, 0x6021e667904707f5L, 0x605660017458c9f2L, 0x608bf801d16efc6eL,
    146             0x60c17b0122e55dc5L, 0x60f5d9c16b9eb536L, 0x612b5031c6866284L, 0x6161121f1c13fd92L,
    147             0x619556a6e318fcf7L, 0x61caac509bdf3c34L, 0x6200abb2616b85a1L, 0x6234d69ef9c66709L,
    148             0x626a0c46b83800cbL, 0x62a047ac3323007fL, 0x62d459973febc09fL, 0x63096ffd0fe6b0c6L,
    149             0x633fcbfc53e05cf8L, 0x6373df7db46c3a1bL, 0x63a8d75d218748a2L, 0x63df0d3469e91acaL,
    150             0x64136840c231b0beL, 0x64484250f2be1ceeL, 0x647e52e52f6da42aL, 0x64b2f3cf3da4869aL,
    151             0x64e7b0c30d0da840L, 0x651d9cf3d0511251L, 0x655282186232ab72L, 0x6587229e7abf564fL,
    152             0x65bceb46196f2be3L, 0x65f2130bcfe57b6eL, 0x662697cec3deda49L, 0x665c3dc274d690dbL,
    153             0x6691a69989061a89L, 0x66c6103feb47a12bL, 0x66fb944fe6198976L, 0x67313cb1efcff5eaL,
    154             0x67658bde6bc3f364L, 0x679aeed606b4f03dL, 0x67d0d545c4311626L, 0x68050a97353d5bb0L,
    155             0x683a4d3d028cb29cL, 0x687070462197efa2L, 0x68a48c57a9fdeb8aL, 0x68d9af6d947d666cL,
    156             0x69100da47cce6004L, 0x6944110d9c01f805L, 0x6979155103027606L, 0x69af5aa543c31387L,
    157             0x69e398a74a59ec35L, 0x6a187ed11cf06742L, 0x6a4e9e85642c8112L, 0x6a8323135e9bd0abL,
    158             0x6ab7ebd83642c4d6L, 0x6aede6ce43d3760cL, 0x6b22b040ea6429c7L, 0x6b575c5124fd3439L,
    159             0x6b8d33656e3c8147L, 0x6bc2401f64e5d0cdL, 0x6bf6d0273e1f4500L, 0x6c2c84310da71640L,
    160             0x6c61d29ea8886de8L, 0x6c96474652aa8962L, 0x6ccbd917e7552bbaL, 0x6d0167aef0953b54L,
    161             0x6d35c19aacba8a29L, 0x6d6b320157e92cb4L, 0x6da0ff40d6f1bbf0L, 0x6dd53f110cae2aedL,
    162             0x6e0a8ed54fd9b5a8L, 0x6e40994551e81189L, 0x6e74bf96a66215ebL, 0x6ea9ef7c4ffa9b66L,
    163             0x6ee035adb1fca120L, 0x6f1443191e7bc967L, 0x6f4953df661abbc1L, 0x6f7fa8d73fa16ab2L,
    164             0x6fb3c98687c4e2afL, 0x6fe8bbe829b61b5bL, 0x701eeae23423a232L, 0x705352cd6096455fL,
    165             0x70882780b8bbd6b7L, 0x70be3160e6eacc64L, 0x70f2dedc9052bfbfL, 0x71279693b4676faeL,
    166             0x715d7c38a1814b9aL, 0x71926da364f0cf40L, 0x71c7090c3e2d0310L, 0x71fccb4f4db843d4L,
    167             0x7231ff1190932a65L, 0x72667ed5f4b7f4feL, 0x729c1e8b71e5f23dL, 0x72d19317272fb766L,
    168             0x7305f7dcf0fba540L, 0x733b75d42d3a8e90L, 0x737129a49c44991aL, 0x73a5740dc355bf60L,
    169             0x73dad111342b2f39L, 0x7410c2aac09afd83L, 0x7444f35570c1bce4L, 0x747a302accf22c1dL,
    170             0x74b05e1ac0175b92L, 0x74e475a1701d3277L, 0x75199309cc247f15L, 0x754ff7cc3f2d9edaL,
    171             0x7583fadfa77c8348L, 0x75b8f997915ba41aL, 0x75ef37fd75b28d21L, 0x762382fe698f9834L,
    172             0x765863be03f37e41L, 0x768e7cad84f05dd2L, 0x76c30dec73163aa3L, 0x76f7d1678fdbc94cL,
    173             0x772dc5c173d2bb9fL, 0x77629b98e863b543L, 0x7797427f227ca294L, 0x77cd131eeb1bcb39L,
    174             0x78022bf352f15f04L, 0x7836b6f027adb6c5L, 0x786c64ac31992476L, 0x78a1beeb9effb6caL,
    175             0x78d62ea686bfa47cL, 0x790bba50286f8d9bL, 0x794154721945b881L, 0x7975a98e9f9726a1L,
    176             0x79ab13f2477cf049L, 0x79e0ec776cae162eL, 0x7a15279547d99bb9L, 0x7a4a717a99d002a8L,
    177             0x7a8086eca02201a9L, 0x7ab4a8a7c82a8213L, 0x7ae9d2d1ba352298L, 0x7b2023c31461359fL,
    178             0x7b542cb3d9798307L, 0x7b8937e0cfd7e3c8L, 0x7bbf85d903cddcbaL, 0x7bf3b3a7a260a9f4L,
    179             0x7c28a0918af8d472L, 0x7c5ec8b5edb7098eL, 0x7c933d71b49265f9L, 0x7cc80cce21b6ff77L,
    180             0x7cfe1001aa24bf55L, 0x7d32ca010a56f795L, 0x7d677c814cecb57aL, 0x7d9d5ba1a027e2d9L,
    181             0x7dd259450418edc7L, 0x7e06ef96451f2939L, 0x7e3cab7bd666f388L, 0x7e71eb2d66005835L,
    182             0x7ea665f8bf806e42L, 0x7edbff76ef6089d2L, 0x7f117faa559c5623L, 0x7f45df94eb036bacL,
    183             0x7f7b577a25c44697L, 0x7fb116ac579aac1fL, 0x7fe55c576d815726L, 0x7ff0000000000000L };
    184 
    185     private void doTestCompareRawBits(String originalDoubleString, long expectedRawBits,
    186             String expectedString) {
    187         double result;
    188         long rawBits;
    189         String convertedString;
    190         result = Double.parseDouble(originalDoubleString);
    191         rawBits = Double.doubleToLongBits(result);
    192         convertedString = new Double(result).toString();
    193         assertEquals(expectedRawBits, rawBits);
    194         assertEquals(expectedString.toLowerCase(Locale.US), convertedString
    195                 .toLowerCase(Locale.US));
    196     }
    197 
    198     private void test_toString(double dd, String answer) {
    199         assertEquals(answer, Double.toString(dd));
    200         Double d = new Double(dd);
    201         assertEquals(answer, Double.toString(d.doubleValue()));
    202         assertEquals(answer, d.toString());
    203     }
    204 
    205     /**
    206      * java.lang.Double#Double(double)
    207      */
    208     public void test_ConstructorD() {
    209         Double d = new Double(39089.88888888888888888888888888888888);
    210         assertEquals("Created incorrect double", 39089.88888888888888888888888888888888, d
    211                 .doubleValue(), 0D);
    212     }
    213 
    214     /**
    215      * java.lang.Double#Double(java.lang.String)
    216      */
    217     public void test_ConstructorLjava_lang_String() {
    218         Double d = new Double("39089.88888888888888888888888888888888");
    219         assertEquals("Created incorrect double", 39089.88888888888888888888888888888888, d
    220                 .doubleValue(), 0D);
    221 
    222         // Regression test for HARMONY-489
    223         try {
    224             d = new Double("1E+-20");
    225             fail("new Double(\"1E+-20\") should throw exception");
    226         } catch (NumberFormatException e) {
    227             // expected
    228         }
    229 
    230         // Regression test for HARMONY-329
    231         d = Double.parseDouble("-1.233999999999999965116738099630936817275852021384209929081813042837802886790127428328465579708849276001782791006814286802871737087810957327493372866733334925806221045495205250590286471187577636646208155890426896101636282423463443661040209738873506655844025580428394216030152374941053494694642722606658935546875E-112");
    232         assertEquals("Failed to parse long string", -1.234E-112D, d.doubleValue(), 0D);
    233     }
    234 
    235     /**
    236      * java.lang.Double#byteValue()
    237      */
    238     public void test_byteValue() {
    239         Double d = new Double(1923311.47712);
    240         assertEquals("Returned incorrect byte value", (byte) -17, d.byteValue());
    241     }
    242 
    243     /**
    244      * java.lang.Double#compareTo(java.lang.Double)
    245      * java.lang.Double#compare(double, double)
    246      */
    247     public void test_compare() {
    248         double[] values = new double[] { Double.NEGATIVE_INFINITY, -Double.MAX_VALUE, -2d,
    249                 -Double.MIN_VALUE, -0d, 0d, Double.MIN_VALUE, 2d, Double.MAX_VALUE,
    250                 Double.POSITIVE_INFINITY, Double.NaN };
    251         for (int i = 0; i < values.length; i++) {
    252             double d1 = values[i];
    253             assertTrue("compare() should be equal: " + d1, Double.compare(d1, d1) == 0);
    254             Double D1 = new Double(d1);
    255             assertTrue("compareTo() should be equal: " + d1, D1.compareTo(D1) == 0);
    256             for (int j = i + 1; j < values.length; j++) {
    257                 double d2 = values[j];
    258                 assertTrue("compare() " + d1 + " should be less " + d2,
    259                         Double.compare(d1, d2) == -1);
    260                 assertTrue("compare() " + d2 + " should be greater " + d1, Double.compare(d2,
    261                         d1) == 1);
    262                 Double D2 = new Double(d2);
    263                 assertTrue("compareTo() " + d1 + " should be less " + d2,
    264                         D1.compareTo(D2) == -1);
    265                 assertTrue("compareTo() " + d2 + " should be greater " + d1,
    266                         D2.compareTo(D1) == 1);
    267             }
    268         }
    269 
    270         try {
    271             new Double(0.0D).compareTo(null);
    272             fail("No NPE");
    273         } catch (NullPointerException e) {
    274         }
    275     }
    276 
    277     /**
    278      * java.lang.Double#doubleToLongBits(double)
    279      */
    280     public void test_doubleToLongBitsD() {
    281         // Test for method long java.lang.Double.doubleToLongBits(double)
    282         Double d = new Double(Double.MAX_VALUE);
    283         long lbits = Double.doubleToLongBits(d.doubleValue());
    284         double r = Double.longBitsToDouble(lbits);
    285 
    286         assertTrue("Bit conversion failed", d.doubleValue() == r);
    287     }
    288 
    289     /**
    290      * java.lang.Double#doubleToRawLongBits(double)
    291      */
    292     public void test_doubleToRawLongBitsD() {
    293         long l = 0x7ff80000000004d2L;
    294         double d = Double.longBitsToDouble(l);
    295         assertTrue("Wrong raw bits", Double.doubleToRawLongBits(d) == l);
    296     }
    297 
    298     /**
    299      * java.lang.Double#doubleValue()
    300      */
    301     public void test_doubleValue() {
    302         assertEquals("Incorrect double value returned", 999999999999999.9999999999999,
    303                 new Double(999999999999999.9999999999999).doubleValue(), 0D);
    304     }
    305 
    306     /**
    307      * java.lang.Double#floatValue()
    308      */
    309     public void test_floatValue() {
    310         // Test for method float java.lang.Double.floatValue()
    311         assertTrue(
    312                 "Incorrect float value returned ",
    313                 Math
    314                         .abs(new Double(999999999999999.9999999999999d).floatValue() - 999999999999999.9999999999999f) < 1);
    315     }
    316 
    317     /**
    318      * java.lang.Double#hashCode()
    319      */
    320     public void test_hashCode() {
    321         // Test for method int java.lang.Double.hashCode()
    322         for (int i = -1000; i < 1000; i++) {
    323             Double d = new Double(i);
    324             Double dd = new Double(i);
    325             assertTrue("Should not be identical ", d != dd);
    326             assertTrue("Should be equals 1 ", d.equals(dd));
    327             assertTrue("Should be equals 2 ", dd.equals(d));
    328             assertTrue("Should have identical values ", dd.doubleValue() == d.doubleValue());
    329             assertTrue("Invalid hash for equal but not identical doubles ", d.hashCode() == dd
    330                     .hashCode());
    331         }
    332         assertEquals("Magic assumption hasCode (0.0) = 0 failed", 0, new Double(0.0).hashCode());
    333     }
    334 
    335     /**
    336      * java.lang.Double#intValue()
    337      */
    338     public void test_intValue() {
    339         // Test for method int java.lang.Double.intValue()
    340         Double d = new Double(1923311.47712);
    341         assertEquals("Returned incorrect int value", 1923311, d.intValue());
    342     }
    343 
    344     /**
    345      * java.lang.Double#isInfinite()
    346      */
    347     public void test_isInfinite() {
    348         // Test for method boolean java.lang.Double.isInfinite()
    349         assertTrue("NEGATIVE_INFINITY returned false", new Double(Double.NEGATIVE_INFINITY)
    350                 .isInfinite());
    351         assertTrue("POSITIVE_INFINITY returned false", new Double(Double.POSITIVE_INFINITY)
    352                 .isInfinite());
    353         assertTrue("Non infinite number returned true", !(new Double(1000).isInfinite()));
    354     }
    355 
    356     /**
    357      * java.lang.Double#isInfinite(double)
    358      */
    359     public void test_isInfiniteD() {
    360         // Test for method boolean java.lang.Double.isInfinite(double)
    361         assertTrue("Infinity check failed", Double.isInfinite(Double.NEGATIVE_INFINITY)
    362                 && (Double.isInfinite(Double.POSITIVE_INFINITY))
    363                 && !(Double.isInfinite(Double.MAX_VALUE)));
    364     }
    365 
    366     /**
    367      * java.lang.Double#isNaN()
    368      */
    369     public void test_isNaN() {
    370         // Test for method boolean java.lang.Double.isNaN()
    371         Double d = new Double(0.0 / 0.0);
    372         assertTrue("NAN returned false", d.isNaN());
    373         d = new Double(0);
    374         assertTrue("Non NAN returned true", !d.isNaN());
    375     }
    376 
    377     /**
    378      * java.lang.Double#isNaN(double)
    379      */
    380     public void test_isNaND() {
    381         // Test for method boolean java.lang.Double.isNaN(double)
    382 
    383         Double d = new Double(0.0 / 0.0);
    384         assertTrue("NAN check failed", Double.isNaN(d.doubleValue()));
    385     }
    386 
    387     /**
    388      * java.lang.Double#longBitsToDouble(long)
    389      */
    390     public void test_longBitsToDoubleJ() {
    391         // Test for method double java.lang.Double.longBitsToDouble(long)
    392 
    393         Double d = new Double(Double.MAX_VALUE);
    394         long lbits = Double.doubleToLongBits(d.doubleValue());
    395         double r = Double.longBitsToDouble(lbits);
    396 
    397         assertTrue("Bit conversion failed", d.doubleValue() == r);
    398     }
    399 
    400     /**
    401      * java.lang.Double#longValue()
    402      */
    403     public void test_longValue() {
    404         // Test for method long java.lang.Double.longValue()
    405         Double d = new Double(1923311.47712);
    406         assertEquals("Returned incorrect long value", 1923311, d.longValue());
    407     }
    408 
    409     /**
    410      * java.lang.Double#parseDouble(java.lang.String)
    411      */
    412     public void test_parseDoubleLjava_lang_String() {
    413         assertEquals("Incorrect double returned, expected zero.", 0.0, Double
    414                 .parseDouble("2.4703282292062327208828439643411e-324"), 0.0);
    415         assertTrue("Incorrect double returned, expected minimum double.", Double
    416                 .parseDouble("2.4703282292062327208828439643412e-324") == Double.MIN_VALUE);
    417 
    418         for (int i = 324; i > 0; i--) {
    419             Double.parseDouble("3.4e-" + i);
    420         }
    421         for (int i = 0; i <= 309; i++) {
    422             Double.parseDouble("1.2e" + i);
    423         }
    424 
    425         /*
    426          * The first two cases and the last four cases have to placed outside
    427          * the loop due to the difference in the expected output string.
    428          */
    429         doTestCompareRawBits("3.4e-324", rawBitsFor3_4en324ToN1[0], "4.9e-324");
    430         doTestCompareRawBits("3.4e-323", rawBitsFor3_4en324ToN1[1], "3.5e-323");
    431         for (int i = 322; i > 3; i--) {
    432             String testString, expectedString;
    433             testString = expectedString = "3.4e-" + i;
    434             doTestCompareRawBits(testString, rawBitsFor3_4en324ToN1[324 - i], expectedString);
    435         }
    436         doTestCompareRawBits("3.4e-3", rawBitsFor3_4en324ToN1[321], "0.0034");
    437         doTestCompareRawBits("3.4e-2", rawBitsFor3_4en324ToN1[322], "0.034");
    438         doTestCompareRawBits("3.4e-1", rawBitsFor3_4en324ToN1[323], "0.34");
    439         doTestCompareRawBits("3.4e-0", rawBitsFor3_4en324ToN1[324], "3.4");
    440 
    441         doTestCompareRawBits("1.2e0", rawBitsFor1_2e0To309[0], "1.2");
    442         doTestCompareRawBits("1.2e1", rawBitsFor1_2e0To309[1], "12.0");
    443         doTestCompareRawBits("1.2e2", rawBitsFor1_2e0To309[2], "120.0");
    444         doTestCompareRawBits("1.2e3", rawBitsFor1_2e0To309[3], "1200.0");
    445         doTestCompareRawBits("1.2e4", rawBitsFor1_2e0To309[4], "12000.0");
    446         doTestCompareRawBits("1.2e5", rawBitsFor1_2e0To309[5], "120000.0");
    447         doTestCompareRawBits("1.2e6", rawBitsFor1_2e0To309[6], "1200000.0");
    448         for (int i = 7; i <= 308; i++) {
    449             String testString, expectedString;
    450             testString = expectedString = "1.2e" + i;
    451             doTestCompareRawBits(testString, rawBitsFor1_2e0To309[i], expectedString);
    452         }
    453         doTestCompareRawBits("1.2e309", rawBitsFor1_2e0To309[309], "Infinity");
    454 
    455         doTestCompareRawBits(
    456                 "111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000.92233720368547758079223372036854775807",
    457                 0x7e054218c295e43fL, "1.1122233344455567E299");
    458         doTestCompareRawBits(
    459                 "-111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000.92233720368547758079223372036854775807",
    460                 0xfe054218c295e43fL, "-1.1122233344455567E299");
    461 
    462         doTestCompareRawBits("1.234123412431233E107", 0x562ae7a25fe706ebL,
    463                 "1.234123412431233E107");
    464         doTestCompareRawBits("1.2341234124312331E107", 0x562ae7a25fe706ecL,
    465                 "1.2341234124312331E107");
    466         doTestCompareRawBits("1.2341234124312332E107", 0x562ae7a25fe706ecL,
    467                 "1.2341234124312331E107");
    468         doTestCompareRawBits("-1.234123412431233E107", 0xd62ae7a25fe706ebL,
    469                 "-1.234123412431233E107");
    470         doTestCompareRawBits("-1.2341234124312331E107", 0xd62ae7a25fe706ecL,
    471                 "-1.2341234124312331E107");
    472         doTestCompareRawBits("-1.2341234124312332E107", 0xd62ae7a25fe706ecL,
    473                 "-1.2341234124312331E107");
    474 
    475         doTestCompareRawBits("1e23", 0x44b52d02c7e14af6L, "1.0e23");
    476 
    477         /*
    478          * These particular tests verify that the extreme boundary conditions
    479          * are converted correctly.
    480          */
    481         doTestCompareRawBits("0.0e-309", 0L, "0.0");
    482         doTestCompareRawBits("-0.0e-309", 0x8000000000000000L, "-0.0");
    483         doTestCompareRawBits("0.0e309", 0L, "0.0");
    484         doTestCompareRawBits("-0.0e309", 0x8000000000000000L, "-0.0");
    485         doTestCompareRawBits("0.1e309", 0x7fe1ccf385ebc8a0L, "1.0e308");
    486         doTestCompareRawBits("0.2e309", 0x7ff0000000000000L, "Infinity");
    487         doTestCompareRawBits("65e-325", 1L, "4.9e-324");
    488         doTestCompareRawBits("1000e-326", 2L, "1.0e-323");
    489 
    490         doTestCompareRawBits("4.0e-306", 0x86789e3750f791L, "4.0e-306");
    491         doTestCompareRawBits("2.22507e-308", 0xffffe2e8159d0L, "2.22507e-308");
    492         doTestCompareRawBits(
    493                 "111222333444555666777888999000111228999000.92233720368547758079223372036854775807",
    494                 0x48746da623f1dd8bL, "1.1122233344455567E41");
    495         doTestCompareRawBits(
    496                 "-111222333444555666777888999000111228999000.92233720368547758079223372036854775807",
    497                 0xc8746da623f1dd8bL, "-1.1122233344455567E41");
    498         doTestCompareRawBits(
    499                 "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210",
    500                 0x54820fe0ba17f469L, "1.2345678901234567E99");
    501         doTestCompareRawBits(
    502                 "-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210",
    503                 0xd4820fe0ba17f469L, "-1.2345678901234567E99");
    504 
    505         doTestCompareRawBits(
    506                 "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.01",
    507                 0x7fefffffffffffffL, "1.7976931348623157E308");
    508         doTestCompareRawBits(
    509                 "-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.01",
    510                 0xffefffffffffffffL, "-1.7976931348623157E308");
    511         doTestCompareRawBits(
    512                 "1112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001234567890",
    513                 0x7ff0000000000000L, "Infinity");
    514         doTestCompareRawBits(
    515                 "-1112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001234567890",
    516                 0xfff0000000000000L, "-Infinity");
    517         doTestCompareRawBits(
    518                 "179769313486231590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.01",
    519                 0x7ff0000000000000L, "Infinity");
    520         doTestCompareRawBits(
    521                 "-179769313486231590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.01",
    522                 0xfff0000000000000L, "-Infinity");
    523         doTestCompareRawBits(
    524                 "0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
    525                 0x2b392a32afcc661eL, "1.7976931348623157E-100");
    526         doTestCompareRawBits(
    527                 "-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
    528                 0xab392a32afcc661eL, "-1.7976931348623157E-100");
    529         doTestCompareRawBits(
    530                 "0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
    531                 0x1b3432f0cb68e61L, "1.7976931348623157E-300");
    532         doTestCompareRawBits(
    533                 "-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
    534                 0x81b3432f0cb68e61L, "-1.7976931348623157E-300");
    535         doTestCompareRawBits(
    536                 "0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
    537                 0x2117b590b942L, "1.79769313486234E-310");
    538         doTestCompareRawBits(
    539                 "-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
    540                 0x80002117b590b942L, "-1.79769313486234E-310");
    541         doTestCompareRawBits(
    542                 "0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
    543                 0xe37L, "1.798E-320");
    544         doTestCompareRawBits(
    545                 "-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
    546                 0x8000000000000e37L, "-1.798E-320");
    547         doTestCompareRawBits(
    548                 "0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
    549                 0x2L, "1.0E-323");
    550         doTestCompareRawBits(
    551                 "-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
    552                 0x8000000000000002L, "-1.0E-323");
    553         doTestCompareRawBits(
    554                 "0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055595409854908458349204328908234982349050934129878452378432452458968024357823490509341298784523784324524589680243578234905093412987845237843245245896802435782349050934129878452378432452458968024357868024357823490509341298784523784324524589680243578234905093412987845237843245245896802435786802435782349050934129878452378432452458968024357823490509341298784523784324524589680243578",
    555                 0x1L, "4.9E-324");
    556         doTestCompareRawBits(
    557                 "-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055595409854908458349204328908234982349050934129878452378432452458968024357823490509341298784523784324524589680243578234905093412987845237843245245896802435782349050934129878452378432452458968024357868024357823490509341298784523784324524589680243578234905093412987845237843245245896802435786802435782349050934129878452378432452458968024357823490509341298784523784324524589680243578",
    558                 0x8000000000000001L, "-4.9E-324");
    559     }
    560 
    561     /**
    562      * java.lang.Double#parseDouble(java.lang.String)
    563      */
    564     public void test_parseDouble_LString_Illegal() {
    565         try {
    566             Double.parseDouble("0.0p0D");
    567             fail("Should throw NumberFormatException.");
    568         } catch (NumberFormatException e) {
    569             // expected
    570         }
    571 
    572         try {
    573             Double.parseDouble("+0x.p1d");
    574             fail("Should throw NumberFormatException.");
    575         } catch (NumberFormatException e) {
    576             // expected
    577         }
    578 
    579         try {
    580             Double.parseDouble("0Xg.gp1D");
    581             fail("Should throw NumberFormatException.");
    582         } catch (NumberFormatException e) {
    583             // expected
    584         }
    585 
    586         try {
    587             Double.parseDouble("-0x1.1p");
    588             fail("Should throw NumberFormatException.");
    589         } catch (NumberFormatException e) {
    590             // expected
    591         }
    592 
    593         try {
    594             Double.parseDouble("+0x 1.1 p2d");
    595             fail("Should throw NumberFormatException.");
    596         } catch (NumberFormatException e) {
    597             // expected
    598         }
    599 
    600         try {
    601             Double.parseDouble("x1.1p2d");
    602             fail("Should throw NumberFormatException.");
    603         } catch (NumberFormatException e) {
    604             // expected
    605         }
    606 
    607         try {
    608             Double.parseDouble(" 0x-2.1p2");
    609             fail("Should throw NumberFormatException.");
    610         } catch (NumberFormatException e) {
    611             // expected
    612         }
    613 
    614         try {
    615             Double.parseDouble(" 0x2.1pad");
    616             fail("Should throw NumberFormatException.");
    617         } catch (NumberFormatException e) {
    618             // expected
    619         }
    620 
    621         try {
    622             Double.parseDouble(" 0x111.222p 22d");
    623             fail("Should throw NumberFormatException.");
    624         } catch (NumberFormatException e) {
    625             // expected
    626         }
    627     }
    628 
    629     /**
    630      * java.lang.Double#parseDouble(java.lang.String)
    631      */
    632     public void test_parseDouble_LString_FromHexString() {
    633         double actual;
    634         double expected;
    635 
    636         actual = Double.parseDouble("0x0.0p0D");
    637         assertEquals("Returned incorrect value", 0.0d, actual, 0.0D);
    638 
    639         actual = Double.parseDouble("0xa.ap+9d");
    640         assertEquals("Returned incorrect value", 5440.0d, actual, 0.0D);
    641 
    642         actual = Double.parseDouble("+0Xb.10ap8");
    643         assertEquals("Returned incorrect value", 2832.625d, actual, 0.0D);
    644 
    645         actual = Double.parseDouble("-0X.a0P2D");
    646         assertEquals("Returned incorrect value", -2.5d, actual, 0.0D);
    647 
    648         actual = Double.parseDouble("\r 0x22.1p2d \t");
    649         assertEquals("Returned incorrect value", 136.25d, actual, 0.0D);
    650 
    651         actual = Double.parseDouble("0x1.0p-1");
    652         assertEquals("Returned incorrect value", 0.5, actual, 0.0D);
    653 
    654         actual = Double
    655                 .parseDouble("0x00000000000000000000000000000000001.0p-1");
    656         assertEquals("Returned incorrect value", 0.5, actual, 0.0D);
    657 
    658         actual = Double.parseDouble("0x1.0p-00000000000000000000000000001");
    659         assertEquals("Returned incorrect value", 0.5, actual, 0.0D);
    660 
    661         actual = Double.parseDouble("0x.100000000000000000000000000000000p1");
    662         assertEquals("Returned incorrect value", 0.125, actual, 0.0D);
    663 
    664         actual = Double.parseDouble("0x0.0p999999999999999999999999999999999999999999999999999999999999999");
    665         assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
    666 
    667         actual = Double.parseDouble("0xf1.0p9999999999999999999999999999999999999999999999999999999999999999");
    668         assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
    669 
    670         actual = Double.parseDouble("0xffffffffffffffffffffffffffffffffffff.ffffffffffffffffffffffffffffffffffffffffffffffp1");
    671         expected = Double.longBitsToDouble(0x4900000000000000L);
    672         assertEquals("Returned incorrect value", expected, actual, 0.0D);
    673 
    674         actual = Double.parseDouble("0x0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001p1600");
    675         expected = Double.longBitsToDouble(0x7f30000000000000L);
    676         assertEquals("Returned incorrect value", expected, actual, 0.0D);
    677 
    678         actual = Double.parseDouble("0x0.0p-999999999999999999999999999999999999999999999999999999");
    679         assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
    680 
    681         actual = Double.parseDouble("0xf1.0p-9999999999999999999999999999999999999999999999999999999999999999");
    682         assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
    683 
    684         actual = Double.parseDouble("0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000p-1600");
    685         expected = Double.longBitsToDouble(0xf0000000000000L);
    686         assertEquals("Returned incorrect value", expected, actual, 0.0D);
    687 
    688         actual = Double.parseDouble("0x1.p9223372036854775807");
    689         assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
    690 
    691         actual = Double.parseDouble("0x1.p9223372036854775808");
    692         assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
    693 
    694         actual = Double.parseDouble("0x10.p9223372036854775808");
    695         assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
    696 
    697         actual = Double.parseDouble("0xabcd.ffffffffp+2000");
    698         assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
    699 
    700         actual = Double.parseDouble("0x1.p-9223372036854775808");
    701         assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
    702 
    703         actual = Double.parseDouble("0x1.p-9223372036854775809");
    704         assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
    705 
    706         actual = Double.parseDouble("0x.1p-9223372036854775809");
    707         assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
    708 
    709         actual = Double.parseDouble("0xabcd.ffffffffffffffp-2000");
    710         assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
    711     }
    712 
    713     /**
    714      * java.lang.Double#parseDouble(java.lang.String)
    715      */
    716     public void test_parseDouble_LString_NormalPositiveExponent() {
    717         long[] expecteds = {
    718                 0x3f323456789abcdfL, 0x40e111012345678aL, 0x41a1110091a2b3c5L,
    719                 0x4259998091a2b3c5L, 0x4311110048d159e2L, 0x43c5554048d159e2L,
    720                 0x4479998048d159e2L, 0x452dddc048d159e2L, 0x45e111002468acf1L,
    721                 0x469333202468acf1L, 0x4751011001234568L, 0x4802112101234568L,
    722                 0x48b3213201234568L, 0x4964314301234568L, 0x4a15415401234568L,
    723                 0x4ac6516501234568L, 0x4b77617601234568L, 0x4c28718701234568L,
    724                 0x4cd9819801234568L, 0x4d9049048091a2b4L, 0x4e4101100091a2b4L,
    725                 0x4ef189188091a2b4L, 0x4fa211210091a2b4L, 0x505299298091a2b4L,
    726                 0x510321320091a2b4L, 0x51b3a93a8091a2b4L, 0x526431430091a2b4L,
    727                 0x5314b94b8091a2b4L, 0x53c841840091a2b4L, 0x5478c98c8091a2b4L,
    728                 0x552981980091a2b4L, 0x55da09a08091a2b4L, 0x568a91a90091a2b4L,
    729                 0x573b19b18091a2b4L, 0x57eba1ba0091a2b4L, 0x589c29c28091a2b4L,
    730                 0x594cb1cb0091a2b4L, 0x5a001d01c048d15aL, 0x5ab061060048d15aL,
    731                 0x5b60a50a4048d15aL, 0x5c1101100048d15aL, 0x5cc145144048d15aL,
    732                 0x5d7189188048d15aL, 0x5e21cd1cc048d15aL, 0x5ed211210048d15aL,
    733                 0x5f8255254048d15aL, 0x603419418048d15aL, 0x60e45d45c048d15aL,
    734                 0x6194a14a0048d15aL, 0x6244e54e4048d15aL, 0x62f541540048d15aL,
    735                 0x63a585584048d15aL, 0x6455c95c8048d15aL, 0x65060d60c048d15aL,
    736                 0x65b651650048d15aL, 0x666815814048d15aL, 0x671859858048d15aL,
    737                 0x67c89d89c048d15aL, 0x6878e18e0048d15aL, 0x692925924048d15aL,
    738                 0x69d981980048d15aL, 0x6a89c59c4048d15aL, 0x6b3a09a08048d15aL,
    739                 0x6bea4da4c048d15aL, 0x6c9c11c10048d15aL, 0x6d4c55c54048d15aL,
    740                 0x6dfc99c98048d15aL, 0x6eacddcdc048d15aL, 0x6f5d21d20048d15aL,
    741                 0x700d65d64048d15aL, 0x70bdc1dc0048d15aL, 0x716e05e04048d15aL,
    742                 0x721e49e48048d15aL, 0x72d00700602468adL, 0x73802902802468adL,
    743                 0x74304b04a02468adL, 0x74e06d06c02468adL, 0x75908f08e02468adL,
    744                 0x7640b10b002468adL, 0x76f0d30d202468adL, 0x77a10110002468adL,
    745                 0x78512312202468adL, 0x79020520402468adL, 0x79b22722602468adL,
    746                 0x7a624924802468adL, 0x7b126b26a02468adL, 0x7bc28d28c02468adL,
    747                 0x7c72af2ae02468adL, 0x7d22d12d002468adL, 0x7dd2f32f202468adL,
    748                 0x7e832132002468adL, 0x7f40011001012345L, 0x7ff0000000000000L,
    749                 0x7ff0000000000000L, 0x7ff0000000000000L, 0x7ff0000000000000L,
    750                 0x7ff0000000000000L, 0x7ff0000000000000L, 0x7ff0000000000000L,
    751                 0x7ff0000000000000L, 0x7ff0000000000000L, 0x7ff0000000000000L,
    752                 0x7ff0000000000000L, 0x7ff0000000000000L, 0x7ff0000000000000L,
    753                 0x7ff0000000000000L, 0x7ff0000000000000L, 0x7ff0000000000000L,
    754                 0x7ff0000000000000L, 0x7ff0000000000000L, 0x7ff0000000000000L,
    755                 0x7ff0000000000000L, 0x7ff0000000000000L };
    756 
    757         for (int i = 0; i < expecteds.length; i++) {
    758             int part = i * 11;
    759             String inputString = "0x" + part + "." + part + "0123456789abcdefp" + part;
    760 
    761             double actual = Double.parseDouble(inputString);
    762             double expected = Double.longBitsToDouble(expecteds[i]);
    763 
    764             String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
    765             String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
    766             String errorMsg = i + "th input string is:<" + inputString
    767                     + ">.The expected result should be:<" + expectedString
    768                     + ">, but was: <" + actualString + ">. ";
    769 
    770             assertEquals(errorMsg, expected, actual, 0.0D);
    771         }
    772     }
    773 
    774     /**
    775      * java.lang.Double#parseDouble(java.lang.String)
    776      */
    777     public void test_parseDouble_LString_NormalNegativeExponent() {
    778         long[] expecteds = {
    779                 0x3f323456789abcdfL, 0x3f8111012345678aL, 0x3ee1110091a2b3c5L,
    780                 0x3e39998091a2b3c5L, 0x3d91110048d159e2L, 0x3ce5554048d159e2L,
    781                 0x3c39998048d159e2L, 0x3b8dddc048d159e2L, 0x3ae111002468acf1L,
    782                 0x3a3333202468acf1L, 0x3991011001234568L, 0x38e2112101234568L,
    783                 0x3833213201234568L, 0x3784314301234568L, 0x36d5415401234568L,
    784                 0x3626516501234568L, 0x3577617601234568L, 0x34c8718701234568L,
    785                 0x3419819801234568L, 0x337049048091a2b4L, 0x32c101100091a2b4L,
    786                 0x321189188091a2b4L, 0x316211210091a2b4L, 0x30b299298091a2b4L,
    787                 0x300321320091a2b4L, 0x2f53a93a8091a2b4L, 0x2ea431430091a2b4L,
    788                 0x2df4b94b8091a2b4L, 0x2d4841840091a2b4L, 0x2c98c98c8091a2b4L,
    789                 0x2be981980091a2b4L, 0x2b3a09a08091a2b4L, 0x2a8a91a90091a2b4L,
    790                 0x29db19b18091a2b4L, 0x292ba1ba0091a2b4L, 0x287c29c28091a2b4L,
    791                 0x27ccb1cb0091a2b4L, 0x27201d01c048d15aL, 0x267061060048d15aL,
    792                 0x25c0a50a4048d15aL, 0x251101100048d15aL, 0x246145144048d15aL,
    793                 0x23b189188048d15aL, 0x2301cd1cc048d15aL, 0x225211210048d15aL,
    794                 0x21a255254048d15aL, 0x20f419418048d15aL, 0x20445d45c048d15aL,
    795                 0x1f94a14a0048d15aL, 0x1ee4e54e4048d15aL, 0x1e3541540048d15aL,
    796                 0x1d8585584048d15aL, 0x1cd5c95c8048d15aL, 0x1c260d60c048d15aL,
    797                 0x1b7651650048d15aL, 0x1ac815814048d15aL, 0x1a1859858048d15aL,
    798                 0x19689d89c048d15aL, 0x18b8e18e0048d15aL, 0x180925924048d15aL,
    799                 0x175981980048d15aL, 0x16a9c59c4048d15aL, 0x15fa09a08048d15aL,
    800                 0x154a4da4c048d15aL, 0x149c11c10048d15aL, 0x13ec55c54048d15aL,
    801                 0x133c99c98048d15aL, 0x128cddcdc048d15aL, 0x11dd21d20048d15aL,
    802                 0x112d65d64048d15aL, 0x107dc1dc0048d15aL, 0xfce05e04048d15aL,
    803                 0xf1e49e48048d15aL, 0xe700700602468adL, 0xdc02902802468adL,
    804                 0xd104b04a02468adL, 0xc606d06c02468adL, 0xbb08f08e02468adL,
    805                 0xb00b10b002468adL, 0xa50d30d202468adL, 0x9a10110002468adL,
    806                 0x8f12312202468adL, 0x8420520402468adL, 0x7922722602468adL,
    807                 0x6e24924802468adL, 0x6326b26a02468adL, 0x5828d28c02468adL,
    808                 0x4d2af2ae02468adL, 0x422d12d002468adL, 0x372f32f202468adL,
    809                 0x2c32132002468adL, 0x220011001012345L, 0x170121012012345L,
    810                 0xc0231023012345L, 0x10341034012345L, 0x208a208a024L,
    811                 0x41584158L, 0x83388L, 0x108L,
    812                 0x0L, 0x0L, 0x0L,
    813                 0x0L, 0x0L, 0x0L,
    814                 0x0L, 0x0L, 0x0L,
    815                 0x0L, 0x0L, 0x0L,
    816                 0x0L, 0x0L };
    817 
    818         for (int i = 0; i < expecteds.length; i++) {
    819             int part = i * 11;
    820             String inputString = "0x" + part + "." + part + "0123456789abcdefp-" + part;
    821 
    822             double actual = Double.parseDouble(inputString);
    823             double expected = Double.longBitsToDouble(expecteds[i]);
    824 
    825             String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
    826             String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
    827             String errorMsg = i + "th input string is:<" + inputString
    828                     + ">.The expected result should be:<" + expectedString
    829                     + ">, but was: <" + actualString + ">. ";
    830 
    831             assertEquals(errorMsg, expected, actual, 0.0D);
    832         }
    833     }
    834 
    835     /**
    836      * java.lang.Double#parseDouble(java.lang.String)
    837      */
    838     public void test_parseDouble_LString_MaxNormalBoundary() {
    839         long[] expecteds = {
    840                 0x7fefffffffffffffL, 0x7fefffffffffffffL, 0x7fefffffffffffffL,
    841                 0x7fefffffffffffffL, 0x7fefffffffffffffL, 0x7fefffffffffffffL,
    842                 0x7fefffffffffffffL, 0x7ff0000000000000L, 0x7ff0000000000000L,
    843                 0x7ff0000000000000L, 0x7ff0000000000000L, 0x7ff0000000000000L,
    844                 0x7ff0000000000000L, 0x7ff0000000000000L, 0x7ff0000000000000L,
    845 
    846                 0xffefffffffffffffL, 0xffefffffffffffffL, 0xffefffffffffffffL,
    847                 0xffefffffffffffffL, 0xffefffffffffffffL, 0xffefffffffffffffL,
    848                 0xffefffffffffffffL, 0xfff0000000000000L, 0xfff0000000000000L,
    849                 0xfff0000000000000L, 0xfff0000000000000L, 0xfff0000000000000L,
    850                 0xfff0000000000000L, 0xfff0000000000000L, 0xfff0000000000000L };
    851 
    852         String[] inputs = {
    853                 "0x1.fffffffffffffp1023",
    854                 "0x1.fffffffffffff000000000000000000000000001p1023",
    855                 "0x1.fffffffffffff1p1023",
    856                 "0x1.fffffffffffff100000000000000000000000001p1023",
    857                 "0x1.fffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffp1023",
    858                 "0x1.fffffffffffff7p1023",
    859                 "0x1.fffffffffffff700000000000000000000000001p1023",
    860                 "0x1.fffffffffffff8p1023",
    861                 "0x1.fffffffffffff800000000000000000000000001p1023",
    862                 "0x1.fffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffp1023",
    863                 "0x1.fffffffffffff9p1023",
    864                 "0x1.fffffffffffff900000000000000000000000001p1023",
    865                 "0x1.ffffffffffffffp1023",
    866                 "0x1.ffffffffffffff00000000000000000000000001p1023",
    867                 "0x1.fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp1023",
    868 
    869                 "-0x1.fffffffffffffp1023",
    870                 "-0x1.fffffffffffff000000000000000000000000001p1023",
    871                 "-0x1.fffffffffffff1p1023",
    872                 "-0x1.fffffffffffff100000000000000000000000001p1023",
    873                 "-0x1.fffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffp1023",
    874                 "-0x1.fffffffffffff7p1023",
    875                 "-0x1.fffffffffffff700000000000000000000000001p1023",
    876                 "-0x1.fffffffffffff8p1023",
    877                 "-0x1.fffffffffffff800000000000000000000000001p1023",
    878                 "-0x1.fffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffp1023",
    879                 "-0x1.fffffffffffff9p1023",
    880                 "-0x1.fffffffffffff900000000000000000000000001p1023",
    881                 "-0x1.ffffffffffffffp1023",
    882                 "-0x1.ffffffffffffff00000000000000000000000001p1023",
    883                 "-0x1.fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp1023" };
    884 
    885         for (int i = 0; i < inputs.length; i++) {
    886             double actual = Double.parseDouble(inputs[i]);
    887             double expected = Double.longBitsToDouble(expecteds[i]);
    888 
    889             String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
    890             String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
    891             String errorMsg = i + "th input string is:<" + inputs[i]
    892                     + ">.The expected result should be:<" + expectedString
    893                     + ">, but was: <" + actualString + ">. ";
    894 
    895             assertEquals(errorMsg, expected, actual, 0.0D);
    896         }
    897     }
    898 
    899     /**
    900      * java.lang.Double#parseDouble(java.lang.String)
    901      */
    902     public void test_parseDouble_LString_MinNormalBoundary() {
    903         long[] expecteds = {
    904                 0x10000000000000L, 0x10000000000000L, 0x10000000000000L,
    905                 0x10000000000000L, 0x10000000000000L, 0x10000000000000L,
    906                 0x10000000000000L, 0x10000000000000L, 0x10000000000001L,
    907                 0x10000000000001L, 0x10000000000001L, 0x10000000000001L,
    908                 0x10000000000001L, 0x10000000000001L, 0x10000000000001L,
    909 
    910                 0x8010000000000000L, 0x8010000000000000L, 0x8010000000000000L,
    911                 0x8010000000000000L, 0x8010000000000000L, 0x8010000000000000L,
    912                 0x8010000000000000L, 0x8010000000000000L, 0x8010000000000001L,
    913                 0x8010000000000001L, 0x8010000000000001L, 0x8010000000000001L,
    914                 0x8010000000000001L, 0x8010000000000001L, 0x8010000000000001L };
    915 
    916         String[] inputs = {
    917                 "0x1.0p-1022",
    918                 "0x1.00000000000001p-1022",
    919                 "0x1.000000000000010000000000000000001p-1022",
    920                 "0x1.00000000000001fffffffffffffffffffffffffffffffffp-1022",
    921                 "0x1.00000000000007p-1022",
    922                 "0x1.000000000000070000000000000000001p-1022",
    923                 "0x1.00000000000007fffffffffffffffffffffffffffffffffp-1022",
    924                 "0x1.00000000000008p-1022",
    925                 "0x1.000000000000080000000000000000001p-1022",
    926                 "0x1.00000000000008fffffffffffffffffffffffffffffffffp-1022",
    927                 "0x1.00000000000009p-1022",
    928                 "0x1.000000000000090000000000000000001p-1022",
    929                 "0x1.00000000000009fffffffffffffffffffffffffffffffffp-1022",
    930                 "0x1.0000000000000fp-1022",
    931                 "0x1.0000000000000ffffffffffffffffffffffffffffffffffp-1022",
    932 
    933                 "-0x1.0p-1022",
    934                 "-0x1.00000000000001p-1022",
    935                 "-0x1.000000000000010000000000000000001p-1022",
    936                 "-0x1.00000000000001fffffffffffffffffffffffffffffffffp-1022",
    937                 "-0x1.00000000000007p-1022",
    938                 "-0x1.000000000000070000000000000000001p-1022",
    939                 "-0x1.00000000000007fffffffffffffffffffffffffffffffffp-1022",
    940                 "-0x1.00000000000008p-1022",
    941                 "-0x1.000000000000080000000000000000001p-1022",
    942                 "-0x1.00000000000008fffffffffffffffffffffffffffffffffp-1022",
    943                 "-0x1.00000000000009p-1022",
    944                 "-0x1.000000000000090000000000000000001p-1022",
    945                 "-0x1.00000000000009fffffffffffffffffffffffffffffffffp-1022",
    946                 "-0x1.0000000000000fp-1022",
    947                 "-0x1.0000000000000ffffffffffffffffffffffffffffffffffp-1022" };
    948 
    949         for (int i = 0; i < inputs.length; i++) {
    950             double actual = Double.parseDouble(inputs[i]);
    951             double expected = Double.longBitsToDouble(expecteds[i]);
    952 
    953             String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
    954             String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
    955             String errorMsg = i + "th input string is:<" + inputs[i]
    956                     + ">.The expected result should be:<" + expectedString
    957                     + ">, but was: <" + actualString + ">. ";
    958 
    959             assertEquals(errorMsg, expected, actual, 0.0D);
    960         }
    961     }
    962 
    963     /**
    964      * java.lang.Double#parseDouble(java.lang.String)
    965      */
    966     public void test_parseDouble_LString_MaxSubNormalBoundary() {
    967         long[] expecteds = {
    968                 0xfffffffffffffL, 0xfffffffffffffL, 0xfffffffffffffL,
    969                 0xfffffffffffffL, 0xfffffffffffffL, 0xfffffffffffffL,
    970                 0xfffffffffffffL, 0x10000000000000L, 0x10000000000000L,
    971                 0x10000000000000L, 0x10000000000000L, 0x10000000000000L,
    972                 0x10000000000000L, 0x10000000000000L, 0x10000000000000L,
    973 
    974                 0x800fffffffffffffL, 0x800fffffffffffffL, 0x800fffffffffffffL,
    975                 0x800fffffffffffffL, 0x800fffffffffffffL, 0x800fffffffffffffL,
    976                 0x800fffffffffffffL, 0x8010000000000000L, 0x8010000000000000L,
    977                 0x8010000000000000L, 0x8010000000000000L, 0x8010000000000000L,
    978                 0x8010000000000000L, 0x8010000000000000L, 0x8010000000000000L };
    979 
    980         String[] inputs = {
    981                 "0x0.fffffffffffffp-1022",
    982                 "0x0.fffffffffffff00000000000000000000000000000000001p-1022",
    983                 "0x0.fffffffffffff1p-1022",
    984                 "0x0.fffffffffffff10000000000000000000000000000000001p-1022",
    985                 "0x0.fffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
    986                 "0x0.fffffffffffff7p-1022",
    987                 "0x0.fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
    988                 "0x0.fffffffffffff8p-1022",
    989                 "0x0.fffffffffffff80000000000000000000000000000000001p-1022",
    990                 "0x0.fffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
    991                 "0x0.fffffffffffff9p-1022",
    992                 "0x0.fffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
    993                 "0x0.ffffffffffffffp-1022",
    994                 "0x0.ffffffffffffff0000000000000000000000000000000001p-1022",
    995                 "0x0.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
    996 
    997                 "-0x0.fffffffffffffp-1022",
    998                 "-0x0.fffffffffffff00000000000000000000000000000000001p-1022",
    999                 "-0x0.fffffffffffff1p-1022",
   1000                 "-0x0.fffffffffffff10000000000000000000000000000000001p-1022",
   1001                 "-0x0.fffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
   1002                 "-0x0.fffffffffffff7p-1022",
   1003                 "-0x0.fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
   1004                 "-0x0.fffffffffffff8p-1022",
   1005                 "-0x0.fffffffffffff80000000000000000000000000000000001p-1022",
   1006                 "-0x0.fffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
   1007                 "-0x0.fffffffffffff9p-1022",
   1008                 "-0x0.fffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
   1009                 "-0x0.ffffffffffffffp-1022",
   1010                 "-0x0.ffffffffffffff0000000000000000000000000000000001p-1022",
   1011                 "-0x0.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022" };
   1012 
   1013         for (int i = 0; i < inputs.length; i++) {
   1014             double actual = Double.parseDouble(inputs[i]);
   1015             double expected = Double.longBitsToDouble(expecteds[i]);
   1016 
   1017             String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
   1018             String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
   1019             String errorMsg = i + "th input string is:<" + inputs[i]
   1020                     + ">.The expected result should be:<" + expectedString
   1021                     + ">, but was: <" + actualString + ">. ";
   1022 
   1023             assertEquals(errorMsg, expected, actual, 0.0D);
   1024         }
   1025     }
   1026 
   1027     /**
   1028      * java.lang.Double#parseDouble(java.lang.String)
   1029      */
   1030     public void test_parseDouble_LString_MinSubNormalBoundary() {
   1031         long[] expecteds = {
   1032                 0x1L, 0x1L, 0x2L,
   1033                 0x1L, 0x1L, 0x1L,
   1034                 0x2L, 0x2L, 0x2L,
   1035                 0x2L, 0x2L, 0x2L,
   1036                 0x2L, 0x2L, 0x2L,
   1037 
   1038                 0x8000000000000001L, 0x8000000000000001L, 0x8000000000000002L,
   1039                 0x8000000000000001L, 0x8000000000000001L, 0x8000000000000001L,
   1040                 0x8000000000000002L, 0x8000000000000002L, 0x8000000000000002L,
   1041                 0x8000000000000002L, 0x8000000000000002L, 0x8000000000000002L,
   1042                 0x8000000000000002L, 0x8000000000000002L, 0x8000000000000002L };
   1043 
   1044         String[] inputs = {
   1045                 "0x0.0000000000001p-1022",
   1046                 "0x0.00000000000010000000000000000001p-1022",
   1047                 "0x0.0000000000001fffffffffffffffffffffffffffffffffp-1022",
   1048                 "0x0.00000000000017p-1022",
   1049                 "0x0.000000000000170000000000000000001p-1022",
   1050                 "0x0.00000000000017fffffffffffffffffffffffffffffffffp-1022",
   1051                 "0x0.00000000000018p-1022",
   1052                 "0x0.000000000000180000000000000000001p-1022",
   1053                 "0x0.00000000000018fffffffffffffffffffffffffffffffffp-1022",
   1054                 "0x0.00000000000019p-1022",
   1055                 "0x0.000000000000190000000000000000001p-1022",
   1056                 "0x0.00000000000019fffffffffffffffffffffffffffffffffp-1022",
   1057                 "0x0.0000000000001fp-1022",
   1058                 "0x0.0000000000001f0000000000000000001p-1022",
   1059                 "0x0.0000000000001ffffffffffffffffffffffffffffffffffp-1022",
   1060 
   1061                 "-0x0.0000000000001p-1022",
   1062                 "-0x0.00000000000010000000000000000001p-1022",
   1063                 "-0x0.0000000000001fffffffffffffffffffffffffffffffffp-1022",
   1064                 "-0x0.00000000000017p-1022",
   1065                 "-0x0.000000000000170000000000000000001p-1022",
   1066                 "-0x0.00000000000017fffffffffffffffffffffffffffffffffp-1022",
   1067                 "-0x0.00000000000018p-1022",
   1068                 "-0x0.000000000000180000000000000000001p-1022",
   1069                 "-0x0.00000000000018fffffffffffffffffffffffffffffffffp-1022",
   1070                 "-0x0.00000000000019p-1022",
   1071                 "-0x0.000000000000190000000000000000001p-1022",
   1072                 "-0x0.00000000000019fffffffffffffffffffffffffffffffffp-1022",
   1073                 "-0x0.0000000000001fp-1022",
   1074                 "-0x0.0000000000001f0000000000000000001p-1022",
   1075                 "-0x0.0000000000001ffffffffffffffffffffffffffffffffffp-1022" };
   1076 
   1077         for (int i = 0; i < inputs.length; i++) {
   1078             double actual = Double.parseDouble(inputs[i]);
   1079             double expected = Double.longBitsToDouble(expecteds[i]);
   1080 
   1081             String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
   1082             String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
   1083             String errorMsg = i + "th input string is:<" + inputs[i]
   1084                     + ">.The expected result should be:<" + expectedString
   1085                     + ">, but was: <" + actualString + ">. ";
   1086 
   1087             assertEquals(errorMsg, expected, actual, 0.0D);
   1088         }
   1089     }
   1090 
   1091     /**
   1092      * java.lang.Double#parseDouble(java.lang.String)
   1093      */
   1094     public void test_parseDouble_LString_ZeroBoundary() {
   1095         long[] expecteds = {
   1096                 0x0L, 0x0L, 0x0L,
   1097                 0x1L, 0x1L, 0x1L,
   1098                 0x1L, 0x1L, 0x1L,
   1099                 0x8000000000000000L, 0x8000000000000000L, 0x8000000000000000L,
   1100                 0x8000000000000001L, 0x8000000000000001L, 0x8000000000000001L,
   1101                 0x8000000000000001L, 0x8000000000000001L, 0x8000000000000001L };
   1102 
   1103         String[] inputs = {
   1104                 "0x0.00000000000004p-1022",
   1105                 "0x0.00000000000007ffffffffffffffffffffffp-1022",
   1106                 "0x0.00000000000008p-1022",
   1107                 "0x0.000000000000080000000000000000001p-1022",
   1108                 "0x0.00000000000008fffffffffffffffffffffffffffffffp-1022",
   1109                 "0x0.00000000000009p-1022",
   1110                 "0x0.000000000000090000000000000000001p-1022",
   1111                 "0x0.00000000000009fffffffffffffffffffffffffffffffffp-1022",
   1112                 "0x0.0000000000000fffffffffffffffffffffffffffffffffffp-1022",
   1113 
   1114                 "-0x0.00000000000004p-1022",
   1115                 "-0x0.00000000000007ffffffffffffffffffffffp-1022",
   1116                 "-0x0.00000000000008p-1022",
   1117                 "-0x0.000000000000080000000000000000001p-1022",
   1118                 "-0x0.00000000000008fffffffffffffffffffffffffffffffp-1022",
   1119                 "-0x0.00000000000009p-1022",
   1120                 "-0x0.000000000000090000000000000000001p-1022",
   1121                 "-0x0.00000000000009fffffffffffffffffffffffffffffffffp-1022",
   1122                 "-0x0.0000000000000fffffffffffffffffffffffffffffffffffp-1022" };
   1123 
   1124         for (int i = 0; i < inputs.length; i++) {
   1125             double actual = Double.parseDouble(inputs[i]);
   1126             double expected = Double.longBitsToDouble(expecteds[i]);
   1127 
   1128             String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
   1129             String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
   1130             String errorMsg = i + "th input string is:<" + inputs[i]
   1131                     + ">.The expected result should be:<" + expectedString
   1132                     + ">, but was: <" + actualString + ">. ";
   1133 
   1134             assertEquals(errorMsg, expected, actual, 0.0D);
   1135         }
   1136     }
   1137 
   1138     /**
   1139      * java.lang.Double#shortValue()
   1140      */
   1141     public void test_shortValue() {
   1142         // Test for method short java.lang.Double.shortValue()
   1143         Double d = new Double(1923311.47712);
   1144         assertEquals("Returned incorrect short value", 22767, d.shortValue());
   1145     }
   1146 
   1147     /**
   1148      * java.lang.Double#toString()
   1149      */
   1150     public void test_toString() {
   1151         // Test for method java.lang.String java.lang.Double.toString()
   1152         test_toString(1.7976931348623157E308, "1.7976931348623157E308");
   1153         test_toString(5.0E-4, "5.0E-4");
   1154     }
   1155 
   1156     /**
   1157      * java.lang.Double#toString(double)
   1158      */
   1159     public void test_toStringD() {
   1160         // Test for method java.lang.String java.lang.Double.toString(double)
   1161         test_toString(1.7976931348623157E308, "1.7976931348623157E308");
   1162         test_toString(1.0 / 0.0, "Infinity");
   1163         test_toString(0.0 / 0.0, "NaN");
   1164         test_toString(-1.0 / 0.0, "-Infinity");
   1165 
   1166         double d;
   1167         d = Double.longBitsToDouble(0x470fffffffffffffL);
   1168         test_toString(d, "2.0769187434139308E34");
   1169         d = Double.longBitsToDouble(0x4710000000000000L);
   1170         test_toString(d, "2.076918743413931E34");
   1171 
   1172         d = Double.longBitsToDouble(0x470000000000000aL);
   1173         test_toString(d, "1.0384593717069678E34");
   1174         d = Double.longBitsToDouble(0x470000000000000bL);
   1175         test_toString(d, "1.038459371706968E34");
   1176 
   1177         d = Double.longBitsToDouble(0x4700000000000017L);
   1178         test_toString(d, "1.0384593717069708E34");
   1179         d = Double.longBitsToDouble(0x4700000000000018L);
   1180         test_toString(d, "1.038459371706971E34");
   1181 
   1182         d = Double.longBitsToDouble(0x4700000000000024L);
   1183         test_toString(d, "1.0384593717069738E34");
   1184         d = Double.longBitsToDouble(0x4700000000000025L);
   1185         test_toString(d, "1.038459371706974E34");
   1186 
   1187         d = Double.longBitsToDouble(0x4700000000000031L);
   1188         test_toString(d, "1.0384593717069768E34");
   1189         d = Double.longBitsToDouble(0x4700000000000032L);
   1190         test_toString(d, "1.038459371706977E34");
   1191 
   1192         d = Double.longBitsToDouble(0x470000000000003eL);
   1193         test_toString(d, "1.0384593717069798E34");
   1194         d = Double.longBitsToDouble(0x470000000000003fL);
   1195         test_toString(d, "1.03845937170698E34");
   1196 
   1197         d = Double.longBitsToDouble(0x7e00000000000003L);
   1198         test_toString(d, "8.371160993642719E298");
   1199         d = Double.longBitsToDouble(0x7e00000000000004L);
   1200         test_toString(d, "8.37116099364272E298");
   1201 
   1202         d = Double.longBitsToDouble(0x7e00000000000008L);
   1203         test_toString(d, "8.371160993642728E298");
   1204         d = Double.longBitsToDouble(0x7e00000000000009L);
   1205         test_toString(d, "8.37116099364273E298");
   1206 
   1207         d = Double.longBitsToDouble(0x7e00000000000013L);
   1208         test_toString(d, "8.371160993642749E298");
   1209         d = Double.longBitsToDouble(0x7e00000000000014L);
   1210         test_toString(d, "8.37116099364275E298");
   1211 
   1212         d = Double.longBitsToDouble(0x7e00000000000023L);
   1213         test_toString(d, "8.371160993642779E298");
   1214         d = Double.longBitsToDouble(0x7e00000000000024L);
   1215         test_toString(d, "8.37116099364278E298");
   1216 
   1217         d = Double.longBitsToDouble(0x7e0000000000002eL);
   1218         test_toString(d, "8.371160993642799E298");
   1219         d = Double.longBitsToDouble(0x7e0000000000002fL);
   1220         test_toString(d, "8.3711609936428E298");
   1221 
   1222         d = Double.longBitsToDouble(0xda00000000000001L);
   1223         test_toString(d, "-3.3846065602060736E125");
   1224         d = Double.longBitsToDouble(0xda00000000000002L);
   1225         test_toString(d, "-3.384606560206074E125");
   1226 
   1227         d = Double.longBitsToDouble(0xda00000000000005L);
   1228         test_toString(d, "-3.3846065602060766E125");
   1229         d = Double.longBitsToDouble(0xda00000000000006L);
   1230         test_toString(d, "-3.384606560206077E125");
   1231 
   1232         d = Double.longBitsToDouble(0xda00000000000009L);
   1233         test_toString(d, "-3.3846065602060796E125");
   1234         d = Double.longBitsToDouble(0xda0000000000000aL);
   1235         test_toString(d, "-3.38460656020608E125");
   1236 
   1237         d = Double.longBitsToDouble(0xda0000000000000dL);
   1238         test_toString(d, "-3.3846065602060826E125");
   1239         d = Double.longBitsToDouble(0xda0000000000000eL);
   1240         test_toString(d, "-3.384606560206083E125");
   1241     }
   1242 
   1243     /**
   1244      * java.lang.Double#valueOf(java.lang.String)
   1245      */
   1246     public void test_valueOfLjava_lang_String() {
   1247         // Test for method java.lang.Double
   1248         // java.lang.Double.valueOf(java.lang.String)
   1249         assertTrue("Incorrect double returned", Math.abs(Double.valueOf("999999999999.999")
   1250                 .doubleValue() - 999999999999.999d) < 1);
   1251 
   1252         try {
   1253             Double.valueOf(null);
   1254             fail("Expected Double.valueOf(null) to throw NPE.");
   1255         } catch (NullPointerException ex) {
   1256             // expected
   1257         }
   1258 
   1259         try {
   1260             Double.valueOf("");
   1261             fail("Expected Double.valueOf(\"\") to throw NFE");
   1262         } catch (NumberFormatException e) {
   1263             // expected
   1264         }
   1265 
   1266         Double pi = Double.valueOf("3.141592654");
   1267         assertEquals(3.141592654, pi.doubleValue(), 0D);
   1268 
   1269         Double posZero = Double.valueOf("+0.0");
   1270         Double negZero = Double.valueOf("-0.0");
   1271         assertFalse("Doubletest0", posZero.equals(negZero));
   1272 
   1273         // Tests for double values by name.
   1274         Double expectedNaN = new Double(Double.NaN);
   1275 
   1276         Double posNaN = Double.valueOf("NaN");
   1277         assertTrue("Doubletest1", posNaN.equals(expectedNaN));
   1278 
   1279         Double posNaNSigned = Double.valueOf("+NaN");
   1280         assertTrue("Doubletest2", posNaNSigned.equals(expectedNaN));
   1281 
   1282         Double negNaNSigned = Double.valueOf("-NaN");
   1283         assertTrue("Doubletest3", negNaNSigned.equals(expectedNaN));
   1284 
   1285         Double posInfinite = Double.valueOf("Infinity");
   1286         assertTrue("Doubletest4", posInfinite.equals(new Double(Double.POSITIVE_INFINITY)));
   1287 
   1288         Double posInfiniteSigned = Double.valueOf("+Infinity");
   1289         assertTrue("Doubletest5", posInfiniteSigned
   1290                 .equals(new Double(Double.POSITIVE_INFINITY)));
   1291 
   1292         Double negInfiniteSigned = Double.valueOf("-Infinity");
   1293         assertTrue("Doubletest6", negInfiniteSigned
   1294                 .equals(new Double(Double.NEGATIVE_INFINITY)));
   1295     }
   1296 
   1297     /**
   1298      * java.lang.Double#compareTo(java.lang.Double)
   1299      * java.lang.Double#compare(double, double)
   1300      */
   1301     public void test_compareToLjava_lang_Double() {
   1302         // A selection of double values in ascending order.
   1303         double[] values = new double[] { Double.NEGATIVE_INFINITY, -Double.MAX_VALUE, -2d,
   1304                 -Double.MIN_VALUE, -0d, 0d, Double.MIN_VALUE, 2d, Double.MAX_VALUE,
   1305                 Double.POSITIVE_INFINITY, Double.NaN };
   1306         for (int i = 0; i < values.length; i++) {
   1307             double d1 = values[i];
   1308 
   1309             // Test that each value compares equal to itself; and each object is
   1310             // equal to another object like itself.
   1311             assertTrue("Assert 0: compare() should be equal: " + d1,
   1312                     Double.compare(d1, d1) == 0);
   1313             Double objDouble = new Double(d1);
   1314             assertTrue("Assert 1: compareTo() should be equal: " + d1, objDouble
   1315                     .compareTo(objDouble) == 0);
   1316 
   1317             // Test that the Double-defined order is respected
   1318             for (int j = i + 1; j < values.length; j++) {
   1319                 double d2 = values[j];
   1320                 assertTrue("Assert 2: compare() " + d1 + " should be less " + d2, Double
   1321                         .compare(d1, d2) == -1);
   1322                 assertTrue("Assert 3: compare() " + d2 + " should be greater " + d1, Double
   1323                         .compare(d2, d1) == 1);
   1324                 Double D2 = new Double(d2);
   1325                 assertTrue("Assert 4: compareTo() " + d1 + " should be less " + d2, objDouble
   1326                         .compareTo(D2) == -1);
   1327                 assertTrue("Assert 5: compareTo() " + d2 + " should be greater " + d1, D2
   1328                         .compareTo(objDouble) == 1);
   1329             }
   1330         }
   1331 
   1332         try {
   1333             new Double(0.0D).compareTo(null);
   1334             fail("No NPE");
   1335         } catch (NullPointerException e) {
   1336         }
   1337     }
   1338 
   1339     /**
   1340      * java.lang.Double#equals(java.lang.Object)
   1341      */
   1342     public void test_equalsLjava_lang_Object() {
   1343         Double d1 = new Double(87654321.12345d);
   1344         Double d2 = new Double(87654321.12345d);
   1345         Double d3 = new Double(0.0002f);
   1346         assertTrue("Assert 0: Equality test failed", d1.equals(d2) && !(d1.equals(d3)));
   1347 
   1348         assertTrue("Assert 2: NaN should not be == Nan", Double.NaN != Double.NaN);
   1349         assertTrue("Assert 3: NaN should not be == Nan", new Double(Double.NaN)
   1350                 .equals(new Double(Double.NaN)));
   1351         assertTrue("Assert 4: -0d should be == 0d", 0d == -0d);
   1352         assertTrue("Assert 5: -0d should not be equals() 0d", !new Double(0d)
   1353                 .equals(new Double(-0d)));
   1354 
   1355         Double dmax = new Double(Double.MAX_VALUE);
   1356         Double dmax1 = new Double(Double.MAX_VALUE);
   1357 
   1358         assertTrue("Equality test failed", dmax.equals(dmax1) && !(dmax.equals(new Object())));
   1359     }
   1360 
   1361     /**
   1362      * java.lang.Double#toHexString(double)
   1363      */
   1364     public void test_toHexStringF() {
   1365         // the follow values come from the Double Javadoc/Spec
   1366         assertEquals("0x0.0p0", Double.toHexString(0.0D));
   1367         assertEquals("-0x0.0p0", Double.toHexString(-0.0D));
   1368         assertEquals("0x1.0p0", Double.toHexString(1.0D));
   1369         assertEquals("-0x1.0p0", Double.toHexString(-1.0D));
   1370         assertEquals("0x1.0p1", Double.toHexString(2.0D));
   1371         assertEquals("0x1.8p1", Double.toHexString(3.0D));
   1372         assertEquals("0x1.0p-1", Double.toHexString(0.5D));
   1373         assertEquals("0x1.0p-2", Double.toHexString(0.25D));
   1374         assertEquals("0x1.fffffffffffffp1023", Double.toHexString(Double.MAX_VALUE));
   1375         assertEquals("0x0.0000000000001p-1022", Double.toHexString(Double.MIN_VALUE));
   1376 
   1377         // test edge cases
   1378         assertEquals("NaN", Double.toHexString(Double.NaN));
   1379         assertEquals("-Infinity", Double.toHexString(Double.NEGATIVE_INFINITY));
   1380         assertEquals("Infinity", Double.toHexString(Double.POSITIVE_INFINITY));
   1381 
   1382         // test various numbers
   1383         assertEquals("-0x1.da8p6", Double.toHexString(-118.625D));
   1384         assertEquals("0x1.2957874cccccdp23", Double.toHexString(9743299.65D));
   1385         assertEquals("0x1.2957874cccccdp23", Double.toHexString(9743299.65000D));
   1386         assertEquals("0x1.2957874cccf63p23", Double.toHexString(9743299.650001234D));
   1387         assertEquals("0x1.700d1061d3333p33", Double.toHexString(12349743299.65000D));
   1388 
   1389         // test HARMONY-2132
   1390         assertEquals("0x1.01p10", Double.toHexString(0x1.01p10));
   1391     }
   1392 
   1393     /**
   1394      * java.lang.Double#valueOf(double)
   1395      */
   1396     public void test_valueOfD() {
   1397         assertEquals(new Double(Double.MIN_VALUE), Double.valueOf(Double.MIN_VALUE));
   1398         assertEquals(new Double(Double.MAX_VALUE), Double.valueOf(Double.MAX_VALUE));
   1399         assertEquals(new Double(0), Double.valueOf(0));
   1400 
   1401         int s = -128;
   1402         while (s < 128) {
   1403             assertEquals(new Double(s), Double.valueOf(s));
   1404             assertEquals(new Double(s + 0.1D), Double.valueOf(s + 0.1D));
   1405             s++;
   1406         }
   1407     }
   1408 
   1409     /**
   1410      * {@link java.lang.Double#MAX_EXPONENT}
   1411      * @since 1.6
   1412      */
   1413     public void test_MAX_EXPONENT() {
   1414         assertTrue("Wrong value of java.lang.Double.MAX_EXPONENT",
   1415                 Double.MAX_EXPONENT == 1023);
   1416         assertTrue("Wrong value of java.lang.Double.MAX_EXPONENT",
   1417                 Double.MAX_EXPONENT == Math.getExponent(Double.MAX_VALUE));
   1418     }
   1419 
   1420     /**
   1421      * {@link java.lang.Double#MIN_EXPONENT}
   1422      * @since 1.6
   1423      */
   1424     public void test_MIN_EXPONENT() {
   1425         assertTrue("Wrong value of java.lang.Double.MIN_EXPONENT",
   1426                 Double.MIN_EXPONENT == -1022);
   1427         assertTrue("Wrong value of java.lang.Double.MIN_EXPONENT",
   1428                 Double.MIN_EXPONENT == Math.getExponent(Double.MIN_NORMAL));
   1429     }
   1430 
   1431     /**
   1432      * {@link java.lang.Double#MIN_NORMAL}
   1433      * @since 1.6
   1434      */
   1435     public void test_MIN_NORMAL() {
   1436         assertTrue("Wrong value of java.lang.Double.MIN_NORMAL",
   1437                 Double.MIN_NORMAL == 0x1.0p-1022);
   1438         assertTrue("Wrong value of java.lang.Double.MIN_NORMAL",
   1439                 Double.MIN_NORMAL == Double
   1440                         .longBitsToDouble(0x0010000000000000L));
   1441         assertTrue("Wrong value of java.lang.Double.MIN_NORMAL",
   1442                 Double.MIN_NORMAL == 2.2250738585072014E-308);
   1443     }
   1444 }
   1445