Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Sqrt()

static Complex System.Numerics.Complex.Sqrt ( Complex value)
inlinestatic

Definition at line 566 of file Complex.cs.

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;
579 if (Math.Abs(num) >= s_sqrtRescaleThreshold || Math.Abs(num2) >= s_sqrtRescaleThreshold)
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 }
static readonly double s_sqrtRescaleThreshold
Definition Complex.cs:20
Complex(double real, double imaginary)
Definition Complex.cs:38
static bool IsInfinity(Complex value)
Definition Complex.cs:524
static double Hypot(double a, double b)
Definition Complex.cs:244

References System.Numerics.Complex.Complex(), System.Math.Abs(), System.Numerics.Complex.Hypot(), System.Numerics.Complex.IsInfinity(), System.Numerics.Complex.s_sqrtRescaleThreshold, System.Math.Sqrt(), and System.value.