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

DecimalTrigInverseBench   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 36
dl 0
loc 74
rs 10
c 2
b 0
f 0
wmc 9
1
<?php
2
3
4
namespace Samsara\Fermat\Values;
5
6
use PhpBench\Attributes\BeforeMethods;
7
use PhpBench\Attributes\Groups;
8
use PhpBench\Attributes\ParamProviders;
9
use Samsara\Fermat\Enums\CalcMode;
10
use Samsara\Fermat\Types\Decimal;
11
12
class DecimalTrigInverseBench
13
{
14
    public ImmutableDecimal $valueA;
15
    public ImmutableDecimal $valueB;
16
17
    #[Groups(['trig', 'inverse-trig'])]
18
    #[BeforeMethods('setUp')]
19
    #[ParamProviders(['provideNumbers', 'provideModes'])]
20
    public function benchArcSin()
21
    {
22
        $this->valueB->arcsin();
23
    }
24
25
    #[Groups(['trig', 'inverse-trig'])]
26
    #[BeforeMethods('setUp')]
27
    #[ParamProviders(['provideNumbers', 'provideModes'])]
28
    public function benchArcCos()
29
    {
30
        $this->valueB->arccos();
31
    }
32
33
    #[Groups(['trig', 'inverse-trig'])]
34
    #[BeforeMethods('setUp')]
35
    #[ParamProviders(['provideNumbers', 'provideModes'])]
36
    public function benchArcTan()
37
    {
38
        $this->valueB->arctan();
39
    }
40
41
    #[Groups(['trig', 'inverse-trig'])]
42
    #[BeforeMethods('setUp')]
43
    #[ParamProviders(['provideNumbers', 'provideModes'])]
44
    public function benchArcSec()
45
    {
46
        $this->valueA->arcsec();
47
    }
48
49
    #[Groups(['trig', 'inverse-trig'])]
50
    #[BeforeMethods('setUp')]
51
    #[ParamProviders(['provideNumbers', 'provideModes'])]
52
    public function benchArcCsc()
53
    {
54
        $this->valueA->arccsc();
55
    }
56
57
    #[Groups(['trig', 'inverse-trig'])]
58
    #[BeforeMethods('setUp')]
59
    #[ParamProviders(['provideNumbers', 'provideModes'])]
60
    public function benchArcCot()
61
    {
62
        $this->valueB->arccot();
63
    }
64
65
    public function provideNumbers()
66
    {
67
        return [
68
            'near-limit' => ['valueA' => '1.1', 'valueB' => '0.9'],
69
            'away-from-limit' => ['valueA' => '10', 'valueB' => '0.001'],
70
        ];
71
    }
72
73
    public function provideModes()
74
    {
75
        return [
76
            'auto-mode' => ['mode' => CalcMode::Auto],
77
            'native-mode' => ['mode' => CalcMode::Native],
78
            'precision-mode' => ['mode' => CalcMode::Precision]
79
        ];
80
    }
81
82
    public function setUp(array $params)
83
    {
84
        $this->valueA = (new ImmutableDecimal($params['valueA']))->setMode($params['mode']);
85
        $this->valueB = (new ImmutableDecimal($params['valueB']))->setMode($params['mode']);
86
    }
87
88
}