• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

brick / math / 17358080595

31 Aug 2025 01:55PM UTC coverage: 99.743%. Remained the same
17358080595

push

github

BenMorel
Apply coding standard

224 of 264 new or added lines in 10 files covered. (84.85%)

79 existing lines in 4 files now uncovered.

1165 of 1168 relevant lines covered (99.74%)

1135.14 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/src/Internal/Calculator/GmpCalculator.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Brick\Math\Internal\Calculator;
6

7
use Brick\Math\Internal\Calculator;
8
use GMP;
9
use Override;
10

11
use function gmp_add;
12
use function gmp_and;
13
use function gmp_div_q;
14
use function gmp_div_qr;
15
use function gmp_div_r;
16
use function gmp_gcd;
17
use function gmp_init;
18
use function gmp_invert;
19
use function gmp_mul;
20
use function gmp_or;
21
use function gmp_pow;
22
use function gmp_powm;
23
use function gmp_sqrt;
24
use function gmp_strval;
25
use function gmp_sub;
26
use function gmp_xor;
27

28
/**
29
 * Calculator implementation built around the GMP library.
30
 *
31
 * @internal
32
 */
33
final readonly class GmpCalculator extends Calculator
34
{
35
    #[Override]
36
    public function add(string $a, string $b): string
37
    {
NEW
38
        return gmp_strval(gmp_add($a, $b));
1,341✔
39
    }
40

41
    #[Override]
42
    public function sub(string $a, string $b): string
43
    {
NEW
44
        return gmp_strval(gmp_sub($a, $b));
333✔
45
    }
46

47
    #[Override]
48
    public function mul(string $a, string $b): string
49
    {
NEW
50
        return gmp_strval(gmp_mul($a, $b));
996✔
51
    }
52

53
    #[Override]
54
    public function divQ(string $a, string $b): string
55
    {
NEW
56
        return gmp_strval(gmp_div_q($a, $b));
479✔
57
    }
58

59
    #[Override]
60
    public function divR(string $a, string $b): string
61
    {
NEW
62
        return gmp_strval(gmp_div_r($a, $b));
164✔
63
    }
64

65
    #[Override]
66
    public function divQR(string $a, string $b): array
67
    {
NEW
68
        [$q, $r] = gmp_div_qr($a, $b);
1,499✔
69

70
        /**
71
         * @var GMP $q
72
         * @var GMP $r
73
         */
UNCOV
74
        return [
1,499✔
NEW
75
            gmp_strval($q),
1,499✔
NEW
76
            gmp_strval($r),
1,499✔
UNCOV
77
        ];
1,499✔
78
    }
79

80
    #[Override]
81
    public function pow(string $a, int $e): string
82
    {
NEW
83
        return gmp_strval(gmp_pow($a, $e));
556✔
84
    }
85

86
    #[Override]
87
    public function modInverse(string $x, string $m): ?string
88
    {
NEW
89
        $result = gmp_invert($x, $m);
18✔
90

UNCOV
91
        if ($result === false) {
18✔
UNCOV
92
            return null;
5✔
93
        }
94

NEW
95
        return gmp_strval($result);
13✔
96
    }
97

98
    #[Override]
99
    public function modPow(string $base, string $exp, string $mod): string
100
    {
NEW
101
        return gmp_strval(gmp_powm($base, $exp, $mod));
12✔
102
    }
103

104
    #[Override]
105
    public function gcd(string $a, string $b): string
106
    {
NEW
107
        return gmp_strval(gmp_gcd($a, $b));
1,036✔
108
    }
109

110
    #[Override]
111
    public function fromBase(string $number, int $base): string
112
    {
NEW
113
        return gmp_strval(gmp_init($number, $base));
594✔
114
    }
115

116
    #[Override]
117
    public function toBase(string $number, int $base): string
118
    {
NEW
119
        return gmp_strval($number, $base);
422✔
120
    }
121

122
    #[Override]
123
    public function and(string $a, string $b): string
124
    {
NEW
125
        return gmp_strval(gmp_and($a, $b));
51✔
126
    }
127

128
    #[Override]
129
    public function or(string $a, string $b): string
130
    {
NEW
131
        return gmp_strval(gmp_or($a, $b));
46✔
132
    }
133

134
    #[Override]
135
    public function xor(string $a, string $b): string
136
    {
NEW
137
        return gmp_strval(gmp_xor($a, $b));
48✔
138
    }
139

140
    #[Override]
141
    public function sqrt(string $n): string
142
    {
NEW
143
        return gmp_strval(gmp_sqrt($n));
486✔
144
    }
145
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc