GetIntegerOrThrowException() public méthode

Gets the integer value or throws an exception if either the imaginary part is not 0 or the real part is not integer.
public GetIntegerOrThrowException ( String argumentName, String functionName ) : int
argumentName String The name of the variable that is requested.
functionName String The name of the function where this is requested.
Résultat int
        public MatrixValue Function(ScalarValue start, ScalarValue end, ScalarValue steps)
        {
            var s = steps.GetIntegerOrThrowException("steps", Name);
            var m = new Mandelbrot();

            return(m.CalculateMatrix(start.Re, end.Re, start.Im, end.Im, s, s));
        }
Exemple #2
0
        public BarPlotValue Function(MatrixValue Y, ScalarValue nbins)
        {
            var nn = nbins.GetIntegerOrThrowException("nbins", Name);
            var bp = new BarPlotValue();

            if (Y.IsVector)
            {
                bp.AddPoints(YMath.Histogram(Y, nn));
            }
            else
            {
                var M = new MatrixValue();

                for (var i = 1; i <= Y.DimensionX; i++)
                {
                    var N = YMath.Histogram(Y.GetColumnVector(i), nn);

                    for (var j = 1; j <= N.Length; j++)
                    {
                        M[j, i] = N[j];
                    }
                }

                bp.AddPoints(M);
            }

            return bp;
        }
Exemple #3
0
        public ArgumentsValue Function(ScalarValue n)
        {
            var nn = n.GetIntegerOrThrowException("n", Name);
            int dim = nn + 1;

            if (dim < 2)
                throw new YAMPArgumentRangeException("n", 1.0);

            var X = new MatrixValue(dim, dim); // x = sin(phi) * cos(theta)
            var Y = new MatrixValue(dim, dim); // y = sin(phi) * sin(theta)
            var Z = new MatrixValue(dim, dim); // z = cos(phi)

            var stheta = Table(0.0, 2.0 * Math.PI, dim, Math.Sin);
            var ctheta = Table(0.0, 2.0 * Math.PI, dim, Math.Cos);
            var sphi = Table(0.0, Math.PI, dim, Math.Sin);
            var cphi = Table(0.0, Math.PI, dim, Math.Cos);

            for (var j = 0; j < dim; j++)
            {
                var col = j + 1;

                for (var i = 0; i < dim; i++)
                {
                    var row = i + 1;

                    X[row, col] = new ScalarValue(sphi[j] * ctheta[i]);
                    Y[row, col] = new ScalarValue(sphi[j] * stheta[i]);
                    Z[row, col] = new ScalarValue(cphi[j]);
                }
            }

            return new ArgumentsValue(X, Y, Z);
        }
Exemple #4
0
        public MatrixValue Function(MatrixValue x, MatrixValue y, ScalarValue n)
        {
            if (x.Length != y.Length)
                throw new YAMPDifferentLengthsException(x.Length, y.Length);

            var nn = n.GetIntegerOrThrowException("n", Name);
            var m = nn + 1;

            if (m < 2)
                throw new YAMPArgumentRangeException("n", 0.0);

            var M = new MatrixValue(x.Length, m);
            var b = new MatrixValue(x.Length, 1);

            for (var j = 1; j <= M.Rows; j++)
            {
                var el = ScalarValue.One;
                var z = x[j];

                for (var i = 1; i <= M.Columns; i++)
                {
                    M[j, i] = el;
                    el *= z;
                }

                b[j, 1] = y[j];
            }

            var qr = QRDecomposition.Create(M);
            return qr.Solve(b);
        }
 public MatrixValue Function(ScalarValue x0, ScalarValue xn, ScalarValue y0, ScalarValue yn, ScalarValue xsteps, ScalarValue ysteps)
 {
     var xs = xsteps.GetIntegerOrThrowException("xsteps", Name);
     var ys = ysteps.GetIntegerOrThrowException("ysteps", Name);
     var m = new Mandelbrot();
     return m.CalculateMatrix(x0.Re, xn.Re, y0.Re, yn.Re, xs, ys);
 }
