Passed
Push — master ( 4b8292...9204d2 )
by Mark
10:15
created

Cotangent::cot()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 5
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 9
ccs 5
cts 5
cp 1
crap 2
rs 10
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig\Trig;
4
5
use PhpOffice\PhpSpreadsheet\Calculation\Exception;
6
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig\Helpers;
7
8
class Cotangent
9
{
10
    /**
11
     * COT.
12
     *
13
     * Returns the cotangent of an angle.
14
     *
15
     * @param float $angle Number
16
     *
17
     * @return float|string The cotangent of the angle
18
     */
19 17
    public static function cot($angle)
20
    {
21
        try {
22 17
            $angle = Helpers::validateNumericNullBool($angle);
23 1
        } catch (Exception $e) {
24 1
            return $e->getMessage();
25
        }
26
27 16
        return Helpers::verySmallDenominator(cos($angle), sin($angle));
28
    }
29
30
    /**
31
     * COTH.
32
     *
33
     * Returns the hyperbolic cotangent of an angle.
34
     *
35
     * @param float $angle Number
36
     *
37
     * @return float|string The hyperbolic cotangent of the angle
38
     */
39 20
    public static function coth($angle)
40
    {
41
        try {
42 20
            $angle = Helpers::validateNumericNullBool($angle);
43 1
        } catch (Exception $e) {
44 1
            return $e->getMessage();
45
        }
46
47 19
        return Helpers::verySmallDenominator(1.0, tanh($angle));
48
    }
49
50
    /**
51
     * ACOT.
52
     *
53
     * Returns the arccotangent of a number.
54
     *
55
     * @param float $number Number
56
     *
57
     * @return float|string The arccotangent of the number
58
     */
59 20
    public static function acot($number)
60
    {
61
        try {
62 20
            $number = Helpers::validateNumericNullBool($number);
63 1
        } catch (Exception $e) {
64 1
            return $e->getMessage();
65
        }
66
67 19
        return (M_PI / 2) - atan($number);
68
    }
69
70
    /**
71
     * ACOTH.
72
     *
73
     * Returns the hyperbolic arccotangent of a number.
74
     *
75
     * @param float $number Number
76
     *
77
     * @return float|string The hyperbolic arccotangent of the number
78
     */
79 20
    public static function acoth($number)
80
    {
81
        try {
82 20
            $number = Helpers::validateNumericNullBool($number);
83 1
        } catch (Exception $e) {
84 1
            return $e->getMessage();
85
        }
86
87 19
        $result = ($number === 1) ? NAN : (log(($number + 1) / ($number - 1)) / 2);
88
89 19
        return Helpers::numberOrNan($result);
90
    }
91
}
92