1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\Math\BigInteger\Adapter;
interface AdapterInterface
{
/**
* Base62 alphabet for arbitrary base conversion
*/
const BASE62_ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
/**
* Create adapter-specific representation of a big integer
*
* @param string $operand
* @param int|null $base
* @return mixed
*/
public function init($operand, $base = null);
/**
* Add two big integers
*
* @param string $leftOperand
* @param string $rightOperand
* @return string
*/
public function add($leftOperand, $rightOperand);
/**
* Subtract two big integers
*
* @param string $leftOperand
* @param string $rightOperand
* @return string
*/
public function sub($leftOperand, $rightOperand);
/**
* Multiply two big integers
*
* @param string $leftOperand
* @param string $rightOperand
* @return string
*/
public function mul($leftOperand, $rightOperand);
/**
* Divide two big integers
* (this method returns only int part of result)
*
* @param string $leftOperand
* @param string $rightOperand
* @return string
*/
public function div($leftOperand, $rightOperand);
/**
* Raise a big integers to another
*
* @param string $operand
* @param string $exp
* @return string
*/
public function pow($operand, $exp);
/**
* Get the square root of a big integer
*
* @param string $operand
* @return string
*/
public function sqrt($operand);
/**
* Get absolute value of a big integer
*
* @param string $operand
* @return string
*/
public function abs($operand);
/**
* Get modulus of a big integer
*
* @param string $leftOperand
* @param string $modulus
* @return string
*/
public function mod($leftOperand, $modulus);
/**
* Raise a big integer to another, reduced by a specified modulus
*
* @param string $leftOperand
* @param string $rightOperand
* @param string $modulus
* @return string
*/
public function powmod($leftOperand, $rightOperand, $modulus);
/**
* Compare two big integers
* Returns < 0 if leftOperand is less than rightOperand;
* > 0 if leftOperand is greater than rightOperand, and 0 if they are equal.
*
* @param string $leftOperand
* @param string $rightOperand
* @return int
*/
public function comp($leftOperand, $rightOperand);
/**
* Convert big integer into it's binary number representation
*
* @param string $int
* @param bool $twoc
* @return string
*/
public function intToBin($int, $twoc = false);
/**
* Convert binary number into big integer
*
* @param string $bytes
* @param bool $twoc
* @return string
*/
public function binToInt($bytes, $twoc = false);
/**
* Convert a number between arbitrary bases
*
* @param string $operand
* @param int $fromBase
* @param int $toBase
* @return string
*/
public function baseConvert($operand, $fromBase, $toBase = 10);
}