Exemple #6
0
        public ArgumentsValue Function(ScalarValue n)
        {
            var nn  = n.GetIntegerOrThrowException("n", Name);
            int dim = nn + 1;

            if (dim < 2)
            {
                throw new YAMPArgumentRangeException("n", 1.0);
            }

            var X = new MatrixValue(dim, dim); // x = sin(phi) * cos(theta)
            var Y = new MatrixValue(dim, dim); // y = sin(phi) * sin(theta)
            var Z = new MatrixValue(dim, dim); // z = cos(phi)

            var stheta = Table(0.0, 2.0 * Math.PI, dim, Math.Sin);
            var ctheta = Table(0.0, 2.0 * Math.PI, dim, Math.Cos);
            var sphi   = Table(0.0, Math.PI, dim, Math.Sin);
            var cphi   = Table(0.0, Math.PI, dim, Math.Cos);

            for (var j = 0; j < dim; j++)
            {
                var col = j + 1;

                for (var i = 0; i < dim; i++)
                {
                    var row = i + 1;

                    X[row, col] = new ScalarValue(sphi[j] * ctheta[i]);
                    Y[row, col] = new ScalarValue(sphi[j] * stheta[i]);
                    Z[row, col] = new ScalarValue(cphi[j]);
                }
            }

            return(new ArgumentsValue(X, Y, Z));
        }
Exemple #7
0
        public BarPlotValue Function(MatrixValue Y, ScalarValue nbins)
        {
            var nn = nbins.GetIntegerOrThrowException("nbins", Name);
            var bp = new BarPlotValue();

            if (Y.IsVector)
            {
                bp.AddPoints(YMath.Histogram(Y, nn));
            }
            else
            {
                var M = new MatrixValue();

                for (var i = 1; i <= Y.DimensionX; i++)
                {
                    var N = YMath.Histogram(Y.GetColumnVector(i), nn);

                    for (var j = 1; j <= N.Length; j++)
                    {
                        M[j, i] = N[j];
                    }
                }

                bp.AddPoints(M);
            }

            return(bp);
        }
        public void Function(ScalarValue digits)
        {
            var n = digits.GetIntegerOrThrowException("digits", Name);

            Context.Precision = n;
            Parser.RaiseNotification(Context, new NotificationEventArgs(NotificationType.Information, "Output precision changed to " + Context.Precision + " digits."));
        }
Exemple #9
0
        public MatrixValue Function(ScalarValue n, ScalarValue m)
        {
            var nn = n.GetIntegerOrThrowException("n", Name);
            var nm = m.GetIntegerOrThrowException("m", Name);

            return(MatrixValue.One(nn, nm));
        }
        public MatrixValue Function(ScalarValue x0, ScalarValue xn, ScalarValue y0, ScalarValue yn, ScalarValue xsteps, ScalarValue ysteps)
        {
            var xs = xsteps.GetIntegerOrThrowException("xsteps", Name);
            var ys = ysteps.GetIntegerOrThrowException("ysteps", Name);
            var m  = new Mandelbrot();

            return(m.CalculateMatrix(x0.Re, xn.Re, y0.Re, yn.Re, xs, ys));
        }
Exemple #11
0
        public ScalarValue Function(ScalarValue n, ScalarValue z)
        {
            var nn = n.GetIntegerOrThrowException("n", Name);

            if (nn < 0)
                throw new Exception("Hermite polynomial of order n < 0 does not make sense.");

            return HermitePolynomial(nn, z);
        }
        public ContourPlotValue Function(MatrixValue X, MatrixValue Y, MatrixValue Z, ScalarValue n)
        {
            var nn   = n.GetIntegerOrThrowException("n", Name);
            var plot = new ContourPlotValue();

            plot.AddPoints(X, Y, Z);
            plot.SetLevels(nn);
            return(plot);
        }
Exemple #13
0
        public ScalarValue Function(ScalarValue n, ScalarValue alpha, ScalarValue beta, ScalarValue z)
        {
            var nn = n.GetIntegerOrThrowException("n", Name);

            if (nn < 0)
                throw new Exception("Jacobi polynomial of order n < 0 does not make sense.");

            return JacobiPolynomial(nn, alpha, beta, z);
        }
