PHP 8.4.0 Beta 5 available for testing

# BCMath Arbitrary Precision Mathematics

• Introduction
• Installing/Configuring
• BC Math Functions
• bccomp — Compare two arbitrary precision numbers
• bcdiv — Divide two arbitrary precision numbers
• bcmod — Get modulus of an arbitrary precision number
• bcmul — Multiply two arbitrary precision numbers
• bcpow — Raise an arbitrary precision number to another
• bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
• bcscale — Set or get default scale parameter for all bc math functions
• bcsqrt — Get the square root of an arbitrary precision number
• bcsub — Subtract one arbitrary precision number from another

### User Contributed Notes 3 notes

77
Hayley Watson
8 years ago
`This extension is an interface to the GNU implementation as a library of the Basic Calculator utility by Philip Nelson; hence the name.`
26
`Note that when you use implementation of factorial that ClaudiuS made, you get results even if you try to calculate factorial of number that you normally can't, e.g. 2.5, -2, etc. Here is safer implementation:<?php/** * Calculates a factorial of given number. * @param string|int \$num * @throws InvalidArgumentException * @return string */function bcfact(\$num){ if (!filter_var(\$num, FILTER_VALIDATE_INT) || \$num <= 0) { throw new InvalidArgumentException(sprintf('Argument must be natural number, "%s" given.', \$num)); } for (\$result = '1'; \$num > 0; \$num--) { \$result = bcmul(\$result, \$num); } return \$result;}?>`
`Needed to compute some permutations and found the BC extension great but poor on functions, so untill this gets implemented here's the factorial function:<?php/* BC FACTORIAL * n! = n * (n-1) * (n-2) .. 1 [eg. 5! = 5 * 4 * 3 * 2 * 1 = 120] */function bcfact(\$n){ \$factorial=\$n; while (--\$n>1) \$factorial=bcmul(\$factorial,\$n); return \$factorial;}print bcfact(50); //30414093201713378043612608166064768844377641568960512000000000000?>`