php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
bcmath.h File Reference
#include <stddef.h>
#include "zend.h"
#include <stdbool.h>
#include "zend_string.h"
#include "../../php_bcmath.h"

Go to the source code of this file.

Data Structures

struct  bc_struct
 

Macros

#define BASE   10
 
#define CH_VAL(c)
 
#define BCD_CHAR(d)
 
#define MAX(a, b)
 
#define MIN(a, b)
 
#define bc_add_ex(n1, n2, result, scale_min)
 
#define bc_sub_ex(n1, n2, result, scale_min)
 
#define bc_multiply_ex(n1, n2, result, scale_min)
 
#define bc_new_num(length, scale)
 
#define bc_new_num_nonzeroed(length, scale)
 
#define bc_free_num(num)
 
#define bc_num2str(num)
 

Typedefs

typedef struct bc_structbc_num
 
typedef struct bc_struct bc_struct
 

Enumerations

enum  sign { PLUS , MINUS }
 
enum  bcmath_compare_result { BCMATH_EQUAL = 0 , BCMATH_LEFT_GREATER = 1 , BCMATH_RIGHT_GREATER = -1 }
 
enum  raise_mod_status {
  OK , BASE_HAS_FRACTIONAL , EXPO_HAS_FRACTIONAL , EXPO_IS_NEGATIVE ,
  MOD_HAS_FRACTIONAL , MOD_IS_ZERO
}
 

Functions

void bc_init_numbers (void)
 
void bc_force_free_number (bc_num *num)
 
bc_num _bc_new_num_ex (size_t length, size_t scale, bool persistent)
 
bc_num _bc_new_num_nonzeroed_ex (size_t length, size_t scale, bool persistent)
 
void _bc_free_num_ex (bc_num *num, bool persistent)
 
void bc_init_num (bc_num *num)
 
bool bc_str2num (bc_num *num, const char *str, const char *end, size_t scale, size_t *full_scale, bool auto_scale)
 
bc_num bc_long2num (zend_long lval)
 
zend_stringbc_num2str_ex (bc_num num, size_t scale)
 
void bc_int2num (bc_num *num, int val)
 
long bc_num2long (bc_num num)
 
bcmath_compare_result bc_compare (bc_num n1, bc_num n2, size_t scale)
 
bool bc_is_zero (bc_num num)
 
bool bc_is_zero_for_scale (bc_num num, size_t scale)
 
bool bc_is_near_zero (bc_num num, size_t scale)
 
bool bc_is_neg (bc_num num)
 
void bc_rm_trailing_zeros (bc_num num)
 
bc_num bc_add (bc_num n1, bc_num n2, size_t scale_min)
 
bc_num bc_sub (bc_num n1, bc_num n2, size_t scale_min)
 
bc_num bc_multiply (bc_num n1, bc_num n2, size_t scale)
 
bc_num bc_square (bc_num n1, size_t scale)
 
bool bc_divide (bc_num n1, bc_num n2, bc_num *quot, size_t scale)
 
bool bc_modulo (bc_num num1, bc_num num2, bc_num *resul, size_t scale)
 
bool bc_divmod (bc_num num1, bc_num num2, bc_num *quo, bc_num *rem, size_t scale)
 
bc_num bc_floor_or_ceil (bc_num num, bool is_floor)
 
void bc_round (bc_num num, zend_long places, zend_long mode, bc_num *result)
 
raise_mod_status bc_raisemod (bc_num base, bc_num exponent, bc_num mod, bc_num *result, size_t scale)
 
bool bc_raise (bc_num base, long exponent, bc_num *result, size_t scale)
 
void bc_raise_bc_exponent (bc_num base, bc_num exponent, bc_num *resul, size_t scale)
 
bool bc_sqrt (bc_num *num, size_t scale)
 

Macro Definition Documentation

◆ BASE

#define BASE   10

Definition at line 63 of file bcmath.h.

◆ bc_add_ex

#define bc_add_ex ( n1,
n2,
result,
scale_min )
Value:
do { \
bc_num add_ex = bc_add(n1, n2, scale_min); \
bc_free_num (result); \
*(result) = add_ex; \
} while (0)
bc_num bc_add(bc_num n1, bc_num n2, size_t scale_min)
Definition add.c:42
struct bc_struct * bc_num
Definition bcmath.h:39
bool result

