示例#1
0
        public void Theta1DoubleTest()
        {
            var data = new[]
            {
                .12478414350, .82872474670, .0000590523,
                -.32903686210, .95465479750, .0000000045,
                -.32701981860, .41588039490, -0.2933109256,
                .08385962364, .79913716820, 0.000176717,
                1.4888543850, .22263345920, 1.4354035775,
            };

            for (int i = 0; i < data.Length; i += 3)
            {
                var t = Theta.θ1(data[i], data[i + 1]);
                var e = data[i + 2];
                Assert.IsTrue(Math.Abs(t - e) < 1e-10);
                var dfn = Theta.θ1DoubleForNome(data[i + 1]);
                t = dfn(data[i]);
                Assert.IsTrue(Math.Abs(t - e) < 1e-10);
            }
        }
示例#2
0
        public void ThetasAtZeroTest()
        {
            Complex th;

            double ex = 0.0;

            th = Theta.θ1(Complex.Zero, (Complex)(.5));
            Assert.AreEqual(0, th.Imaginary);
            Assert.AreEqual(ex, th.Real);
            th = Theta.θ1(Complex.Zero, .5);
            Assert.AreEqual(0, th.Imaginary);
            Assert.AreEqual(ex, th.Real);
            th = Theta.θ1(0, .5);
            Assert.AreEqual(0, th.Imaginary);
            Assert.AreEqual(ex, th.Real);
            th = Theta.θ1ComplexForNome(.5)(0);
            Assert.AreEqual(0, th.Imaginary);
            Assert.AreEqual(ex, th.Real);
            th = Theta.θ1DoubleForNome(.5)(0);
            Assert.AreEqual(0, th.Imaginary);
            Assert.AreEqual(ex, th.Real);

            ex = 2.12893125051303;
            th = Theta.θ2(Complex.Zero, (Complex)(.5));
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ2(Complex.Zero, .5);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ2(0, .5);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ2ComplexForNome(.5)(0);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ2DoubleForNome(.5)(0);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);

            ex = 2.12893682721188;
            th = Theta.θ3(Complex.Zero, (Complex)(.5));
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ3(Complex.Zero, .5);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ3(0, .5);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ3ComplexForNome(.5)(0);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ3DoubleForNome(.5)(0);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);

            ex = 0.121124208002581;
            th = Theta.θ4(Complex.Zero, (Complex)(.5));
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ4(Complex.Zero, .5);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ4(0, .5);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ4ComplexForNome(.5)(0);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
            th = Theta.θ4DoubleForNome(.5)(0);
            Assert.AreEqual(0, th.Imaginary);
            Assert.IsTrue(Math.Abs(ex - th.Real) < 1e-14);
        }