mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Replaced all tabs with spaces
This commit is contained in:
parent
8bbe99ad11
commit
bb62a8b3fd
@ -836,56 +836,56 @@ custom types without the overhead of external function calls:
|
||||
|
||||
::
|
||||
|
||||
library bigint {
|
||||
struct bigint {
|
||||
uint[] limbs;
|
||||
}
|
||||
library bigint {
|
||||
struct bigint {
|
||||
uint[] limbs;
|
||||
}
|
||||
|
||||
function fromUint(uint x) internal returns (bigint r) {
|
||||
r.limbs = new uint[](1);
|
||||
r.limbs[0] = x;
|
||||
}
|
||||
function fromUint(uint x) internal returns (bigint r) {
|
||||
r.limbs = new uint[](1);
|
||||
r.limbs[0] = x;
|
||||
}
|
||||
|
||||
function add(bigint _a, bigint _b) internal returns (bigint r) {
|
||||
r.limbs = new uint[](max(_a.limbs.length, _b.limbs.length));
|
||||
uint carry = 0;
|
||||
for (uint i = 0; i < r.limbs.length; ++i) {
|
||||
uint a = limb(_a, i);
|
||||
uint b = limb(_b, i);
|
||||
r.limbs[i] = a + b + carry;
|
||||
if (a + b < a || (a + b == uint(-1) && carry > 0))
|
||||
carry = 1;
|
||||
else
|
||||
carry = 0;
|
||||
}
|
||||
if (carry > 0) {
|
||||
// too bad, we have to add a limb
|
||||
uint[] memory newLimbs = new uint[](r.limbs.length + 1);
|
||||
for (i = 0; i < r.limbs.length; ++i)
|
||||
newLimbs[i] = r.limbs[i];
|
||||
newLimbs[i] = carry;
|
||||
r.limbs = newLimbs;
|
||||
}
|
||||
}
|
||||
function add(bigint _a, bigint _b) internal returns (bigint r) {
|
||||
r.limbs = new uint[](max(_a.limbs.length, _b.limbs.length));
|
||||
uint carry = 0;
|
||||
for (uint i = 0; i < r.limbs.length; ++i) {
|
||||
uint a = limb(_a, i);
|
||||
uint b = limb(_b, i);
|
||||
r.limbs[i] = a + b + carry;
|
||||
if (a + b < a || (a + b == uint(-1) && carry > 0))
|
||||
carry = 1;
|
||||
else
|
||||
carry = 0;
|
||||
}
|
||||
if (carry > 0) {
|
||||
// too bad, we have to add a limb
|
||||
uint[] memory newLimbs = new uint[](r.limbs.length + 1);
|
||||
for (i = 0; i < r.limbs.length; ++i)
|
||||
newLimbs[i] = r.limbs[i];
|
||||
newLimbs[i] = carry;
|
||||
r.limbs = newLimbs;
|
||||
}
|
||||
}
|
||||
|
||||
function limb(bigint _a, uint _limb) internal returns (uint) {
|
||||
return _limb < _a.limbs.length ? _a.limbs[_limb] : 0;
|
||||
}
|
||||
function limb(bigint _a, uint _limb) internal returns (uint) {
|
||||
return _limb < _a.limbs.length ? _a.limbs[_limb] : 0;
|
||||
}
|
||||
|
||||
function max(uint a, uint b) private returns (uint) {
|
||||
return a > b ? a : b;
|
||||
}
|
||||
}
|
||||
function max(uint a, uint b) private returns (uint) {
|
||||
return a > b ? a : b;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
contract C {
|
||||
using bigint for bigint.bigint;
|
||||
function f() {
|
||||
var x = bigint.fromUint(7);
|
||||
var y = bigint.fromUint(uint(-1));
|
||||
var z = x.add(y);
|
||||
}
|
||||
}
|
||||
contract C {
|
||||
using bigint for bigint.bigint;
|
||||
function f() {
|
||||
var x = bigint.fromUint(7);
|
||||
var y = bigint.fromUint(uint(-1));
|
||||
var z = x.add(y);
|
||||
}
|
||||
}
|
||||
|
||||
As the compiler cannot know where the library will be
|
||||
deployed at, these addresses have to be filled into the
|
||||
|
Loading…
Reference in New Issue
Block a user