Exemple #14
0
        public ScalarValue Function(ScalarValue l, ScalarValue m, ScalarValue theta, ScalarValue phi)
        {
            var nn = l.GetIntegerOrThrowException("l", Name);

            if (nn < 0)
                throw new Exception("Spherical harmonics of order l < 0 does not make sense.");

            var nm = m.GetIntegerOrThrowException("m", Name);
            return Ylm(nn, nm, theta.Re, phi.Re);
        }
        public ScalarValue Function(ScalarValue n, ScalarValue x)
        {
            var nn = n.GetIntegerOrThrowException("n", Name);

            if (nn < 0)
                throw new Exception("Chebyshev polynomial of order n < 0 does not make sense.");

            var f = GetPolynom(nn);
            return new ScalarValue(f(x.Re));
        }
        public SubPlotValue Function(ScalarValue rows, ScalarValue columns)
        {
            var r       = rows.GetIntegerOrThrowException("rows", Name);
            var c       = columns.GetIntegerOrThrowException("columns", Name);
            var subplot = new SubPlotValue();

            subplot.Rows    = r;
            subplot.Columns = c;
            return(subplot);
        }
        public MatrixValue Function(ScalarValue s, MatrixValue Z)
        {
            var n = s.GetIntegerOrThrowException("s", Name);
            var M = new MatrixValue(Z.DimensionY, Z.DimensionX);

            for (var j = 1; j <= Z.DimensionY; j++)
                for (var i = 1; i <= Z.DimensionX; i++)
                    M[j, i] = GetValue(n, Z[j, i]);

            return M;
        }
Exemple #18
0
        public MatrixValue Function(ScalarValue from, ScalarValue to, ScalarValue count)
        {
            var c = count.GetIntegerOrThrowException("count", Name);

            if (c < 2)
            {
                throw new ArgumentException("linspace");
            }

            var step = (to.Re - from.Re) / (c - 1);
            return new RangeValue(from.Re, to.Re, step);
        }
Exemple #19
0
        public void Function(ScalarValue timeout)
        {
            var n = timeout.GetIntegerOrThrowException("timeout", Name);
            var start = Environment.TickCount;

            using (var blocking = new ManualResetEvent(false))
            {
                blocking.WaitOne(n);
            }

            var time = Environment.TickCount - start;
            Context.RaiseNotification(new NotificationEventArgs(NotificationType.Information, "Slept " + time + "ms."));
        }
        public MatrixValue Function(ScalarValue from, ScalarValue to, ScalarValue count)
        {
            var c = count.GetIntegerOrThrowException("count", Name);

            if (c < 2)
            {
                throw new ArgumentException("linspace");
            }

            var step = (to.Re - from.Re) / (c - 1);

            return(new RangeValue(from.Re, to.Re, step));
        }
Exemple #21
0
        public MatrixValue Function(ScalarValue start, ScalarValue end, ScalarValue count, ScalarValue basis)
        {
            var c = count.GetIntegerOrThrowException("count", Name);

            if (c < 2)
            {
                throw new ArgumentException("logspace");
            }

            var s = (end.Re - start.Re) / (c - 1);
            var r = new RangeValue(start.Re, end.Re, s);
            return MatrixValue.PowSM(basis, r);
        }
        public MatrixValue Function(ScalarValue start, ScalarValue end, ScalarValue count, ScalarValue basis)
        {
            var c = count.GetIntegerOrThrowException("count", Name);

            if (c < 2)
            {
                throw new ArgumentException("logspace");
            }

            var s = (end.Re - start.Re) / (c - 1);
            var r = new RangeValue(start.Re, end.Re, s);

            return(MatrixValue.PowSM(basis, r));
        }
Exemple #23
0
        public void Function(ScalarValue timeout)
        {
            var n     = timeout.GetIntegerOrThrowException("timeout", Name);
            var start = Environment.TickCount;

            using (var blocking = new ManualResetEvent(false))
            {
                blocking.WaitOne(n);
            }

            var time = Environment.TickCount - start;

            Parser.RaiseNotification(Context, new NotificationEventArgs(NotificationType.Information, "Slept " + time + "ms."));
        }
Exemple #24
0
        public MatrixValue Function(ScalarValue n, MatrixValue Z)
        {
            var nn = n.GetIntegerOrThrowException("n", Name);

            if (nn < 0)
                throw new Exception("Hermite polynomial of order n < 0 does not make sense.");

            var M = new MatrixValue(Z.DimensionY, Z.DimensionX);

            for (var i = 1; i <= Z.Length; i++)
                M[i] = HermitePolynomial(nn, Z[i]);

            return M;
        }
