search for in the  Language: Russian

# exp

(PHP 4, PHP 5)

expCalculates the exponent of e

float exp ( float $arg ) Returns e raised to the power of arg. Note: 'e' is the base of the natural system of logarithms, or approximately 2.718282. ### Parameters arg The argument to process ### Return Values 'e' raised to the power of arg ### Examples Example #1 exp() example <?phpecho exp(12) . "\n"; echo exp(5.7);?> The above example will output: 1.6275E+005 298.87  ### See Also • log() - Natural logarithm • pow() - Exponential expression User Contributed Notes exp Nitrogen 24-Sep-2009 12:54 Just a note about using the submitted codes below.. Their functions have an optional$precision parameter; however, it's not being used properly.. BCMath functions by default do not use decimal precision unless specified by BCScale($precision); or using the extra parameter in the used BC functions. For example, a blank PHP file with their code.. executing BCExp('5.7'); returns "47" instead of the correct answer of "298.86740096706..." So for optimum accuracy, I'd suggest setting BCScale to a healthy length before running their codes. konrad 24-Jan-2007 11:13 working version (checked) of below code is <?php // see bccomp for this code (signed and unsigned zero!) function bccomp_zero($amount) {     return bccomp($amount, (@$amount{0}=="-"?'-':'').'0.0');   }   // arbitrary precision function (x^n)/(n)!   function bcpowfact($x,$n) {     if (bccomp_zero($n) == 0) return '1'; if (bccomp($n, '1') == 0) return $x;$a = $x; // 1st step: a *= x / 1$i = $n; while (bccomp($i, '1') == 1) {       // ith step: a *= x / i       $a = bcmul($a, bcdiv($x,$i));       $i = bcsub($i, '1'); // bc idiom for $i-- } return$a;   }   // arbitrary precision exp() function   function bcexp($x,$digits) {     $sum =$prev_sum = '0.0';     $error = '0.'.str_repeat('0',$digits-1).'1'; // 0.1*10^-k     $n = '0.0'; do {$prev_sum = $sum;$sum = bcadd($sum, bcpowfact($x, $n));$n = bcadd($n, '1'); // bc idiom for$n++     } while (bccomp(bcsub($sum,$prev_sum), $error) == 1); return$sum;   } ?>
boards at gmail dot com
26-Apr-2006 05:18
Note regarding the mathematical function exp(x): To continue accuracy of the exponential function to an infinite amount of decimal places, one would use the power series definition for exp(x). (in LaTeX form:) e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} So, to do that in PHP (using BC math): <?php // arbitrary precision function (x^n)/(n)! function bcpowfact($x,$n) {   if (bccomp($n, '0') == 0) return '1.0'; if (bccomp($n, '1') == 1) return $x;$a = $x; // nth step: a *= x / 1$i = $n; while (bccomp($i, '1') == 1) {     // ith step: a *= x / i     $a = bcmul($a, bcdiv($x,$i));     $i = bcsub($i, '1'); // bc idiom for $i-- } return$a; } // arbitrary precision exp() function function bcexp($x,$decimal_places) {   $sum =$prev_sum = '0.0';   $error = bcdiv(bcpow('10', '-'.$decimal_places), 10); // 0.1*10^-k   $n = '0'; do {$prev_sum = $sum;$sum = bcadd($sum, bcpowfact($x, $n)); } while (bccomp(bcsub($sum, $prev_sum),$error) == 1);   return \$sum; } ?>
This only returns the first 51 digits after the decimal point.