public unsafe void process(Complex *input, float *output, int length)
 {
     for (int i = 0; i < length; i++)
     {
         Complex complex = input[i] * _lastIq.Conjugate();
         float   mod     = complex.Modulus();
         if (mod > 0f)
         {
             complex /= mod;
         }
         float argument = complex.Argument();
         output[i] = argument * _gain;
         _lastIq   = input[i];
     }
 }
        public void TestPolar()
        {
            var z1     = new Complex(1, 1);
            var minus4 = new Complex(-4, 0);
            var z      = Complex.FromPolarCoordinates(16, Math.PI / 4);

            Assert.IsTrue(AreApproximatelyEqual(Math.Pow(z1.Modulus(), 2), 2));
            Assert.IsTrue(AreApproximatelyEqual(Math.PI / 4, z1.Argument()));

            var z2 = Complex.FromPolarCoordinates(Math.Sqrt(2), Math.PI / 4);

            Assert.IsTrue(AreApproximatelyEqual(z1, z2));
            Assert.IsTrue(AreApproximatelyEqual(minus4.Argument(), Math.PI));
            Assert.IsTrue(AreApproximatelyEqual(z.Modulus(), 16.0));
            Assert.IsTrue(AreApproximatelyEqual(z.Argument(), Math.PI / 4));

            var z4 = new Complex(-1, 1);

            Assert.IsTrue(AreApproximatelyEqual(z4.Argument(), 3 * Math.PI / 4.0));

            var z5 = new Complex(-1, -1);

            Assert.IsTrue(AreApproximatelyEqual(z5.Argument(), -3 * Math.PI / 4.0));
        }
        public void TestPolar()
        {
            var z1 = new Complex(1, 1);
            var minus4 = new Complex(-4, 0);
            var z = Complex.FromPolarCoordinates(16, Math.PI / 4);

            Assert.IsTrue(AreApproximatelyEqual(Math.Pow(z1.Modulus(), 2), 2));
            Assert.IsTrue(AreApproximatelyEqual(Math.PI / 4, z1.Argument()));

            var z2 = Complex.FromPolarCoordinates(Math.Sqrt(2), Math.PI / 4);

            Assert.IsTrue(AreApproximatelyEqual(z1, z2));
            Assert.IsTrue(AreApproximatelyEqual(minus4.Argument(), Math.PI));
            Assert.IsTrue(AreApproximatelyEqual(z.Modulus(), 16.0));
            Assert.IsTrue(AreApproximatelyEqual(z.Argument(), Math.PI / 4));

            var z4 = new Complex(-1,1);

            Assert.IsTrue(AreApproximatelyEqual(z4.Argument(), 3 * Math.PI / 4.0));

            var z5 = new Complex(-1, -1);

            Assert.IsTrue(AreApproximatelyEqual(z5.Argument(), -3 * Math.PI / 4.0));
        }
Example #4
0
 public float cargf(Complex v)
 {
     return(v.Argument());
 }