Exemple #25
0
        public MatrixValue Function(ScalarValue order, MatrixValue argument)
        {
            var n = order.GetIntegerOrThrowException("order", Name);
            var M = new MatrixValue(argument.DimensionY, argument.DimensionX);

            for (var j = 1; j <= argument.DimensionY; j++)
            {
                for (var i = 1; i <= argument.DimensionX; i++)
                {
                    M[j, i] = GetValue(n, argument[j, i].Re);
                }
            }

            return M;
        }
        public MatrixValue Function(ScalarValue n, MatrixValue X)
        {
            var nn = n.GetIntegerOrThrowException("n", Name);

            if (nn < 0)
                throw new Exception("Chebyshev polynomial of order n < 0 does not make sense.");

            var M = new MatrixValue(X.DimensionY, X.DimensionX);
            var f = GetPolynom(nn);

            for (var i = 1; i <= X.Length; i++)
                M[i] = new ScalarValue(f(X[i].Re));

            return M;
        }
Exemple #27
0
        public MatrixValue Function(ScalarValue order, MatrixValue argument)
        {
            var n = order.GetIntegerOrThrowException("order", Name);
            var M = new MatrixValue(argument.DimensionY, argument.DimensionX);

            for (var j = 1; j <= argument.DimensionY; j++)
            {
                for (var i = 1; i <= argument.DimensionX; i++)
                {
                    M[j, i] = GetValue(n, argument[j, i].Re);
                }
            }

            return(M);
        }
Exemple #28
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue mu, ScalarValue b)
        {
            var n = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(n, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= n; j++)
                {
                    m[j, i] = new ScalarValue(Laplace(mu.Re, b.Re));
                }
            }

            return m;
        }
Exemple #29
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue lambda)
        {
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Exponential(lambda.Re));
                }
            }

            return m;
        }
Exemple #30
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue theta, ScalarValue k)
        {
            var n = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(n, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= n; j++)
                {
                    m[j, i] = new ScalarValue(Gamma(theta.Re, k.Re));
                }
            }

            return(m);
        }
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue mu, ScalarValue sigma)
        {
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Gaussian(sigma.Re, mu.Re));
                }
            }

            return(m);
        }
Exemple #32
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols)
        {
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Distribution.NextDouble());
                }
            }

            return m;
        }
Exemple #33
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue mu, ScalarValue sigma)
        {
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Gaussian(sigma.Re, mu.Re));
                }
            }

            return m;
        }
Exemple #34
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols)
        {
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Distribution.NextDouble());
                }
            }

            return(m);
        }
Exemple #35
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue theta, ScalarValue k)
        {
            var n = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(n, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= n; j++)
                {
                    m[j, i] = new ScalarValue(Gamma(theta.Re, k.Re));
                }
            }

            return m;
        }
Exemple #36
0
        public MatrixValue Function(ScalarValue l, ScalarValue m, MatrixValue theta, MatrixValue phi)
        {
            var nn = l.GetIntegerOrThrowException("l", Name);

            if (nn < 0)
                throw new Exception("Spherical harmonics of order l < 0 does not make sense.");

            var M = new MatrixValue(theta.Length, phi.Length);
            var nm = m.GetIntegerOrThrowException("m", Name);

            for (var i = 1; i <= phi.Length; i++)
                for (var j = 1; j <= theta.Length; j++)
                    M[j, i] = Ylm(nn, nm, theta[j].Re, phi[i].Re);

            return M;
        }
Exemple #37
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue lambda)
        {
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Exponential(lambda.Re));
                }
            }

            return(m);
        }
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue mu, ScalarValue b)
        {
            var n = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(n, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= n; j++)
                {
                    m[j, i] = new ScalarValue(Laplace(mu.Re, b.Re));
                }
            }

            return(m);
        }
Exemple #39
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue p, ScalarValue n)
        {
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var nn = n.GetIntegerOrThrowException("n", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Binomial(p.Re, nn));
                }
            }

            return m;
        }
