├── .github └── workflows │ └── workflow.yml ├── .gitignore ├── .pre-commit-config.yaml ├── README.md ├── poetry.lock ├── pycla ├── __init__.py ├── constants.py ├── helpers.py ├── plotting.py ├── pycla.py ├── simplex.py └── validation.py ├── pyproject.toml ├── requirements.txt └── test ├── __init__.py ├── conftest.py ├── data_test ├── CLA_test_many_constraints_A_in.csv ├── CLA_test_many_constraints_C.csv ├── CLA_test_many_constraints_SCIPY.csv ├── CLA_test_many_constraints_TWO_STAGE_SIMPLEX.csv ├── CLA_test_many_constraints_b_in.csv ├── CLA_test_many_constraints_mu.csv ├── CLA_test_many_constraints_ub.csv ├── CLA_test_markowitz_et_al.csv ├── CLA_test_markowitz_et_al_data.csv ├── CLA_test_markowitz_et_al_semi.csv ├── CLA_test_markowitz_todd.csv ├── CLA_test_markowitz_todd_C.csv ├── CLA_test_random_10.csv ├── CLA_test_random_100.csv ├── CLA_test_random_20.csv ├── CLA_test_random_30.csv ├── CLA_test_random_40.csv ├── CLA_test_random_50.csv ├── CLA_test_random_60.csv ├── CLA_test_random_70.csv ├── CLA_test_random_80.csv ├── CLA_test_random_90.csv └── CLA_test_sharpe.csv ├── test_CLA.py ├── test_SemiPyCLA.py ├── test_plotting.py └── test_simplex.py /.github/workflows/workflow.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | on: 3 | pull_request: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | cleanup-run: 10 | name: cleanup previous run 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Abort previous action run (branch != main) 14 | if: endsWith(github.ref, 'main') == false 15 | uses: rokroskar/workflow-run-cleanup-action@v0.2.2 16 | env: 17 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 18 | 19 | pre-commit: 20 | runs-on: ubuntu-latest 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Set up Python 3.9 24 | uses: actions/setup-python@v2 25 | with: 26 | python-version: '3.9' 27 | - name: Install pre-commit 28 | run: | 29 | pip install pre-commit 30 | - name: Setup pre-commit hooks 31 | run: | 32 | pre-commit install 33 | - name: Run pre-commit hooks 34 | run: | 35 | pre-commit run --all-files 36 | pytest: 37 | runs-on: ubuntu-latest 38 | strategy: 39 | matrix: 40 | python-version: [ 3.7, 3.8, 3.9 ] 41 | steps: 42 | - uses: actions/checkout@v2 43 | - name: Set up Python ${{ matrix.python-version }} 44 | 45 | uses: actions/setup-python@v2 46 | with: 47 | python-version: ${{ matrix.python-version }} 48 | - name: Get full python version 49 | id: full-python-version 50 | run: | 51 | echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info[:3]))") 52 | #---------------------------------------------- 53 | # install & configure poetry 54 | #---------------------------------------------- 55 | - name: Install Poetry 56 | uses: snok/install-poetry@v1.1.1 57 | with: 58 | virtualenvs-create: true 59 | virtualenvs-in-project: true 60 | #---------------------------------------------- 61 | # load cached venv if cache exists 62 | #---------------------------------------------- 63 | - name: Load cached venv 64 | id: cached-poetry-dependencies 65 | uses: actions/cache@v2 66 | with: 67 | path: .venv 68 | key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }} 69 | #---------------------------------------------- 70 | # install dependencies if cache does not exist 71 | #---------------------------------------------- 72 | - name: Install dependencies 73 | run: poetry install 74 | if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' 75 | #---------------------------------------------- 76 | # run tests 77 | #---------------------------------------------- 78 | - name: Run tests 79 | run: | 80 | poetry run pytest 81 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | 3 | # Byte-compiled / optimized / DLL files 4 | __pycache__/ 5 | *.py[cod] 6 | *$py.class 7 | 8 | # C extensions 9 | *.so 10 | 11 | # Distribution / packaging 12 | .Python 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | pip-wheel-metadata/ 26 | share/python-wheels/ 27 | *.egg-info/ 28 | .installed.cfg 29 | *.egg 30 | MANIFEST 31 | 32 | # PyInstaller 33 | # Usually these files are written by a python script from a template 34 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 35 | *.manifest 36 | *.spec 37 | 38 | # Installer logs 39 | pip-log.txt 40 | pip-delete-this-directory.txt 41 | 42 | # Unit test / coverage reports 43 | htmlcov/ 44 | .tox/ 45 | .nox/ 46 | .coverage 47 | .coverage.* 48 | .cache 49 | nosetests.xml 50 | coverage.xml 51 | *.cover 52 | *.py,cover 53 | .hypothesis/ 54 | .pytest_cache/ 55 | 56 | # Translations 57 | *.mo 58 | *.pot 59 | 60 | # Django stuff: 61 | *.log 62 | local_settings.py 63 | db.sqlite3 64 | db.sqlite3-journal 65 | 66 | # Flask stuff: 67 | instance/ 68 | .webassets-cache 69 | 70 | # Scrapy stuff: 71 | .scrapy 72 | 73 | # Sphinx documentation 74 | docs/_build/ 75 | 76 | # PyBuilder 77 | target/ 78 | 79 | # Jupyter Notebook 80 | .ipynb_checkpoints 81 | 82 | # IPython 83 | profile_default/ 84 | ipython_config.py 85 | 86 | # pyenv 87 | .python-version 88 | 89 | # pipenv 90 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 91 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 92 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 93 | # install all needed dependencies. 94 | #Pipfile.lock 95 | 96 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 97 | __pypackages__/ 98 | 99 | # Celery stuff 100 | celerybeat-schedule 101 | celerybeat.pid 102 | 103 | # SageMath parsed files 104 | *.sage.py 105 | 106 | # Environments 107 | .env 108 | .venv 109 | env/ 110 | venv/ 111 | ENV/ 112 | env.bak/ 113 | venv.bak/ 114 | 115 | # Spyder project settings 116 | .spyderproject 117 | .spyproject 118 | 119 | # Rope project settings 120 | .ropeproject 121 | 122 | # mkdocs documentation 123 | /site 124 | 125 | # mypy 126 | .mypy_cache/ 127 | .dmypy.json 128 | dmypy.json 129 | 130 | # Pyre type checker 131 | .pyre/ 132 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | # basic pre-commit hooks 3 | - repo: 'https://github.com/pre-commit/pre-commit-hooks' 4 | rev: v2.4.0 5 | hooks: 6 | - id: trailing-whitespace 7 | - id: check-merge-conflict 8 | - id: check-json 9 | 10 | # import sorting with isort 11 | - repo: https://github.com/pre-commit/mirrors-isort 12 | rev: v4.3.21 13 | hooks: 14 | - id: isort 15 | args: [-m 3,-w 160, -tc] 16 | 17 | # detecting and removing unused imports with unimport 18 | - repo: https://github.com/hakancelik96/unimport 19 | rev: 0.2.7 20 | hooks: 21 | - id: unimport 22 | args: [-r, --include-star-import] 23 | files: "\\.(py)$" 24 | 25 | # enforcing the use of new python syntax with pyupgrade 26 | - repo: https://github.com/asottile/pyupgrade 27 | rev: v2.7.2 28 | hooks: 29 | - id: pyupgrade 30 | 31 | # code formatting with black 32 | - repo: 'https://github.com/psf/black' 33 | rev: 20.8b1 34 | hooks: 35 | - id: black 36 | args: [--line-length=160,] 37 | language_version: python3 38 | 39 | # linting and code analysis with flake8 40 | - repo: https://gitlab.com/pycqa/flake8 41 | rev: 3.8.3 42 | hooks: 43 | - id: flake8 44 | args: [--max-line-length=160, --ignore=E203 E231 E800 W503 ANN101 ANN102 ANN204 N806 N803 N802] 45 | additional_dependencies: [flake8-bugbear, flake8-comprehensions, flake8-eradicate, pep8-naming, flake8-annotations] 46 | 47 | # type checking with mypy 48 | - repo: 'https://github.com/pre-commit/mirrors-mypy' 49 | rev: v0.782 50 | hooks: 51 | - id: mypy -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PyCLA 2 | A Python Package for Portfolio Optimization using the Critical Line Algorithm 3 | 4 | ![Tests](http://github.com/phschiele/PyCLA/workflows/Tests/badge.svg?event=push) 5 | 6 | ## Getting started 7 | To use PyCLA, clone the repo and install the required dependencies. 8 | 9 | ```bash 10 | git clone https://github.com/phschiele/PyCLA 11 | ``` 12 | Dependency installation using poetry: 13 | ```bash 14 | poetry install 15 | ``` 16 | Dependency installation using pip: 17 | ```bash 18 | pip install -r requirements.txt 19 | ``` 20 | 21 | 22 | ## Using PyCLA - An Example 23 | 24 | ```py 25 | import numpy as np 26 | 27 | from pycla import PyCLA 28 | 29 | n_sec = 10 30 | 31 | # Expected returns and covariance matrix 32 | np.random.seed(1) 33 | mu = np.random.random(n_sec) 34 | random_mat = np.random.rand(n_sec, n_sec) 35 | C = np.dot(random_mat, random_mat.transpose()) 36 | 37 | # Lower and upper bounds 38 | lb = np.ones(n_sec) * 0.05 39 | ub = np.ones(n_sec) * 0.7 40 | 41 | # Equality constraints 42 | A = np.ones((1, n_sec)) 43 | b = np.array([1]) 44 | 45 | # Inequality constraints 46 | first_n = 5 # combined weight of first five assets <= 50% 47 | A_in = np.array([[1]*first_n + [0]*(n_sec-first_n)]) 48 | b_in = np.array([0.5]) 49 | 50 | # Create the PyCLA object and trace the frontier 51 | pycla = PyCLA(mu, C, A, b, A_in, b_in, lb, ub) 52 | pycla.trace_frontier() 53 | 54 | ``` 55 | 56 | -------------------------------------------------------------------------------- /pycla/__init__.py: -------------------------------------------------------------------------------- 1 | from .pycla import PyCLA, SemiPyCLA 2 | 3 | __all__ = [ 4 | "PyCLA", 5 | "SemiPyCLA", 6 | ] 7 | -------------------------------------------------------------------------------- /pycla/constants.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class Direction(Enum): 5 | LOWER = "lower" 6 | HIGHER = "higher" 7 | 8 | 9 | class VariableState(Enum): 10 | IN = 0 11 | UP = 1 12 | LOW = 2 13 | 14 | 15 | class SimplexReturn(Enum): 16 | OPTIMAL = "optimal" 17 | DEGENERATE = "degenerate" 18 | 19 | 20 | class SimplexPhase(Enum): 21 | ONE = 1 22 | TWO = 2 23 | -------------------------------------------------------------------------------- /pycla/helpers.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from typing import Optional, Tuple 3 | 4 | import numpy as np 5 | from pycla.simplex import Simplex 6 | from scipy.optimize import linprog 7 | 8 | 9 | @dataclass 10 | class Frontier: 11 | mus: np.array 12 | sigmas: np.array 13 | name: str 14 | 15 | 16 | def validate_and_fix_asymmetry(C: np.array, tol: float = 1e-8) -> np.array: 17 | max_sim_vio = max_symmetry_violation(C) 18 | assert max_sim_vio < tol 19 | return make_symmetric(C) 20 | 21 | 22 | def make_symmetric(C: np.array) -> np.array: 23 | i_lower = np.tril_indices(C.shape[0], -1) 24 | C[i_lower] = C.T[i_lower] 25 | return C 26 | 27 | 28 | def max_symmetry_violation(A: np.array) -> float: 29 | return np.max(np.abs(A - A.T)) 30 | 31 | 32 | def is_psd(A: np.array, tol: float = 1e-8) -> bool: 33 | eig = np.linalg.eigvalsh(A) 34 | return np.all(eig > -tol) 35 | 36 | 37 | def transform_ineq_to_eq( 38 | mu: np.array, 39 | C: Optional[np.array], 40 | A: np.array, 41 | b: np.array, 42 | A_in: np.array, 43 | b_in: np.array, 44 | lb: np.array, 45 | ub: np.array, 46 | ) -> Tuple[np.array, Optional[np.array], np.array, np.array, np.array, np.array]: 47 | if A_in is None: 48 | return mu, C, A, b, lb, ub 49 | else: 50 | nineq = len(b_in) 51 | neq = len(b) 52 | ns = len(mu) 53 | 54 | mu_adj = np.append(mu, np.zeros(nineq)) 55 | 56 | b_adj = np.append(b, b_in) 57 | lb_adj = np.append(lb, np.zeros(nineq)) 58 | ub_adj = np.append(ub, np.ones(nineq) * np.inf) 59 | 60 | A_11 = A 61 | A_21 = A_in 62 | A_12 = np.zeros((neq, nineq)) 63 | A_22 = np.identity(nineq) 64 | A_adj = np.block([[A_11, A_12], [A_21, A_22]]) 65 | 66 | if C is not None: 67 | C_adj = np.zeros((ns + nineq, ns + nineq)) 68 | C_adj[:ns, :ns] = C 69 | else: 70 | C_adj = None 71 | 72 | return mu_adj, C_adj, A_adj, b_adj, lb_adj, ub_adj 73 | 74 | 75 | def find_max_E(mu: np.array, A: np.array, b: np.array, lb: np.array, ub: np.array, tol: float, method: str) -> Tuple[np.array, set, set, Optional[np.array]]: 76 | 77 | n = len(mu) 78 | m = A.shape[0] 79 | 80 | if method == "TWO_STAGE_SIMPLEX": 81 | simp = Simplex(A, b, lb, ub, mu, tol) 82 | X, altered_mus, in_vars, out_vars, Ai = simp.solve() 83 | elif method == "SCIPY": 84 | res = linprog( 85 | -mu, 86 | A_eq=A, 87 | b_eq=b, 88 | bounds=[(lower_bound, upper_bound) for lower_bound, upper_bound in zip(lb, ub)], 89 | method="revised simplex", 90 | ) 91 | assert res.success 92 | X = res.x 93 | out_vars = set(np.logical_or((abs(X - ub) < tol), (abs(X - lb) < tol)).nonzero()[0]) 94 | in_vars = set(range(n)) - out_vars 95 | Ai = None 96 | else: 97 | raise Exception(f"Unknown LP solve method {method}.") 98 | 99 | assert np.all(np.abs((A @ X) - b) < tol) 100 | assert np.all(np.logical_and(lb <= X + tol, X <= ub + tol)) 101 | assert out_vars & in_vars == set() 102 | assert out_vars | in_vars == set(range(n)) 103 | assert len(in_vars) == m 104 | 105 | return X, in_vars, out_vars, Ai 106 | -------------------------------------------------------------------------------- /pycla/plotting.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from matplotlib import pyplot as plt 4 | from pycla.helpers import Frontier 5 | 6 | 7 | def plot_efficient_frontiers(frontiers: List[Frontier]) -> None: 8 | 9 | plt.figure() 10 | 11 | for frontier in frontiers: 12 | plt.plot(frontier.sigmas, frontier.mus, label=frontier.name) 13 | 14 | plt.title("Efficient Frontier") 15 | plt.xlabel("sigma") 16 | plt.ylabel("mu") 17 | 18 | plt.legend() 19 | plt.show() 20 | -------------------------------------------------------------------------------- /pycla/pycla.py: -------------------------------------------------------------------------------- 1 | from abc import ABC, abstractmethod 2 | from typing import List, Optional 3 | 4 | import numpy as np 5 | from pycla.constants import Direction, VariableState 6 | from pycla.helpers import find_max_E, is_psd, transform_ineq_to_eq, validate_and_fix_asymmetry 7 | 8 | 9 | class PyCLABase(ABC): 10 | def __init__( 11 | self, 12 | mu: np.array, 13 | A: np.array, 14 | b: np.array, 15 | lb: np.array, 16 | ub: np.array, 17 | n_sec: int, 18 | n: int, 19 | m: int, 20 | X: np.array, 21 | in_vars: set, 22 | out_vars: set, 23 | tol: float, 24 | MAX_CP: int, 25 | verbose: bool, 26 | ) -> None: 27 | 28 | self.mu = mu 29 | self.A = A 30 | self.b = b 31 | self.lb = lb 32 | self.ub = ub 33 | self.n_sec = n_sec 34 | self.n = n 35 | self.m = m 36 | self.tol = tol 37 | 38 | self.X = X 39 | self.in_vars = in_vars 40 | self.out_vars = out_vars 41 | self.State = self.get_initial_state() 42 | 43 | self.MAX_CP = MAX_CP 44 | self.LambdaE = np.inf 45 | self.output: List[dict] = [] 46 | self.verbose = verbose 47 | self.traced_frontier = False 48 | 49 | def go_in(self, j_in: int) -> None: 50 | self.out_vars.remove(j_in) 51 | self.in_vars.add(j_in) 52 | self.State[j_in] = VariableState.IN.value 53 | 54 | def go_out(self, j_out: int, out_direction: Direction) -> None: 55 | assert j_out < self.n 56 | self.in_vars.remove(j_out) 57 | self.out_vars.add(j_out) 58 | self.State[j_out] = VariableState.UP.value if out_direction == Direction.HIGHER else VariableState.LOW.value 59 | 60 | @property 61 | def _I(self) -> List[int]: 62 | return sorted(self.in_vars) 63 | 64 | @property 65 | def _O(self) -> List[int]: 66 | return sorted(self.out_vars) 67 | 68 | @property 69 | def _in_sec(self) -> List[int]: 70 | return [i for i in self._I if i < self.n] 71 | 72 | def get_initial_state(self) -> np.array: 73 | state = np.zeros(self.n) 74 | state[self._in_sec] = VariableState.IN.value 75 | up_diff = np.abs(self.X - self.ub) 76 | state[self._O] = np.where(up_diff[self._O] < self.tol, VariableState.UP.value, VariableState.LOW.value) 77 | return state 78 | 79 | def trace_frontier(self) -> None: 80 | for iteration in range(self.MAX_CP): 81 | try: 82 | self.iteration() 83 | if self.verbose: 84 | print(iteration, self.LambdaE) 85 | except StopIteration: 86 | self.traced_frontier = True 87 | break 88 | if iteration == self.MAX_CP - 1: 89 | raise Exception(f"Frontier not fully traced after {self.MAX_CP} iterations.") 90 | 91 | @abstractmethod 92 | def iteration(self) -> None: 93 | pass 94 | 95 | 96 | class PyCLA(PyCLABase): 97 | def __init__( 98 | self, 99 | mu: np.array, 100 | C: np.array, 101 | A: np.array, 102 | b: np.array, 103 | A_in: np.array, 104 | b_in: np.array, 105 | lb: np.array, 106 | ub: np.array, 107 | tol: float = 1e-8, 108 | lp_method: str = "TWO_STAGE_SIMPLEX", 109 | validate_inputs: bool = True, 110 | verbose: bool = False, 111 | ): 112 | 113 | if validate_inputs: 114 | C = validate_and_fix_asymmetry(C, tol) 115 | self.validate_inputs(mu, C, A, b, A_in, b_in, lb, ub, tol) 116 | 117 | n_sec = len(mu) 118 | mu, C, A, b, lb, ub = transform_ineq_to_eq(mu, C, A, b, A_in, b_in, lb, ub) 119 | self.C = C 120 | 121 | n = len(mu) 122 | m = A.shape[0] 123 | 124 | X, in_vars, out_vars, Ai = find_max_E(mu, A, b, lb, ub, tol, lp_method) 125 | in_vars = in_vars | set(range(n, n + m)) 126 | out_vars = out_vars 127 | 128 | self.V = 0 129 | MAX_CP = 5 * (n + m) 130 | 131 | super().__init__(mu, A, b, lb, ub, n_sec, n, m, X, in_vars, out_vars, tol, MAX_CP, verbose) 132 | 133 | if Ai is None: 134 | Ai = np.linalg.inv(self.A[:, self._in_sec]) 135 | 136 | self._alpha = np.zeros(n + m) 137 | self._beta = np.zeros(n + m) 138 | self._bbar = np.zeros(n + m) 139 | self._Mi = np.zeros((n + m, n + m)) 140 | 141 | self._MMat = np.block([[self.C, self.A.T], [self.A, np.zeros((m, m))]]) 142 | self._alpha[self._O] = self.X[self._O] 143 | self._bbar[self._I] = np.append(np.zeros(len(self.in_vars) - m), self.b) - (self._M_io @ self._X_o) 144 | 145 | C_ii = self.C[np.ix_(self._in_sec, self._in_sec)] 146 | Mi_small = np.block([[np.zeros((m, m)), Ai], [Ai.T, -Ai.T @ C_ii @ Ai]]) 147 | self._Mi[np.ix_(self._I, self._I)] = Mi_small 148 | 149 | def iteration(self) -> None: 150 | in_vars = self._I 151 | out_vars = self._O 152 | 153 | Mi_ii = self._Mi_ii 154 | self._alpha[in_vars] = Mi_ii @ self._bbar[in_vars] 155 | mu_i_zero_extended = np.append(self.mu[self._in_sec], np.zeros(len(self.in_vars) - len(self._in_sec))) 156 | self._beta[in_vars] = Mi_ii @ mu_i_zero_extended 157 | 158 | lambda_in_goes_out = -np.ones(self.n) * np.inf 159 | 160 | lower_idx = np.where(self._beta[: self.n] > self.tol)[0] 161 | lambda_in_goes_out[lower_idx] = (self.lb[lower_idx] - self._alpha[lower_idx]) / self._beta[lower_idx] 162 | higher_idx = np.where(self._beta[: self.n] < -self.tol)[0] 163 | lambda_in_goes_out[higher_idx] = (self.ub[higher_idx] - self._alpha[higher_idx]) / self._beta[higher_idx] 164 | 165 | j_in_goes_out = int(np.argmax(lambda_in_goes_out)) 166 | lambdaA = lambda_in_goes_out[j_in_goes_out] 167 | out_direction = Direction.LOWER if self._beta[j_in_goes_out] > 0 else Direction.HIGHER 168 | 169 | gamma = np.zeros(self.n) 170 | delta = np.zeros(self.n) 171 | lambda_out_goes_in = -np.ones(self.n) * np.inf 172 | 173 | MMat_o = self._MMat[out_vars, :] 174 | 175 | gamma[out_vars] = MMat_o @ self._alpha 176 | delta[out_vars] = MMat_o @ self._beta - self.mu[out_vars] 177 | 178 | delta[np.where(np.logical_and(self.State == VariableState.UP.value, delta > 0))] = 0 179 | delta[np.where(np.logical_and(self.State == VariableState.LOW.value, delta < 0))] = 0 180 | idx = np.where(np.abs(delta) > self.tol) 181 | lambda_out_goes_in[idx] = -gamma[idx] / delta[idx] 182 | 183 | j_out_goes_in = int(np.argmax(lambda_out_goes_in)) 184 | lambdaB = lambda_out_goes_in[j_out_goes_in] 185 | 186 | new_LambdaE = max([lambdaA, lambdaB, 0]) 187 | if self.LambdaE < np.inf: 188 | assert new_LambdaE - self.LambdaE < self.tol, f"Difference: {new_LambdaE - self.LambdaE}" 189 | old_lambda_E = self.LambdaE 190 | self.LambdaE = new_LambdaE 191 | self.calc_corner_pf(old_lambda_E) 192 | 193 | if self.LambdaE < self.tol: 194 | raise StopIteration 195 | 196 | if lambdaA > lambdaB: 197 | self.delete_var(j_in_goes_out, out_direction) 198 | else: 199 | self.add_var(j_out_goes_in) 200 | 201 | def calc_corner_pf(self, old_lambda_E: float) -> None: 202 | in_sec = self._in_sec 203 | if old_lambda_E == np.inf: 204 | assert np.allclose(self.X[in_sec], self._alpha[in_sec] + self._beta[in_sec] * self.LambdaE) 205 | self.X[in_sec] = self._alpha[in_sec] + self._beta[in_sec] * self.LambdaE 206 | dE_dLambda = self._beta[in_sec] @ self.mu[in_sec] 207 | 208 | if dE_dLambda < self.tol: 209 | self.E = self.mu @ self.X 210 | self.V = self.X @ self.C @ self.X 211 | 212 | else: 213 | assert old_lambda_E < np.inf 214 | a2 = 1 / dE_dLambda 215 | a1 = 2 * (old_lambda_E - a2 * self.E) 216 | a0 = self.V - a1 * self.E - a2 * self.E ** 2 217 | 218 | self.E += (self.LambdaE - old_lambda_E) * dE_dLambda 219 | self.V = a0 + a1 * self.E + a2 * self.E ** 2 220 | 221 | self.output.append( 222 | { 223 | "E": self.E, 224 | "std": np.sqrt(self.V), 225 | "X": self.X.copy(), 226 | } 227 | ) 228 | 229 | def add_var(self, jAdd: int) -> None: 230 | Mi_ii = self._Mi_ii 231 | in_vars = self._I 232 | 233 | M_ij = self._MMat[np.ix_(in_vars, [jAdd])] 234 | M_jj = self._MMat[jAdd, jAdd] 235 | 236 | xi = Mi_ii @ M_ij 237 | xi_j_squared = M_jj - xi.T @ M_ij 238 | 239 | off_diag = (-xi / xi_j_squared).flatten() 240 | 241 | self._Mi[np.ix_(in_vars, in_vars)] = Mi_ii + np.outer(xi, xi) / xi_j_squared 242 | self._Mi[jAdd, jAdd] = 1 / xi_j_squared 243 | self._Mi[in_vars, jAdd] = off_diag 244 | self._Mi[jAdd, in_vars] = off_diag 245 | 246 | self._bbar[in_vars] += self._MMat[in_vars, jAdd] * self.X[jAdd] 247 | 248 | self.go_in(jAdd) 249 | self._bbar[jAdd] = -np.sum(self._MMat[jAdd, self._O] * self.X[self._O]) 250 | 251 | def delete_var(self, jDel: int, out_direction: Direction) -> None: 252 | self._alpha[jDel] = self.X[jDel] 253 | self._beta[jDel] = 0 254 | 255 | self.go_out(jDel, out_direction) 256 | 257 | in_vars = self._I 258 | self._Mi[np.ix_(in_vars, in_vars)] -= (self._Mi[in_vars, jDel].reshape(-1, 1) @ self._Mi[jDel, in_vars].reshape(1, -1)) / self._Mi[jDel, jDel] 259 | self._bbar[in_vars] -= self._MMat[in_vars, jDel] * self.X[jDel] 260 | 261 | @property 262 | def _M_io(self) -> np.array: 263 | return self._MMat[np.ix_(self._I, self._O)] 264 | 265 | @property 266 | def _X_o(self) -> np.array: 267 | return self.X[self._O] 268 | 269 | @property 270 | def _Mi_ii(self) -> np.array: 271 | return self._Mi[np.ix_(self._I, self._I)] 272 | 273 | @staticmethod 274 | def validate_inputs( 275 | mu: np.array, 276 | C: np.array, 277 | A: np.array, 278 | b: np.array, 279 | A_in: Optional[np.array], 280 | b_in: Optional[np.array], 281 | lb: np.array, 282 | ub: np.array, 283 | tol: float, 284 | ) -> None: 285 | assert all(isinstance(arg, np.ndarray) for arg in [mu, C, A, b, lb, ub]) 286 | assert mu.ndim == b.ndim == lb.ndim == ub.ndim == 1 287 | 288 | assert is_psd(C, tol) 289 | 290 | if A_in is not None or b_in is not None: 291 | assert A_in is not None and b_in is not None 292 | assert isinstance(A_in, np.ndarray) 293 | assert isinstance(b_in, np.ndarray) 294 | assert A_in.shape[0] == b_in.shape[0] 295 | assert b_in.ndim == 1 296 | 297 | assert A.shape[0] == b.shape[0] 298 | assert mu.shape[0] == C.shape[0] == C.shape[1] == lb.shape[0] == ub.shape[0] 299 | 300 | assert np.all(ub - lb > tol) 301 | 302 | 303 | class SemiPyCLA(PyCLABase): 304 | def __init__( 305 | self, 306 | historic_returns: np.array, 307 | mu: np.array, 308 | A: np.array, 309 | b: np.array, 310 | A_in: np.array, 311 | b_in: np.array, 312 | lb: np.array, 313 | ub: np.array, 314 | reference_return: float = 0.0, 315 | tol: float = 1e-8, 316 | lp_method: str = "TWO_STAGE_SIMPLEX", 317 | verbose: bool = True, 318 | ): 319 | 320 | self.historic_returns = historic_returns 321 | self.reference_return = reference_return 322 | self.t = historic_returns.shape[0] 323 | 324 | n_sec = len(mu) 325 | mu, _, A, b, lb, ub = transform_ineq_to_eq(mu, None, A, b, A_in, b_in, lb, ub) 326 | n = len(mu) 327 | m = A.shape[0] 328 | 329 | X, in_vars, out_vars, Ai = find_max_E(mu, A, b, lb, ub, tol, lp_method) 330 | 331 | self.excess_returns = historic_returns - reference_return 332 | y = self.excess_returns @ X 333 | in_obs = y < tol 334 | assert np.any(in_obs) 335 | 336 | MAX_CP = 5 * (n + m + self.t) 337 | 338 | super().__init__(mu, A, b, lb, ub, n_sec, n, m, X, in_vars, out_vars, tol, MAX_CP, verbose) 339 | 340 | self._local_semicovariance = self.excess_returns[in_obs].T @ self.excess_returns[in_obs] / self.t 341 | self._Ploc = np.hstack([self._local_semicovariance, self.A.T]) 342 | 343 | def iteration(self) -> None: 344 | old_lambda_E = self.LambdaE 345 | Sbar = self.bar(self._local_semicovariance, self._O) 346 | Abar = self.zero_cols(self.A, self._O) 347 | Mbar = np.block([[Sbar, Abar.T], [Abar, np.zeros((self.m, self.m))]]) 348 | k = np.zeros(self.n) 349 | k[self.State == VariableState.UP.value] = self.ub[self.State == VariableState.UP.value] 350 | k[self.State == VariableState.LOW.value] = self.lb[self.State == VariableState.LOW.value] 351 | rhsa = np.zeros(self.m + self.n) 352 | rhsa[-self.m :] = self.b - self.A @ k 353 | rhsb = np.zeros(self.m + self.n) 354 | rhsb[: self.n] = self.zero_rows(self.mu, self._O) 355 | 356 | alpha = np.linalg.solve(Mbar, rhsa) 357 | beta = np.linalg.solve(Mbar, rhsb) 358 | gamma = self._Ploc @ alpha 359 | delta = self._Ploc @ beta - self.mu 360 | 361 | lambda_in_goes_out = -np.ones(self.n) * np.inf 362 | lower_idx = np.where(np.logical_and(beta[: self.n] > self.tol, self.State == VariableState.IN.value))[0] 363 | lambda_in_goes_out[lower_idx] = (self.lb[lower_idx] - alpha[lower_idx]) / beta[lower_idx] 364 | higher_idx = np.where(np.logical_and(beta[: self.n] < -self.tol, self.State == VariableState.IN.value))[0] 365 | lambda_in_goes_out[higher_idx] = (self.ub[higher_idx] - alpha[higher_idx]) / beta[higher_idx] 366 | 367 | j_in_goes_out = int(np.argmax(lambda_in_goes_out)) 368 | lambdaA = lambda_in_goes_out[j_in_goes_out] 369 | out_direction = Direction.LOWER if beta[j_in_goes_out] > 0 else Direction.HIGHER 370 | 371 | lambda_out_goes_in = -np.ones(self.n) * np.inf 372 | delta[np.where(np.logical_and(self.State == VariableState.UP.value, delta > 0))] = 0 373 | delta[np.where(np.logical_and(self.State == VariableState.LOW.value, delta < 0))] = 0 374 | idx = np.where(np.logical_and(~(self.State == VariableState.IN.value), np.abs(delta) > self.tol)) 375 | lambda_out_goes_in[idx] = -gamma[idx] / delta[idx] 376 | 377 | j_out_goes_in = int(np.argmax(lambda_out_goes_in)) 378 | lambdaB = lambda_out_goes_in[j_out_goes_in] 379 | 380 | lambda_sec = max([lambdaA, lambdaB, 0]) 381 | 382 | # Check if local semi-variance matrix needs to change 383 | numerator = self.excess_returns @ alpha[: self.n] 384 | denominator = self.excess_returns @ beta[: self.n] 385 | rat = -np.ones(self.t) * np.inf 386 | valid = np.abs(denominator) > self.tol 387 | rat[valid] = -numerator[valid] / denominator[valid] 388 | lambda_obs = -np.inf 389 | i = rat - old_lambda_E < -self.tol 390 | if np.any(i): 391 | lambda_obs = np.max(rat[i]) 392 | 393 | if lambda_obs > lambda_sec: 394 | self.LambdaE = lambda_obs 395 | self.X = alpha[: self.n] + self.LambdaE * beta[: self.n] 396 | y = self.excess_returns @ self.X 397 | in_obs = y < -self.tol 398 | assert np.any(in_obs) 399 | self._local_semicovariance = self.excess_returns[in_obs].T @ self.excess_returns[in_obs] / self.t 400 | self._Ploc = np.hstack([self._local_semicovariance, self.A.T]) 401 | 402 | else: 403 | self.LambdaE = lambda_sec 404 | self.X = alpha[: self.n] + self.LambdaE * beta[: self.n] 405 | 406 | if lambdaA > lambdaB: 407 | print("in goes out", j_in_goes_out, out_direction) 408 | self.go_out(j_in_goes_out, out_direction) 409 | else: 410 | print("out goes in", j_out_goes_in) 411 | self.go_in(j_out_goes_in) 412 | 413 | self.output.append( 414 | { 415 | "E": self.X @ self.mu, 416 | "semideviation": np.sqrt(self.X @ self._local_semicovariance @ self.X), 417 | "X": self.X.copy(), 418 | } 419 | ) 420 | 421 | if self.LambdaE < self.tol: 422 | raise StopIteration 423 | 424 | @staticmethod 425 | def zero_rows(x: np.array, j: List[int]) -> np.array: 426 | y = x.copy() 427 | for k in j: 428 | y[k] = 0 429 | return y 430 | 431 | @staticmethod 432 | def zero_cols(x: np.array, j: List[int]) -> np.array: 433 | y = x.copy() 434 | for k in j: 435 | y[:, k] = 0 436 | return y 437 | 438 | @staticmethod 439 | def bar(x: np.array, j: List[int]) -> np.array: 440 | y = x.copy() 441 | for k in j: 442 | y[k] = 0 443 | y[k, k] = 1 444 | return y 445 | -------------------------------------------------------------------------------- /pycla/simplex.py: -------------------------------------------------------------------------------- 1 | import copy as cp 2 | from typing import List, Tuple, Union 3 | 4 | import numpy as np 5 | from pycla.constants import Direction, SimplexPhase, SimplexReturn, VariableState 6 | 7 | 8 | class Simplex: 9 | def __init__(self, A: np.array, b: np.array, lb: np.array, ub: np.array, mu: np.array, tol: float): 10 | self.m = A.shape[0] 11 | self.mu = mu 12 | self.tol = tol 13 | assert len(lb) == len(ub) == A.shape[1] 14 | self.n = len(lb) 15 | 16 | z = np.zeros(self.n + self.m) 17 | z[self.n :] = -1 18 | self.z = z 19 | self.price = np.zeros(self.m) 20 | self.profit = np.zeros(self.n) 21 | self.adj_rate = np.zeros(self.m) 22 | 23 | state = np.zeros(self.n + self.m) 24 | state[: self.n] = VariableState.LOW.value 25 | state[self.n :] = VariableState.IN.value 26 | self.State = state 27 | 28 | self.out_vars = set(range(self.n)) 29 | self.in_vars = set(range(self.n, self.n + self.m)) 30 | 31 | A_lb = A @ lb 32 | B = np.zeros((self.m, self.m)) 33 | np.fill_diagonal(B, np.where(b >= A_lb, 1, -1)) 34 | self.A = np.hstack([A, B]) 35 | self.lb = np.hstack([lb, np.zeros(self.m)]) 36 | self.ub = np.hstack([ub, np.ones(self.m) * np.inf]) 37 | Y = np.abs(b - A_lb) 38 | X = np.zeros(self.n) 39 | X[: self.n] = lb[: self.n] 40 | self.X = np.hstack([X, Y]) 41 | 42 | self.Ai = cp.deepcopy(B) 43 | self.nIABV = self.m 44 | 45 | def solve(self) -> Tuple[np.array, np.array, set, set, np.array]: 46 | return_code = self.simplex_phase(SimplexPhase.ONE) 47 | 48 | if return_code == SimplexReturn.OPTIMAL: 49 | assert self.nIABV == 0 50 | self.lb = self.lb[: self.n] 51 | self.ub = self.ub[: self.n] 52 | self.A = self.A[:, : self.n] 53 | self.X = self.X[: self.n] 54 | self.State = self.State[: self.n] 55 | 56 | elif return_code == SimplexReturn.DEGENERATE: 57 | # Potentially recover 58 | raise NotImplementedError 59 | 60 | if return_code == SimplexReturn.OPTIMAL: 61 | self.z[: self.n] = self.mu 62 | return_code = self.simplex_phase(SimplexPhase.TWO) 63 | 64 | if return_code == SimplexReturn.OPTIMAL: 65 | return self.X, self.alter_mus(), self.in_vars, self.out_vars, self.Ai 66 | 67 | if return_code == SimplexReturn.OPTIMAL: 68 | raise Exception("Optimal state should have returned the function") 69 | elif return_code == return_code.DEGENERATE: 70 | raise Exception("Degenerate problem, should have been handled above.") 71 | else: 72 | raise Exception(f"Unknown return code: {return_code}") 73 | 74 | def simplex_phase(self, phase: SimplexPhase) -> SimplexReturn: 75 | 76 | while True: 77 | self.price = -self.Ai.T @ self.z[self._I] 78 | 79 | self.profit[self._O] = (self.z[self._O] + self.price @ self.A[:, self._O]) * np.where(self.is_up(self._O), -1, 1) 80 | out_max = np.argmax(self.profit[self._O]) 81 | j_in = self._O[out_max] 82 | profit_max = self.profit[j_in] 83 | 84 | if profit_max < self.tol: 85 | if phase == SimplexPhase.ONE: 86 | if np.any(self.X[self._I[-self.nIABV :]] > self.tol): 87 | raise Exception("Infeasible problem. Check constraints.") 88 | else: 89 | return SimplexReturn.DEGENERATE 90 | else: 91 | return SimplexReturn.OPTIMAL 92 | 93 | if self.is_up(j_in): 94 | in_direction = Direction.LOWER 95 | adj_sign = 1 96 | else: 97 | in_direction = Direction.HIGHER 98 | adj_sign = -1 99 | 100 | self.adj_rate = adj_sign * self.Ai @ self.A[:, j_in] 101 | 102 | theta = self.ub[j_in] - self.lb[j_in] 103 | 104 | theta_candidate = np.ones(self.m) * np.inf 105 | ind_adj_rate_low = np.where(self.adj_rate < -self.tol)[0] 106 | ind_adj_rate_high = np.where(self.adj_rate > self.tol)[0] 107 | theta_candidate[ind_adj_rate_low] = (self.lb[self._I][ind_adj_rate_low] - self.X[self._I][ind_adj_rate_low]) / self.adj_rate[ind_adj_rate_low] 108 | theta_candidate[ind_adj_rate_high] = (self.ub[self._I][ind_adj_rate_high] - self.X[self._I][ind_adj_rate_high]) / self.adj_rate[ind_adj_rate_high] 109 | if np.min(theta_candidate) < theta: 110 | i_out = np.argmin(theta_candidate) 111 | j_out = self._I[i_out] 112 | theta = theta_candidate[i_out] 113 | out_direction = Direction.LOWER if self.adj_rate[i_out] < 0 else Direction.HIGHER 114 | else: 115 | i_out = None 116 | j_out = j_in 117 | out_direction = in_direction 118 | 119 | if theta == np.inf: 120 | raise Exception("Unbounded E. Make sure you have a valid budget constraint.") 121 | 122 | self.X[self._I] += theta * self.adj_rate 123 | self.X[j_in] = self.X[j_in] + theta if in_direction == Direction.HIGHER else self.X[j_in] - theta 124 | 125 | self.go_in(j_in) 126 | self.go_out(j_out, out_direction) 127 | 128 | if j_in != j_out: 129 | i_in = self._I.index(j_in) 130 | self.update_ai(i_out, i_in, in_direction) # type: ignore 131 | 132 | if phase == SimplexPhase.ONE and j_out >= self.n: 133 | self.nIABV = self.nIABV - 1 134 | if self.nIABV == 0: 135 | return SimplexReturn.OPTIMAL 136 | 137 | @property 138 | def _I(self) -> List[int]: 139 | return sorted(self.in_vars) 140 | 141 | @property 142 | def _O(self) -> List[int]: 143 | return sorted(self.out_vars) 144 | 145 | def is_up(self, j: Union[int, List[int]]) -> Union[bool, np.array]: 146 | return self.State[j] == VariableState.UP.value 147 | 148 | def is_low(self, j: Union[int, List[int]]) -> Union[bool, np.array]: 149 | return self.State[j] == VariableState.LOW.value 150 | 151 | def go_in(self, j_in: int) -> None: 152 | self.out_vars.remove(j_in) 153 | self.in_vars.add(j_in) 154 | self.State[j_in] = VariableState.IN.value 155 | 156 | def go_out(self, j_out: int, out_direction: Direction) -> None: 157 | self.in_vars.remove(j_out) 158 | if j_out < self.n: 159 | self.out_vars.add(j_out) 160 | 161 | self.State[j_out] = VariableState.UP.value if out_direction == Direction.HIGHER else VariableState.LOW.value 162 | 163 | def update_ai(self, i_out: int, i_in: int, in_direction: Direction) -> None: 164 | 165 | ind_minus_i_out = list(range(self.m)) 166 | ind_minus_i_out.remove(i_out) 167 | temp = self.adj_rate[ind_minus_i_out] / self.adj_rate[i_out] 168 | self.Ai[ind_minus_i_out, :] -= np.outer(temp, self.Ai[i_out, :]) 169 | 170 | adj_rate_i_out_signed = -self.adj_rate[i_out] if in_direction == Direction.HIGHER else self.adj_rate[i_out] 171 | self.Ai[i_out, :] = self.Ai[i_out, :] / adj_rate_i_out_signed 172 | 173 | self.reorder_ai_rows(i_out, i_in) 174 | 175 | def reorder_ai_rows(self, del_row: int, add_row: int) -> None: 176 | rows = list(range(self.m)) 177 | rows.pop(del_row) 178 | rows.insert(add_row, del_row) 179 | self.Ai = self.Ai[rows, :] 180 | 181 | def alter_mus(self, eps: float = 1e-6) -> np.array: 182 | altered_mus = self.mu.copy() 183 | nonneg_profit = self.profit[self._O] > -eps 184 | mu_increase = np.where(np.logical_and(nonneg_profit, self.is_up(self._O)), eps, 0) 185 | mu_decrease = np.where(np.logical_and(nonneg_profit, self.is_low(self._O)), -eps, 0) 186 | altered_mus[self._O] += mu_increase + mu_decrease 187 | return altered_mus 188 | -------------------------------------------------------------------------------- /pycla/validation.py: -------------------------------------------------------------------------------- 1 | from typing import Union 2 | 3 | import cvxpy as cvx 4 | import numpy as np 5 | from pycla.pycla import PyCLA, SemiPyCLA 6 | 7 | 8 | def validate_frontier(pycla: PyCLA) -> None: 9 | validate_max_return(pycla) 10 | validate_min_volatility(pycla) 11 | 12 | 13 | def validate_semivariance_frontier(semipycla: SemiPyCLA) -> None: 14 | validate_max_return(semipycla) 15 | validate_min_semideviation(semipycla) 16 | 17 | 18 | def validate_max_return(pycla: Union[PyCLA, SemiPyCLA]) -> None: 19 | mu = pycla.mu 20 | ub = pycla.ub 21 | ub[ub == np.inf] = 1e30 22 | lb = pycla.lb 23 | A = pycla.A 24 | b = pycla.b 25 | 26 | x = cvx.Variable(pycla.n) 27 | max_mu = cvx.Problem(cvx.Maximize(mu @ x), [lb <= x, x <= ub, A @ x == b]) 28 | max_mu.solve(solver=cvx.OSQP) 29 | assert max_mu.status == "optimal" 30 | 31 | assert np.allclose(max_mu.value, pycla.output[0]["E"], atol=1e-4), max_mu.value - pycla.output[0]["E"] 32 | 33 | 34 | def validate_min_volatility(pycla: PyCLA) -> None: 35 | mu = pycla.mu 36 | C = pycla.C 37 | ub = pycla.ub 38 | ub[ub == np.inf] = 1e30 39 | lb = pycla.lb 40 | A = pycla.A 41 | b = pycla.b 42 | 43 | x = cvx.Variable(pycla.n) 44 | MVP = cvx.Problem(cvx.Minimize(cvx.QuadForm(x, C)), [lb <= x, x <= ub, A @ x == b]) 45 | MVP.solve(solver=cvx.OSQP) 46 | assert MVP.status == "optimal" 47 | 48 | assert np.allclose(x.value @ mu, pycla.output[-1]["E"], atol=1e-4), x.value @ mu - pycla.output[-1]["E"] 49 | assert np.allclose(np.sqrt(MVP.value), pycla.output[-1]["std"], atol=1e-4), np.sqrt(MVP.value) - pycla.output[-1]["std"] 50 | 51 | 52 | def validate_min_semideviation(pycla: SemiPyCLA) -> None: 53 | # MTXY method 54 | 55 | mu = pycla.mu 56 | ub = pycla.ub 57 | ub[ub == np.inf] = 1e30 58 | lb = pycla.lb 59 | A = pycla.A 60 | b = pycla.b 61 | 62 | assert pycla.traced_frontier 63 | x = cvx.Variable(pycla.n) 64 | p = cvx.Variable(pycla.t, nonneg=True) 65 | n = cvx.Variable(pycla.t, nonneg=True) 66 | objective = cvx.Minimize(cvx.sum(cvx.square(n))) 67 | 68 | B = (pycla.excess_returns) / np.sqrt(pycla.t) 69 | constraints = [B @ x - p + n == 0, lb <= x, x <= ub, A @ x == b] 70 | 71 | MSP = cvx.Problem(objective, constraints) 72 | MSP.solve(solver=cvx.OSQP) 73 | assert MSP.status == "optimal" 74 | 75 | assert np.allclose(x.value @ mu, pycla.output[-1]["E"], atol=1e-4), x.value @ mu - pycla.output[-1]["E"] 76 | assert np.allclose(np.sqrt(MSP.value), pycla.output[-1]["semideviation"], atol=1e-4), np.sqrt(MSP.value) - pycla.output[-1]["semideviation"] 77 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "pycla" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["phschiele "] 6 | 7 | [tool.poetry.dependencies] 8 | python = ">=3.7.1,<3.10" 9 | numpy = "^1.20.2" 10 | scipy = "^1.6.3" 11 | 12 | [tool.poetry.dev-dependencies] 13 | matplotlib = "^3.4.1" 14 | scikit-learn = "^0.24.2" 15 | pytest = "^6.2.3" 16 | pandas = "^1.2.4" 17 | pre-commit = "^2.12.1" 18 | cvxpy = "^1.1.15" 19 | 20 | [build-system] 21 | requires = ["poetry-core>=1.0.0"] 22 | build-backend = "poetry.core.masonry.api" 23 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | scipy -------------------------------------------------------------------------------- /test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phschiele/PyCLA/53530bcc43c188242555f20a5b425cebb3a89c86/test/__init__.py -------------------------------------------------------------------------------- /test/conftest.py: -------------------------------------------------------------------------------- 1 | from typing import Generator 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture() 7 | def path_test_data() -> str: 8 | return "test/data_test/" 9 | 10 | 11 | @pytest.fixture() 12 | def update_tests() -> Generator[bool, None, None]: 13 | update = False 14 | yield update 15 | assert not update, "Set to false after updating tests." 16 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_many_constraints_A_in.csv: -------------------------------------------------------------------------------- 1 | 0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2 | 0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 3 | 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0 4 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0 5 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 6 | 0,0,0,0,0,0,0,-0.8,-0.8,-0.8,0.2,0.2,0.2,0.2,0.2,0.2,0,0,0 7 | 0,0,0,0,0,0,0,0.45,0.45,0.45,-0.55,-0.55,-0.55,-0.55,-0.55,-0.55,0,0,0 8 | 0,0,0,0,0,0,0,0.2,0.2,0.2,-0.8,-0.8,-0.8,0.2,0.2,0.2,0,0,0 9 | 0,0,0,0,0,0,0,-0.45,-0.45,-0.45,0.55,0.55,0.55,-0.45,-0.45,-0.45,0,0,0 10 | 0,0,0,0,0,0,0,0.05,0.05,0.05,0.05,0.05,0.05,-0.95,0.05,0.05,0,0,0 11 | 0,0,0,0,0,0,0,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,0.85,-0.15,-0.15,0,0,0 12 | 0,0,0,0,0,0,0,0.05,0.05,0.05,0.05,0.05,0.05,0.05,-0.95,0.05,0,0,0 13 | 0,0,0,0,0,0,0,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,0.85,-0.15,0,0,0 14 | 0,0,0,0,0,0,0,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,-0.9,0,0,0 15 | 0,0,0,0,0,0,0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,0.8,0,0,0 16 | 0,-0.5,0.5,0.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 17 | 0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 18 | 0,0.1,-0.9,0.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 19 | 0,-0.3,0.7,-0.3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 20 | 0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 21 | 0,-0.2,-0.2,0.8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 22 | 0,0,0,0,0,-0.5,0.5,0,0,0,0,0,0,0,0,0,0,0,0 23 | 0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0 24 | 0,0,0,0,0,0.1,-0.9,0,0,0,0,0,0,0,0,0,0,0,0 25 | 0,0,0,0,0,-0.5,0.5,0,0,0,0,0,0,0,0,0,0,0,0 26 | 0,0,0,0,0,0,0,-0.65,0.35,0.35,0,0,0,0,0,0,0,0,0 27 | 0,0,0,0,0,0,0,0.4,-0.6,-0.6,0,0,0,0,0,0,0,0,0 28 | 0,0,0,0,0,0,0,0.35,-0.65,0.35,0,0,0,0,0,0,0,0,0 29 | 0,0,0,0,0,0,0,-0.6,0.4,-0.6,0,0,0,0,0,0,0,0,0 30 | 0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0 31 | 0,0,0,0,0,0,0,-0.3,-0.3,0.7,0,0,0,0,0,0,0,0,0 32 | 0,0,0,0,0,0,0,0,0,0,-0.65,0.35,0.35,0,0,0,0,0,0 33 | 0,0,0,0,0,0,0,0,0,0,0.4,-0.6,-0.6,0,0,0,0,0,0 34 | 0,0,0,0,0,0,0,0,0,0,0.35,-0.65,0.35,0,0,0,0,0,0 35 | 0,0,0,0,0,0,0,0,0,0,-0.6,0.4,-0.6,0,0,0,0,0,0 36 | 0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0 37 | 0,0,0,0,0,0,0,0,0,0,-0.3,-0.3,0.7,0,0,0,0,0,0 38 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.7,0.3,0 39 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.3,-0.7,0 40 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.3,-0.7,0 41 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.7,0.3,0 42 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_many_constraints_C.csv: -------------------------------------------------------------------------------- 1 | 7.7084098218876e-06,9.78456948111943e-05,0.000277370482285304,0.000156054245867028,5.52685522572716e-05,2.8258469496516e-05,0.000326217531090349,0.00084115149817778,0.000302081454635868,0.000545428319429333,0.000934349045301266,0.000143237608999131,0.000488292566883948,-0.000566117208806406,-0.000779191882989144,-0.000169562769668063,0.000260115655181002,0.000493268807204866,0.000801337080421232 2 | 9.78456948111943e-05,0.36632235783006,0.481080412319097,0.165554949881127,0.138605633698621,0.144074725001533,0.460946413951495,0.203322804063426,-0.141787648551241,-0.054546755466947,0.244844220356515,-0.192199012324799,0.0289992614098961,-0.237587564727035,-0.121424345757737,-0.0246341828853669,0.243759388882417,0.535272402191605,0.039704154004141 3 | 0.000277370482285304,0.481080412319097,0.912737352645857,0.264803692341778,0.211551185874052,0.211312195412396,0.852336888702882,0.233004387028238,-0.306418952609499,-0.222101567896468,0.428993962341483,-0.283105369098233,0.0829775765490756,-0.275970355841533,-0.015248528185549,0.0165099145130048,0.247570626687125,0.789574174131308,0.0878205182297697 4 | 0.000156054245867028,0.165554949881127,0.264803692341778,0.700803111145448,0.052875945577892,0.0763244812715151,0.373851971031469,0.756733204857186,0.806569875500572,0.674944252980247,0.609978798744341,0.944490039999418,0.912390187281805,0.182997124415018,-0.00757778086770011,0.512506044938032,0.422239222753264,0.599497030810723,0.584645278296459 5 | 5.52685522572716e-05,0.138605633698621,0.211551185874052,0.052875945577892,0.0650350367974845,0.0626925229205137,0.201183157042388,0.0460744660697388,-0.105614907599997,-0.0639150499054855,0.0953028113645452,-0.115392970190764,-0.00618297097790919,-0.101926998109812,-0.0481509782181951,-0.0323822538289364,0.0811111209097278,0.233431543355422,0.0325625997727219 6 | 2.8258469496516e-05,0.144074725001533,0.211312195412396,0.0763244812715151,0.0626925229205137,0.0763114228043815,0.215140157737923,0.0872277309932331,-0.066309356577033,-0.0116012607105713,0.117532347187836,-0.084036293456684,0.0374843856886381,-0.0410345429261245,0.00194716159337756,0.0167089909822646,0.138046721561852,0.273458395678156,0.0339795423167908 7 | 0.000326217531090349,0.460946413951495,0.852336888702882,0.373851971031469,0.201183157042388,0.215140157737923,0.9164556283247,0.515658681495585,0.0403390454629141,0.0963754177877253,0.65285818410061,0.0497158752684938,0.450699275211364,-0.0553295735912665,0.0476619090986098,0.218754277377195,0.501906650309321,0.955702163954157,0.208329815882547 8 | 0.00084115149817778,0.203322804063426,0.233004387028238,0.756733204857186,0.0460744660697388,0.0872277309932331,0.515658681495585,2.42341049239332,2.07573730007084,1.96383205876046,1.87632197984151,1.93356085525137,2.10814950255352,0.496265670657488,-0.395519227863876,0.931816347894912,1.6671322276515,1.56441451338137,0.581932850928383 9 | 0.000302081454635868,-0.141787648551241,-0.306418952609499,0.806569875500572,-0.105614907599997,-0.066309356577033,0.0403390454629141,2.07573730007084,3.06582701312249,2.37785297910397,1.47000233777904,2.74119928677365,2.63018931631541,1.15190523367106,0.0763706169728121,1.54950869017959,1.38882802084386,0.844564207002717,1.13614406862026 10 | 0.000545428319429333,-0.054546755466947,-0.222101567896468,0.674944252980247,-0.0639150499054855,-0.0116012607105713,0.0963754177877253,1.96383205876046,2.37785297910397,2.32754904192772,1.46575559988392,2.12125595532694,2.16790057668494,0.811798890724718,-0.1526632179265,1.14839156112882,1.49553867728376,1.08070575385075,0.871309430563764 11 | 0.000934349045301266,0.244844220356515,0.428993962341483,0.609978798744341,0.0953028113645452,0.117532347187836,0.65285818410061,1.87632197984151,1.47000233777904,1.46575559988392,2.30912671148125,1.61318258985714,2.05085039134168,0.424757399030885,-0.353061456022187,0.778277152440635,1.25048882171891,1.66180495154944,0.634138204554068 12 | 0.000143237608999131,-0.192199012324799,-0.283105369098233,0.944490039999418,-0.115392970190764,-0.084036293456684,0.0497158752684938,1.93356085525137,2.74119928677365,2.12125595532694,1.61318258985714,3.52492569585856,2.99687135584015,1.41352865105512,0.254021183495816,1.70954324783655,1.15876657683156,0.776568818538266,1.36274585862119 13 | 0.000488292566883948,0.0289992614098961,0.0829775765490756,0.912390187281805,-0.00618297097790919,0.0374843856886381,0.450699275211364,2.10814950255352,2.63018931631541,2.16790057668494,2.05085039134168,2.99687135584015,3.63779394911656,1.33681388955161,0.0876211992902629,1.70665445498739,1.45339752108157,1.4474382321161,1.24840526987495 14 | -0.000566117208806406,-0.237587564727035,-0.275970355841533,0.182997124415018,-0.101926998109812,-0.0410345429261245,-0.0553295735912665,0.496265670657488,1.15190523367106,0.811798890724718,0.424757399030885,1.41352865105512,1.33681388955161,2.77728565058893,1.55964773274846,1.65458692806666,0.586939732820572,0.117702853493799,0.14589792114357 15 | -0.000779191882989144,-0.121424345757737,-0.015248528185549,-0.00757778086770011,-0.0481509782181951,0.00194716159337756,0.0476619090986098,-0.395519227863876,0.0763706169728121,-0.1526632179265,-0.353061456022187,0.254021183495816,0.0876211992902629,1.55964773274846,2.09172165541007,0.787388135430936,0.0295928261752938,-0.516237643662565,-0.0750681293298945 16 | -0.000169562769668063,-0.0246341828853669,0.0165099145130048,0.512506044938032,-0.0323822538289364,0.0167089909822646,0.218754277377195,0.931816347894912,1.54950869017959,1.14839156112882,0.778277152440635,1.70954324783655,1.70665445498739,1.65458692806666,0.787388135430936,1.92664746373644,0.709762677047096,0.482181550036656,0.987599338879335 17 | 0.000260115655181002,0.243759388882417,0.247570626687125,0.422239222753264,0.0811111209097278,0.138046721561852,0.501906650309321,1.6671322276515,1.38882802084386,1.49553867728376,1.25048882171891,1.15876657683156,1.45339752108157,0.586939732820572,0.0295928261752938,0.709762677047096,2.19304947608628,1.61629713256168,0.00115833691215522 18 | 0.000493268807204866,0.535272402191605,0.789574174131308,0.599497030810723,0.233431543355422,0.273458395678156,0.955702163954157,1.56441451338137,0.844564207002717,1.08070575385075,1.66180495154944,0.776568818538266,1.4474382321161,0.117702853493799,-0.516237643662565,0.482181550036656,1.61629713256168,2.5822725505705,0.494575515432581 19 | 0.000801337080421232,0.039704154004141,0.0878205182297697,0.584645278296459,0.0325625997727219,0.0339795423167908,0.208329815882547,0.581932850928383,1.13614406862026,0.871309430563764,0.634138204554068,1.36274585862119,1.24840526987495,0.14589792114357,-0.0750681293298945,0.987599338879335,0.00115833691215522,0.494575515432581,3.95049150675523 20 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_many_constraints_SCIPY.csv: -------------------------------------------------------------------------------- 1 | 0.000000000000000000e+00,0.000000000000000000e+00,2.099999999999999922e-01,1.400000000000000133e-01,0.000000000000000000e+00,2.999999999999990175e-02,3.499999999999999778e-01,5.060000000000000608e-02,0.000000000000000000e+00,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,2.970000000000000070e-02,1.100000000000000283e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,3.499999999999999778e-01,3.200000000000000622e-01,-3.469446951953614189e-18,0.000000000000000000e+00,1.000000000000000056e-01,4.290000000000000757e-02,3.409999999999999837e-02,4.509999999999999426e-02,9.900000000000009487e-03,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 2 | 0.000000000000000000e+00,0.000000000000000000e+00,2.099999999999999922e-01,1.400000000000000133e-01,0.000000000000000000e+00,2.999999999999990175e-02,3.499999999999999778e-01,1.387778780781445676e-17,5.059999999999999221e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,2.970000000000000070e-02,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,3.499999999999999778e-01,3.200000000000000622e-01,-3.469446951953614189e-18,0.000000000000000000e+00,1.000000000000000056e-01,4.290000000000000757e-02,3.409999999999999837e-02,4.509999999999999426e-02,9.900000000000009487e-03,0.000000000000000000e+00,2.200000000000000219e-02,2.199999999999999872e-02 3 | 0.000000000000000000e+00,0.000000000000000000e+00,2.099999999999999922e-01,1.400000000000000133e-01,0.000000000000000000e+00,2.999999999999990175e-02,3.499999999999999778e-01,1.387778780781445676e-17,5.060000000000000608e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,2.970000000000000070e-02,1.099999999999999936e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,3.499999999999999778e-01,3.200000000000000622e-01,-3.469446951953614189e-18,0.000000000000000000e+00,1.000000000000000056e-01,4.290000000000001451e-02,3.409999999999999143e-02,4.510000000000000120e-02,9.900000000000009487e-03,0.000000000000000000e+00,2.200000000000000566e-02,2.200000000000000219e-02 4 | 0.000000000000000000e+00,0.000000000000000000e+00,2.099999999999999922e-01,1.400000000000000133e-01,0.000000000000000000e+00,2.999999999999988787e-02,3.499999999999999778e-01,1.387778780781445676e-17,7.259999999999999787e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,7.700000000000012390e-03,1.099999999999999936e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,3.499999999999999778e-01,3.200000000000000622e-01,-3.469446951953614189e-18,0.000000000000000000e+00,1.000000000000000056e-01,6.490000000000001323e-02,1.209999999999999964e-02,2.309999999999998166e-02,3.190000000000001168e-02,0.000000000000000000e+00,2.200000000000000219e-02,2.200000000000000219e-02 5 | 0.000000000000000000e+00,0.000000000000000000e+00,2.099999999999999922e-01,1.400000000000000133e-01,0.000000000000000000e+00,2.999999999999988787e-02,3.499999999999999778e-01,1.387778780781445676e-17,7.259999999999999787e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,7.700000000000008921e-03,1.099999999999999936e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,3.499999999999999778e-01,3.200000000000000622e-01,-3.469446951953614189e-18,0.000000000000000000e+00,1.000000000000000056e-01,6.489999999999999936e-02,1.210000000000000138e-02,2.310000000000000248e-02,3.190000000000000474e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 6 | 0.000000000000000000e+00,0.000000000000000000e+00,1.718202919730953959e-01,1.400000000000000133e-01,0.000000000000000000e+00,6.817970802690453969e-02,3.499999999999999778e-01,1.387778780781445676e-17,7.259999999999999787e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,7.700000000000008921e-03,1.099999999999999936e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,3.881797080269046019e-01,2.818202919730954381e-01,-3.469446951953614189e-18,0.000000000000000000e+00,1.000000000000000056e-01,6.490000000000001323e-02,1.210000000000000138e-02,2.310000000000000941e-02,3.190000000000000474e-02,0.000000000000000000e+00,2.200000000000000219e-02,2.199999999999999872e-02 7 | 0.000000000000000000e+00,0.000000000000000000e+00,1.369526032024983575e-01,1.400000000000000133e-01,0.000000000000000000e+00,1.030473967975015226e-01,3.499999999999999778e-01,5.116661766733282546e-03,7.259999999999999787e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,2.583338233266868622e-03,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,4.230473967975015848e-01,2.469526032024984552e-01,-3.469446951953614189e-18,0.000000000000000000e+00,1.000000000000000056e-01,7.001666176673318476e-02,6.983338233266828121e-03,1.798333823326683789e-02,3.701666176673315545e-02,0.000000000000000000e+00,2.200000000000000219e-02,2.199999999999999872e-02 8 | 0.000000000000000000e+00,0.000000000000000000e+00,1.240984040386705622e-01,1.400000000000000133e-01,0.000000000000000000e+00,1.229705153665769934e-01,3.499999999999999778e-01,7.700000000000095657e-03,7.259999999999999787e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,7.931080594752309976e-03,0.000000000000000000e+00,4.359015959613293245e-01,2.270294846334230399e-01,-3.469446951953614189e-18,7.068919405247675591e-03,1.000000000000000056e-01,7.259999999999999787e-02,4.399999999999959499e-03,1.539999999999996927e-02,3.960000000000002407e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 9 | 0.000000000000000000e+00,0.000000000000000000e+00,1.101905139478557838e-01,1.400000000000000133e-01,0.000000000000000000e+00,1.448094860521441651e-01,3.499999999999999778e-01,7.700000000000021931e-03,7.259999999999999787e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,4.498094860521441585e-01,2.051905139478558127e-01,-3.469446951953614189e-18,1.500000000000004108e-02,1.000000000000000056e-01,7.260000000000001175e-02,4.399999999999993326e-03,1.539999999999999702e-02,3.960000000000001019e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 10 | 0.000000000000000000e+00,0.000000000000000000e+00,7.489207220241705931e-02,1.400000000000000133e-01,0.000000000000000000e+00,1.801079277975827786e-01,3.499999999999999778e-01,7.700000000000021931e-03,7.259999999999999787e-02,3.629999999999999893e-02,0.000000000000000000e+00,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,4.851079277975827164e-01,1.698920722024170882e-01,-3.469446951953614189e-18,1.500000000000002720e-02,1.000000000000000056e-01,7.260000000000001175e-02,4.399999999999993326e-03,1.539999999999999702e-02,3.960000000000001019e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 11 | 0.000000000000000000e+00,0.000000000000000000e+00,4.569555291617249937e-02,1.400000000000000133e-01,0.000000000000000000e+00,2.093044470838274496e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,7.700000000000040146e-03,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,5.143044470838273874e-01,1.406955529161725282e-01,-3.469446951953614189e-18,1.500000000000002720e-02,1.000000000000000056e-01,6.489999999999995772e-02,1.210000000000022169e-02,2.310000000000023146e-02,3.189999999999981739e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 12 | 0.000000000000000000e+00,0.000000000000000000e+00,2.300633360279746853e-02,1.400000000000000133e-01,0.000000000000000000e+00,2.319936663972023139e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,7.700000000000028870e-03,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,5.369936663972023627e-01,1.180063336027976084e-01,-3.469446951953614189e-18,1.500000000000002720e-02,1.000000000000000056e-01,6.489999999999998548e-02,1.210000000000002046e-02,2.310000000000002329e-02,3.189999999999998392e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 13 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.148876682046655606e-01,0.000000000000000000e+00,2.801123317953344571e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,7.700000000000028003e-03,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,5.851123317953342839e-01,6.988766820466563168e-02,-3.469446951953614189e-18,1.500000000000002720e-02,1.000000000000000056e-01,6.489999999999998548e-02,1.210000000000002220e-02,2.310000000000003023e-02,3.189999999999997699e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 14 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,4.499999999999992895e-02,0.000000000000000000e+00,3.499999999999999778e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,7.700000000000026268e-03,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.550000000000000266e-01,0.000000000000000000e+00,-3.469446951953614189e-18,1.500000000000002720e-02,1.000000000000000056e-01,6.489999999999998548e-02,1.210000000000002220e-02,2.310000000000002676e-02,3.189999999999998392e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 15 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,4.499999999999979711e-02,0.000000000000000000e+00,3.499999999999999778e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,7.700000000000025401e-03,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.550000000000001377e-01,0.000000000000000000e+00,-3.469446951953614189e-18,1.500000000000002720e-02,1.000000000000000056e-01,6.489999999999998548e-02,1.210000000000002220e-02,2.310000000000001982e-02,3.189999999999998392e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 16 | 4.499999999999970690e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999999778e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,7.700000000000027135e-03,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,0.000000000000000000e+00,-3.469446951953614189e-18,1.500000000000002720e-02,1.000000000000000056e-01,6.489999999999998548e-02,1.210000000000002046e-02,2.310000000000003023e-02,3.189999999999998392e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 17 | 4.499999999999968608e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999999778e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,7.700000000000027135e-03,5.939999999999999447e-02,0.000000000000000000e+00,1.100000000000000110e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,0.000000000000000000e+00,-3.469446951953614189e-18,1.500000000000002720e-02,1.000000000000000056e-01,6.489999999999997160e-02,1.210000000000002046e-02,2.310000000000002329e-02,3.189999999999998392e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.199999999999999872e-02 18 | 5.310526315789437790e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999999778e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,2.775557561562891351e-17,5.939999999999999447e-02,0.000000000000000000e+00,1.059473684210526095e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,0.000000000000000000e+00,8.105263157894782022e-03,1.500000000000002720e-02,1.000000000000000056e-01,6.652105263157893911e-02,7.642105263157894512e-03,1.702105263157893678e-02,3.595263157894737494e-02,0.000000000000000000e+00,2.118947368421052191e-02,2.240526315789473366e-02 19 | 5.310526315789437096e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999999778e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,2.775557561562891351e-17,5.939999999999999447e-02,0.000000000000000000e+00,1.059473684210526269e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,0.000000000000000000e+00,8.105263157894733450e-03,1.500000000000002720e-02,1.000000000000000056e-01,6.652105263157893911e-02,7.642105263157917064e-03,1.702105263157897147e-02,3.595263157894735412e-02,0.000000000000000000e+00,2.118947368421052191e-02,2.240526315789473713e-02 20 | 1.188193776595276585e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.842858854983664196e-01,3.499999999999999778e-01,0.000000000000000000e+00,7.259999999999999787e-02,3.629999999999999893e-02,2.775557561562891351e-17,5.939999999999999447e-02,0.000000000000000000e+00,1.059473684210526442e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,6.571411450163355816e-02,8.105263157894731715e-03,1.500000000000002720e-02,1.000000000000000056e-01,6.652105263157893911e-02,7.642105263157917064e-03,1.702105263157896453e-02,3.595263157894735412e-02,0.000000000000000000e+00,2.118947368421052538e-02,2.240526315789473713e-02 21 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.138863938391557529e-01,3.499999999999999778e-01,0.000000000000000000e+00,6.235792585280172662e-02,3.629999999999999893e-02,2.775557561562891351e-17,5.939999999999999447e-02,0.000000000000000000e+00,1.005568030804219679e-02,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,1.361136061608441139e-01,1.888639383915607928e-02,1.500000000000002720e-02,1.000000000000000056e-01,5.843520462063295229e-02,1.195455753566243562e-02,1.917727876783123508e-02,3.110112277237974537e-02,0.000000000000000000e+00,2.011136061608439357e-02,2.294431969195780130e-02 22 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.309571859801987093e-01,3.499999999999999778e-01,0.000000000000000000e+00,4.614067331881104711e-02,3.629999999999999893e-02,2.775557561562891351e-17,5.939999999999999447e-02,0.000000000000000000e+00,9.202140700990055211e-03,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,1.190428140198012547e-01,3.595718598019888301e-02,1.500000000000002720e-02,1.000000000000000056e-01,4.563211051485083214e-02,1.878287439207956128e-02,2.259143719603980138e-02,2.341926630891048855e-02,0.000000000000000000e+00,1.840428140198011042e-02,2.379785929900994634e-02 23 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,5.036439804636292372e-01,1.258823353258442246e-01,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,5.939999999999999447e-02,0.000000000000000000e+00,6.773684210526315433e-03,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,7.047368421052659093e-02,8.452631578947369939e-02,1.500000000000002720e-02,1.000000000000000056e-01,9.205263157894716386e-03,3.821052631578950032e-02,3.230526315789475356e-02,1.563157894736828812e-03,0.000000000000000000e+00,1.354736842105263087e-02,2.622631578947369133e-02 24 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,5.447210176818561012e-01,8.480529810761702758e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,5.939999999999999447e-02,0.000000000000000000e+00,6.773684210526316300e-03,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,7.047368421052667420e-02,8.452631578947368551e-02,1.500000000000002720e-02,1.000000000000000056e-01,9.205263157894716386e-03,3.821052631578950726e-02,3.230526315789476050e-02,1.563157894736830764e-03,0.000000000000000000e+00,1.354736842105263087e-02,2.622631578947368786e-02 25 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.494951693160244677e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,4.042958914977633211e-02,0.000000000000000000e+00,5.775241534198755078e-03,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.050483068397552955e-02,1.044951693160249551e-01,1.500000000000002720e-02,1.000000000000000056e-01,1.319903386320495607e-02,2.722765687618632774e-02,1.732862301298133609e-02,1.154758465801244624e-02,0.000000000000000000e+00,1.155048306839750842e-02,2.722475846580124995e-02 26 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.523424583489888517e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,3.772466456846013116e-02,0.000000000000000000e+00,5.632877082550533793e-03,3.300000000000000155e-02,0.000000000000000000e+00,3.500000000000000333e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,4.765754165101111078e-02,1.073424583489893669e-01,1.500000000000002720e-02,1.000000000000000056e-01,1.376849166979784295e-02,2.566164790805589360e-02,1.519315623825801681e-02,1.297122917449465562e-02,0.000000000000000000e+00,1.126575416510106585e-02,2.736712291744946776e-02 27 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.784255994494368114e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,3.534134994138653230e-02,0.000000000000000000e+00,5.507439470599291564e-03,3.300000000000000155e-02,0.000000000000000000e+00,1.142561113857676336e-02,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,2.157440055056310257e-02,1.098512105880141837e-01,3.857438886142325329e-02,1.000000000000000056e-01,1.427024211760281186e-02,2.428183417659224297e-02,1.331159205898940420e-02,1.422560529400706750e-02,0.000000000000000000e+00,1.101487894119858139e-02,2.749256052940071346e-02 28 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.374444169347343037e-01,5.542316338000599085e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,3.360775180194522371e-02,0.000000000000000000e+00,5.416197463260274958e-03,3.300000000000000155e-02,0.000000000000000000e+00,0.000000000000000000e+00,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,1.457683661999400471e-01,1.116760507347945158e-01,5.000000000000003747e-02,1.000000000000000056e-01,1.463521014695887655e-02,2.327817209586306377e-02,1.194296194890415511e-02,1.513802536739723009e-02,0.000000000000000000e+00,1.083239492652054818e-02,2.758380253673973007e-02 29 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.019999999999999796e-01,1.048699980874261695e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,1.917350181694525008e-02,0.000000000000000000e+00,4.656500095628697718e-03,3.300000000000000155e-02,0.000000000000000000e+00,0.000000000000000000e+00,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.951300019125738139e-01,1.268699980874260502e-01,5.000000000000002359e-02,1.000000000000000056e-01,1.767399961748520112e-02,1.492150105191569591e-02,5.475014344304748176e-04,2.273499904371301811e-02,0.000000000000000000e+00,9.313000191257393701e-03,2.834349990437130470e-02 30 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.019999999999999796e-01,1.055999999999994027e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,1.847999999999996867e-02,0.000000000000000000e+00,4.619999999999999107e-03,3.300000000000000155e-02,0.000000000000000000e+00,0.000000000000000000e+00,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.944000000000004835e-01,1.275999999999999912e-01,5.000000000000003053e-02,1.000000000000000056e-01,1.781999999999999210e-02,1.452000000000000512e-02,0.000000000000000000e+00,2.310000000000000248e-02,0.000000000000000000e+00,9.239999999999998215e-03,2.838000000000000245e-02 31 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.019999999999999796e-01,1.055999999999993888e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.629999999999999893e-02,2.775557561562891351e-17,1.847999999999996520e-02,0.000000000000000000e+00,4.619999999999999975e-03,3.300000000000000155e-02,0.000000000000000000e+00,0.000000000000000000e+00,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.944000000000004835e-01,1.276000000000000190e-01,5.000000000000003053e-02,1.000000000000000056e-01,1.781999999999999210e-02,1.452000000000000339e-02,0.000000000000000000e+00,2.310000000000000248e-02,0.000000000000000000e+00,9.239999999999998215e-03,2.838000000000000245e-02 32 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.019999999999999796e-01,1.095816006956251976e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.331379947828062155e-02,2.775557561562891351e-17,1.768367986087479929e-02,0.000000000000000000e+00,4.420919965218707628e-03,3.300000000000000155e-02,0.000000000000000000e+00,0.000000000000000000e+00,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.904183993043746748e-01,1.315816006956258555e-01,5.000000000000003053e-02,1.000000000000000056e-01,1.563011961740579103e-02,1.531632013912517104e-02,0.000000000000000000e+00,2.210459982609355029e-02,0.000000000000000000e+00,8.841839930437415257e-03,2.857908003478129566e-02 33 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.019999999999999796e-01,1.112305413977529578e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.149713592048547506e-02,2.775557561562891351e-17,1.735389172044923822e-02,0.000000000000000000e+00,4.918430961311620261e-03,3.300000000000000155e-02,0.000000000000000000e+00,0.000000000000000000e+00,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.887694586022470533e-01,1.332305413977536712e-01,5.000000000000003053e-02,1.000000000000000056e-01,1.414324420003620388e-02,1.622606631075003414e-02,0.000000000000000000e+00,2.169236465056159982e-02,5.799580311993002973e-04,8.096987829025337896e-03,2.866152706988768506e-02 34 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.019999999999999796e-01,1.195964339185003056e-01,0.000000000000000000e+00,0.000000000000000000e+00,1.370129317964394189e-02,1.131095875702699087e-02,2.775557561562891351e-17,1.568071321629976866e-02,0.000000000000000000e+00,4.710600928528266111e-03,3.300000000000000155e-02,0.000000000000000000e+00,0.000000000000000000e+00,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.804035660814996778e-01,1.415964339185010190e-01,5.000000000000003053e-02,1.000000000000000056e-01,9.331538720371143278e-03,1.810970940815351607e-02,0.000000000000000000e+00,1.960089152037476287e-02,7.904226244533150546e-04,7.049933983696584673e-03,2.907982169592505592e-02 35 | 1.999999999999999556e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.019999999999999796e-01,1.281293960244442309e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.087473788078449133e-02,5.464588935957803706e-05,2.775557561562891351e-17,1.397412079511098186e-02,0.000000000000000000e+00,1.013626684544558648e-02,2.483083256485437568e-02,0.000000000000000000e+00,0.000000000000000000e+00,-2.775557561562891351e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.718706039755556692e-01,1.501293960244449444e-01,5.000000000000003053e-02,1.000000000000000056e-01,6.955262975033085771e-03,1.749944841641119450e-02,0.000000000000000000e+00,1.746765099388877807e-02,6.642736646667826705e-03,3.443237508876789699e-04,2.133730236607662631e-02 36 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_many_constraints_TWO_STAGE_SIMPLEX.csv: -------------------------------------------------------------------------------- 1 | 0.000000000000000000e+00,1.500000000000027700e-02,9.000000000000202283e-03,6.000000000000102474e-03,0.000000000000000000e+00,3.499999999999996447e-01,3.499999999999997002e-01,3.849999999999997868e-02,3.849999999999997868e-02,3.299999999999997380e-02,1.539999999999996927e-02,2.639999999999996863e-02,2.200000000000017480e-03,1.099999999999990222e-02,3.299999999999991829e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,6.699999999999991518e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999996987e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000913e-02,2.199999999999999872e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000566e-02,-2.026157019940910329e-17,1.500000000000033251e-02,6.000000000000151046e-03,0.000000000000000000e+00,6.000000000000102474e-03,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999997002e-01,2.799999999999998601e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997585e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.634803403760537678e-17,0.000000000000000000e+00,1.099999999999999936e-02,1.099999999999998375e-02,0.000000000000000000e+00,2.200000000000017480e-03,1.099999999999996293e-02,1.999999999999999695e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.999999999999999695e-02 2 | 2.390517082653531578e-02,3.047414586732632991e-03,1.828448752039607550e-03,1.218965834693053196e-03,0.000000000000000000e+00,3.499999999999997002e-01,3.499999999999997002e-01,3.849999999999997868e-02,3.849999999999997868e-02,3.299999999999997380e-02,1.539999999999996927e-02,2.639999999999996863e-02,2.200000000000017480e-03,1.099999999999990222e-02,3.299999999999991829e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.499999999999999944e-02,0.000000000000000000e+00,6.939051708265346896e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999996987e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000913e-02,2.199999999999999872e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000566e-02,-1.959806842292867600e-17,3.047414586732577479e-03,1.218965834693080952e-03,0.000000000000000000e+00,1.218965834693053196e-03,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999997002e-01,2.799999999999998601e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997585e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.634803403760537987e-17,0.000000000000000000e+00,1.099999999999999936e-02,1.099999999999998375e-02,0.000000000000000000e+00,2.200000000000017480e-03,1.099999999999996293e-02,1.999999999999999695e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.999999999999999695e-02 3 | 2.390517082653520475e-02,3.047414586732494213e-03,1.828448752039579794e-03,1.218965834693039318e-03,0.000000000000000000e+00,3.499999999999997002e-01,3.499999999999997002e-01,3.849999999999997868e-02,3.849999999999997868e-02,3.299999999999997380e-02,1.539999999999996927e-02,2.639999999999996863e-02,2.200000000000017480e-03,1.099999999999990222e-02,3.299999999999991829e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.500000000000006883e-02,0.000000000000000000e+00,6.939051708265346896e-01,0.000000000000000000e+00,0.000000000000000000e+00,-5.551115123125782702e-17,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999996987e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000913e-02,2.199999999999999872e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000566e-02,-1.959806842292867908e-17,3.047414586732605235e-03,1.218965834693025441e-03,0.000000000000000000e+00,1.218965834693039318e-03,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999997002e-01,2.799999999999998601e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997585e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.634803403760537678e-17,0.000000000000000000e+00,1.099999999999999936e-02,1.099999999999998375e-02,0.000000000000000000e+00,2.200000000000017480e-03,1.099999999999996293e-02,2.000000000000000389e-02,-1.387778780781445676e-17,-1.387778780781445676e-17,2.000000000000000389e-02 4 | 3.000000000000035971e-02,5.551115123125782702e-17,5.551115123125782702e-17,5.551115123125782702e-17,0.000000000000000000e+00,3.499999999999997002e-01,3.499999999999997002e-01,3.849999999999997868e-02,3.849999999999997868e-02,3.299999999999997380e-02,1.539999999999996927e-02,2.639999999999996863e-02,2.200000000000017480e-03,1.099999999999990222e-02,3.299999999999991829e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.500000000000007751e-02,0.000000000000000000e+00,6.999999999999998446e-01,0.000000000000000000e+00,0.000000000000000000e+00,-7.838607528369030114e-17,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999996987e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000913e-02,2.199999999999999872e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000566e-02,-1.942890293094022898e-17,5.551115123125782702e-17,0.000000000000000000e+00,0.000000000000000000e+00,5.551115123125782702e-17,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999997002e-01,2.799999999999998601e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997585e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.634803403760537987e-17,0.000000000000000000e+00,1.099999999999999936e-02,1.099999999999998375e-02,0.000000000000000000e+00,2.200000000000017480e-03,1.099999999999996293e-02,2.000000000000001429e-02,-1.387778780781445676e-17,-4.763314943714510933e-17,2.000000000000001429e-02 5 | 3.000000000000028338e-02,5.551115123125782702e-17,9.406724012670333516e-17,6.479334207888862323e-17,0.000000000000000000e+00,3.499999999999997002e-01,3.499999999999997002e-01,3.849999999999997868e-02,3.849999999999997868e-02,3.299999999999997380e-02,1.539999999999996927e-02,2.639999999999996863e-02,2.200000000000017480e-03,1.099999999999990222e-02,3.299999999999991829e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.500000000000006710e-02,0.000000000000000000e+00,6.999999999999997335e-01,0.000000000000000000e+00,0.000000000000000000e+00,-6.792578151484842228e-17,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999996987e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000913e-02,2.199999999999999872e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000566e-02,-1.942890293094022590e-17,1.090787907032420944e-16,4.075192351065620705e-17,0.000000000000000000e+00,6.479334207888862323e-17,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999997002e-01,2.799999999999998601e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997585e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.634803403760537678e-17,0.000000000000000000e+00,1.099999999999999936e-02,1.099999999999998375e-02,0.000000000000000000e+00,2.200000000000017480e-03,1.099999999999996293e-02,2.000000000000001082e-02,-1.387778780781445676e-17,-4.171115378071786098e-17,2.000000000000001082e-02 6 | 3.000000000000047073e-02,5.551115123125782702e-17,1.665334536937734811e-16,8.326672684688674053e-17,0.000000000000000000e+00,3.499999999999997002e-01,3.499999999999997002e-01,3.849999999999997868e-02,3.849999999999997868e-02,3.299999999999997380e-02,1.539999999999996927e-02,2.639999999999996863e-02,2.200000000000017480e-03,1.099999999999990222e-02,3.299999999999991829e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.500000000000006710e-02,0.000000000000000000e+00,6.999999999999998446e-01,0.000000000000000000e+00,0.000000000000000000e+00,-6.829204144925178032e-17,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999996987e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000913e-02,2.199999999999999872e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000566e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.110223024625156540e-16,0.000000000000000000e+00,8.326672684688674053e-17,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999997002e-01,2.799999999999998601e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997585e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.634803403760537678e-17,0.000000000000000000e+00,1.099999999999999936e-02,1.099999999999998375e-02,0.000000000000000000e+00,2.200000000000017480e-03,1.099999999999996293e-02,2.000000000000000736e-02,-1.387778780781445676e-17,-4.171115378071786098e-17,2.000000000000000736e-02 7 | 3.000000000000046380e-02,5.551115123125782702e-17,-2.367230356118333441e-17,4.396593801757101802e-17,0.000000000000000000e+00,3.499999999999997002e-01,3.499999999999997002e-01,3.849999999999997868e-02,3.849999999999997868e-02,3.299999999999997380e-02,1.539999999999996927e-02,2.639999999999996863e-02,2.200000000000017480e-03,1.099999999999990222e-02,3.299999999999991829e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.500000000000004108e-02,0.000000000000000000e+00,6.999999999999997335e-01,0.000000000000000000e+00,0.000000000000000000e+00,-4.106442687496335479e-17,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999996987e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000913e-02,2.199999999999999872e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000566e-02,3.545966766974213361e-17,0.000000000000000000e+00,6.187462307173789987e-17,4.536861612615241319e-17,4.396593801757101802e-17,0.000000000000000000e+00,0.000000000000000000e+00,3.499999999999997002e-01,2.799999999999998601e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997585e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.634803403760537678e-17,0.000000000000000000e+00,1.099999999999999936e-02,1.099999999999998375e-02,0.000000000000000000e+00,2.200000000000017480e-03,1.099999999999996293e-02,2.000000000000000736e-02,-1.387778780781445676e-17,-3.243102660071478042e-17,2.000000000000000389e-02 8 | 8.629235457177941715e-02,5.551115123125782702e-17,-2.239995669660975849e-17,4.227293663343412819e-17,0.000000000000000000e+00,3.218538227141102270e-01,3.218538227141102270e-01,3.849999999999997868e-02,3.849999999999997868e-02,3.299999999999997380e-02,1.539999999999996927e-02,2.639999999999996863e-02,2.200000000000017913e-03,1.099999999999990916e-02,3.299999999999992523e-02,2.200000000000002301e-02,3.500000000000000333e-02,1.500000000000003587e-02,0.000000000000000000e+00,6.999999999999998446e-01,5.629235457177894641e-02,0.000000000000000000e+00,-3.728820827195956060e-17,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999997334e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000913e-02,2.200000000000000219e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000913e-02,3.699897249560780473e-17,0.000000000000000000e+00,5.447757136137957267e-17,4.641374934138755063e-17,4.227293663343412819e-17,0.000000000000000000e+00,0.000000000000000000e+00,3.218538227141102270e-01,2.574830581712882482e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997585e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.353566597058751757e-17,0.000000000000000000e+00,1.099999999999999936e-02,1.099999999999998548e-02,0.000000000000000000e+00,2.200000000000017913e-03,1.099999999999996467e-02,2.000000000000000389e-02,-1.387778780781445676e-17,-3.091517524063284714e-17,2.000000000000000389e-02 9 | 1.040124172064634811e-01,5.551115123125782702e-17,-2.207004180069651246e-17,4.180561953377975517e-17,0.000000000000000000e+00,3.129937913967681395e-01,3.129937913967683061e-01,3.849999999999996481e-02,3.849999999999998562e-02,3.299999999999997380e-02,1.759999999999993514e-02,2.639999999999996863e-02,-1.387778780781445676e-17,1.099999999999991263e-02,3.299999999999992523e-02,2.200000000000002301e-02,3.500000000000000333e-02,1.500000000000003587e-02,0.000000000000000000e+00,6.999999999999999556e-01,7.401241720646323241e-02,0.000000000000000000e+00,-3.636928403233265175e-17,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999997508e-02,0.000000000000000000e+00,5.499999999999999334e-02,0.000000000000000000e+00,2.200000000000000566e-02,2.200000000000000219e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000913e-02,3.748517817697487031e-17,0.000000000000000000e+00,5.226348932151732414e-17,4.673930896628557870e-17,4.180561953377975517e-17,0.000000000000000000e+00,0.000000000000000000e+00,3.129937913967683061e-01,2.503950331174147337e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999998279e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999996686e-02,1.210081060433090518e-17,2.199999999999979750e-03,8.799999999999960631e-03,1.099999999999998375e-02,0.000000000000000000e+00,-1.387778780781445676e-17,1.319999999999994789e-02,2.000000000000000389e-02,-1.387778780781445676e-17,-3.046145132428407664e-17,2.000000000000000389e-02 10 | 2.000000000000000666e-01,5.551115123125782702e-17,-1.990048430155827565e-17,3.891877794106934290e-17,0.000000000000000000e+00,2.649999999999998468e-01,2.649999999999998468e-01,3.849999999999995787e-02,3.849999999999998562e-02,3.299999999999998074e-02,1.759999999999995943e-02,2.639999999999997210e-02,-1.387778780781445676e-17,1.099999999999992477e-02,3.299999999999993217e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.500000000000002894e-02,0.000000000000000000e+00,6.999999999999999556e-01,1.699999999999998179e-01,0.000000000000000000e+00,-2.970694669366684353e-17,1.000000000000000056e-01,6.599999999999997535e-02,1.099999999999998028e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.200000000000000219e-02,2.199999999999999872e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000566e-02,4.010994224202870157e-17,0.000000000000000000e+00,3.965031797920416253e-17,4.852143038918223394e-17,3.891877794106934290e-17,0.000000000000000000e+00,0.000000000000000000e+00,2.649999999999998468e-01,2.119999999999999107e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999997932e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999997380e-02,7.305267502033492767e-18,2.199999999999993194e-03,8.799999999999957162e-03,1.099999999999998201e-02,0.000000000000000000e+00,-1.387778780781445676e-17,1.319999999999995483e-02,2.000000000000000389e-02,-1.387778780781445676e-17,-2.787667921738939021e-17,2.000000000000000042e-02 11 | 2.000000000000000666e-01,5.551115123125782702e-17,-2.620561337781004083e-17,3.608747106282815377e-17,0.000000000000000000e+00,2.649999999999999023e-01,2.649999999999999578e-01,3.849999999999995787e-02,3.849999999999997868e-02,3.299999999999998074e-02,1.759999999999996637e-02,2.639999999999997210e-02,-1.387778780781445676e-17,1.099999999999992650e-02,3.299999999999993910e-02,2.200000000000002301e-02,3.500000000000000333e-02,1.500000000000002547e-02,0.000000000000000000e+00,6.999999999999998446e-01,1.699999999999996236e-01,0.000000000000000000e+00,-2.592376119097431934e-17,1.000000000000000056e-01,6.599999999999996148e-02,1.099999999999997854e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.199999999999999872e-02,2.200000000000000219e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000913e-02,4.101662821467788235e-17,0.000000000000000000e+00,3.972022970249972478e-17,4.652569232688660081e-17,3.608747106282815377e-17,0.000000000000000000e+00,0.000000000000000000e+00,2.649999999999999578e-01,2.119999999999999662e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.749999999999998626e-02,0.000000000000000000e+00,2.749999999999999320e-02,3.299999999999997380e-02,7.305267502033500471e-18,2.199999999999997097e-03,8.799999999999957162e-03,1.099999999999998375e-02,0.000000000000000000e+00,-1.387778780781445676e-17,1.319999999999996003e-02,2.000000000000000389e-02,-1.387778780781445676e-17,-2.666614003620807067e-17,2.000000000000000042e-02 12 | 2.000000000000000666e-01,5.551115123125782702e-17,-1.556876468394921393e-17,3.544386864190626286e-17,0.000000000000000000e+00,3.159647058575211220e-01,2.140352941424790156e-01,3.849999999999995093e-02,3.849999999999997868e-02,3.299999999999998074e-02,1.759999999999996984e-02,2.639999999999997210e-02,-1.387778780781445676e-17,1.099999999999994038e-02,3.299999999999994604e-02,2.200000000000002648e-02,3.500000000000000333e-02,1.500000000000002200e-02,0.000000000000000000e+00,6.999999999999997335e-01,1.699999999999996791e-01,0.000000000000000000e+00,-2.476732090296168049e-17,1.000000000000000056e-01,6.599999999999996148e-02,1.099999999999998548e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.199999999999999525e-02,2.200000000000000219e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000913e-02,4.368284132667550064e-17,0.000000000000000000e+00,3.746300227241034826e-17,4.533611794464638901e-17,3.544386864190626286e-17,0.000000000000000000e+00,5.096470585752110871e-02,2.140352941424789046e-01,1.610352941424789130e-01,5.096470585752110871e-02,0.000000000000000000e+00,2.749999999999998626e-02,0.000000000000000000e+00,2.749999999999998973e-02,3.299999999999997380e-02,2.212870412269344051e-18,2.200000000000000133e-03,8.799999999999957162e-03,1.099999999999998375e-02,0.000000000000000000e+00,-1.387778780781445676e-17,1.319999999999996350e-02,2.000000000000000389e-02,-1.387778780781445676e-17,-2.505111922602700489e-17,2.000000000000000042e-02 13 | 2.000000000000000666e-01,5.551115123125782702e-17,-2.534447499323688987e-18,3.483841315626751750e-17,0.000000000000000000e+00,3.937397411813723935e-01,1.632316518615237744e-01,3.849999999999995093e-02,3.849999999999998562e-02,3.299999999999998768e-02,1.759999999999997677e-02,2.639999999999997210e-02,-1.387778780781445676e-17,1.099999999999995946e-02,3.299999999999995992e-02,2.200000000000002301e-02,1.612002486997284045e-02,6.908582087131236171e-03,0.000000000000000000e+00,6.999999999999998446e-01,1.430286069571038432e-01,0.000000000000000000e+00,2.697139304289589146e-02,1.000000000000000056e-01,6.599999999999996148e-02,1.099999999999998895e-02,0.000000000000000000e+00,5.499999999999998640e-02,0.000000000000000000e+00,2.199999999999999178e-02,2.200000000000000219e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.200000000000000913e-02,4.708715318172067610e-17,0.000000000000000000e+00,3.614038669122063874e-17,4.264579510729571359e-17,3.483841315626751750e-17,0.000000000000000000e+00,1.152540446599243373e-01,1.632316518615235523e-01,1.075345125572338967e-01,1.152540446599243373e-01,0.000000000000000000e+00,2.749999999999998973e-02,0.000000000000000000e+00,2.749999999999998973e-02,3.299999999999998768e-02,-2.863433193292954980e-18,2.200000000000001867e-03,8.799999999999958897e-03,1.099999999999998375e-02,0.000000000000000000e+00,-1.387778780781445676e-17,1.319999999999996523e-02,9.211442782841632038e-03,-1.387778780781445676e-17,-2.462842161357312896e-17,9.211442782841632038e-03 14 | 2.000000000000000666e-01,5.551115123125782702e-17,1.686052968240251160e-17,3.379029745556707523e-17,0.000000000000000000e+00,5.026920475694356405e-01,9.746348791905634634e-02,3.377872568297178579e-02,3.377872568297180661e-02,2.895319344254727173e-02,1.544170316935853000e-02,2.316255475403779934e-02,-1.387778780781445676e-17,9.651064480849076699e-03,2.895319344254725785e-02,1.930212896169820197e-02,4.776222426168375002e-03,2.046952468357874505e-03,0.000000000000000000e+00,6.999999999999998446e-01,9.984446451150796875e-02,2.697871038301818958e-02,4.317682510547375674e-02,1.000000000000000056e-01,5.790638688509451570e-02,9.651064480849087107e-03,0.000000000000000000e+00,4.825532240424544594e-02,0.000000000000000000e+00,1.930212896169817421e-02,1.930212896169819503e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.930212896169819503e-02,4.760518364098058442e-17,0.000000000000000000e+00,3.967619305544895017e-17,3.551579298216384774e-17,3.379029745556707523e-17,0.000000000000000000e+00,2.026142798251894805e-01,9.746348791905626308e-02,3.744793437020690896e-02,2.026142798251894805e-01,0.000000000000000000e+00,2.412766120212272297e-02,0.000000000000000000e+00,2.412766120212272297e-02,2.895319344254726479e-02,-7.083730626764616536e-18,1.930212896169821672e-03,7.720851584679234644e-03,9.651064480849080168e-03,0.000000000000000000e+00,-1.387778780781445676e-17,1.158127737701888232e-02,2.729269957810500496e-03,-1.387778780781445676e-17,-2.342559511190919518e-17,2.729269957810500496e-03 15 | 2.000000000000000666e-01,5.551115123125782702e-17,7.285838599102589797e-17,0.000000000000000000e+00,0.000000000000000000e+00,5.026920475694360846e-01,9.746348791905626308e-02,3.377872568297177192e-02,3.377872568297179273e-02,2.895319344254725785e-02,1.544170316935851786e-02,2.316255475403778546e-02,-1.387778780781445676e-17,9.651064480849069760e-03,2.895319344254723010e-02,1.930212896169818809e-02,4.776222426168305613e-03,2.046952468357864097e-03,0.000000000000000000e+00,6.999999999999998446e-01,9.984446451150780222e-02,2.697871038301825897e-02,4.317682510547377062e-02,1.000000000000000056e-01,5.790638688509445325e-02,9.651064480849083638e-03,0.000000000000000000e+00,4.825532240424541819e-02,0.000000000000000000e+00,1.930212896169814646e-02,1.930212896169818115e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.930212896169819503e-02,4.760518364098056593e-17,0.000000000000000000e+00,2.602085213965210642e-17,2.324529457808921507e-16,0.000000000000000000e+00,2.775557561562891351e-17,2.026142798251898136e-01,9.746348791905606879e-02,3.744793437020671467e-02,2.026142798251898136e-01,0.000000000000000000e+00,2.412766120212271256e-02,0.000000000000000000e+00,2.412766120212270909e-02,2.895319344254724050e-02,-7.083730626764638107e-18,1.930212896169819720e-03,7.720851584679232910e-03,9.651064480849073229e-03,0.000000000000000000e+00,-1.387778780781445676e-17,1.158127737701887192e-02,2.729269957810472741e-03,-1.387778780781445676e-17,-2.342559511190919826e-17,2.729269957810472741e-03 16 | 2.000000000000000666e-01,5.551115123125782702e-17,1.172758241352022760e-16,0.000000000000000000e+00,0.000000000000000000e+00,5.485655940924223373e-01,6.977229873394397153e-02,3.179086875538587181e-02,3.179086875538589957e-02,2.724931607604506867e-02,1.453296857389068698e-02,2.179945286083602440e-02,-1.387778780781445676e-17,9.083105358681680883e-03,2.724931607604504785e-02,1.816621071736339299e-02,6.938893903907228378e-18,1.040834085586084257e-17,0.000000000000000000e+00,6.999999999999998446e-01,8.166210717363367455e-02,3.833789282636623774e-02,4.999999999999995420e-02,1.000000000000000056e-01,5.449863215209009570e-02,9.083105358681682617e-03,0.000000000000000000e+00,4.541552679340843390e-02,0.000000000000000000e+00,1.816621071736335830e-02,1.816621071736337911e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.816621071736339299e-02,4.781066705093701989e-17,0.000000000000000000e+00,1.117704785112120036e-16,8.794607402147126654e-17,1.083452747915922248e-17,2.282951005790046284e-17,2.393966476792390718e-01,6.977229873394386050e-02,7.938509451307168563e-03,2.393966476792390718e-01,0.000000000000000000e+00,2.270776339670421695e-02,0.000000000000000000e+00,2.270776339670421695e-02,2.724931607604505479e-02,-8.860655017567731851e-18,1.816621071736340860e-03,7.266484286945315736e-03,9.083105358681679148e-03,0.000000000000000000e+00,-1.387778780781445676e-17,1.089972643041799832e-02,3.469446951953614189e-18,-1.387778780781445676e-17,-2.291915408911312504e-17,3.469446951953614189e-18 17 | 2.000000000000000666e-01,5.551115123125782702e-17,1.176867027596499653e-16,0.000000000000000000e+00,0.000000000000000000e+00,5.598561146576253034e-01,6.220623496195865076e-02,3.113908881657275612e-02,3.113908881657278388e-02,2.669064755706239411e-02,1.423501203043326356e-02,2.135251804564989447e-02,-1.387778780781445676e-17,8.896882519020793412e-03,2.669064755706237677e-02,1.779376503804161458e-02,6.938893903907228378e-18,9.938110683177470943e-18,0.000000000000000000e+00,6.999999999999998446e-01,7.793765038041589044e-02,4.206234961958402185e-02,4.999999999999996808e-02,1.000000000000000056e-01,5.338129511412476047e-02,8.896882519020795146e-03,0.000000000000000000e+00,4.448441259510396706e-02,0.000000000000000000e+00,1.779376503804157642e-02,1.779376503804160070e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.779376503804161458e-02,4.774201838821115137e-17,0.000000000000000000e+00,1.110714289568783656e-16,8.493181976873139795e-17,1.057176382785580412e-17,2.296649393927343985e-17,2.488249398478332708e-01,6.220623496195865076e-02,0.000000000000000000e+00,2.488249398478332708e-01,0.000000000000000000e+00,2.224220629755199741e-02,0.000000000000000000e+00,2.224220629755199047e-02,2.669064755706238717e-02,-9.292060907702305549e-18,1.779376503804162932e-03,7.117506015216604025e-03,8.896882519020788208e-03,0.000000000000000000e+00,-1.387778780781445676e-17,1.067625902282493336e-02,4.642226099779738215e-18,-1.387778780781445676e-17,-2.266759454925224234e-17,4.642226099779738215e-18 18 | 2.000000000000000666e-01,5.551115123125782702e-17,1.173332807374991100e-16,0.000000000000000000e+00,0.000000000000000000e+00,5.603680550934239113e-01,6.226311723260291586e-02,3.103954484294526445e-02,3.103954484294529220e-02,2.660532415109596524e-02,1.418950621391783760e-02,2.128425932087675554e-02,-1.387778780781445676e-17,8.868441383698650454e-03,2.660532415109595136e-02,1.773688276739732866e-02,6.938893903907228378e-18,9.795284202606129840e-18,0.000000000000000000e+00,6.999999999999999556e-01,7.736882767397312843e-02,4.263117232602683937e-02,4.999999999999996808e-02,1.000000000000000056e-01,5.321064830219189579e-02,8.868441383698652189e-03,0.000000000000000000e+00,4.434220691849326962e-02,0.000000000000000000e+00,1.773688276739729050e-02,1.773688276739731479e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.773688276739732866e-02,4.779904663799602909e-17,0.000000000000000000e+00,1.111415077317144726e-16,8.430731305149426025e-17,1.053163182118271103e-17,2.298741554701521248e-17,2.490524689304105532e-01,6.226311723260283260e-02,0.000000000000000000e+00,2.490524689304105532e-01,0.000000000000000000e+00,2.217110345924664522e-02,0.000000000000000000e+00,2.217110345924664522e-02,2.660532415109595483e-02,-9.236802901960343695e-18,1.773688276739734688e-03,7.094753106958890179e-03,8.868441383698646985e-03,0.000000000000000000e+00,-1.387778780781445676e-17,1.064212966043836042e-02,4.622058495121898020e-18,-1.387778780781445676e-17,-2.262917375138960452e-17,4.622058495121898020e-18 19 | 2.000000000000000666e-01,5.551115123125782702e-17,1.387778780781445676e-16,2.775557561562891351e-17,0.000000000000000000e+00,5.603680550934239113e-01,6.226311723260290892e-02,3.103954484294527139e-02,3.103954484294529914e-02,2.660532415109597565e-02,1.418950621391783934e-02,2.128425932087675554e-02,-1.387778780781445676e-17,8.868441383698652189e-03,2.660532415109596177e-02,1.773688276739732866e-02,6.938893903907228378e-18,9.795284202606126758e-18,0.000000000000000000e+00,6.999999999999999556e-01,7.736882767397296190e-02,4.263117232602683937e-02,4.999999999999996808e-02,1.000000000000000056e-01,5.321064830219190966e-02,8.868441383698652189e-03,0.000000000000000000e+00,4.434220691849326268e-02,0.000000000000000000e+00,1.773688276739729397e-02,1.773688276739731826e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.773688276739732519e-02,4.779904663799603525e-17,0.000000000000000000e+00,5.551115123125782702e-17,5.551115123125782702e-17,2.775557561562891351e-17,0.000000000000000000e+00,2.490524689304105255e-01,6.226311723260282566e-02,0.000000000000000000e+00,2.490524689304105255e-01,0.000000000000000000e+00,2.217110345924664869e-02,0.000000000000000000e+00,2.217110345924664175e-02,2.660532415109596177e-02,-9.236802901960343695e-18,1.773688276739734471e-03,7.094753106958890179e-03,8.868441383698650454e-03,0.000000000000000000e+00,-1.387778780781445676e-17,1.064212966043836216e-02,4.622058495121901872e-18,-1.387778780781445676e-17,-2.262917375138960144e-17,4.622058495121901872e-18 20 | 2.000000000000000666e-01,5.551115123125782702e-17,7.287670689476852321e-17,6.879419055869674819e-17,0.000000000000000000e+00,5.878178990644626900e-01,6.531309989605162125e-02,2.570207518190996063e-02,2.570207518190998144e-02,2.203035015592284818e-02,1.174952008315885074e-02,1.762428012473826050e-02,-1.387778780781445676e-17,7.343450051974276943e-03,2.203035015592283430e-02,1.468690010394857817e-02,6.938893903907228378e-18,2.764435208209072640e-18,0.000000000000000000e+00,6.999999999999999556e-01,4.686900103948560270e-02,7.313099896051435123e-02,4.999999999999998196e-02,1.000000000000000056e-01,4.406070031184566860e-02,7.343450051974276943e-03,0.000000000000000000e+00,3.671725025987140206e-02,0.000000000000000000e+00,1.468690010394855042e-02,1.468690010394856950e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.468690010394857817e-02,5.022946190340691495e-17,0.000000000000000000e+00,5.981517497281667631e-17,9.735403289856379576e-17,7.578619693025124027e-17,0.000000000000000000e+00,2.612523995842055413e-01,6.531309989605157962e-02,0.000000000000000000e+00,2.612523995842055413e-01,0.000000000000000000e+00,1.835862512993571144e-02,0.000000000000000000e+00,1.835862512993570450e-02,2.203035015592283777e-02,-6.273912046500528206e-18,1.468690010394864149e-03,5.874760041579395013e-03,7.343450051974275208e-03,0.000000000000000000e+00,-1.387778780781445676e-17,8.812140062369121576e-03,3.540687377671940221e-18,-1.387778780781445676e-17,-2.056908075458008555e-17,3.540687377671940992e-18 21 | 2.000000000000000666e-01,5.551115123125782702e-17,6.788891840000756343e-17,6.775262910369298420e-17,0.000000000000000000e+00,5.946217517084833037e-01,6.606908352316501198e-02,2.370115486134699231e-02,2.370115486134701313e-02,2.031527559544029846e-02,1.114473318146813260e-02,1.671709977220218329e-02,-1.387778780781445676e-17,8.902455304459086505e-03,2.089637471525273432e-02,1.393091647683517877e-02,6.938893903907228378e-18,9.662673660468612436e-19,0.000000000000000000e+00,6.999999999999999556e-01,3.930916476835161905e-02,8.069083523164835570e-02,4.999999999999998196e-02,1.000000000000000056e-01,3.985575236446396719e-02,8.902455304459079566e-03,0.000000000000000000e+00,3.482729119208790441e-02,1.936997066041501458e-03,1.199391941079364435e-02,1.393091647683517183e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.393091647683518224e-02,5.084224093728226909e-17,0.000000000000000000e+00,6.126210028158655026e-17,8.784650766096378934e-17,7.416812557707267925e-17,0.000000000000000000e+00,2.642763340926591042e-01,6.606908352316498423e-02,0.000000000000000000e+00,2.642763340926591042e-01,0.000000000000000000e+00,1.692939632953358725e-02,0.000000000000000000e+00,1.692939632953358378e-02,2.031527559544029499e-02,-4.786840861599483158e-18,1.393091647683523948e-03,5.572366590734037679e-03,6.965458238417576373e-03,0.000000000000000000e+00,-1.387778780781445676e-17,8.358549886101084708e-03,3.209789319397231581e-18,-1.387778780781445676e-17,-2.001715295181625410e-17,3.209789319397231581e-18 22 | 2.000000000000000666e-01,5.551115123125782702e-17,-4.594085865008953991e-17,1.937877190313602393e-17,5.588917968038887851e-01,1.134830040232389647e-01,1.260922266924875690e-02,1.610223671050723185e-02,1.610223671050725266e-02,1.380191718043479246e-02,9.201278120289868578e-03,1.380191718043478205e-02,-1.387778780781445676e-17,1.725239647554348277e-02,1.725239647554348277e-02,1.150159765036234787e-02,6.938893903907228378e-18,-2.761004892421584248e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.739077733075119703e-01,1.049840234963766716e-01,5.000000000000001665e-02,1.000000000000000056e-01,2.300319530072465063e-02,1.725239647554346889e-02,0.000000000000000000e+00,2.875399412590581155e-02,1.150159765036232185e-02,0.000000000000000000e+00,1.150159765036232011e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.150159765036234440e-02,7.146032301828927920e-17,0.000000000000000000e+00,-7.758525903928721094e-17,1.409411934468662300e-17,2.408490823429049589e-17,0.000000000000000000e+00,5.043689067699491657e-02,1.260922266924883323e-02,0.000000000000000000e+00,5.043689067699491657e-02,0.000000000000000000e+00,1.150159765036233052e-02,0.000000000000000000e+00,1.150159765036232531e-02,1.380191718043478899e-02,-4.294747821459704800e-18,1.150159765036243547e-03,4.600639060144903932e-03,5.750798825181157453e-03,0.000000000000000000e+00,-1.387778780781445676e-17,6.900958590217396230e-03,-3.642202125177051977e-18,-1.387778780781445676e-17,-1.018933160528796559e-17,-3.642202125177053518e-18 23 | 2.000000000000000666e-01,5.551115123125782702e-17,-5.485300168246271469e-17,1.562327686652310739e-17,6.019999999999999796e-01,7.643612729945370443e-02,8.492903033272589108e-03,1.582993575341828940e-02,1.582993575341831369e-02,1.356851636007284055e-02,9.045677573381902953e-03,1.356851636007283188e-02,-1.387778780781445676e-17,1.696064545009104765e-02,1.696064545009104765e-02,1.130709696672739344e-02,6.938893903907228378e-18,-2.984659341682126011e-17,0.000000000000000000e+00,6.999999999999999556e-01,6.150709696672732596e-01,1.069290303327262853e-01,5.000000000000002359e-02,1.000000000000000056e-01,2.261419393345473483e-02,1.696064545009103725e-02,0.000000000000000000e+00,2.826774241681841854e-02,1.130709696672735701e-02,0.000000000000000000e+00,1.130709696672736395e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.130709696672738476e-02,7.309573345805363392e-17,0.000000000000000000e+00,-8.863466437303489412e-17,8.645667580938835857e-18,2.019837355024408425e-17,0.000000000000000000e+00,3.397161213309038419e-02,8.492903033272714008e-03,0.000000000000000000e+00,3.397161213309038419e-02,0.000000000000000000e+00,1.130709696672737435e-02,0.000000000000000000e+00,1.130709696672736742e-02,1.356851636007283882e-02,-4.612117252036230989e-18,1.130709696672748711e-03,4.522838786690921119e-03,5.653548483363677636e-03,0.000000000000000000e+00,-1.387778780781445676e-17,6.784258180036421143e-03,-4.161437057259521676e-18,-1.387778780781445676e-17,-9.432067911194229621e-18,-4.161437057259518594e-18 24 | 2.000000000000000666e-01,5.551115123125782702e-17,-5.584676991881585914e-17,1.541752098248579373e-17,6.019999999999999796e-01,7.772909803601457668e-02,8.636566448446044222e-03,1.562880697217546369e-02,1.562880697217548451e-02,1.339612026186470101e-02,8.930746841243144413e-03,1.339612026186469407e-02,-1.387778780781445676e-17,1.674515032733087452e-02,1.674515032733087105e-02,1.116343355155394526e-02,6.938893903907228378e-18,-3.019663478132910509e-17,0.000000000000000000e+00,6.999999999999999556e-01,6.136343355155392532e-01,1.083656644844607775e-01,5.000000000000002359e-02,1.000000000000000056e-01,2.232686710310783501e-02,1.674515032733086412e-02,0.000000000000000000e+00,2.790858387888480591e-02,1.116343355155390710e-02,0.000000000000000000e+00,1.116343355155391751e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.116343355155393659e-02,7.323335971980588324e-17,0.000000000000000000e+00,-8.855004252535952033e-17,7.016461105982962029e-18,1.988641940773223823e-17,0.000000000000000000e+00,3.454626579378430873e-02,8.636566448446156979e-03,0.000000000000000000e+00,3.454626579378430873e-02,0.000000000000000000e+00,1.116343355155392097e-02,0.000000000000000000e+00,1.116343355155391751e-02,1.339612026186469754e-02,-4.528380575592261130e-18,1.116343355155403894e-03,4.465373420621541849e-03,5.581716775776953549e-03,0.000000000000000000e+00,-1.387778780781445676e-17,6.698060130932353973e-03,-4.217649378689212955e-18,-1.387778780781445676e-17,-9.330397893658072780e-18,-4.217649378689212955e-18 25 | 2.000000000000000666e-01,5.551115123125782702e-17,-5.763442330245204598e-17,1.469521424233247209e-17,6.019999999999999796e-01,8.065915006910662211e-02,8.962127785456271492e-03,1.517302110036114482e-02,1.517302110036116564e-02,1.300544665745242447e-02,7.586510550180575879e-03,1.300544665745242273e-02,1.083787221454364513e-03,1.625680832181553015e-02,1.625680832181553015e-02,1.083787221454371452e-02,6.938893903907228378e-18,-3.108234820056847478e-17,0.000000000000000000e+00,6.999999999999999556e-01,6.103787221454368694e-01,1.116212778545630779e-01,5.000000000000003053e-02,1.000000000000000056e-01,2.167574442908738047e-02,1.625680832181551974e-02,0.000000000000000000e+00,2.709468053635923079e-02,1.083787221454367983e-02,0.000000000000000000e+00,1.083787221454368850e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.083787221454370758e-02,7.332832547506263125e-17,0.000000000000000000e+00,-8.776136091121422693e-17,3.345250839594891943e-18,1.890368951318545596e-17,0.000000000000000000e+00,3.584851114182523862e-02,8.962127785456384249e-03,0.000000000000000000e+00,3.584851114182523862e-02,0.000000000000000000e+00,1.083787221454369371e-02,0.000000000000000000e+00,1.083787221454369024e-02,1.300544665745242273e-02,-4.046834546836698041e-18,0.000000000000000000e+00,5.418936107271832975e-03,5.418936107271839914e-03,0.000000000000000000e+00,1.083787221454364513e-03,5.418936107271846853e-03,-4.238151282605284276e-18,-1.387778780781445676e-17,-9.056430144610700713e-18,-4.238151282605284276e-18 26 | 2.000000000000000666e-01,5.551115123125782702e-17,-7.840936537305756509e-17,1.042428506468051799e-17,6.019999999999999796e-01,1.074533076998509806e-01,1.193925641109450445e-02,1.100504102446758434e-02,1.100504102446759301e-02,9.432892306686509534e-03,5.502520512233798240e-03,9.432892306686509534e-03,7.860743588905434731e-04,1.179111538335813995e-02,1.179111538335813995e-02,7.860743588905445139e-03,6.938893903907228378e-18,-3.833875480286502192e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.806074358890543907e-01,1.413925641109457232e-01,5.000000000000004441e-02,1.000000000000000056e-01,1.572148717781085211e-02,1.179111538335812955e-02,0.000000000000000000e+00,1.965185897226357295e-02,7.860743588905420853e-03,0.000000000000000000e+00,7.860743588905427792e-03,0.000000000000000000e+00,0.000000000000000000e+00,7.860743588905439935e-03,7.626663353342265803e-17,0.000000000000000000e+00,-8.613234255475928867e-17,-3.052976678137705609e-17,1.245864252365513840e-17,0.000000000000000000e+00,4.775702564437830228e-02,1.193925641109467271e-02,0.000000000000000000e+00,4.775702564437830228e-02,0.000000000000000000e+00,7.860743588905427792e-03,0.000000000000000000e+00,7.860743588905426057e-03,9.432892306686507800e-03,-2.391717215548987310e-18,0.000000000000000000e+00,3.930371794452713896e-03,3.930371794452710427e-03,0.000000000000000000e+00,7.860743588905434731e-04,3.930371794452713896e-03,-5.445001814235121799e-18,-1.387778780781445676e-17,-6.952903126033220212e-18,-5.445001814235121799e-18 27 | 2.000000000000000666e-01,5.551115123125782702e-17,-8.177857505626529927e-17,9.734835481420192140e-18,6.019999999999999796e-01,1.115124188958276502e-01,1.239026876620302406e-02,9.716285125675492435e-03,9.716285125675501108e-03,8.328244393436141577e-03,5.186811863657834858e-03,8.891677480556284610e-03,7.409731233796909263e-04,1.111459685069535880e-02,1.111459685069535706e-02,9.287841524197391896e-03,6.938893903907228378e-18,-3.940870905944434766e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.760973123379691252e-01,1.459026876620309054e-01,5.000000000000004441e-02,1.000000000000000056e-01,1.294135217719334305e-02,1.299270714109581476e-02,0.000000000000000000e+00,1.852432808449226698e-02,7.409731233796901240e-03,0.000000000000000000e+00,7.409731233796907311e-03,0.000000000000000000e+00,1.878110290400463334e-03,5.531620943396449615e-03,7.675402259167074536e-17,0.000000000000000000e+00,-8.576431231670396536e-17,-3.632371104026374059e-17,1.141567919568697884e-17,0.000000000000000000e+00,4.956107506481238767e-02,1.239026876620319406e-02,0.000000000000000000e+00,4.956107506481238767e-02,0.000000000000000000e+00,6.940203661196788984e-03,0.000000000000000000e+00,6.940203661196788984e-03,8.328244393436141577e-03,-1.411187071291450256e-18,0.000000000000000000e+00,3.704865616898454089e-03,3.704865616898449752e-03,0.000000000000000000e+00,7.409731233796909263e-04,3.704865616898453656e-03,-5.627280968508432432e-18,-1.387778780781445676e-17,-6.611959955526425168e-18,-5.627280968508432432e-18 28 | 2.000000000000000666e-01,5.551115123125782702e-17,-8.332315362085691506e-17,9.199778195901357773e-18,6.019999999999999796e-01,1.153717476810593723e-01,1.281908307567321444e-02,8.963534489166693695e-03,1.536605912428578094e-02,1.280504927023813633e-03,4.886641847028699512e-03,8.377100309192057545e-03,6.980916924326690046e-04,1.047137538649007410e-02,1.047137538649007410e-02,9.294486081157295534e-03,6.938893903907228378e-18,-4.004667765522423956e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.718091692432671902e-01,1.501908307567328127e-01,5.000000000000004441e-02,1.000000000000000056e-01,1.164826469182287175e-02,1.278494454332063796e-02,0.000000000000000000e+00,1.745229231081679364e-02,6.980916924326710862e-03,0.000000000000000000e+00,6.980916924326715199e-03,0.000000000000000000e+00,2.313569156830568626e-03,4.667347767496166956e-03,7.684402589033717145e-17,0.000000000000000000e+00,-8.533292324957364967e-17,-3.975691691943932502e-17,1.068208051187213075e-17,0.000000000000000000e+00,5.127633230269317000e-02,1.281908307567339311e-02,0.000000000000000000e+00,5.127633230269317000e-02,0.000000000000000000e+00,6.402524635119073368e-03,6.402524635119047347e-03,0.000000000000000000e+00,1.280504927023827511e-03,6.402524635119061225e-03,0.000000000000000000e+00,3.490458462163357166e-03,3.490458462163355865e-03,0.000000000000000000e+00,6.980916924326691130e-04,3.490458462163361069e-03,-5.728384117668442814e-18,-1.387778780781445676e-17,-6.423081868730462783e-18,-5.728384117668443584e-18 29 | 2.000000000000000666e-01,5.551115123125782702e-17,-8.750400353281390779e-17,8.195228764701737559e-18,6.019999999999999796e-01,1.196564957969652315e-01,1.329516619966275223e-02,7.839564725539462098e-03,1.343925381521052578e-02,1.119937817934210482e-03,4.553383660236020626e-03,7.805800560404606292e-03,6.504833800337147696e-04,9.757250700505759600e-03,9.757250700505759600e-03,1.012541264300167998e-02,6.938893903907228378e-18,-4.135365852522988409e-17,0.000000000000000000e+00,6.999999999999999556e-01,5.670483380033718435e-01,1.549516619966282427e-01,5.000000000000005135e-02,1.000000000000000056e-01,9.389088758009856567e-03,1.337782954317024223e-02,0.000000000000000000e+00,1.626208450084293961e-02,6.504833800337168730e-03,0.000000000000000000e+00,6.504833800337173066e-03,0.000000000000000000e+00,3.620578842664482627e-03,2.884254957672693909e-03,7.750111438098607242e-17,0.000000000000000000e+00,-8.541158483746052500e-17,-4.611498587567789628e-17,9.259167641953830161e-18,0.000000000000000000e+00,5.318066479865132812e-02,1.329516619966293438e-02,0.000000000000000000e+00,5.318066479865132812e-02,0.000000000000000000e+00,5.599689089671048073e-03,5.599689089671068022e-03,0.000000000000000000e+00,1.119937817934212650e-03,5.599689089671075828e-03,0.000000000000000000e+00,3.252416900168587401e-03,3.252416900168584799e-03,0.000000000000000000e+00,6.504833800337148780e-04,3.252416900168590436e-03,-6.049253129598042003e-18,-1.387778780781445676e-17,-6.019297428548789926e-18,-6.049253129598042003e-18 30 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_many_constraints_b_in.csv: -------------------------------------------------------------------------------- 1 | 6.999999999999999556e-01 2 | 6.999999999999999556e-01 3 | 2.200000000000000011e-01 4 | 5.000000000000000278e-02 5 | 1.000000000000000056e-01 6 | 0.000000000000000000e+00 7 | 0.000000000000000000e+00 8 | 0.000000000000000000e+00 9 | 0.000000000000000000e+00 10 | 0.000000000000000000e+00 11 | 0.000000000000000000e+00 12 | 0.000000000000000000e+00 13 | 0.000000000000000000e+00 14 | 0.000000000000000000e+00 15 | 0.000000000000000000e+00 16 | 0.000000000000000000e+00 17 | 0.000000000000000000e+00 18 | 0.000000000000000000e+00 19 | 0.000000000000000000e+00 20 | 0.000000000000000000e+00 21 | 0.000000000000000000e+00 22 | 0.000000000000000000e+00 23 | 0.000000000000000000e+00 24 | 0.000000000000000000e+00 25 | 0.000000000000000000e+00 26 | 0.000000000000000000e+00 27 | 0.000000000000000000e+00 28 | 0.000000000000000000e+00 29 | 0.000000000000000000e+00 30 | 0.000000000000000000e+00 31 | 0.000000000000000000e+00 32 | 0.000000000000000000e+00 33 | 0.000000000000000000e+00 34 | 0.000000000000000000e+00 35 | 0.000000000000000000e+00 36 | 0.000000000000000000e+00 37 | 0.000000000000000000e+00 38 | 0.000000000000000000e+00 39 | 0.000000000000000000e+00 40 | 0.000000000000000000e+00 41 | 0.000000000000000000e+00 42 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_many_constraints_mu.csv: -------------------------------------------------------------------------------- 1 | -1.200206370231200054e-02 2 | 4.971029593312099870e-02 3 | 1.919122430186200046e-01 4 | 2.142893038062279876e-01 5 | 7.978108606253999507e-03 6 | 6.516729146088799662e-02 7 | 3.819865870278170150e-01 8 | 4.560910244182669881e-01 9 | 4.388197113555549755e-01 10 | 6.717105928160760353e-01 11 | 4.336039591292800144e-01 12 | 5.514346463171549972e-01 13 | 4.952482011289019992e-01 14 | 1.841720461841339918e-01 15 | 6.358869643836529972e-01 16 | 2.831590599953460186e-01 17 | 7.124184638983149798e-01 18 | 3.215345935602320071e-01 19 | -2.077846343488599923e-02 20 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_many_constraints_ub.csv: -------------------------------------------------------------------------------- 1 | 2.000000000000000111e-01 2 | 6.999999999999999556e-01 3 | 2.099999999999999922e-01 4 | 1.400000000000000133e-01 5 | 6.019999999999999796e-01 6 | 6.999999999999999556e-01 7 | 3.499999999999999778e-01 8 | 7.259999999999999787e-02 9 | 7.259999999999999787e-02 10 | 3.629999999999999893e-02 11 | 5.940000000000000141e-02 12 | 5.940000000000000141e-02 13 | 2.970000000000000070e-02 14 | 3.300000000000000155e-02 15 | 3.300000000000000155e-02 16 | 4.399999999999999745e-02 17 | 3.500000000000000333e-02 18 | 3.500000000000000333e-02 19 | 1.000000000000000056e-01 20 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_markowitz_et_al.csv: -------------------------------------------------------------------------------- 1 | 9.999999999999997780e-02,5.000000000000000000e-01,4.000000000000000222e-01 2 | 9.999999999999997780e-02,4.000000000000000222e-01,5.000000000000000000e-01 3 | 9.999999999999997780e-02,4.000000000000000222e-01,5.000000000000000000e-01 4 | 3.764353837306260164e-01,1.235646162693739419e-01,5.000000000000000000e-01 5 | 4.643503794066107249e-01,1.000000000000000194e-01,4.356496205933891863e-01 6 | 5.000000000000000000e-01,1.000000000000000194e-01,3.999999999999998002e-01 7 | 5.000000000000000000e-01,1.000000000000000194e-01,3.999999999999999112e-01 8 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_markowitz_et_al_data.csv: -------------------------------------------------------------------------------- 1 | -0.173,-0.318,-0.319 2 | 0.098,0.285,0.076 3 | 0.2,-0.047,0.381 4 | 0.03,0.104,-0.051 5 | -0.183,-0.171,0.087 6 | 0.067,-0.039,0.262 7 | 0.3,0.149,0.341 8 | 0.103,0.26,0.227 9 | 0.216,0.419,0.352 10 | -0.046,-0.078,0.153 11 | -0.071,0.169,-0.099 12 | 0.056,-0.035,0.038 13 | 0.038,0.133,0.273 14 | 0.089,0.732,0.091 15 | 0.09,0.021,0.054 16 | 0.083,0.131,0.109 17 | 0.035,0.006,0.21 18 | 0.176,0.908,0.112 19 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_markowitz_et_al_semi.csv: -------------------------------------------------------------------------------- 1 | 0.000000000000000000e+00,1.000000000000000000e+00,0.000000000000000000e+00 2 | 0.000000000000000000e+00,8.901869158878504829e-01,1.098130841121495171e-01 3 | 0.000000000000000000e+00,8.704318936877076807e-01,1.295681063122924026e-01 4 | 0.000000000000000000e+00,6.623376623376623362e-01,3.376623376623376638e-01 5 | 0.000000000000000000e+00,5.205479452054794232e-01,4.794520547945205768e-01 6 | 0.000000000000000000e+00,4.918701690263606041e-01,5.081298309736393959e-01 7 | 1.209688363918979270e-01,3.567644499292048632e-01,5.222667136788973208e-01 8 | 2.740072619539588583e-01,1.858413663337377120e-01,5.401513717123037628e-01 9 | 6.706189755048512779e-01,0.000000000000000000e+00,3.293810244951487221e-01 10 | 7.666947368421052067e-01,0.000000000000000000e+00,2.333052631578947933e-01 11 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_markowitz_todd.csv: -------------------------------------------------------------------------------- 1 | 2.999999999999999889e-01,2.999999999999999889e-01,0.000000000000000000e+00,2.999999999999999889e-01,9.990000000000000269e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.999999999998898659e-05,5.500000000000000444e-01,2.500999999999999890e-01 2 | 2.999999999999999889e-01,1.796769984175841939e-01,0.000000000000000000e+00,2.999999999999999889e-01,9.990000000000000269e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.204230015824157840e-01,4.296769984175842216e-01,2.500999999999999890e-01 3 | 2.999999999999999889e-01,1.630512172456994591e-01,0.000000000000000000e+00,2.820811745587068486e-01,9.990000000000000269e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.549676081955929097e-01,4.040918045250532220e-01,2.590594127206465869e-01 4 | 2.142683203425358451e-01,1.186901312723642743e-01,0.000000000000000000e+00,2.671415483851001804e-01,9.990000000000000269e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.999999999999999889e-01,2.665292258074496434e-01,2.665292258074499210e-01 5 | 1.931276557489910450e-01,1.069723442510086969e-01,0.000000000000000000e+00,2.999999999999999889e-01,9.990000000000000269e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.999999999999999889e-01,2.500999999999999890e-01,2.500999999999999890e-01 6 | 1.967222248897282089e-01,1.033777751102716025e-01,0.000000000000000000e+00,2.999999999999999889e-01,9.990000000000000269e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.999999999999999889e-01,2.500999999999999335e-01,2.501000000000000445e-01 7 | 1.905364239481217581e-01,1.003485694484266000e-01,0.000000000000000000e+00,2.999999999999999889e-01,9.990000000000000269e-02,0.000000000000000000e+00,0.000000000000000000e+00,9.215006603451425526e-03,0.000000000000000000e+00,2.999999999999999889e-01,2.408849933965485357e-01,2.500999999999999890e-01 8 | 1.301921547066826612e-01,7.311930366750452048e-02,0.000000000000000000e+00,2.999999999999999889e-01,9.990000000000000269e-02,7.848071432147515902e-02,0.000000000000000000e+00,1.830782730433751920e-02,0.000000000000000000e+00,2.999999999999999889e-01,1.533114583741873316e-01,1.716192856785249132e-01 9 | 9.990000000000000269e-02,5.731451660658959391e-02,0.000000000000000000e+00,2.476959772573358864e-01,9.990000000000000269e-02,1.655002923983225904e-01,0.000000000000000000e+00,2.968921373775186556e-02,0.000000000000000000e+00,2.999999999999999889e-01,8.106250523525758422e-02,1.107517189730095469e-01 10 | 9.990000000000000269e-02,5.301234395646943487e-02,0.000000000000000000e+00,2.313419079663509570e-01,9.990000000000000269e-02,1.838636942168716537e-01,0.000000000000000000e+00,3.198205386030791852e-02,0.000000000000000000e+00,2.999999999999999889e-01,6.858329793964496046e-02,1.005653517999528929e-01 11 | 9.990000000000000269e-02,4.316342639945043580e-02,0.000000000000000000e+00,1.903380797626139098e-01,9.990000000000000269e-02,2.034205722536931715e-01,0.000000000000000000e+00,3.416442164829663897e-02,2.911349993594573859e-02,2.999999999999999889e-01,3.823246628075742393e-02,1.015103878649998848e-01 12 | 9.990000000000000269e-02,4.113315451000046363e-02,8.275808184062802275e-03,1.806922312188804225e-01,9.990000000000000269e-02,2.040059337864024436e-01,0.000000000000000000e+00,3.411305783932975372e-02,3.197981446132408534e-02,2.999999999999999889e-01,3.965507830350351037e-02,1.057479506041573702e-01 13 | 9.990000000000000269e-02,2.910967917572585689e-02,4.959057220481093847e-02,1.245814658066305147e-01,9.990000000000000269e-02,2.018848011393601372e-01,1.740438529411172941e-02,3.306335435429164776e-02,4.456574202506909110e-02,2.999999999999999889e-01,4.089098428385207207e-02,1.185200806632128040e-01 14 | 9.990000000000000269e-02,2.437678645633382588e-02,7.648171022597835544e-02,1.035107918352899947e-01,9.990000000000000269e-02,2.089748715040882221e-01,2.775609781846222548e-02,3.391394530671684726e-02,5.434929350431208506e-02,2.708365033488183138e-01,5.251389259995714598e-02,1.116136347598045697e-01 15 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_markowitz_todd_C.csv: -------------------------------------------------------------------------------- 1 | 4.075516000000000139e-01,3.175839999999999913e-02,5.183920000000000194e-02,5.663900000000000184e-02,3.302259999999999918e-02,8.277800000000000089e-03,2.165939999999999879e-02,1.332419999999999959e-02,3.434759999999999897e-02,2.249900000000000164e-02 2 | 3.175839999999999913e-02,9.063046999999999631e-01,3.136390000000000011e-02,2.687259999999999996e-02,1.917169999999999985e-02,9.343799999999999328e-03,2.495040000000000105e-02,7.610399999999999804e-03,2.874869999999999856e-02,1.336870000000000072e-02 3 | 5.183920000000000194e-02,3.136390000000000011e-02,1.949089999999999989e-01,4.408490000000000325e-02,3.006769999999999929e-02,1.322740000000000027e-02,3.525969999999999799e-02,1.154930000000000019e-02,4.275629999999999709e-02,2.057300000000000101e-02 4 | 5.663900000000000184e-02,2.687259999999999996e-02,4.408490000000000325e-02,1.952847000000000055e-01,2.777349999999999958e-02,5.266700000000000027e-03,1.375810000000000054e-02,7.808800000000000290e-03,2.914179999999999895e-02,1.640379999999999963e-02 5 | 3.302259999999999918e-02,1.917169999999999985e-02,3.006769999999999929e-02,2.777349999999999958e-02,3.405910999999999800e-01,7.770599999999999903e-03,2.067839999999999956e-02,7.364100000000000160e-03,2.542660000000000059e-02,1.284079999999999944e-02 6 | 8.277800000000000089e-03,9.343799999999999328e-03,1.322740000000000027e-02,5.266700000000000027e-03,7.770599999999999903e-03,1.598387000000000002e-01,2.105579999999999952e-02,5.186900000000000364e-03,1.723739999999999994e-02,7.237799999999999963e-03 7 | 2.165939999999999879e-02,2.495040000000000105e-02,3.525969999999999799e-02,1.375810000000000054e-02,2.067839999999999956e-02,2.105579999999999952e-02,6.805670999999999804e-01,1.378799999999999991e-02,4.627030000000000032e-02,1.926090000000000094e-02 8 | 1.332419999999999959e-02,7.610399999999999804e-03,1.154930000000000019e-02,7.808800000000000290e-03,7.364100000000000160e-03,5.186900000000000364e-03,1.378799999999999991e-02,9.552692000000000405e-01,1.065529999999999949e-02,7.609600000000000218e-03 9 | 3.434759999999999897e-02,2.874869999999999856e-02,4.275629999999999709e-02,2.914179999999999895e-02,2.542660000000000059e-02,1.723739999999999994e-02,4.627030000000000032e-02,1.065529999999999949e-02,3.168157999999999808e-01,1.854319999999999927e-02 10 | 2.249900000000000164e-02,1.336870000000000072e-02,2.057300000000000101e-02,1.640379999999999963e-02,1.284079999999999944e-02,7.237799999999999963e-03,1.926090000000000094e-02,7.609600000000000218e-03,1.854319999999999927e-02,1.107928999999999997e-01 11 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_random_10.csv: -------------------------------------------------------------------------------- 1 | 9.999989999999999712e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.000000000028755665e-06,0.000000000000000000e+00,0.000000000000000000e+00 2 | 6.888161947174413768e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.111838052825586232e-01,0.000000000000000000e+00,0.000000000000000000e+00 3 | 3.380716226861880114e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.063613521247155136e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,4.555670251890964750e-01,0.000000000000000000e+00,0.000000000000000000e+00 4 | 3.172029768779521253e-01,0.000000000000000000e+00,7.037455139617386501e-02,1.592513948951115033e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,4.531710768307623538e-01,0.000000000000000000e+00,0.000000000000000000e+00 5 | 3.071469483606393824e-01,0.000000000000000000e+00,7.681679649468033111e-02,1.322064925732485408e-01,3.113882368291542857e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.526909388885162477e-01,0.000000000000000000e+00,0.000000000000000000e+00 6 | 2.758414140696366368e-01,0.000000000000000000e+00,9.990649838044865505e-02,1.092170602012351444e-01,5.645960462511485922e-02,0.000000000000000000e+00,5.065742527427688491e-02,4.079179974492877503e-01,0.000000000000000000e+00,0.000000000000000000e+00 7 | 1.597737622523932310e-01,0.000000000000000000e+00,1.741015582218748969e-01,8.315055610831983968e-02,1.159166065550202157e-01,6.987223641558377996e-02,1.550001271711430595e-01,2.421851532756648662e-01,0.000000000000000000e+00,0.000000000000000000e+00 8 | 1.364778451927411151e-01,0.000000000000000000e+00,1.859309751252410936e-01,1.065179467659819468e-01,1.055724521252370818e-01,8.772885334266453117e-02,1.356889790007205776e-01,1.956706080987564156e-01,4.641234034865723834e-02,0.000000000000000000e+00 9 | 9.118639791594983224e-02,0.000000000000000000e+00,1.998719965820338618e-01,1.533520065372363517e-01,9.200034863050912670e-02,1.128574769100293002e-01,8.757124068830808572e-02,1.071730944792284868e-01,1.249482546342081807e-01,3.103918362249668411e-02 10 | 8.201745796693783730e-02,2.564112875229351482e-02,1.928322166995137532e-01,1.726698356939996848e-01,8.984047580470444494e-02,1.117062445837946338e-01,6.889047287430169475e-02,7.614434986112236792e-02,1.424483424138613119e-01,3.780947534947062122e-02 11 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_random_20.csv: -------------------------------------------------------------------------------- 1 | 0.000000000000000000e+00,9.999989999999999712e-01,1.000000000028755665e-06,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 2 | 0.000000000000000000e+00,6.397036091333767605e-01,3.602963908666232395e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 3 | 0.000000000000000000e+00,5.766350561002896447e-01,2.881897658863572520e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.351751780133536862e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 4 | 0.000000000000000000e+00,4.174177242892976869e-01,2.578606188889323581e-01,1.591099493549478217e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.656117074668226052e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 5 | 0.000000000000000000e+00,3.306838661203004293e-01,2.406485340853694310e-01,1.921294913547945682e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.591853358021120823e-01,7.735277263742401654e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 6 | 0.000000000000000000e+00,3.283560732167505325e-01,2.401120895982405690e-01,1.920001661617265210e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.591728205226911608e-01,7.834619715863327949e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.012653341958575703e-03,0.000000000000000000e+00,0.000000000000000000e+00 7 | 0.000000000000000000e+00,2.885660235612996782e-01,2.103905453523010616e-01,1.879825789625006183e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.882955492750395587e-02,1.455306968591593419e-01,9.684198229132140456e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.185861804591409219e-02,0.000000000000000000e+00,0.000000000000000000e+00 8 | 0.000000000000000000e+00,2.501791047198815843e-01,1.814767347363178129e-01,1.792035457214051775e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.406403586479806400e-02,5.569857204800011952e-02,1.328149147351173343e-01,1.068501915155368465e-01,0.000000000000000000e+00,0.000000000000000000e+00,6.971290065894310273e-02,0.000000000000000000e+00,0.000000000000000000e+00 9 | 0.000000000000000000e+00,2.155568966298588018e-01,1.644031049399330979e-01,1.647236894033741461e-01,0.000000000000000000e+00,4.297411049103447289e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,4.346079427067089940e-02,6.763419806396828160e-02,1.162998935862363525e-01,1.020738467754301187e-01,0.000000000000000000e+00,0.000000000000000000e+00,8.287346583949423140e-02,0.000000000000000000e+00,0.000000000000000000e+00 10 | 0.000000000000000000e+00,2.060629665400901256e-01,1.533118242527446440e-01,1.596272414067148038e-01,0.000000000000000000e+00,5.519145644465242584e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.041647454958306851e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.977191205740705976e-02,6.596768081274981266e-02,1.119205857300194507e-01,9.948386700263088522e-02,0.000000000000000000e+00,0.000000000000000000e+00,8.824599120340778646e-02,0.000000000000000000e+00,0.000000000000000000e+00 11 | 1.303035092876792533e-01,1.838696745469338700e-01,5.899141654154461956e-02,1.475894763889225858e-01,0.000000000000000000e+00,2.582382424801852802e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.991953453603599988e-02,0.000000000000000000e+00,0.000000000000000000e+00,8.496319209710459508e-02,5.591003138998793670e-02,8.069525496671496601e-02,9.816994107037201045e-02,0.000000000000000000e+00,0.000000000000000000e+00,9.376414492668584677e-02,0.000000000000000000e+00,0.000000000000000000e+00 12 | 1.374954310636329613e-01,1.728674062914207221e-01,4.638889614639274406e-02,1.352035632958052125e-01,0.000000000000000000e+00,3.464041021414490662e-02,0.000000000000000000e+00,2.374153741896335018e-02,4.854773297816933342e-02,0.000000000000000000e+00,0.000000000000000000e+00,9.220230146669926297e-02,4.986059258719026388e-02,7.888424553332844258e-02,9.161797004885292861e-02,0.000000000000000000e+00,0.000000000000000000e+00,8.854991295540008689e-02,0.000000000000000000e+00,0.000000000000000000e+00 13 | 1.405228981699090940e-01,1.694343454396912974e-01,4.463824121158754821e-02,1.304842278466100958e-01,0.000000000000000000e+00,3.277222691294117557e-02,0.000000000000000000e+00,2.607288462260587067e-02,5.075900556487239479e-02,0.000000000000000000e+00,0.000000000000000000e+00,9.210067138474566095e-02,5.115196412164550732e-02,7.700920694129947952e-02,8.998508030987488471e-02,0.000000000000000000e+00,0.000000000000000000e+00,8.571110326937728119e-02,9.358144204839963232e-03,0.000000000000000000e+00 14 | 1.424150314311931897e-01,1.684966389568165468e-01,4.238696892107771119e-02,1.288349325958110803e-01,0.000000000000000000e+00,3.087140660309516116e-02,0.000000000000000000e+00,2.588775032263293530e-02,4.983495645595244217e-02,0.000000000000000000e+00,0.000000000000000000e+00,9.198858239455724728e-02,5.224689927739432915e-02,7.463511986768936457e-02,8.923337048144340533e-02,0.000000000000000000e+00,5.507274460029326635e-03,8.406072658571536738e-02,1.360034164659203182e-02,0.000000000000000000e+00 15 | 1.527112513238494673e-01,1.626651595325438737e-01,2.780829031046396643e-02,1.234445473286344547e-01,2.465994831046781910e-02,1.596693889257403895e-02,0.000000000000000000e+00,1.708268800063020634e-02,4.264899551421669210e-02,0.000000000000000000e+00,0.000000000000000000e+00,8.921623043697937683e-02,6.042898828640128756e-02,5.614518330033088644e-02,8.505228484374575959e-02,0.000000000000000000e+00,2.861385281966695449e-02,7.889970576551487424e-02,3.465593533398055731e-02,0.000000000000000000e+00 16 | 1.534092759845122056e-01,1.614816242736618057e-01,2.642489098083721302e-02,1.228561675755226734e-01,2.722141661512196553e-02,1.398382788002917876e-02,0.000000000000000000e+00,1.587103542464073092e-02,4.192888249509149623e-02,0.000000000000000000e+00,0.000000000000000000e+00,8.853670718586176269e-02,6.114479307671091823e-02,5.422542563555112632e-02,8.474348487546592978e-02,0.000000000000000000e+00,3.012187558257122671e-02,7.906663966010586686e-02,3.732272394883887068e-02,1.661228805477067694e-03 17 | 1.527784031342741267e-01,1.589317070229366580e-01,2.501404823434489472e-02,1.219550525677572661e-01,2.993527482567584497e-02,1.157407879287778579e-02,0.000000000000000000e+00,1.414749482373515652e-02,4.129207421969809111e-02,2.693089026196422708e-03,0.000000000000000000e+00,8.715000058852298559e-02,6.148627788166809160e-02,5.251419235831668308e-02,8.419619538267408831e-02,0.000000000000000000e+00,3.001419862588347587e-02,8.061842168020581789e-02,4.060813539450634779e-02,5.091355440726294534e-03 18 | 1.467949281665939243e-01,1.423696521056619368e-01,1.797238512762749235e-02,1.144924385089797769e-01,4.223981005586135984e-02,0.000000000000000000e+00,0.000000000000000000e+00,7.143209100163560796e-03,3.907032055147991595e-02,1.685147969744483359e-02,0.000000000000000000e+00,7.848566886323660174e-02,6.269745063718719369e-02,4.608764647757836175e-02,8.070867920635357851e-02,9.578110045165934283e-03,2.993166538595705070e-02,8.684594936031604651e-02,5.580911730463133241e-02,2.292148940576109462e-02 19 | 1.376596269619572988e-01,1.301623679257152277e-01,1.528341877447548548e-02,1.078153423099162539e-01,4.984934224381847023e-02,0.000000000000000000e+00,0.000000000000000000e+00,5.453992409546737190e-03,3.856772730221764978e-02,2.600561433353949098e-02,0.000000000000000000e+00,7.323165355883040628e-02,6.238843705960855218e-02,4.245254145282197078e-02,7.662626103050397541e-02,1.624915692797476718e-02,3.024580678227874533e-02,8.996411757716410440e-02,6.450583757249778172e-02,3.353875577713297945e-02 20 | 1.214161190498768833e-01,1.121535482363929664e-01,1.399152777168817009e-02,9.864657005690974367e-02,5.714405246205547101e-02,0.000000000000000000e+00,0.000000000000000000e+00,5.594051072276728064e-03,3.860143726869457587e-02,3.802915655921426663e-02,8.828672059967367092e-03,6.567057650745447561e-02,5.956625595804138085e-02,3.933120243940819299e-02,7.070305690526021425e-02,2.426188566847840150e-02,2.655573349515710779e-02,9.525875472760428342e-02,7.512438306408017463e-02,4.912301669743944499e-02 21 | 8.331744196863148655e-02,6.943031378667606501e-02,1.058635520141967302e-02,7.839695455105716304e-02,7.165625012337058231e-02,0.000000000000000000e+00,9.502913874952601675e-03,8.313169578101586160e-03,3.719329266851439941e-02,6.549338765900945825e-02,2.981664984683931804e-02,4.838542133916389626e-02,4.952831998722429657e-02,3.350473535111598428e-02,5.820337658874207704e-02,4.359747874052564975e-02,1.818318703984617146e-02,1.051489588218278703e-01,9.747557102094822623e-02,8.226622185203315285e-02 22 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_random_30.csv: -------------------------------------------------------------------------------- 1 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.000000000028755665e-06,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.999989999999999712e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 2 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.997464057835342643e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.002535942164657357e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 3 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,4.149037153113702692e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,4.518742755868428440e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.332220091017852492e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 4 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.389770657980869739e-01,0.000000000000000000e+00,3.039282125754378949e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.013039731437158419e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.557907484827591227e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 5 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.391295611024048529e-01,0.000000000000000000e+00,2.927746410586621328e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.253200135032320389e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.885534448630099835e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.570103516255997644e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 6 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.385753863546218045e-01,0.000000000000000000e+00,2.774612014266420457e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.233589456571657472e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.693482472460201282e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.742132105384324170e-02,0.000000000000000000e+00,2.148579493531561357e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 7 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.335010020812202380e-01,0.000000000000000000e+00,2.620606215560388197e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.058286588601584977e-02,4.094677678986585051e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.555845841914918481e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.132968745185154308e-01,0.000000000000000000e+00,1.740272749768517480e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 8 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.240425754875766118e-01,0.000000000000000000e+00,2.595142433178256880e-01,0.000000000000000000e+00,1.783988303723710311e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.183908203379405361e-02,4.140008261148084290e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.483217701106719910e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.169198890358527088e-01,0.000000000000000000e+00,1.701224743655609661e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 9 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.049029773573881053e-01,0.000000000000000000e+00,2.532597439566299236e-01,0.000000000000000000e+00,5.378390105821717615e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.405572852808582004e-02,4.304089857956392567e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.343808411601897235e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,5.541434431401755928e-03,1.230092218537208598e-01,0.000000000000000000e+00,1.580252530748026407e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 10 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.994857979217686261e-01,0.000000000000000000e+00,2.494281630811815975e-01,0.000000000000000000e+00,6.018405793031693374e-02,0.000000000000000000e+00,0.000000000000000000e+00,6.967054992108173694e-03,0.000000000000000000e+00,2.438129414332991865e-02,4.351230581525078467e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.311662490796569047e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.574911256138257429e-03,1.231717537308228833e-01,0.000000000000000000e+00,1.551284120494259844e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 11 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.936422276766726069e-01,0.000000000000000000e+00,2.436269681661640818e-01,0.000000000000000000e+00,6.625018221764374104e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.354118560707950891e-02,0.000000000000000000e+00,2.428086658368701356e-02,4.393360826712119221e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.268893594048086659e-01,0.000000000000000000e+00,0.000000000000000000e+00,6.145473983868762757e-03,7.200615227367145564e-03,1.232244901725949165e-01,0.000000000000000000e+00,1.512650226929922459e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 12 | 7.410556197103498888e-04,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.918229655888825103e-01,0.000000000000000000e+00,2.416037867984391352e-01,0.000000000000000000e+00,6.791609021539718460e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.574305806220747950e-02,0.000000000000000000e+00,2.414260133913002579e-02,4.421864876053752114e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.257106415406197275e-01,0.000000000000000000e+00,0.000000000000000000e+00,7.982093730627165540e-03,7.338521126905774711e-03,1.230920754308836157e-01,0.000000000000000000e+00,1.496884617866592326e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 13 | 7.597025662517107453e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.790983349647692069e-01,3.052956349388487312e-02,2.219182292429592307e-01,0.000000000000000000e+00,7.456710850047573724e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.665000326961833310e-02,0.000000000000000000e+00,1.930695642745881846e-02,3.704574270345066533e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.073952876283178204e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.308721821806152680e-02,6.548556036676183439e-03,1.262990094312377576e-01,0.000000000000000000e+00,1.399569644205726493e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 14 | 8.208009210911014833e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.757872873089238452e-01,3.549940687398357719e-02,2.178800369245008084e-01,0.000000000000000000e+00,7.601344827841610696e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.848569367861806395e-02,2.661424374454671171e-03,1.872096981527900453e-02,3.584181769732448092e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.037870750266447761e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.595503715652389826e-02,6.214915488954969071e-03,1.264829708209055104e-01,0.000000000000000000e+00,1.384619073445590431e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 15 | 9.016297945082981866e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.713199970705405473e-01,3.974010079579605448e-02,2.126542878954190696e-01,0.000000000000000000e+00,7.716126471664527808e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.078469279811135023e-02,5.154801372432515905e-03,1.808696118942911685e-02,3.499082528449129481e-02,0.000000000000000000e+00,0.000000000000000000e+00,9.999960246324797464e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.858449961168740838e-02,6.002108503567540887e-03,1.256636305498638195e-01,0.000000000000000000e+00,1.363750966703276835e-01,0.000000000000000000e+00,0.000000000000000000e+00,4.465833133357327567e-03,0.000000000000000000e+00,0.000000000000000000e+00 16 | 9.959033402708592983e-03,0.000000000000000000e+00,2.792927842797762739e-03,0.000000000000000000e+00,1.667178623262092763e-01,4.355018112576435063e-02,2.065903613527420579e-01,0.000000000000000000e+00,7.758167675475168001e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.258113645789762619e-02,7.126024701245181614e-03,1.724730162641471484e-02,3.430547313510979440e-02,0.000000000000000000e+00,0.000000000000000000e+00,9.585093045870554662e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.182192864851106362e-02,6.371036878669637110e-03,1.246105136102898109e-01,0.000000000000000000e+00,1.341621430254942016e-01,0.000000000000000000e+00,0.000000000000000000e+00,8.731468652688617604e-03,0.000000000000000000e+00,0.000000000000000000e+00 17 | 1.070160300760748459e-02,0.000000000000000000e+00,1.095677182659998694e-02,0.000000000000000000e+00,1.549243671025538616e-01,5.102369016101528792e-02,1.903384890218745018e-01,0.000000000000000000e+00,7.580208018989295637e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.500385310652245896e-02,1.318564989208872995e-02,1.583891968243843207e-02,3.391650189848872260e-02,0.000000000000000000e+00,0.000000000000000000e+00,8.670326173113795942e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.890027085286503622e-02,6.292330600533329286e-03,1.214554770008285101e-01,0.000000000000000000e+00,1.248704495491260724e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.083839442924953489e-02,0.000000000000000000e+00,9.247889947177040382e-03 18 | 9.332339921315300352e-03,0.000000000000000000e+00,1.326169659575774512e-02,0.000000000000000000e+00,1.502039153435830443e-01,5.226151406921736298e-02,1.856241573581928206e-01,0.000000000000000000e+00,7.631174235664328620e-02,0.000000000000000000e+00,5.276885440255757453e-03,3.413090146921188284e-02,1.649570303874343946e-02,1.532038174764542224e-02,3.375947011036931761e-02,0.000000000000000000e+00,0.000000000000000000e+00,8.356972023109035530e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.028498593721711873e-02,5.581934457941899012e-03,1.203984130005584796e-01,0.000000000000000000e+00,1.221910310716423503e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.372249991197173530e-02,0.000000000000000000e+00,1.227270793864263659e-02 19 | 8.540363864809313171e-03,0.000000000000000000e+00,1.523879514473305830e-02,0.000000000000000000e+00,1.441599742816769281e-01,5.369793228675324992e-02,1.790449189337532387e-01,0.000000000000000000e+00,7.679282418331816185e-02,3.907952362078685737e-03,1.012615687745412052e-02,3.380909629983492454e-02,2.087041564359885110e-02,1.464183723855388974e-02,3.369201090118275482e-02,0.000000000000000000e+00,0.000000000000000000e+00,7.978450783793250567e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.141585430909743015e-02,4.727597617814775083e-03,1.178543542777204800e-01,0.000000000000000000e+00,1.182453387768765268e-01,0.000000000000000000e+00,0.000000000000000000e+00,2.761596840551600041e-02,0.000000000000000000e+00,1.583410075729500821e-02 20 | 7.708276973764627976e-03,0.000000000000000000e+00,1.658825524832935328e-02,0.000000000000000000e+00,1.405781138006808595e-01,5.460855830972005664e-02,1.756701666492812564e-01,0.000000000000000000e+00,7.719459394946705244e-02,5.756014352531965694e-03,1.246672390794064528e-02,3.290805164295716734e-02,2.333838737245056555e-02,1.423156799068872255e-02,3.340113740003117226e-02,0.000000000000000000e+00,0.000000000000000000e+00,7.797786064917039406e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.204748514650673286e-02,4.524451668519083487e-03,1.163537751080108568e-01,0.000000000000000000e+00,1.157363384352053104e-01,0.000000000000000000e+00,2.516976321999833677e-03,2.873418063475768891e-02,0.000000000000000000e+00,1.765908443798649974e-02 21 | 5.219107819105819369e-03,0.000000000000000000e+00,2.262745274026567444e-02,0.000000000000000000e+00,1.123568918786416460e-01,5.838305495491599023e-02,1.489761796790333159e-01,0.000000000000000000e+00,7.817242607422936196e-02,1.775868571385159564e-02,3.207095628356292777e-02,2.921292977993671103e-02,3.903917293268661937e-02,1.456019958721417595e-02,3.092026871452628611e-02,0.000000000000000000e+00,0.000000000000000000e+00,6.392875037241008140e-02,1.590843093507784273e-02,0.000000000000000000e+00,4.319982118318817926e-02,6.622916365441208070e-03,1.036639822630975594e-01,0.000000000000000000e+00,9.715473941463931284e-02,0.000000000000000000e+00,2.167968483954604841e-02,3.007135931307870075e-02,0.000000000000000000e+00,2.847298915555087837e-02 22 | 5.413172791700058759e-03,0.000000000000000000e+00,2.310553836296248137e-02,0.000000000000000000e+00,1.093258104321476742e-01,5.808606154248541209e-02,1.461167360878020960e-01,0.000000000000000000e+00,7.781406358856168826e-02,1.854886759439608804e-02,3.395408660782035098e-02,2.879991930133610559e-02,4.025360849667442009e-02,1.483160465395476357e-02,3.105746824187180163e-02,1.328480474693860547e-03,0.000000000000000000e+00,6.271584873684242500e-02,1.710181975267227941e-02,0.000000000000000000e+00,4.318386798262872917e-02,7.537803015043000737e-03,1.025045643326768646e-01,0.000000000000000000e+00,9.519150793805140898e-02,0.000000000000000000e+00,2.342726111161774760e-02,3.007120893393792904e-02,0.000000000000000000e+00,2.963070002012275009e-02 23 | 6.676153586861314528e-03,6.725606494482852526e-03,2.498443146049819652e-02,0.000000000000000000e+00,9.528185845722966785e-02,5.615999792506368160e-02,1.325791116019436888e-01,0.000000000000000000e+00,7.677072146679897457e-02,2.240837157984256964e-02,3.928485840541970364e-02,2.893831643614443519e-02,4.410100319335570618e-02,1.680090446534666937e-02,3.179186331623570089e-02,7.697852118806775001e-03,0.000000000000000000e+00,5.720969285647045655e-02,2.295961852266727860e-02,0.000000000000000000e+00,4.319348347409095873e-02,1.248627675054611239e-02,9.441226034880663420e-02,0.000000000000000000e+00,8.747644134196383425e-02,0.000000000000000000e+00,3.018157922069208965e-02,2.950210697204274507e-02,0.000000000000000000e+00,3.237749000469000021e-02 24 | 7.186339019353185642e-03,7.908812151793877254e-03,2.531726598688215438e-02,0.000000000000000000e+00,9.342294923147156926e-02,5.583207934725598759e-02,1.302210312813406046e-01,0.000000000000000000e+00,7.615803449914015921e-02,2.321551409834946705e-02,3.954096247274094950e-02,2.904708318665412056e-02,4.457209688396016056e-02,1.720897266218684996e-02,3.203470634315676302e-02,8.509666630173984975e-03,1.448694629127507405e-03,5.633677278238140296e-02,2.382937882907862695e-02,0.000000000000000000e+00,4.317485002695643781e-02,1.304018450597676723e-02,9.275975836092331672e-02,0.000000000000000000e+00,8.598948944837755959e-02,0.000000000000000000e+00,3.102013387142867409e-02,2.940227810792764296e-02,0.000000000000000000e+00,3.282294564336233483e-02 25 | 2.663489405153044581e-03,1.241853960192107822e-02,2.923221406502980735e-02,0.000000000000000000e+00,7.636695106776603126e-02,5.020420756106727667e-02,1.150363752336661105e-01,1.042333492010410340e-02,7.409358144490738041e-02,2.374659250664356430e-02,4.797530119251679909e-02,2.553388456447708635e-02,5.197347078058542347e-02,2.303436680165089206e-02,3.481000236631413836e-02,1.874703474328592856e-02,9.159595758349816513e-03,5.139118999246068686e-02,3.107922827517919928e-02,0.000000000000000000e+00,4.133329692738069161e-02,1.558402392045069550e-02,7.991366938394493802e-02,0.000000000000000000e+00,7.161311414922469365e-02,0.000000000000000000e+00,3.654826338989512757e-02,2.908962093656275102e-02,0.000000000000000000e+00,3.802865101146268856e-02 26 | 2.562696317217893604e-03,1.392038294819808106e-02,2.989432107757208218e-02,3.174320863274820992e-03,7.159367154135608258e-02,4.886719250405209547e-02,1.101234203221686248e-01,1.243769753694886834e-02,7.318156435354558620e-02,2.446400698156012826e-02,4.906985138266828361e-02,2.503067215247170921e-02,5.319422247605312681e-02,2.463336735569456384e-02,3.564220726743033696e-02,2.122567898571707176e-02,1.216895861053358258e-02,5.030785169686636388e-02,3.368416174693901477e-02,0.000000000000000000e+00,4.009037759965870112e-02,1.601910861858845542e-02,7.578049167587570800e-02,0.000000000000000000e+00,6.689854380614909668e-02,0.000000000000000000e+00,3.867542289808281741e-02,2.801674482319373161e-02,0.000000000000000000e+00,3.934306445818305104e-02 27 | 2.980685004595218582e-03,1.453306574222394849e-02,3.054556569804703706e-02,4.928218812402608562e-03,6.808223211519096041e-02,4.760159995552151746e-02,1.063174385505386149e-01,1.361562599843615246e-02,7.193395673898614340e-02,2.540906356925145063e-02,4.951520057108381445e-02,2.471826976974539347e-02,5.426124464929257124e-02,2.554848115039357048e-02,3.633967267567161930e-02,2.280724405363264776e-02,1.393587792535793193e-02,5.004400626282325126e-02,3.526822578171708022e-02,0.000000000000000000e+00,3.880239710283201610e-02,1.644705881455509056e-02,7.225388795294125643e-02,0.000000000000000000e+00,6.279337928250236511e-02,0.000000000000000000e+00,4.026786421557466966e-02,2.804729846852692735e-02,2.445423007542441018e-03,4.055701613061353517e-02 28 | 3.564037569989737201e-03,1.605502230679507758e-02,3.165926764934952342e-02,9.188896311251703447e-03,6.091355968798756182e-02,4.500359712392366235e-02,9.778795984492058557e-02,1.610576410958586280e-02,6.874375905179892776e-02,2.719398091646941379e-02,4.970667940269934970e-02,2.464604916115716721e-02,5.591035769512665843e-02,2.793759741399248764e-02,3.733984811273544091e-02,2.621977458561353114e-02,1.807045216997444845e-02,4.926500742318920545e-02,3.908707186032507608e-02,0.000000000000000000e+00,3.583358595482388775e-02,1.715336566493761219e-02,6.454071116045924372e-02,2.332216580631091621e-03,5.398933235372131711e-02,0.000000000000000000e+00,4.290763495809578332e-02,2.833409743742520970e-02,7.884124090850298805e-03,4.262624940216995506e-02 29 | 4.270831035451238405e-03,1.680676025258075884e-02,3.214304819017330811e-02,1.371412770944095694e-02,5.281314159067407310e-02,4.155339411694630725e-02,8.750822091947300929e-02,1.878098652534237328e-02,6.336445182742617144e-02,2.657490823817897085e-02,4.959070744818111498e-02,2.487132240850555356e-02,5.512115602173547901e-02,3.183155732227083146e-02,3.738495384922626424e-02,3.113560353019595092e-02,2.039735879332010143e-02,4.993949465499990248e-02,4.267531630536852694e-02,8.368449875167952023e-03,3.081546899442927367e-02,1.781261861726147339e-02,5.477989006263990490e-02,1.036044398805150563e-02,4.536527416357628156e-02,0.000000000000000000e+00,4.304060091337191807e-02,3.053171230416400900e-02,1.558003954836137059e-02,4.286816079348525904e-02 30 | 1.114456295238665760e-02,2.087927613570686458e-02,3.547929742652459334e-02,3.219134385889931699e-02,2.567117504216442914e-02,3.045430016044909510e-02,4.482345722807161426e-02,2.515524404742324610e-02,3.878489961946457454e-02,2.414024107128715652e-02,4.538702068604390238e-02,2.824411262235066583e-02,4.703505475056741353e-02,4.490419479376171752e-02,3.519683103294508203e-02,5.028849314161087242e-02,2.956715324996102290e-02,5.216858111630243849e-02,5.556183521549861587e-02,4.318054161696847221e-02,1.253643554492523196e-02,2.096989154430908830e-02,1.761982920676282566e-02,4.437669786128411314e-02,1.357337436458594220e-02,9.452247748536698330e-03,4.171718086827521516e-02,3.743307392168260944e-02,4.265497772554372596e-02,3.940867544570664932e-02 31 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_random_40.csv: -------------------------------------------------------------------------------- 1 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.999989999999999712e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.000000000028755665e-06,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 2 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.113785497379428113e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.886214502620571887e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 3 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,5.412649261282815871e-01,0.000000000000000000e+00,6.875929185365234342e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.899757820180660972e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 4 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,5.132377054093388846e-01,0.000000000000000000e+00,1.011454475445289214e-01,0.000000000000000000e+00,0.000000000000000000e+00,1.336496858277010091e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.722518784633620514e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 5 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.170515140062045045e-02,0.000000000000000000e+00,4.993269263506690536e-01,0.000000000000000000e+00,1.077863674465349697e-01,0.000000000000000000e+00,0.000000000000000000e+00,1.789179887676965730e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.632897559254060216e-01,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 6 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.583097530241324824e-02,0.000000000000000000e+00,4.630634034413593780e-01,0.000000000000000000e+00,1.211350196287299535e-01,0.000000000000000000e+00,0.000000000000000000e+00,1.993530311318716941e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.376754003061369080e-01,2.235989820817327334e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 7 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.233911126894270294e-02,0.000000000000000000e+00,3.754909140181719729e-01,0.000000000000000000e+00,1.496213343122808070e-01,0.000000000000000000e+00,0.000000000000000000e+00,1.567758055459722924e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.677992313008891179e-01,6.252926625110663550e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.654256229401144085e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 8 | 0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.148308307156823971e-01,0.000000000000000000e+00,3.285737726720823204e-01,0.000000000000000000e+00,1.496411736147485738e-01,0.000000000000000000e+00,0.000000000000000000e+00,9.022861478253624279e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.336444985740993019e-01,7.540281711368279627e-02,0.000000000000000000e+00,0.000000000000000000e+00,5.093724342973286051e-02,0.000000000000000000e+00,3.794680240171813268e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 9 | 0.000000000000000000e+00,0.000000000000000000e+00,2.250918964394692939e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.284316719622734249e-01,0.000000000000000000e+00,2.868966102243231120e-01,0.000000000000000000e+00,1.515149446366084729e-01,0.000000000000000000e+00,0.000000000000000000e+00,8.493605961113273595e-05,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.003554720546715240e-01,8.374847659677395195e-02,0.000000000000000000e+00,0.000000000000000000e+00,6.030216247947647185e-02,0.000000000000000000e+00,6.615653634231517810e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 10 | 0.000000000000000000e+00,0.000000000000000000e+00,2.689636913237482274e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.278927689807773382e-01,0.000000000000000000e+00,2.749233245623411426e-01,0.000000000000000000e+00,1.478803373267355836e-01,0.000000000000000000e+00,0.000000000000000000e+00,3.190426540780667321e-04,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.926054819136212015e-01,8.545766488814607320e-02,0.000000000000000000e+00,1.185575487042817011e-02,6.079919312809207305e-02,0.000000000000000000e+00,7.137006254340559630e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 11 | 0.000000000000000000e+00,0.000000000000000000e+00,2.737961456047689757e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.278681580075456403e-01,0.000000000000000000e+00,2.733109419266140927e-01,0.000000000000000000e+00,1.474364481588149312e-01,0.000000000000000000e+00,0.000000000000000000e+00,1.917208151915681530e-04,0.000000000000000000e+00,0.000000000000000000e+00,5.725239432155457275e-04,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.914467613655114198e-01,8.562866124745835417e-02,0.000000000000000000e+00,1.336498385564857672e-02,6.075595580567294540e-02,0.000000000000000000e+00,7.204423031385009946e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 12 | 0.000000000000000000e+00,0.000000000000000000e+00,2.784085232491236711e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.277754652232978017e-01,0.000000000000000000e+00,2.715488396555140183e-01,0.000000000000000000e+00,1.468305307864032350e-01,7.877111573785372522e-04,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.158883087038493909e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.901584384998324107e-01,8.561521553064455059e-02,0.000000000000000000e+00,1.487624632195763685e-02,6.073086311288326822e-02,0.000000000000000000e+00,7.267695430013829117e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 13 | 0.000000000000000000e+00,0.000000000000000000e+00,3.497678552190491841e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.260919968223641607e-01,0.000000000000000000e+00,2.424609752546577901e-01,0.000000000000000000e+00,1.377228697128347612e-01,1.363463637264418493e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.209965701856774600e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.680247211774910099e-01,8.439277610766052207e-02,0.000000000000000000e+00,4.100960787048504863e-02,5.963567914121765262e-02,0.000000000000000000e+00,8.283998631688360703e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 14 | 0.000000000000000000e+00,0.000000000000000000e+00,3.525624121749838802e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.258203103828915703e-01,0.000000000000000000e+00,2.403372095795405228e-01,0.000000000000000000e+00,1.365287447037424884e-01,1.417149086513771333e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.887969931032754289e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.669055974028246236e-01,8.453881625662008903e-02,0.000000000000000000e+00,4.193614224527780765e-02,5.952319053482021255e-02,0.000000000000000000e+00,8.347427042895463889e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.620016451659378465e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 15 | 0.000000000000000000e+00,0.000000000000000000e+00,3.809357570235104296e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.226718592140030040e-01,0.000000000000000000e+00,2.231279024704967417e-01,8.818116700849365497e-03,1.287080932987464954e-01,1.910366748668541198e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.489563699601707120e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.575403918157586847e-01,8.538025170610676062e-02,0.000000000000000000e+00,4.625530732406109985e-02,5.949027788331280597e-02,0.000000000000000000e+00,8.503436458297884692e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.088055481863295371e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 16 | 0.000000000000000000e+00,0.000000000000000000e+00,4.291417620345591016e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.150593030618488888e-01,0.000000000000000000e+00,1.850918784928604621e-01,2.886120350956802166e-02,1.127032565550848409e-01,2.902422842235104217e-02,0.000000000000000000e+00,7.205275536523406132e-03,0.000000000000000000e+00,0.000000000000000000e+00,2.237482861561643568e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.356688422634917401e-01,8.532874805419222997e-02,0.000000000000000000e+00,5.668364157055272301e-02,5.786868692960631805e-02,0.000000000000000000e+00,8.743901517077096175e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,3.377691561407705073e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 17 | 0.000000000000000000e+00,0.000000000000000000e+00,4.266136873849744188e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.140326794055875476e-01,0.000000000000000000e+00,1.787704340420946392e-01,3.188069060617396144e-02,1.102709401338772544e-01,3.003617370258870184e-02,0.000000000000000000e+00,7.881236094449208668e-03,0.000000000000000000e+00,0.000000000000000000e+00,2.454581371200508649e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.316440623908195218e-01,8.498202381380526305e-02,0.000000000000000000e+00,5.749410451799449873e-02,5.696199923066824766e-02,0.000000000000000000e+00,8.756455952984150415e-02,4.010269572468597166e-03,0.000000000000000000e+00,0.000000000000000000e+00,3.726364450912878629e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 18 | 0.000000000000000000e+00,0.000000000000000000e+00,4.261882565722072136e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,6.866116703445959701e-04,1.137373952776115915e-01,0.000000000000000000e+00,1.775527259740165564e-01,3.237509839823479035e-02,1.098629155826496839e-01,3.018381474209731741e-02,0.000000000000000000e+00,7.960173766703625142e-03,0.000000000000000000e+00,0.000000000000000000e+00,2.512177909687118155e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.307637689346319576e-01,8.471669574652695989e-02,0.000000000000000000e+00,5.757234472430881184e-02,5.688652019700275037e-02,0.000000000000000000e+00,8.752376755924348717e-02,4.763494169228194020e-03,0.000000000000000000e+00,0.000000000000000000e+00,3.767406850330789342e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 19 | 0.000000000000000000e+00,0.000000000000000000e+00,4.329524714648060046e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.427939522293456692e-02,1.018427528989180875e-01,0.000000000000000000e+00,1.442270348939596047e-01,4.666678843032399243e-02,9.681339625940951765e-02,3.595552654427504324e-02,0.000000000000000000e+00,1.618275982099204660e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.217073601700536079e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.098043734446845776e-01,7.994852852100998997e-02,1.585484954338020613e-02,5.569516906290331026e-02,5.888257516743568287e-02,0.000000000000000000e+00,8.247781623679553697e-02,2.185130620747707808e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.405174458201478738e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 20 | 0.000000000000000000e+00,0.000000000000000000e+00,4.326544602731897948e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.446733784263321693e-02,1.015646907538103605e-01,4.094573518109573262e-04,1.436377459976000970e-01,4.694006952688074830e-02,9.663845802151425912e-02,3.601750064104923543e-02,0.000000000000000000e+00,1.617626453890828875e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.220653504609116702e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.094842969628821716e-01,7.986471387680366130e-02,1.624372074331759813e-02,5.562208942459240246e-02,5.888768016936821864e-02,0.000000000000000000e+00,8.235412650767560960e-02,2.208741407385667044e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.413245249388635799e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 21 | 0.000000000000000000e+00,0.000000000000000000e+00,4.143387386522703192e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,1.932894352800056809e-02,9.705006415401783160e-02,6.558960570003546930e-03,1.321811413396744850e-01,5.123600895942269362e-02,9.271898340009013251e-02,3.678374772863497039e-02,0.000000000000000000e+00,1.562093838650506147e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.380772741337467052e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,5.759009900112382896e-03,1.023190203938476039e-01,7.704282430220769917e-02,2.321911201003250963e-02,5.441934617945026753e-02,5.816066925414457162e-02,0.000000000000000000e+00,8.045969313801600020e-02,2.632508658595629839e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.557484889128171623e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 22 | 0.000000000000000000e+00,0.000000000000000000e+00,4.123145510560566329e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.166804751000537405e-02,9.468563276999436562e-02,8.895196443410913201e-03,1.278478879649092570e-01,5.276646225027231685e-02,9.110955169981117818e-02,3.739411765544495975e-02,0.000000000000000000e+00,1.507398051561730304e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.422034777699595187e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,7.581921993981374785e-03,9.955615053741792564e-02,7.537406034407823086e-02,2.587864951426088050e-02,5.385375194692126194e-02,5.845728049252095493e-02,0.000000000000000000e+00,7.921862686398273290e-02,2.738782937593930641e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.536283673778725850e-02,0.000000000000000000e+00,0.000000000000000000e+00,2.436212501042776812e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 23 | 0.000000000000000000e+00,0.000000000000000000e+00,4.122046721586840323e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.351777723817990995e-02,9.220615514079957831e-02,1.072994100895338643e-02,1.237398924499837904e-01,5.393362200973214615e-02,8.941206365100173858e-02,3.756082726686297418e-02,0.000000000000000000e+00,1.476387420063295791e-02,3.037635279315477332e-03,0.000000000000000000e+00,3.402128213168483656e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,8.647331291852588392e-03,9.734588078976508241e-02,7.404608812295243592e-02,2.803449497597709783e-02,5.351695407350474942e-02,5.866539242455628966e-02,0.000000000000000000e+00,7.761992577620184519e-02,2.865308168606876121e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.504558780932886586e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.281725456777109307e-03,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00 24 | 0.000000000000000000e+00,0.000000000000000000e+00,4.117651232154070223e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.391326134014134727e-02,9.017840203770263741e-02,1.187190161076705566e-02,1.209182662953457860e-01,5.463844322806703929e-02,8.787690231796023432e-02,3.776993326876994239e-02,0.000000000000000000e+00,1.505405475927029842e-02,5.180480117679228669e-03,0.000000000000000000e+00,3.312412990064145246e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,8.815731378491852704e-03,9.623071335696070649e-02,7.347880605546312782e-02,2.956868740321789979e-02,5.328539642812244598e-02,5.881119720426867398e-02,0.000000000000000000e+00,7.645429306942853886e-02,2.917679426498247242e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.497125254434544001e-02,0.000000000000000000e+00,0.000000000000000000e+00,5.669479028593632508e-03,0.000000000000000000e+00,1.835362068239400346e-03,0.000000000000000000e+00 25 | 0.000000000000000000e+00,0.000000000000000000e+00,3.837630243993797596e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.260545799474078521e-02,8.171598788153927595e-02,2.007010820137265783e-02,1.059484539412571258e-01,5.590963488004101201e-02,7.921682883821415389e-02,3.770600027792835041e-02,0.000000000000000000e+00,1.525477085968691797e-02,1.521776829695355854e-02,0.000000000000000000e+00,3.239265513019957271e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.037742520418159606e-03,9.152367836182853655e-02,7.179258711339295274e-02,3.428079299658623458e-02,5.095272282377057149e-02,5.661336462688847104e-02,0.000000000000000000e+00,7.223821674261068915e-02,3.397768623879755812e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.716935895602242940e-02,1.217787974731183304e-02,0.000000000000000000e+00,9.277642900117830105e-03,0.000000000000000000e+00,6.544358230383282016e-03,0.000000000000000000e+00 26 | 0.000000000000000000e+00,0.000000000000000000e+00,3.779799381952625437e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,2.103500609267287130e-02,7.342766949644846664e-02,2.719903439065398526e-02,9.355126809388059073e-02,5.727775977284504938e-02,7.300932299654772084e-02,3.789785297150733562e-02,0.000000000000000000e+00,1.633046402708966671e-02,2.189130270947532708e-02,0.000000000000000000e+00,3.159819177337613860e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,8.873103113498282193e-03,8.756181955374514603e-02,7.041932357731359171e-02,3.704334943642873662e-02,4.854242883564124228e-02,5.581879865648417538e-02,0.000000000000000000e+00,6.823451769382063437e-02,3.608537598417874831e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.672131663797132045e-02,1.972159497766281383e-02,0.000000000000000000e+00,1.284698961862760364e-02,7.128384386174850540e-03,9.987131384429241698e-03,0.000000000000000000e+00 27 | 0.000000000000000000e+00,0.000000000000000000e+00,3.757489146345447534e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.459054031113238281e-03,0.000000000000000000e+00,2.088988327228795058e-02,7.250574763962594482e-02,2.819313089058575472e-02,9.206154062245595904e-02,5.710325692043853596e-02,7.214371019430010357e-02,3.785875204338971095e-02,0.000000000000000000e+00,1.628386872524356654e-02,2.271691404951773491e-02,0.000000000000000000e+00,3.204803565605290894e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,8.792244308325668223e-03,8.680995125297777393e-02,6.993900264914379439e-02,3.686646247483577749e-02,4.829001560408700822e-02,5.542281417616011507e-02,0.000000000000000000e+00,6.765663026242814404e-02,3.656373200165979886e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.668980657504229886e-02,2.097977448156318481e-02,0.000000000000000000e+00,1.326995500961763649e-02,7.857719767462745253e-03,1.002310592822991918e-02,0.000000000000000000e+00 28 | 0.000000000000000000e+00,0.000000000000000000e+00,3.419691877419819837e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.165541284973019981e-02,6.434127466128501671e-03,1.971266255786345914e-02,6.708363425430001470e-02,3.435049199809306342e-02,8.117663501820074345e-02,5.375684267977329234e-02,6.448914101466650395e-02,3.657136072654171288e-02,0.000000000000000000e+00,1.557563524546878159e-02,2.827325858061520078e-02,0.000000000000000000e+00,3.723793517081615267e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.072800963238699529e-03,8.133762252907639212e-02,6.577149323740505427e-02,3.381924686985362388e-02,4.689603490801688701e-02,5.085695925474015278e-02,0.000000000000000000e+00,6.562253451348658284e-02,4.104659704763440053e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.740266611654374296e-02,3.018762711170913660e-02,0.000000000000000000e+00,1.468836293753275450e-02,1.194906659461400511e-02,1.083493157975251066e-02,0.000000000000000000e+00 29 | 0.000000000000000000e+00,0.000000000000000000e+00,2.903299089073100095e-02,6.911120439201313970e-03,0.000000000000000000e+00,2.551792710340133191e-02,1.458364221454935827e-02,1.936519797582643421e-02,5.997273402218429583e-02,4.167388385378439919e-02,6.630000542792027773e-02,4.950562041107021971e-02,5.465004997568546213e-02,3.422658866717497028e-02,0.000000000000000000e+00,1.528674269317015048e-02,3.416366605509582599e-02,0.000000000000000000e+00,4.461025865963100245e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.542910516166824494e-03,7.262414116634977046e-02,5.975851954755248552e-02,2.950239860565577465e-02,4.438949903114786100e-02,4.384262070278697326e-02,0.000000000000000000e+00,6.176409962612038063e-02,4.659170418951077974e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.804118472783310695e-02,4.213943051666307893e-02,0.000000000000000000e+00,1.694945654567838952e-02,1.748846800398183576e-02,1.156513843112652595e-02,0.000000000000000000e+00 30 | 0.000000000000000000e+00,0.000000000000000000e+00,2.825442349745539011e-02,7.732257009743993131e-03,0.000000000000000000e+00,2.685287022246074864e-02,1.555389065013735445e-02,1.890740848016764925e-02,5.939586689106957085e-02,4.246870328558075003e-02,6.458221883118150930e-02,4.904526706868887059e-02,5.332415034728961445e-02,3.383995645077736425e-02,0.000000000000000000e+00,1.548137486798367365e-02,3.465994551936894819e-02,0.000000000000000000e+00,4.540732596897225498e-02,0.000000000000000000e+00,0.000000000000000000e+00,0.000000000000000000e+00,9.602469811324725046e-03,7.172533533062935840e-02,5.932051971214196556e-02,2.896472543833516350e-02,4.383014982877549148e-02,4.282380242578417290e-02,0.000000000000000000e+00,6.126913669352404557e-02,4.721835704859952271e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.834136322184712925e-02,4.349861137645319453e-02,0.000000000000000000e+00,1.681596951401201703e-02,1.802591036641405797e-02,1.179687535589000504e-02,1.261114785391238835e-03 31 | 0.000000000000000000e+00,0.000000000000000000e+00,2.808178897030622415e-02,7.927597798729899697e-03,0.000000000000000000e+00,2.715630938506456010e-02,1.579364475271765461e-02,1.886636723012083405e-02,5.922622985292700509e-02,4.266208022826459972e-02,6.413325601230128459e-02,4.896594591170615185e-02,5.298714995974337927e-02,3.376179118714034422e-02,0.000000000000000000e+00,1.552566512871962102e-02,3.478975606321178804e-02,0.000000000000000000e+00,4.559522234395395335e-02,0.000000000000000000e+00,0.000000000000000000e+00,1.721701226018793052e-04,9.625621002353474190e-03,7.144643754300451788e-02,5.916476417027154155e-02,2.885418924260291229e-02,4.366450967449654608e-02,4.262597115550088855e-02,0.000000000000000000e+00,6.111343430695187484e-02,4.738023961149251395e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.832244876541959278e-02,4.377954281497144218e-02,0.000000000000000000e+00,1.680339112892858047e-02,1.817053457045888359e-02,1.184968472609473217e-02,1.554256339943240611e-03 32 | 0.000000000000000000e+00,0.000000000000000000e+00,2.801010434216131412e-02,8.096790360255073579e-03,0.000000000000000000e+00,2.739893043786889582e-02,1.604347349850825805e-02,1.889970031213974305e-02,5.887320548202541748e-02,4.281072308405962229e-02,6.364087326824166557e-02,4.882244016541962411e-02,5.263491793211309139e-02,3.362108512686261957e-02,0.000000000000000000e+00,1.555064451563760441e-02,3.500706004068272759e-02,0.000000000000000000e+00,4.560835126672862366e-02,0.000000000000000000e+00,0.000000000000000000e+00,3.602045966290320228e-04,9.621996802796965037e-03,7.117265560381073886e-02,5.901018080852453440e-02,2.883386522106590882e-02,4.367761597763237386e-02,4.240744904555258238e-02,0.000000000000000000e+00,6.087336138297662347e-02,4.742548758731233993e-02,4.364638311828428208e-04,0.000000000000000000e+00,4.824905017006475560e-02,4.397348639516596158e-02,0.000000000000000000e+00,1.686936288574686360e-02,1.836526623482756179e-02,1.193835415929426699e-02,1.766899464712097523e-03 33 | 0.000000000000000000e+00,0.000000000000000000e+00,2.795155799507247421e-02,8.408881120433930184e-03,0.000000000000000000e+00,2.772401388182584719e-02,1.639819105896460696e-02,1.892913065803697101e-02,5.810305218821621570e-02,4.310540595508780687e-02,6.265233697925561007e-02,4.838452395407283335e-02,5.200431469863414646e-02,3.324797209042751334e-02,0.000000000000000000e+00,1.560373467969357504e-02,3.544838748403437295e-02,0.000000000000000000e+00,4.557274025700325248e-02,0.000000000000000000e+00,0.000000000000000000e+00,4.926703184590036991e-04,9.691595427244648411e-03,7.069050460444563366e-02,5.893937357619110501e-02,2.874306846272765142e-02,4.366878110586156631e-02,4.192674474825017206e-02,0.000000000000000000e+00,6.041306358552919753e-02,4.750558615583342498e-02,1.348620165581945751e-03,0.000000000000000000e+00,4.822265098956004387e-02,4.433373067485680413e-02,7.016566357822204281e-04,1.693336422646569625e-02,1.868409612912715762e-02,1.207300900233178320e-02,2.097241190992596427e-03 34 | 0.000000000000000000e+00,0.000000000000000000e+00,2.493594500826483082e-02,1.177847216115909812e-02,0.000000000000000000e+00,2.881017772387354028e-02,1.796602849201447624e-02,1.993309135470681254e-02,5.271064021103161190e-02,4.645662248992264015e-02,5.343003505028235539e-02,4.574000100313818651e-02,4.748335255447613812e-02,2.971870582881702347e-02,0.000000000000000000e+00,1.564307507435164224e-02,3.789552376704261732e-02,0.000000000000000000e+00,4.659705267035096909e-02,0.000000000000000000e+00,7.169299502922291123e-03,2.805634183287050026e-03,1.166775198903002506e-02,6.558230948476877209e-02,5.764108776914032839e-02,2.891831090490102479e-02,4.180075687619367458e-02,3.827671737082416481e-02,0.000000000000000000e+00,5.597079190407743682e-02,4.923260705907195334e-02,8.186427503899671582e-03,0.000000000000000000e+00,4.707071638653395618e-02,4.676554376728415258e-02,5.950709881849633454e-03,1.550854846683602864e-02,2.107621655851341091e-02,1.165473322513982911e-02,5.623113776294437482e-03 35 | 0.000000000000000000e+00,0.000000000000000000e+00,2.477271844124587230e-02,1.198802355956574486e-02,0.000000000000000000e+00,2.875557324949007051e-02,1.795285748353086033e-02,2.011948831104263397e-02,5.244279252911678013e-02,4.663658628375071113e-02,5.289539480922822445e-02,4.556447650684483652e-02,4.730275176604539084e-02,2.952471376491311306e-02,0.000000000000000000e+00,1.557849963216283683e-02,3.799756155488422105e-02,0.000000000000000000e+00,4.661770759360069072e-02,4.408128192440879944e-04,7.570905878677352402e-03,2.859862206579655633e-03,1.191906200125835563e-02,6.530088174348823438e-02,5.752985079079016295e-02,2.889242354266565588e-02,4.163760059267135327e-02,3.814221850482156506e-02,0.000000000000000000e+00,5.574379951506566733e-02,4.923141263193054479e-02,8.526551381431365928e-03,0.000000000000000000e+00,4.698289395327927276e-02,4.685070691419476741e-02,6.378937578175911116e-03,1.546270366725889349e-02,2.118351003993219211e-02,1.145653382682691214e-02,5.740186926285790678e-03 36 | 0.000000000000000000e+00,0.000000000000000000e+00,2.439433163443851041e-02,1.230211882902117540e-02,4.037618256170633080e-04,2.878988633219081023e-02,1.810347276582273401e-02,2.030777448788914641e-02,5.212938583133466114e-02,4.679246481067485253e-02,5.216010091559004913e-02,4.514977433818326974e-02,4.688296570107319122e-02,2.919326780914672376e-02,0.000000000000000000e+00,1.546502320651748155e-02,3.814162163484139528e-02,0.000000000000000000e+00,4.666619497497725283e-02,1.004358814833024305e-03,8.122521198935271636e-03,2.982685933936051435e-03,1.221746039838635806e-02,6.483763831060940230e-02,5.725033181341091654e-02,2.876544333619126745e-02,4.140740189908546920e-02,3.780431719562342419e-02,0.000000000000000000e+00,5.550844405899331424e-02,4.928449046798106387e-02,9.007668668641586468e-03,0.000000000000000000e+00,4.699607915501780725e-02,4.699824184801035254e-02,6.941392494350259734e-03,1.537298501539407711e-02,2.134545271007887851e-02,1.133467747938723610e-02,5.936264103815628093e-03 37 | 1.539710386401626704e-02,0.000000000000000000e+00,1.888993532623640254e-02,1.360472695607699289e-02,8.242229546772223206e-03,3.073596581273262823e-02,2.215617427175269050e-02,2.341919552018532913e-02,4.520358884858900750e-02,4.722398504891856669e-02,3.877941683131048978e-02,3.415450608312041447e-02,3.847841061597012668e-02,2.405014127929365475e-02,0.000000000000000000e+00,9.796968333476938420e-03,3.993450573969391237e-02,0.000000000000000000e+00,4.567702513181581131e-02,1.067148441010420598e-02,1.722211820302231924e-02,1.000607550076333327e-02,1.970622930393677724e-02,5.308302760886385308e-02,5.139738019642010880e-02,2.645478143734837639e-02,4.137025774579104059e-02,3.023386519385391769e-02,0.000000000000000000e+00,5.404097553009977462e-02,4.899763573096142105e-02,1.702403753098882463e-02,0.000000000000000000e+00,4.287782740894346273e-02,4.638949988777054528e-02,1.914744570468941004e-02,1.318582740179852740e-02,2.746847534803269555e-02,1.013590370858647935e-02,4.843272938063480221e-03 38 | 1.641081487957043658e-02,5.930192520443682003e-03,1.903314116234031822e-02,1.386880106827603418e-02,9.525322961907566749e-03,3.098636687893228242e-02,2.411431004043923867e-02,2.482018646821093980e-02,4.320931893462524875e-02,4.492954145144989475e-02,3.545738527303253507e-02,3.196076471416382792e-02,3.556683731795146769e-02,2.197108855276045519e-02,0.000000000000000000e+00,9.621322329629495435e-03,4.168704083925778292e-02,0.000000000000000000e+00,4.504572892289750857e-02,1.187952645598557705e-02,1.872154298288324775e-02,1.244384807688286854e-02,2.019372493901894910e-02,4.959612155247984655e-02,4.986407411496712044e-02,2.565611074342665637e-02,4.193720101549306550e-02,2.790334495675690640e-02,0.000000000000000000e+00,5.177469802924590525e-02,4.934350988322107334e-02,1.999975654617985182e-02,0.000000000000000000e+00,4.200217764791196878e-02,4.568867756688825554e-02,2.114143621912952659e-02,1.266502849445910912e-02,2.770602751502023592e-02,1.127982788127987121e-02,6.065201062881174325e-03 39 | 2.013940169741382930e-02,1.252785450619913268e-02,1.926313480116333132e-02,1.419850354579582814e-02,1.213896542855303663e-02,3.255573475210804535e-02,2.757859931145893034e-02,2.701462554723978865e-02,3.992071514841483149e-02,4.197145556442101466e-02,3.112830022154660509e-02,2.605347547821570617e-02,3.177263762424066551e-02,1.915536136950064805e-02,0.000000000000000000e+00,6.930325607616478166e-03,4.305004130374108506e-02,0.000000000000000000e+00,4.430363646351720419e-02,1.448848287107193204e-02,2.010042139497930994e-02,1.481096244096011261e-02,2.191097456739702493e-02,4.391184904243398968e-02,4.630987092630307195e-02,2.362295564915701390e-02,4.365622765387757592e-02,2.288842705592195048e-02,0.000000000000000000e+00,4.960991473255437628e-02,4.907968198099007390e-02,2.399725331678788029e-02,5.716382355819237676e-03,4.067472704805465827e-02,4.549957432711523170e-02,2.525495745982422879e-02,1.278014583954770536e-02,2.811978444570755603e-02,1.216927446423813827e-02,5.695364056112956798e-03 40 | 2.030031762284804225e-02,1.280665418945576076e-02,1.930609321019263053e-02,1.416740454888944234e-02,1.231085916148429681e-02,3.266534577285259283e-02,2.779601383378014351e-02,2.689761134511414395e-02,3.974849018051081206e-02,4.175777281513823325e-02,3.096968527910586716e-02,2.588345399188781565e-02,3.153824086154402573e-02,1.908827234486305813e-02,3.182141532172937104e-04,6.898836837111571238e-03,4.307346672246485653e-02,0.000000000000000000e+00,4.411048866079880781e-02,1.447076288678466119e-02,2.012081235324919559e-02,1.493270433085252397e-02,2.182810961081873419e-02,4.365424866535916326e-02,4.611833910286180366e-02,2.361215660885794196e-02,4.374649024093261312e-02,2.269665475639218166e-02,0.000000000000000000e+00,4.946447944908057004e-02,4.898017004570287547e-02,2.413091953262182926e-02,5.959364720591411174e-03,4.064458637242628763e-02,4.546777878057393918e-02,2.534251425464542282e-02,1.283250578494158148e-02,2.819020397671649636e-02,1.241675294198871932e-02,5.753224053342737704e-03 41 | 2.600093119880759335e-02,1.710193915698827311e-02,2.007252036541542703e-02,1.536959949276830995e-02,1.677568533477826612e-02,3.395950968764477329e-02,3.169484258551825973e-02,2.123426634727002688e-02,3.590460535306896905e-02,3.437369648996484173e-02,2.782269679383610195e-02,1.871189913208561734e-02,2.585207283207814968e-02,1.767218209932839082e-02,7.999671534258295455e-03,6.732576613630471621e-03,4.140963359077793476e-02,8.155370592684405354e-03,3.563832906997770056e-02,1.828950080351323185e-02,1.959879660462448756e-02,1.362078106743805708e-02,2.091020641681967662e-02,3.838784370414830005e-02,4.239748344507553168e-02,2.225843241455301852e-02,4.608792325621554470e-02,1.547121590432770470e-02,0.000000000000000000e+00,4.661774369221407394e-02,4.246363983203443881e-02,2.713078346664724722e-02,1.462067122680163131e-02,4.299302825275225920e-02,4.460052977232246280e-02,3.159789286899733485e-02,1.401743075578514887e-02,3.061596515121737735e-02,1.838737152108793627e-02,7.450731572543231943e-03 42 | 3.356575392825009163e-02,1.998086625064008498e-02,1.528454022956403889e-02,1.950954546375625182e-02,2.230930099977862166e-02,3.258503864428097252e-02,3.564572952922032828e-02,1.646917274571730108e-02,3.565802305625464380e-02,2.103920308292051011e-02,2.438002791438611400e-02,8.332650800392497545e-03,1.907538366748514833e-02,1.553525945545492816e-02,1.466412381393141819e-02,5.822063476969053381e-03,3.552127898671635781e-02,2.145660301131521036e-02,2.810317008333997751e-02,2.745335546934020085e-02,2.116035956553282901e-02,1.081311591536523661e-02,2.536948683736284585e-02,2.907341217038428988e-02,3.650712314060730601e-02,1.993133539508468166e-02,4.574426057298149051e-02,4.689949721453970030e-03,9.737666355182405045e-03,4.490696574682165321e-02,3.395456843985865392e-02,2.694054431375282263e-02,2.456675843055959249e-02,4.735908673259296708e-02,4.211996606008341915e-02,4.189513385604013568e-02,1.222021500705385011e-02,3.257232903836299043e-02,2.426413732929974185e-02,1.378249476190639491e-02 43 | -------------------------------------------------------------------------------- /test/data_test/CLA_test_sharpe.csv: -------------------------------------------------------------------------------- 1 | 2.000000000000000111e-01,3.000000000000000444e-01,5.000000000000000000e-01 2 | 2.000000000000000111e-01,5.000000000000000000e-01,3.000000000000000999e-01 3 | 2.000000000000000111e-01,5.000000000000000000e-01,3.000000000000000444e-01 4 | 2.218073778034860277e-01,5.000000000000000000e-01,2.781926221965139168e-01 5 | 4.519156109521872411e-01,3.480843890478127478e-01,2.000000000000000111e-01 6 | 5.000000000000000000e-01,2.999999999999998224e-01,2.000000000000000111e-01 7 | 5.000000000000000000e-01,2.999999999999999334e-01,2.000000000000000111e-01 8 | -------------------------------------------------------------------------------- /test/test_CLA.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pytest 3 | from pycla import PyCLA 4 | from pycla.helpers import Frontier, make_symmetric 5 | from pycla.plotting import plot_efficient_frontiers 6 | from pycla.validation import validate_frontier 7 | from sklearn.datasets import make_spd_matrix 8 | 9 | 10 | @pytest.mark.parametrize("lp_method", ["SCIPY", "TWO_STAGE_SIMPLEX"]) 11 | def test_sharpe(path_test_data: str, lp_method: str, update_tests: bool) -> None: 12 | # Example taken from http://web.stanford.edu/~wfsharpe/mia/opt/mia_opt3.htm 13 | 14 | n_sec = 3 15 | 16 | mu = np.array([2.8000, 6.3000, 10.8000]) 17 | cc = np.array([[1.0000, 0.4000, 0.1500], [0.4000, 1.0000, 0.3500], [0.1500, 0.3500, 1.0000]]) 18 | sd = np.array([1.0000, 7.4000, 15.4000]).reshape([n_sec, 1]) 19 | C = (sd @ sd.T) * cc 20 | 21 | lb = 0.2 * np.ones(n_sec) 22 | ub = 0.5 * np.ones(n_sec) 23 | 24 | A = np.ones([1, n_sec]) 25 | b = np.array([1.0]) 26 | 27 | A_in = None 28 | b_in = None 29 | 30 | pycla = PyCLA(mu, C, A, b, A_in, b_in, lb, ub, lp_method=lp_method) 31 | pycla.trace_frontier() 32 | validate_frontier(pycla) 33 | 34 | weights = np.vstack([i["X"] for i in pycla.output]) 35 | file_name = f"{path_test_data}CLA_test_sharpe.csv" 36 | if update_tests: 37 | np.savetxt(file_name, weights, delimiter=",") 38 | expected_weights = np.loadtxt(file_name, delimiter=",") 39 | 40 | mus_cla = [i["E"] for i in pycla.output] 41 | sigmas_cla = [i["std"] for i in pycla.output] 42 | 43 | cla_frontier = Frontier(mus_cla, sigmas_cla, "cla") 44 | 45 | sharpe_weights = np.array( 46 | [ 47 | [0.2, 0.3, 0.5], 48 | [0.2, 0.5, 0.3], 49 | [0.2, 0.5, 0.3], 50 | [0.2218, 0.5, 0.2782], 51 | [0.4519, 0.3481, 0.2], 52 | [0.5, 0.3, 0.2], 53 | ] 54 | ) 55 | 56 | sharpe_mus = pycla.mu @ sharpe_weights.T 57 | sharpe_sigmas = [np.sqrt(sharpe_weights[i, :] @ pycla.C @ sharpe_weights[i, :].T) for i in range(sharpe_weights.shape[0])] 58 | sharpe_frontier = Frontier(sharpe_mus, sharpe_sigmas, "sharpe") 59 | 60 | plot_frontier = False 61 | if plot_frontier: 62 | plot_efficient_frontiers([cla_frontier, sharpe_frontier]) 63 | 64 | assert np.allclose(weights, expected_weights) 65 | assert np.allclose(weights[:-1, :], sharpe_weights, atol=1e-4) 66 | 67 | 68 | @pytest.mark.parametrize("lp_method", ["SCIPY", "TWO_STAGE_SIMPLEX"]) 69 | def test_many_constraints(path_test_data: str, lp_method: str, update_tests: bool) -> None: 70 | 71 | mu = np.loadtxt(f"{path_test_data}CLA_test_many_constraints_mu.csv", delimiter=",") 72 | C = np.loadtxt(f"{path_test_data}CLA_test_many_constraints_C.csv", delimiter=",") 73 | n_sec = len(mu) 74 | 75 | lb = np.zeros(n_sec) 76 | ub = np.loadtxt(f"{path_test_data}CLA_test_many_constraints_ub.csv", delimiter=",") 77 | 78 | A = np.ones([1, n_sec]) 79 | b = np.array([1.0]) 80 | 81 | A_in = np.loadtxt(f"{path_test_data}CLA_test_many_constraints_A_in.csv", delimiter=",") 82 | b_in = np.loadtxt(f"{path_test_data}CLA_test_many_constraints_b_in.csv", delimiter=",") 83 | 84 | if lp_method == "SCIPY": 85 | m = 12 86 | pycla = PyCLA(mu, C, A, b, A_in[:m], b_in[:m], lb, ub, lp_method=lp_method) 87 | 88 | elif lp_method == "TWO_STAGE_SIMPLEX": 89 | pycla = PyCLA(mu, C, A, b, A_in, b_in, lb, ub, lp_method=lp_method) 90 | else: 91 | raise Exception(f"Unknown LP method {lp_method}.") 92 | 93 | pycla.trace_frontier() 94 | validate_frontier(pycla) 95 | weights = np.vstack([i["X"] for i in pycla.output]) 96 | file_name = f"{path_test_data}CLA_test_many_constraints_{lp_method}.csv" 97 | if update_tests: 98 | np.savetxt(file_name, weights, delimiter=",") 99 | expected_weights = np.loadtxt(file_name, delimiter=",") 100 | 101 | assert np.allclose(weights, expected_weights) 102 | 103 | 104 | @pytest.mark.parametrize("lp_method", ["SCIPY", "TWO_STAGE_SIMPLEX"]) 105 | def test_markowitz_todd(path_test_data: str, lp_method: str, update_tests: bool) -> None: 106 | # Example taken from Mean-Variance Analysis in Portfolio Choice and Capital Markets (Markowitz and Todd 2000) 107 | 108 | mu = np.array([1.175, 1.19, 0.396, 1.12, 0.346, 0.679, 0.089, 0.73, 0.481, 1.08]) 109 | C = np.loadtxt(f"{path_test_data}CLA_test_markowitz_todd_C.csv", delimiter=",") 110 | 111 | lb = np.array([0.0999, 0, 0, 0, 0.0999, 0, 0, 0, 0, 0]) 112 | ub = np.array([0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3]) 113 | 114 | A = np.array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]) 115 | b = np.array([1]) 116 | 117 | A_in = np.array([[-1, -1, -1, -0.5, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0.5, 1, 1, 1, 0, 0, 0]]) 118 | b_in = np.array([-0.2, 0.5]) 119 | 120 | pycla = PyCLA(mu, C, A, b, A_in, b_in, lb, ub, lp_method=lp_method) 121 | pycla.trace_frontier() 122 | validate_frontier(pycla) 123 | 124 | weights = np.vstack([i["X"] for i in pycla.output]) 125 | file_name = f"{path_test_data}CLA_test_markowitz_todd.csv" 126 | if update_tests: 127 | np.savetxt(file_name, weights, delimiter=",") 128 | expected_weights = np.loadtxt(file_name, delimiter=",") 129 | assert np.allclose(weights, expected_weights) 130 | 131 | 132 | @pytest.mark.parametrize("lp_method", ["SCIPY", "TWO_STAGE_SIMPLEX"]) 133 | def test_random(path_test_data: str, lp_method: str, update_tests: bool) -> None: 134 | 135 | for n_sec in range(10, 101, 10): 136 | np.random.seed(n_sec) 137 | mu = np.random.random(n_sec) 138 | C = make_spd_matrix(n_sec, random_state=n_sec) 139 | C = make_symmetric(C) 140 | 141 | lb = np.zeros(n_sec) 142 | ub = np.ones(n_sec) 143 | 144 | A = np.ones((1, n_sec)) 145 | b = np.array([1]) 146 | 147 | A_in = None 148 | b_in = None 149 | 150 | ub[np.argmax(mu)] -= 0.000001 # Required for Scipy 151 | 152 | pycla = PyCLA(mu, C, A, b, A_in, b_in, lb, ub, lp_method=lp_method) 153 | pycla.trace_frontier() 154 | validate_frontier(pycla) 155 | 156 | weights = np.vstack([i["X"] for i in pycla.output]) 157 | file_name = f"{path_test_data}CLA_test_random_{n_sec}.csv" 158 | if update_tests: 159 | np.savetxt(file_name, weights, delimiter=",") 160 | expected_weights = np.loadtxt(f"{path_test_data}CLA_test_random_{n_sec}.csv", delimiter=",") 161 | assert np.allclose(weights, expected_weights) 162 | 163 | 164 | @pytest.mark.parametrize("lp_method", ["SCIPY", "TWO_STAGE_SIMPLEX"]) 165 | def test_markowitz_et_al(path_test_data: str, lp_method: str, update_tests: bool) -> None: 166 | # Example taken from Avoiding the Downside: A Practical Review of the Critical Line Algorithm for 167 | # Mean-Semivariance Portfolio Optimization (Markowitz et. al 2019) 168 | # https://www.hudsonbaycapital.com/documents/FG/hudsonbay/research/599440_paper.pdf 169 | 170 | historic_returns = np.loadtxt(f"{path_test_data}CLA_test_markowitz_et_al_data.csv", delimiter=",") 171 | mu = np.mean(historic_returns, axis=0) 172 | C = np.cov(historic_returns.T) 173 | 174 | lb = np.array([0.1, 0.1, 0.1]) 175 | ub = np.array([0.5, 0.5, 0.5]) 176 | 177 | A = np.array([[1, 1, 1]]) 178 | b = np.array([1]) 179 | 180 | A_in = None 181 | b_in = None 182 | 183 | pycla = PyCLA(mu, C, A, b, A_in, b_in, lb, ub, lp_method=lp_method) 184 | pycla.trace_frontier() 185 | validate_frontier(pycla) 186 | 187 | weights = np.vstack([i["X"] for i in pycla.output]) 188 | file_name = f"{path_test_data}CLA_test_markowitz_et_al.csv" 189 | if update_tests: 190 | np.savetxt(file_name, weights, delimiter=",") 191 | expected_weights = np.loadtxt(file_name, delimiter=",") 192 | assert np.allclose(weights, expected_weights) 193 | -------------------------------------------------------------------------------- /test/test_SemiPyCLA.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pytest as pytest 3 | from pycla import SemiPyCLA 4 | from pycla.validation import validate_semivariance_frontier 5 | 6 | 7 | @pytest.mark.parametrize("lp_method", ["SCIPY", "TWO_STAGE_SIMPLEX"]) 8 | def test_markowitz_et_al(path_test_data: str, lp_method: str, update_tests: bool) -> None: 9 | # Example taken from Avoiding the Downside: A Practical Review of the Critical Line Algorithm for 10 | # Mean-Semivariance Portfolio Optimization (Markowitz et. al 2019) 11 | # https://www.hudsonbaycapital.com/documents/FG/hudsonbay/research/599440_paper.pdf 12 | 13 | historic_returns = np.loadtxt(f"{path_test_data}CLA_test_markowitz_et_al_data.csv", delimiter=",") 14 | mu = np.mean(historic_returns, axis=0) 15 | 16 | lb = np.array([0.0, 0.0, 0.0]) 17 | ub = np.array([10.0, 10.0, 10.0]) 18 | 19 | A = np.array([[1, 1, 1]]) 20 | b = np.array([1]) 21 | 22 | A_in = None 23 | b_in = None 24 | 25 | pycla = SemiPyCLA(historic_returns, mu, A, b, A_in, b_in, lb, ub, lp_method=lp_method) 26 | pycla.trace_frontier() 27 | validate_semivariance_frontier(pycla) 28 | 29 | weights = np.vstack([i["X"] for i in pycla.output]) 30 | file_name = f"{path_test_data}CLA_test_markowitz_et_al_semi.csv" 31 | if update_tests: 32 | np.savetxt(file_name, weights, delimiter=",") 33 | expected_weights = np.loadtxt(file_name, delimiter=",") 34 | assert np.allclose(weights, expected_weights) 35 | -------------------------------------------------------------------------------- /test/test_plotting.py: -------------------------------------------------------------------------------- 1 | from unittest.mock import patch 2 | 3 | from pycla.helpers import Frontier 4 | from pycla.plotting import plot_efficient_frontiers 5 | 6 | 7 | def test_plotting() -> None: 8 | with patch("pycla.plotting.plt.show") as show_patch: 9 | plot_efficient_frontiers([Frontier([5, 4, 3], [4, 3, 2], "test_frontier")]) 10 | assert show_patch.called 11 | -------------------------------------------------------------------------------- /test/test_simplex.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pytest 3 | from pycla.simplex import Simplex 4 | 5 | 6 | def test_lp1() -> None: 7 | mu = np.array([4.0, 5.0, 0.0, 0.0]) 8 | A = np.array([[2.0, 1.0, 1.0, 0.0], [1.0, 2.0, 0.0, 1.0]]) 9 | b = np.array([3.0, 3.0]) 10 | lb = np.array([0.0, 0.0, 0.0, 0.0]) 11 | ub = np.array([np.inf, np.inf, np.inf, np.inf]) 12 | simp = Simplex(A, b, lb, ub, mu, tol=1e-8) 13 | X = simp.solve()[0] 14 | assert np.allclose(X, np.array([1, 1, 0, 0])) 15 | 16 | 17 | def test_alter_mu() -> None: 18 | mu = np.array([5.0, 5.0, 5.0, 5.0]) 19 | A = np.array([[1.0, 1.0, 1.0, 1.0]]) 20 | b = np.array([1.0]) 21 | lb = np.array([0.0, 0.0, 0.0, 0.0]) 22 | ub = np.array([1.0, 1.0, 1.0, 1.0]) 23 | simp = Simplex(A, b, lb, ub, mu, tol=1e-8) 24 | X, altered_mus, _, _, _ = simp.solve() 25 | assert set(X) == {0, 1} 26 | assert set(altered_mus) == {5.0 + 1e-6, 5.0, 5.0 - 1e-6} 27 | 28 | 29 | def test_unbounded() -> None: 30 | mu = np.array([4, 5, 0]) 31 | A = np.array([[-2, -1, 1]]) 32 | b = np.array([3]) 33 | lb = np.array([0, 0, 0]) 34 | ub = np.array([np.inf, np.inf, np.inf]) 35 | simp = Simplex(A, b, lb, ub, mu, tol=1e-8) 36 | with pytest.raises(Exception, match="Unbounded E"): 37 | simp.solve() 38 | 39 | 40 | def test_infeasible() -> None: 41 | mu = np.array([4, 5, 0]) 42 | A = np.array([[-2, -1, -1]]) 43 | b = np.array([3]) 44 | lb = np.array([0, 0, 0]) 45 | ub = np.array([np.inf, np.inf, np.inf]) 46 | simp = Simplex(A, b, lb, ub, mu, tol=1e-8) 47 | with pytest.raises(Exception, match="Infeasible"): 48 | simp.solve() 49 | --------------------------------------------------------------------------------