Definition at line 133 of file bcmath.h.

◆ bc_free_num

#define bc_free_num ( num)
Value:
_bc_free_num_ex((num), 0)
void _bc_free_num_ex(bc_num *num, bool persistent)
Definition init.c:76

Definition at line 187 of file bcmath.h.

◆ bc_multiply_ex

#define bc_multiply_ex ( n1,
n2,
result,
scale_min )
Value:
do { \
bc_num mul_ex = bc_multiply(n1, n2, scale_min); \
bc_free_num (result); \
*(result) = mul_ex; \
} while (0)
bc_num bc_multiply(bc_num n1, bc_num n2, size_t scale)
Definition recmul.c:243

Definition at line 149 of file bcmath.h.

◆ bc_new_num

#define bc_new_num ( length,
scale )
Value:
_bc_new_num_ex((length), (scale), 0)
bc_num _bc_new_num_ex(size_t length, size_t scale, bool persistent)
Definition init.c:62

Definition at line 185 of file bcmath.h.

◆ bc_new_num_nonzeroed

#define bc_new_num_nonzeroed ( length,
scale )
Value:
_bc_new_num_nonzeroed_ex((length), (scale), 0)
bc_num _bc_new_num_nonzeroed_ex(size_t length, size_t scale, bool persistent)
Definition init.c:69

Definition at line 186 of file bcmath.h.

◆ bc_num2str

#define bc_num2str ( num)
Value:
bc_num2str_ex((num), (num->n_scale))
zend_string * bc_num2str_ex(bc_num num, size_t scale)
Definition num2str.c:37

Definition at line 188 of file bcmath.h.

◆ bc_sub_ex

#define bc_sub_ex ( n1,
n2,
result,
scale_min )
Value:
do { \
bc_num sub_ex = bc_sub(n1, n2, scale_min); \
bc_free_num (result); \
*(result) = sub_ex; \
} while (0)
bc_num bc_sub(bc_num n1, bc_num n2, size_t scale_min)
Definition sub.c:42

Definition at line 141 of file bcmath.h.

◆ BCD_CHAR

#define BCD_CHAR ( d)
Value:
(d + '0')

Definition at line 68 of file bcmath.h.

◆ CH_VAL

#define CH_VAL ( c)
Value:
(c - '0')

Definition at line 67 of file bcmath.h.

◆ MAX

#define MAX ( a,
b )
Value:
((a)>(b)?(a):(b))
$obj a
Definition test.php:84

Definition at line 74 of file bcmath.h.

◆ MIN

#define MIN ( a,
b )
Value:
((a)>(b)?(b):(a))

Definition at line 75 of file bcmath.h.

Typedef Documentation

◆ bc_num

typedef struct bc_struct* bc_num

Definition at line 39 of file bcmath.h.

◆ bc_struct

typedef struct bc_struct bc_struct

Enumeration Type Documentation

◆ bcmath_compare_result

Enumerator
BCMATH_EQUAL 
BCMATH_LEFT_GREATER 
BCMATH_RIGHT_GREATER 

Definition at line 113 of file bcmath.h.

◆ raise_mod_status

Enumerator
OK 
BASE_HAS_FRACTIONAL 
EXPO_HAS_FRACTIONAL 
EXPO_IS_NEGATIVE 
MOD_HAS_FRACTIONAL 
MOD_IS_ZERO 

Definition at line 167 of file bcmath.h.

◆ sign

enum sign
Enumerator
PLUS 
MINUS 

Definition at line 37 of file bcmath.h.

Function Documentation

◆ _bc_free_num_ex()

void _bc_free_num_ex ( bc_num * num,
bool persistent )

Definition at line 76 of file init.c.

◆ _bc_new_num_ex()

bc_num _bc_new_num_ex ( size_t length,
size_t scale,
bool persistent )

Definition at line 62 of file init.c.

◆ _bc_new_num_nonzeroed_ex()

bc_num _bc_new_num_nonzeroed_ex ( size_t length,
size_t scale,
bool persistent )

