PluginProbe
TablePress – Tables in WordPress made easy / 3.4
TablePress – Tables in WordPress made easy v3.4
3.4 3.3.4 3.3.3 3.3.2 3.3.1 trunk 1.12 1.14 1.9.2 2.0.4 2.1.7 2.1.8 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 All 45 releases
tablepress / libraries / vendor / PhpSpreadsheet / Calculation / MathTrig / Trig / Tangent.php

Tangent.php in TablePress – Tables in WordPress made easy 3.4, at libraries/vendor/PhpSpreadsheet/Calculation/MathTrig/Trig/Tangent.php

161 lines 4.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace TablePress\PhpOffice\PhpSpreadsheet\Calculation\MathTrig\Trig;
4
5 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled;
6 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Exception;
7 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
8 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\MathTrig\Helpers;
9
10 class Tangent
11 {
12 use ArrayEnabled;
13
14 /**
15 * TAN.
16 *
17 * Returns the result of builtin function tan after validating args.
18 *
19 * @param mixed $angle Should be numeric, or can be an array of numbers
20 *
21 * @return array<mixed>|float|string tangent
22 * If an array of numbers is passed as the argument, then the returned result will also be an array
23 * with the same dimensions
24 */
25 public static function tan($angle)
26 {
27 if (is_array($angle)) {
28 return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $angle);
29 }
30
31 try {
32 $angle = Helpers::validateNumericNullBool($angle);
33 } catch (Exception $e) {
34 return $e->getMessage();
35 }
36
37 return Helpers::verySmallDenominator(sin($angle), cos($angle));
38 }
39
40 /**
41 * TANH.
42 *
43 * Returns the result of builtin function sinh after validating args.
44 *
45 * @param mixed $angle Should be numeric, or can be an array of numbers
46 *
47 * @return array<mixed>|float|string hyperbolic tangent
48 * If an array of numbers is passed as the argument, then the returned result will also be an array
49 * with the same dimensions
50 */
51 public static function tanh($angle)
52 {
53 if (is_array($angle)) {
54 return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $angle);
55 }
56
57 try {
58 $angle = Helpers::validateNumericNullBool($angle);
59 } catch (Exception $e) {
60 return $e->getMessage();
61 }
62
63 return tanh($angle);
64 }
65
66 /**
67 * ATAN.
68 *
69 * Returns the arctangent of a number.
70 *
71 * @param array<mixed>|float $number Number, or can be an array of numbers
72 *
73 * @return array<mixed>|float|string The arctangent of the number
74 * If an array of numbers is passed as the argument, then the returned result will also be an array
75 * with the same dimensions
76 */
77 public static function atan($number)
78 {
79 if (is_array($number)) {
80 return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $number);
81 }
82
83 try {
84 $number = Helpers::validateNumericNullBool($number);
85 } catch (Exception $e) {
86 return $e->getMessage();
87 }
88
89 return Helpers::numberOrNan(atan($number));
90 }
91
92 /**
93 * ATANH.
94 *
95 * Returns the inverse hyperbolic tangent of a number.
96 *
97 * @param array<mixed>|float $number Number, or can be an array of numbers
98 *
99 * @return array<mixed>|float|string The inverse hyperbolic tangent of the number
100 * If an array of numbers is passed as the argument, then the returned result will also be an array
101 * with the same dimensions
102 */
103 public static function atanh($number)
104 {
105 if (is_array($number)) {
106 return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $number);
107 }
108
109 try {
110 $number = Helpers::validateNumericNullBool($number);
111 } catch (Exception $e) {
112 return $e->getMessage();
113 }
114
115 return Helpers::numberOrNan(atanh($number));
116 }
117
118 /**
119 * ATAN2.
120 *
121 * This function calculates the arc tangent of the two variables x and y. It is similar to
122 * calculating the arc tangent of y ÷ x, except that the signs of both arguments are used
123 * to determine the quadrant of the result.
124 * The arctangent is the angle from the x-axis to a line containing the origin (0, 0) and a
125 * point with coordinates (xCoordinate, yCoordinate). The angle is given in radians between
126 * -pi and pi, excluding -pi.
127 *
128 * Note that the Excel ATAN2() function accepts its arguments in the reverse order to the standard
129 * PHP atan2() function, so we need to reverse them here before calling the PHP atan() function.
130 *
131 * Excel Function:
132 * ATAN2(xCoordinate,yCoordinate)
133 *
134 * @param mixed $xCoordinate should be float, the x-coordinate of the point, or can be an array of numbers
135 * @param mixed $yCoordinate should be float, the y-coordinate of the point, or can be an array of numbers
136 *
137 * @return array<mixed>|float|string The inverse tangent of the specified x- and y-coordinates, or a string containing an error
138 * If an array of numbers is passed as one of the arguments, then the returned result will also be an array
139 * with the same dimensions
140 */
141 public static function atan2($xCoordinate, $yCoordinate)
142 {
143 if (is_array($xCoordinate) || is_array($yCoordinate)) {
144 return self::evaluateArrayArguments([self::class, __FUNCTION__], $xCoordinate, $yCoordinate);
145 }
146
147 try {
148 $xCoordinate = Helpers::validateNumericNullBool($xCoordinate);
149 $yCoordinate = Helpers::validateNumericNullBool($yCoordinate);
150 } catch (Exception $e) {
151 return $e->getMessage();
152 }
153
154 if (($xCoordinate == 0) && ($yCoordinate == 0)) {
155 return ExcelError::DIV0();
156 }
157
158 return atan2($yCoordinate, $xCoordinate);
159 }
160 }
161