403Webshell
Server IP : 35.80.110.71  /  Your IP : 216.73.216.221
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/scipy/linalg/tests/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/scipy/linalg/tests/test_matmul_toeplitz.py
"""Test functions for linalg.matmul_toeplitz function
"""

import numpy as np
from scipy.linalg import toeplitz, matmul_toeplitz

from pytest import raises as assert_raises
from numpy.testing import assert_allclose


class TestMatmulToeplitz:

    def setup_method(self):
        self.rng = np.random.RandomState(42)
        self.tolerance = 1.5e-13

    def test_real(self):
        cases = []

        n = 1
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n)
        x = self.rng.normal(size=(n, 1))
        cases.append((x, c, r, False))

        n = 2
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n)
        x = self.rng.normal(size=(n, 1))
        cases.append((x, c, r, False))

        n = 101
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n)
        x = self.rng.normal(size=(n, 1))
        cases.append((x, c, r, True))

        n = 1000
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n)
        x = self.rng.normal(size=(n, 1))
        cases.append((x, c, r, False))

        n = 100
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n)
        x = self.rng.normal(size=(n, self.rng.randint(1, 10)))
        cases.append((x, c, r, False))

        n = 100
        c = self.rng.normal(size=(n, 1))
        r = self.rng.normal(size=(n, 1))
        x = self.rng.normal(size=(n, self.rng.randint(1, 10)))
        cases.append((x, c, r, True))

        n = 100
        c = self.rng.normal(size=(n, 1))
        r = None
        x = self.rng.normal(size=(n, self.rng.randint(1, 10)))
        cases.append((x, c, r, True, -1))

        n = 100
        c = self.rng.normal(size=(n, 1))
        r = None
        x = self.rng.normal(size=n)
        cases.append((x, c, r, False))

        n = 101
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n-27)
        x = self.rng.normal(size=(n-27, 1))
        cases.append((x, c, r, True))

        n = 100
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n//4)
        x = self.rng.normal(size=(n//4, self.rng.randint(1, 10)))
        cases.append((x, c, r, True))

        [self.do(*i) for i in cases]

    def test_complex(self):
        n = 127
        c = self.rng.normal(size=(n, 1)) + self.rng.normal(size=(n, 1))*1j
        r = self.rng.normal(size=(n, 1)) + self.rng.normal(size=(n, 1))*1j
        x = self.rng.normal(size=(n, 3)) + self.rng.normal(size=(n, 3))*1j
        self.do(x, c, r, False)

        n = 100
        c = self.rng.normal(size=(n, 1)) + self.rng.normal(size=(n, 1))*1j
        r = self.rng.normal(size=(n//2, 1)) +\
            self.rng.normal(size=(n//2, 1))*1j
        x = self.rng.normal(size=(n//2, 3)) +\
            self.rng.normal(size=(n//2, 3))*1j
        self.do(x, c, r, False)

    def test_exceptions(self):

        n = 100
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=2*n)
        x = self.rng.normal(size=n)
        assert_raises(ValueError, matmul_toeplitz, (c, r), x, True)

        n = 100
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n)
        x = self.rng.normal(size=n-1)
        assert_raises(ValueError, matmul_toeplitz, (c, r), x, True)

        n = 100
        c = self.rng.normal(size=n)
        r = self.rng.normal(size=n//2)
        x = self.rng.normal(size=n//2-1)
        assert_raises(ValueError, matmul_toeplitz, (c, r), x, True)

    # For toeplitz matrices, matmul_toeplitz() should be equivalent to @.
    def do(self, x, c, r=None, check_finite=False, workers=None):
        if r is None:
            actual = matmul_toeplitz(c, x, check_finite, workers)
        else:
            actual = matmul_toeplitz((c, r), x, check_finite)
        desired = toeplitz(c, r) @ x
        assert_allclose(actual, desired,
            rtol=self.tolerance, atol=self.tolerance)

Youez - 2016 - github.com/yon3zu
LinuXploit