Definition at line 69 of file init.c.

◆ bc_add()

bc_num bc_add ( bc_num n1,
bc_num n2,
size_t scale_min )

Definition at line 42 of file add.c.

◆ bc_compare()

bcmath_compare_result bc_compare ( bc_num n1,
bc_num n2,
size_t scale )

Definition at line 154 of file compare.c.

◆ bc_divide()

bool bc_divide ( bc_num n1,
bc_num n2,
bc_num * quot,
size_t scale )

Definition at line 331 of file div.c.

◆ bc_divmod()

bool bc_divmod ( bc_num num1,
bc_num num2,
bc_num * quo,
bc_num * rem,
size_t scale )

Definition at line 44 of file divmod.c.

◆ bc_floor_or_ceil()

bc_num bc_floor_or_ceil ( bc_num num,
bool is_floor )

Definition at line 21 of file floor_or_ceil.c.

◆ bc_force_free_number()

void bc_force_free_number ( bc_num * num)

Definition at line 100 of file init.c.

◆ bc_init_num()

void bc_init_num ( bc_num * num)

Definition at line 108 of file init.c.

◆ bc_init_numbers()

void bc_init_numbers ( void )

Definition at line 91 of file init.c.

◆ bc_int2num()

void bc_int2num ( bc_num * num,
int val )

Definition at line 36 of file int2num.c.

◆ bc_is_near_zero()

bool bc_is_near_zero ( bc_num num,
size_t scale )

Definition at line 40 of file nearzero.c.

◆ bc_is_neg()

bool bc_is_neg ( bc_num num)

Definition at line 36 of file neg.c.

◆ bc_is_zero()

bool bc_is_zero ( bc_num num)

Definition at line 58 of file zero.c.

◆ bc_is_zero_for_scale()

bool bc_is_zero_for_scale ( bc_num num,
size_t scale )

Definition at line 38 of file zero.c.

◆ bc_long2num()

bc_num bc_long2num ( zend_long lval)

Definition at line 23 of file long2num.c.

◆ bc_modulo()

bool bc_modulo ( bc_num num1,
bc_num num2,
bc_num * resul,
size_t scale )

Definition at line 86 of file divmod.c.

◆ bc_multiply()

bc_num bc_multiply ( bc_num n1,
bc_num n2,
size_t scale )

Definition at line 243 of file recmul.c.

◆ bc_num2long()

long bc_num2long ( bc_num num)

Definition at line 40 of file num2long.c.

◆ bc_num2str_ex()

zend_string * bc_num2str_ex ( bc_num num,
size_t scale )

Definition at line 37 of file num2str.c.

◆ bc_raise()

bool bc_raise ( bc_num base,
long exponent,
bc_num * result,
size_t scale )

Definition at line 46 of file raise.c.

◆ bc_raise_bc_exponent()

void bc_raise_bc_exponent ( bc_num base,
bc_num exponent,
bc_num * resul,
size_t scale )

Definition at line 111 of file raise.c.

◆ bc_raisemod()

raise_mod_status bc_raisemod ( bc_num base,
bc_num exponent,
bc_num mod,
bc_num * result,
size_t scale )

Definition at line 37 of file raisemod.c.

◆ bc_rm_trailing_zeros()

void bc_rm_trailing_zeros ( bc_num num)

Definition at line 48 of file rmzero.c.

◆ bc_round()

void bc_round ( bc_num num,
zend_long places,
zend_long mode,
bc_num * result )

Definition at line 21 of file round.c.

◆ bc_sqrt()

bool bc_sqrt ( bc_num * num,
size_t scale )

Definition at line 39 of file sqrt.c.

◆ bc_square()

bc_num bc_square ( bc_num n1,
size_t scale )

Definition at line 271 of file recmul.c.

◆ bc_str2num()

bool bc_str2num ( bc_num * num,
const char * str,
const char * end,
size_t scale,
size_t * full_scale,
bool auto_scale )

Definition at line 109 of file str2num.c.

◆ bc_sub()

bc_num bc_sub ( bc_num n1,
bc_num n2,
size_t scale_min )

Definition at line 42 of file sub.c.