Exemple #40
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue p, ScalarValue n)
        {
            var k  = rows.GetIntegerOrThrowException("rows", Name);
            var l  = cols.GetIntegerOrThrowException("cols", Name);
            var nn = n.GetIntegerOrThrowException("n", Name);
            var m  = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Binomial(p.Re, nn));
                }
            }

            return(m);
        }
Exemple #41
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue min, ScalarValue max)
        {
            Distribution.Alpha = min.GetIntegerOrThrowException("min", Name);
            Distribution.Beta = max.GetIntegerOrThrowException("max", Name);
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Distribution.Next());
                }
            }

            return m;
        }
Exemple #42
0
        public MatrixValue Function(ScalarValue rows, ScalarValue cols, ScalarValue min, ScalarValue max)
        {
            ran.Alpha = min.GetIntegerOrThrowException("min", Name);
            ran.Beta  = max.GetIntegerOrThrowException("max", Name);
            var k = rows.GetIntegerOrThrowException("rows", Name);
            var l = cols.GetIntegerOrThrowException("cols", Name);
            var m = new MatrixValue(k, l);

            for (var i = 1; i <= l; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(ran.Next());
                }
            }

            return(m);
        }
Exemple #43
0
        public void Function(PlotValue plot, ScalarValue series, StringValue property, Value newValue)
        {
            if (plot.Count == 0)
            {
                throw new YAMPNoSeriesAvailableException("The given plot contains no series.");
            }

            var n = series.GetIntegerOrThrowException("series", Name);

            if (n < 1 || n > plot.Count)
            {
                throw new YAMPArgumentRangeException("series", 1, plot.Count);
            }

            AlterSeriesProperty(plot, n - 1, property.Value, newValue);
            plot.UpdateProperties();
            Context.RaiseNotification(new NotificationEventArgs(NotificationType.Success, "Series " + n + " changed."));
        }
Exemple #44
0
        public ScalarValue Function(ScalarValue action)
        {
            var n = action.GetIntegerOrThrowException("action", Name);

            switch (n)
            {
                case -1:
                    Reset();
                    break;
                case 0:
                    Stop();
                    break;
                case 1:
                    Start();
                    break;
            }

            return Function();
        }
Exemple #45
0
        public MatrixValue Function(MatrixValue M, ScalarValue nLag)
        {
            if (M.Length <= 1)
            {
                return(new MatrixValue());
            }

            var nOffset = nLag.GetIntegerOrThrowException("nLag", Name);

            if (nOffset < 0)
            {
                nOffset = 0;
            }
            else if (nOffset >= M.Length)
            {
                nOffset = M.Length - 1;
            }

            return(YMath.CrossCorrelation(M, M, nOffset));
        }
Exemple #46
0
        public MatrixValue Function(MatrixValue M, ScalarValue nLag)
        {
            if (M.Length > 1)
            {
                var nOffset = nLag.GetIntegerOrThrowException("nLag", Name);

                if (nOffset < 0)
                {
                    nOffset = 0;
                }
                else if (nOffset >= M.Length)
                {
                    nOffset = M.Length - 1;
                }

                return YMath.CrossCorrelation(M, M, nOffset);
            }

            return new MatrixValue();
        }
Exemple #47
0
        public MatrixValue Function(MatrixValue M, MatrixValue N, ScalarValue lag)
        {
            if (M.Length != N.Length || M.Length <= 1)
            {
                return(new MatrixValue());
            }

            int nOffset = lag.GetIntegerOrThrowException("lag", Name);

            if (nOffset < 0)
            {
                nOffset = 0;
            }
            else if (nOffset >= M.Length)
            {
                nOffset = M.Length - 1;
            }

            return(YMath.CrossCorrelation(M, N, nOffset));
        }
Exemple #48
0
        public MatrixValue Function(ScalarValue dim)
        {
            var k = dim.GetIntegerOrThrowException("dim", Name);

            if (k < 1)
            {
                k = 1;
            }

            var m = new MatrixValue(k, k);

            for (var i = 1; i <= k; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Distribution.NextDouble());
                }
            }

            return(m);
        }
        public ScalarValue Function(ScalarValue action)
        {
            var n = action.GetIntegerOrThrowException("action", Name);

            switch (n)
            {
            case -1:
                Reset();
                break;

            case 0:
                Stop();
                break;

            case 1:
                Start();
                break;
            }

            return(Function());
        }
