Annotation of embedaddon/php/ext/bcmath/bcmath.c, revision 1.1
1.1 ! misho 1: /*
! 2: +----------------------------------------------------------------------+
! 3: | PHP Version 5 |
! 4: +----------------------------------------------------------------------+
! 5: | Copyright (c) 1997-2012 The PHP Group |
! 6: +----------------------------------------------------------------------+
! 7: | This source file is subject to version 3.01 of the PHP license, |
! 8: | that is bundled with this package in the file LICENSE, and is |
! 9: | available through the world-wide-web at the following url: |
! 10: | http://www.php.net/license/3_01.txt |
! 11: | If you did not receive a copy of the PHP license and are unable to |
! 12: | obtain it through the world-wide-web, please send a note to |
! 13: | license@php.net so we can mail you a copy immediately. |
! 14: +----------------------------------------------------------------------+
! 15: | Author: Andi Gutmans <andi@zend.com> |
! 16: +----------------------------------------------------------------------+
! 17: */
! 18:
! 19: /* $Id: bcmath.c 321634 2012-01-01 13:15:04Z felipe $ */
! 20:
! 21: #ifdef HAVE_CONFIG_H
! 22: #include "config.h"
! 23: #endif
! 24:
! 25: #include "php.h"
! 26:
! 27: #if HAVE_BCMATH
! 28:
! 29: #include "php_ini.h"
! 30: #include "ext/standard/info.h"
! 31: #include "php_bcmath.h"
! 32: #include "libbcmath/src/bcmath.h"
! 33:
! 34: ZEND_DECLARE_MODULE_GLOBALS(bcmath)
! 35: static PHP_GINIT_FUNCTION(bcmath);
! 36: static PHP_GSHUTDOWN_FUNCTION(bcmath);
! 37:
! 38: /* {{{ arginfo */
! 39: ZEND_BEGIN_ARG_INFO_EX(arginfo_bcadd, 0, 0, 2)
! 40: ZEND_ARG_INFO(0, left_operand)
! 41: ZEND_ARG_INFO(0, right_operand)
! 42: ZEND_ARG_INFO(0, scale)
! 43: ZEND_END_ARG_INFO()
! 44:
! 45: ZEND_BEGIN_ARG_INFO_EX(arginfo_bcsub, 0, 0, 2)
! 46: ZEND_ARG_INFO(0, left_operand)
! 47: ZEND_ARG_INFO(0, right_operand)
! 48: ZEND_ARG_INFO(0, scale)
! 49: ZEND_END_ARG_INFO()
! 50:
! 51: ZEND_BEGIN_ARG_INFO_EX(arginfo_bcmul, 0, 0, 2)
! 52: ZEND_ARG_INFO(0, left_operand)
! 53: ZEND_ARG_INFO(0, right_operand)
! 54: ZEND_ARG_INFO(0, scale)
! 55: ZEND_END_ARG_INFO()
! 56:
! 57: ZEND_BEGIN_ARG_INFO_EX(arginfo_bcdiv, 0, 0, 2)
! 58: ZEND_ARG_INFO(0, left_operand)
! 59: ZEND_ARG_INFO(0, right_operand)
! 60: ZEND_ARG_INFO(0, scale)
! 61: ZEND_END_ARG_INFO()
! 62:
! 63: ZEND_BEGIN_ARG_INFO(arginfo_bcmod, 0)
! 64: ZEND_ARG_INFO(0, left_operand)
! 65: ZEND_ARG_INFO(0, right_operand)
! 66: ZEND_END_ARG_INFO()
! 67:
! 68: ZEND_BEGIN_ARG_INFO_EX(arginfo_bcpowmod, 0, 0, 3)
! 69: ZEND_ARG_INFO(0, x)
! 70: ZEND_ARG_INFO(0, y)
! 71: ZEND_ARG_INFO(0, mod)
! 72: ZEND_ARG_INFO(0, scale)
! 73: ZEND_END_ARG_INFO()
! 74:
! 75: ZEND_BEGIN_ARG_INFO_EX(arginfo_bcpow, 0, 0, 2)
! 76: ZEND_ARG_INFO(0, x)
! 77: ZEND_ARG_INFO(0, y)
! 78: ZEND_ARG_INFO(0, scale)
! 79: ZEND_END_ARG_INFO()
! 80:
! 81: ZEND_BEGIN_ARG_INFO_EX(arginfo_bcsqrt, 0, 0, 1)
! 82: ZEND_ARG_INFO(0, operand)
! 83: ZEND_ARG_INFO(0, scale)
! 84: ZEND_END_ARG_INFO()
! 85:
! 86: ZEND_BEGIN_ARG_INFO_EX(arginfo_bccomp, 0, 0, 2)
! 87: ZEND_ARG_INFO(0, left_operand)
! 88: ZEND_ARG_INFO(0, right_operand)
! 89: ZEND_ARG_INFO(0, scale)
! 90: ZEND_END_ARG_INFO()
! 91:
! 92: ZEND_BEGIN_ARG_INFO(arginfo_bcscale, 0)
! 93: ZEND_ARG_INFO(0, scale)
! 94: ZEND_END_ARG_INFO()
! 95:
! 96: /* }}} */
! 97:
! 98: const zend_function_entry bcmath_functions[] = {
! 99: PHP_FE(bcadd, arginfo_bcadd)
! 100: PHP_FE(bcsub, arginfo_bcsub)
! 101: PHP_FE(bcmul, arginfo_bcmul)
! 102: PHP_FE(bcdiv, arginfo_bcdiv)
! 103: PHP_FE(bcmod, arginfo_bcmod)
! 104: PHP_FE(bcpow, arginfo_bcpow)
! 105: PHP_FE(bcsqrt, arginfo_bcsqrt)
! 106: PHP_FE(bcscale, arginfo_bcscale)
! 107: PHP_FE(bccomp, arginfo_bccomp)
! 108: PHP_FE(bcpowmod, arginfo_bcpowmod)
! 109: PHP_FE_END
! 110: };
! 111:
! 112: zend_module_entry bcmath_module_entry = {
! 113: STANDARD_MODULE_HEADER,
! 114: "bcmath",
! 115: bcmath_functions,
! 116: PHP_MINIT(bcmath),
! 117: PHP_MSHUTDOWN(bcmath),
! 118: NULL,
! 119: NULL,
! 120: PHP_MINFO(bcmath),
! 121: NO_VERSION_YET,
! 122: PHP_MODULE_GLOBALS(bcmath),
! 123: PHP_GINIT(bcmath),
! 124: PHP_GSHUTDOWN(bcmath),
! 125: NULL,
! 126: STANDARD_MODULE_PROPERTIES_EX
! 127: };
! 128:
! 129: #ifdef COMPILE_DL_BCMATH
! 130: ZEND_GET_MODULE(bcmath)
! 131: #endif
! 132:
! 133: /* {{{ PHP_INI */
! 134: PHP_INI_BEGIN()
! 135: STD_PHP_INI_ENTRY("bcmath.scale", "0", PHP_INI_ALL, OnUpdateLongGEZero, bc_precision, zend_bcmath_globals, bcmath_globals)
! 136: PHP_INI_END()
! 137: /* }}} */
! 138:
! 139: /* {{{ PHP_GINIT_FUNCTION
! 140: */
! 141: static PHP_GINIT_FUNCTION(bcmath)
! 142: {
! 143: bcmath_globals->bc_precision = 0;
! 144: bc_init_numbers(TSRMLS_C);
! 145: }
! 146: /* }}} */
! 147:
! 148: /* {{{ PHP_GSHUTDOWN_FUNCTION
! 149: */
! 150: static PHP_GSHUTDOWN_FUNCTION(bcmath)
! 151: {
! 152: _bc_free_num_ex(&bcmath_globals->_zero_, 1);
! 153: _bc_free_num_ex(&bcmath_globals->_one_, 1);
! 154: _bc_free_num_ex(&bcmath_globals->_two_, 1);
! 155: }
! 156: /* }}} */
! 157:
! 158: /* {{{ PHP_MINIT_FUNCTION
! 159: */
! 160: PHP_MINIT_FUNCTION(bcmath)
! 161: {
! 162: REGISTER_INI_ENTRIES();
! 163:
! 164: return SUCCESS;
! 165: }
! 166: /* }}} */
! 167:
! 168: /* {{{ PHP_MSHUTDOWN_FUNCTION
! 169: */
! 170: PHP_MSHUTDOWN_FUNCTION(bcmath)
! 171: {
! 172: UNREGISTER_INI_ENTRIES();
! 173:
! 174: return SUCCESS;
! 175: }
! 176: /* }}} */
! 177:
! 178: /* {{{ PHP_MINFO_FUNCTION
! 179: */
! 180: PHP_MINFO_FUNCTION(bcmath)
! 181: {
! 182: php_info_print_table_start();
! 183: php_info_print_table_row(2, "BCMath support", "enabled");
! 184: php_info_print_table_end();
! 185: DISPLAY_INI_ENTRIES();
! 186: }
! 187: /* }}} */
! 188:
! 189: /* {{{ php_str2num
! 190: Convert to bc_num detecting scale */
! 191: static void php_str2num(bc_num *num, char *str TSRMLS_DC)
! 192: {
! 193: char *p;
! 194:
! 195: if (!(p = strchr(str, '.'))) {
! 196: bc_str2num(num, str, 0 TSRMLS_CC);
! 197: return;
! 198: }
! 199:
! 200: bc_str2num(num, str, strlen(p+1) TSRMLS_CC);
! 201: }
! 202: /* }}} */
! 203:
! 204: /* {{{ proto string bcadd(string left_operand, string right_operand [, int scale])
! 205: Returns the sum of two arbitrary precision numbers */
! 206: PHP_FUNCTION(bcadd)
! 207: {
! 208: char *left, *right;
! 209: long scale_param = 0;
! 210: bc_num first, second, result;
! 211: int left_len, right_len;
! 212: int scale = BCG(bc_precision), argc = ZEND_NUM_ARGS();
! 213:
! 214: if (zend_parse_parameters(argc TSRMLS_CC, "ss|l", &left, &left_len, &right, &right_len, &scale_param) == FAILURE) {
! 215: return;
! 216: }
! 217:
! 218: if (argc == 3) {
! 219: scale = (int) ((int)scale_param < 0) ? 0 : scale_param;
! 220: }
! 221:
! 222: bc_init_num(&first TSRMLS_CC);
! 223: bc_init_num(&second TSRMLS_CC);
! 224: bc_init_num(&result TSRMLS_CC);
! 225: php_str2num(&first, left TSRMLS_CC);
! 226: php_str2num(&second, right TSRMLS_CC);
! 227: bc_add (first, second, &result, scale);
! 228:
! 229: if (result->n_scale > scale) {
! 230: result->n_scale = scale;
! 231: }
! 232:
! 233: Z_STRVAL_P(return_value) = bc_num2str(result);
! 234: Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
! 235: Z_TYPE_P(return_value) = IS_STRING;
! 236: bc_free_num(&first);
! 237: bc_free_num(&second);
! 238: bc_free_num(&result);
! 239: return;
! 240: }
! 241: /* }}} */
! 242:
! 243: /* {{{ proto string bcsub(string left_operand, string right_operand [, int scale])
! 244: Returns the difference between two arbitrary precision numbers */
! 245: PHP_FUNCTION(bcsub)
! 246: {
! 247: char *left, *right;
! 248: int left_len, right_len;
! 249: long scale_param = 0;
! 250: bc_num first, second, result;
! 251: int scale = BCG(bc_precision), argc = ZEND_NUM_ARGS();
! 252:
! 253: if (zend_parse_parameters(argc TSRMLS_CC, "ss|l", &left, &left_len, &right, &right_len, &scale_param) == FAILURE) {
! 254: return;
! 255: }
! 256:
! 257: if (argc == 3) {
! 258: scale = (int) ((int)scale_param < 0) ? 0 : scale_param;
! 259: }
! 260:
! 261: bc_init_num(&first TSRMLS_CC);
! 262: bc_init_num(&second TSRMLS_CC);
! 263: bc_init_num(&result TSRMLS_CC);
! 264: php_str2num(&first, left TSRMLS_CC);
! 265: php_str2num(&second, right TSRMLS_CC);
! 266: bc_sub (first, second, &result, scale);
! 267:
! 268: if (result->n_scale > scale) {
! 269: result->n_scale = scale;
! 270: }
! 271:
! 272: Z_STRVAL_P(return_value) = bc_num2str(result);
! 273: Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
! 274: Z_TYPE_P(return_value) = IS_STRING;
! 275: bc_free_num(&first);
! 276: bc_free_num(&second);
! 277: bc_free_num(&result);
! 278: return;
! 279: }
! 280: /* }}} */
! 281:
! 282: /* {{{ proto string bcmul(string left_operand, string right_operand [, int scale])
! 283: Returns the multiplication of two arbitrary precision numbers */
! 284: PHP_FUNCTION(bcmul)
! 285: {
! 286: char *left, *right;
! 287: int left_len, right_len;
! 288: long scale_param = 0;
! 289: bc_num first, second, result;
! 290: int scale = BCG(bc_precision), argc = ZEND_NUM_ARGS();
! 291:
! 292: if (zend_parse_parameters(argc TSRMLS_CC, "ss|l", &left, &left_len, &right, &right_len, &scale_param) == FAILURE) {
! 293: return;
! 294: }
! 295:
! 296: if (argc == 3) {
! 297: scale = (int) ((int)scale_param < 0) ? 0 : scale_param;
! 298: }
! 299:
! 300: bc_init_num(&first TSRMLS_CC);
! 301: bc_init_num(&second TSRMLS_CC);
! 302: bc_init_num(&result TSRMLS_CC);
! 303: php_str2num(&first, left TSRMLS_CC);
! 304: php_str2num(&second, right TSRMLS_CC);
! 305: bc_multiply (first, second, &result, scale TSRMLS_CC);
! 306:
! 307: if (result->n_scale > scale) {
! 308: result->n_scale = scale;
! 309: }
! 310:
! 311: Z_STRVAL_P(return_value) = bc_num2str(result);
! 312: Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
! 313: Z_TYPE_P(return_value) = IS_STRING;
! 314: bc_free_num(&first);
! 315: bc_free_num(&second);
! 316: bc_free_num(&result);
! 317: return;
! 318: }
! 319: /* }}} */
! 320:
! 321: /* {{{ proto string bcdiv(string left_operand, string right_operand [, int scale])
! 322: Returns the quotient of two arbitrary precision numbers (division) */
! 323: PHP_FUNCTION(bcdiv)
! 324: {
! 325: char *left, *right;
! 326: int left_len, right_len;
! 327: long scale_param = 0;
! 328: bc_num first, second, result;
! 329: int scale = BCG(bc_precision), argc = ZEND_NUM_ARGS();
! 330:
! 331: if (zend_parse_parameters(argc TSRMLS_CC, "ss|l", &left, &left_len, &right, &right_len, &scale_param) == FAILURE) {
! 332: return;
! 333: }
! 334:
! 335: if (argc == 3) {
! 336: scale = (int) ((int)scale_param < 0) ? 0 : scale_param;
! 337: }
! 338:
! 339: bc_init_num(&first TSRMLS_CC);
! 340: bc_init_num(&second TSRMLS_CC);
! 341: bc_init_num(&result TSRMLS_CC);
! 342: php_str2num(&first, left TSRMLS_CC);
! 343: php_str2num(&second, right TSRMLS_CC);
! 344:
! 345: switch (bc_divide(first, second, &result, scale TSRMLS_CC)) {
! 346: case 0: /* OK */
! 347: if (result->n_scale > scale) {
! 348: result->n_scale = scale;
! 349: }
! 350: Z_STRVAL_P(return_value) = bc_num2str(result);
! 351: Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
! 352: Z_TYPE_P(return_value) = IS_STRING;
! 353: break;
! 354: case -1: /* division by zero */
! 355: php_error_docref(NULL TSRMLS_CC, E_WARNING, "Division by zero");
! 356: break;
! 357: }
! 358:
! 359: bc_free_num(&first);
! 360: bc_free_num(&second);
! 361: bc_free_num(&result);
! 362: return;
! 363: }
! 364: /* }}} */
! 365:
! 366: /* {{{ proto string bcmod(string left_operand, string right_operand)
! 367: Returns the modulus of the two arbitrary precision operands */
! 368: PHP_FUNCTION(bcmod)
! 369: {
! 370: char *left, *right;
! 371: int left_len, right_len;
! 372: bc_num first, second, result;
! 373:
! 374: if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &left, &left_len, &right, &right_len) == FAILURE) {
! 375: return;
! 376: }
! 377:
! 378: bc_init_num(&first TSRMLS_CC);
! 379: bc_init_num(&second TSRMLS_CC);
! 380: bc_init_num(&result TSRMLS_CC);
! 381: bc_str2num(&first, left, 0 TSRMLS_CC);
! 382: bc_str2num(&second, right, 0 TSRMLS_CC);
! 383:
! 384: switch (bc_modulo(first, second, &result, 0 TSRMLS_CC)) {
! 385: case 0:
! 386: Z_STRVAL_P(return_value) = bc_num2str(result);
! 387: Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
! 388: Z_TYPE_P(return_value) = IS_STRING;
! 389: break;
! 390: case -1:
! 391: php_error_docref(NULL TSRMLS_CC, E_WARNING, "Division by zero");
! 392: break;
! 393: }
! 394:
! 395: bc_free_num(&first);
! 396: bc_free_num(&second);
! 397: bc_free_num(&result);
! 398: return;
! 399: }
! 400: /* }}} */
! 401:
! 402: /* {{{ proto string bcpowmod(string x, string y, string mod [, int scale])
! 403: Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous */
! 404: PHP_FUNCTION(bcpowmod)
! 405: {
! 406: char *left, *right, *modulous;
! 407: int left_len, right_len, modulous_len;
! 408: bc_num first, second, mod, result;
! 409: long scale = BCG(bc_precision);
! 410: int scale_int;
! 411:
! 412: if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|l", &left, &left_len, &right, &right_len, &modulous, &modulous_len, &scale) == FAILURE) {
! 413: return;
! 414: }
! 415:
! 416: bc_init_num(&first TSRMLS_CC);
! 417: bc_init_num(&second TSRMLS_CC);
! 418: bc_init_num(&mod TSRMLS_CC);
! 419: bc_init_num(&result TSRMLS_CC);
! 420: php_str2num(&first, left TSRMLS_CC);
! 421: php_str2num(&second, right TSRMLS_CC);
! 422: php_str2num(&mod, modulous TSRMLS_CC);
! 423:
! 424: scale_int = (int) ((int)scale < 0) ? 0 : scale;
! 425:
! 426: if (bc_raisemod(first, second, mod, &result, scale_int TSRMLS_CC) != -1) {
! 427: if (result->n_scale > scale) {
! 428: result->n_scale = scale;
! 429: }
! 430: Z_STRVAL_P(return_value) = bc_num2str(result);
! 431: Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
! 432: Z_TYPE_P(return_value) = IS_STRING;
! 433: } else {
! 434: RETVAL_FALSE;
! 435: }
! 436:
! 437: bc_free_num(&first);
! 438: bc_free_num(&second);
! 439: bc_free_num(&mod);
! 440: bc_free_num(&result);
! 441: return;
! 442: }
! 443: /* }}} */
! 444:
! 445: /* {{{ proto string bcpow(string x, string y [, int scale])
! 446: Returns the value of an arbitrary precision number raised to the power of another */
! 447: PHP_FUNCTION(bcpow)
! 448: {
! 449: char *left, *right;
! 450: int left_len, right_len;
! 451: long scale_param = 0;
! 452: bc_num first, second, result;
! 453: int scale = BCG(bc_precision), argc = ZEND_NUM_ARGS();
! 454:
! 455: if (zend_parse_parameters(argc TSRMLS_CC, "ss|l", &left, &left_len, &right, &right_len, &scale_param) == FAILURE) {
! 456: return;
! 457: }
! 458:
! 459: if (argc == 3) {
! 460: scale = (int) ((int)scale_param < 0) ? 0 : scale_param;
! 461: }
! 462:
! 463: bc_init_num(&first TSRMLS_CC);
! 464: bc_init_num(&second TSRMLS_CC);
! 465: bc_init_num(&result TSRMLS_CC);
! 466: php_str2num(&first, left TSRMLS_CC);
! 467: php_str2num(&second, right TSRMLS_CC);
! 468: bc_raise (first, second, &result, scale TSRMLS_CC);
! 469:
! 470: if (result->n_scale > scale) {
! 471: result->n_scale = scale;
! 472: }
! 473:
! 474: Z_STRVAL_P(return_value) = bc_num2str(result);
! 475: Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
! 476: Z_TYPE_P(return_value) = IS_STRING;
! 477: bc_free_num(&first);
! 478: bc_free_num(&second);
! 479: bc_free_num(&result);
! 480: return;
! 481: }
! 482: /* }}} */
! 483:
! 484: /* {{{ proto string bcsqrt(string operand [, int scale])
! 485: Returns the square root of an arbitray precision number */
! 486: PHP_FUNCTION(bcsqrt)
! 487: {
! 488: char *left;
! 489: int left_len;
! 490: long scale_param = 0;
! 491: bc_num result;
! 492: int scale = BCG(bc_precision), argc = ZEND_NUM_ARGS();
! 493:
! 494: if (zend_parse_parameters(argc TSRMLS_CC, "s|l", &left, &left_len, &scale_param) == FAILURE) {
! 495: return;
! 496: }
! 497:
! 498: if (argc == 2) {
! 499: scale = (int) ((int)scale_param < 0) ? 0 : scale_param;
! 500: }
! 501:
! 502: bc_init_num(&result TSRMLS_CC);
! 503: php_str2num(&result, left TSRMLS_CC);
! 504:
! 505: if (bc_sqrt (&result, scale TSRMLS_CC) != 0) {
! 506: if (result->n_scale > scale) {
! 507: result->n_scale = scale;
! 508: }
! 509: Z_STRVAL_P(return_value) = bc_num2str(result);
! 510: Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
! 511: Z_TYPE_P(return_value) = IS_STRING;
! 512: } else {
! 513: php_error_docref(NULL TSRMLS_CC, E_WARNING, "Square root of negative number");
! 514: }
! 515:
! 516: bc_free_num(&result);
! 517: return;
! 518: }
! 519: /* }}} */
! 520:
! 521: /* {{{ proto int bccomp(string left_operand, string right_operand [, int scale])
! 522: Compares two arbitrary precision numbers */
! 523: PHP_FUNCTION(bccomp)
! 524: {
! 525: char *left, *right;
! 526: int left_len, right_len;
! 527: long scale_param = 0;
! 528: bc_num first, second;
! 529: int scale = BCG(bc_precision), argc = ZEND_NUM_ARGS();
! 530:
! 531: if (zend_parse_parameters(argc TSRMLS_CC, "ss|l", &left, &left_len, &right, &right_len, &scale_param) == FAILURE) {
! 532: return;
! 533: }
! 534:
! 535: if (argc == 3) {
! 536: scale = (int) ((int)scale_param < 0) ? 0 : scale_param;
! 537: }
! 538:
! 539: bc_init_num(&first TSRMLS_CC);
! 540: bc_init_num(&second TSRMLS_CC);
! 541:
! 542: bc_str2num(&first, left, scale TSRMLS_CC);
! 543: bc_str2num(&second, right, scale TSRMLS_CC);
! 544: Z_LVAL_P(return_value) = bc_compare(first, second);
! 545: Z_TYPE_P(return_value) = IS_LONG;
! 546:
! 547: bc_free_num(&first);
! 548: bc_free_num(&second);
! 549: return;
! 550: }
! 551: /* }}} */
! 552:
! 553: /* {{{ proto bool bcscale(int scale)
! 554: Sets default scale parameter for all bc math functions */
! 555: PHP_FUNCTION(bcscale)
! 556: {
! 557: long new_scale;
! 558:
! 559: if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &new_scale) == FAILURE) {
! 560: return;
! 561: }
! 562:
! 563: BCG(bc_precision) = ((int)new_scale < 0) ? 0 : new_scale;
! 564:
! 565: RETURN_TRUE;
! 566: }
! 567: /* }}} */
! 568:
! 569:
! 570: #endif
! 571:
! 572: /*
! 573: * Local variables:
! 574: * tab-width: 4
! 575: * c-basic-offset: 4
! 576: * End:
! 577: * vim600: sw=4 ts=4 fdm=marker
! 578: * vim<600: sw=4 ts=4
! 579: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>