PHP: gmp_init - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

gmp_intval gmp_hamdist

Last updated: Sat, 27 Jan 2007

view this page in

# gmp_init

(PHP 4 >= 4.0.4, PHP 5)

gmp_init -- Create GMP number

## Description

resource gmp_init ( mixed number [, int base] )

Creates a GMP number from an integer or string. String representation can be decimal, hexadecimal or octal. Optional parameter `base` is available since PHP 4.1.0. Its default value is `0`.

The base may vary from 2 to 36. If base is 0 (default value), the actual base is determined from the leading characters: if the first two characters are `0x` or `0X`, hexadecimal is assumed, otherwise if the first character is "0", octal is assumed, otherwise decimal is assumed.

Пример 1. Creating GMP number

`<?php $a = gmp_init(123456); $b = gmp_init("0xFFFFDEBACDFEDF7200"); ?>`

> Замечание: It is not necessary to call this function if you want to use integer or string in place of GMP number in GMP functions, like gmp_add(). Function arguments are automatically converted to GMP numbers, if such conversion is possible and needed, using the same rules as gmp_init().

add a note User Contributed Notes
gmp_init
charlie at oblivion dot cz
18-Feb-2007 04:55
`gmp_* functions don't accept strings with a leading '+':
<?php
echo gmp_strval(gmp_init('+42')); #0
echo gmp_strval(gmp_add('42', '+42')); #42
echo bcadd('+42', '+42'); #84
?>`
php at richardneill dot org
20-Sep-2006 03:30
`Here's a way to parse a decimal (eg 3.25) into an integer and exponent:
<?
if (preg_match("/^[0-9]+\.[0-9]+$/",$input)){
//Input is a base-10 decimal. Multiply as necessary to remove the decimal
//point. Convert that to a gmp_resource, then decrement the exponent
//to compensate.
$pieces=explode(".", $input); //Split at the d.p.
$input="$pieces[0]$pieces[1]"; //Remove the decimal point.
$input=ltrim($input,'0');
//Remove any leading zeros, or gmp_init will parse the number as octal.
if ($input==''){ //Deal with "0.0" which would otherwise be ''.
$input=0;
}
$integer=gmp_init($input);
$ns_exponent=-strlen($pieces[1]);
//exponent = (-) the number of characters after the decimal point.
}
?>`
php at richardneill dot org
20-Sep-2006 03:14
`Note: Leading zeros will make gmp_init parse this as octal.
Thus gmp_init(010) becomes 8.
$a=010; //8
$b="010" + 0; //10
$c=gmp_strval(gmp_init(010)); //8
$d=gmp_strval(gmp_init("010")); //8
This behaviour is inconsistent: either $d should equal $b, or
$b should equal $a.`
thomas dot hebinck at digionline dot de
18-Aug-2005 10:23
`If you call a gmp_* function directly with an interger as parameter, this integer MUST NOT be 0:
for($i=-1;$i<=1;$i++) { echo gmp_strval(gmp_add(2,gmp_mul(1,$i))) . ' '; }
The result is 1 0 3 (wrong)
In this case you have to use gmp_init():
for($i=-1;$i<=1;$i++) { echo gmp_strval(gmp_add(2,gmp_mul(1,gmp_init($i)))) . ' '; }
The result is 1 2 3 (right)
Happy number crunching! :-)`
add a note
gmp_intval gmp_hamdist

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST