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 / SumSquares.php

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

149 lines 3.7 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;
4
5 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Exception;
6 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Functions;
7 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
8
9 class SumSquares
10 {
11 /**
12 * SUMSQ.
13 *
14 * SUMSQ returns the sum of the squares of the arguments
15 *
16 * Excel Function:
17 * SUMSQ(value1[,value2[, ...]])
18 *
19 * @param mixed ...$args Data values
20 * @return string|int|float
21 */
22 public static function sumSquare(...$args)
23 {
24 try {
25 $returnValue = 0;
26
27 // Loop through arguments
28 foreach (Functions::flattenArray($args) as $arg) {
29 $arg1 = Helpers::validateNumericNullSubstitution($arg, 0);
30 $returnValue += ($arg1 * $arg1);
31 }
32 } catch (Exception $e) {
33 return $e->getMessage();
34 }
35
36 return $returnValue;
37 }
38
39 /**
40 * @param mixed[] $array1
41 * @param mixed[] $array2
42 */
43 private static function getCount(array $array1, array $array2): int
44 {
45 $count = count($array1);
46 if ($count !== count($array2)) {
47 throw new Exception(ExcelError::NA());
48 }
49
50 return $count;
51 }
52
53 /**
54 * These functions accept only numeric arguments, not even strings which are numeric.
55 * @param mixed $item
56 */
57 private static function numericNotString($item): bool
58 {
59 return is_numeric($item) && !is_string($item);
60 }
61
62 /**
63 * SUMX2MY2.
64 *
65 * @param mixed[] $matrixData1 Matrix #1
66 * @param mixed[] $matrixData2 Matrix #2
67 * @return string|int|float
68 */
69 public static function sumXSquaredMinusYSquared(array $matrixData1, array $matrixData2)
70 {
71 try {
72 /** @var array<float|int> */
73 $array1 = Functions::flattenArray($matrixData1);
74 /** @var array<float|int> */
75 $array2 = Functions::flattenArray($matrixData2);
76 $count = self::getCount($array1, $array2);
77
78 $result = 0;
79 for ($i = 0; $i < $count; ++$i) {
80 if (self::numericNotString($array1[$i]) && self::numericNotString($array2[$i])) {
81 $result += ($array1[$i] * $array1[$i]) - ($array2[$i] * $array2[$i]);
82 }
83 }
84 } catch (Exception $e) {
85 return $e->getMessage();
86 }
87
88 return $result;
89 }
90
91 /**
92 * SUMX2PY2.
93 *
94 * @param mixed[] $matrixData1 Matrix #1
95 * @param mixed[] $matrixData2 Matrix #2
96 * @return string|int|float
97 */
98 public static function sumXSquaredPlusYSquared(array $matrixData1, array $matrixData2)
99 {
100 try {
101 /** @var array<float|int> */
102 $array1 = Functions::flattenArray($matrixData1);
103 /** @var array<float|int> */
104 $array2 = Functions::flattenArray($matrixData2);
105 $count = self::getCount($array1, $array2);
106
107 $result = 0;
108 for ($i = 0; $i < $count; ++$i) {
109 if (self::numericNotString($array1[$i]) && self::numericNotString($array2[$i])) {
110 $result += ($array1[$i] * $array1[$i]) + ($array2[$i] * $array2[$i]);
111 }
112 }
113 } catch (Exception $e) {
114 return $e->getMessage();
115 }
116
117 return $result;
118 }
119
120 /**
121 * SUMXMY2.
122 *
123 * @param mixed[] $matrixData1 Matrix #1
124 * @param mixed[] $matrixData2 Matrix #2
125 * @return string|int|float
126 */
127 public static function sumXMinusYSquared(array $matrixData1, array $matrixData2)
128 {
129 try {
130 /** @var array<float|int> */
131 $array1 = Functions::flattenArray($matrixData1);
132 /** @var array<float|int> */
133 $array2 = Functions::flattenArray($matrixData2);
134 $count = self::getCount($array1, $array2);
135
136 $result = 0;
137 for ($i = 0; $i < $count; ++$i) {
138 if (self::numericNotString($array1[$i]) && self::numericNotString($array2[$i])) {
139 $result += ($array1[$i] - $array2[$i]) * ($array1[$i] - $array2[$i]);
140 }
141 }
142 } catch (Exception $e) {
143 return $e->getMessage();
144 }
145
146 return $result;
147 }
148 }
149