Exemple #50
0
        public MatrixValue Function(ScalarValue dim)
        {
            var k = dim.GetIntegerOrThrowException("dim", Name);

            if (k < 1)
            {
                k = 1;
            }

            var m = new MatrixValue(k, k);

            for (var i = 1; i <= k; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Distribution.NextDouble());
                }
            }

            return m;
        }
        public MatrixValue Function(MatrixValue Y, ScalarValue nbins)
        {
            var nn = nbins.GetIntegerOrThrowException("nbins", Name);

            if (!Y.IsVector)
            {
                var M = new MatrixValue();

                for (var i = 1; i <= Y.DimensionX; i++)
                {
                    var N = YMath.Histogram(Y.GetColumnVector(i), nn);

                    for (var j = 1; j <= N.Length; j++)
                    {
                        M[j, i] = N[j];
                    }
                }

                return M;
            }

            return YMath.Histogram(Y, nn);
        }
Exemple #52
0
        public MatrixValue Function(ScalarValue dim, ScalarValue min, ScalarValue max)
        {
            Distribution.Alpha = min.GetIntegerOrThrowException("min", Name);
            Distribution.Beta = max.GetIntegerOrThrowException("max", Name);
            var k = dim.GetIntegerOrThrowException("dim", Name);

            if (k < 1)
            {
                k = 1;
            }

            var m = new MatrixValue(k, k);

            for (var i = 1; i <= k; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(Distribution.Next());
                }
            }

            return m;
        }
Exemple #53
0
        public MatrixValue Function(ScalarValue dim, ScalarValue min, ScalarValue max)
        {
            ran.Alpha = min.GetIntegerOrThrowException("min", Name);
            ran.Beta  = max.GetIntegerOrThrowException("max", Name);
            var k = dim.GetIntegerOrThrowException("dim", Name);

            if (k < 1)
            {
                k = 1;
            }

            var m = new MatrixValue(k, k);

            for (var i = 1; i <= k; i++)
            {
                for (var j = 1; j <= k; j++)
                {
                    m[j, i] = new ScalarValue(ran.Next());
                }
            }

            return(m);
        }
        public MatrixValue Function(MatrixValue x, MatrixValue y, ScalarValue n)
        {
            if (x.Length != y.Length)
            {
                throw new YAMPDifferentLengthsException(x.Length, y.Length);
            }

            var nn = n.GetIntegerOrThrowException("n", Name);
            var m  = nn + 1;

            if (m < 2)
            {
                throw new YAMPArgumentRangeException("n", 0.0);
            }

            var M = new MatrixValue(x.Length, m);
            var b = new MatrixValue(x.Length, 1);

            for (var j = 1; j <= M.Rows; j++)
            {
                var el = ScalarValue.One;
                var z  = x[j];

                for (var i = 1; i <= M.Columns; i++)
                {
                    M[j, i] = el;
                    el     *= z;
                }

                b[j, 1] = y[j];
            }

            var qr = QRDecomposition.Create(M);

            return(qr.Solve(b));
        }
Exemple #55
0
 public MatrixValue Function(MatrixValue M, ScalarValue n, ScalarValue sigma)
 {
     return GetIndices(M, n.GetIntegerOrThrowException("n", Name), sigma.GetIntegerOrThrowException("sigma", Name));
 }
Exemple #56
0
 public ScalarValue Function(ScalarValue s, ScalarValue z)
 {
     var n = s.GetIntegerOrThrowException("s", Name);
     return Polylog(n, z);
 }
Exemple #57
0
 public ScalarValue Function(ScalarValue min, ScalarValue max)
 {
     ran.Alpha = min.GetIntegerOrThrowException("min", Name);
     ran.Beta  = max.GetIntegerOrThrowException("max", Name);
     return(new ScalarValue(ran.Next()));
 }
