<?php
bcscale(100);
/*
* Computes the natural logarithm using a series.
* @author Thomas Oldbury.
* @license Public domain.
*/
function bcln($a, $iter = 10)
{
$result = "0.0";
for($i = 0; $i < $iter; $i++)
{
$pow = (1 + (2 * $i));
$mul = bcdiv("1.0", $pow);
$fraction = bcmul($mul, bcpow(bcsub($a, "1.0") / bcadd($a, "1.0"), $pow));
$result = bcadd($fraction, $result);
}
return bcmul("2.0", $result);
}
/*
* Computes the base2 log using baseN log.
* @note Requires above functions.
* @author Thomas Oldbury.
* @license Public domain.
*/
function bclog2($a, $iter = 10)
{
return bcdiv(bcln($a, $iter), bcln("2", $iter));
}
/*
* Computes the base10 log using baseN log.
* @note Requires above functions.
* @author Thomas Oldbury.
* @license Public domain.
*/
function bclog10($a, $iter = 10)
{
return bcdiv(bcln($a, $iter), bcln("10", $iter));
}
?>
bcpow
(PHP 4, PHP 5)
bcpow — Elevar un número de precisión arbitraria a otro
Descripción
$left_operand
, string $right_operand
[, int $scale
] )
Elevar left_operand a la potencia
right_operand.
Parámetros
-
left_operand -
El left operand, como una cadena.
-
right_operand -
El right operand, como una cadena.
-
scale -
Este parámetro opcional es usado para establecer el número de dígitos después del punto decimal en el resultado. También se puede configurar la escala global por defecto para todas las funciones usando bcscale().
Valores devueltos
Devuelve el resultado como una cadena.
Ejemplos
Ejemplo #1 Ejemplo bcpow()
<?php
echo bcpow('4.2', '3', 2); // 74.08
?>
Notas
Nota:
bcpow() podría devolver un resultado con menos dígitos tras el punto decimal que los indicados en el parámetro
scale. Esto sucede únicamente cuando el resultado no necesita toda la precisión disponible porscale. Por ejemplo:Ejemplo #2 Ejemplo de escalado de bcpow()
<?php
echo bcpow('5', '2', 2); // imprime "25", no "25.00"
?>
Ver también
- bcpowmod() - Eleva un número de precisión arbitraria a otro, reducido por un módulo especificado
- bcsqrt() - Obtiene la raiz cuadrada de un número de precisión arbitraria
bcpow() only supports exponents less than or equal to 2^31-1. Also, bcpow() does not support decimal numbers. If you have scale set to 0, then the exponent is converted to an interger; otherwise an error is generated.
--
Michael Bailey
http://www.jinxidoru.com
