private double[] ComplexExpo(double realbase, double indexreal, double indeximg) { TrigonometFunc tri = new TrigonometFunc(); double[] powered = new double[2]; if (realbase == 0) { return(powered); } double Napier = tri.CreateNapierFunc(1); powered[0] = RealExpo(Napier, Log(realbase)) * TrigonometFunc.RadCosine(indeximg * Log(realbase)); powered[1] = RealExpo(Napier, Log(realbase)) * TrigonometFunc.RadSine(indeximg * Log(realbase)); return(powered); }
/// <summary> /// 複素対数関数の主値 /// </summary> /// <param name="Real"></param> /// <param name="Img"></param> /// <param name="LogReal"></param> /// <param name="LogImg"></param> private void LogPrincipal(double Real, double Img, ref double LogReal, ref double LogImg) { TrigonometFunc tri = new TrigonometFunc(); double[] absbuf = new double[2]; absbuf = TrigonometFunc.Sqrt(RealExpo(Real, 2) + RealExpo(Img, 2)); LogReal = absbuf[0]; if (Real > 0 && Img > 0) { LogImg = TrigonometFunc.Arctan(Img / Real); } if (Real < 0 && Img > 0) { LogImg = PI - TrigonometFunc.Arctan((-1) * Img / Real); } if (Real < 0 && Img < 0) { LogImg = PI + TrigonometFunc.Arctan(Img / Real); } if (Real > 0 && Img < 0) { LogImg = 2 * PI - TrigonometFunc.Arctan((-1) * Img / Real); } if (Real > 0 && Img == 0) { LogImg = 0; } if (Real < 0 && Img == 0) { LogImg = PI; } if (Real == 0 && Img > 0) { LogImg = PI / 2; } if (Real == 0 && Img < 0) { LogImg = 3 * PI / 2; } if (Real == 0 && Img == 0) { LogImg = 0; } }