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 / Engineering / Complex.php

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

121 lines 3.8 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\Engineering;
4
5 use TablePress\Complex\Complex as ComplexObject;
6 use TablePress\Complex\Exception as ComplexException;
7 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled;
8 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Exception;
9 use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
10
11 class Complex
12 {
13 use ArrayEnabled;
14
15 /**
16 * COMPLEX.
17 *
18 * Converts real and imaginary coefficients into a complex number of the form x +/- yi or x +/- yj.
19 *
20 * Excel Function:
21 * COMPLEX(realNumber,imaginary[,suffix])
22 *
23 * @param mixed $realNumber the real float coefficient of the complex number
24 * Or can be an array of values
25 * @param mixed $imaginary the imaginary float coefficient of the complex number
26 * Or can be an array of values
27 * @param mixed $suffix The character suffix for the imaginary component of the complex number.
28 * If omitted, the suffix is assumed to be "i".
29 * Or can be an array of values
30 *
31 * @return array<mixed>|string If an array of numbers is passed as an argument, then the returned result will also be an array
32 * with the same dimensions
33 */
34 public static function COMPLEX($realNumber = 0.0, $imaginary = 0.0, $suffix = 'i')
35 {
36 if (is_array($realNumber) || is_array($imaginary) || is_array($suffix)) {
37 return self::evaluateArrayArguments([self::class, __FUNCTION__], $realNumber, $imaginary, $suffix);
38 }
39
40 $realNumber = $realNumber ?? 0.0;
41 $imaginary = $imaginary ?? 0.0;
42 $suffix = $suffix ?? 'i';
43
44 try {
45 $realNumber = EngineeringValidations::validateFloat($realNumber);
46 $imaginary = EngineeringValidations::validateFloat($imaginary);
47 } catch (Exception $e) {
48 return $e->getMessage();
49 }
50
51 if (($suffix === 'i') || ($suffix === 'j') || ($suffix === '')) {
52 $complex = new ComplexObject($realNumber, $imaginary, $suffix);
53
54 return (string) $complex;
55 }
56
57 return ExcelError::VALUE();
58 }
59
60 /**
61 * IMAGINARY.
62 *
63 * Returns the imaginary coefficient of a complex number in x + yi or x + yj text format.
64 *
65 * Excel Function:
66 * IMAGINARY(complexNumber)
67 *
68 * @param array<mixed>|string $complexNumber the complex number for which you want the imaginary
69 * coefficient
70 * Or can be an array of values
71 *
72 * @return array<mixed>|float|string (string if an error)
73 * If an array of numbers is passed as an argument, then the returned result will also be an array
74 * with the same dimensions
75 */
76 public static function IMAGINARY($complexNumber)
77 {
78 if (is_array($complexNumber)) {
79 return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $complexNumber);
80 }
81
82 try {
83 $complex = new ComplexObject($complexNumber);
84 } catch (ComplexException $exception) {
85 return ExcelError::NAN();
86 }
87
88 return $complex->getImaginary();
89 }
90
91 /**
92 * IMREAL.
93 *
94 * Returns the real coefficient of a complex number in x + yi or x + yj text format.
95 *
96 * Excel Function:
97 * IMREAL(complexNumber)
98 *
99 * @param array<mixed>|string $complexNumber the complex number for which you want the real coefficient
100 * Or can be an array of values
101 *
102 * @return array<mixed>|float|string (string if an error)
103 * If an array of numbers is passed as an argument, then the returned result will also be an array
104 * with the same dimensions
105 */
106 public static function IMREAL($complexNumber)
107 {
108 if (is_array($complexNumber)) {
109 return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $complexNumber);
110 }
111
112 try {
113 $complex = new ComplexObject($complexNumber);
114 } catch (ComplexException $exception) {
115 return ExcelError::NAN();
116 }
117
118 return $complex->getReal();
119 }
120 }
121