1 /* Math functions for i387. 2 Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 Contributed by John C. Bowman <bowman@ipp-garching.mpg.de>, 1995. 5 6 The GNU C Library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Lesser General Public 8 License as published by the Free Software Foundation; either 9 version 2.1 of the License, or (at your option) any later version. 10 11 The GNU C Library is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public 17 License along with the GNU C Library; if not, write to the Free 18 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 Boston, MA 02110-1301, USA. 20 */ 21 22 #include <precomp.h> 23 24 double _logb (double __x) 25 { 26 register double __val; 27 #ifdef __GNUC__ 28 register double __junk; 29 __asm __volatile__ 30 ("fxtract\n\t" 31 : "=t" (__junk), "=u" (__val) : "0" (__x)); 32 #else 33 #pragma message ("REVIEW ME") 34 __asm fld [__x]; 35 __asm fxtract; 36 __asm fstp st(0); 37 __asm fstp [__val]; 38 #endif /*__GNUC__*/ 39 return __val; 40 } 41