diff options
| author | Zeev Suraski <zeev@php.net> | 2000-11-22 20:20:02 +0000 |
|---|---|---|
| committer | Zeev Suraski <zeev@php.net> | 2000-11-22 20:20:02 +0000 |
| commit | c476bce2f1493f46b7bdd1932255a43ae2c7fe44 (patch) | |
| tree | 551268ab8c74fe5042ca6a7dfe85458786bf1431 /ext/bcmath/libbcmath/src/int2num.c | |
| parent | be6ab204158c836b10e1f586059462807288e2e3 (diff) | |
| download | php-git-c476bce2f1493f46b7bdd1932255a43ae2c7fe44.tar.gz | |
At long last, import the bcmath library, by Phil Nelson
Diffstat (limited to 'ext/bcmath/libbcmath/src/int2num.c')
| -rw-r--r-- | ext/bcmath/libbcmath/src/int2num.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/ext/bcmath/libbcmath/src/int2num.c b/ext/bcmath/libbcmath/src/int2num.c new file mode 100644 index 0000000000..34419c138f --- /dev/null +++ b/ext/bcmath/libbcmath/src/int2num.c @@ -0,0 +1,84 @@ +/* int2num.c: bcmath library file. */ +/* + Copyright (C) 1991, 1992, 1993, 1994, 1997 Free Software Foundation, Inc. + Copyright (C) 2000 Philip A. Nelson + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. (COPYING.LIB) + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to: + + The Free Software Foundation, Inc. + 59 Temple Place, Suite 330 + Boston, MA 02111-1307 USA. + + You may contact the author by: + e-mail: philnelson@acm.org + us-mail: Philip A. Nelson + Computer Science Department, 9062 + Western Washington University + Bellingham, WA 98226-9062 + +*************************************************************************/ + +#include <config.h> +#include <stdio.h> +#include <assert.h> +#include <stdlib.h> +#include <ctype.h> +#include <stdarg.h> +#include "bcmath.h" +#include "private.h" + + +/* Convert an integer VAL to a bc number NUM. */ + +void +bc_int2num (num, val) + bc_num *num; + int val; +{ + char buffer[30]; + char *bptr, *vptr; + int ix = 1; + char neg = 0; + + /* Sign. */ + if (val < 0) + { + neg = 1; + val = -val; + } + + /* Get things going. */ + bptr = buffer; + *bptr++ = val % BASE; + val = val / BASE; + + /* Extract remaining digits. */ + while (val != 0) + { + *bptr++ = val % BASE; + val = val / BASE; + ix++; /* Count the digits. */ + } + + /* Make the number. */ + bc_free_num (num); + *num = bc_new_num (ix, 0); + if (neg) (*num)->n_sign = MINUS; + + /* Assign the digits. */ + vptr = (*num)->n_value; + while (ix-- > 0) + *vptr++ = *--bptr; +} + |
