# BCMath Arbitrary Precision Mathematics Functions

## Introduction

For arbitrary precision mathematics PHP offers the Binary Calculator which supports numbers of any size and precision, represented as strings.

## Requirements

Since PHP 4.0.4, libbcmath is bundled with PHP. You don't need any external libraries for this extension.

## Installation

These functions are only available if PHP was configured with --enable-bcmath. In PHP 3, these functions are only available if PHP was not configured with --disable-bcmath.

The windows version of PHP has built in support for this extension. You do not need to load any additional extension in order to use these functions.

## Runtime Configuration

The behaviour of these functions is affected by settings in php.ini.

BC math configuration options
Name | Default | Changeable | Changelog
--- | --- | --- | ---
bcmath.scale | "0" | PHP_INI_ALL |

For further details and definitions of the PHP_INI_* constants, see the php.ini directives.

Here's a short explanation of the configuration directives.

`bcmath.scale` integer

  Number of decimal digits for all bcmath functions. See also bcscale().

## Resource Types

This extension has no resource types defined.

## Predefined Constants

This extension has no constants defined.

## Table of Contents

- bcadd — Add two arbitrary precision numbers
- 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 number
- bcpow — Raise an arbitrary precision number to another
- bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
- bcscale — Set 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