Passed
Branch master (7fff96)
by Jordan
06:01
created

DecimalLogBench::benchLog10()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 6
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace Samsara\Fermat\Bench\Logs;
4
5
use PhpBench\Attributes\BeforeMethods;
6
use PhpBench\Attributes\Groups;
7
use PhpBench\Attributes\ParamProviders;
8
use PhpBench\Attributes\Revs;
9
use Samsara\Fermat\Enums\CalcMode;
10
use Samsara\Fermat\Values\ImmutableDecimal;
11
12
class DecimalLogBench
13
{
14
    public ImmutableDecimal $valueA;
15
16
    #[Groups(['logs'])]
17
    #[BeforeMethods('setUp')]
18
    #[ParamProviders(['provideNumbers', 'provideModes'])]
19
    public function benchLn()
20
    {
21
        $this->valueA->ln();
22
    }
23
24
    #[Groups(['logs'])]
25
    #[BeforeMethods('setUp')]
26
    #[ParamProviders(['provideNumbers', 'provideModes'])]
27
    public function benchLog10()
28
    {
29
        $this->valueA->log10();
30
    }
31
32
    #[Groups(['logs'])]
33
    #[BeforeMethods('setUp')]
34
    #[ParamProviders(['provideNumbers', 'provideModes'])]
35
    public function benchExp()
36
    {
37
        $this->valueA->exp();
38
    }
39
40
    public function provideNumbers()
41
    {
42
        return [
43
            'int' => ['valueA' => 5],
44
            'dec' => ['valueA' => '1.5'],
45
            'hard' => ['valueA' => '1.5832947568392048757878954329086890732456748409342578978903245'],
46
        ];
47
    }
48
49
    public function provideModes()
50
    {
51
        return [
52
            'auto-mode' => ['mode' => CalcMode::Auto],
53
            'native-mode' => ['mode' => CalcMode::Native],
54
            'precision-mode' => ['mode' => CalcMode::Precision]
55
        ];
56
    }
57
58
    public function setUp(array $params)
59
    {
60
        $this->valueA = (new ImmutableDecimal($params['valueA']))->setMode($params['mode']);
61
    }
62
}