예제 #1
0
        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);
        }
예제 #2
0
        /// <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;
            }
        }