Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Complex.cs
Go to the documentation of this file.
3
4namespace System.Numerics;
5
7[TypeForwardedFrom("System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
8public readonly struct Complex : IEquatable<Complex>, IFormattable
9{
10 public static readonly Complex Zero = new Complex(0.0, 0.0);
11
12 public static readonly Complex One = new Complex(1.0, 0.0);
13
14 public static readonly Complex ImaginaryOne = new Complex(0.0, 1.0);
15
16 public static readonly Complex NaN = new Complex(double.NaN, double.NaN);
17
18 public static readonly Complex Infinity = new Complex(double.PositiveInfinity, double.PositiveInfinity);
19
20 private static readonly double s_sqrtRescaleThreshold = double.MaxValue / (Math.Sqrt(2.0) + 1.0);
21
22 private static readonly double s_asinOverflowThreshold = Math.Sqrt(double.MaxValue) / 2.0;
23
24 private static readonly double s_log2 = Math.Log(2.0);
25
26 private readonly double m_real;
27
28 private readonly double m_imaginary;
29
30 public double Real => m_real;
31
32 public double Imaginary => m_imaginary;
33
34 public double Magnitude => Abs(this);
35
36 public double Phase => Math.Atan2(m_imaginary, m_real);
37
38 public Complex(double real, double imaginary)
39 {
40 m_real = real;
41 m_imaginary = imaginary;
42 }
43
44 public static Complex FromPolarCoordinates(double magnitude, double phase)
45 {
46 return new Complex(magnitude * Math.Cos(phase), magnitude * Math.Sin(phase));
47 }
48
49 public static Complex Negate(Complex value)
50 {
51 return -value;
52 }
53
54 public static Complex Add(Complex left, Complex right)
55 {
56 return left + right;
57 }
58
59 public static Complex Add(Complex left, double right)
60 {
61 return left + right;
62 }
63
64 public static Complex Add(double left, Complex right)
65 {
66 return left + right;
67 }
68
69 public static Complex Subtract(Complex left, Complex right)
70 {
71 return left - right;
72 }
73
74 public static Complex Subtract(Complex left, double right)
75 {
76 return left - right;
77 }
78
79 public static Complex Subtract(double left, Complex right)
80 {
81 return left - right;
82 }
83
84 public static Complex Multiply(Complex left, Complex right)
85 {
86 return left * right;
87 }
88
89 public static Complex Multiply(Complex left, double right)
90 {
91 return left * right;
92 }
93
94 public static Complex Multiply(double left, Complex right)
95 {
96 return left * right;
97 }
98
99 public static Complex Divide(Complex dividend, Complex divisor)
100 {
101 return dividend / divisor;
102 }
103
104 public static Complex Divide(Complex dividend, double divisor)
105 {
106 return dividend / divisor;
107 }
108
109 public static Complex Divide(double dividend, Complex divisor)
110 {
111 return dividend / divisor;
112 }
113
115 {
116 return new Complex(0.0 - value.m_real, 0.0 - value.m_imaginary);
117 }
118
119 public static Complex operator +(Complex left, Complex right)
120 {
121 return new Complex(left.m_real + right.m_real, left.m_imaginary + right.m_imaginary);
122 }
123
124 public static Complex operator +(Complex left, double right)
125 {
126 return new Complex(left.m_real + right, left.m_imaginary);
127 }
128
129 public static Complex operator +(double left, Complex right)
130 {
131 return new Complex(left + right.m_real, right.m_imaginary);
132 }
133
134 public static Complex operator -(Complex left, Complex right)
135 {
136 return new Complex(left.m_real - right.m_real, left.m_imaginary - right.m_imaginary);
137 }
138
139 public static Complex operator -(Complex left, double right)
140 {
141 return new Complex(left.m_real - right, left.m_imaginary);
142 }
143
144 public static Complex operator -(double left, Complex right)
145 {
146 return new Complex(left - right.m_real, 0.0 - right.m_imaginary);
147 }
148
149 public static Complex operator *(Complex left, Complex right)
150 {
151 double real = left.m_real * right.m_real - left.m_imaginary * right.m_imaginary;
152 double imaginary = left.m_imaginary * right.m_real + left.m_real * right.m_imaginary;
153 return new Complex(real, imaginary);
154 }
155
156 public static Complex operator *(Complex left, double right)
157 {
158 if (!double.IsFinite(left.m_real))
159 {
160 if (!double.IsFinite(left.m_imaginary))
161 {
162 return new Complex(double.NaN, double.NaN);
163 }
164 return new Complex(left.m_real * right, double.NaN);
165 }
166 if (!double.IsFinite(left.m_imaginary))
167 {
168 return new Complex(double.NaN, left.m_imaginary * right);
169 }
170 return new Complex(left.m_real * right, left.m_imaginary * right);
171 }
172
173 public static Complex operator *(double left, Complex right)
174 {
175 if (!double.IsFinite(right.m_real))
176 {
177 if (!double.IsFinite(right.m_imaginary))
178 {
179 return new Complex(double.NaN, double.NaN);
180 }
181 return new Complex(left * right.m_real, double.NaN);
182 }
183 if (!double.IsFinite(right.m_imaginary))
184 {
185 return new Complex(double.NaN, left * right.m_imaginary);
186 }
187 return new Complex(left * right.m_real, left * right.m_imaginary);
188 }
189
190 public static Complex operator /(Complex left, Complex right)
191 {
192 double real = left.m_real;
193 double imaginary = left.m_imaginary;
194 double real2 = right.m_real;
195 double imaginary2 = right.m_imaginary;
196 if (Math.Abs(imaginary2) < Math.Abs(real2))
197 {
198 double num = imaginary2 / real2;
199 return new Complex((real + imaginary * num) / (real2 + imaginary2 * num), (imaginary - real * num) / (real2 + imaginary2 * num));
200 }
201 double num2 = real2 / imaginary2;
202 return new Complex((imaginary + real * num2) / (imaginary2 + real2 * num2), (0.0 - real + imaginary * num2) / (imaginary2 + real2 * num2));
203 }
204
205 public static Complex operator /(Complex left, double right)
206 {
207 if (right == 0.0)
208 {
209 return new Complex(double.NaN, double.NaN);
210 }
211 if (!double.IsFinite(left.m_real))
212 {
213 if (!double.IsFinite(left.m_imaginary))
214 {
215 return new Complex(double.NaN, double.NaN);
216 }
217 return new Complex(left.m_real / right, double.NaN);
218 }
219 if (!double.IsFinite(left.m_imaginary))
220 {
221 return new Complex(double.NaN, left.m_imaginary / right);
222 }
223 return new Complex(left.m_real / right, left.m_imaginary / right);
224 }
225
226 public static Complex operator /(double left, Complex right)
227 {
228 double real = right.m_real;
229 double imaginary = right.m_imaginary;
230 if (Math.Abs(imaginary) < Math.Abs(real))
231 {
232 double num = imaginary / real;
233 return new Complex(left / (real + imaginary * num), (0.0 - left) * num / (real + imaginary * num));
234 }
235 double num2 = real / imaginary;
236 return new Complex(left * num2 / (imaginary + real * num2), (0.0 - left) / (imaginary + real * num2));
237 }
238
239 public static double Abs(Complex value)
240 {
241 return Hypot(value.m_real, value.m_imaginary);
242 }
243
244 private static double Hypot(double a, double b)
245 {
246 a = Math.Abs(a);
247 b = Math.Abs(b);
248 double num;
249 double num2;
250 if (a < b)
251 {
252 num = a;
253 num2 = b;
254 }
255 else
256 {
257 num = b;
258 num2 = a;
259 }
260 if (num == 0.0)
261 {
262 return num2;
263 }
264 if (double.IsPositiveInfinity(num2) && !double.IsNaN(num))
265 {
266 return double.PositiveInfinity;
267 }
268 double num3 = num / num2;
269 return num2 * Math.Sqrt(1.0 + num3 * num3);
270 }
271
272 private static double Log1P(double x)
273 {
274 double num = 1.0 + x;
275 if (num == 1.0)
276 {
277 return x;
278 }
279 if (x < 0.75)
280 {
281 return x * Math.Log(num) / (num - 1.0);
282 }
283 return Math.Log(num);
284 }
285
287 {
288 return new Complex(value.m_real, 0.0 - value.m_imaginary);
289 }
290
292 {
293 if (value.m_real == 0.0 && value.m_imaginary == 0.0)
294 {
295 return Zero;
296 }
297 return One / value;
298 }
299
300 public static bool operator ==(Complex left, Complex right)
301 {
302 if (left.m_real == right.m_real)
303 {
304 return left.m_imaginary == right.m_imaginary;
305 }
306 return false;
307 }
308
309 public static bool operator !=(Complex left, Complex right)
310 {
311 if (left.m_real == right.m_real)
312 {
313 return left.m_imaginary != right.m_imaginary;
314 }
315 return true;
316 }
317
318 public override bool Equals([NotNullWhen(true)] object? obj)
319 {
320 if (!(obj is Complex))
321 {
322 return false;
323 }
324 return Equals((Complex)obj);
325 }
326
327 public bool Equals(Complex value)
328 {
329 if (m_real.Equals(value.m_real))
330 {
331 return m_imaginary.Equals(value.m_imaginary);
332 }
333 return false;
334 }
335
336 public override int GetHashCode()
337 {
338 int num = 99999997;
339 int num2 = m_real.GetHashCode() % num;
340 int hashCode = m_imaginary.GetHashCode();
341 return num2 ^ hashCode;
342 }
343
344 public override string ToString()
345 {
346 return $"({m_real}, {m_imaginary})";
347 }
348
349 public string ToString(string? format)
350 {
351 return ToString(format, null);
352 }
353
354 public string ToString(IFormatProvider? provider)
355 {
356 return ToString(null, provider);
357 }
358
359 public string ToString(string? format, IFormatProvider? provider)
360 {
361 return string.Format(provider, "({0}, {1})", m_real.ToString(format, provider), m_imaginary.ToString(format, provider));
362 }
363
364 public static Complex Sin(Complex value)
365 {
366 double num = Math.Exp(value.m_imaginary);
367 double num2 = 1.0 / num;
368 double num3 = (num - num2) * 0.5;
369 double num4 = (num + num2) * 0.5;
370 return new Complex(Math.Sin(value.m_real) * num4, Math.Cos(value.m_real) * num3);
371 }
372
373 public static Complex Sinh(Complex value)
374 {
375 Complex complex = Sin(new Complex(0.0 - value.m_imaginary, value.m_real));
376 return new Complex(complex.m_imaginary, 0.0 - complex.m_real);
377 }
378
379 public static Complex Asin(Complex value)
380 {
381 Asin_Internal(Math.Abs(value.Real), Math.Abs(value.Imaginary), out var b, out var bPrime, out var v);
382 double num = ((!(bPrime < 0.0)) ? Math.Atan(bPrime) : Math.Asin(b));
383 if (value.Real < 0.0)
384 {
385 num = 0.0 - num;
386 }
387 if (value.Imaginary < 0.0)
388 {
389 v = 0.0 - v;
390 }
391 return new Complex(num, v);
392 }
393
394 public static Complex Cos(Complex value)
395 {
396 double num = Math.Exp(value.m_imaginary);
397 double num2 = 1.0 / num;
398 double num3 = (num - num2) * 0.5;
399 double num4 = (num + num2) * 0.5;
400 return new Complex(Math.Cos(value.m_real) * num4, (0.0 - Math.Sin(value.m_real)) * num3);
401 }
402
403 public static Complex Cosh(Complex value)
404 {
405 return Cos(new Complex(0.0 - value.m_imaginary, value.m_real));
406 }
407
408 public static Complex Acos(Complex value)
409 {
410 Asin_Internal(Math.Abs(value.Real), Math.Abs(value.Imaginary), out var b, out var bPrime, out var v);
411 double num = ((!(bPrime < 0.0)) ? Math.Atan(1.0 / bPrime) : Math.Acos(b));
412 if (value.Real < 0.0)
413 {
414 num = Math.PI - num;
415 }
416 if (value.Imaginary > 0.0)
417 {
418 v = 0.0 - v;
419 }
420 return new Complex(num, v);
421 }
422
423 public static Complex Tan(Complex value)
424 {
425 double num = 2.0 * value.m_real;
426 double num2 = 2.0 * value.m_imaginary;
427 double num3 = Math.Exp(num2);
428 double num4 = 1.0 / num3;
429 double num5 = (num3 + num4) * 0.5;
430 if (Math.Abs(value.m_imaginary) <= 4.0)
431 {
432 double num6 = (num3 - num4) * 0.5;
433 double num7 = Math.Cos(num) + num5;
434 return new Complex(Math.Sin(num) / num7, num6 / num7);
435 }
436 double num8 = 1.0 + Math.Cos(num) / num5;
437 return new Complex(Math.Sin(num) / num5 / num8, Math.Tanh(num2) / num8);
438 }
439
440 public static Complex Tanh(Complex value)
441 {
442 Complex complex = Tan(new Complex(0.0 - value.m_imaginary, value.m_real));
443 return new Complex(complex.m_imaginary, 0.0 - complex.m_real);
444 }
445
446 public static Complex Atan(Complex value)
447 {
448 Complex complex = new Complex(2.0, 0.0);
449 return ImaginaryOne / complex * (Log(One - ImaginaryOne * value) - Log(One + ImaginaryOne * value));
450 }
451
452 private static void Asin_Internal(double x, double y, out double b, out double bPrime, out double v)
453 {
455 {
456 b = -1.0;
457 bPrime = x / y;
458 double num;
459 double num2;
460 if (x < y)
461 {
462 num = x;
463 num2 = y;
464 }
465 else
466 {
467 num = y;
468 num2 = x;
469 }
470 double num3 = num / num2;
471 v = s_log2 + Math.Log(num2) + 0.5 * Log1P(num3 * num3);
472 return;
473 }
474 double num4 = Hypot(x + 1.0, y);
475 double num5 = Hypot(x - 1.0, y);
476 double num6 = (num4 + num5) * 0.5;
477 b = x / num6;
478 if (b > 0.75)
479 {
480 if (x <= 1.0)
481 {
482 double num7 = (y * y / (num4 + (x + 1.0)) + (num5 + (1.0 - x))) * 0.5;
483 bPrime = x / Math.Sqrt((num6 + x) * num7);
484 }
485 else
486 {
487 double num8 = (1.0 / (num4 + (x + 1.0)) + 1.0 / (num5 + (x - 1.0))) * 0.5;
488 bPrime = x / y / Math.Sqrt((num6 + x) * num8);
489 }
490 }
491 else
492 {
493 bPrime = -1.0;
494 }
495 if (num6 < 1.5)
496 {
497 if (x < 1.0)
498 {
499 double num9 = (1.0 / (num4 + (x + 1.0)) + 1.0 / (num5 + (1.0 - x))) * 0.5;
500 double num10 = y * y * num9;
501 v = Log1P(num10 + y * Math.Sqrt(num9 * (num6 + 1.0)));
502 }
503 else
504 {
505 double num11 = (y * y / (num4 + (x + 1.0)) + (num5 + (x - 1.0))) * 0.5;
506 v = Log1P(num11 + Math.Sqrt(num11 * (num6 + 1.0)));
507 }
508 }
509 else
510 {
511 v = Math.Log(num6 + Math.Sqrt((num6 - 1.0) * (num6 + 1.0)));
512 }
513 }
514
515 public static bool IsFinite(Complex value)
516 {
517 if (double.IsFinite(value.m_real))
518 {
519 return double.IsFinite(value.m_imaginary);
520 }
521 return false;
522 }
523
524 public static bool IsInfinity(Complex value)
525 {
526 if (!double.IsInfinity(value.m_real))
527 {
528 return double.IsInfinity(value.m_imaginary);
529 }
530 return true;
531 }
532
533 public static bool IsNaN(Complex value)
534 {
535 if (!IsInfinity(value))
536 {
537 return !IsFinite(value);
538 }
539 return false;
540 }
541
542 public static Complex Log(Complex value)
543 {
544 return new Complex(Math.Log(Abs(value)), Math.Atan2(value.m_imaginary, value.m_real));
545 }
546
547 public static Complex Log(Complex value, double baseValue)
548 {
549 return Log(value) / Log(baseValue);
550 }
551
552 public static Complex Log10(Complex value)
553 {
554 Complex value2 = Log(value);
555 return Scale(value2, 0.43429448190325);
556 }
557
558 public static Complex Exp(Complex value)
559 {
560 double num = Math.Exp(value.m_real);
561 double real = num * Math.Cos(value.m_imaginary);
562 double imaginary = num * Math.Sin(value.m_imaginary);
563 return new Complex(real, imaginary);
564 }
565
566 public static Complex Sqrt(Complex value)
567 {
568 if (value.m_imaginary == 0.0)
569 {
570 if (value.m_real < 0.0)
571 {
572 return new Complex(0.0, Math.Sqrt(0.0 - value.m_real));
573 }
574 return new Complex(Math.Sqrt(value.m_real), 0.0);
575 }
576 bool flag = false;
577 double num = value.m_real;
578 double num2 = value.m_imaginary;
580 {
581 if (double.IsInfinity(value.m_imaginary) && !double.IsNaN(value.m_real))
582 {
583 return new Complex(double.PositiveInfinity, num2);
584 }
585 num *= 0.25;
586 num2 *= 0.25;
587 flag = true;
588 }
589 double num3;
590 double num4;
591 if (num >= 0.0)
592 {
593 num3 = Math.Sqrt((Hypot(num, num2) + num) * 0.5);
594 num4 = num2 / (2.0 * num3);
595 }
596 else
597 {
598 num4 = Math.Sqrt((Hypot(num, num2) - num) * 0.5);
599 if (num2 < 0.0)
600 {
601 num4 = 0.0 - num4;
602 }
603 num3 = num2 / (2.0 * num4);
604 }
605 if (flag)
606 {
607 num3 *= 2.0;
608 num4 *= 2.0;
609 }
610 return new Complex(num3, num4);
611 }
612
613 public static Complex Pow(Complex value, Complex power)
614 {
615 if (power == Zero)
616 {
617 return One;
618 }
619 if (value == Zero)
620 {
621 return Zero;
622 }
623 double real = value.m_real;
624 double imaginary = value.m_imaginary;
625 double real2 = power.m_real;
626 double imaginary2 = power.m_imaginary;
627 double num = Abs(value);
628 double num2 = Math.Atan2(imaginary, real);
629 double num3 = real2 * num2 + imaginary2 * Math.Log(num);
630 double num4 = Math.Pow(num, real2) * Math.Pow(Math.E, (0.0 - imaginary2) * num2);
631 return new Complex(num4 * Math.Cos(num3), num4 * Math.Sin(num3));
632 }
633
634 public static Complex Pow(Complex value, double power)
635 {
636 return Pow(value, new Complex(power, 0.0));
637 }
638
639 private static Complex Scale(Complex value, double factor)
640 {
641 double real = factor * value.m_real;
642 double imaginary = factor * value.m_imaginary;
643 return new Complex(real, imaginary);
644 }
645
646 public static implicit operator Complex(short value)
647 {
648 return new Complex(value, 0.0);
649 }
650
651 public static implicit operator Complex(int value)
652 {
653 return new Complex(value, 0.0);
654 }
655
656 public static implicit operator Complex(long value)
657 {
658 return new Complex(value, 0.0);
659 }
660
661 [CLSCompliant(false)]
662 public static implicit operator Complex(ushort value)
663 {
664 return new Complex((int)value, 0.0);
665 }
666
667 [CLSCompliant(false)]
668 public static implicit operator Complex(uint value)
669 {
670 return new Complex(value, 0.0);
671 }
672
673 [CLSCompliant(false)]
674 public static implicit operator Complex(ulong value)
675 {
676 return new Complex(value, 0.0);
677 }
678
679 [CLSCompliant(false)]
680 public static implicit operator Complex(sbyte value)
681 {
682 return new Complex(value, 0.0);
683 }
684
685 public static implicit operator Complex(byte value)
686 {
687 return new Complex((int)value, 0.0);
688 }
689
690 public static implicit operator Complex(float value)
691 {
692 return new Complex(value, 0.0);
693 }
694
695 public static implicit operator Complex(double value)
696 {
697 return new Complex(value, 0.0);
698 }
699
700 public static explicit operator Complex(BigInteger value)
701 {
702 return new Complex((double)value, 0.0);
703 }
704
705 public static explicit operator Complex(decimal value)
706 {
707 return new Complex((double)value, 0.0);
708 }
709}
static double Atan(double d)
static double Acos(double d)
static double Cos(double d)
static double Exp(double d)
static double Tanh(double value)
static double Atan2(double y, double x)
static double Sqrt(double d)
static double Asin(double d)
static double Pow(double x, double y)
const double E
Definition Math.cs:14
static double Log(double d)
static double Abs(double value)
static double Sin(double a)
static Complex operator-(Complex value)
Definition Complex.cs:114
static Complex Multiply(double left, Complex right)
Definition Complex.cs:94
static Complex Add(Complex left, double right)
Definition Complex.cs:59
static Complex Sinh(Complex value)
Definition Complex.cs:373
string ToString(string? format, IFormatProvider? provider)
Definition Complex.cs:359
static bool IsFinite(Complex value)
Definition Complex.cs:515
readonly double m_imaginary
Definition Complex.cs:28
static bool operator!=(Complex left, Complex right)
Definition Complex.cs:309
static Complex Add(double left, Complex right)
Definition Complex.cs:64
static readonly Complex NaN
Definition Complex.cs:16
static Complex Acos(Complex value)
Definition Complex.cs:408
static Complex Tan(Complex value)
Definition Complex.cs:423
static bool operator==(Complex left, Complex right)
Definition Complex.cs:300
static Complex Tanh(Complex value)
Definition Complex.cs:440
static Complex Subtract(Complex left, Complex right)
Definition Complex.cs:69
static Complex Log(Complex value, double baseValue)
Definition Complex.cs:547
readonly double m_real
Definition Complex.cs:26
static readonly double s_sqrtRescaleThreshold
Definition Complex.cs:20
static Complex Cos(Complex value)
Definition Complex.cs:394
override int GetHashCode()
Definition Complex.cs:336
static Complex Multiply(Complex left, Complex right)
Definition Complex.cs:84
static Complex Reciprocal(Complex value)
Definition Complex.cs:291
static Complex Sqrt(Complex value)
Definition Complex.cs:566
static Complex Log10(Complex value)
Definition Complex.cs:552
static Complex Divide(Complex dividend, double divisor)
Definition Complex.cs:104
static Complex Multiply(Complex left, double right)
Definition Complex.cs:89
static double Log1P(double x)
Definition Complex.cs:272
static Complex Subtract(Complex left, double right)
Definition Complex.cs:74
static Complex operator/(Complex left, Complex right)
Definition Complex.cs:190
static Complex Exp(Complex value)
Definition Complex.cs:558
override bool Equals([NotNullWhen(true)] object? obj)
Definition Complex.cs:318
static Complex operator*(Complex left, Complex right)
Definition Complex.cs:149
string ToString(IFormatProvider? provider)
Definition Complex.cs:354
static Complex Sin(Complex value)
Definition Complex.cs:364
static Complex FromPolarCoordinates(double magnitude, double phase)
Definition Complex.cs:44
static Complex Cosh(Complex value)
Definition Complex.cs:403
Complex(double real, double imaginary)
Definition Complex.cs:38
static readonly Complex Infinity
Definition Complex.cs:18
static Complex Negate(Complex value)
Definition Complex.cs:49
static Complex operator+(Complex left, Complex right)
Definition Complex.cs:119
static Complex Atan(Complex value)
Definition Complex.cs:446
static bool IsNaN(Complex value)
Definition Complex.cs:533
static Complex Scale(Complex value, double factor)
Definition Complex.cs:639
static Complex Add(Complex left, Complex right)
Definition Complex.cs:54
string ToString(string? format)
Definition Complex.cs:349
static Complex Divide(Complex dividend, Complex divisor)
Definition Complex.cs:99
static bool IsInfinity(Complex value)
Definition Complex.cs:524
static void Asin_Internal(double x, double y, out double b, out double bPrime, out double v)
Definition Complex.cs:452
static Complex Asin(Complex value)
Definition Complex.cs:379
static readonly Complex Zero
Definition Complex.cs:10
static readonly double s_asinOverflowThreshold
Definition Complex.cs:22
static Complex Divide(double dividend, Complex divisor)
Definition Complex.cs:109
static double Abs(Complex value)
Definition Complex.cs:239
static Complex Conjugate(Complex value)
Definition Complex.cs:286
static readonly double s_log2
Definition Complex.cs:24
static readonly Complex One
Definition Complex.cs:12
bool Equals(Complex value)
Definition Complex.cs:327
static Complex Subtract(double left, Complex right)
Definition Complex.cs:79
override string ToString()
Definition Complex.cs:344
static Complex Pow(Complex value, Complex power)
Definition Complex.cs:613
static Complex Pow(Complex value, double power)
Definition Complex.cs:634
static readonly Complex ImaginaryOne
Definition Complex.cs:14
static Complex Log(Complex value)
Definition Complex.cs:542
static double Hypot(double a, double b)
Definition Complex.cs:244