Exemple #58
0
        public MatrixValue Function(MatrixValue cfgs, ScalarValue n, FunctionValue f, ArgumentsValue P)
        {
            var numberOfBlocks = n.GetIntegerOrThrowException("n", Name);
            var nConfigs       = cfgs.DimensionY;
            var nData          = cfgs.DimensionX;

            if (numberOfBlocks > nConfigs)
            {
                throw new YAMPException("Jackknife: The number of measurements n is greater than the number of configurations cfgs!");
            }

            if (numberOfBlocks <= 1)
            {
                throw new YAMPException("Jackknife: The number of measurements n <= 1!");
            }

            var parameters = new ArgumentsValue(cfgs);

            foreach (var m in P.Values)
            {
                parameters.Insert(m);
            }

            var temp = f.Perform(Context, parameters);
            int nResult;//dimension of the result

            if (temp is ScalarValue)
            {
                nResult = 1;
            }
            else if (temp is MatrixValue)
            {
                nResult = ((MatrixValue)temp).Length;
            }
            else
            {
                throw new YAMPException("Jackknife: Observable f has to return either a scalar or a matrix!");
            }

            var JackknifeObservable = new MatrixValue(numberOfBlocks, nResult);
            var BlockSize           = nConfigs / numberOfBlocks;
            var nConfigsBlocked     = BlockSize * numberOfBlocks;
            var residualConfigs     = nConfigs - nConfigsBlocked;

            for (var i = 1; i <= numberOfBlocks; i++)
            {
                if (i <= numberOfBlocks - residualConfigs)
                {
                    //the first (NumberOfBlocks - residualConfigs) blocks discard (BlockSize) elements ...
                    var JackknifeConfigs = new MatrixValue(nConfigs - BlockSize, nData);
                    var j = 1;

                    for (; j <= (i - 1) * BlockSize; j++)
                    {
                        for (var k = 1; k <= nData; k++)
                        {
                            JackknifeConfigs[j, k] = cfgs[j, k];
                        }
                    }

                    j += BlockSize;

                    for (; j <= nConfigs; j++)
                    {
                        for (var k = 1; k <= nData; k++)
                        {
                            JackknifeConfigs[j - BlockSize, k] = cfgs[j, k];
                        }
                    }

                    parameters = new ArgumentsValue(JackknifeConfigs);
                }
                else
                {
                    //... whereas the residual (residualConfigs) blocks discard (BlockSize + 1) elements
                    var JackknifeConfigs = new MatrixValue(nConfigs - BlockSize - 1, nData);
                    var j = 1;

                    for (; j <= nConfigs - (numberOfBlocks - (i - 1)) * (BlockSize + 1); j++)
                    {
                        for (var k = 1; k <= nData; k++)
                        {
                            JackknifeConfigs[j, k] = cfgs[j, k];
                        }
                    }

                    j += BlockSize + 1;

                    for (; j <= nConfigs; j++)
                    {
                        for (var k = 1; k <= nData; k++)
                        {
                            JackknifeConfigs[j - BlockSize - 1, k] = cfgs[j, k];
                        }
                    }

                    parameters = new ArgumentsValue(JackknifeConfigs);
                }

                foreach (var m in P.Values)
                {
                    parameters.Insert(m);
                }

                temp = f.Perform(Context, parameters);

                if (temp is ScalarValue)
                {
                    JackknifeObservable[i] = (ScalarValue)temp;
                }
                else
                {
                    var T = (MatrixValue)temp;

                    for (var k = 1; k <= nResult; k++)
                    {
                        JackknifeObservable[i, k] = T[k];
                    }
                }
            }

            temp = YMath.Average(JackknifeObservable);

            for (var i = 1; i <= numberOfBlocks; i++)
            {
                if (temp is ScalarValue)
                {
                    JackknifeObservable[i] -= temp as ScalarValue;
                    JackknifeObservable[i] *= JackknifeObservable[i];
                }
                else
                {
                    var m = (MatrixValue)temp;

                    for (var k = 1; k <= nResult; k++)
                    {
                        JackknifeObservable[i, k] -= m[k];
                        JackknifeObservable[i, k] *= JackknifeObservable[i, k];
                    }
                }
            }

            var error = YMath.Average(JackknifeObservable);
            var scale = numberOfBlocks - 1.0;

            if (error is ScalarValue)
            {
                error = ((ScalarValue)error) * scale;
            }
            else
            {
                var e = (MatrixValue)error;

                for (var i = 1; i <= e.DimensionY; i++)
                {
                    for (var j = 1; j <= e.DimensionX; j++)
                    {
                        e[i, j] *= scale;
                    }
                }
            }

            var sqrt = new SqrtFunction();

            error = sqrt.Perform(error);
            var result = new MatrixValue(2, nResult);

            if (temp is ScalarValue)
            {
                result[1] = (ScalarValue)temp;
                result[2] = (ScalarValue)error;
            }
            else
            {
                var T = (MatrixValue)temp;
                var E = (MatrixValue)error;

                for (var k = 1; k <= nResult; k++)
                {
                    result[1, k] = T[k];
                    result[2, k] = E[k];
                }
            }

            return(result);
        }
        public MatrixValue Function(MatrixValue cfgs, ScalarValue n, FunctionValue f, ArgumentsValue P)
        {
            var numberOfBootstrapSamples = n.GetIntegerOrThrowException("n", Name);
            var nConfigs     = cfgs.DimensionY;
            var nData        = cfgs.DimensionX;
            var distribution = new DiscreteUniformDistribution(Rng)
            {
                Beta  = nConfigs,
                Alpha = 1
            };

            if (numberOfBootstrapSamples <= 1)
            {
                throw new YAMPException("Bootstrap: The number of bootstrap samples n is smaller or equal to 1!");
            }

            var parameters = new ArgumentsValue(cfgs);

            foreach (var m in P.Values)
            {
                parameters.Insert(m);
            }

            var temp    = f.Perform(Context, parameters);
            var nResult = 0;//dimension of the result

            if (temp is ScalarValue)
            {
                nResult = 1;
            }
            else if (temp is MatrixValue)
            {
                nResult = ((MatrixValue)temp).Length;
            }
            else
            {
                throw new YAMPException("Bootstrap: The observable f has to return either a scalar or a matrix!");
            }

            var BootstrapObservable = new MatrixValue(numberOfBootstrapSamples, nResult);

            for (var i = 1; i <= numberOfBootstrapSamples; i++)
            {
                var BootstrapConfigs = new MatrixValue(nConfigs, nData);

                for (var j = 1; j <= nConfigs; j++)
                {
                    var idx = distribution.Next();

                    for (var k = 1; k <= nData; k++)
                    {
                        BootstrapConfigs[j, k] = cfgs[idx, k];
                    }
                }

                parameters = new ArgumentsValue(BootstrapConfigs);

                foreach (var m in P.Values)
                {
                    parameters.Insert(m);
                }

                temp = f.Perform(Context, parameters);

                if (temp is ScalarValue)
                {
                    BootstrapObservable[i] = (ScalarValue)temp;
                }
                else
                {
                    var m = (MatrixValue)temp;

                    for (var k = 1; k <= nResult; k++)
                    {
                        BootstrapObservable[i, k] = m[k];
                    }
                }
            }

            temp = YMath.Average(BootstrapObservable);

            for (var i = 1; i <= numberOfBootstrapSamples; i++)
            {
                if (temp is ScalarValue)
                {
                    BootstrapObservable[i] -= temp as ScalarValue;
                    BootstrapObservable[i] *= BootstrapObservable[i];
                }
                else
                {
                    var T = temp as MatrixValue;

                    for (var k = 1; k <= nResult; k++)
                    {
                        BootstrapObservable[i, k] -= T[k];
                        BootstrapObservable[i, k] *= BootstrapObservable[i, k];
                    }
                }
            }

            var error = YMath.Average(BootstrapObservable);
            var sqrt  = new SqrtFunction();

            error = sqrt.Perform(error);
            var result = new MatrixValue(2, nResult);

            if (temp is ScalarValue)
            {
                result[1] = (ScalarValue)temp;
                result[2] = (ScalarValue)error;
            }
            else
            {
                var T = (MatrixValue)temp;
                var E = (MatrixValue)error;

                for (var k = 1; k <= nResult; k++)
                {
                    result[1, k] = T[k];
                    result[2, k] = E[k];
                }
            }

            return(result);
        }
Exemple #60
0
        public MatrixValue Function(ScalarValue n)
        {
            var d = n.GetIntegerOrThrowException("n", Name);

            return(Generate(d, d));
        }