main 4226acbf237f cached
5 files
1.3 MB
648.8k tokens
1 requests
Download .txt
Showing preview only (1,328K chars total). Download the full file or copy to clipboard to get everything.
Repository: google-deepmind/alphaevolve_results
Branch: main
Commit: 4226acbf237f
Files: 5
Total size: 1.3 MB

Directory structure:
gitextract_avi_5b8y/

├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
└── mathematical_results.ipynb

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST


================================================
FILE: CONTRIBUTING.md
================================================
# How to Contribute

## Contributor License Agreement

Contributions to this project must be accompanied by a Contributor License
Agreement. You (or your employer) retain the copyright to your contribution,
this simply gives us permission to use and redistribute your contributions as
part of the project. Head over to <https://cla.developers.google.com/> to see
your current agreements on file or to sign a new one.

You generally only need to submit a CLA once, so if you've already submitted one
(even if it was for a different project), you probably don't need to do it
again.

## Code reviews

All submissions, including submissions by project members, require review. We
use GitHub pull requests for this purpose. Consult
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
information on using pull requests.

## Community Guidelines

This project follows [Google's Open Source Community
Guidelines](https://opensource.google/conduct/).


================================================
FILE: LICENSE
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
# Results of AlphaEvolve

This repository accompanies the technical report

> Novikov et al.
[AlphaEvolve: A coding agent for scientific and algorithmic discovery](https://storage.googleapis.com/deepmind-media/DeepMind.com/Blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/AlphaEvolve.pdf).
*Technical report*. 2025.

Specifically, the repository contains a Google Colab notebook with the
mathematical discoveries of AlphaEvolve outlined in Section 3 of the paper, as
well as the corresponding code for verifying their correctness. The notebook is
divided into sections, one for each of the considered mathematical problems.

Note that the notebook contains only the instances where the results from
AlphaEvolve outperforms the state-of-the-art. To avoid clutter, we exclude those
problems where the results matched but did not outperform the best known
constructions.

This repository does *not* contain the code to run AlphaEvolve.

## Installation

No installation required. The provided notebook can be opened and run in Google
Colab.

## Usage

The notebook `mathematical_results.ipynb` can be opened via
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/alphaevolve_results/blob/master/mathematical_results.ipynb).

## Citing this work

If you use the code or data in this package, please cite:

```
@article{alphaevolve,
      title={Alpha{E}volve: A coding agent for scientific and algorithmic discovery},
      author={Novikov, Alexander and V\~{u}, Ng\^{a}n and Eisenberger, Marvin and Dupont, Emilien and Huang, Po-Sen and Wagner, Adam Zsolt and Shirobokov, Sergey and Kozlovskii, Borislav and Ruiz, Francisco J. R. and Mehrabian, Abbas and Kumar, M. Pawan and See, Abigail and Chaudhuri, Swarat and Holland, George and Davies, Alex and Nowozin, Sebastian and Kohli, Pushmeet and Balog, Matej},
      year={2025},
      journal={arXiv preprint arXiv:2506.13131}
}
```

## License and disclaimer

Copyright 2025 Google LLC

All software is licensed under the Apache License, Version 2.0 (Apache 2.0);
you may not use this file except in compliance with the Apache 2.0 license.
You may obtain a copy of the Apache 2.0 license at:
https://www.apache.org/licenses/LICENSE-2.0

All other materials are licensed under the Creative Commons Attribution 4.0
International License (CC-BY). You may obtain a copy of the CC-BY license at:
https://creativecommons.org/licenses/by/4.0/legalcode

Unless required by applicable law or agreed to in writing, all software and
materials distributed here under the Apache 2.0 or CC-BY licenses are
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
either express or implied. See the licenses for the specific language governing
permissions and limitations under those licenses.

This is not an official Google product.


================================================
FILE: mathematical_results.ipynb
================================================
{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "bC4Vo85hPHfn"
      },
      "source": [
        "Copyright 2025 Google DeepMind Technologies Limited\n",
        "\n",
        "All software is licensed under the Apache License, Version 2.0 (Apache 2.0);\n",
        "you may not use this file except in compliance with the Apache 2.0 license.\n",
        "You may obtain a copy of the Apache 2.0 license at:\n",
        "https://www.apache.org/licenses/LICENSE-2.0\n",
        "\n",
        "All other materials are licensed under the Creative Commons Attribution 4.0\n",
        "International License (CC-BY). You may obtain a copy of the CC-BY license at:\n",
        "https://creativecommons.org/licenses/by/4.0/legalcode\n",
        "\n",
        "Unless required by applicable law or agreed to in writing, all software and\n",
        "materials distributed here under the Apache 2.0 or CC-BY licenses are\n",
        "distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n",
        "either express or implied. See the licenses for the specific language governing\n",
        "permissions and limitations under those licenses.\n",
        "\n",
        "This is not an official Google product."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5RChGCn7d8eP"
      },
      "source": [
        "# > **[Please read me first](https://github.com/google-deepmind/alphaevolve_results/blob/main/README.md)**"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "DUBRLLV4dJdV"
      },
      "source": [
        "# Tensor decompositions (algorithms for matrix multiplication)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "VbmY-XVldLBX"
      },
      "source": [
        "This section contains several low-rank tensor decompositions, discovered by AlphaEvolve, and the code to verify their correctness. A tensor with parameters $\\langle n,m,p\\rangle$ corresponds to multiplying an $n \\times m$ and an $m \\times p$ matrix, and the rank of the decomposition corresponds to the number of scalar multiplications needed to perform the matrix multiplication."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "JCmE5JpLeJ2B"
      },
      "outputs": [],
      "source": [
        "#@title Verification function\n",
        "import numpy as np\n",
        "\n",
        "def verify_tensor_decomposition(decomposition: tuple[np.ndarray, np.ndarray, np.ndarray], n: int, m: int, p: int, rank: int):\n",
        "  \"\"\"Verifies the correctness of the tensor decomposition.\n",
        "\n",
        "  Args:\n",
        "    decomposition: a tuple of 3 factor matrices with the same number of columns.\n",
        "      (The number of columns specifies the rank of the decomposition.) To\n",
        "      construct a tensor, we take the outer product of the i-th column of the\n",
        "      three factor matrices, for 1 <= i <= rank, and add up all these outer\n",
        "      products.\n",
        "    n: the first parameter of the matrix multiplication tensor.\n",
        "    m: the second parameter of the matrix multiplication tensor.\n",
        "    p: the third parameter of the matrix multiplication tensor.\n",
        "    rank: the expected rank of the decomposition.\n",
        "\n",
        "  Raises:\n",
        "    AssertionError: If the decomposition does not have the correct rank, or if\n",
        "    the decomposition does not construct the 3D tensor which corresponds to\n",
        "    multiplying an n x m matrix by an m x p matrix.\n",
        "  \"\"\"\n",
        "  # Check that each factor matrix has the correct shape.\n",
        "  factor_matrix_1, factor_matrix_2, factor_matrix_3 = decomposition\n",
        "  assert factor_matrix_1.shape == (n * m, rank), f'Expected shape of factor matrix 1 is {(n * m, rank)}. Actual shape is {factor_matrix_1.shape}.'\n",
        "  assert factor_matrix_2.shape == (m * p, rank), f'Expected shape of factor matrix 1 is {(m * p, rank)}. Actual shape is {factor_matrix_2.shape}.'\n",
        "  assert factor_matrix_3.shape == (p * n, rank), f'Expected shape of factor matrix 1 is {(p * n, rank)}. Actual shape is {factor_matrix_3.shape}.'\n",
        "\n",
        "  # Form the matrix multiplication tensor <n, m, p>.\n",
        "  matmul_tensor = np.zeros((n * m, m * p, p * n), dtype=np.int32)\n",
        "  for i in range(n):\n",
        "    for j in range(m):\n",
        "      for k in range(p):\n",
        "        matmul_tensor[i * m + j][j * p + k][k * n + i] = 1\n",
        "\n",
        "  # Check that the tensor is correctly constructed.\n",
        "  constructed_tensor = np.einsum('il,jl,kl -> ijk', *decomposition)\n",
        "  assert np.array_equal(constructed_tensor, matmul_tensor), f'Tensor constructed by decomposition does not match the matrix multiplication tensor <{(n,m,p)}>: {constructed_tensor}.'\n",
        "  print(f'Verified a decomposition of rank {rank} for matrix multiplication tensor <{n},{m},{p}>.')\n",
        "\n",
        "  # Print the set of values used in the decomposition.\n",
        "  np.set_printoptions(linewidth=100)\n",
        "  print('This decomposition uses these factor entries:\\n', np.array2string(np.unique(np.vstack((factor_matrix_1, factor_matrix_2, factor_matrix_3))), separator=', '))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4nYzMG9peJ2C"
      },
      "source": [
        "## Rank-32 decomposition of <2,4,5> over 0.5*Z"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "LICVJaCBeJ2C"
      },
      "outputs": [],
      "source": [
        "#@title Data\n",
        "\n",
        "decomposition_245 = (np.array([[-0. ,  0.5, -0. ,  0.5,  0. ,  0. ,  0.5,  0. , -0.5, -0.5, -0. ,\n",
        "        -0.5, -0. , -0. ,  0.5,  0. ,  0.5, -1. , -0.5, -0. , -0.5, -0. ,\n",
        "         0.5, -0. , -0.5,  0.5, -1. ,  0. ,  0.5,  0. ,  0.5, -0. ],\n",
        "       [ 0.5, -0.5,  0. ,  0.5, -0. ,  0.5, -0.5, -0. ,  0. , -0.5,  0. ,\n",
        "         0. , -0.5,  0.5,  0. ,  0.5,  0. , -0. , -0. , -0.5, -0. ,  0. ,\n",
        "         0. ,  0.5, -0.5,  0. , -0. ,  0. ,  0. ,  0. , -0. ,  0.5],\n",
        "       [ 0. , -0. , -0.5, -0. ,  0.5, -0.5, -0. ,  0. , -0. ,  0. ,  0. ,\n",
        "         0.5, -0.5, -0. ,  0.5,  0. ,  0.5, -0.5,  0.5,  0. ,  0. , -0.5,\n",
        "        -0.5,  0. , -0. ,  0.5,  0.5, -0. ,  0. , -0. ,  0. ,  0. ],\n",
        "       [-0.5,  0. ,  0.5, -1. ,  0.5,  0. ,  0. , -0. , -0.5,  0. , -0. ,\n",
        "         0. , -0. , -0.5, -0. ,  0.5, -0. , -0.5, -0. , -0.5, -0.5,  0.5,\n",
        "        -0. ,  0.5, -1. ,  0. ,  0.5, -0. , -0.5, -0. , -0.5, -0.5],\n",
        "       [ 0. ,  0.5,  0. ,  0.5,  0. ,  0. , -0.5, -0. , -0.5, -0. , -0. ,\n",
        "         0.5, -0. , -0. ,  0. , -0. , -0. ,  0. ,  0. , -0. , -0. , -0. ,\n",
        "        -0. , -0. , -0.5, -0.5,  0. ,  0.5,  0.5, -0. ,  0. , -0. ],\n",
        "       [-0.5, -0.5, -0. , -0.5, -0. , -0.5,  0.5, -0.5, -0. ,  0. ,  0.5,\n",
        "         0. ,  0.5, -0.5, -0. , -0. ,  0.5, -0. , -0.5,  0.5, -0. , -0. ,\n",
        "        -0. , -0.5,  0.5, -0. ,  0. ,  0.5,  0. ,  0. ,  0. , -0. ],\n",
        "       [-0. ,  0. ,  0.5,  0. , -0. ,  0.5, -0. ,  0.5,  0. ,  0. ,  0.5,\n",
        "        -0.5,  0.5, -0.5, -0. ,  0. , -0.5,  0.5, -0.5,  0. ,  0. , -0.5,\n",
        "        -0. ,  0.5, -0. , -0.5, -0.5, -0. ,  0. , -0.5, -0. , -0. ],\n",
        "       [ 0.5, -0. , -0.5, -0. , -0. , -0. ,  0. ,  0. , -0.5,  0. ,  0. ,\n",
        "        -0. , -0. ,  0. , -0. , -0. , -0. , -0.5, -0. ,  0.5, -0. ,  0.5,\n",
        "        -0. ,  0. , -0. , -0. ,  0.5,  0. , -0.5, -0.5,  0. , -0. ]],\n",
        "      dtype=np.float32), np.array([[ 0.5, -0. , -0. ,  0. , -0. , -0.5,  0. ,  0. ,  1. , -0. , -0. ,\n",
        "        -0. ,  0.5, -0.5,  0.5,  0. , -0. , -0.5, -0. ,  0.5, -0.5,  0. ,\n",
        "        -0.5, -0.5,  0. , -0. ,  0.5,  0. , -1. ,  0. ,  0.5,  0. ],\n",
        "       [ 0.5,  0. ,  0. ,  1. ,  0. ,  0.5,  2. ,  0. , -0. , -0. ,  0. ,\n",
        "         0. , -0.5,  0.5, -0.5,  0. ,  0. ,  0.5, -0. ,  0.5,  0.5,  0. ,\n",
        "         0.5,  0.5, -1. ,  0. , -0.5, -0. ,  0. , -0. , -0.5,  0. ],\n",
        "       [ 0.5,  0. , -0. , -0. ,  0. , -0.5, -0. , -1. , -0. ,  0. ,  1. ,\n",
        "         1. ,  0.5, -0.5, -0.5,  0. , -1. ,  0.5,  1. ,  0.5, -0.5, -0. ,\n",
        "         0.5, -0.5, -0. ,  1. , -0.5, -2. , -0. , -0. ,  0.5, -0. ],\n",
        "       [-0.5, -0. , -0. ,  0. ,  0. ,  0.5,  0. ,  0. , -0. ,  0. , -0. ,\n",
        "        -1. , -0.5,  0.5, -0.5,  0. , -0. , -0.5,  0. , -0.5,  0.5,  0. ,\n",
        "         0.5,  0.5, -0. , -1. ,  0.5, -0. ,  0. , -0. , -0.5,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  1. , -0. , -1. ,  0. , -0. , -0. , -0. , -0. ,\n",
        "        -1. , -1. , -0. , -0. , -1. , -1. , -0. , -1. , -0. , -1. , -0. ,\n",
        "        -0. , -0. ,  1. ,  1. , -0. , -0. , -0. , -0. , -1. , -1. ],\n",
        "       [ 0.5, -2. , -0. ,  1. ,  0. , -0.5,  0. ,  0. ,  1. ,  0. , -0. ,\n",
        "         0. ,  0.5, -0.5,  0.5,  1. , -0. , -0.5, -0. ,  0.5,  0.5, -0. ,\n",
        "        -0.5, -0.5, -1. , -0. ,  0.5, -0. , -1. , -0. , -0.5, -1. ],\n",
        "       [ 0.5, -0. ,  0. ,  0. ,  0. ,  0.5,  0. , -0. , -0. , -0. ,  0. ,\n",
        "        -0. , -0.5,  0.5, -0.5, -1. ,  0. ,  0.5, -0. ,  0.5, -0.5,  0. ,\n",
        "         0.5,  0.5, -0. ,  0. , -0.5, -0. , -0. ,  0. ,  0.5,  1. ],\n",
        "       [-0.5, -0. , -0. , -0. , -0. , -0.5,  0. ,  1. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0.5,  0.5,  0.5, -0. ,  0. , -0.5, -0. , -0.5,  0.5, -0. ,\n",
        "        -0.5,  0.5, -0. ,  0. ,  0.5, -0. , -0. , -0. , -0.5,  0. ],\n",
        "       [ 0.5,  0. , -0. , -0. , -0. ,  0.5,  0. ,  0. ,  0. ,  2. ,  0. ,\n",
        "         0. , -0.5, -0.5,  0.5, -0. ,  1. ,  0.5, -1. ,  0.5, -0.5, -0. ,\n",
        "        -0.5, -0.5, -0. ,  0. , -0.5, -0. , -0. ,  0. ,  0.5, -0. ],\n",
        "       [ 0. , -0. , -0. , -1. ,  0. , -1. ,  0. ,  0. , -0. ,  0. , -0. ,\n",
        "        -1. , -1. ,  0. , -0. ,  1. , -1. , -0. , -1. , -0. ,  1. , -0. ,\n",
        "        -0. , -0. , -1. ,  1. , -0. , -0. , -0. , -0. ,  1. ,  1. ],\n",
        "       [ 0. ,  0. , -0. , -0.5,  0. ,  0.5,  0. , -0. ,  1. ,  0. ,  0. ,\n",
        "         0.5,  0.5,  0. ,  1. ,  0.5,  0.5, -1. ,  0.5, -0. ,  0.5,  2. ,\n",
        "         1. , -0. , -0.5, -0.5, -1. ,  0. ,  1. , -0. ,  0.5,  0.5],\n",
        "       [ 0. ,  0. , -0. ,  0.5,  2. , -0.5,  0. ,  0. , -0. ,  0. , -0. ,\n",
        "         0.5, -0.5,  1. ,  0. ,  0.5,  0.5, -0. ,  0.5,  0. , -0.5, -0. ,\n",
        "         0. , -1. ,  0.5, -0.5, -0. , -0. , -0. ,  0. , -0.5,  0.5],\n",
        "       [-0. , -0. ,  0. , -0.5,  0. ,  0.5,  0. , -1. , -0. , -0. , -1. ,\n",
        "        -0.5,  0.5, -0. ,  0. ,  0.5, -0.5,  0. , -0.5, -0. ,  0.5,  0. ,\n",
        "        -0. ,  0. , -0.5,  0.5, -0. , -0. , -0. ,  0. ,  0.5,  0.5],\n",
        "       [-0. ,  0. ,  0. ,  0.5, -0. , -0.5, -0. , -0. ,  0. ,  0. , -0. ,\n",
        "         0.5, -0.5,  0. , -1. , -0.5, -0.5,  0. , -0.5, -0. , -0.5,  0. ,\n",
        "        -1. , -0. ,  0.5, -0.5,  0. ,  0. ,  0. , -0. , -0.5, -0.5],\n",
        "       [-1. ,  0. , -0. , -0. , -0. ,  1. , -0. , -0. ,  0. , -0. ,  0. ,\n",
        "         0. , -1. ,  1. ,  1. ,  0. , -0. , -1. , -0. , -1. ,  1. ,  0. ,\n",
        "        -1. ,  1. ,  0. , -0. ,  1. , -0. , -0. ,  0. , -1. , -0. ],\n",
        "       [-0. , -0. ,  0. , -0.5, -0. ,  0.5, -0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0.5,  0.5,  0. , -0. ,  0.5,  0.5, -0. ,  0.5,  0. , -0.5, -0. ,\n",
        "        -0. , -0. , -0.5, -0.5, -0. ,  0. ,  1. ,  0. , -0.5,  0.5],\n",
        "       [-1. , -0. , -0. , -0.5,  0. , -0.5, -0. ,  0. ,  0. ,  0. , -0. ,\n",
        "        -0.5, -0.5,  0. ,  0. , -0.5, -0.5, -0. , -0.5,  1. ,  0.5,  0. ,\n",
        "         0. , -0. , -0.5,  0.5,  0. , -0. ,  0. ,  0. ,  0.5, -0.5],\n",
        "       [ 1. , -0. , -0. ,  0.5,  0. ,  0.5,  0. ,  1. , -0. , -0. ,  1. ,\n",
        "         0.5,  0.5, -1. ,  0. , -0.5,  0.5,  0. ,  0.5, -1. , -0.5,  0. ,\n",
        "        -0. ,  1. ,  0.5, -0.5, -0. ,  0. ,  0. ,  2. , -0.5, -0.5],\n",
        "       [ 0. ,  0. ,  2. ,  0.5,  0. , -0.5, -0. ,  0. , -0. , -0. , -0. ,\n",
        "         0.5, -0.5,  0. ,  0. , -0.5, -0.5, -1. , -0.5, -0. ,  0.5, -0. ,\n",
        "        -0. ,  0. ,  0.5, -0.5, -1. , -0. , -0. ,  0. ,  0.5, -0.5],\n",
        "       [-1. , -0. , -0. ,  0. ,  0. ,  1. , -0. ,  0. , -0. ,  0. ,  0. ,\n",
        "        -0. , -1. ,  1. , -1. , -0. ,  0. ,  1. ,  0. , -1. , -1. ,  0. ,\n",
        "         1. ,  1. , -0. ,  0. , -1. , -0. ,  0. , -0. ,  1. , -0. ]],\n",
        "      dtype=np.float32), np.array([[ 0. ,  0.5,  0.5,  0.5, -0. , -0. ,  0.5,  0. , -0. , -0. , -0. ,\n",
        "        -0. , -0. ,  0. ,  0. ,  0. , -0. ,  0.5,  0. , -0. ,  1. , -0.5,\n",
        "        -0. , -0. ,  0.5,  0. , -0.5, -0. , -0. ,  0. ,  1. ,  0. ],\n",
        "       [-0. ,  0.5, -0.5, -0.5, -0. , -0. , -0.5,  0. , -1. , -0. , -0. ,\n",
        "        -0. ,  0. ,  0. ,  0. ,  0. , -0. , -0.5,  0. , -0. , -1. , -0.5,\n",
        "         0. , -0. , -0.5, -0. ,  0.5,  0. , -1. ,  0. , -1. ,  0. ],\n",
        "       [ 0. ,  0.5, -0. ,  0.5,  1. , -0. ,  0.5, -0. ,  0. ,  0. , -0. ,\n",
        "         0. ,  0. , -0. ,  0. , -1. , -0. ,  0. ,  0. , -0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0.5,  0. ,  0. , -0. ,  0. ,  0. , -0. ,  1. ],\n",
        "       [-1. ,  0.5,  0. ,  0.5, -0. ,  0. , -0.5,  0. ,  0. , -0. ,  0. ,\n",
        "        -0. , -0. , -1. ,  0. , -1. , -0. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0.5, -0. ,  0. , -0. , -0. , -1. ,  0. ,  1. ],\n",
        "       [-0. , -0. ,  0. , -0. ,  1. , -1. ,  0. , -1. , -0. , -1. , -1. ,\n",
        "        -0. , -1. ,  1. ,  0. ,  0. , -1. , -0. , -1. , -0. ,  0. ,  0. ,\n",
        "         0. ,  1. , -0. , -0. ,  0. , -0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. , -0. , -0. ,  0. ,  0. , -1. , -0. ,  0. , -1. ,\n",
        "         0. ,  0. , -0. , -0. ,  0. ,  0. ,  0. ,  0. , -0. , -0. ,  0. ,\n",
        "         0. , -0. ,  0. , -0. ,  0. , -1. ,  0. , -1. ,  0. ,  0. ],\n",
        "       [-0. , -0. ,  0.5, -0. ,  0. ,  0. ,  0. ,  0. , -0. , -1. , -0. ,\n",
        "         0. , -0. ,  0. , -1. ,  0. , -0. ,  0.5, -0. , -0. , -0. , -0.5,\n",
        "         1. , -0. , -0. ,  0. , -0.5,  0. , -0. , -0. ,  0. ,  0. ],\n",
        "       [ 0. , -0. , -0.5,  0. ,  0. ,  0. , -0. , -0. , -0. ,  0. ,  0. ,\n",
        "        -1. ,  0. , -0. , -1. ,  0. ,  1. ,  0.5,  1. ,  0. , -0. , -0.5,\n",
        "         1. ,  0. ,  0. ,  1. , -0.5, -1. , -0. ,  0. ,  0. , -0. ],\n",
        "       [ 0. ,  0. , -0. , -0. , -0. , -0.5, -0. , -0.5, -0. ,  0. ,  0.5,\n",
        "        -0. ,  0.5, -0.5,  0.5,  0.5, -0.5,  0. ,  0.5, -0. ,  0.5,  0. ,\n",
        "         0.5,  0.5, -0. ,  0. ,  0. , -0. ,  0. , -0. , -0.5,  0.5],\n",
        "       [-0.5, -0. ,  0. ,  0.5,  0. ,  0. ,  0. , -0.5, -0.5, -0. ,  0.5,\n",
        "        -0.5, -0. , -0.5,  0.5,  0.5, -0.5, -0.5,  0.5, -0.5, -0.5, -0. ,\n",
        "         0.5,  0.5, -0.5, -0.5, -0.5,  0. ,  0.5,  0. ,  0.5,  0.5]],\n",
        "      dtype=np.float32))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "WoxFZ8V9eJ2C"
      },
      "outputs": [],
      "source": [
        "#@title Verification\n",
        "n = 2\n",
        "m = 4\n",
        "p = 5\n",
        "rank = 32\n",
        "\n",
        "verify_tensor_decomposition(decomposition_245, n, m, p, rank)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Nx23dA23eJ2D"
      },
      "source": [
        "## Rank-45 decomposition of <2,4,7> over Z"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "Y2CpfjKHeJ2D"
      },
      "outputs": [],
      "source": [
        "#@title Data\n",
        "\n",
        "decomposition_247 = (np.array([[ 0., -1., -1.,  0.,  1.,  1.,  1., -1., -1.,  0., -0., -0.,  0.,\n",
        "         0., -0.,  1., -0., -1.,  0.,  0., -0., -0., -0., -1., -0.,  0.,\n",
        "        -0.,  0.,  0.,  0.,  0.,  1., -1., -0., -0., -0., -0.,  1., -0.,\n",
        "        -0.,  0., -1., -1., -0.,  0.],\n",
        "       [ 0.,  0.,  0.,  0., -0., -0.,  0., -0., -0.,  1., -0.,  0., -1.,\n",
        "        -0., -0., -0., -0., -0.,  1., -0.,  1., -0.,  1.,  1., -1., -1.,\n",
        "         0., -1., -0.,  0., -0., -1., -0., -0.,  1., -1., -0., -0.,  0.,\n",
        "         0., -0.,  1.,  0., -0.,  1.],\n",
        "       [ 0.,  0., -0.,  0.,  1.,  1., -0., -1.,  0., -1.,  0., -0., -0.,\n",
        "         1., -0.,  1.,  1.,  0., -0.,  0.,  0., -1., -0., -1.,  0.,  0.,\n",
        "        -0.,  0., -0.,  0., -1.,  0., -1., -0.,  0.,  0.,  1.,  1., -0.,\n",
        "        -0.,  0., -1., -1., -1., -0.],\n",
        "       [-0.,  1., -0.,  0., -1., -0., -1.,  0.,  1.,  0.,  0.,  0.,  0.,\n",
        "        -0., -1., -1.,  0.,  1., -0.,  1.,  0.,  0.,  1.,  1.,  0.,  1.,\n",
        "        -0., -0., -0.,  0.,  1., -0., -0.,  0., -0., -0., -0., -1.,  0.,\n",
        "         0.,  0., -0.,  0.,  0., -0.],\n",
        "       [-1., -1., -1., -0.,  1.,  1.,  0., -1., -0., -0., -0., -0.,  0.,\n",
        "        -0., -0.,  1.,  1., -1., -0.,  0.,  0., -0., -0., -0., -0., -0.,\n",
        "         0.,  0.,  1., -1., -0., -0.,  0., -0.,  1., -0., -0., -0.,  0.,\n",
        "         1.,  0., -1., -0., -0.,  0.],\n",
        "       [ 1.,  0., -0.,  0., -1., -0., -0.,  0., -1.,  1.,  0.,  1.,  0.,\n",
        "        -0., -0., -0., -1., -0., -0., -0.,  1., -0.,  1., -0.,  0., -0.,\n",
        "        -1., -1., -1., -0.,  0., -0.,  0., -0.,  0., -1., -0., -0., -0.,\n",
        "        -1., -1.,  1., -1.,  0.,  1.],\n",
        "       [-1.,  0.,  0., -1.,  1., -0.,  0., -1.,  1., -1., -0., -0., -0.,\n",
        "         0.,  0.,  1.,  1.,  0., -0., -0., -1., -1., -0.,  0.,  0., -0.,\n",
        "         0., -0.,  1., -0.,  0.,  0.,  0.,  1., -0.,  0., -0., -0., -0.,\n",
        "         0.,  1., -1.,  0., -0., -0.],\n",
        "       [ 0., -0., -0.,  0.,  0., -0., -0., -0.,  0., -0.,  1., -1.,  0.,\n",
        "         1., -0., -1., -0.,  1.,  1.,  1., -0., -0.,  1.,  0.,  0.,  0.,\n",
        "        -1., -0., -1.,  0.,  0.,  0., -0., -1., -0., -1., -0.,  0., -1.,\n",
        "         0.,  0.,  0., -1., -0., -0.]], dtype=np.float32), np.array([[-0.,  0.,  0.,  1.,  1.,  1., -0., -1.,  0., -0., -0., -1., -0.,\n",
        "        -1.,  0.,  0.,  1.,  0.,  1., -0., -0.,  1.,  0., -0.,  0., -1.,\n",
        "         0., -0.,  0., -0.,  0., -1., -0., -1.,  1., -0.,  0.,  1., -0.,\n",
        "         1., -0., -0., -0., -1.,  0.],\n",
        "       [-0.,  1.,  1.,  1., -0.,  1., -0., -0., -1., -0.,  0.,  0.,  0.,\n",
        "         0., -1.,  0.,  0., -0.,  0.,  0., -1., -0.,  0.,  1.,  1., -0.,\n",
        "         0., -1., -1., -0., -0., -0.,  0.,  0.,  1.,  1., -1.,  0., -1.,\n",
        "         1.,  0., -0., -1.,  0., -1.],\n",
        "       [ 0.,  0.,  1., -0.,  0.,  0.,  0.,  0.,  0., -0., -0., -0.,  1.,\n",
        "        -0., -0., -0., -0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0.,  0.,\n",
        "        -0.,  0., -0., -0.,  0.,  1.,  0., -0., -1., -0., -0.,  0., -0.,\n",
        "        -0.,  0., -0., -0.,  0., -0.],\n",
        "       [-0.,  1.,  1., -0., -1., -0.,  0.,  0., -0.,  0.,  0.,  1., -0.,\n",
        "         1.,  0., -1., -1., -1., -1., -0.,  0., -1.,  0., -0.,  0.,  1.,\n",
        "         0.,  0., -0., -1., -1.,  1.,  0.,  0., -1.,  0., -0.,  0., -1.,\n",
        "        -1., -0., -0.,  0.,  1., -0.],\n",
        "       [-0., -1., -0., -0.,  0.,  0.,  1.,  0.,  0.,  0., -0.,  0., -0.,\n",
        "         0.,  1., -0., -0.,  0., -0.,  0., -0.,  0., -0., -0., -0.,  0.,\n",
        "         0.,  0.,  0.,  1., -0.,  0.,  0., -0., -0., -0.,  0., -0., -0.,\n",
        "        -0.,  0., -0., -0., -0.,  0.],\n",
        "       [ 0., -0.,  0., -0.,  0.,  1.,  0.,  0.,  0., -0., -0., -0., -0.,\n",
        "         0.,  0.,  0.,  0., -0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0.,\n",
        "        -0., -0., -0., -1., -0., -0.,  1., -0., -0., -0., -1., -0., -0.,\n",
        "         0.,  0., -0.,  0., -0.,  0.],\n",
        "       [ 0., -0., -1., -0., -0.,  0.,  0., -0., -0., -0.,  0.,  0.,  0.,\n",
        "         0.,  0.,  0., -0.,  0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0.,\n",
        "         0., -0., -0., -1., -0., -0., -0., -0., -0., -0.,  0.,  0., -0.,\n",
        "        -0.,  0., -0.,  0., -0., -0.],\n",
        "       [ 0., -0., -0.,  0.,  0.,  0., -0., -0.,  0.,  0., -1., -1.,  0.,\n",
        "         0.,  0.,  0.,  0.,  0.,  1.,  0., -0., -0.,  0., -0., -0., -0.,\n",
        "         0.,  1., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  0.],\n",
        "       [ 0.,  0., -0., -0., -0.,  0.,  0., -0.,  0.,  0., -0.,  0., -0.,\n",
        "         0.,  0.,  0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0.,  1., -0.,\n",
        "        -0., -0., -0.,  0.,  0., -0.,  0., -0., -0., -0.,  0.,  0., -0.,\n",
        "        -0.,  0.,  0., -0.,  0.,  1.],\n",
        "       [-0.,  0.,  0.,  0., -0.,  0.,  0.,  0., -0., -0., -0., -0.,  1.,\n",
        "         0., -0., -0., -0., -0.,  0., -0.,  0., -0.,  0., -0., -0., -0.,\n",
        "         0., -1., -0., -0., -0., -0.,  0.,  0.,  0., -0.,  0.,  0.,  0.,\n",
        "        -0., -0.,  0.,  0., -0., -0.],\n",
        "       [-0.,  1.,  1.,  0., -1., -0., -0.,  0.,  0.,  0., -0.,  1., -0.,\n",
        "         1., -0., -1.,  0., -1., -1.,  0., -0., -0.,  0.,  0., -0.,  1.,\n",
        "         0., -0.,  0., -1., -1., -0.,  0., -0., -1., -0.,  0., -0., -1.,\n",
        "        -1., -0., -1.,  0.,  1., -0.],\n",
        "       [ 0., -0.,  0., -0., -0., -0., -0., -0., -0., -0., -0.,  0.,  0.,\n",
        "         0., -0., -0., -0., -0.,  0., -0., -0.,  0.,  0., -0., -1., -0.,\n",
        "        -1., -0.,  0., -0.,  0.,  0., -0., -0.,  0., -1.,  0., -0.,  1.,\n",
        "         0., -0., -0., -0., -0., -0.],\n",
        "       [ 0.,  0.,  0.,  1., -0.,  0., -0., -0.,  0.,  0., -0.,  0.,  0.,\n",
        "         0., -0., -0., -0., -0.,  0., -0., -1., -0.,  0., -0.,  1.,  0.,\n",
        "         0.,  0., -0., -0., -0.,  0., -0.,  0.,  0., -0., -0., -0., -0.,\n",
        "         0.,  1., -0., -0.,  0., -0.],\n",
        "       [-0.,  0., -0., -0., -0.,  0.,  0., -0.,  0.,  0.,  0., -0.,  0.,\n",
        "        -0.,  0.,  0., -0., -0., -0.,  0., -0.,  0.,  0.,  0., -0., -0.,\n",
        "        -0.,  1., -0., -1., -0.,  0.,  0.,  0., -1., -0., -0.,  0., -0.,\n",
        "        -1.,  0.,  0.,  0.,  0., -0.],\n",
        "       [ 0.,  0.,  0., -0., -0., -0., -0., -0.,  0.,  0., -1., -0., -0.,\n",
        "         1.,  0., -0., -0.,  0.,  0., -0., -0., -1.,  0., -0., -0., -0.,\n",
        "         0.,  0.,  0., -0.,  0., -0., -0.,  1., -0., -0., -0., -0., -0.,\n",
        "        -0., -0., -0., -0., -0.,  0.],\n",
        "       [-0., -0.,  0., -0.,  0.,  0., -0., -0., -0.,  1., -0., -0., -0.,\n",
        "        -0., -0., -0.,  0., -0., -0.,  0.,  1.,  0., -0., -0., -0.,  0.,\n",
        "        -0., -0., -0., -0.,  0., -0.,  0.,  0., -0.,  0.,  1., -0.,  0.,\n",
        "        -0.,  0.,  0., -0.,  0.,  1.],\n",
        "       [-1., -0., -1., -1., -0., -1., -0.,  1., -0.,  0.,  0., -0.,  0.,\n",
        "         0.,  0.,  0., -1.,  0., -0.,  0., -0., -0., -0., -0., -0.,  0.,\n",
        "        -0.,  0., -0., -0.,  0., -0.,  0., -0., -0.,  0., -0.,  0., -0.,\n",
        "        -1., -0.,  0.,  0.,  1., -0.],\n",
        "       [ 0.,  0., -0.,  0.,  0.,  0., -0.,  0.,  0.,  0.,  0., -0.,  0.,\n",
        "        -0., -0., -0.,  0.,  0.,  0.,  0.,  0.,  1., -0., -0., -0., -0.,\n",
        "         0.,  0.,  0.,  0.,  0.,  0., -0., -0., -0.,  0., -0.,  0., -0.,\n",
        "        -0., -0.,  0., -0.,  1.,  0.],\n",
        "       [ 0., -0., -1., -1.,  0., -1., -1.,  1.,  1., -1.,  0., -0., -0.,\n",
        "         0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,  0.,  0., -1., -1., -0.,\n",
        "        -1.,  1., -0., -1., -0.,  0.,  0., -0., -1., -1.,  0.,  0.,  1.,\n",
        "        -1.,  0.,  0., -0., -0.,  0.],\n",
        "       [-0.,  0., -0.,  1.,  0.,  0., -0., -0., -0.,  0., -0.,  0., -0.,\n",
        "         0.,  0., -0., -0., -0., -0.,  0., -0., -0., -0., -0.,  0., -0.,\n",
        "        -0., -0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  1.,  0.,  0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.],\n",
        "       [ 0.,  0.,  1.,  1.,  0.,  1., -0., -1., -0.,  0.,  0., -0.,  0.,\n",
        "        -0.,  0., -0., -0., -0., -0., -0., -0.,  0.,  0., -0., -0.,  0.,\n",
        "        -0.,  0., -0.,  0.,  0., -0.,  0., -0., -0.,  0., -0., -0.,  0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.],\n",
        "       [ 0.,  0., -0., -0., -0.,  0.,  0., -0., -0.,  0., -1., -0., -0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  0., -1., -0.,  0., -0., -0., -0.,  0.,\n",
        "        -0., -0.,  0., -0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.],\n",
        "       [-0.,  0.,  0.,  0.,  0., -0.,  0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "        -0., -1.,  0., -0., -0., -0., -0., -0.,  0., -1., -0.,  0.,  0.,\n",
        "         0., -0., -0., -0.,  0., -0.,  0.,  0.,  0.,  1., -0., -0.,  0.,\n",
        "         0., -0., -0.,  0., -0., -1.],\n",
        "       [ 0., -0.,  0.,  0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,\n",
        "         0.,  0.,  0., -0.,  0.,  1.,  1., -0., -0., -0., -0., -0., -1.,\n",
        "         0.,  0.,  0., -0., -0.,  0., -0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "        -0., -0.,  0., -0.,  0.,  0.],\n",
        "       [ 0.,  0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0., -0.,  0.,\n",
        "         1.,  0.,  0., -0.,  0., -0.,  1.,  0., -0., -0.,  0., -0.,  0.,\n",
        "         0., -0.,  0.,  0., -1.,  0., -0.,  0., -0., -0., -0.,  0., -0.,\n",
        "        -0.,  0., -0.,  0.,  1.,  0.],\n",
        "       [-0., -0., -0., -0.,  0.,  0.,  0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "         0.,  1.,  0., -0., -0.,  0.,  0., -0.,  0.,  0.,  0., -0., -0.,\n",
        "        -0., -0.,  0., -0., -0.,  0.,  0., -0.,  0.,  0.,  0., -0., -1.,\n",
        "        -0.,  0.,  0.,  0.,  0., -0.],\n",
        "       [-0., -1., -1., -1.,  0.,  0.,  0.,  0.,  0.,  0., -0., -0., -0.,\n",
        "        -0., -0., -0.,  0.,  1.,  0.,  0.,  1., -0., -1., -1., -1.,  0.,\n",
        "         0.,  1.,  0., -1.,  0., -0.,  1., -0., -1., -0.,  0., -0.,  1.,\n",
        "        -1., -1.,  0.,  1., -0., -0.],\n",
        "       [ 0., -1., -1., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,  0., -0.,\n",
        "         0.,  0., -0.,  0.,  1., -0.,  0.,  0.,  0., -0.,  0.,  0., -0.,\n",
        "         0.,  0.,  0.,  0., -0.,  0.,  0., -0., -0., -0., -0., -0.,  1.,\n",
        "        -0.,  0., -0.,  0., -0., -0.]], dtype=np.float32), np.array([[ 0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0., -0.,  1., -0.,  0.,\n",
        "         1., -0., -0.,  0.,  0.,  1., -1.,  0.,  0., -0., -0., -0., -1.,\n",
        "        -0.,  0.,  0., -0., -1., -0.,  0., -0., -0.,  0., -0.,  1.,  0.,\n",
        "        -0., -0., -0.,  0.,  0.,  0.],\n",
        "       [-0.,  0., -0., -0.,  1.,  0., -0.,  0., -0.,  0., -1., -1.,  0.,\n",
        "         0.,  0., -1.,  0., -0., -0., -0., -0.,  0.,  0.,  0., -0.,  0.,\n",
        "        -0.,  0.,  0.,  0., -0.,  0., -0.,  1.,  0., -0.,  0., -1.,  0.,\n",
        "        -0., -0.,  0., -0.,  0., -0.],\n",
        "       [ 0., -0., -0., -0., -0., -0.,  0.,  0.,  1., -1.,  0., -0., -0.,\n",
        "        -0., -0., -0.,  0.,  0., -0., -0.,  1.,  0., -1.,  1., -1.,  0.,\n",
        "        -1.,  0., -0.,  0.,  0.,  0.,  0., -0., -0.,  1.,  0., -0.,  0.,\n",
        "         0., -1.,  0.,  1., -0.,  0.],\n",
        "       [ 0., -0.,  0., -0., -0., -0., -0.,  0., -0.,  0.,  0., -0.,  0.,\n",
        "         0., -0.,  0., -0., -0.,  0.,  0., -1.,  0.,  0.,  0.,  1.,  0.,\n",
        "         1.,  0., -1.,  0.,  0.,  0.,  0.,  0.,  0., -1., -0., -0., -0.,\n",
        "        -0.,  1.,  0., -0., -0.,  1.],\n",
        "       [-1.,  0., -0.,  0.,  1.,  0.,  0.,  0.,  0.,  0., -0., -0., -1.,\n",
        "         0., -0.,  0., -1., -0., -0.,  0., -0.,  0.,  0.,  0.,  0., -1.,\n",
        "        -0., -0.,  0.,  0.,  0.,  1., -0.,  0.,  0.,  0., -0.,  0.,  0.,\n",
        "         0., -0.,  1.,  0.,  0.,  0.],\n",
        "       [ 1.,  0.,  0.,  0.,  0., -0.,  0., -0.,  0.,  0.,  0., -1.,  1.,\n",
        "        -0., -0., -0.,  0., -0.,  1.,  0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "         0.,  1., -0.,  0., -0., -0.,  0.,  0., -1., -0.,  0., -0.,  0.,\n",
        "         1., -0., -0.,  0., -0., -0.],\n",
        "       [ 1., -0., -0., -0., -1.,  0., -0., -0.,  0., -0.,  0.,  0., -0.,\n",
        "         0.,  0., -0.,  1.,  0.,  0., -0., -0., -0., -0., -0., -0., -0.,\n",
        "        -0.,  0.,  0., -0., -1., -0., -0., -0.,  0., -0.,  0.,  1.,  0.,\n",
        "        -0.,  0., -1.,  0., -1., -0.],\n",
        "       [-1.,  0., -0., -0.,  1.,  0.,  0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "         1., -0., -1., -1., -0., -0., -0.,  0., -1.,  0.,  0.,  0.,  0.,\n",
        "        -0.,  0., -0.,  0.,  0., -0., -0.,  1., -0.,  0., -0., -1.,  0.,\n",
        "        -0., -0.,  0.,  0.,  1., -0.],\n",
        "       [-0.,  0.,  0., -0.,  0.,  0.,  1.,  0., -0.,  0., -0., -0.,  0.,\n",
        "         0., -1.,  0., -0., -0.,  0.,  0.,  0.,  0., -1.,  1.,  0.,  0.,\n",
        "        -1.,  0., -0., -0.,  0.,  0.,  0., -0.,  0.,  1., -0., -0.,  0.,\n",
        "        -0., -0.,  0.,  1.,  0., -0.],\n",
        "       [ 0.,  1., -0.,  0., -0.,  0., -1., -0.,  1., -0.,  0.,  0., -0.,\n",
        "        -0., -0., -0.,  0.,  1.,  0., -0.,  0., -0., -0., -0.,  0., -0.,\n",
        "         1.,  0., -1.,  0.,  0.,  0., -0., -0., -0.,  0., -0., -0.,  1.,\n",
        "        -0.,  0., -0.,  0.,  0., -0.],\n",
        "       [ 0., -0., -0.,  0.,  0.,  0.,  0.,  0., -1.,  1.,  0.,  0.,  0.,\n",
        "         0.,  0.,  0.,  0.,  0., -0., -0., -1.,  0., -0., -1., -0., -0.,\n",
        "         0.,  0., -0., -0., -0.,  0., -1.,  0.,  0., -0.,  1.,  0.,  0.,\n",
        "         0.,  1., -0.,  0.,  0.,  0.],\n",
        "       [ 0.,  0.,  0., -1.,  0.,  1., -0., -1.,  0., -0.,  0.,  0.,  0.,\n",
        "         0., -0.,  0., -0., -0., -0., -0., -0., -0.,  0.,  0., -0., -0.,\n",
        "        -0.,  0.,  1., -0.,  0.,  0.,  1., -0.,  0., -0.,  0.,  0., -0.,\n",
        "         0., -1., -0., -1., -0.,  0.],\n",
        "       [-1., -1.,  1.,  0.,  1.,  1.,  1.,  0.,  0., -0.,  0., -0., -0.,\n",
        "         0.,  0.,  0., -1., -0., -0.,  0.,  0.,  0., -0.,  1., -0., -0.,\n",
        "        -0., -0.,  0., -1.,  0.,  1.,  1.,  0., -1., -0.,  0., -1., -0.,\n",
        "         0.,  0.,  1., -0.,  0.,  0.],\n",
        "       [ 1.,  1., -0., -0., -1., -1., -1.,  1.,  1., -0., -0.,  0.,  0.,\n",
        "        -0., -0.,  1.,  0.,  1., -0.,  0., -0., -0., -0., -0.,  0., -0.,\n",
        "         0., -0., -1.,  1.,  0.,  0., -1., -0., -0., -0.,  0.,  1., -0.,\n",
        "         1., -0., -0.,  1., -0., -0.]], dtype=np.float32))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "rDCvOrOIeJ2D"
      },
      "outputs": [],
      "source": [
        "#@title Verification\n",
        "n = 2\n",
        "m = 4\n",
        "p = 7\n",
        "rank = 45\n",
        "\n",
        "verify_tensor_decomposition(decomposition_247, n, m, p, rank)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "nxg6Bt_9eJ2D"
      },
      "source": [
        "## Rank-51 decomposition of <2,4,8> over Z\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "AU5YeR83eJ2E"
      },
      "outputs": [],
      "source": [
        "#@title Data\n",
        "\n",
        "decomposition_248 = (np.array([[-1., -0., -0.,  1.,  0.,  0., -0.,  1.,  0., -0.,  0.,  0., -0.,\n",
        "        -1.,  0.,  0.,  1.,  0.,  0.,  1.,  1., -0., -0., -1., -0., -0.,\n",
        "         0.,  0.,  0.,  1., -0.,  0.,  1., -0.,  0., -0.,  0., -0., -0.,\n",
        "        -1.,  1., -0., -0., -0., -0.,  0.,  0.,  1.,  0.,  1., -0.],\n",
        "       [-0.,  0.,  0., -0.,  0., -0.,  0.,  0., -1., -0., -0.,  0.,  0.,\n",
        "         1.,  0., -0.,  0., -0.,  0., -1.,  0.,  1., -1.,  1.,  0., -0.,\n",
        "        -0.,  0.,  0.,  0., -1.,  1.,  1., -0.,  0., -0., -0.,  1.,  1.,\n",
        "         1.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0., -0., -1.],\n",
        "       [ 0.,  0., -0.,  0., -0.,  0., -0., -1., -1.,  0., -0.,  1., -1.,\n",
        "         0.,  0., -0., -1.,  0., -0., -0., -1., -0., -1.,  0.,  0., -0.,\n",
        "        -0., -0., -0., -1.,  1.,  0., -0., -1.,  1., -1., -0., -0., -1.,\n",
        "         0., -1., -0., -1., -0., -0.,  0.,  0.,  0., -0.,  0.,  0.],\n",
        "       [-0., -0., -1.,  0.,  0., -0.,  0., -0.,  1., -1.,  0.,  0.,  1.,\n",
        "        -0., -0.,  0.,  0.,  0.,  1.,  0.,  0., -0., -0.,  0.,  1., -0.,\n",
        "        -0.,  0.,  1.,  0.,  0., -1.,  0., -0.,  0., -0.,  1.,  0., -1.,\n",
        "        -0., -0., -1., -0., -1.,  0.,  0.,  1., -1., -0., -1., -0.],\n",
        "       [-1.,  0., -0.,  1., -0., -1.,  0., -0., -0., -0., -1., -0., -0.,\n",
        "         0., -1.,  0.,  1., -1., -0., -0., -0., -0., -0.,  0.,  1.,  1.,\n",
        "         0., -0.,  1., -0., -0.,  0., -0., -0.,  0., -1.,  0.,  0., -0.,\n",
        "        -1., -0.,  0., -0., -0., -0., -1., -0., -0.,  0., -0.,  1.],\n",
        "       [-0., -1., -1., -0., -0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0.,\n",
        "        -0., -0.,  1.,  0.,  0., -0., -1., -1.,  0., -1.,  1., -0.,  1.,\n",
        "         1., -1.,  0.,  0., -1.,  1., -0.,  0.,  0., -0.,  1., -0., -0.,\n",
        "         1.,  0.,  0., -1., -0.,  1., -0., -0.,  0., -1.,  0., -0.],\n",
        "       [-0., -1.,  1.,  0., -0.,  0.,  1.,  0.,  0.,  0.,  1., -0., -1.,\n",
        "         0., -0.,  0., -1., -0., -0.,  1., -1., -1., -1.,  0.,  0., -0.,\n",
        "         1.,  1.,  0.,  0.,  1.,  0.,  0., -1.,  1.,  0.,  1.,  0.,  0.,\n",
        "         0., -1.,  0., -0., -0., -0., -0.,  0., -0.,  1.,  0.,  0.],\n",
        "       [-0.,  1.,  0.,  0., -1.,  1., -1., -0., -0., -1.,  0.,  0.,  1.,\n",
        "         0.,  1., -1.,  0., -0., -0.,  0., -0.,  1., -0., -1., -0.,  0.,\n",
        "         0.,  0., -0.,  0.,  0., -1., -0.,  1.,  0., -0., -0., -0.,  0.,\n",
        "        -0.,  1.,  0.,  1., -1.,  0., -0., -0.,  0.,  1.,  0.,  0.]],\n",
        "      dtype=np.float32), np.array([[ 0.,  0.,  0.,  1.,  0., -0., -0., -0., -0.,  0.,  0., -0.,  0.,\n",
        "        -0.,  0., -0.,  0., -1., -0.,  0., -0., -0., -0., -0.,  0., -0.,\n",
        "         0., -0.,  0.,  0.,  0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0.,\n",
        "        -0., -0., -0.,  0.,  0.,  0., -0., -0.,  0.,  0.,  0.,  0.],\n",
        "       [-1., -0.,  0.,  0., -0., -0., -0., -1.,  0., -0., -0., -1.,  0.,\n",
        "        -0.,  0., -0.,  0., -0., -0.,  0.,  0.,  0., -0., -0., -0.,  0.,\n",
        "         0., -0., -0.,  0., -0., -0.,  0., -0., -0.,  1.,  0., -0., -0.,\n",
        "        -0., -0., -0., -0., -0., -0., -0., -0., -0.,  0., -0.,  0.],\n",
        "       [-0., -0., -1.,  0., -0., -0., -0., -0.,  0., -0., -0., -0., -1.,\n",
        "        -0., -1.,  0.,  0.,  0.,  1.,  0.,  0., -0.,  0.,  1.,  0.,  0.,\n",
        "         0.,  1.,  0., -0., -0., -1.,  0.,  1.,  1.,  0.,  0., -0.,  0.,\n",
        "         1., -0., -0.,  0., -0., -0.,  0.,  1.,  0., -1.,  0.,  0.],\n",
        "       [-0., -0.,  0.,  0.,  1.,  1.,  0., -0.,  0., -0., -0., -0.,  0.,\n",
        "        -0.,  0., -0., -1., -0.,  0.,  0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "         0., -0.,  0.,  0., -0.,  0.,  0.,  1.,  1.,  0.,  0., -0.,  0.,\n",
        "         0.,  1.,  0.,  0.,  0.,  0.,  0., -0.,  0.,  0., -0.,  0.],\n",
        "       [-0., -0., -0., -1., -0., -0., -0., -0.,  0., -0., -0., -0.,  0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0., -0., -0.,\n",
        "         0.,  0., -0.,  0., -0., -0., -1., -0., -0.,  0.,  0.,  1.,  0.,\n",
        "         0., -0., -0.,  0.,  0., -0.,  0.,  0., -0., -0., -0., -1.],\n",
        "       [ 0., -0.,  0., -0., -0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,\n",
        "         0.,  0.,  0., -0., -1., -0., -0.,  0.,  0.,  0., -0., -1.,  0.,\n",
        "         0., -0.,  0.,  0.,  0.,  0., -0., -0., -0., -0.,  0., -0.,  0.,\n",
        "        -0., -0.,  1., -0., -0.,  0., -0.,  0.,  0.,  0., -1.,  0.],\n",
        "       [-1.,  0., -0., -0., -0., -0.,  0.,  0., -0., -0.,  0.,  0., -0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  1., -0., -0.,  0., -0.,  0.,  0., -0.,\n",
        "        -0.,  0.,  1., -0.,  0., -0.,  0.,  0.,  0., -0., -0., -0., -0.,\n",
        "         0., -0., -0., -0., -0.,  0., -0., -0.,  1., -0.,  0.,  0.],\n",
        "       [-1.,  0., -0.,  0., -0., -0., -0.,  0., -0., -0.,  0.,  0., -0.,\n",
        "         0., -0., -0.,  0.,  0.,  0., -0., -0., -0., -0.,  0.,  0.,  0.,\n",
        "         0.,  0., -0., -0., -0., -0.,  0.,  0.,  0., -0.,  0., -0., -0.,\n",
        "         0., -0., -0., -0., -0., -0.,  1.,  0., -0., -0.,  0.,  0.],\n",
        "       [ 0., -0.,  0.,  0., -0.,  0., -0., -0.,  0., -0.,  0., -0.,  0.,\n",
        "         0., -0.,  0.,  0.,  1., -0., -0.,  0.,  0., -0.,  0., -0., -1.,\n",
        "        -0.,  0., -0., -0.,  0.,  0., -0.,  0.,  0.,  0.,  0., -0., -0.,\n",
        "         0.,  0., -0., -0.,  0.,  1., -0., -0., -0.,  0., -0.,  1.],\n",
        "       [ 0., -0., -0.,  0.,  0.,  0.,  0., -0.,  0.,  0.,  0., -1.,  1.,\n",
        "         0., -0.,  0.,  0., -0., -0., -0., -0.,  0., -0.,  0., -0.,  0.,\n",
        "        -0.,  0., -0., -0., -0.,  1.,  0., -1., -1.,  0., -0.,  0.,  1.,\n",
        "         0., -0., -0.,  1.,  0.,  0., -0., -1., -0., -0., -0., -0.],\n",
        "       [ 0., -0., -1.,  0., -0., -0.,  0.,  0.,  0., -0., -0., -0., -1.,\n",
        "        -0.,  0., -1.,  0.,  0.,  1.,  0.,  0.,  0.,  0., -0.,  0.,  0.,\n",
        "         0.,  1.,  0., -0., -0., -1., -0.,  1.,  1., -0.,  0.,  0.,  0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.,  0.,  1., -0., -1.,  0., -0.],\n",
        "       [ 0.,  1., -0., -0., -0., -0., -1.,  0.,  0.,  0.,  0., -0.,  0.,\n",
        "        -0., -0., -0., -0.,  0.,  0., -0.,  0., -1.,  0.,  0.,  0., -0.,\n",
        "         0.,  0., -0., -0.,  0.,  0., -0., -0., -0., -0.,  0.,  0.,  0.,\n",
        "         0., -0., -0.,  0.,  0., -1.,  0., -0., -0., -0.,  0., -0.],\n",
        "       [ 0., -0., -0., -0.,  0., -0.,  0.,  0., -0.,  0., -0., -0.,  0.,\n",
        "        -0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,  0.,  0., -0.,\n",
        "        -0.,  0., -0., -0.,  0.,  0., -0.,  0.,  0., -0., -0., -1.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0., -1.,  0., -0., -0., -0.,  0.,  0.],\n",
        "       [ 0., -1.,  0.,  0., -1., -1.,  1.,  0., -0., -0.,  0.,  0., -0.,\n",
        "         0., -0., -0., -0.,  1.,  0.,  0.,  1.,  1.,  1., -0.,  1.,  0.,\n",
        "        -0., -0.,  0., -0.,  0., -0., -1., -1., -1., -0., -0.,  0., -0.,\n",
        "         0., -1., -1., -0., -0.,  1., -0.,  0.,  0.,  0.,  1., -0.],\n",
        "       [-0.,  0., -0.,  0.,  0.,  0.,  0.,  1., -0.,  0., -1.,  0.,  1.,\n",
        "         0.,  1., -1., -0., -0.,  1.,  1., -0.,  0., -0., -1., -0., -0.,\n",
        "        -0., -1.,  1.,  0.,  0.,  1.,  0., -1., -1., -1., -0., -0.,  1.,\n",
        "         0.,  0.,  0.,  1., -0.,  0., -0., -1.,  1., -0., -0.,  0.],\n",
        "       [-0.,  0., -0.,  0.,  0.,  0.,  0.,  1., -0.,  0., -1.,  0.,  1.,\n",
        "        -1., -0.,  0., -0., -0.,  0.,  1., -0., -0., -0.,  0., -0., -0.,\n",
        "        -0., -1., -0.,  0.,  0.,  1.,  0., -1., -1., -1., -0.,  0.,  1.,\n",
        "         0.,  0.,  0.,  1.,  0.,  0.,  1., -1., -0., -0., -0.,  0.],\n",
        "       [ 0., -1.,  0., -0., -1.,  0., -0., -0.,  1., -0.,  0., -0., -0.,\n",
        "        -0.,  0.,  0., -0., -1.,  0.,  0.,  1.,  1., -0., -0.,  0.,  1.,\n",
        "        -0., -0.,  0., -1., -0., -0., -1., -1., -1., -0.,  1.,  0.,  0.,\n",
        "         0.,  0., -1., -0.,  0., -0., -0., -0.,  0.,  0.,  0., -1.],\n",
        "       [ 0., -0., -0., -0., -0.,  0., -0.,  0.,  0.,  0.,  0., -1., -0.,\n",
        "        -0., -0.,  0.,  0.,  0., -0., -0., -0.,  0.,  0.,  0., -0., -0.,\n",
        "         0.,  0., -0.,  0.,  0., -0.,  0.,  0., -1.,  0.,  0., -0., -0.,\n",
        "        -0.,  0., -0., -0.,  0., -0., -0.,  0., -0., -0., -0.,  0.],\n",
        "       [ 0., -0.,  0., -0., -0.,  0., -0., -0.,  0.,  0.,  0., -0.,  0.,\n",
        "         0.,  0., -1., -0., -0., -0., -0., -0.,  0., -0., -0., -0., -0.,\n",
        "         0., -0., -0., -0.,  0.,  0.,  0., -0.,  1.,  0.,  0., -0., -0.,\n",
        "        -0.,  0., -0.,  1., -0., -0.,  0., -0., -0., -1., -0.,  0.],\n",
        "       [ 0., -0.,  0., -0.,  1., -0.,  1.,  0.,  0., -0., -0., -0.,  0.,\n",
        "        -0.,  0., -0.,  0., -0., -0.,  0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "         0., -0.,  0., -0., -0.,  0., -0.,  1.,  1., -0.,  0., -0.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0., -0., -0., -0.],\n",
        "       [-0.,  1., -0.,  0.,  1., -0.,  0., -0., -1.,  0., -0., -0.,  0.,\n",
        "        -0., -0., -0.,  0., -0., -0., -0.,  0., -1.,  0.,  0.,  0.,  0.,\n",
        "        -1.,  0., -0., -0.,  0.,  0., -0.,  1.,  1.,  0., -1.,  1.,  0.,\n",
        "        -0., -0.,  1.,  0.,  0.,  0.,  0.,  0., -0., -0., -0., -0.],\n",
        "       [-0., -0.,  0.,  0., -0.,  1., -1., -0., -0.,  0., -0.,  0.,  0.,\n",
        "         0.,  0.,  0.,  0., -1.,  0.,  0.,  0.,  0.,  0., -0., -1., -0.,\n",
        "         0.,  0.,  0., -1., -0.,  0., -0., -0.,  0., -0., -0., -0.,  0.,\n",
        "         0.,  1.,  1., -0.,  0.,  0., -0.,  0.,  0.,  0., -1.,  0.],\n",
        "       [-0.,  0.,  1.,  0.,  0., -0.,  0.,  1., -0.,  0., -1.,  0.,  1.,\n",
        "         0.,  1., -1., -0.,  0., -0.,  1., -0., -0., -0., -1., -0., -0.,\n",
        "        -0., -1.,  1.,  0., -1.,  1.,  0., -1., -1., -1., -0., -0., -0.,\n",
        "         0.,  0.,  0.,  1., -0.,  0.,  0., -1.,  1., -0.,  0.,  0.],\n",
        "       [ 0.,  0., -0.,  0., -0., -0.,  0., -0., -0., -0., -1.,  0., -0.,\n",
        "         0., -0., -0., -0.,  0.,  0., -0., -0., -0.,  0.,  0.,  0., -0.,\n",
        "        -0.,  0.,  0.,  0.,  0., -0.,  0.,  0., -1., -1., -0., -0., -0.,\n",
        "        -0., -0., -0., -0.,  0., -0.,  1.,  0., -0., -0.,  0.,  0.],\n",
        "       [-0.,  0.,  0., -0.,  0.,  1.,  0.,  0., -0., -0., -0., -0., -0.,\n",
        "        -0.,  0., -0.,  0., -1., -0.,  0., -0., -0.,  0., -0., -1., -0.,\n",
        "        -0., -0.,  0.,  0., -0.,  0.,  0.,  0.,  0., -0., -0., -0.,  0.,\n",
        "         0., -0.,  0.,  0., -1.,  0., -0., -0.,  0.,  0.,  0.,  0.],\n",
        "       [ 0., -0., -0., -0., -0.,  0.,  0.,  0., -0., -0., -0.,  0.,  1.,\n",
        "        -0.,  0.,  0., -0.,  0., -0.,  0., -0.,  0.,  0., -0.,  0., -0.,\n",
        "         0.,  0.,  0., -0.,  0., -0., -0., -1., -1., -0.,  0., -0., -0.,\n",
        "        -0.,  0., -0., -0.,  0.,  0., -0., -1.,  0., -0., -0.,  0.],\n",
        "       [ 0., -0., -1.,  0., -0., -0., -0.,  0.,  0., -0., -0., -0., -1.,\n",
        "        -0.,  0.,  0., -0.,  0.,  1.,  0.,  0., -0.,  0., -0.,  0.,  0.,\n",
        "         0.,  1.,  0., -0., -0.,  0., -0.,  1.,  1., -0.,  0., -0.,  0.,\n",
        "        -0., -0., -0.,  0.,  0., -0.,  0.,  1.,  0., -1.,  0., -0.],\n",
        "       [-0., -0., -0., -0.,  1., -0.,  0.,  0.,  0.,  0., -0.,  0., -1.,\n",
        "         0., -0., -0.,  0., -0., -0.,  0.,  0.,  0., -0., -0., -0.,  0.,\n",
        "         0.,  0., -0., -0., -0.,  0., -0.,  1.,  1., -0.,  0., -0.,  0.,\n",
        "         0., -0.,  0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0., -0.],\n",
        "       [-0.,  1., -0.,  0.,  1., -0.,  0.,  0.,  0., -0., -0.,  0., -1.,\n",
        "        -0.,  0., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "        -1.,  0., -0., -0., -0.,  0.,  0.,  1.,  1., -0., -1., -0., -0.,\n",
        "        -0., -0.,  1.,  0., -0.,  0.,  0., -0.,  0., -0.,  0.,  0.],\n",
        "       [-0., -0.,  0.,  0.,  0.,  1.,  0., -0.,  0.,  0., -0., -0., -0.,\n",
        "        -0.,  0., -0.,  0., -1., -0.,  0.,  0.,  0.,  0., -0., -1.,  0.,\n",
        "         0., -0.,  0.,  0., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,\n",
        "         0., -0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -0.],\n",
        "       [ 0., -0., -0.,  0., -0., -0.,  0., -0., -0.,  1.,  0., -0., -0.,\n",
        "        -0.,  0.,  0., -0.,  0.,  1., -0.,  0.,  0., -0.,  0.,  0.,  0.,\n",
        "         0.,  0., -0., -0., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0., -0.,\n",
        "        -0.,  0., -0.,  0.,  0.,  0., -0., -0., -0., -0., -0., -0.],\n",
        "       [ 0., -0., -0., -0., -0.,  0., -0.,  0., -0.,  1.,  0.,  0., -0.,\n",
        "         0., -1., -0.,  0.,  0., -0.,  0., -0., -0., -0., -0.,  0., -0.,\n",
        "         0.,  0., -1., -0., -0.,  0., -0.,  0.,  0., -0.,  0.,  0., -0.,\n",
        "        -0., -0., -0.,  0., -0., -0.,  1.,  0.,  0., -0., -0., -0.]],\n",
        "      dtype=np.float32), np.array([[-0., -0.,  0.,  1., -0., -0.,  0., -0., -0.,  0.,  0., -0.,  0.,\n",
        "         0., -0.,  0.,  0., -1.,  0.,  0., -1., -0.,  1., -0., -1., -0.,\n",
        "         1.,  0.,  0.,  0., -0., -0., -1.,  0., -0.,  0., -1.,  0.,  0.,\n",
        "         0.,  0.,  1., -0.,  0.,  0., -0.,  0.,  0., -0., -0., -1.],\n",
        "       [ 0., -0.,  0.,  0.,  0.,  0., -0., -0.,  0., -0., -0.,  0.,  0.,\n",
        "        -0.,  0., -0., -0.,  1., -0.,  0., -0., -0.,  0., -0.,  1., -1.,\n",
        "        -1., -0.,  0., -0., -0., -0., -0., -0., -0., -0.,  1., -0., -0.,\n",
        "         0., -0., -1., -0.,  1.,  0.,  0., -0.,  0., -0.,  0.,  0.],\n",
        "       [ 0.,  0.,  1., -0., -0., -0.,  0., -1.,  0., -0.,  0., -1.,  0.,\n",
        "         0.,  0., -0.,  0.,  0., -0.,  1., -0.,  0.,  0.,  0.,  0., -0.,\n",
        "         0.,  1., -0., -0.,  1.,  0.,  0.,  0., -0.,  0., -0.,  0.,  1.,\n",
        "        -0., -0., -0.,  0.,  0., -0.,  0., -1.,  0., -0., -0.,  0.],\n",
        "       [ 0.,  0.,  0.,  0., -1.,  0., -0., -0.,  0., -0.,  1.,  1.,  0.,\n",
        "        -0.,  0.,  0.,  0.,  0., -0.,  0.,  0., -0.,  0., -0., -0.,  0.,\n",
        "        -0., -1.,  0.,  0.,  0.,  0., -0., -1., -1., -1., -0., -0.,  0.,\n",
        "         0.,  0.,  0., -1., -0.,  0., -0., -0., -0., -1., -0.,  0.],\n",
        "       [-0., -0.,  1.,  0.,  0.,  0.,  0., -0., -0.,  0., -0.,  0.,  0.,\n",
        "        -1., -0.,  1., -0., -0., -0.,  1.,  0.,  0., -0., -1., -0.,  0.,\n",
        "        -0.,  1.,  0., -0.,  1., -1.,  0.,  0.,  0., -0.,  0.,  0.,  1.,\n",
        "        -0., -0.,  0., -1., -0.,  0., -0.,  0.,  0.,  0., -0., -0.],\n",
        "       [ 0., -0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0.,  0., -0., -0.,\n",
        "         1.,  0., -1.,  0.,  0.,  0., -1.,  0., -0.,  0.,  1.,  0.,  0.,\n",
        "         0., -1., -0., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,\n",
        "        -1.,  0., -0., -0.,  0.,  0.,  0.,  0., -0., -1.,  0.,  0.],\n",
        "       [ 0., -0.,  0.,  0., -0.,  0., -1., -0., -1.,  0., -0., -0., -1.,\n",
        "        -0., -0.,  0., -0., -0., -0.,  0.,  1., -1., -1., -0., -0.,  0.,\n",
        "        -1.,  0., -0.,  1.,  0., -0., -0., -1.,  0.,  0.,  1., -0.,  0.,\n",
        "        -0.,  1.,  0., -0., -0., -0.,  0., -1.,  0., -0.,  0., -0.],\n",
        "       [ 0., -1.,  0., -0., -1., -0.,  1., -0., -0., -0.,  0.,  0., -0.,\n",
        "         0.,  0., -0., -1.,  0., -0., -0., -1., -0., -0.,  0.,  0., -0.,\n",
        "         1., -0.,  0., -1., -0.,  0.,  0., -0., -0., -0.,  0.,  0.,  0.,\n",
        "        -0., -1., -0., -0.,  0., -0., -0., -0., -0., -0., -0., -0.],\n",
        "       [ 0.,  0.,  0., -0., -0., -0., -0., -0.,  1.,  0.,  0., -0., -0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  0.,  0., -1., -0.,  1., -0.,  0., -0.,\n",
        "         1.,  0., -0.,  0.,  0., -0., -1., -0.,  0.,  0., -1., -1.,  0.,\n",
        "        -0.,  0., -0., -0.,  0., -0.,  0., -0.,  0.,  0., -0.,  0.],\n",
        "       [ 0.,  1.,  0., -0., -0.,  0.,  0.,  0.,  0., -0.,  0.,  0., -0.,\n",
        "         0., -0., -0., -0., -0., -0., -0., -0.,  1.,  0.,  0., -0., -1.,\n",
        "        -1., -0.,  0., -0.,  0.,  0., -0., -0., -0., -0., -0.,  1., -0.,\n",
        "        -0., -0.,  0., -0., -0., -1., -0., -0.,  0., -0., -0., -1.],\n",
        "       [ 0.,  0., -0.,  0., -0.,  0.,  0.,  0.,  0., -0., -0.,  0.,  0.,\n",
        "        -0.,  0., -0., -0., -0.,  0., -0.,  1.,  0., -1.,  0., -0.,  0.,\n",
        "        -1., -0., -0.,  1., -0.,  0., -0.,  0., -0.,  0.,  1.,  0., -0.,\n",
        "         0., -0., -1.,  0., -0.,  0.,  0.,  0.,  0., -0., -1., -0.],\n",
        "       [ 0.,  0.,  0., -0.,  0.,  1., -0., -0., -0., -0., -0., -0., -0.,\n",
        "        -0.,  0.,  0., -1.,  0., -0.,  0., -1., -0., -0., -0., -1., -0.,\n",
        "         1.,  0.,  0., -1., -0.,  0.,  0., -0.,  0.,  0., -1., -0., -0.,\n",
        "         0., -1.,  1., -0., -1.,  0., -0.,  0., -0.,  0., -0.,  0.],\n",
        "       [ 0., -0., -1., -0., -0.,  0.,  0.,  0.,  0., -0., -0., -0., -0.,\n",
        "         1.,  0.,  0.,  0., -0.,  1., -1., -0., -0.,  0., -0., -0.,  0.,\n",
        "         0., -1., -0., -0., -1., -0., -0., -0., -0.,  0., -0., -0.,  0.,\n",
        "         0., -0.,  0., -0., -0.,  0.,  0., -0.,  1., -0.,  0.,  0.],\n",
        "       [ 0., -0.,  1., -0., -0., -0., -0.,  0.,  0., -1., -0.,  0., -0.,\n",
        "        -1.,  1., -0.,  0., -0., -1.,  1.,  0.,  0., -0., -1.,  0., -0.,\n",
        "        -0.,  1.,  1.,  0., -0.,  0.,  0., -0., -0., -0.,  0.,  0., -0.,\n",
        "         1.,  0., -0., -0.,  0., -0., -0.,  0.,  0., -0., -0., -0.],\n",
        "       [ 1.,  0.,  0.,  0., -0., -0.,  0.,  1.,  0., -0., -0., -0.,  0.,\n",
        "        -1., -0., -0., -0., -0.,  0., -0., -0.,  0.,  0.,  0., -0.,  0.,\n",
        "         0.,  0., -1., -0.,  0.,  0., -0.,  0., -0.,  1., -0.,  0.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0., -0.,  1., -0., -1., -0., -0., -0.],\n",
        "       [ 0.,  0.,  0.,  0., -0.,  0., -0.,  0.,  0., -0., -1.,  0.,  0.,\n",
        "         1., -1.,  0.,  0.,  0., -0., -1.,  0., -0.,  0.,  1.,  0., -0.,\n",
        "        -0.,  0., -0.,  0.,  0.,  0., -0., -0., -0., -0.,  0., -0., -0.,\n",
        "        -1.,  0., -0., -0.,  0.,  0., -1., -0., -0., -0.,  0.,  0.]],\n",
        "      dtype=np.float32))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "AdbcQ2QSeJ2E"
      },
      "outputs": [],
      "source": [
        "#@title Verification\n",
        "n = 2\n",
        "m = 4\n",
        "p = 8\n",
        "rank = 51\n",
        "\n",
        "verify_tensor_decomposition(decomposition_248, n, m, p, rank)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "t3O3PmJmeJ2E"
      },
      "source": [
        "##Rank-47 decomposition of <2,5,6> over Z"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "z0X-8bNWeJ2F"
      },
      "outputs": [],
      "source": [
        "#@title Data\n",
        "\n",
        "decomposition_256 = (np.array([[ 0.,  0.,  1., -0.,  0.,  0., -1., -1.,  0., -0., -1.,  0., -0.,\n",
        "         0.,  1., -0., -0., -0.,  0.,  0., -1.,  1., -0.,  0.,  1.,  0.,\n",
        "         0., -0., -0., -1., -0., -1.,  0.,  0.,  0., -0.,  0.,  1., -0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.,  0., -0.],\n",
        "       [ 0., -0., -0.,  1., -0., -0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,\n",
        "         0.,  1., -0., -1.,  0., -0., -1.,  0.,  0.,  0., -0., -1., -1.,\n",
        "         0., -0.,  0.,  0.,  0.,  0.,  1.,  0., -0., -1.,  0.,  1., -0.,\n",
        "         0.,  0., -0., -0., -0.,  0., -0.,  0.],\n",
        "       [-0., -0., -0., -1., -0.,  0., -0., -0.,  0., -1.,  0.,  1.,  0.,\n",
        "         0.,  0., -1.,  1.,  0., -0., -0., -1.,  0., -1., -1.,  1.,  0.,\n",
        "        -0.,  0.,  0., -0., -0.,  0., -1., -0., -0.,  1.,  0., -0.,  0.,\n",
        "         0.,  0., -1., -0., -1.,  1.,  0.,  0.],\n",
        "       [ 0., -0., -1.,  0., -0., -0., -0., -0.,  0.,  0., -0.,  1.,  0.,\n",
        "        -0.,  0., -1.,  0.,  0.,  1.,  0.,  0.,  0., -1.,  0., -1., -1.,\n",
        "        -0., -1., -1., -0., -0., -0., -0., -0.,  1.,  0.,  0.,  0., -0.,\n",
        "        -0.,  0.,  0.,  1., -1.,  1., -0.,  0.],\n",
        "       [-1., -1., -0., -0., -1.,  0., -1., -1.,  0., -0., -1.,  0.,  0.,\n",
        "         0.,  1.,  1.,  0.,  1., -0., -0.,  0.,  1., -0., -0., -0.,  0.,\n",
        "        -0.,  0., -0., -1., -0.,  0., -0., -0., -0.,  0., -0., -0., -0.,\n",
        "        -0.,  1.,  1., -0.,  0., -0., -0.,  0.],\n",
        "       [ 0., -0., -1., -1., -1.,  0., -0.,  1.,  1., -1., -0., -0., -0.,\n",
        "        -0.,  0., -0., -0., -0.,  1., -0., -0.,  0., -0., -0.,  0., -0.,\n",
        "         1.,  0.,  0., -0., -1., -0., -0.,  1.,  0., -0.,  0., -1., -1.,\n",
        "         0.,  0.,  0.,  0.,  0.,  1.,  1.,  0.],\n",
        "       [-0., -0., -0.,  0., -1., -1., -0., -0.,  1., -1., -0.,  0.,  0.,\n",
        "         1.,  0., -0.,  1.,  0., -0.,  1.,  0.,  1., -0., -0., -0., -0.,\n",
        "         1., -1., -0.,  0.,  0.,  0., -1.,  0., -0., -0.,  0., -1.,  0.,\n",
        "         0., -0.,  0.,  0., -0.,  0., -1., -0.],\n",
        "       [ 0., -1.,  0.,  0.,  0.,  0., -1.,  0.,  0., -0.,  0., -1.,  1.,\n",
        "         0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0., -0., -0.,  0.,  0.,\n",
        "        -0., -0., -0.,  0., -1.,  0.,  1., -0., -0.,  0.,  1.,  0.,  0.,\n",
        "         1., -0.,  1.,  1.,  0., -0.,  1.,  0.],\n",
        "       [-0.,  0.,  1.,  1.,  0., -1.,  0.,  0.,  0.,  0., -0., -1.,  0.,\n",
        "        -0.,  0., -0.,  0., -0., -1.,  0., -0., -0., -0., -0., -0., -0.,\n",
        "        -0., -0.,  1., -0., -0., -0.,  0., -1.,  0., -0.,  1.,  0., -0.,\n",
        "        -0., -0., -0.,  0., -0., -1., -1., -0.],\n",
        "       [ 1.,  1.,  0.,  0.,  0., -0.,  1.,  1.,  1.,  0.,  1., -0.,  0.,\n",
        "         0.,  0.,  0.,  0.,  0., -0.,  0.,  0.,  0., -0., -0.,  0., -0.,\n",
        "        -0., -0., -0., -0.,  0.,  0.,  0., -0., -0.,  0., -1.,  0.,  0.,\n",
        "        -1., -1., -1., -1.,  1., -0., -0.,  1.]], dtype=np.float32), np.array([[ 0., -1., -0., -0.,  0.,  0.,  1., -1.,  0., -0.,  0.,  0., -1.,\n",
        "        -0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0., -0., -0.,  0.,  0.,\n",
        "         0.,  0., -0.,  0., -1., -0., -0., -0., -0.,  0.,  0.,  0., -0.,\n",
        "        -0.,  1., -0., -0.,  0., -0., -0., -0.],\n",
        "       [-0.,  0.,  1., -0., -0.,  0.,  0., -0., -0.,  0., -0.,  0.,  0.,\n",
        "        -0.,  0.,  0., -0.,  0., -1., -0., -0.,  0., -0.,  0.,  0.,  0.,\n",
        "        -0., -0.,  1.,  0., -0.,  0., -0., -0., -0., -0.,  0., -0., -1.,\n",
        "        -0., -0., -0.,  0.,  0.,  0.,  0.,  0.],\n",
        "       [ 0., -0., -0.,  0.,  0., -0., -0.,  0., -0.,  1.,  0.,  0., -0.,\n",
        "        -0., -0., -0.,  1.,  0.,  0., -1., -1.,  0., -0., -1., -0., -0.,\n",
        "        -0., -0.,  0., -0., -0., -0.,  0., -0.,  0., -0., -0.,  1., -0.,\n",
        "         0.,  0.,  0., -0.,  0., -0.,  0., -0.],\n",
        "       [ 0.,  0.,  1., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,\n",
        "         0.,  0.,  0., -0., -0., -1., -0., -0.,  0., -0., -0.,  0.,  0.,\n",
        "        -0., -0.,  1., -0., -0.,  1.,  0., -0.,  0., -0.,  0.,  0.,  0.,\n",
        "        -0., -0., -0., -0.,  0., -0., -0., -0.],\n",
        "       [-1., -0., -0.,  0., -1.,  0.,  0., -1., -0., -0., -1.,  0., -0.,\n",
        "         1.,  0., -0., -0., -1., -0.,  0., -0., -1.,  0.,  0.,  0.,  0.,\n",
        "         1.,  0., -0.,  1., -0.,  1.,  0.,  0.,  0.,  0.,  0., -0., -0.,\n",
        "         0.,  0., -0.,  0., -0.,  0., -0., -0.],\n",
        "       [-1., -0.,  0.,  0.,  0.,  0.,  0., -1.,  0., -0., -1., -0., -0.,\n",
        "        -0., -0.,  0.,  0.,  0., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0.,\n",
        "        -0., -0., -0., -0., -0.,  1., -0.,  0., -0.,  0.,  0.,  0., -0.,\n",
        "         0.,  0., -0.,  0., -0.,  0.,  0., -0.],\n",
        "       [-1.,  1., -0., -0.,  0., -0., -1., -0., -0., -1., -1.,  0.,  1.,\n",
        "         0., -1.,  0., -0.,  0.,  0.,  1.,  1., -1.,  0.,  0., -0., -0.,\n",
        "         1.,  0., -0.,  1.,  1.,  1.,  0.,  0., -0.,  1.,  0.,  0., -0.,\n",
        "         0., -1., -0.,  0., -0.,  0., -0.,  0.],\n",
        "       [-0.,  0., -0., -1., -0., -0.,  0.,  0.,  0., -0.,  0.,  1., -0.,\n",
        "         0., -0.,  0., -0., -0.,  1.,  0.,  0., -0., -0., -0.,  0., -0.,\n",
        "        -0.,  0., -1.,  0., -1., -0., -1., -1., -0., -0.,  0.,  0.,  1.,\n",
        "         0., -0.,  0., -0.,  0.,  1.,  1.,  0.],\n",
        "       [-0.,  0., -0.,  0.,  0.,  0., -0.,  0.,  0., -0., -0., -0.,  0.,\n",
        "         0., -0., -0., -1.,  0.,  0.,  1., -0., -0., -0.,  1., -0.,  0.,\n",
        "         0.,  0., -0.,  0.,  0.,  0., -0.,  0.,  0., -1., -0.,  0., -0.,\n",
        "         0., -0., -0.,  0.,  0.,  0., -0., -0.],\n",
        "       [ 0., -0.,  0.,  0., -0.,  0.,  0.,  0., -0.,  0.,  0., -0., -0.,\n",
        "         0.,  0., -0.,  0., -0., -0.,  1., -0.,  0., -0.,  0.,  0.,  1.,\n",
        "        -0., -1.,  0., -0.,  0.,  0.,  0.,  0.,  1., -0., -0., -0., -0.,\n",
        "        -0.,  0.,  0.,  0., -0., -0., -0., -0.],\n",
        "       [-0., -0., -0., -0., -0., -0.,  0., -0., -0.,  0., -0., -0., -0.,\n",
        "        -1.,  0.,  0.,  0., -0., -0.,  1., -0., -0., -0., -0., -0., -0.,\n",
        "         0.,  0., -0.,  0., -0.,  0., -0.,  0., -0., -0.,  0., -0.,  0.,\n",
        "         0.,  0., -0., -0., -0.,  0., -0., -0.],\n",
        "       [ 0., -0., -0., -0.,  0.,  0.,  0., -0., -0.,  0., -0.,  0., -0.,\n",
        "         0., -1., -0., -0.,  0.,  0.,  1., -0., -1., -0., -0.,  0., -0.,\n",
        "        -0.,  0., -0.,  1., -0., -0., -0., -0., -0., -0., -0.,  0.,  0.,\n",
        "         0.,  0.,  0., -0.,  0.,  0.,  0., -0.],\n",
        "       [-0.,  1., -0., -0.,  0.,  0.,  0., -0.,  0.,  0., -0., -0.,  1.,\n",
        "        -0.,  0., -0.,  0.,  0.,  0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,\n",
        "        -0.,  0.,  0., -0., -0.,  0., -0.,  0., -0., -0.,  0., -0.,  0.,\n",
        "         0., -1., -1.,  0., -0.,  0.,  0.,  0.],\n",
        "       [ 0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0., -0.,  0.,  1., -0.,\n",
        "        -0., -0., -0., -0., -0.,  1.,  0., -0., -0.,  0.,  0.,  0.,  0.,\n",
        "         0., -0., -1.,  0., -1., -0.,  0.,  0., -0.,  0.,  0., -0.,  1.,\n",
        "         0.,  0., -0.,  0., -0.,  1., -0.,  0.],\n",
        "       [ 0.,  0., -0., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0., -0., -0.,\n",
        "        -0., -0.,  0., -1.,  0., -0.,  1., -0.,  0., -0.,  1., -0.,  0.,\n",
        "        -0., -0.,  0., -0., -0.,  0.,  1., -0.,  0.,  0.,  0.,  0.,  0.,\n",
        "        -0., -0., -0.,  0., -0.,  0., -0.,  0.],\n",
        "       [ 0.,  1., -0., -0.,  0.,  0.,  0., -0., -0.,  0.,  0., -0.,  1.,\n",
        "        -0.,  0., -0., -0.,  0., -0., -0., -0.,  0., -1., -0., -0., -0.,\n",
        "        -0.,  0.,  0., -0., -0., -0., -0., -0.,  1., -0.,  0.,  0., -0.,\n",
        "        -1., -1., -1., -1.,  1., -0.,  0., -1.],\n",
        "       [-0., -0., -0., -0., -0.,  0.,  0., -0.,  0., -0., -0., -0.,  1.,\n",
        "         0.,  0., -0., -1., -0., -0.,  1.,  0., -0.,  0., -0., -0., -0.,\n",
        "         0.,  0., -0.,  0.,  0.,  0.,  1., -0.,  0., -0.,  0., -0., -0.,\n",
        "        -0.,  0.,  0.,  0.,  0.,  0., -0.,  0.],\n",
        "       [ 1.,  0.,  0., -0.,  0., -0.,  1.,  0., -0.,  0.,  1.,  0., -0.,\n",
        "        -0.,  0.,  0.,  0.,  0.,  0., -0., -1.,  0., -0.,  0., -0., -0.,\n",
        "        -0., -0.,  0., -0.,  0., -1., -0., -0., -0., -0., -0.,  0.,  0.,\n",
        "        -0., -0., -1., -0., -0., -0.,  0.,  0.],\n",
        "       [ 0.,  0., -0., -0., -0.,  0.,  0.,  0., -0.,  0.,  0., -0.,  0.,\n",
        "        -0., -0., -0.,  0.,  0.,  0., -0., -0., -0.,  0., -0., -0., -0.,\n",
        "         0.,  0.,  1.,  0., -0., -0., -0.,  0.,  0.,  0., -1.,  0.,  0.,\n",
        "        -1., -0., -0., -1., -0.,  0., -0.,  0.],\n",
        "       [-0.,  0., -0., -0., -0.,  0., -0., -0., -0.,  0., -0.,  0.,  0.,\n",
        "        -0.,  0.,  0.,  0.,  0., -1., -0.,  0.,  0., -0., -0.,  0., -0.,\n",
        "        -0.,  0.,  1., -0., -0.,  0., -0.,  1.,  0., -0., -0., -0., -1.,\n",
        "        -0., -0., -0., -0., -0.,  0.,  0.,  0.],\n",
        "       [ 0.,  0., -1., -1.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0., -0.,\n",
        "        -0., -0.,  0.,  1.,  0., -0., -1., -1.,  0.,  0., -1., -1.,  0.,\n",
        "        -0.,  0., -0.,  0., -0., -0., -0.,  0., -0.,  1., -0.,  1.,  0.,\n",
        "        -0., -0., -0., -0.,  0.,  0., -0.,  0.],\n",
        "       [ 0.,  0., -0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0., -0.,  0.,\n",
        "        -0.,  0., -0.,  0.,  0.,  0.,  0., -0.,  0., -0., -0.,  0.,  0.,\n",
        "        -0., -0.,  1., -0., -0., -0.,  0., -0., -1., -0.,  0., -0.,  0.,\n",
        "        -0., -0., -0., -0.,  0.,  0., -0., -0.],\n",
        "       [ 0., -0.,  0.,  0.,  0., -1.,  0.,  0., -0., -0.,  0.,  0.,  0.,\n",
        "         1., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,\n",
        "        -0., -1.,  1., -0.,  0., -0.,  0.,  0.,  0., -0.,  0., -0.,  0.,\n",
        "         0.,  0.,  0.,  0.,  0.,  0., -0., -0.],\n",
        "       [-1.,  1.,  0., -0.,  0.,  0., -1., -0., -0.,  0., -1.,  0.,  1.,\n",
        "        -0.,  0., -0.,  0.,  0., -0., -0.,  1.,  0., -1., -0., -0., -0.,\n",
        "        -0.,  0.,  1., -0.,  1.,  1., -0., -1.,  0., -0., -1.,  0., -0.,\n",
        "        -1., -1., -0., -1., -0., -1.,  0.,  0.],\n",
        "       [-0.,  1.,  0.,  0., -0.,  0.,  0., -0.,  0.,  0., -0.,  0.,  1.,\n",
        "        -0.,  0., -0.,  0., -0., -0., -0., -0.,  0.,  0., -0.,  0., -0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0.,  0., -0.,\n",
        "        -1., -1.,  0.,  0., -0.,  0.,  0.,  0.],\n",
        "       [ 0.,  1., -0., -0.,  0., -0.,  0., -0., -0.,  0., -1., -0.,  1.,\n",
        "         0.,  0.,  1., -0.,  0., -0., -0., -0.,  0., -1., -0.,  0., -0.,\n",
        "        -0., -0.,  0.,  1.,  0.,  1., -0.,  0.,  0., -0.,  0., -0., -0.,\n",
        "        -1., -1., -0.,  0.,  1., -0.,  0.,  0.],\n",
        "       [ 1., -1.,  0.,  0.,  1., -0., -0.,  0., -1.,  0.,  1., -0., -1.,\n",
        "        -0., -0.,  0.,  0., -0., -0., -0.,  0., -0., -0., -0.,  0.,  0.,\n",
        "        -1., -0.,  0., -1.,  0., -1., -0., -0., -0.,  0., -0.,  0., -0.,\n",
        "         1., -0.,  0., -0.,  0., -0., -0., -0.],\n",
        "       [ 0.,  1., -0.,  0.,  0.,  0.,  0., -0., -0.,  0.,  0.,  0.,  1.,\n",
        "         0.,  0.,  1., -0., -0.,  0., -0., -0.,  0., -1.,  0.,  0.,  0.,\n",
        "        -0., -0., -0., -0., -0., -0.,  0., -0., -0., -0.,  0.,  0.,  0.,\n",
        "        -1., -1.,  0.,  0.,  1.,  0., -0., -1.],\n",
        "       [ 1.,  0., -0., -0.,  1.,  0., -0.,  0., -1.,  0.,  1.,  0.,  0.,\n",
        "         0., -0.,  0.,  0.,  1.,  0., -0.,  0., -0., -0.,  0., -0., -0.,\n",
        "        -1.,  0.,  0., -1.,  0., -1., -0., -0., -0., -0., -0., -0.,  0.,\n",
        "        -0., -0.,  0., -0., -0., -0., -0.,  0.],\n",
        "       [ 1.,  0., -0., -0., -0.,  0., -0.,  0.,  0.,  0.,  1., -0.,  0.,\n",
        "        -0., -0.,  0., -0., -0.,  0.,  0.,  0., -0., -0.,  0.,  0., -0.,\n",
        "         0., -0.,  0., -1.,  0., -1., -0., -0.,  0., -0., -0., -0., -0.,\n",
        "        -0., -0.,  0., -0.,  0., -0., -0.,  0.]], dtype=np.float32), np.array([[-0., -1., -0., -0., -1.,  0., -1.,  0., -0., -1.,  0., -0., -0.,\n",
        "        -0., -0., -1., -0., -1.,  0., -0., -1., -0., -1.,  0., -0., -0.,\n",
        "         1.,  0.,  0.,  0., -0., -0., -0.,  0., -0., -0.,  0.,  1.,  0.,\n",
        "         1., -0.,  1., -1.,  0.,  0.,  0.,  0.],\n",
        "       [-0., -1., -0.,  0., -1., -0.,  0., -0.,  0.,  0.,  0.,  1.,  0.,\n",
        "        -0.,  0.,  0.,  0., -1., -0.,  0.,  0., -0., -1.,  0.,  0., -0.,\n",
        "         1.,  0.,  0.,  0.,  1.,  0., -0., -0., -0., -0., -1., -0., -0.,\n",
        "         1.,  1., -0.,  0., -1., -1., -0., -0.],\n",
        "       [-1., -0.,  1., -1., -0.,  0., -0., -0., -0., -0.,  1.,  0., -0.,\n",
        "         0.,  0.,  0., -0.,  0., -1., -0., -0.,  0.,  1., -0., -1., -0.,\n",
        "         0., -0., -0., -0., -0.,  1., -0., -1., -0., -0., -0.,  0., -0.,\n",
        "         0., -0., -0.,  0.,  1.,  1.,  0.,  1.],\n",
        "       [ 0., -0., -0.,  0.,  0., -0.,  0.,  0., -0.,  0., -0., -1., -0.,\n",
        "        -0., -0., -0., -0.,  0., -0., -0., -0.,  0.,  1., -0.,  0.,  0.,\n",
        "         0.,  0.,  0., -0.,  0., -0., -0., -1., -0., -0.,  0., -0.,  1.,\n",
        "         0., -0., -0., -0.,  1.,  1., -1.,  1.],\n",
        "       [ 0.,  0.,  0.,  0., -1., -0.,  0., -0.,  0., -1., -0.,  0.,  0.,\n",
        "        -0.,  0.,  0.,  0., -1.,  0., -0.,  0., -0.,  0., -1.,  1.,  0.,\n",
        "         1.,  0.,  0.,  0.,  0.,  0., -0., -0., -0.,  1.,  0.,  1.,  0.,\n",
        "        -0., -0., -0.,  0.,  0.,  0., -0.,  0.],\n",
        "       [-0., -1.,  0., -1., -1.,  0., -0.,  0., -0., -1., -0., -0., -1.,\n",
        "        -0., -0., -0., -1., -1.,  0.,  0.,  0.,  0.,  0.,  0., -0., -0.,\n",
        "         1., -0.,  0., -0., -0., -0.,  1., -0., -0.,  1.,  0., -0.,  0.,\n",
        "        -0.,  1., -0.,  0.,  0.,  0.,  1., -0.],\n",
        "       [ 1., -0.,  0., -0., -0.,  0., -0.,  0., -0.,  0., -1., -0., -0.,\n",
        "         0., -0.,  1.,  0., -0., -0.,  0., -0.,  0.,  0.,  0., -0., -1.,\n",
        "         0., -0., -0.,  0.,  0., -1., -0., -0., -1.,  0., -0.,  0.,  0.,\n",
        "         0.,  0.,  0.,  0., -1.,  0.,  0., -1.],\n",
        "       [-0., -0., -0.,  0., -0., -1., -0., -0.,  0., -0.,  0., -0.,  0.,\n",
        "        -0., -0., -0.,  0., -0., -1., -0.,  0., -0.,  0.,  0.,  0.,  0.,\n",
        "        -0.,  1.,  1.,  0., -0.,  0.,  0., -0., -1.,  0.,  1., -0., -1.,\n",
        "         0.,  0., -0., -1.,  0.,  0., -0., -1.],\n",
        "       [-0., -0., -0.,  0., -0., -0., -0.,  0.,  0., -0.,  0.,  0., -0.,\n",
        "        -1.,  1., -0., -1.,  1.,  0., -1.,  0., -1.,  0.,  1.,  0.,  1.,\n",
        "         0.,  1.,  0.,  0.,  0., -0., -0.,  0., -0.,  0., -0.,  0.,  0.,\n",
        "         0.,  0.,  0., -0.,  0., -0., -0.,  0.],\n",
        "       [ 0.,  1., -0., -0.,  1.,  1., -0., -0., -1., -0.,  0., -0.,  1.,\n",
        "        -1., -0.,  0., -0.,  1., -0.,  0., -0., -0.,  0., -0., -0., -0.,\n",
        "         0., -0.,  0.,  0., -0.,  0.,  0.,  0., -0.,  0., -0., -0., -0.,\n",
        "         0., -1., -0., -0.,  0.,  0.,  0.,  0.],\n",
        "       [-1., -0., -0.,  0.,  1.,  0., -0.,  0., -0.,  1.,  1.,  0.,  0.,\n",
        "        -0., -1., -0., -0., -0.,  0., -0.,  1.,  0.,  1.,  0.,  0., -0.,\n",
        "        -1.,  0., -0.,  1.,  0., -0., -0.,  0., -0.,  0.,  0., -1.,  0.,\n",
        "         0., -0.,  0., -0.,  1., -0.,  0.,  1.],\n",
        "       [ 0., -0.,  0., -0., -0., -0., -1., -1.,  1., -0.,  1., -1.,  0.,\n",
        "        -0.,  0.,  0., -0., -0., -0.,  0., -0., -1.,  1., -0., -0., -0.,\n",
        "        -1.,  0.,  0.,  1., -1.,  0., -0.,  0., -0., -0., -0.,  0., -0.,\n",
        "         0.,  0., -0., -0.,  1.,  1.,  0.,  1.]], dtype=np.float32))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "BGbCVEOieJ2F"
      },
      "outputs": [],
      "source": [
        "#@title Verification\n",
        "n = 2\n",
        "m = 5\n",
        "p = 6\n",
        "rank = 47\n",
        "\n",
        "verify_tensor_decomposition(decomposition_256, n, m, p, rank)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8NfePQHveJ2F"
      },
      "source": [
        "##Rank-23 decomposition of <3,3,3> over Z"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "y7mmudQXeJ2F"
      },
      "outputs": [],
      "source": [
        "#@title Data\n",
        "decomposition_333 = (np.array([[ 1.,  0., -0., -0., -1.,  0.,  0., -0., -0.,  1., -0.,  0.,  0.,\n",
        "        -0., -0.,  0., -0.,  0., -0., -0.,  0.,  0.,  0.],\n",
        "       [-1., -0.,  0.,  0., -0.,  0.,  0.,  0., -1.,  0., -0.,  1., -0.,\n",
        "         0.,  0.,  0., -0., -0., -1., -0.,  0.,  0.,  1.],\n",
        "       [ 0., -0., -0., -0.,  0.,  0., -1., -0.,  0., -0.,  1.,  1.,  0.,\n",
        "         0., -0., -0.,  1.,  0.,  0.,  1.,  0., -0., -0.],\n",
        "       [ 0., -0.,  1.,  1.,  0., -0., -0., -0.,  0., -0.,  1., -0., -1.,\n",
        "         0.,  0., -0.,  0.,  0., -0., -0., -1., -0., -0.],\n",
        "       [-0.,  1.,  0., -1.,  0., -1., -0., -1.,  0., -0., -0.,  1., -0.,\n",
        "        -0., -0., -0.,  0.,  1., -0.,  1., -0., -0.,  0.],\n",
        "       [ 0.,  1., -0.,  0., -0.,  0.,  0.,  0., -0.,  0.,  1.,  1., -0.,\n",
        "        -0.,  0.,  0., -0., -0., -0.,  1.,  0.,  1., -0.],\n",
        "       [ 1., -0., -1.,  0.,  0.,  0., -0.,  1.,  0., -0.,  0., -0.,  0.,\n",
        "        -0.,  1., -0.,  0.,  0., -0.,  0., -0.,  0., -1.],\n",
        "       [-1.,  0., -0., -0.,  0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0.,\n",
        "        -1., -1., -0.,  0.,  0., -1.,  0., -0.,  0.,  1.],\n",
        "       [ 0.,  0.,  0.,  0.,  0., -1.,  0.,  0., -0.,  0., -0., -0., -1.,\n",
        "        -1.,  0.,  1., -0., -0., -1., -0.,  0., -1., -0.]], dtype=np.float32), np.array([[ 0., -0., -1., -1.,  1., -0., -0., -1., -0.,  0., -0., -0.,  0.,\n",
        "         0.,  0.,  0., -0.,  1., -0., -0.,  1., -0.,  0.],\n",
        "       [-0.,  0., -1.,  0., -0., -0., -0.,  0., -0.,  1., -0., -0.,  0.,\n",
        "         0.,  0., -0., -0., -0.,  0., -0.,  1., -0., -0.],\n",
        "       [ 1.,  0., -1.,  0.,  0., -0.,  0., -0.,  0., -0.,  0.,  0.,  1.,\n",
        "         0.,  0.,  1., -0., -0., -1.,  0., -0., -0.,  1.],\n",
        "       [ 0., -0.,  0.,  0., -0.,  1.,  0., -0., -0.,  0.,  1.,  1., -1.,\n",
        "        -1.,  0.,  0.,  0.,  1.,  0.,  1.,  1.,  0., -0.],\n",
        "       [ 0.,  0.,  0., -0.,  0.,  1., -0.,  1.,  1., -0.,  1.,  1., -1.,\n",
        "        -1., -1., -0., -0., -0.,  0.,  1.,  1., -0.,  1.],\n",
        "       [-0.,  0.,  0., -0., -0.,  1.,  0.,  1., -0.,  0., -0., -0.,  0.,\n",
        "        -1., -1.,  1., -0., -0., -1., -0., -0., -0.,  1.],\n",
        "       [ 0., -1., -0., -0.,  0., -1.,  0., -0., -0.,  0., -1.,  0.,  1.,\n",
        "        -0.,  0., -0.,  0., -1., -0., -1., -1.,  0., -0.],\n",
        "       [ 0.,  0., -0.,  0.,  0.,  0., -1.,  0.,  0.,  0., -1.,  0.,  1.,\n",
        "        -0., -0.,  0., -0.,  0.,  0.,  0., -1., -1.,  0.],\n",
        "       [ 0.,  0., -0.,  0.,  0.,  0.,  0.,  0., -0., -0.,  0., -0., -0.,\n",
        "        -0., -0., -1., -1.,  0., -0.,  0.,  0., -1.,  0.]], dtype=np.float32), np.array([[-0.,  1.,  0., -0., -1.,  0.,  0., -0.,  1.,  0., -0.,  1., -0.,\n",
        "         0.,  0., -0., -0.,  0., -0., -1., -0., -0., -0.],\n",
        "       [-0., -1., -0., -1., -0., -0., -0.,  0.,  0.,  0., -0.,  0., -0.,\n",
        "        -0.,  0., -0., -0.,  1.,  0.,  0., -0., -0., -0.],\n",
        "       [-0.,  0.,  0.,  0., -0.,  1.,  0., -1.,  0., -0.,  0.,  0., -0.,\n",
        "         1., -1., -0., -0.,  1., -0., -0., -0.,  0.,  0.],\n",
        "       [ 0.,  0.,  0.,  0.,  0., -0.,  1.,  0., -1.,  1., -0.,  0., -0.,\n",
        "         0., -0., -0., -0., -0., -0., -0., -0., -0.,  0.],\n",
        "       [ 0., -0., -0.,  1., -0., -0., -1., -0., -0.,  0., -1.,  0., -0.,\n",
        "        -0., -0., -0., -0., -1.,  0.,  1., -1., -0., -0.],\n",
        "       [-0.,  0.,  1., -0.,  0., -1.,  0.,  1.,  1.,  0.,  0.,  0., -1.,\n",
        "         0.,  0., -0., -0., -1., -1., -0., -1.,  0.,  1.],\n",
        "       [ 1.,  0.,  0., -0.,  0., -0.,  0.,  0.,  1.,  0.,  0.,  0., -0.,\n",
        "         0., -1., -0., -1., -0.,  0., -0., -0., -0.,  1.],\n",
        "       [ 0., -0., -0.,  0.,  0., -1.,  1., -0.,  0.,  0.,  1.,  0., -1.,\n",
        "        -0., -0., -1., -0., -0., -0., -1., -0., -1.,  0.],\n",
        "       [ 0.,  0.,  0.,  0.,  0., -0., -0.,  0., -1.,  0., -0., -0., -0.,\n",
        "         0.,  1., -1., -0., -0.,  1.,  0., -0.,  0., -1.]], dtype=np.float32))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "Li88v_qYeJ2F"
      },
      "outputs": [],
      "source": [
        "#@title Verification\n",
        "n = 3\n",
        "m = 3\n",
        "p = 3\n",
        "rank = 23\n",
        "\n",
        "verify_tensor_decomposition(decomposition_333, n, m, p, rank)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AU2VrnMAeJ2F"
      },
      "source": [
        "## Rank-54 decomposition of <3,4,6> over 0.5*Z\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "RSDDU_7keJ2G"
      },
      "outputs": [],
      "source": [
        "#@title Data\n",
        "\n",
        "decomposition_346 = (np.array([[ 0.5,  0. ,  0. ,  0. , -1. ,  1. ,  0. ,  1. , -1. ,  0. ,  0. ,\n",
        "         0. ,  0.5,  1. , -0.5,  0. ,  0.5,  0. ,  0. ,  0. ,  0.5,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. , -1. ,  1. ,  0.5, -0.5,  0. ,  0. ,  0.5,\n",
        "         0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         1. ,  0. ,  0.5, -1. ,  1. , -1. ,  0. ,  1. ,  0. , -1. ],\n",
        "       [ 0.5,  0. ,  0. ,  0. ,  1. ,  1. ,  0. ,  1. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0.5, -1. ,  0.5,  0. ,  0.5,  0. ,  0. ,  0. ,  0.5,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. ,  1. , -1. ,  0.5, -0.5,  0. ,  0. , -0.5,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0.5,  0. ,  0. , -1. ,  0. ,  1. ,  0. ,  0. ],\n",
        "       [-0.5,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. , -0.5,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. , -0.5,  0. , -1. ,  0. , -1. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. , -0.5,  0. ,  0.5,  0. ,  0. ,  0. ,  0. ,  0.5,\n",
        "        -1. ,  0. , -0.5,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  1. ,  0. ,  0. , -1. ,  1. ,  0. , -1. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0.5, -1. , -0.5,  0. ,  0. ,  0. ,  0. ,  0. , -0.5,  0. ,\n",
        "         0. ,  0.5,  0. ,  0. ,  1. ,  0. , -0.5, -0.5, -1. ,  0. , -0.5,\n",
        "         0. ,  0. ,  0. ,  0.5,  0. , -0.5,  0. ,  0. ,  0. ,  0. ,  0.5,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  1. ,  0. ,  0. ],\n",
        "       [-0.5,  0. , -1. , -0.5,  0. ,  0. , -1. ,  0. ,  0. , -1. , -1. ,\n",
        "        -1. ,  0. ,  0. ,  0.5, -1. , -0.5,  0. ,  0. , -0.5,  0.5,  0. ,\n",
        "         0. , -0.5,  1. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -0.5,  0. ,  1. ,  0. , -0.5,  0.5,  0. , -1. , -0.5,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0.5,  0. , -1. ,  0. ],\n",
        "       [-0.5,  0. ,  0. , -0.5,  0. ,  0. ,  1. ,  0. ,  0. ,  1. , -1. ,\n",
        "         0. ,  0. ,  0. , -0.5,  1. ,  0.5,  0. ,  0. , -0.5, -0.5,  0. ,\n",
        "         0. ,  0.5,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0.5,  0. ,  1. ,  0. , -0.5, -0.5,  0. ,  1. ,  0.5,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0.5,  0. ,  0. ,  0. ],\n",
        "       [ 0.5,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  1. ,  0.5,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0.5,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  1. ,  0. ,\n",
        "         0. ,  0. , -1. ,  0.5,  0. ,  0. ,  1. ,  0. ,  0. ,  0. , -0.5,\n",
        "         0. ,  0. ,  0.5,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. , -0.5,  0. ,  0. ,  1. ,  1. ,  0. ,  1. , -1. ,\n",
        "         0. ,  0. ,  0. ,  0.5,  0. ,  0. ,  0. ,  0. , -0.5,  0.5,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,\n",
        "         0.5,  0. ,  0. , -0.5,  0.5,  0.5,  1. , -1. ,  0.5,  0. , -0.5,\n",
        "         0. ,  0. ,  0.5,  0. ,  0. , -1. ,  0.5,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  1. ,  0.5, -1. ,  1. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0.5,  0.5,  0. ,  0. ,  0. ,  0. , -0.5, -1. ,  0.5,  0. ,  1. ,\n",
        "         0. ,  0. , -0.5,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0.5,  0. , -1. ,  0. ,  0.5,  0. ,  0. ,  0. ,  0.5,  1. ,  0. ,\n",
        "         1. ,  0. ,  0. , -1. ,  0.5,  0. ,  0. ,  0. ,  0. , -0.5],\n",
        "       [ 0. ,  0. ,  0. ,  0.5,  1. , -1. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0.5,  0.5,  0. ,  0. ,  0. ,  0. , -0.5, -1. ,  0.5,  0. , -1. ,\n",
        "         0. ,  0. , -0.5,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -0.5,  0. , -1. ,  0. ,  0.5,  0. ,  0. ,  0. ,  0.5, -1. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. , -0.5,  0. ,  0. ,  0. ,  0. ,  0.5],\n",
        "       [ 0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. , -1. ,\n",
        "        -0.5,  0. , -1. ,  0. ,  0. ,  0. ,  0.5,  0. , -0.5,  0. , -1. ,\n",
        "         0.5,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0.5],\n",
        "       [ 0. ,  1. ,  0. ,  0.5, -1. ,  1. ,  0. ,  0. ,  1. , -1. ,  1. ,\n",
        "         0. ,  0.5, -1. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,\n",
        "        -0.5,  0. ,  0.5,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,\n",
        "        -0.5,  0. ,  0. ,  0. , -0.5,  0. ,  0. ,  0. , -0.5,  1. ,  0. ,\n",
        "         0. ,  1. ,  0. ,  0. ,  0.5,  0. ,  0. ,  1. ,  0. ,  0. ]],\n",
        "      dtype=np.float32), np.array([[ 0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5, -1. ,\n",
        "         0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. , -1. ],\n",
        "       [ 0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "        -1. ,  1. , -0.5,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. , -1. ,  0. ],\n",
        "       [-1. ,  0. , -1. ,  0. ,  0. , -1. ,  0.5,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  1. , -1. ,  0. ,  0. ,  1. ,  0. , -1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0.5, -1. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. , -0.5,  1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ],\n",
        "       [ 0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [-1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. , -0.5,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  1. ,  1. , -1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,\n",
        "        -1. ,  1. , -0.5,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  1. ],\n",
        "       [ 0. , -0.5,  1. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  1. ,  0.5,  0. ,  0. ,  0. ,  1. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  1. , -1. ,  0. , -0.5,  0. ,  0. ,  0. ,\n",
        "        -0.5,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ],\n",
        "       [ 0. ,  0. , -1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. , -0.5,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  1. ,  0. ,\n",
        "         0. , -1. , -1. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  0. ,  1. , -1. ,  0. ,  0. ,  0.5,  0. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. , -1. ,  0. ],\n",
        "       [-1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. , -1. , -1. ,  0.5,  1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  1. ,\n",
        "         1. ,  0. ,  0. ,  0. ,  1. ,  0. , -1. ,  0. ,  0. , -0.5,  0. ,\n",
        "         1. ,  0. ,  0.5,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. , -1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 1. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,\n",
        "         0. ,  0. ,  0.5,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. , -1. ,  0. ,  0. ,  1. ,  1. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0.5,  0. ,  1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,\n",
        "         0. ,  0. , -1. ,  0. ,  1. , -1. ,  0. , -0.5,  0. ,  0. ,  0. ,\n",
        "        -0.5,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         1. ,  0. , -0.5,  1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0. , -1. , -1. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  1. , -1. , -1. ,  2. ,  0. ,  0.5,  0. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. , -1. ,  0. ,  0. , -1. ,  0.5,  0. ,  0. , -1. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. , -1. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  1. , -1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  1. ,  0. ,\n",
        "        -1. ,  0. ,  0. , -1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0.5, -1. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  1. ,  1. ,  0. ,  0. ,  1. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. , -1. ,  0. ,  1. ,  0. ,  0. , -0.5,  0. ,\n",
        "         0. ,  0. , -0.5,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         1. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  1. ],\n",
        "       [ 0. ,  1. , -1. ,  0. , -1. , -1. ,  0. ,  0. ,  0. , -1. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. , -1. ,  2. ,  0. , -1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. , -1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  1. ,  0.5,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. , -1. ,  0. ,  0. , -1. ,  0. ,  0. ],\n",
        "       [-1. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -0.5,  0. ,\n",
        "         0. ,  0. ,  0.5,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. , -1. , -1. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0.5,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0. , -1. ,  0. , -1. ,  0. ,  0. ,  0. , -0.5,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. , -1. ,  1. ,  0. ,  0.5,  0. ,  0. ,  0. ,\n",
        "         0.5,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. , -0.5,  1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0. , -1. ,  1. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  0. ,  1. ,  1. ,  0. ,  0. , -0.5,  0. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. , -1. ,  0. ,  0. , -1. , -0.5,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. , -1. , -1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0.5, -1. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  1. ,  1. ,  0. ,  0. ,  1. , -1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         1. ,  0. ,  0. ,  0. ,  1. ,  0. ,  1. ,  0. ,  0. ,  0.5,  0. ,\n",
        "         0. ,  0. , -0.5,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  1. ],\n",
        "       [ 0. ,  0. , -1. ,  0. ,  1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. , -1. ,  0.5,  0. ,\n",
        "         0. ,  0. ,  0. , -1. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ]],\n",
        "      dtype=np.float32), np.array([[ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. , -1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0.5, -1. ,  0. ,  1. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -0.5,  1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0.5,  0. , -1. ,  1. ,  0. , -1. ,  0. ,  0. ,  1. ],\n",
        "       [ 0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. , -0.5,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         1. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  1. , -1. ,  0. ,  1. ,  0.5,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0.5,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  1. ,\n",
        "         0. ,  1. ,  0. ,  0. ,  0. ,  1. ,  0. ,  1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. , -1. ,  0. ,  1. ,  0. ,  1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ],\n",
        "       [ 0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,\n",
        "        -1. ,  0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  1. ,  0. ,  0.5,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. , -1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0. , -1. ,  0. ,  0.5,  0. ,  1. ,  0. ,  0. , -1. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [ 1. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. , -1. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  1. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. , -0.5, -1. ,  0. ,  0. , -1. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. , -0.5,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,\n",
        "         1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,\n",
        "         0. ,  0. ,  0. ,  0. ,  0.5,  0. , -1. ,  0. ,  1. ,  0. ,  0. ,\n",
        "         0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  1. , -0.5,\n",
        "         0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,\n",
        "        -1. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. , -1. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,  1. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -0.5,  0. ,  0. , -0.5,\n",
        "        -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. , -1. ,  1. ,  0. ,  0. ,  0. ,  0. ,  1. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. , -0.5, -0.5,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  1. , -1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ,  0. ,  0. ],\n",
        "       [-1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0.5,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. , -1. ,  1. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  1. , -1. ,  0. ,  0. ,\n",
        "         0. ,  0. , -1. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ,  0. ],\n",
        "       [ 0. ,  0. ,  0. ,  0. ,  0. ,  0.5,  0. ,  0. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  1. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0.5,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,  0. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  1. ,  0. ,\n",
        "         0. ,  0. ,  0. ,  0. ,  0. ,  0. ,  0. , -1. ,  0. ,  0. ]],\n",
        "      dtype=np.float32))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "fvumsx4DeJ2G"
      },
      "outputs": [],
      "source": [
        "#@title Verification\n",
        "n = 3\n",
        "m = 4\n",
        "p = 6\n",
        "rank = 54\n",
        "\n",
        "verify_tensor_decomposition(decomposition_346, n, m, p, rank)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jnyHvP2heJ2G"
      },
      "source": [
        "##Rank-63 decomposition of <3,4,7> over 0.5*C"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "9nrBdr5deJ2G"
      },
      "outputs": [],
      "source": [
        "#@title Data\n",
        "\n",
        "decomposition_347 = (np.array([[ 0. -0.j , -1. +0.j ,  0. +0.j ,  0. +1.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.j ,  1. +0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,\n",
        "         1. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  1. +0.j , -0. +1.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j , -1. -0.j ,  0. +0.j ,  0. -0.j ,  0. -1.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  1. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +1.j ,  0. -0.j , -0. +0.j , -0. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j , -0.5-0.j , -0. +0.j ,  0. +0.j ,  0. +0.5j,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ,  0.5+0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0.5+0.j , -0. +0.j ,  0. +0.j ,  0. +0.5j, -0. +0.5j,\n",
        "        -0.5-0.j , -0. +0.j ,  0. +0.j ,  0.5+0.j , -0.5+0.j ,  0. -0.5j,\n",
        "         0. +0.j , -0. +0.5j,  0. +0.j , -0. +0.j ,  0. -0.j ,  0.5+0.j ,\n",
        "        -0.5+0.j ,  0.5+0.j , -0. +0.j , -0. +0.j ,  0. +0.5j, -0.5+0.j ,\n",
        "         0. -0.5j, -0.5+0.j ,  0. +0.j , -1. +0.j , -0. +0.5j,  0. -0.5j,\n",
        "        -0.5-0.j ,  0.5+0.j ,  0. -0.5j,  0. +0.j ,  0. +0.j , -0.5+0.j ,\n",
        "         0.5+0.j , -0.5-0.j ,  0. +0.j , -0. +0.j ,  0. -0.5j, -0. +0.5j,\n",
        "         0. -0.5j, -0.5+0.j ,  0. +0.j ,  0. +0.j ,  0.5+0.j ,  0.5+0.j ,\n",
        "         0. +0.j ,  0.5+0.j ,  0. +0.j ],\n",
        "       [ 0. -0.j , -0. +0.j ,  0. -0.j , -1. -0.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. -0.j ,  0. -1.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  1. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -1.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  1. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -1.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +1.j ,\n",
        "         1. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +1.j , -0. +0.j , -1. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -1. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -1.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [-0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  1. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +1.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -1.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. -1.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +1.j , -0. +0.j ,  0. -0.j , -0. +0.j ,  1. +0.j ,\n",
        "         0. -0.j ,  0. -1.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -1.j , -0. +1.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  1. +0.j ,\n",
        "         0. -0.j , -0. +1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +1.j ,  0. +0.j ],\n",
        "       [-1. -0.j ,  0. +1.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -1.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -1.j , -0. +0.j , -1. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. -1.j ,  0. +0.j ,  0. -0.j ,  0. -1.j ,  0. -0.j ,\n",
        "        -1. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. -1.j ,\n",
        "        -0. +0.j , -0. +1.j ,  0. +0.j , -0.5-0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -1.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.5j,  0. -0.5j, -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.5j, -0.5+0.j ,  0. +0.j ,  0. +0.j ,  0. -0.5j,\n",
        "        -0. +0.j ,  0. -0.5j, -0. +0.j ,  0.5+0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.5j,  0. +0.5j,  0. +0.j ,  0. +0.j , -0. +0.5j,  0. +0.j ,\n",
        "         0.5+0.j ,  0.5+0.j , -0. +0.j ,  0.5+0.j , -0. +0.j ,  0. -0.5j,\n",
        "         0. +0.j , -0. +0.5j,  0.5+0.j , -0. +0.j , -0. +0.j ,  0. -0.5j,\n",
        "        -0.5+0.j ,  0. -0.5j, -0.5+0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0.5+0.j , -0.5+0.j ,  0. +0.j ,\n",
        "         0. -0.5j,  0. +0.j , -0. +0.5j,  0. -0.5j, -0.5+0.j ,  0. -0.j ,\n",
        "        -0.5-0.j ,  0. +0.5j,  0. +0.j ,  0. +0.5j, -0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. -0.5j,  1. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j , -1. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -1. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -1.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +1.j ,  0. -0.5j,  0. +0.j ,  1. +0.j ,\n",
        "         0. -1.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +1.j ,  0. +0.j ,\n",
        "         1. +0.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +1.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0.5+0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [ 0. -1.j ,  0. +0.j , -1. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +1.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +1.j , -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  1. +0.j , -0. +1.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j ,  1. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -1.j ,  1. +0.j , -0.5-0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  1. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  1. +0.j ,\n",
        "         1. +0.j ,  1. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -1.j ,  0. -1.j ,  0. +0.j ,\n",
        "         0. -0.j ,  1. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j , -0. +1.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +1.j ,  0. -0.j ,  1. +0.j ,\n",
        "         0. -0.j , -1. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  1. +0.j ,  1. +0.j ,\n",
        "         1. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j , -0. +0.j ,  0.5+0.j ,  0. -0.j ,  0. +0.5j,  0. -0.j ,\n",
        "         0.5+0.j ,  0.5+0.j ,  0. +0.5j,  0.5+0.j ,  0.5+0.j ,  0.5+0.j ,\n",
        "         0. -0.5j, -0. +0.j , -0. +0.j ,  0. -0.5j,  0. -0.5j,  0. +0.5j,\n",
        "        -0. +0.j , -0.5+0.j ,  0. +0.j ,  0.5+0.j ,  0. +0.j ,  0. -0.5j,\n",
        "         0. +0.5j,  0. -0.j , -0. +1.j , -0. +0.5j,  0. +0.j ,  0. +0.j ,\n",
        "        -0.5-0.j , -0. +0.j ,  0. +0.5j,  0. -0.j , -0. +0.5j,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. -0.5j,  0. +0.j ,  0. -0.j ,  0. -0.5j,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.5j,  0. +0.5j,  0. +0.5j, -0.5-0.j ,\n",
        "         0. +0.j , -0.5-0.j , -0.5+0.j ,  0.5+0.j ,  0. +0.j ,  0. -0.5j,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0.5-0.j ,  0.5+0.j ,  0.5+0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +1.j ,  0. -1.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  1. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +1.j , -0. +0.j , -0. +0.j ,\n",
        "        -1. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. -1.j ,  0. +0.j , -1. -0.j , -0. +0.j , -1. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -1. -0.j ,  0. +0.j , -1. -0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +1.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. -1.j ,  0. -0.j ,  1. +0.j , -0. +1.j ,\n",
        "         0. +0.j ,  0. +0.j , -1. -0.j ,  0. +1.j ,  0. -0.j ,  0. +0.j ,\n",
        "         1. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  1. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  1. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  1. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -1.j , -0. +1.j , -0. +0.j ,  1. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. -1.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ]]), np.array([[ 0. +0.j , -0. +0.j ,  0. -0.5j,  0. +0.j ,  0.5+0.j , -0. +1.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.5j,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. +1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j , -1. -0.j , -0. +0.j ,  0. -0.j , -0. +0.j , -1. -0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. -0.5j,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.5j,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -1. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j , -0.5-0.j ,  0. -0.j ,  0. +0.5j,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [-0. +0.j ,  0.5+0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.5j,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j , -0. +0.5j,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.5j,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0.5+0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0.5+0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0.5-0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. -0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  1. +0.j , -0.5+0.j ,\n",
        "         0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0.5-0.j ,\n",
        "         0. -0.j ,  0. -1.j , -0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -1.j ,  0. +0.j ,  0.5+0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -0.5j, -0. +0.j ,  0.5+0.j ,  0. -0.j , -1. -0.j , -0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.5j,  0. +0.j ,  0. -0.5j,  0. -1.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -1.j , -0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  1. +0.j ,  0. +0.j , -0. +0.j ,  0.5+0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -0.j , -0. +0.j , -0. +1.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  1. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j , -0.5+0.j ,  0. +0.j ,  0.5+0.j ,  0. -0.j ,  0. -0.5j,\n",
        "         0. -0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.5j,\n",
        "         0. +0.j ,  0. -0.5j,  0. +0.j ,  0. +0.j , -1. +0.j , -0. +0.j ,\n",
        "         0. +0.j , -0.5-0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. -1.j , -0. +0.j , -1. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. -1.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0.5+0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.5j,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.5j,\n",
        "         0. +0.5j, -0. +0.j ,  0. +0.j ,  0. -0.5j, -0. +0.j , -0. +0.j ,\n",
        "         0. -1.j ,  0. +0.j ,  0. -0.5j,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0.5-0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +1.j ,  0. -1.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         1. +0.j ,  0. +0.5j,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  0. -0.5j,  0. -0.5j, -0. +0.j ,\n",
        "        -0. +0.j ,  0.5+0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.5j,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0.5+0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j , -0. +0.j , -0.5+0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +1.j ,  0. -1.j ,  0. +0.j , -0.5-0.j ,  0. +0.j ,  0.5+0.j ,\n",
        "         0. +0.j ,  1. +0.j ,  0. -0.j ,  0. -0.5j,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.5j,  0.5+0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0.5-0.j , -0. +1.j , -0.5+0.j ,  0. +0.5j, -1. -0.j ,  0. +0.5j,\n",
        "        -0. +0.5j, -0. +0.5j,  0. +0.j ,  0.5+0.j , -0.5-0.j ,  0. -0.5j,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. -1.j ,  0.5+0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0.5-0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.5j,  0. +0.j ,  0. +1.j ,\n",
        "         0. +0.5j,  0. -0.5j,  0. +0.5j, -0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +0.5j, -0. +0.j ,  0. +1.j , -0.5-0.j , -0. +1.j ,  0. -0.5j,\n",
        "        -0. +0.5j, -0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. -1.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. -1.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j , -1. +0.j ,  0. -0.j , -0. +1.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  1. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +1.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. -1.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  1. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -1. -0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -1. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -1. -0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j , -1. -0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -1.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +1.j ,  0. -0.j ,  0. -1.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [-0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -1. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  1. +0.j , -0. +0.j , -1. -0.j ,  0. +0.j ,  0. +1.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. -1.j ,\n",
        "         0. -0.j ,  0. +1.j ,  0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  1. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j , -0. +0.j , -1. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -1.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j , -0. +1.j ,\n",
        "         0. -1.j , -0. +0.j ,  0. +0.j ,  0. +1.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +1.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  1. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +1.j ,  0. -0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j , -0. +1.j ,  0. +1.j ,  0. +0.j ,\n",
        "         0. +0.j , -1. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -1. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j , -1. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -1. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. +1.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  1. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j , -0.5+0.j ,  0. -0.j ,  0. -0.5j,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0.5+0.j ,  0. +1.j ,  0. +0.j ,  1. +0.j ,\n",
        "         1. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  1. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j , -0.5+0.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0.5-0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. -1.j , -0. +0.5j,  0. +0.j ,  0.5+0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [ 0. -0.j ,  0. +0.5j,  0. +0.j ,  1. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j , -0.5+0.j ,  0. +0.j ,\n",
        "         1. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0.5+0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. -1.j ,  0.5+0.j ,  0. -0.j ,  0. -0.j , -1. -0.j ,  0. -0.j ,\n",
        "         0. -1.j ,  0. +0.j ,  0. -0.j , -0. +0.5j, -0. +1.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.5j,\n",
        "        -0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.5j,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ],\n",
        "       [-0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +1.j ,  0. -0.5j,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.5j,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.5j,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0.5-0.j , -0. +0.j ,  0. -0.5j, -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0.5-0.j ,  0. -0.j ,  0.5+0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.5j,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j , -0. +0.j ,  1. +0.j ,  0. -1.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +1.j ,  0. +0.5j, -0. +0.j ,  0. -0.5j,  0. -0.j , -0.5+0.j ,\n",
        "        -0. +0.j , -1. -0.j ,  0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -1.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0.5+0.j ,\n",
        "         0. +0.j , -0.5-0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.5j,  0. +0.j ],\n",
        "       [ 0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.5j,\n",
        "         0. -0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0.5+0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0.5+0.j ,\n",
        "        -0.5+0.j ,  0. +0.j , -0. +0.j ,  0.5+0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         1. +0.j ,  0. +0.j ,  0.5+0.j , -0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.5j,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [-0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +1.j ,  0.5+0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  1. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0.5+0.j ,  0.5+0.j ,  1. +0.j ,\n",
        "         0. +0.j , -0. +0.5j, -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0.5-0.j ,  1. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.5j,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.5j,  0. -1.j ,\n",
        "        -0. +1.j , -0. +0.j ,  0. +0.j ],\n",
        "       [-1. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.5j, -0. +0.j ,  0. +0.5j,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0.5+0.j ,  0. -0.j ,  0. -1.j ,\n",
        "         0. +0.j , -0.5+0.j ,  0. +0.5j,  0. +0.j , -0. +0.j ,  0. -1.j ,\n",
        "        -0. +0.5j,  0. +0.j ,  0. -0.5j, -0.5-0.j ,  0. +0.j , -0.5-0.j ,\n",
        "         0.5+0.j , -0.5-0.j ,  0. -0.j ,  0. -0.5j,  0. -0.5j,  0.5+0.j ,\n",
        "         1. +0.j ,  0. +0.j ,  0. +1.j , -1. +0.j ,  0. -0.5j,  0. +0.j ,\n",
        "         1. +0.j , -0. +0.j ,  0. -0.5j,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0.5-0.j ,  0. -0.j ,  0. -0.j ,\n",
        "        -0.5-0.j ,  0.5+0.j , -0.5+0.j ,  0. +0.j ,  0. +1.j ,  0. +0.j ,\n",
        "        -0.5-0.j ,  0. +0.j , -1. -0.j ,  0. -0.5j,  0. -0.j , -0.5+0.j ,\n",
        "         0.5+0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0.5+0.j , -0. +0.j ,  0. +0.5j,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0.5+0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -1. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0.5+0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0.5+0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.5j,  0. +0.j , -0.5+0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.5j,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. +0.j , -0. +0.j , -1. -0.j , -0. +0.j , -0.5-0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0.5+0.j ,  0. -1.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0.5+0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.5j,  0. +1.j ,  1. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.5j,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -1.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.5j,  0. +0.j ,\n",
        "         0. +0.j ,  0. -1.j ,  0. +0.j ],\n",
        "       [-0. +0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -1.j , -0. +0.5j,\n",
        "         0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.5j,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  1. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -0.5j,  0. +0.j , -0. +1.j ,  0. +0.j ,\n",
        "        -0.5+0.j , -0. +0.j ,  0. -0.5j,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +1.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0.5+0.j ,  0. +0.j , -0.5-0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.5j,  0. -0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.5j,  0. -0.j , -0. +0.5j,  0. +0.j ,  0.5+0.j ,\n",
        "        -0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0.5-0.j ,\n",
        "        -0. +0.j , -0.5-0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. -0.5j,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  1. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.5j,\n",
        "        -0. +0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j , -1. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,\n",
        "         0.5+0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0.5-0.j ,\n",
        "         0.5+0.j ,  0. -0.j ,  0. +0.j , -0.5-0.j ,  0. +0.j , -0. +1.j ,\n",
        "        -1. -0.j ,  0. +0.j , -0.5+0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.5j, -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  1. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j , -0. +0.j , -1. +0.j ,  0. +0.j ,  0. -1.j ,  1. +0.j ,\n",
        "        -0. +1.j ,  0.5+0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. -0.j ,  0.5+0.j ,  0.5+0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.5j,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0.5-0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +1.j ,  0. -0.j , -0. +0.5j,\n",
        "         0. +0.j ,  0. -1.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.5j,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [ 1. +0.j , -0. +0.j ,  0. +1.j ,  0. -0.5j, -1. -0.j ,  0. -0.5j,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0.5+0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0.5+0.j ,  0. -0.5j,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.5j,  0. +0.j ,  0. -0.5j, -0.5-0.j , -0. +0.j ,  0.5+0.j ,\n",
        "        -0.5-0.j , -0.5-0.j ,  0. +0.j , -0. +0.5j,  0. -0.5j, -0.5+0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  1. +0.j , -0. +0.5j,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.5j,  0. +0.j ,  0. +0.j , -0. +1.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0.5+0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0.5+0.j , -0.5-0.j , -0.5-0.j ,  1. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0.5+0.j ,  0. +1.j , -1. -0.j ,  0. +0.5j, -0. +0.j ,  0.5+0.j ,\n",
        "        -0.5+0.j ,  1. +0.j ,  0. +0.j ]]), np.array([[ 0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -0.j ,  1. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         1. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +1.j ,\n",
        "         0. -0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. -0.j , -1. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -1. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j , -1. +0.j ,\n",
        "         0. -1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  1. +0.j ,  0. +0.j ],\n",
        "       [-0.5+0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j , -0. +1.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +1.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +1.j ,  0. -1.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j , -0. +1.j , -1. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [-0. +0.j , -0. +0.j , -0. +1.j ,  0. +0.j ,  0. +0.j ,  0. -1.j ,\n",
        "         0. +0.j , -0. +0.j , -1. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -1. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  1. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j , -1. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. -1.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j , -1. +0.j , -0. +0.j , -1. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -1. -0.j , -0. +1.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j , -1. +0.j ,\n",
        "         0. -0.j ,  0. +1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +1.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0.5+0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -1. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  1. +0.j ,  0. -0.j , -1. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "        -1. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. -0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j , -0. +0.j , -1. -0.j ,  1. +0.j , -0. +0.j ,\n",
        "         0. +0.j , -1. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +1.j ,\n",
        "        -0. +1.j , -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  1. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -1.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  1. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -1.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ],\n",
        "       [ 0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -1. -0.j ,  0. -0.j ,  0. -0.j , -0. +1.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. -1.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -1.j ,  0. -1.j ,\n",
        "         1. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  1. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -1.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [ 0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +1.j ,  0. -0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -1.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  1. +0.j ,  0. -1.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j , -1. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. -1.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  1. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j , -1. +0.j , -1. -0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. +0.j ,  0. -1.j ,  0. -1.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -1.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +1.j , -0. +0.j ,  0. +0.j ],\n",
        "       [-0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. -1.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +1.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j , -1. -0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -1.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j ,  1. +0.j ,  0. +0.j ],\n",
        "       [-0.5-0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +1.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j , -0. +1.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  1. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +1.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j , -1. +0.j , -0. +1.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. +1.j ,  0. -0.j , -0. +1.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j , -1. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j , -1. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -1.j ,  0. +0.j ,  0. -1.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j , -1. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -1. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j , -0. +0.j , -0. +1.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         1. +0.j ,  0. +0.j , -1. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +1.j ,\n",
        "        -1. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -1.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +1.j , -0. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [-0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j , -1. -0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +1.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j , -0. +1.j ,  0. +0.j ,  1. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,\n",
        "        -1. -0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -1. +0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.j , -1. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -1.j , -0. +0.j ,  1. +0.j ,\n",
        "         0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +1.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0. +1.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +1.j ,  0. +0.j , -1. -0.j ,  0. +0.j , -1. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +1.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +1.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. -0.j ,  1. +0.j , -0. +0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -1. -0.j ,  0. +0.j ,  0. -0.j , -0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  1. +0.j , -0. +0.j ,  0. +0.j , -1. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  1. +0.j ,\n",
        "        -0. +0.j ,  0. -1.j , -0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j , -1. +0.j , -1. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j ],\n",
        "       [-0.5+0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -1.j ,  1. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -1.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +1.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j , -0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. +0.j ,  0. -1.j ,\n",
        "         1. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  1. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  1. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +1.j ,  0. -0.j , -0. +0.j ,\n",
        "        -1. +0.j ,  0. +0.j ,  0. +0.j ],\n",
        "       [ 0. +0.j ,  0. -1.j ,  0. +0.j ,  0. -1.j ,  0. -0.j , -0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. -1.j , -1. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -1. -0.j ,  0. -0.j ,  1. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,\n",
        "         0. -0.j , -1. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. -1.j ,\n",
        "        -0. +0.j , -1. -0.j ,  0. +0.j ,  0. -0.j , -0. +0.j ,  0. -1.j ,\n",
        "         1. +0.j ,  0. +1.j ,  0. +0.j , -0. +1.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -1.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -1. -0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -1.j ,  0. +0.j ],\n",
        "       [ 0. +0.5j,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,\n",
        "         0. -0.j , -0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "        -0. +0.j , -0. +0.j , -0. +0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. -0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j , -0. +0.j , -0. +0.j ,\n",
        "         0. -0.j , -0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. +0.j ,\n",
        "        -0. +0.j ,  0. +0.j ,  1. +0.j ,  0. -0.j , -0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  1. +0.j ],\n",
        "       [ 0. +0.j ,  0. +0.j ,  1. +0.j ,  0. -0.j ,  0. -0.j , -1. -0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +1.j ,  0. -0.j ,  0. +0.j , -1. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  0. -1.j ,  0. +0.j , -0. +0.j ,\n",
        "        -0. +0.j ,  0. -1.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,  0. +0.j ,\n",
        "        -1. -0.j , -0. +0.j ,  0. +1.j ,  0. -1.j ,  0. -1.j ,  0. +0.j ,\n",
        "        -0. +0.j , -0. +0.j ,  0. +0.j ,  0. -0.j ,  0. -0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j , -0. +1.j ,  0. +0.j , -0. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. +0.j ,  0. -0.j , -1. +0.j ,  1. +0.j ,  0. +0.j ,\n",
        "         0. +0.j ,  0. -0.j ,  0. -1.j ,  0. -0.j ,  0. +0.j ,  0. -0.j ,\n",
        "         0. -0.j ,  0. +0.j ,  0. -0.j ,  1. +0.j ,  0. +0.j , -0. +0.j ,\n",
        "         0. +1.j ,  0. +0.j ,  0. +0.j ]]))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "v4Z044wzeJ2G"
      },
      "outputs": [],
      "source": [
        "#@title Verification\n",
        "n = 3\n",
        "m = 4\n",
        "p = 7\n",
        "rank = 63\n",
        "\n",
        "verify_tensor_decomposition(decomposition_347, n, m, p, rank)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "NeghojDaeJ2G"
      },
      "source": [
        "##Rank-74 decomposition of <3,4,8> over Z\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "vFwEQiTOeJ2G"
      },
      "outputs": [],
      "source": [
        "#@title Data\n",
        "\n",
        "decomposition_348 = (np.array([[ 1., -0.,  0., -0.,  0.,  1.,  0., -1.,  0., -1., -0., -0.,  1.,\n",
        "         1.,  0., -1.,  0., -1., -0., -0.,  0.,  1.,  0.,  1.,  0.,  1.,\n",
        "        -1., -1., -1.,  0., -0.,  0.,  0.,  0.,  0.,  0., -0., -0., -0.,\n",
        "         1.,  1., -1.,  1.,  1.,  0., -0., -0.,  0., -0., -0., -0.,  0.,\n",
        "        -0., -1., -0., -1.,  1., -1.,  0.,  0., -1., -1., -0.,  0., -0.,\n",
        "         1., -1., -1.,  1., -0.,  0., -0.,  0., -1.],\n",
        "       [-0., -0., -0.,  1., -0.,  1., -0.,  0., -1.,  0.,  0., -0.,  1.,\n",
        "         1., -0., -1., -0.,  0., -0.,  0., -0., -0., -0.,  1., -0., -0.,\n",
        "         0.,  0.,  0., -1., -0.,  0.,  0., -0.,  0.,  0., -0., -0., -0.,\n",
        "        -0., -0.,  0.,  1., -0., -0.,  0.,  0., -0., -0., -0.,  0., -0.,\n",
        "         0., -1., -0.,  0., -0., -1.,  0., -0.,  0.,  0., -0.,  0., -0.,\n",
        "         1.,  0.,  0., -0.,  0., -0., -0., -0., -1.],\n",
        "       [-0.,  0.,  0., -0., -0.,  1.,  0., -1.,  0.,  0., -0.,  1., -0.,\n",
        "        -0., -0.,  0.,  0., -1.,  0., -0.,  0., -0., -0.,  1.,  0., -0.,\n",
        "         0.,  0., -1.,  0.,  0., -1.,  0., -0.,  0.,  0.,  0., -0.,  1.,\n",
        "         1., -0., -1.,  1.,  1., -0.,  0., -0.,  0., -0.,  0., -0.,  0.,\n",
        "         0.,  0.,  0., -1.,  1., -1., -0.,  0.,  0.,  0.,  0., -0.,  1.,\n",
        "        -0.,  0., -1.,  1., -0.,  0.,  1.,  0., -1.],\n",
        "       [-1.,  0.,  0.,  1., -0.,  0., -0.,  1., -1., -0., -0.,  0.,  0.,\n",
        "         0.,  0., -0.,  0., -0.,  0.,  0., -0.,  0., -0.,  0.,  1., -1.,\n",
        "        -0.,  1.,  1.,  0., -0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,\n",
        "         0., -1., -0.,  0., -1.,  0.,  0.,  0., -0., -0., -0.,  0.,  0.,\n",
        "        -0., -0.,  0.,  1.,  0., -0.,  0., -0., -0.,  1., -0., -0.,  0.,\n",
        "         0., -0., -0., -1., -0.,  0.,  0.,  0., -0.],\n",
        "       [ 0.,  0.,  0.,  0.,  1.,  0.,  0.,  1.,  0., -0.,  0., -0.,  0.,\n",
        "         0., -0., -0.,  1., -0., -1., -0.,  0.,  0., -0., -1.,  0.,  0.,\n",
        "        -0., -0., -0.,  0., -1.,  1., -0.,  0.,  1., -0.,  0.,  0.,  0.,\n",
        "        -1.,  0.,  1., -1.,  0., -0., -0.,  0.,  1., -1.,  0., -0.,  0.,\n",
        "        -1., -0., -1.,  1.,  0., -0.,  0.,  0., -0., -0., -1.,  0.,  0.,\n",
        "         0., -0.,  1., -1., -0., -0., -0., -0.,  1.],\n",
        "       [-0., -0., -1.,  0., -0.,  0., -1., -0., -0.,  0., -0., -0.,  0.,\n",
        "         0.,  0., -0., -0., -0., -1.,  1., -1., -0.,  0.,  0., -0., -0.,\n",
        "         0.,  0., -0., -0., -1., -0.,  1., -0.,  1., -0., -0., -1.,  0.,\n",
        "         0., -0., -0.,  0., -0.,  0., -0., -0., -0., -1., -1.,  1., -1.,\n",
        "         0., -0., -1., -0., -0., -0., -0., -1.,  0.,  0., -1.,  0.,  0.,\n",
        "         0.,  0., -0.,  0.,  1.,  0., -0.,  0.,  1.],\n",
        "       [-0., -0.,  0., -0., -0.,  0.,  0.,  1.,  0.,  0.,  0.,  0., -0.,\n",
        "        -0.,  0.,  0.,  1.,  1.,  0., -0.,  0., -0.,  0., -1., -0., -0.,\n",
        "         0.,  0.,  1.,  0.,  0.,  1., -0., -0.,  1., -0., -0.,  0., -1.,\n",
        "        -1., -0.,  1., -1.,  0.,  0.,  0.,  0.,  1.,  0.,  0., -0.,  0.,\n",
        "         0.,  0.,  0.,  1.,  0.,  1.,  0.,  0.,  0.,  0.,  0., -1., -1.,\n",
        "        -0.,  0.,  1., -1., -0., -0.,  0., -0.,  1.],\n",
        "       [-0., -0.,  0.,  0., -1.,  0., -1., -1., -0.,  0.,  0.,  0.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  0.,  1., -1.,  0.,  0., -0.,  0., -0.,\n",
        "        -0.,  0.,  0.,  0.,  0.,  0.,  1.,  1.,  0., -0., -0.,  0., -0.,\n",
        "        -0., -0., -1.,  1., -0., -0., -0., -0., -1.,  0., -1., -0.,  0.,\n",
        "        -0., -0., -0., -1.,  0.,  0., -0., -1., -0.,  0.,  0., -0., -0.,\n",
        "         0., -0.,  0., -0., -0., -0.,  0., -0.,  0.],\n",
        "       [ 0.,  0.,  0.,  0.,  0., -0., -0.,  0., -0., -1.,  0., -0.,  1.,\n",
        "         0., -1., -1.,  0.,  0.,  1.,  0., -0.,  1., -1., -0., -0.,  1.,\n",
        "        -0., -1.,  0., -0., -0.,  0., -1.,  0., -1., -1.,  0.,  1.,  0.,\n",
        "        -0., -0.,  0., -0., -0., -1.,  0.,  1.,  0.,  1., -0.,  0., -0.,\n",
        "        -0.,  0., -0.,  0., -0.,  0.,  0., -0.,  0., -1., -0.,  0., -0.,\n",
        "         1., -1.,  0., -0.,  0., -1., -0., -0.,  0.],\n",
        "       [ 0.,  0., -0., -0.,  0., -0.,  1., -0.,  0.,  0., -1.,  0., -0.,\n",
        "        -0.,  0.,  0., -0., -0.,  1., -1., -0., -0.,  0., -0.,  0., -0.,\n",
        "        -0.,  0., -0.,  0.,  1., -0., -1., -0., -1., -1.,  0.,  1.,  0.,\n",
        "         0., -0., -0., -0.,  0.,  0., -1., -0., -0.,  1.,  1., -1.,  1.,\n",
        "         0.,  0.,  1., -0.,  0.,  0., -1.,  1., -0.,  0., -0.,  0.,  0.,\n",
        "         1.,  0., -0.,  0., -1.,  0., -0.,  0.,  0.],\n",
        "       [-1., -1.,  0., -0., -0., -0., -0.,  0., -0.,  0.,  0., -0., -0.,\n",
        "        -1.,  0.,  0.,  0.,  0., -0.,  0.,  0., -0.,  0., -0., -0., -0.,\n",
        "         1.,  0.,  0., -0., -0.,  0., -1.,  0., -1., -1., -1.,  1., -0.,\n",
        "        -0.,  0.,  0., -0., -0.,  0.,  0.,  1.,  0.,  1., -0.,  0., -0.,\n",
        "         0., -0., -0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0., -0., -0.,\n",
        "        -0.,  0.,  0., -0.,  0., -1.,  1., -0.,  0.],\n",
        "       [-0., -0.,  0., -0., -0., -0.,  1., -0.,  0.,  1.,  0., -0.,  0.,\n",
        "        -0., -0.,  1.,  0.,  0., -0.,  0., -0.,  0.,  1., -0., -0., -1.,\n",
        "         0.,  1., -0., -0.,  1.,  0.,  0.,  0., -0., -0., -0.,  0., -0.,\n",
        "        -0.,  0., -0.,  0.,  0., -0., -1., -1., -0.,  0.,  1., -1., -0.,\n",
        "        -0., -0., -0., -0., -0.,  0., -1.,  1.,  0., -0., -0., -0., -0.,\n",
        "         0., -0.,  0.,  0.,  0., -0.,  0., -1.,  0.]], dtype=np.float32), np.array([[ 0., -0., -0., -0., -0., -0., -0., -0.,  0., -0., -0.,  0.,  0.,\n",
        "         0., -0., -0., -0., -1., -0., -0.,  0., -0., -0., -0., -0., -0.,\n",
        "         0.,  0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,  0.,  0., -0.,  1.,\n",
        "        -1.,  0.,  0., -0., -0., -0.,  0.,  0.,  0., -0.,  0., -0., -0.,\n",
        "         0.,  0., -0., -0., -0., -0.,  0., -0., -1., -0., -0., -0., -0.,\n",
        "        -0.,  1., -0., -0., -0.,  0.,  0.,  0.,  0.],\n",
        "       [-0., -0., -0.,  0., -0.,  0.,  0., -0., -0.,  0., -0.,  0., -0.,\n",
        "        -0., -0., -0., -0.,  0.,  1., -0., -0., -1., -0.,  0., -0., -0.,\n",
        "        -0.,  0.,  0., -0.,  0.,  0.,  0., -0., -0., -0.,  0., -0.,  0.,\n",
        "         0.,  0.,  0.,  0., -0., -1.,  0., -0.,  0.,  0.,  0.,  0.,  1.,\n",
        "        -0., -0., -1.,  0.,  0.,  0., -0.,  0., -0., -0.,  0.,  0.,  0.,\n",
        "         0., -0., -0., -0., -0., -0., -0.,  0., -0.],\n",
        "       [ 0.,  0.,  0., -0., -0.,  0.,  0., -0.,  0., -1.,  0., -0.,  0.,\n",
        "        -0., -0.,  0.,  0., -1.,  1.,  1.,  0.,  0.,  1.,  0., -0.,  0.,\n",
        "        -0.,  0.,  0., -0., -1.,  0., -0.,  1., -0., -0., -0.,  0.,  1.,\n",
        "        -1.,  0.,  0., -0.,  0., -0., -0.,  0., -0.,  0.,  0.,  0.,  1.,\n",
        "         0., -0.,  0.,  0.,  0., -0.,  0., -1., -1., -0.,  0., -0.,  0.,\n",
        "         0., -0.,  0., -0., -0., -0., -0.,  0.,  0.],\n",
        "       [-0.,  1.,  0., -0.,  0., -0., -0.,  0.,  0., -0., -0.,  0.,  0.,\n",
        "        -0., -0.,  0., -0., -0., -1.,  0.,  0., -0.,  0., -0.,  0.,  0.,\n",
        "         1., -0., -0.,  0., -0., -0.,  0.,  0.,  0., -0.,  0.,  1., -0.,\n",
        "         0., -0., -0., -0.,  0., -0., -0., -0., -0.,  1., -0., -0., -0.,\n",
        "        -0.,  0., -0., -0.,  0., -0.,  0., -0.,  0.,  0., -0.,  0., -0.,\n",
        "        -0.,  1., -0.,  0.,  1., -1.,  0.,  0.,  0.],\n",
        "       [-0.,  0., -0., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,\n",
        "        -0., -0.,  0.,  0., -1.,  1., -0., -0.,  0., -0.,  0.,  0.,  0.,\n",
        "         0., -0.,  0.,  0., -0.,  0.,  0., -0., -0., -0., -0.,  0.,  1.,\n",
        "        -1., -0., -0.,  0.,  0.,  0., -0., -0.,  0.,  0., -0., -0.,  1.,\n",
        "        -1.,  0., -1., -0.,  0.,  0.,  0., -0.,  0.,  0., -0.,  0., -0.,\n",
        "        -0.,  0., -0.,  0., -0., -0., -0., -0.,  0.],\n",
        "       [ 0.,  0.,  0., -0., -0., -0., -0.,  0.,  0.,  0.,  0., -0.,  0.,\n",
        "        -0.,  1.,  0., -0.,  0.,  1.,  0., -0., -0., -0., -0.,  0.,  0.,\n",
        "         0.,  0., -0.,  0.,  0., -1.,  0., -0., -0., -0., -0., -0., -0.,\n",
        "        -0., -0., -0.,  0.,  0.,  0., -0., -0., -0., -0., -0., -0.,  1.,\n",
        "         0.,  0., -1., -0.,  0., -0.,  0.,  0.,  0.,  0.,  0., -0., -1.,\n",
        "        -0.,  0.,  1.,  0., -0., -0., -0., -0.,  0.],\n",
        "       [-0.,  0.,  0., -0.,  0., -0., -0.,  0.,  0., -0.,  0., -0.,  1.,\n",
        "         0.,  0., -0., -0., -0.,  0.,  0.,  0., -1.,  0., -1., -0.,  0.,\n",
        "         0., -0.,  0.,  1., -0., -0., -0.,  0., -0., -0., -0.,  0., -1.,\n",
        "        -0.,  0.,  0., -0., -0.,  0.,  0., -0., -0.,  0., -0., -0.,  0.,\n",
        "        -0.,  1., -0., -0., -0., -1., -0., -0., -0., -0., -0.,  0.,  0.,\n",
        "         0.,  0., -1., -0.,  0., -0., -0., -0., -0.],\n",
        "       [ 0.,  0., -0., -0.,  0.,  0., -0., -0., -0., -0., -0., -0., -0.,\n",
        "        -0.,  0.,  0., -0., -0.,  0.,  0.,  0., -1.,  0.,  0.,  1., -0.,\n",
        "         0.,  0., -1., -0., -0., -0., -0.,  0., -0., -0., -0., -0., -1.,\n",
        "        -0., -1.,  0., -0.,  0.,  0., -0., -0., -0.,  0., -0., -0.,  0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.,  0., -0., -0.,  1., -0.,  0., -0.,\n",
        "        -0.,  0., -1.,  1.,  0., -0., -0., -0., -0.],\n",
        "       [ 0., -0., -0., -0., -0., -0., -0.,  0., -0., -1., -0., -0., -0.,\n",
        "         0., -0., -1.,  0., -0., -0.,  0.,  1.,  0., -0.,  0., -0.,  0.,\n",
        "         0.,  0., -0., -0.,  0., -0., -0.,  0., -0.,  0.,  0.,  0.,  0.,\n",
        "         1., -0.,  1., -1.,  0., -0.,  1.,  0., -0., -0.,  0., -0.,  0.,\n",
        "        -0., -0., -0.,  0., -0.,  0.,  0., -1., -0., -0., -0., -0., -0.,\n",
        "        -1., -1.,  0.,  0.,  0., -0.,  0.,  0.,  1.],\n",
        "       [ 0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0., -0., -1.,  0., -1.,\n",
        "        -0., -0., -0., -0., -0.,  0.,  0., -0.,  1., -0.,  0.,  0.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  0., -0.,  0., -0., -0.,  0., -0., -0.,\n",
        "        -0.,  0.,  0., -0., -0., -0.,  0.,  0.,  0.,  0., -0.,  0., -1.,\n",
        "        -0., -0., -0., -0.,  0., -0., -0., -0., -0.,  0.,  0.,  0.,  0.,\n",
        "         1., -0.,  0.,  0., -0.,  0., -0., -0., -0.],\n",
        "       [ 0.,  0., -0., -0.,  0.,  0., -0.,  0., -0.,  0.,  0.,  0.,  0.,\n",
        "        -0.,  0.,  0., -0., -0.,  0., -1.,  1., -0.,  0., -0., -0., -0.,\n",
        "        -0.,  0.,  0.,  0., -0.,  0., -0., -1., -0., -0., -0., -0.,  0.,\n",
        "         1.,  0.,  1., -1.,  0., -0., -0.,  0., -0.,  0.,  0., -0., -1.,\n",
        "        -0.,  0., -0., -0.,  0., -0.,  0., -0., -0., -0.,  0., -0.,  0.,\n",
        "         0.,  0., -0., -0.,  0.,  0., -0.,  0.,  1.],\n",
        "       [ 0.,  0.,  0., -0., -0., -0.,  0., -0., -0.,  0., -0.,  0., -0.,\n",
        "        -1.,  0.,  0., -0.,  0., -0., -0., -0.,  0.,  0., -0., -0., -0.,\n",
        "        -1.,  0., -0., -0.,  0.,  0., -0., -0.,  0., -1.,  0., -1.,  0.,\n",
        "         0., -0., -0.,  0.,  0., -0., -0.,  0., -0.,  0., -0., -0.,  0.,\n",
        "         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -0., -0., -0., -0., -0.,\n",
        "        -1., -1.,  0., -0., -1.,  1.,  0., -0.,  0.],\n",
        "       [ 0., -0., -0., -0., -0., -0., -0., -0., -0.,  0.,  0.,  0.,  0.,\n",
        "        -0.,  0.,  0., -0.,  1.,  0.,  0., -0., -0., -0.,  0., -0., -0.,\n",
        "        -0.,  0., -0., -0.,  0.,  0., -0.,  0., -0., -0., -0., -0.,  0.,\n",
        "         1., -0., -0.,  0.,  0.,  0., -0.,  0.,  0.,  0.,  0., -0., -1.,\n",
        "         1.,  0.,  1.,  0., -0.,  1.,  0.,  0.,  0., -0., -1.,  0.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],\n",
        "       [ 0.,  0.,  1., -0.,  0.,  0.,  0., -0., -0.,  0.,  0., -0.,  0.,\n",
        "        -0.,  0.,  0., -0., -0.,  0., -0., -0.,  0.,  0., -1., -0., -0.,\n",
        "        -0.,  0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0.,  0.,\n",
        "         0., -0., -0.,  0.,  0.,  0., -0.,  0., -0., -0.,  0.,  0.,  0.,\n",
        "        -0.,  0., -0.,  0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0., -0.,\n",
        "        -0., -0., -1., -0.,  1.,  0., -0.,  0.,  1.],\n",
        "       [ 0.,  0.,  0.,  0., -0., -0., -0., -0., -0., -0.,  0., -0., -1.,\n",
        "         0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,  1., -0.,  1.,  0., -0.,\n",
        "        -0., -0., -0., -1.,  0., -0., -0., -0.,  0., -0., -0., -0., -0.,\n",
        "         0.,  0.,  0.,  0., -0.,  0.,  0.,  0., -0.,  0.,  0.,  0., -0.,\n",
        "         0.,  0.,  0.,  0., -0., -0., -0., -0., -0.,  0., -0.,  0., -0.,\n",
        "         1., -0.,  1., -0.,  0.,  0., -0.,  0., -1.],\n",
        "       [ 0.,  0., -1., -1., -0., -0., -0.,  0., -0., -0., -0., -0.,  0.,\n",
        "        -0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  1., -1., -0.,\n",
        "        -0.,  1., -0.,  0.,  0., -0., -0.,  0.,  0., -0., -0., -0., -0.,\n",
        "        -0., -0.,  0., -0.,  0.,  0., -0., -0., -0.,  0.,  0., -1., -0.,\n",
        "         0., -0.,  0., -0.,  0.,  0.,  1., -0., -0., -1., -0.,  0.,  0.,\n",
        "        -0.,  0.,  1.,  0.,  0.,  0., -0., -0., -1.],\n",
        "       [-0.,  0., -0., -0., -0., -0., -0., -0.,  0., -0.,  0.,  0.,  0.,\n",
        "         0., -0., -0., -0.,  1.,  0., -0.,  0.,  0.,  0.,  0., -0., -0.,\n",
        "         1.,  0., -0., -0., -0.,  0.,  0., -0.,  0., -0.,  0., -0., -1.,\n",
        "        -0., -0.,  0., -0., -0., -0.,  0.,  0.,  0.,  0.,  0.,  0., -0.,\n",
        "        -0., -0.,  0., -0., -1.,  0.,  0., -0.,  1., -0., -0., -0.,  0.,\n",
        "        -0.,  0.,  0., -0., -0.,  0.,  1.,  0.,  0.],\n",
        "       [-0., -0.,  0.,  0., -0.,  0.,  0.,  0., -0., -0., -0.,  1., -0.,\n",
        "        -0., -1.,  0., -1., -0., -1., -0., -0., -0.,  0.,  0.,  0., -0.,\n",
        "        -0.,  0., -0.,  0., -0.,  1.,  0.,  0., -1.,  0.,  1., -1., -0.,\n",
        "        -0., -0.,  0.,  0., -0., -0., -0., -0.,  0.,  0.,  0.,  0., -1.,\n",
        "        -0.,  0.,  1.,  0.,  0., -0.,  0., -0., -0., -0.,  0.,  0., -0.,\n",
        "         0.,  0., -0., -0., -1., -0., -0.,  0., -0.],\n",
        "       [ 0., -0., -0.,  0.,  0., -0.,  0., -0., -0.,  1.,  0., -0.,  0.,\n",
        "        -0.,  0.,  0.,  0.,  1., -1.,  0.,  0., -0., -1.,  0.,  0.,  0.,\n",
        "        -0., -0., -0.,  0.,  1., -0., -1.,  0., -1.,  0., -0.,  0., -1.,\n",
        "        -0., -0., -1., -0.,  0.,  0.,  0., -0., -1., -0., -0., -0.,  0.,\n",
        "         0.,  0., -0., -0.,  0., -0.,  0.,  1.,  1.,  0.,  0., -0., -0.,\n",
        "         0., -0., -0.,  0.,  0., -0., -0., -0.,  0.],\n",
        "       [-0., -1.,  0., -0.,  0., -0., -0.,  0.,  0.,  0., -0.,  0., -0.,\n",
        "        -0.,  0., -0., -0., -0.,  1., -0.,  0., -0., -0., -0.,  0.,  0.,\n",
        "         0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  1., -0.,  0.,  0.,  0.,\n",
        "        -0.,  0., -0., -0.,  0., -0.,  0., -0., -0., -1., -0., -0., -0.,\n",
        "        -0., -0.,  0., -0.,  0.,  0.,  0.,  0., -0., -0., -0.,  0.,  0.,\n",
        "        -0.,  0., -0.,  0.,  0., -0.,  1., -0., -0.],\n",
        "       [ 0., -0., -0., -0.,  0., -0.,  0.,  0.,  0., -0.,  0., -0.,  0.,\n",
        "         0.,  0.,  0.,  0., -0., -1., -0., -0., -0.,  0.,  0., -0.,  0.,\n",
        "        -0.,  0.,  0.,  0., -0., -0.,  0., -0., -1., -0., -0.,  0., -1.,\n",
        "        -0.,  0.,  0.,  0.,  0., -0., -0.,  0.,  0.,  1., -0.,  0.,  0.,\n",
        "        -0., -0., -0., -0.,  0.,  0.,  0., -0., -0., -0., -0.,  1.,  0.,\n",
        "        -0., -0., -0., -0.,  0.,  0., -0.,  0.,  0.],\n",
        "       [ 0., -0.,  0., -0., -0., -0.,  0.,  0.,  0., -0.,  0., -0.,  0.,\n",
        "         0., -1.,  0., -1., -0., -1.,  0., -0., -0.,  0., -0.,  0.,  0.,\n",
        "        -0.,  0.,  0.,  0., -0.,  1.,  0.,  0., -1.,  0., -0., -1.,  0.,\n",
        "        -0.,  0.,  0.,  0.,  0.,  0., -0., -0.,  0.,  0., -0., -0., -1.,\n",
        "        -0., -0.,  1., -0.,  0.,  0.,  0., -0., -0.,  0.,  0.,  0.,  1.,\n",
        "        -0.,  0.,  0.,  0., -1., -0., -0., -0.,  0.],\n",
        "       [-0., -0., -0.,  0.,  0., -1.,  0.,  0.,  0.,  0.,  0., -0.,  0.,\n",
        "         1.,  0., -0., -0.,  0., -0.,  0.,  0., -0., -0., -0., -0.,  0.,\n",
        "         0., -0., -0.,  0.,  0., -0., -0.,  0., -0., -0., -0., -0.,  1.,\n",
        "        -0., -0., -0., -0., -0., -0.,  0.,  0., -0.,  0., -0., -0.,  0.,\n",
        "        -0., -1., -0., -0., -0.,  1., -0.,  0.,  0.,  0.,  0.,  0., -0.,\n",
        "         0.,  0., -0., -0., -0., -0., -1., -0., -0.],\n",
        "       [ 1., -0., -0., -0.,  0.,  0., -0.,  0.,  0.,  0., -0., -0.,  0.,\n",
        "        -0., -0.,  0., -0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0., -0.,\n",
        "         0.,  0.,  1.,  0.,  0.,  0., -0.,  0., -0., -0., -0., -0.,  1.,\n",
        "         0.,  1., -0., -0.,  1.,  0.,  0., -0., -0.,  0., -0., -0., -0.,\n",
        "        -0.,  0.,  0.,  0., -0., -0.,  0.,  0.,  0.,  0., -0.,  0.,  0.,\n",
        "        -0.,  0., -0.,  0., -0.,  0., -1., -0., -0.],\n",
        "       [-0., -0., -0., -0.,  0.,  0.,  0.,  1., -0.,  1., -0.,  0.,  0.,\n",
        "         0., -0., -0., -0.,  0.,  0., -0.,  0., -0.,  0., -0.,  0.,  1.,\n",
        "        -0., -0.,  0.,  0., -0.,  0.,  0., -0.,  0.,  0., -0., -0., -0.,\n",
        "        -1.,  0., -1., -0., -0.,  0.,  0., -0.,  0., -0., -0., -0., -0.,\n",
        "         0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0.,  0., -0., -0., -0.,\n",
        "        -0.,  1., -0., -0., -0.,  0., -0., -0.,  0.],\n",
        "       [ 0., -0., -0., -0.,  0., -0., -1.,  0.,  0.,  0., -0., -0., -0.,\n",
        "         0.,  0., -0.,  0.,  0., -0.,  1., -0., -1.,  0.,  0., -0.,  0.,\n",
        "         0., -1.,  0., -0., -0., -0., -0., -0.,  0., -0., -0.,  0.,  0.,\n",
        "         0., -0.,  0., -0., -0.,  0.,  0.,  0.,  0., -0., -0., -0.,  1.,\n",
        "         0.,  0.,  0., -0., -0., -0., -0., -0.,  0.,  1.,  0., -0., -0.,\n",
        "         0.,  0., -0.,  0.,  0., -0.,  0., -1., -0.],\n",
        "       [ 0., -0.,  0., -0.,  0.,  0., -1.,  1., -0., -0.,  0., -0.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0., -0.,  1.,  0.,  0., -0.,  0.,  0., -0.,\n",
        "         0.,  0.,  0., -0.,  0., -0.,  0.,  1.,  0., -0.,  0.,  0., -0.,\n",
        "        -1.,  0., -1., -0.,  0.,  0., -0.,  0.,  0., -0.,  0.,  0.,  1.,\n",
        "         0., -0.,  0., -0., -0., -0.,  0., -0.,  0., -0.,  0., -0., -0.,\n",
        "         0., -0.,  0.,  0., -0., -0.,  0.,  0.,  0.],\n",
        "       [ 1., -0.,  0.,  0., -0., -0.,  1., -0., -0., -0., -0., -0.,  0.,\n",
        "        -0., -0.,  0., -0., -0.,  0.,  0.,  0., -0.,  0., -0.,  0., -0.,\n",
        "         1.,  1., -0.,  0.,  0.,  0., -1.,  0., -0., -0., -0.,  1.,  0.,\n",
        "         0.,  0.,  0.,  0., -0.,  0.,  0.,  1.,  0., -0.,  0.,  0., -0.,\n",
        "        -0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0., -0.,  0.,  0.,\n",
        "        -0.,  1., -0., -0.,  1., -1., -0., -0.,  0.],\n",
        "       [ 0., -0., -0., -0., -1.,  0., -1., -0., -0., -0.,  0., -0.,  0.,\n",
        "        -0., -0.,  0.,  0., -1., -0., -0., -0.,  0.,  0.,  0.,  0., -0.,\n",
        "         0.,  0., -1.,  0.,  1., -0., -0., -0.,  0., -0.,  0.,  0., -0.,\n",
        "        -1.,  0.,  0.,  0., -0., -0.,  0.,  0.,  0., -0.,  0., -0.,  1.,\n",
        "        -1., -0., -1.,  1., -0.,  0., -0.,  1., -0., -0., -0., -0.,  0.,\n",
        "        -0.,  0., -0.,  0., -0., -0.,  0.,  0.,  0.],\n",
        "       [ 0., -0.,  0., -0.,  0., -0.,  0., -0., -0., -0.,  0.,  0.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0., -0., -0., -0., -0., -0., -0.,  0., -0.,\n",
        "         0.,  0.,  0.,  0., -0.,  0., -0., -0.,  0., -0.,  0.,  0., -0.,\n",
        "        -0.,  0.,  0.,  0.,  0., -0., -0.,  0.,  0.,  0.,  1.,  1., -0.,\n",
        "         0.,  0.,  0.,  1., -0., -0.,  0.,  0.,  0., -0.,  0.,  0.,  0.,\n",
        "        -0.,  0.,  1., -1., -1., -0., -0.,  0.,  0.],\n",
        "       [ 0., -0.,  0.,  0., -0.,  0., -0., -1., -1.,  0.,  0.,  0.,  1.,\n",
        "        -0., -0.,  1., -0., -0., -0., -0.,  0., -1.,  0., -1., -0., -1.,\n",
        "         0.,  0., -0.,  1.,  0.,  0., -0.,  0.,  0., -0.,  0.,  0.,  0.,\n",
        "        -0., -0., -0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,\n",
        "        -0., -0., -0.,  0., -0.,  0., -0.,  0., -0., -0., -0.,  0.,  0.,\n",
        "         0.,  0., -1., -0., -0., -0.,  0.,  0., -0.],\n",
        "       [-0., -0., -0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0.,  0., -0.,\n",
        "        -0., -0., -0., -0., -0., -0., -0.,  0., -1., -0.,  0.,  1.,  0.,\n",
        "         0., -1.,  0., -0.,  0.,  0., -0.,  0.,  0., -0.,  0.,  0.,  0.,\n",
        "        -0.,  0., -0., -0., -0., -0.,  0.,  0.,  0., -0.,  0., -0., -0.,\n",
        "        -0.,  0., -0., -1.,  0.,  0.,  0.,  0.,  0.,  1., -0., -0.,  0.,\n",
        "        -0.,  0., -1.,  1., -0., -0.,  0.,  0., -0.]], dtype=np.float32), np.array([[-0., -0., -0., -0., -0.,  0.,  0.,  0.,  1., -1.,  0.,  0.,  0.,\n",
        "        -0.,  0.,  1., -0., -0.,  0.,  0.,  0.,  0., -1., -0.,  0., -1.,\n",
        "         0., -0., -0., -0.,  0., -0.,  0.,  0., -0., -0., -0., -0., -0.,\n",
        "        -0., -0.,  0., -0.,  0.,  0.,  0., -0., -0.,  0., -0., -0.,  0.,\n",
        "         0.,  0.,  0., -0., -1., -0., -0., -0.,  1., -0.,  0., -0., -0.,\n",
        "        -0., -0., -0.,  0., -0., -0.,  0., -0., -0.],\n",
        "       [-0., -0.,  0.,  0.,  1.,  0., -0., -0., -0.,  0., -0.,  0.,  0.,\n",
        "        -0.,  0., -0., -0.,  1.,  0.,  0., -0.,  0.,  0., -0., -0.,  0.,\n",
        "        -0., -0., -0., -0., -1.,  0., -0., -1.,  0.,  0.,  0.,  0.,  0.,\n",
        "         1.,  0.,  1., -0., -0.,  0., -1.,  0., -0., -0., -0.,  0., -0.,\n",
        "        -1.,  0., -0., -0., -1., -0., -0.,  1., -0.,  0., -0., -0.,  0.,\n",
        "         0.,  0., -0.,  0.,  0.,  0.,  0., -0.,  0.],\n",
        "       [ 0.,  0., -0.,  0., -0., -0., -0.,  0.,  0.,  1.,  0., -0., -0.,\n",
        "         0.,  0., -0.,  0., -0.,  0.,  0., -0., -0.,  1.,  0.,  0., -0.,\n",
        "         1.,  0.,  0., -0.,  0., -0.,  0.,  0., -0., -0., -0., -0.,  0.,\n",
        "        -0., -0., -0., -0.,  0., -0., -1., -0.,  0.,  0., -0., -0.,  0.,\n",
        "         0., -0.,  0.,  0.,  0.,  0., -0., -0., -1.,  0.,  0.,  0., -0.,\n",
        "        -0., -1.,  0., -0., -0., -1.,  0., -0., -0.],\n",
        "       [ 0.,  0.,  0., -0., -0.,  0., -0.,  0.,  0.,  0., -0.,  1., -1.,\n",
        "         0., -0., -0., -0.,  0.,  0., -0.,  0., -1.,  0., -0., -1.,  0.,\n",
        "         0., -0., -0., -1., -0., -0., -0.,  0.,  0.,  0., -0.,  0., -0.,\n",
        "         0., -0.,  0., -0., -0., -1., -0., -0., -0., -0.,  0.,  0., -0.,\n",
        "         0., -0., -0., -0., -0., -0.,  0.,  0., -0.,  1., -0., -0., -0.,\n",
        "         0., -0., -0.,  0.,  0.,  0., -0.,  0.,  0.],\n",
        "       [-0., -0., -0.,  0.,  0., -0.,  0., -0., -0.,  0.,  1.,  1.,  0.,\n",
        "        -0.,  0.,  0., -0., -0., -0.,  1., -0.,  0., -0.,  0.,  0.,  0.,\n",
        "        -0.,  0.,  0.,  0.,  0.,  1.,  0., -1., -0., -0.,  0., -0.,  0.,\n",
        "        -0.,  0., -0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -0., -0.,  1.,\n",
        "        -1.,  0.,  1.,  0.,  0.,  0., -0., -0.,  0., -0.,  0.,  0.,  1.,\n",
        "         0.,  0.,  0., -0., -0., -0.,  0., -0., -0.],\n",
        "       [-0.,  0., -0., -0., -0.,  0., -0.,  0.,  0., -0.,  1., -0., -0.,\n",
        "        -0., -0.,  0.,  0.,  0.,  0., -0., -0., -0.,  0., -0., -0.,  0.,\n",
        "        -0., -0., -0., -0.,  0., -0.,  0.,  0.,  0., -0., -1., -0., -0.,\n",
        "         0.,  0.,  0., -0., -0.,  1.,  0., -0., -0.,  0.,  0., -0., -0.,\n",
        "         0.,  0., -0., -0., -0., -0., -0., -0.,  0.,  0.,  0., -0., -0.,\n",
        "         0.,  0., -0.,  0., -0.,  0., -0.,  1.,  0.],\n",
        "       [ 0.,  0., -0.,  0.,  0.,  0., -0.,  1.,  0.,  1., -0.,  0., -0.,\n",
        "         0.,  0., -1., -0.,  0.,  0.,  0.,  0., -0.,  1., -0., -0.,  1.,\n",
        "         0.,  0., -0., -0., -0., -0.,  0., -0., -0., -0., -0., -0., -0.,\n",
        "        -0., -0.,  1., -1., -0., -0., -0., -0., -1.,  0., -0.,  0., -0.,\n",
        "         0., -0., -0., -0., -0., -0.,  0.,  0.,  0.,  0.,  0., -0., -0.,\n",
        "         0., -0., -0.,  0.,  0., -0., -0., -0., -0.],\n",
        "       [-0., -0.,  0., -0., -1.,  0.,  0., -0., -0., -0.,  0.,  0.,  0.,\n",
        "        -0., -0.,  0.,  0.,  0., -0., -0., -1.,  0., -0., -0.,  0., -0.,\n",
        "        -0., -0., -0.,  0.,  1.,  0., -0.,  1., -0., -0.,  0., -0.,  0.,\n",
        "         0.,  0.,  0.,  0., -0.,  0.,  1.,  0., -1.,  0.,  0., -0.,  0.,\n",
        "        -0.,  0.,  0., -0., -0., -0.,  0., -1.,  0., -0.,  0., -0.,  0.,\n",
        "         0.,  0., -0.,  0., -0.,  0.,  0.,  0.,  0.],\n",
        "       [ 0.,  0., -0.,  0.,  0.,  0., -1.,  0.,  0.,  0.,  0., -0., -0.,\n",
        "         0.,  0., -0., -0., -0.,  0.,  1., -1., -0., -1., -0.,  0.,  0.,\n",
        "         0.,  0.,  0., -0., -0., -0.,  1., -0.,  0., -0., -0., -0., -0.,\n",
        "        -0., -0.,  0., -0.,  0., -0.,  1., -1.,  0.,  0., -0.,  0., -0.,\n",
        "         0., -0.,  0., -0.,  0., -0.,  0., -1., -0.,  0.,  0., -0., -0.,\n",
        "        -0., -0.,  0.,  0., -0., -0., -0., -1., -0.],\n",
        "       [-1., -1.,  0.,  0., -0., -1.,  0., -0.,  0., -0.,  0.,  0.,  0.,\n",
        "        -1.,  0.,  0.,  0., -0., -0., -0.,  0.,  0., -0.,  0., -0., -0.,\n",
        "        -1.,  0.,  0., -0.,  0.,  0.,  0., -0., -0., -0., -0., -0.,  0.,\n",
        "         0.,  0., -0.,  0.,  1.,  0.,  0., -0.,  0.,  0., -0., -0., -0.,\n",
        "        -0.,  0.,  0., -0.,  1.,  0.,  0.,  0.,  0., -0., 
Download .txt
gitextract_avi_5b8y/

├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
└── mathematical_results.ipynb
Condensed preview — 5 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,367K chars).
[
  {
    "path": ".gitignore",
    "chars": 263,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# Distribution / packaging\n.Python\nbuild/\ndev"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 970,
    "preview": "# How to Contribute\n\n## Contributor License Agreement\n\nContributions to this project must be accompanied by a Contributo"
  },
  {
    "path": "LICENSE",
    "chars": 11358,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "README.md",
    "chars": 2904,
    "preview": "# Results of AlphaEvolve\n\nThis repository accompanies the technical report\n\n> Novikov et al.\n[AlphaEvolve: A coding agen"
  },
  {
    "path": "mathematical_results.ipynb",
    "chars": 1311034,
    "preview": "{\n  \"cells\": [\n    {\n      \"cell_type\": \"markdown\",\n      \"metadata\": {\n        \"id\": \"bC4Vo85hPHfn\"\n      },\n      \"sou"
  }
]

About this extraction

This page contains the full source code of the google-deepmind/alphaevolve_results GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5 files (1.3 MB), approximately 648.8k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!