/* Copyright (C) 1988-1994 Sun Microsystems, Inc. 2550 Garcia Avenue */ /* Mountain View, California 94043 All rights reserved. */ /* */ /* Any person is hereby authorized to download, copy, use, create bug fixes, */ /* and distribute, subject to the following conditions: */ /* */ /* 1. the software may not be redistributed for a fee except as */ /* reasonable to cover media costs; */ /* 2. any copy of the software must include this notice, as well as */ /* any other embedded copyright notices; and */ /* 3. any distribution of this software or derivative works thereof */ /* must comply with all applicable U.S. export control laws. */ /* */ /* THE SOFTWARE IS MADE AVAILABLE "AS IS" AND WITHOUT EXPRESS OR IMPLIED */ /* WARRANTY OF ANY KIND, INCLUDING BUT NOT LIMITED TO THE IMPLIED */ /* WARRANTIES OF DESIGN, MERCHANTIBILITY, FITNESS FOR A PARTICULAR */ /* PURPOSE, NON-INFRINGEMENT, PERFORMANCE OR CONFORMANCE TO */ /* SPECIFICATIONS. */ /* */ /* BY DOWNLOADING AND/OR USING THIS SOFTWARE, THE USER WAIVES ALL CLAIMS */ /* AGAINST SUN MICROSYSTEMS, INC. AND ITS AFFILIATED COMPANIES IN ANY */ /* JURISDICTION, INCLUDING BUT NOT LIMITED TO CLAIMS FOR DAMAGES OR */ /* EQUITABLE RELIEF BASED ON LOSS OF DATA, AND SPECIFICALLY WAIVES EVEN */ /* UNKNOWN OR UNANTICIPATED CLAIMS OR LOSSES, PRESENT AND FUTURE. */ /* */ /* IN NO EVENT WILL SUN MICROSYSTEMS, INC. OR ANY OF ITS AFFILIATED */ /* COMPANIES BE LIABLE FOR ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, */ /* INDIRECT AND CONSEQUENTIAL DAMAGES, EVEN IF IT HAS BEEN ADVISED OF THE */ /* POSSIBILITY OF SUCH DAMAGES. */ /* */ /* This file is provided with no support and without any obligation on the */ /* part of Sun Microsystems, Inc. ("Sun") or any of its affiliated */ /* companies to assist in its use, correction, modification or */ /* enhancement. Nevertheless, and without creating any obligation on its */ /* part, Sun welcomes your comments concerning the software and requests */ /* that they be sent to fdlibm-comments@sunpro.sun.com. */ /* floord(integer) is itself */ floord n eq - 0 0 0 0 floord n eq - 80000000 0 80000000 0 floord n eq - 3ff00000 0 3ff00000 0 floord n eq - bff00000 0 bff00000 0 floord n eq - 433fffff ffffffff 433fffff ffffffff floord n eq - c33fffff ffffffff c33fffff ffffffff floord n eq - 7fefffff ffffffff 7fefffff ffffffff floord n eq - ffefffff ffffffff ffefffff ffffffff floord z eq - 0 0 0 0 floord z eq - 80000000 0 80000000 0 floord z eq - 3ff00000 0 3ff00000 0 floord z eq - bff00000 0 bff00000 0 floord z eq - 433fffff ffffffff 433fffff ffffffff floord z eq - c33fffff ffffffff c33fffff ffffffff floord z eq - 7fefffff ffffffff 7fefffff ffffffff floord z eq - ffefffff ffffffff ffefffff ffffffff floord p eq - 0 0 0 0 floord p eq - 80000000 0 80000000 0 floord p eq - 3ff00000 0 3ff00000 0 floord p eq - bff00000 0 bff00000 0 floord p eq - 433fffff ffffffff 433fffff ffffffff floord p eq - c33fffff ffffffff c33fffff ffffffff floord p eq - 7fefffff ffffffff 7fefffff ffffffff floord p eq - ffefffff ffffffff ffefffff ffffffff floord m eq - 0 0 0 0 floord m eq - 80000000 0 80000000 0 floord m eq - 3ff00000 0 3ff00000 0 floord m eq - bff00000 0 bff00000 0 floord m eq - 433fffff ffffffff 433fffff ffffffff floord m eq - c33fffff ffffffff c33fffff ffffffff floord m eq - 7fefffff ffffffff 7fefffff ffffffff floord m eq - ffefffff ffffffff ffefffff ffffffff /* integer - ulp */ floord n eq x 431eeeee eeeeeeef 431eeeee eeeeeeec floord n eq x c31eeeee eeeeeeef c31eeeee eeeeeef0 floord n eq x 3fffffff ffffffff 3ff00000 0 floord n eq x bfffffff ffffffff c0000000 0 floord n eq x 3fefffff ffffffff 0 0 floord n eq x bfefffff ffffffff bff00000 0 floord z eq x 431eeeee eeeeeeef 431eeeee eeeeeeec floord z eq x c31eeeee eeeeeeef c31eeeee eeeeeef0 floord z eq x 3fffffff ffffffff 3ff00000 0 floord z eq x bfffffff ffffffff c0000000 0 floord z eq x 3fefffff ffffffff 0 0 floord z eq x bfefffff ffffffff bff00000 0 floord p eq x 431eeeee eeeeeeef 431eeeee eeeeeeec floord p eq x c31eeeee eeeeeeef c31eeeee eeeeeef0 floord p eq x 3fffffff ffffffff 3ff00000 0 floord p eq x bfffffff ffffffff c0000000 0 floord p eq x 3fefffff ffffffff 0 0 floord p eq x bfefffff ffffffff bff00000 0 floord m eq x 431eeeee eeeeeeef 431eeeee eeeeeeec floord m eq x c31eeeee eeeeeeef c31eeeee eeeeeef0 floord m eq x 3fffffff ffffffff 3ff00000 0 floord m eq x bfffffff ffffffff c0000000 0 floord m eq x 3fefffff ffffffff 0 0 floord m eq x bfefffff ffffffff bff00000 0 /* integer + ulp */ floord n eq x 431eeeee eeeeeeed 431eeeee eeeeeeec floord n eq x c31eeeee eeeeeeed c31eeeee eeeeeef0 floord n eq x 3ff00000 1 3ff00000 0 floord n eq x bff00000 1 c0000000 0 floord n eq x 00100000 0 0 0 floord n eq x 80100000 0 bff00000 0 floord z eq x 431eeeee eeeeeeed 431eeeee eeeeeeec floord z eq x c31eeeee eeeeeeed c31eeeee eeeeeef0 floord z eq x 3ff00000 1 3ff00000 0 floord z eq x bff00000 1 c0000000 0 floord z eq x 00100000 0 0 0 floord z eq x 80100000 0 bff00000 0 floord p eq x 431eeeee eeeeeeed 431eeeee eeeeeeec floord p eq x c31eeeee eeeeeeed c31eeeee eeeeeef0 floord p eq x 3ff00000 1 3ff00000 0 floord p eq x bff00000 1 c0000000 0 floord p eq x 00100000 0 0 0 floord p eq x 80100000 0 bff00000 0 floord m eq x 431eeeee eeeeeeed 431eeeee eeeeeeec floord m eq x c31eeeee eeeeeeed c31eeeee eeeeeef0 floord m eq x 3ff00000 1 3ff00000 0 floord m eq x bff00000 1 c0000000 0 floord m eq x 00100000 0 0 0 floord m eq x 80100000 0 bff00000 0 /* half way case, half way case +- ulp */ floord n eq x 3fdfffff ffffffff 0 0 floord n eq x 3fe00000 0 0 0 floord n eq x 3fe00000 1 0 0 floord n eq x bfdfffff ffffffff bff00000 0 floord n eq x bfe00000 0 bff00000 0 floord n eq x bfe00000 1 bff00000 0 floord n eq x 3ff7ffff ffffffff 3ff00000 0 floord n eq x 3ff80000 0 3ff00000 0 floord n eq x 3ff80000 1 3ff00000 0 floord n eq x bff7ffff ffffffff c0000000 0 floord n eq x bff80000 0 c0000000 0 floord n eq x bff80000 1 c0000000 0 floord n eq x 4003ffff ffffffff 40000000 0 floord n eq x 40040000 0 40000000 0 floord n eq x 40040000 1 40000000 0 floord n eq x c003ffff ffffffff c0080000 0 floord n eq x c0040000 0 c0080000 0 floord n eq x c0040000 1 c0080000 0 floord n eq x 42feeeee eeeeeee7 42feeeee eeeeeee0 floord n eq x 42feeeee eeeeeee8 42feeeee eeeeeee0 floord n eq x 42feeeee eeeeeee9 42feeeee eeeeeee0 floord n eq x c2feeeee eeeeeee7 c2feeeee eeeeeef0 floord n eq x c2feeeee eeeeeee8 c2feeeee eeeeeef0 floord n eq x c2feeeee eeeeeee9 c2feeeee eeeeeef0 floord z eq x 3fdfffff ffffffff 0 0 floord z eq x 3fe00000 0 0 0 floord z eq x 3fe00000 1 0 0 floord z eq x bfdfffff ffffffff bff00000 0 floord z eq x bfe00000 0 bff00000 0 floord z eq x bfe00000 1 bff00000 0 floord z eq x 3ff7ffff ffffffff 3ff00000 0 floord z eq x 3ff80000 0 3ff00000 0 floord z eq x 3ff80000 1 3ff00000 0 floord z eq x bff7ffff ffffffff c0000000 0 floord z eq x bff80000 0 c0000000 0 floord z eq x bff80000 1 c0000000 0 floord z eq x 4003ffff ffffffff 40000000 0 floord z eq x 40040000 0 40000000 0 floord z eq x 40040000 1 40000000 0 floord z eq x c003ffff ffffffff c0080000 0 floord z eq x c0040000 0 c0080000 0 floord z eq x c0040000 1 c0080000 0 floord z eq x 42feeeee eeeeeee7 42feeeee eeeeeee0 floord z eq x 42feeeee eeeeeee8 42feeeee eeeeeee0 floord z eq x 42feeeee eeeeeee9 42feeeee eeeeeee0 floord z eq x c2feeeee eeeeeee7 c2feeeee eeeeeef0 floord z eq x c2feeeee eeeeeee8 c2feeeee eeeeeef0 floord z eq x c2feeeee eeeeeee9 c2feeeee eeeeeef0 floord p eq x 3fdfffff ffffffff 0 0 floord p eq x 3fe00000 0 0 0 floord p eq x 3fe00000 1 0 0 floord p eq x bfdfffff ffffffff bff00000 0 floord p eq x bfe00000 0 bff00000 0 floord p eq x bfe00000 1 bff00000 0 floord p eq x 3ff7ffff ffffffff 3ff00000 0 floord p eq x 3ff80000 0 3ff00000 0 floord p eq x 3ff80000 1 3ff00000 0 floord p eq x bff7ffff ffffffff c0000000 0 floord p eq x bff80000 0 c0000000 0 floord p eq x bff80000 1 c0000000 0 floord p eq x 4003ffff ffffffff 40000000 0 floord p eq x 40040000 0 40000000 0 floord p eq x 40040000 1 40000000 0 floord p eq x c003ffff ffffffff c0080000 0 floord p eq x c0040000 0 c0080000 0 floord p eq x c0040000 1 c0080000 0 floord p eq x 42feeeee eeeeeee7 42feeeee eeeeeee0 floord p eq x 42feeeee eeeeeee8 42feeeee eeeeeee0 floord p eq x 42feeeee eeeeeee9 42feeeee eeeeeee0 floord p eq x c2feeeee eeeeeee7 c2feeeee eeeeeef0 floord p eq x c2feeeee eeeeeee8 c2feeeee eeeeeef0 floord p eq x c2feeeee eeeeeee9 c2feeeee eeeeeef0 floord m eq x 3fdfffff ffffffff 0 0 floord m eq x 3fe00000 0 0 0 floord m eq x 3fe00000 1 0 0 floord m eq x bfdfffff ffffffff bff00000 0 floord m eq x bfe00000 0 bff00000 0 floord m eq x bfe00000 1 bff00000 0 floord m eq x 3ff7ffff ffffffff 3ff00000 0 floord m eq x 3ff80000 0 3ff00000 0 floord m eq x 3ff80000 1 3ff00000 0 floord m eq x bff7ffff ffffffff c0000000 0 floord m eq x bff80000 0 c0000000 0 floord m eq x bff80000 1 c0000000 0 floord m eq x 4003ffff ffffffff 40000000 0 floord m eq x 40040000 0 40000000 0 floord m eq x 40040000 1 40000000 0 floord m eq x c003ffff ffffffff c0080000 0 floord m eq x c0040000 0 c0080000 0 floord m eq x c0040000 1 c0080000 0 floord m eq x 42feeeee eeeeeee7 42feeeee eeeeeee0 floord m eq x 42feeeee eeeeeee8 42feeeee eeeeeee0 floord m eq x 42feeeee eeeeeee9 42feeeee eeeeeee0 floord m eq x c2feeeee eeeeeee7 c2feeeee eeeeeef0 floord m eq x c2feeeee eeeeeee8 c2feeeee eeeeeef0 floord m eq x c2feeeee eeeeeee9 c2feeeee eeeeeef0 /* random arguments between -100,100 */ floord n eq x c02adeef b2b5006d c02c0000 0 floord n eq x 4041ce3e fb825911 40418000 0 floord n eq x 404602e1 09de7505 40460000 0 floord n eq x c040b245 fba96889 c0410000 0 floord n eq x c02b171e e27084dd c02c0000 0 floord n eq x bfff6eff 1b093c41 c0000000 0 floord n eq x 403ceaa3 d18455f5 403c0000 0 floord n eq x 40456091 4a51b239 40450000 0 floord n eq x c020ce90 1079de4d c0220000 0 floord n eq x c047f35b 3103b871 c0480000 0 /* inf,nan, and subnormal number */ floord n eq x 0 1 0 0 floord n eq x 80000000 1 bff00000 0 floord n eq - 7ff00000 0 7ff00000 0 floord n eq - fff00000 0 fff00000 0 floord n uo v 7ff00000 1 7ff00000 0 floord n uo - 7ff80000 0 7ff00000 0 floord z eq x 0 1 0 0 floord z eq x 80000000 1 bff00000 0 floord z eq - 7ff00000 0 7ff00000 0 floord z eq - fff00000 0 fff00000 0 floord z uo v 7ff00000 1 7ff00000 0 floord z uo - 7ff80000 0 7ff00000 0 floord p eq x 0 1 0 0 floord p eq x 80000000 1 bff00000 0 floord p eq - 7ff00000 0 7ff00000 0 floord p eq - fff00000 0 fff00000 0 floord p uo v 7ff00000 1 7ff00000 0 floord p uo - 7ff80000 0 7ff00000 0 floord m eq x 0 1 0 0 floord m eq x 80000000 1 bff00000 0 floord m eq - 7ff00000 0 7ff00000 0 floord m eq - fff00000 0 fff00000 0 floord m uo v 7ff00000 1 7ff00000 0 floord m uo - 7ff80000 0 7ff00000 0 floord m eq - 40b20000 00000000 40b20000 00000000 floord m eq - 41600000 00000000 41600000 00000000 floord m eq - 432fffff fffffffe 432fffff fffffffe floord m eq - 43300000 00000000 43300000 00000000 floord m eq - 43300000 00000001 43300000 00000001 floord m eq - 7f5fffff ffffffee 7f5fffff ffffffee floord m eq - 7f5fffff fffffff7 7f5fffff fffffff7 floord m eq - 7f5fffff ffffffff 7f5fffff ffffffff floord m eq - 7f600000 00000000 7f600000 00000000 floord m eq - c0b20000 00000000 c0b20000 00000000 floord m eq - c1600000 00000000 c1600000 00000000 floord m eq - c32fffff fffffffe c32fffff fffffffe floord m eq - c3300000 00000000 c3300000 00000000 floord m eq - c3300000 00000001 c3300000 00000001 floord m eq - ff5fffff ffffffee ff5fffff ffffffee floord m eq - ff5fffff fffffff7 ff5fffff fffffff7 floord m eq - ff5fffff ffffffff ff5fffff ffffffff floord m eq - ff600000 00000000 ff600000 00000000 floord m eq x 000fffff ffffffff 00000000 00000000 floord m eq x 3fee0000 00000000 00000000 00000000 floord m eq x 40120000 00000000 40100000 00000000 floord m eq x 401fffff ffffffff 401c0000 00000000 floord m eq x 40200000 00000001 40200000 00000000 floord m eq x 40800000 00000008 40800000 00000000 floord m eq x 41100000 00000001 41100000 00000000 floord m eq x 41600000 00000001 41600000 00000000 floord m eq x 432fffff fffffffd 432fffff fffffffc floord m eq x 432fffff ffffffff 432fffff fffffffe floord m eq x 800fffff ffffffff bff00000 00000000 floord m eq x c0120000 00000000 c0140000 00000000 floord m eq x c01fffff ffffffff c0200000 00000000 floord m eq x c0200000 00000001 c0220000 00000000 floord m eq x c07fffff fffffff8 c0800000 00000000 floord m eq x c10fffff ffffffff c1100000 00000000 floord m eq x c15fffff fffffffd c1600000 00000000 floord m eq x c15fffff fffffffe c1600000 00000000 floord m eq x c15fffff ffffffff c1600000 00000000 floord m eq x c32fffff fffffffd c32fffff fffffffe floord m eq x c32fffff ffffffff c3300000 00000000 floord m uo - 7ff80000 00000000 7ff00000 00000000 floord m uo - 7fffe000 00000000 7fffe000 00000000 floord m uo - ffffe000 00000000 ffffe000 00000000 floord m uo v 7ff00000 00000001 7ff00000 00000000 floord m uo v 7ff02000 00000000 7fffe000 00000000 floord m uo v fff02000 00000000 ffffe000 00000000 floord n eq - 40b20000 00000000 40b20000 00000000 floord n eq - 41600000 00000000 41600000 00000000 floord n eq - 432fffff fffffffe 432fffff fffffffe floord n eq - 43300000 00000000 43300000 00000000 floord n eq - 43300000 00000001 43300000 00000001 floord n eq - 7f5fffff ffffffee 7f5fffff ffffffee floord n eq - 7f5fffff fffffff7 7f5fffff fffffff7 floord n eq - 7f5fffff ffffffff 7f5fffff ffffffff floord n eq - 7f600000 00000000 7f600000 00000000 floord n eq - c0b20000 00000000 c0b20000 00000000 floord n eq - c1600000 00000000 c1600000 00000000 floord n eq - c32fffff fffffffe c32fffff fffffffe floord n eq - c3300000 00000000 c3300000 00000000 floord n eq - c3300000 00000001 c3300000 00000001 floord n eq - ff5fffff ffffffee ff5fffff ffffffee floord n eq - ff5fffff fffffff7 ff5fffff fffffff7 floord n eq - ff5fffff ffffffff ff5fffff ffffffff floord n eq - ff600000 00000000 ff600000 00000000 floord n eq x 000fffff ffffffff 00000000 00000000 floord n eq x 3fee0000 00000000 00000000 00000000 floord n eq x 40120000 00000000 40100000 00000000 floord n eq x 40120000 00000001 40100000 00000000 floord n eq x 40200000 00000001 40200000 00000000 floord n eq x 40800000 00000008 40800000 00000000 floord n eq x 41100000 00000001 41100000 00000000 floord n eq x 41600000 00000001 41600000 00000000 floord n eq x 432fffff fffffffd 432fffff fffffffc floord n eq x 432fffff ffffffff 432fffff fffffffe floord n eq x c0120000 00000001 c0140000 00000000 floord n eq x c01fffff ffffffff c0200000 00000000 floord n eq x c07fffff fffffff8 c0800000 00000000 floord n eq x c10fffff ffffffff c1100000 00000000 floord n eq x c15fffff fffffffd c1600000 00000000 floord n eq x c15fffff fffffffe c1600000 00000000 floord n eq x c15fffff ffffffff c1600000 00000000 floord n eq x c32fffff fffffffd c32fffff fffffffe floord n eq x c32fffff ffffffff c3300000 00000000 floord n uo - 7ff80000 00000000 7ff00000 00000000 floord n uo - 7fffe000 00000000 7fffe000 00000000 floord n uo - ffffe000 00000000 ffffe000 00000000 floord n uo v 7ff00000 00000001 7ff00000 00000000 floord n uo v 7ff02000 00000000 7fffe000 00000000 floord n uo v fff02000 00000000 ffffe000 00000000 floord p eq - 40b20000 00000000 40b20000 00000000 floord p eq - 41600000 00000000 41600000 00000000 floord p eq - 432fffff fffffffe 432fffff fffffffe floord p eq - 43300000 00000000 43300000 00000000 floord p eq - 43300000 00000001 43300000 00000001 floord p eq - 7f5fffff ffffffee 7f5fffff ffffffee floord p eq - 7f5fffff fffffff7 7f5fffff fffffff7 floord p eq - 7f5fffff ffffffff 7f5fffff ffffffff floord p eq - 7f600000 00000000 7f600000 00000000 floord p eq - c0b20000 00000000 c0b20000 00000000 floord p eq - c1600000 00000000 c1600000 00000000 floord p eq - c32fffff fffffffe c32fffff fffffffe floord p eq - c3300000 00000000 c3300000 00000000 floord p eq - c3300000 00000001 c3300000 00000001 floord p eq - ff5fffff ffffffee ff5fffff ffffffee floord p eq - ff5fffff fffffff7 ff5fffff fffffff7 floord p eq - ff5fffff ffffffff ff5fffff ffffffff floord p eq - ff600000 00000000 ff600000 00000000 floord p eq x 3fee0000 00000000 00000000 00000000 floord p eq x 41600000 00000001 41600000 00000000 floord p eq x 432fffff fffffffd 432fffff fffffffc floord p eq x 432fffff ffffffff 432fffff fffffffe floord p eq x c15fffff fffffffd c1600000 00000000 floord p eq x c15fffff fffffffe c1600000 00000000 floord p eq x c15fffff ffffffff c1600000 00000000 floord p eq x c32fffff fffffffd c32fffff fffffffe floord p eq x c32fffff ffffffff c3300000 00000000 floord p uo - 7ff80000 00000000 7ff00000 00000000 floord p uo - 7fffe000 00000000 7fffe000 00000000 floord p uo - ffffe000 00000000 ffffe000 00000000 floord p uo v 7ff00000 00000001 7ff00000 00000000 floord p uo v 7ff02000 00000000 7fffe000 00000000 floord p uo v fff02000 00000000 ffffe000 00000000 floord z eq - 40b20000 00000000 40b20000 00000000 floord z eq - 41600000 00000000 41600000 00000000 floord z eq - 432fffff fffffffe 432fffff fffffffe floord z eq - 43300000 00000000 43300000 00000000 floord z eq - 43300000 00000001 43300000 00000001 floord z eq - 7f5fffff ffffffee 7f5fffff ffffffee floord z eq - 7f5fffff fffffff7 7f5fffff fffffff7 floord z eq - 7f5fffff ffffffff 7f5fffff ffffffff floord z eq - 7f600000 00000000 7f600000 00000000 floord z eq - c0b20000 00000000 c0b20000 00000000 floord z eq - c1600000 00000000 c1600000 00000000 floord z eq - c32fffff fffffffe c32fffff fffffffe floord z eq - c3300000 00000000 c3300000 00000000 floord z eq - c3300000 00000001 c3300000 00000001 floord z eq - ff5fffff ffffffee ff5fffff ffffffee floord z eq - ff5fffff fffffff7 ff5fffff fffffff7 floord z eq - ff5fffff ffffffff ff5fffff ffffffff floord z eq - ff600000 00000000 ff600000 00000000 floord z eq x 000fffff ffffffff 00000000 00000000 floord z eq x 3fee0000 00000000 00000000 00000000 floord z eq x 40120000 00000000 40100000 00000000 floord z eq x 401fffff ffffffff 401c0000 00000000 floord z eq x 40200000 00000001 40200000 00000000 floord z eq x 40800000 00000008 40800000 00000000 floord z eq x 41100000 00000001 41100000 00000000 floord z eq x 41600000 00000001 41600000 00000000 floord z eq x 432fffff fffffffd 432fffff fffffffc floord z eq x 432fffff ffffffff 432fffff fffffffe floord z eq x c15fffff fffffffd c1600000 00000000 floord z eq x c15fffff fffffffe c1600000 00000000 floord z eq x c15fffff ffffffff c1600000 00000000 floord z eq x c32fffff fffffffd c32fffff fffffffe floord z eq x c32fffff ffffffff c3300000 00000000 floord z uo - 7ff80000 00000000 7ff00000 00000000 floord z uo - 7fffe000 00000000 7fffe000 00000000 floord z uo - ffffe000 00000000 ffffe000 00000000 floord z uo v 7ff00000 00000001 7ff00000 00000000 floord z uo v 7ff02000 00000000 7fffe000 00000000 floord z uo v fff02000 00000000 ffffe000 00000000