math.c

来自「一个极小型的操作系统」· C语言 代码 · 共 48 行

C
48
字号
/*GazOS Operating SystemCopyright (C) 1999  Gareth Owen <gaz@athene.co.uk>This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/#include "math.h"unsigned long floor (double __x){  register double __value;  __volatile unsigned short int __cw, __cwtmp;  __asm __volatile ("fnstcw %0" : "=m" (__cw));  __cwtmp = (__cw & 0xf3ff) | 0x0400; /* rounding down */  __asm __volatile ("fldcw %0" : : "m" (__cwtmp));  __asm __volatile ("frndint" : "=t" (__value) : "0" (__x));  __asm __volatile ("fldcw %0" : : "m" (__cw));  return __value;}unsigned long ceil (double __x){  register double __value;  __volatile unsigned short int __cw, __cwtmp;  __asm __volatile ("fnstcw %0" : "=m" (__cw));  __cwtmp = (__cw & 0xf3ff) | 0x0800; /* rounding up */  __asm __volatile ("fldcw %0" : : "m" (__cwtmp));  __asm __volatile ("frndint" : "=t" (__value) : "0" (__x));  __asm __volatile ("fldcw %0" : : "m" (__cw));  return __value;}

⌨️ 快捷键说明

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