commit 389e75d9f9ec6df21ba0f711bba3468404f503e1 Author: Miroslav Urbanek <mu@miroslavurbanek.com> Date: Sun, 28 Jun 2015 00:25:05 +0200 Import the initial code Diffstat:
COPYING | | | 674 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
README | | | 113 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
asdf.conf | | | 3 | +++ |
conf.lisp | | | 19 | +++++++++++++++++++ |
contrib/openblas-0.2.6.patch | | | 57 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
examples/balancer.lisp | | | 151 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
examples/mpi.lisp | | | 31 | +++++++++++++++++++++++++++++++ |
examples/revivals.lisp | | | 145 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
examples/trotzky.lisp | | | 148 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
outputs/balancer | | | 203 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
outputs/mpi | | | 5 | +++++ |
outputs/revivals | | | 103 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
outputs/trotzky | | | 103 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
run | | | 17 | +++++++++++++++++ |
states/revivals-l-11-n-11/metadata | | | 1 | + |
states/revivals-l-11-n-11/tensor.0 | | | 89 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.1 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.10 | | | 89 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.2 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.3 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.4 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.5 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.6 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.7 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.8 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals-l-11-n-11/tensor.9 | | | 430 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/revivals.lisp | | | 161 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
states/trotzky-l-21-n-7/metadata | | | 1 | + |
states/trotzky-l-21-n-7/tensor.0 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.1 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.10 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.11 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.12 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.13 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.14 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.15 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.16 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.17 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.18 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.19 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.2 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.20 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.3 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.4 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.5 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.6 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.7 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.8 | | | 23 | +++++++++++++++++++++++ |
states/trotzky-l-21-n-7/tensor.9 | | | 23 | +++++++++++++++++++++++ |
states/trotzky.lisp | | | 59 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/array.lisp | | | 210 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/bhm.lisp | | | 194 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/blas.lisp | | | 124 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/exp.lisp | | | 69 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/mpi.lisp | | | 242 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/mps.lisp | | | 192 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/part.lisp | | | 171 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/serial.lisp | | | 237 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/tebd.lisp | | | 281 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/tebdol.asd | | | 21 | +++++++++++++++++++++ |
tebdol/tensor.lisp | | | 737 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tebdol/util.lisp | | | 57 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
62 files changed, 9060 insertions(+), 0 deletions(-)
diff --git a/COPYING b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/README b/README @@ -0,0 +1,113 @@ +1. INTRODUCTION + +TEBDOL is a program for calculating time evolution of a system of +ultracold atoms in an optical lattice. It utilizes the time-evolving +block decimation algorithm (TEBD). It is written in Common Lisp and +supports parallelization using MPI. + +2. INSTALLATION + +TEBDOL has following dependencies: + +* SBCL + + SBCL is an ANSI Common Lisp compiler. Source and binaries are + available at http://sbcl.org/. TEBDOL was tested with version 1.2.3. + +* BLAS and LAPACK + + BLAS and LAPACK libraries provide vector and matrix routines. There + are several vendor-provided implementations available. TEBDOL was + tested with OpenBLAS 0.2.6, which can be download at + http://www.openblas.net/. Due to a numerical bug in LAPACK, a patch + in the file "contrib/openblas-0.2.6.patch" has to be applied to this + version of OpenBLAS. TEBDOL should also work with Intel MKL. + +* MPI + + MPI provides support for parallelization. TEBDOL was tested with + OpenMPI 1.4.3. + +After installing SBCL, BLAS/LAPACK, and MPI, you'll need to edit the +parameters in the script "run" in the top-level directory: + +* LD_LIBRARY_PATH Path to directories with BLAS/LAPACK and MPI + libraries. +* SBCL Path to the SBCL binary. +* DSS Maximum amount of memory allocated for a single + SBCL process. + +You'll probably also need to edit the file "conf.lisp", where you can +specify the name of the BLAS/LAPACK library and switch MPI +implementation between OpenMPI and MPICH. + +3. USAGE + +There are several examples in the directory "examples": + +* Test of the MPI communication ("mpi.lisp"). + + $ mpirun -n 4 ./run examples/mpi.lisp + +* Phase revival example ("revivals.lisp"). + + An initial state can be created with a command: + + $ ./run states/revivals.lisp + + Time evolution is then calculated with a command: + + $ ./run examples/revivals.lisp + + To run TEBDOL in 4 processes in parallel you can run the script + using mpirun: + + $ mpirun -n 4 ./run examples/revivals.lisp + + If you're running it on a single machine you should limit the number + of BLAS/LAPACK threads: + + $ OMP_NUM_THREADS=1 mpiexec -n 4 ./run examples/revivals.lisp + +* Load balancer example ("balancer.lisp"). + + This is the same calculation as a previous one. The source code + shows how to use the load balancer. + +* Equilibration example ("trotzky.lisp"). + + This example simulates time evolution of a model from an article + [1]. Usage is similar to previous examples: + + $ ./run states/trotzky.lisp + $ ./run examples/trotzky.lisp + +The sample outputs are in the directory "outputs". + +4. FILES + +asdf.conf: A configuration file for Another System Definition Facility. +conf.lisp: Basic program configuration. +run: Main execution script. +contrib/openblas-0.2.6.patch: Patch for a bug in OpenBLAS 0.2.6. +examples/*: Example calculations. +outputs/*: Sample outputs of the examples. +states/*: Programs for creating initial states and their outputs. +tebdol/array.lisp: Array tensor routines. +tebdol/bhm.lisp: Bose-Hubbard model. +tebdol/blas.lisp: Interface to BLAS and LAPACK. +tebdol/exp.lisp: Tensor exponential. +tebdol/mpi.lisp: Interface to MPI. +tebdol/mps.lisp: Routines for working with matrix product states. +tebdol/part.lisp: Partitioning routines including a load balancer. +tebdol/serial.lisp: Serialization routines. +tebdol/tebd.lisp: Time-evolving block decimation algorithm. +tebdol/tebdol.asd: System definition. +tebdol/tensor.lisp: Symmetric tensor routines. +tebdol/util.lisp: Miscellaneous utilities. + +5. REFERENCES + +[1] Trotzky S. et al. Probing the relaxation towards equilibrium in an +isolated strongly correlated one-dimensional Bose gas. Nature Phys. 8, +325–330 (2012). doi:10.1038/nphys2232 diff --git a/asdf.conf b/asdf.conf @@ -0,0 +1,3 @@ +(:source-registry + (:directory (:here "tebdol")) + :inherit-configuration) diff --git a/conf.lisp b/conf.lisp @@ -0,0 +1,19 @@ +(declaim (optimize (debug 0) (speed 3) (safety 0) (compilation-speed 0))) + +;; BLAS and LAPACK implementation + +(load-shared-object "libopenblas.so") +;; (load-shared-object "libmkl_rt.so") ;; mkl + +;; MPI implementation + +(push :openmpi *features*) +;; (push :mpich *features*) + +(load-shared-object "libmpi.so") + +(require :asdf) +(asdf:initialize-source-registry + '(:source-registry + (:include (:here "asdf.conf")) + :ignore-inherited-configuration)) diff --git a/contrib/openblas-0.2.6.patch b/contrib/openblas-0.2.6.patch @@ -0,0 +1,57 @@ +diff --git a/Makefile.rule b/Makefile.rule +index 4e23857..8ea235e 100644 +--- a/Makefile.rule ++++ b/Makefile.rule +@@ -105,7 +105,7 @@ VERSION = 0.2.6 + # If any gemm arguement m, n or k is less or equal this threshold, gemm will be execute + # with single thread. You can use this flag to avoid the overhead of multi-threading + # in small matrix sizes. The default value is 50. +-# GEMM_MULTITHREAD_THRESHOLD = 50 ++# GEMM_MULTITHREAD_THRESHOLD = 4 + + # If you need santy check by comparing reference BLAS. It'll be very + # slow (Not implemented yet). +diff --git a/Makefile.system b/Makefile.system +index fc89d2d..ab9ead0 100644 +--- a/Makefile.system ++++ b/Makefile.system +@@ -53,7 +53,7 @@ GETARCH_FLAGS += -DUSE64BITINT + endif + + ifndef GEMM_MULTITHREAD_THRESHOLD +-GEMM_MULTITHREAD_THRESHOLD=50 ++GEMM_MULTITHREAD_THRESHOLD=4 + endif + GETARCH_FLAGS += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD) + +diff --git a/c_check b/c_check +index 4d82237..f26fce2 100644 +--- a/c_check ++++ b/c_check +@@ -241,7 +241,7 @@ print CONFFILE "#define FUNDERSCORE\t$need_fu\n" if $need_fu ne ""; + + if ($os eq "LINUX") { + +- @pthread = split(/\s+/, `nm /lib/libpthread.so* | grep _pthread_create`); ++ @pthread = split(/\s+/, `nm /lib/*-linux-gnu/libpthread.so* | grep _pthread_create`); + + if ($pthread[2] ne "") { + print CONFFILE "#define PTHREAD_CREATE_FUNC $pthread[2]\n"; +diff --git a/kernel/x86/lsame.S b/kernel/x86/lsame.S +index d7e48ad..3ac7a73 100644 +--- a/kernel/x86/lsame.S ++++ b/kernel/x86/lsame.S +@@ -74,11 +74,11 @@ + #else + movl %eax, %ecx + subl $32, %ecx +- cmovg %ecx, %eax ++ cmovge %ecx, %eax + + movl %edx, %ecx + subl $32, %ecx +- cmovg %ecx, %edx ++ cmovge %ecx, %edx + + subl %eax, %edx + movl $0, %eax diff --git a/examples/balancer.lisp b/examples/balancer.lisp @@ -0,0 +1,151 @@ +;; load balancing example + +;; parameters + +(defparameter *state* #p"states/revivals-l-11-n-11/") + +(defparameter *j* 1/25) ;; *u* = 1 + +(defparameter *maxdim* 100) + +;; libraries + +(load "conf.lisp") +(require :tebdol) + +(use-package '(:blas :tensor :mpi :part :mps :tebd :bhm)) +(setf *print-level* 2) + +;; hamiltonian + +(defun make-hamiltonian (dimension length j) + (loop + with h = (bose-hubbard-site-hamiltonian dimension j 1 0) + with m = (make-array length) + for i from 1 below (1- length) + do + (setf (svref m i) h) + finally + (setf (svref m 0) (tensor-contract (left-open-boundary-tensor h) 1 h 0)) + (setf (svref m (1- length)) (tensor-contract h 3 (right-open-boundary-tensor h) 0)) + (return m))) + +;; +;; bose-hubbard quasimomentum +;; +;; -1 0 0 1 +;; +;; +------+ +;; -1 | b+ 0 | 1 +;; +----+------+----+ +;; 0 | 0 | 1 0 | 0 | +;; 0 | b+ | n 1 | b- | +;; +----+------+----+ +;; 1 1 | b- 0 | +;; +------+ +;; + +(defun site-quasimomentum (dimension q i) + (let ((ops (list + (cons '0 #'(lambda (n) (declare (ignore n)) 0)) + (cons '1 #'(lambda (n) (declare (ignore n)) 1)) + (cons 'b- #'(lambda (n) (* (exp (* +blas-i+ q i)) (sqrt n)))) + (cons 'b+ #'(lambda (n) (* (exp (* -1 +blas-i+ q i)) (sqrt (1+ n))))) + (cons 'n #'(lambda (n) n)))) + (tbl (flet ((f (x y z) + (cons (list (make-subscript + :numbers (list (first x)) + :subscript (second x)) + (make-subscript + :numbers (list (first y)) + :subscript (second y))) + z))) + (list + (f '(-1 0) '( 0 0) 'b+) + (f '(-1 0) '( 1 0) '1) + (f '( 0 0) '( 0 0) '1) + (f '( 0 1) '(-1 0) 'b+) + (f '( 0 1) '( 0 0) 'n) + (f '( 0 1) '( 0 1) '1) + (f '( 0 1) '( 1 0) 'b-) + (f '( 1 0) '(-1 0) '1) + (f '( 1 0) '( 0 0) 'b-))))) + (let ((l (list (make-segment :numbers '(-1) :dimension 1) + (make-segment :numbers '(0) :dimension 2) + (make-segment :numbers '(1) :dimension 1)))) + (functional-tensor + (list l (ket-physical-index dimension) (bra-physical-index dimension) l) + #'(lambda (s) + (let ((x (find + (list (first s) (fourth s)) + tbl + :test #'equalp + :key #'car))) + (if x + (funcall (cdr (find (cdr x) ops :key #'car)) + (- (first (subscript-numbers (third s))))) + 0))))))) + +(defun make-quasimomentum-mpo (dimension length q) + (loop + with m = (make-array length) + for i from 1 below (1- length) + do + (setf (svref m i) (site-quasimomentum dimension q (+ i (- 1/2 (/ length 2))))) + finally + (let ((o (site-quasimomentum dimension q (- 1/2 (/ length 2))))) + (setf (svref m 0) (tensor-contract (left-open-boundary-tensor o) 1 o 0))) + (let ((o (site-quasimomentum dimension q (- (/ length 2) 1/2)))) + (setf (svref m (1- length)) (tensor-contract o 3 (right-open-boundary-tensor o) 0))) + (return m))) + +;; initialization + +(mpi-init) + +(defparameter *rank* (mpi-comm-rank *mpi-comm-world*)) +(defparameter *size* (mpi-comm-size *mpi-comm-world*)) + +(defparameter *length* (state-parameter *state* :model-length)) +(defparameter *particles* (state-parameter *state* :particle-number)) +(defparameter *dimension* (state-parameter *state* :site-dimension)) + +(defparameter *partition* (uniform-partition *size* *length*)) + +(defparameter *mps* (load-state *rank* *partition* *state*)) +(defparameter *mph* (make-hamiltonian *dimension* *length* *j*)) +(defparameter *mpq* (make-quasimomentum-mpo *dimension* *length* 0)) + +(defparameter *count* 100) +(defparameter *step* (/ (* 5 pi) *count*)) +(defparameter *propagator* (make-mph-propagator *mph* *step*)) + +(when (zerop *rank*) + (format + t + "# processes = ~a; length = ~a; particles = ~a; maxdim = ~a; j = ~f;~%" + *size* *length* *particles* *maxdim* *j*) + (format t "# time n(quasimomentum=0;time) norm~%")) + +(mps-prepare *rank* *length* *mps* *maxdim*) + +;; main loop + +(loop for i from 0 to *count* do + (let ((q (realpart (mps-expectation-value *size* *rank* *length* *mpq* *mps*))) + (n (realpart (mps-overlap *size* *rank* *length* *mps* *mps*)))) + (if (= *rank* (1- *size*)) + (format t "~,2f ~f ~f~%" + (/ (* i *step*) pi) + (/ q n *length*) + (sqrt n)))) + (when (< i *count*) + (let ((subwt (make-array (submps-size *mps*) :initial-element 0))) + (tebd-evolve *rank* *length* *propagator* *mps* *maxdim* :subwt subwt) + (let ((p (balance-partition *size* *rank* (coerce subwt 'list)))) + (when (zerop *rank*) + (format *error-output* "new partition = ~a~%" p)) + (setf *mps* (change-partition *size* *rank* *length* *mps* *partition* p)) + (setf *partition* p))))) + +(mpi-finalize) diff --git a/examples/mpi.lisp b/examples/mpi.lisp @@ -0,0 +1,31 @@ +;; pass ranks from one process to another and calculate their sum + +(load "conf.lisp") +(require :tebdol) + +(use-package '(:sb-sys :mpi)) + +(defun mpi-pass (out prev next) + (without-gcing + (let ((request (mpi-issend-object out next)) + (in (mpi-receive-object prev))) + (mpi-wait request) + in))) + +(mpi-init) + +(let* ((rank (mpi-comm-rank *mpi-comm-world*)) + (size (mpi-comm-size *mpi-comm-world*)) + (prev (mod (1- rank) size)) + (next (mod (1+ rank) size))) + (if (zerop rank) + (format t "There ~:[are ~a processes~;is ~a process~] running.~%" (eq size 1) size)) + (format t + "Sum of ranks in process ~a is ~a.~%" + rank + (loop + repeat size + for value = rank then (mpi-pass value prev next) + sum value))) + +(mpi-finalize) diff --git a/examples/revivals.lisp b/examples/revivals.lisp @@ -0,0 +1,145 @@ +;; phase revivals in an optical lattice + +;; parameters + +(defparameter *state* #p"states/revivals-l-11-n-11/") + +(defparameter *j* 1/25) ;; *u* = 1 + +(defparameter *maxdim* 100) + +;; libraries + +(load "conf.lisp") +(require :tebdol) + +(use-package '(:blas :tensor :mpi :part :mps :tebd :bhm)) +(setf *print-level* 2) + +;; hamiltonian + +(defun make-hamiltonian (dimension length j) + (loop + with h = (bose-hubbard-site-hamiltonian dimension j 1 0) + with m = (make-array length) + for i from 1 below (1- length) + do + (setf (svref m i) h) + finally + (setf (svref m 0) (tensor-contract (left-open-boundary-tensor h) 1 h 0)) + (setf (svref m (1- length)) (tensor-contract h 3 (right-open-boundary-tensor h) 0)) + (return m))) + +;; +;; bose-hubbard quasimomentum +;; +;; -1 0 0 1 +;; +;; +------+ +;; -1 | b+ 0 | 1 +;; +----+------+----+ +;; 0 | 0 | 1 0 | 0 | +;; 0 | b+ | n 1 | b- | +;; +----+------+----+ +;; 1 1 | b- 0 | +;; +------+ +;; + +(defun site-quasimomentum (dimension q i) + (let ((ops (list + (cons '0 #'(lambda (n) (declare (ignore n)) 0)) + (cons '1 #'(lambda (n) (declare (ignore n)) 1)) + (cons 'b- #'(lambda (n) (* (exp (* +blas-i+ q i)) (sqrt n)))) + (cons 'b+ #'(lambda (n) (* (exp (* -1 +blas-i+ q i)) (sqrt (1+ n))))) + (cons 'n #'(lambda (n) n)))) + (tbl (flet ((f (x y z) + (cons (list (make-subscript + :numbers (list (first x)) + :subscript (second x)) + (make-subscript + :numbers (list (first y)) + :subscript (second y))) + z))) + (list + (f '(-1 0) '( 0 0) 'b+) + (f '(-1 0) '( 1 0) '1) + (f '( 0 0) '( 0 0) '1) + (f '( 0 1) '(-1 0) 'b+) + (f '( 0 1) '( 0 0) 'n) + (f '( 0 1) '( 0 1) '1) + (f '( 0 1) '( 1 0) 'b-) + (f '( 1 0) '(-1 0) '1) + (f '( 1 0) '( 0 0) 'b-))))) + (let ((l (list (make-segment :numbers '(-1) :dimension 1) + (make-segment :numbers '(0) :dimension 2) + (make-segment :numbers '(1) :dimension 1)))) + (functional-tensor + (list l (ket-physical-index dimension) (bra-physical-index dimension) l) + #'(lambda (s) + (let ((x (find + (list (first s) (fourth s)) + tbl + :test #'equalp + :key #'car))) + (if x + (funcall (cdr (find (cdr x) ops :key #'car)) + (- (first (subscript-numbers (third s))))) + 0))))))) + +(defun make-quasimomentum-mpo (dimension length q) + (loop + with m = (make-array length) + for i from 1 below (1- length) + do + (setf (svref m i) (site-quasimomentum dimension q (+ i (- 1/2 (/ length 2))))) + finally + (let ((o (site-quasimomentum dimension q (- 1/2 (/ length 2))))) + (setf (svref m 0) (tensor-contract (left-open-boundary-tensor o) 1 o 0))) + (let ((o (site-quasimomentum dimension q (- (/ length 2) 1/2)))) + (setf (svref m (1- length)) (tensor-contract o 3 (right-open-boundary-tensor o) 0))) + (return m))) + +;; initialization + +(mpi-init) + +(defparameter *rank* (mpi-comm-rank *mpi-comm-world*)) +(defparameter *size* (mpi-comm-size *mpi-comm-world*)) + +(defparameter *length* (state-parameter *state* :model-length)) +(defparameter *particles* (state-parameter *state* :particle-number)) +(defparameter *dimension* (state-parameter *state* :site-dimension)) + +(defparameter *partition* (uniform-partition *size* *length*)) + +(defparameter *mps* (load-state *rank* *partition* *state*)) +(defparameter *mph* (make-hamiltonian *dimension* *length* *j*)) +(defparameter *mpq* (make-quasimomentum-mpo *dimension* *length* 0)) + +(defparameter *count* 100) +(defparameter *step* (/ (* 5 pi) *count*)) +(defparameter *propagator* (make-mph-propagator *mph* *step*)) + +(when (zerop *rank*) + (format + t + "# processes = ~a; length = ~a; particles = ~a; maxdim = ~a; j = ~f;~%" + *size* *length* *particles* *maxdim* *j*) + (format t "# time n(quasimomentum=0;time) norm~%")) + +(mps-prepare *rank* *length* *mps* *maxdim*) + +;; main loop + +(loop for i from 0 to *count* do + (let ((q (realpart (mps-expectation-value *size* *rank* *length* *mpq* *mps*))) + (n (realpart (mps-overlap *size* *rank* *length* *mps* *mps*)))) + (if (= *rank* (1- *size*)) + (format t "~,2f ~f ~f~%" + (/ (* i *step*) pi) + (/ q n *length*) + (sqrt n)))) + (when (< i *count*) + (tebd-evolve *rank* *length* *propagator* *mps* *maxdim*))) + +(mpi-finalize) diff --git a/examples/trotzky.lisp b/examples/trotzky.lisp @@ -0,0 +1,148 @@ +;; equilibration in an optical lattice + +;; parameters + +(defparameter *state* #p"states/trotzky-l-21-n-7/") + +(defparameter *j* 4.1d-1) +(defparameter *k* 4.1d-3) + +(defparameter *maxdim* 100) + +;; libraries + +(load "conf.lisp") +(require :tebdol) + +(use-package '(:tensor :mpi :part :mps :tebd :bhm)) +(setf *print-level* 2) + +;; hamiltonian + +(defun make-hamiltonian (dimension length j k) + (loop + with c = (/ (1- length) 2) + with m = (make-array length) + for i from (1+ (- c)) below 0 + do + (let ((o (bose-hubbard-site-hamiltonian dimension j 1 (* 1/2 k i i)))) + (setf (svref m (+ c i)) o + (svref m (- c i)) o)) + finally + (setf (svref m c) (bose-hubbard-site-hamiltonian dimension j 1 (* 1/2 k 0 0))) + (let ((o (bose-hubbard-site-hamiltonian dimension j 1 (* 1/2 k c c)))) + (setf (svref m 0) (tensor-contract (left-open-boundary-tensor o) 1 o 0)) + (setf (svref m (1- length)) (tensor-contract o 3 (right-open-boundary-tensor o) 0))) + (return m))) + +;; odd particle number operator +;; +;; 0 0 +;; +------+ +;; 0 | 1 0 | +;; 0 | n 1 | +;; +------+ +;; +;; 0 0 +;; +------+ +;; 0 | 1 0 | +;; 0 | 0 1 | +;; +------+ + +(defun site-operator (dimension type) + (let ((ops (list + (cons '1 #'(lambda (n) (declare (ignore n)) 1)) + (cons 'n #'(lambda (n) n)))) + (tbl (flet ((f (x y z) + (cons (list (make-subscript + :numbers (list (first x)) + :subscript (second x)) + (make-subscript + :numbers (list (first y)) + :subscript (second y))) + z))) + (case type + (:identity + (list + (f '(0 0) '(0 0) '1) + (f '(0 1) '(0 1) '1))) + (:particle-number + (list + (f '(0 0) '(0 0) '1) + (f '(0 1) '(0 0) 'n) + (f '(0 1) '(0 1) '1))))))) + (let ((l (list (make-segment :numbers '(0) :dimension 2)))) + (functional-tensor + (list l (ket-physical-index dimension) (bra-physical-index dimension) l) + #'(lambda (s) + (let ((x (find + (list (first s) (fourth s)) + tbl + :test #'equalp + :key #'car))) + (if x + (funcall (cdr (find (cdr x) ops :key #'car)) + (- (first (subscript-numbers (third s))))) + 0))))))) + +(defun make-particle-number-mpo (dimension length function) + (loop + with c = (/ (1- length) 2) + with m = (make-array length) + with e = (site-operator dimension :identity) + with p = (site-operator dimension :particle-number) + for i from (1+ (- c)) to (1- c) + do + (setf (svref m (+ i c)) + (if (funcall function i) p e)) + finally + (let ((o (if (funcall function (- c)) p e))) + (setf (svref m 0) (tensor-contract (left-open-boundary-tensor o) 1 o 0))) + (let ((o (if (funcall function c) p e))) + (setf (svref m (1- length)) (tensor-contract o 3 (right-open-boundary-tensor o) 0))) + (return m))) + +;; initialization + +(mpi-init) + +(defparameter *rank* (mpi-comm-rank *mpi-comm-world*)) +(defparameter *size* (mpi-comm-size *mpi-comm-world*)) + +(defparameter *length* (state-parameter *state* :model-length)) +(defparameter *particles* (state-parameter *state* :particle-number)) +(defparameter *dimension* (state-parameter *state* :site-dimension)) + +(defparameter *partition* (uniform-partition *size* *length*)) + +(defparameter *mps* (load-state *rank* *partition* *state*)) +(defparameter *mph* (make-hamiltonian *dimension* *length* *j* *k*)) +(defparameter *mpn* (make-particle-number-mpo *dimension* *length* #'oddp)) + +(defparameter *count* 100) +(defparameter *step* (/ (* 5 (/ pi 2 *j*)) *count*)) +(defparameter *propagator* (make-mph-propagator *mph* *step*)) + +(when (zerop *rank*) + (format + t + "# processes = ~a; length = ~a; particles = ~a; maxdim = ~a; j = ~f; k = ~f;~%" + *size* *length* *particles* *maxdim* *j* *k*) + (format t "# time nodd norm~%")) + +(mps-prepare *rank* *length* *mps* *maxdim*) + +;; main loop + +(loop for i from 0 to *count* do + (let ((e (realpart (mps-expectation-value *size* *rank* *length* *mpn* *mps*))) + (n (realpart (mps-overlap *size* *rank* *length* *mps* *mps*)))) + (if (= *rank* (1- *size*)) + (format t "~,2f ~f ~f~%" + (/ (* i *step*) (/ pi 2 *j*)) + (/ e n *particles*) + (sqrt n)))) + (when (< i *count*) + (tebd-evolve *rank* *length* *propagator* *mps* *maxdim*))) + +(mpi-finalize) diff --git a/outputs/balancer b/outputs/balancer @@ -0,0 +1,203 @@ +# processes = 4; length = 11; particles = 11; maxdim = 100; j = 0.04; +# time n(quasimomentum=0;time) norm +0.00 9.615913285283176 1.0 +new partition = (2 5 8 11) +0.05 9.33513789859075 0.9999999999999993 +new partition = (3 5 7 11) +0.10 8.556267711984596 0.9999999999999987 +new partition = (3 5 7 11) +0.15 7.442430743177977 0.9999999999999991 +new partition = (3 5 7 11) +0.20 6.194015229992774 0.9999999999999973 +new partition = (3 5 7 11) +0.25 4.988045960678087 0.9999999999999969 +new partition = (3 5 7 11) +0.30 3.942681614281827 0.9999999999999959 +new partition = (3 5 7 11) +0.35 3.1100802728929606 0.9999999999999962 +new partition = (3 5 7 11) +0.40 2.489636327680771 0.9999999999999956 +new partition = (3 5 7 11) +0.45 2.0499918517543296 0.9999999999999941 +new partition = (3 5 7 11) +0.50 1.7495382411181277 0.9999999999999929 +new partition = (3 5 7 11) +0.55 1.5497365176038704 0.9999999999999891 +new partition = (3 5 7 11) +0.60 1.4206689310389746 0.9999999999999756 +new partition = (3 5 7 11) +0.65 1.3412273049595311 0.999999999999939 +new partition = (3 5 7 11) +0.70 1.2968230974645722 0.9999999999998335 +new partition = (3 5 7 11) +0.75 1.2766456943000295 0.9999999999995044 +new partition = (3 5 7 11) +0.80 1.2714226608157135 0.9999999999985739 +new partition = (3 5 7 11) +0.85 1.2721106733523575 0.9999999999969922 +new partition = (3 5 7 11) +0.90 1.2700221874053121 0.999999999994513 +new partition = (3 5 7 11) +0.95 1.2585193335159144 0.999999999990212 +new partition = (3 5 7 11) +1.00 1.2352497841868824 0.9999999999832473 +new partition = (3 5 7 11) +1.05 1.2033234991676325 0.9999999999684043 +new partition = (3 5 7 11) +1.10 1.1708010452754718 0.9999999999401801 +new partition = (3 5 7 11) +1.15 1.148883009292884 0.9999999998989312 +new partition = (3 5 7 11) +1.20 1.1494626619636403 0.9999999998372285 +new partition = (3 5 7 11) +1.25 1.1831705866521913 0.9999999997405625 +new partition = (3 5 7 11) +1.30 1.2587998057674663 0.9999999996045453 +new partition = (3 5 7 11) +1.35 1.38360551993542 0.9999999994539659 +new partition = (3 5 7 11) +1.40 1.5634684482980346 0.9999999992571253 +new partition = (3 5 7 11) +1.45 1.803130749801492 0.9999999989877554 +new partition = (3 5 7 11) +1.50 2.1077627908061314 0.9999999986157851 +new partition = (3 5 7 11) +1.55 2.486109083874274 0.9999999980743354 +new partition = (3 5 7 11) +1.60 2.9529010112144176 0.9999999972805755 +new partition = (3 5 7 11) +1.65 3.5261622759955156 0.999999996250771 +new partition = (3 5 7 11) +1.70 4.216005559392713 0.9999999950267539 +new partition = (3 5 7 11) +1.75 5.006636486378264 0.9999999936598838 +new partition = (3 6 8 11) +1.80 5.839665785050443 0.9999999920761791 +new partition = (3 5 7 11) +1.85 6.609551250770193 0.9999999901700733 +new partition = (3 5 7 11) +1.90 7.179254144921918 0.9999999877998843 +new partition = (3 5 7 11) +1.95 7.417423174317617 0.9999999847532897 +new partition = (3 5 7 11) +2.00 7.247470729380961 0.9999999807152731 +new partition = (3 5 7 11) +2.05 6.685193878247563 0.9999999752645062 +new partition = (3 5 7 11) +2.10 5.8389635220692915 0.999999968115593 +new partition = (3 5 7 11) +2.15 4.869012900811293 0.9999999595629215 +new partition = (3 5 7 11) +2.20 3.9317173569922343 0.9999999496133415 +new partition = (3 5 7 11) +2.25 3.1387595494327245 0.9999999376045899 +new partition = (3 5 7 11) +2.30 2.5427519182393947 0.9999999223439285 +new partition = (3 5 7 11) +2.35 2.1445525161952053 0.9999999036160573 +new partition = (3 5 7 11) +2.40 1.9117417246080188 0.9999998823068307 +new partition = (3 5 7 11) +2.45 1.7984649173968037 0.9999998581583145 +new partition = (3 5 7 11) +2.50 1.760482685872173 0.9999998291779556 +new partition = (3 5 7 11) +2.55 1.7633267798626393 0.9999997957332629 +new partition = (3 5 7 11) +2.60 1.7842433562555542 0.9999997585562302 +new partition = (3 5 7 11) +2.65 1.809928776266377 0.999999716088256 +new partition = (3 5 7 11) +2.70 1.8323861157493562 0.999999669350377 +new partition = (3 5 7 11) +2.75 1.845076670687289 0.9999996206222119 +new partition = (3 5 7 11) +2.80 1.8410108396876055 0.9999995683734754 +new partition = (3 5 7 11) +2.85 1.8134015969155166 0.9999995118077594 +new partition = (3 5 7 11) +2.90 1.7582557688627796 0.9999994567045992 +new partition = (3 5 7 11) +2.95 1.6772264059312625 0.9999993999752943 +new partition = (3 5 7 11) +3.00 1.5788751425593552 0.999999337171048 +new partition = (3 5 7 11) +3.05 1.4775492322234134 0.9999992657239125 +new partition = (3 5 7 11) +3.10 1.3906588609758583 0.9999991885700115 +new partition = (3 5 7 11) +3.15 1.335620387727734 0.9999991085603129 +new partition = (3 5 7 11) +3.20 1.3272045602993896 0.9999990248057106 +new partition = (3 5 7 11) +3.25 1.37571882370581 0.9999989366768065 +new partition = (3 5 7 11) +3.30 1.4858658944241996 0.9999988484048676 +new partition = (3 5 7 11) +3.35 1.6554722478342057 0.9999987639482368 +new partition = (3 5 7 11) +3.40 1.8740934077613554 0.9999986824805253 +new partition = (3 5 7 11) +3.45 2.1233059869819013 0.9999986005032291 +new partition = (3 5 7 11) +3.50 2.3808609028228203 0.9999985148172161 +new partition = (3 5 7 11) +3.55 2.628566201149662 0.9999984232521225 +new partition = (3 5 7 11) +3.60 2.8601720448448207 0.9999983254734608 +new partition = (3 5 7 11) +3.65 3.0833774940971663 0.9999982238449441 +new partition = (3 5 7 11) +3.70 3.3121762447812575 0.9999981196913645 +new partition = (3 5 7 11) +3.75 3.55206043792588 0.9999980091001028 +new partition = (3 5 7 11) +3.80 3.7864171336206596 0.9999978856470892 +new partition = (3 5 7 11) +3.85 3.9728532717723466 0.9999977463858585 +new partition = (3 5 7 11) +3.90 4.053581526606428 0.999997590996358 +new partition = (3 5 7 11) +3.95 3.9779452687741563 0.9999974180224811 +new partition = (3 5 7 11) +4.00 3.7287065455044757 0.9999972234414307 +new partition = (3 5 7 11) +4.05 3.337731525192767 0.9999970042547385 +new partition = (3 5 7 11) +4.10 2.878625736212729 0.9999967676020786 +new partition = (3 5 7 11) +4.15 2.439042075345885 0.9999965254891129 +new partition = (3 5 7 11) +4.20 2.0902442915005315 0.9999962789940611 +new partition = (3 5 7 11) +4.25 1.8695358483664266 0.9999960162320695 +new partition = (3 5 7 11) +4.30 1.7787914527333748 0.9999957273474785 +new partition = (3 5 7 11) +4.35 1.7939516724918123 0.9999954111346222 +new partition = (3 5 7 11) +4.40 1.8785489822826593 0.9999950620177743 +new partition = (3 5 7 11) +4.45 1.99583966305348 0.9999946593278434 +new partition = (3 5 7 11) +4.50 2.116680331493175 0.9999941752033549 +new partition = (3 5 7 11) +4.55 2.222495104412793 0.9999935932506426 +new partition = (3 5 7 11) +4.60 2.3041530248782176 0.999992927320114 +new partition = (3 5 7 11) +4.65 2.358436091113781 0.9999922187254657 +new partition = (3 5 7 11) +4.70 2.384005774887575 0.9999915105571914 +new partition = (3 5 7 11) +4.75 2.378674840757599 0.99999081631424 +new partition = (3 5 7 11) +4.80 2.339240650759856 0.9999901185450412 +new partition = (3 5 7 11) +4.85 2.2637896157295114 0.9999894033978689 +new partition = (3 5 7 11) +4.90 2.154879138517892 0.9999886692854699 +new partition = (3 5 7 11) +4.95 2.0214929481098527 0.9999878946959564 +new partition = (3 5 7 11) +5.00 1.8785854873991583 0.9999870431370925 diff --git a/outputs/mpi b/outputs/mpi @@ -0,0 +1,5 @@ +There are 4 processes running. +Sum of ranks in process 0 is 6. +Sum of ranks in process 1 is 6. +Sum of ranks in process 2 is 6. +Sum of ranks in process 3 is 6. diff --git a/outputs/revivals b/outputs/revivals @@ -0,0 +1,103 @@ +# processes = 1; length = 11; particles = 11; maxdim = 100; j = 0.04; +# time n(quasimomentum=0;time) norm +0.00 9.615913285283176 1.0 +0.05 9.33513789859075 0.9999999999999993 +0.10 8.556267711984596 0.9999999999999987 +0.15 7.442430743177977 0.9999999999999991 +0.20 6.194015229992774 0.9999999999999973 +0.25 4.988045960678087 0.9999999999999969 +0.30 3.942681614281827 0.9999999999999959 +0.35 3.1100802728929606 0.9999999999999962 +0.40 2.489636327680771 0.9999999999999956 +0.45 2.0499918517543296 0.9999999999999941 +0.50 1.7495382411181268 0.9999999999999933 +0.55 1.54973651760387 0.99999999999999 +0.60 1.4206689310389746 0.9999999999999764 +0.65 1.3412273049595316 0.9999999999999397 +0.70 1.2968230974645725 0.9999999999998346 +0.75 1.2766456943000302 0.999999999999505 +0.80 1.2714226608157133 0.9999999999985744 +0.85 1.2721106733523582 0.9999999999969912 +0.90 1.2700221874053121 0.9999999999945128 +0.95 1.2585193335159148 0.9999999999902124 +1.00 1.2352497841868835 0.9999999999832476 +1.05 1.2033234991676336 0.9999999999684054 +1.10 1.1708010452754722 0.9999999999401818 +1.15 1.1488830092928841 0.999999999898933 +1.20 1.1494626619636408 0.9999999998372299 +1.25 1.1831705866521915 0.9999999997405657 +1.30 1.2587998057674665 0.9999999996045488 +1.35 1.38360551993542 0.9999999994539689 +1.40 1.563468448298034 0.9999999992571272 +1.45 1.8031307498014923 0.9999999989877574 +1.50 2.10776279080613 0.9999999986157876 +1.55 2.486109083874273 0.9999999980743384 +1.60 2.9529010112144176 0.9999999972805782 +1.65 3.5261622759955147 0.9999999962507735 +1.70 4.2160055593927135 0.9999999950267559 +1.75 5.006636486378263 0.9999999936598859 +1.80 5.839665785050446 0.999999992076181 +1.85 6.609551250770193 0.9999999901700759 +1.90 7.179254144921919 0.999999987799886 +1.95 7.417423174317618 0.9999999847532918 +2.00 7.247470729380959 0.9999999807152748 +2.05 6.685193878247565 0.999999975264509 +2.10 5.838963522069289 0.9999999681155942 +2.15 4.869012900811294 0.9999999595629224 +2.20 3.931717356992237 0.9999999496133428 +2.25 3.138759549432723 0.999999937604591 +2.30 2.542751918239393 0.9999999223439298 +2.35 2.144552516195203 0.9999999036160578 +2.40 1.9117417246080175 0.9999998823068307 +2.45 1.7984649173968004 0.999999858158315 +2.50 1.760482685872172 0.9999998291779573 +2.55 1.7633267798626393 0.9999997957332644 +2.60 1.7842433562555546 0.9999997585562312 +2.65 1.8099287762663772 0.9999997160882577 +2.70 1.8323861157493575 0.9999996693503781 +2.75 1.8450766706872892 0.9999996206222126 +2.80 1.8410108396876055 0.9999995683734775 +2.85 1.8134015969155173 0.999999511807761 +2.90 1.75825576886278 0.9999994567046007 +2.95 1.6772264059312634 0.9999993999752959 +3.00 1.5788751425593548 0.9999993371710502 +3.05 1.477549232223413 0.9999992657239142 +3.10 1.390658860975858 0.999999188570014 +3.15 1.3356203877277344 0.9999991085603146 +3.20 1.32720456029939 0.9999990248057113 +3.25 1.3757188237058093 0.9999989366768074 +3.30 1.4858658944241987 0.9999988484048675 +3.35 1.6554722478342045 0.999998763948235 +3.40 1.8740934077613538 0.9999986824805239 +3.45 2.123305986981899 0.999998600503228 +3.50 2.3808609028228167 0.9999985148172159 +3.55 2.6285662011496584 0.9999984232521215 +3.60 2.860172044844818 0.9999983254734592 +3.65 3.083377494097162 0.9999982238449436 +3.70 3.3121762447812517 0.9999981196913643 +3.75 3.5520604379258742 0.9999980091001017 +3.80 3.7864171336206556 0.9999978856470879 +3.85 3.972853271772344 0.9999977463858574 +3.90 4.053581526606428 0.9999975909963557 +3.95 3.9779452687741568 0.9999974180224801 +4.00 3.728706545504472 0.9999972234414285 +4.05 3.33773152519276 0.9999970042547367 +4.10 2.878625736212723 0.9999967676020765 +4.15 2.439042075345878 0.9999965254891106 +4.20 2.090244291500525 0.999996278994057 +4.25 1.8695358483664222 0.9999960162320651 +4.30 1.7787914527333706 0.9999957273474754 +4.35 1.7939516724918094 0.9999954111346199 +4.40 1.878548982282659 0.9999950620177718 +4.45 1.9958396630534805 0.9999946593278413 +4.50 2.116680331493176 0.999994175203354 +4.55 2.2224951044127956 0.9999935932506406 +4.60 2.3041530248782243 0.9999929273201129 +4.65 2.3584360911137856 0.9999922187254637 +4.70 2.3840057748875805 0.9999915105571895 +4.75 2.378674840757601 0.9999908163142383 +4.80 2.3392406507598587 0.9999901185450389 +4.85 2.2637896157295128 0.9999894033978658 +4.90 2.154879138517892 0.9999886692854675 +4.95 2.0214929481098514 0.999987894695954 +5.00 1.878585487399156 0.9999870431370893 diff --git a/outputs/trotzky b/outputs/trotzky @@ -0,0 +1,103 @@ +# processes = 1; length = 21; particles = 7; maxdim = 100; j = 0.41; k = 0.0041; +# time nodd norm +0.00 0.0 1.0 +0.05 0.012254529929348336 0.999999999999999 +0.10 0.04811446361659748 0.9999999999999992 +0.15 0.10493496620949792 0.9999999999999999 +0.20 0.17852574576238725 0.9999999999999978 +0.25 0.26346794490682807 0.9999999999999959 +0.30 0.3535354657306184 0.9999999999999969 +0.35 0.4421904460307321 0.9999999999999969 +0.40 0.5231069326103615 0.9999999999999964 +0.45 0.590670333342952 0.9999999999999974 +0.50 0.6404133499885322 0.9999999999999993 +0.55 0.6693764179454729 1.0000000000000009 +0.60 0.6763980875985486 1.0000000000000038 +0.65 0.6623240554193777 1.0000000000000024 +0.70 0.6300757784538292 0.9999999999999986 +0.75 0.5844797808990936 0.9999999999999974 +0.80 0.5317762177947903 0.9999999999999953 +0.85 0.47881640141586024 0.9999999999999909 +0.90 0.4320843926233537 0.9999999999999823 +0.95 0.39676456083392253 0.9999999999999423 +1.00 0.37607198658297347 0.9999999999996959 +1.05 0.3709714797480402 0.9999999999983963 +1.10 0.38029051314690865 0.9999999999927305 +1.15 0.401142403755462 0.9999999999702074 +1.20 0.4295410778754696 0.9999999998836442 +1.25 0.4610891238541674 0.999999999568877 +1.30 0.4916294329479372 0.9999999985469241 +1.35 0.517762069036227 0.9999999957793667 +1.40 0.5371559200447783 0.9999999882568891 +1.45 0.5486355595012911 0.999999969018117 +1.50 0.5520799237157844 0.9999999218549452 +1.55 0.5482029569467425 0.9999998148385045 +1.60 0.5382863155323643 0.9999996174354074 +1.65 0.5239150884468956 0.9999992033307961 +1.70 0.5067503822150851 0.9999983642110597 +1.75 0.48836372567495934 0.9999967548311808 +1.80 0.4701471851498716 0.9999938491860181 +1.85 0.4532923914210895 0.9999888126191028 +1.90 0.4388086896285072 0.9999803306954113 +1.95 0.4275414539328985 0.9999665154841069 +2.00 0.4201636716438562 0.9999449266377948 +2.05 0.41713764622447586 0.9999126789642541 +2.10 0.41866192756610715 0.9998667807842248 +2.15 0.42462213559757706 0.9998041417718125 +2.20 0.4345583487491645 0.9997207217539104 +2.25 0.4476579619794286 0.9996113363474931 +2.30 0.4627857864223185 0.9994706282200815 +2.35 0.47856372879655573 0.9992944264690421 +2.40 0.49350184690655247 0.9990800598836117 +2.45 0.5061641498205941 0.9988246516870846 +2.50 0.5153379309026903 0.9985232384247544 +2.55 0.5201746180219643 0.9981685119359882 +2.60 0.5202821732521042 0.9977515277977782 +2.65 0.5157630371317378 0.9972627811810667 +2.70 0.5071983009747069 0.9966937892369269 +2.75 0.49557871521631086 0.9960387152799263 +2.80 0.4821851992711207 0.9952953494834588 +2.85 0.46843154209113697 0.9944661057734014 +2.90 0.455694404366826 0.9935597162192757 +2.95 0.4451601626488548 0.9925921793613708 +3.00 0.4377111556287863 0.9915848587535419 +3.05 0.4338614469618664 0.9905597849306941 +3.10 0.4337417152864294 0.9895341922884756 +3.15 0.43712758615911335 0.988516856329897 +3.20 0.44350371141724326 0.9875079429028075 +3.25 0.4521529734870171 0.986501747546006 +3.30 0.4622551015571381 0.9854902494341078 +3.35 0.47297525781072675 0.9844659426508218 +3.40 0.48352642785099187 0.9834236431399783 +3.45 0.49320116771185496 0.9823615371317935 +3.50 0.5013813953000199 0.9812817878966492 +3.55 0.5075410780738486 0.9801907824536915 +3.60 0.511254514899061 0.9790983495520806 +3.65 0.5122161257313291 0.9780154851095165 +3.70 0.5102705267754497 0.9769510470829048 +3.75 0.5054473651573295 0.9759085906990373 +3.80 0.49799361503312 0.9748847245738699 +3.85 0.48839446595416974 0.9738699575696292 +3.90 0.4773724596825425 0.9728519780972473 +3.95 0.4658549257830415 0.9718200657050443 +4.00 0.4549033982977503 0.9707687576693439 +4.05 0.4456062621636594 0.969699231278134 +4.10 0.4389465866658254 0.9686179271446759 +4.15 0.43566720395739983 0.9675333975809737 +4.20 0.4361596042784125 0.9664531475549898 +4.25 0.4403994061182224 0.9653815856855975 +4.30 0.4479408290960821 0.9643191144508155 +4.35 0.45797057777249517 0.963261920618198 +4.40 0.4694115541706438 0.9622025417573998 +4.45 0.48105993431581157 0.96113153887905 +4.50 0.4917348963508445 0.96004009339352 +4.55 0.5004185761574583 0.9589227146769582 +4.60 0.5063654422625802 0.9577789265230402 +4.65 0.5091655057031109 0.9566131754080005 +4.70 0.5087543601830361 0.9554331328170407 +4.75 0.505374168877398 0.954247089514398 +4.80 0.49950061083179886 0.9530610737191055 +4.85 0.4917570452721737 0.9518764203823538 +4.90 0.48283584473299646 0.950689118838608 +4.95 0.4734390520480584 0.9494921381184335 +5.00 0.46424086453806984 0.9482791566953698 diff --git a/run b/run @@ -0,0 +1,17 @@ +#!/bin/sh + +LD_LIBRARY_PATH=/opt/openblas +SBCL=/opt/sbcl/bin/sbcl +DSS=1024 # megabytes + +export LD_LIBRARY_PATH + +if [ $# -eq 0 ]; then + echo usage: $0 program.lisp + exit 1 +fi + +exec "$SBCL" --dynamic-space-size "$DSS" --noinform --disable-ldb \ + --lose-on-corruption --end-runtime-options --no-sysinit \ + --no-userinit --load "$1" --noprint --non-interactive \ + --end-toplevel-options diff --git a/states/revivals-l-11-n-11/metadata b/states/revivals-l-11-n-11/metadata @@ -0,0 +1 @@ +((:SITE-DIMENSION . 15) (:MODEL-LENGTH . 11) (:PARTICLE-NUMBER . 11)) diff --git a/states/revivals-l-11-n-11/tensor.0 b/states/revivals-l-11-n-11/tensor.0 @@ -0,0 +1,89 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.832849034042319d-11 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(5.720901025644462d-10 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.2039011762276283d-8 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.962424118780848d-7 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(2.611856330248243d-6 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(2.908403907401699d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(2.737134310501333d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0021770754934714114d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.014487715059130568d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.07871920158832348d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3313119420728741d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.9401175325586021d0 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.1 b/states/revivals-l-11-n-11/tensor.1 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.9787047008632365d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.20527325327037405d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.9578628913353311d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.28411818939008926d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.042137107879126834d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.9374649142624261d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3405621217936127d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.07142940417810961d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.008649621097786664d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.9175013181414508d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3848729477384028d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.09886525732944978d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.016930849754230412d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0017755358723716697d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.897962852738286d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.42113764801197645d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.12491648388732228d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.026199948425474434d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0038856719349374728d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-3.644700327121164d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.8788404648008357d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4515089514762437d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1497328379428016d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.036263282238829485d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.006586860027808615d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(8.737539030037548d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-7.481595265446117d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.8601252938636925d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.47729999979383164d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.17339347432030774d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.04695023927568812d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.009847330259786933d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0015998336526491445d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.9372912120124738d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.535771370697603d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.8418086681423657d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.49938912655250467d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1959538459388185d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05812319461799307d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.013629664858473884d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.00255688308742206d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-3.7920720583035493d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(4.2513145504911015d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-3.152527830563301d-6 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.8238821005151021d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5184024167298598d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.21745915736933064d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.06967015562666305d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.01789670604397474d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0037536502586685136d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(6.428192669955496d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-8.826350579009114d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(9.2561815096368d-6 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-6.471296498666845d-7 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.8063372845904634d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5348074358647783d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.2379492726679121d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.08149846614570525d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.02261252991398903d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.005195417805483034d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-9.947422525852915d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.5771471759246162d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-2.025669280089076d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(2.0028248766710675d-6 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.32838411381897d-7 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7891660908588328d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5489660079779718d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2574608173465808d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.09353032822616564d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.027742663319270246d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.006884824441864137d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0014440212389381344d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-2.5597069362888334d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(3.796259866252778d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-4.597015828758332d-6 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(4.311929924072878d-7 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-2.7268173941052964d-8 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.10 b/states/revivals-l-11-n-11/tensor.10 @@ -0,0 +1,89 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.0d0 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.2 b/states/revivals-l-11-n-11/tensor.2 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.95499659519749d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.29661676142996596d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.9120184965501859d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4006014444311467d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0879815018627077d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.8709745584912049d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.46855433941842006d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.14553043372455662d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.026096787793924214d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.8317777373036627d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5166913087806254d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.19654891293954774d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.049844687278912475d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.007740744725983628d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7943449065199377d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.55168094837721d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.24232423216674884d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0752645908746838d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.016529875179597985d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0022960346823632793d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7585966806306483d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5771390134793496d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.28342900931932874d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.10165003389649006d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.027342110065038623d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.005371009196544363d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(6.810424021284067d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.7244572467288362d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5953270975530697d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3202654872092606d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1284187317049895d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.03988616163958182d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.009596033251807023d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0017207786117460417d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-2.0200858797170262d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6918542037312535d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6077898560493493d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3531679886690307d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.15512799936763522d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05386901905491613d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.014965041845989971d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.003286675453276846d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-5.456531338432231d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(5.9919132692876076d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6607184088356366d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6156466658745982d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.38243302609745294d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1814419248943177d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.06902034784165256d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.021437346079604045d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.005436498517552895d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.00110541343089004d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.7166770479818628d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.7773019260092227d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6309838308883596d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6197436708790708d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4083308752210376d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.20710493510596645d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.08509486271430801d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.028952618039078518d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.008209016012211117d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0019273737284790078d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(3.665856234884255d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-5.3673885940053415d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(5.27177552878122d-6 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6025874103514528d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6207407633780375d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.431111026044287d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.23192289308083258d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.10187144996729895d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.037437805325840144d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.011627979755783033d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0030523484215162133d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(6.703675283014891d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.2021155357089781d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.6697639471013695d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.5636970411847528d-6 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.3 b/states/revivals-l-11-n-11/tensor.3 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.9248224235750514d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.38039911258146786d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.8552965147297255d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.49752263663853563d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.14470348276190248d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7909973949927505d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5635297221748388d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.23179174484882528d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.05504507571226669d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7315321271941133d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6017894182615817d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3031595930110945d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.10181384133612464d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.020939098093586628d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6765373141860899d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6222399700372095d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3619545517587558d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1488795957894506d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.04330133922166936d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.007965214514539909d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.625676878097997d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6303864640542275d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4099756129769539d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.19471909013787142d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.06936179275820356d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.01804394343000672d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.003029960670632992d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5786400065433805d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6297071510466963d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4486218203794557d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.23822421693381818d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0979866827409907d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.031219348311271985d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.007413859761927774d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0011525943295376262d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5351392532268591d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6225768244263425d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4790800794507171d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.2786790048708382d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.1281564312897104d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.04714835581538906d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.013713007599184692d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0030149480112368287d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(4.384458569761662d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4232937569769961d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5774566047472223d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.531111243426437d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3783792071761195d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2201017060626658d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.10711951097133275d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.04406053287306188d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.01531675843974322d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.004454849175891803d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.001057921696629628d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.946030633172797d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-2.4134287688992728d-5 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4949087813433307d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.61069949714495d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5023873538957601d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.31565177213097356d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.15901387079460647d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.06540578518544192d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.021966036307888192d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.005914859579222993d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0012164536921963076d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.6678441655826326d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4577027390348382d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5953394460174133d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5194599344826576d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.34891333098604627d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1898531186341022d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.08554399196207078d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.03212033407069931d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.009987163605712208d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.002515584656497615d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(4.8776858451388507d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-6.344464542862305d-5 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.4 b/states/revivals-l-11-n-11/tensor.4 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.8885554486648087d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.45876923899503175d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7895307848079871d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5764927152729623d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.21046921170967248d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7015418799779211d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6273703481360059d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.32391699785858846d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.09655679890629121d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6233588592157339d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6436916737277113d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.407036422386514d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.17159214086091196d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.044297289493063996d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5538889103284594d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6394659619366492d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4669196835993755d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.24107486577984005d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.08801297342147611d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.020322234271587414d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.27260252807814417d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.46680551658725855d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5389279817557623d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4819490318038798d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.35190535031883424d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.21498078990424832d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.11099653727878375d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.04843453792485923d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.01768275441484565d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.005271073193612816d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0012170931202168563d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-1.8946859410995387d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4921610090085626d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6224329710710391d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5081270871933107d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3029364048958728d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.1354540072565413d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.04423149487634763d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.009323216382062016d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3067929275081533d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5009046949634489d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.548619337198864d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4625569698464197d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.31593228888315905d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.17868759503160692d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0842196741312236d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.032870346339878086d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.010392730497279385d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0025294911605562814d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-4.1299322500010227d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4373123462541682d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5973797802887577d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5342209300784619d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.35608610430545684d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.18385048763078085d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.07352756377831604d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.02191791925035002d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.004277204809395085d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3452715610393255d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5348005218535893d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.552244717683123d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.43554167354480566d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.27541342459844226d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.14219845312831117d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05994583556636945d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.02026190954845636d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0052307037870998295d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-9.002199391616728d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3885762683782821d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5674544768247999d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5481189304568337d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4002207044257312d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2310278405743825d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.10668886092900609d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.03895057338418028d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.010749532538353248d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0019622499813578553d0 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.5 b/states/revivals-l-11-n-11/tensor.5 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.8451542547285167d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5345224838248488d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.15714327792182065d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3296265211580147d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.46616229015822924d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5106551968138958d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4567438963077695d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3417958426300939d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.21617068151121419d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.11554808763099442d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05167467535522958d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.018868923716350752d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.005336937655703981d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.001017714106627654d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.7142857136071306d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6388765674544904d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2857142819222025d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.18593443328035406d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3718688676749137d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.49891443393130713d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5152766058744115d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.431111342420006d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.29868270686791804d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.1724445493030638d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0824442620843282d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.03193052511810453d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.009519843341798541d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0019039686914488207d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6036816091203062d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6613000751228876d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4182428856920517d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.15272070593199438d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.22000058758334565d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.41742176798417796d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.528001407197539d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5100978161428623d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.39512007329569876d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.24989588247265815d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.1290456848009482d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05342998855510201d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.01689604571088736d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.00356199919311484d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5102040798268552d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6453627919621014d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4998958646256881d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.25814511107488164d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.08163265178337831d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.2603082048876251d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4656534760952797d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5509686184409777d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4928013097705472d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3484631515840321d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.19712053084930534d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0881549852746736d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.02980182367050383d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.006663890244023252d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4312011485787476d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6098105188493357d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5454311055389574d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.34496091666180695d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.15427121258655513d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.04363448886538035d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3644314854773874d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5645748352420209d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5645748315220318d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4123071575573143d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.22582993265579066d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.09033197482145934d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.023323616456356833d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.30800082093218056d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5153839544227217d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5645748311717919d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4609734159078241d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.29154518992825335d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.14282739371865955d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05215319239411896d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.012466997178611994d0 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.6 b/states/revivals-l-11-n-11/tensor.6 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.07659317585440577d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.19601867982677665d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3382154904276437d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4520278098626925d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4932773717858468d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4503666880757838d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3475180120491297d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2266336190089268d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.12365747477851319d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05508974859544997d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.01901064431030436d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.004422945066743678d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.09674473578713326d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.23606868608361123d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3864165089685337d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4869126661333097d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4970283242435935d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.42012914627870773d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.29593971339220176d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.17262164756833012d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0815683971112515d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.02967062631819524d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.007239986547763699d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.12219814345539994d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.28287652144202313d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.43655396007043296d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5145615835367862d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4862885369829722d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3752365058241234d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2364125428726412d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.11942442364081925d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0460759388895587d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.011851245070043204d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7917038077735334d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6109051323707206d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.15434830773251632d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.336866564032936d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.486298537939888d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5306754506907807d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.45782030296865284d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.31597381454972795d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.17240392761502596d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.07110893331863495d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.019399485101410763d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6267949184044884d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6839927641372376d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3732050761581518d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.19495713619776275d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3980147794190854d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5319500602385501d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5299150743333139d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4089001960599401d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.24440157183853442d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.10888158287673035d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.03175531563879086d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.49623592273681577d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6632234471041126d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5117653841194127d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.22799289421819524d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.24625009203350395d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.46543932084402895d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5678637049542467d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5059697082567669d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3381163662936681d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.16500885006966878d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.05198076520204031d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.31103815485187475d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5366729593529695d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5856467652566028d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.45190462424400596d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.24657147336952936d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.08508810949485457d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3928718691596416d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6063061501993334d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5729921076193809d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3610056886075447d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1392820306154574d0 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.7 b/states/revivals-l-11-n-11/tensor.7 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.027817882050607715d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.08839819234635582d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.18938752075905166d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3142931802186456d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4258659659514909d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4827918575619059d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.46257582640526324d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.37457767220272403d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.25377560134015376d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.14038225775687033d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.060152018990669714d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.01737708228046353d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.03852557666861094d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.11672721613276761d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.237247342567704d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3712006204274545d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4704903244895245d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4938150328467646d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.43191340422663466d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3128244073120478d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.183543598253801d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.08290027431053815d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.02511764698139829d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0533548906874538d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.15336224885471209d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2938809499780403d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.43011322747714037d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5047210396182958d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4835867558930545d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3783134387231998d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.23729377692023465d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.11367876028418775d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.036306221549799345d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0738923229434502d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2002475870766312d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.358942005784988d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4863649344521612d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5210030256115419d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4464863947006274d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3024936290957021d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.15491917696926463d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05247871104490143d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.1023350493823703d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.25941578726414105d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4305067873750642d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5325094912021892d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5102116104221532d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3786595840319422d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.20946493190455961d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.07585518507675237d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.14172598582263576d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3326197956054742d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5038961871137286d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5574852959246223d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4625801934554845d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2803109210569059d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.10964463558684856d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.19627933144516205d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.42051602944249133d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5697974874874561d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5459382292382235d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3698720308774802d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.15848547855606654d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7220627053431249d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6918276154885459d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.27183142063956506d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5208979339494789d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6112533350039476d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4781879051866988d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.22908231913429833d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5213745494058376d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.7064603763163855d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.47862544429519294d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3764651168242616d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6247530036858756d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5985925789087002d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.33112629716681075d0 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.8 b/states/revivals-l-11-n-11/tensor.8 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.005477041825857639d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.022814264516521424d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.064070120721357d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.13937350994361625d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.24754793539067368d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3678640959752448d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4620101168878671d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.49040120436594875d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4355124741437494d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.31579412771766835d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.17737121056830196d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.06716621439187143d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.008792913063613381d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.03492181877210203d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.09303945958516828d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.19081636170133445d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3170287910981329d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.43616760011457206d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5000654695862716d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.47475757884463343d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3651334421471508d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.21617697305404865d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.08585656497802718d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.014116255290091946d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0531869190928355d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.13359767362945912d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.2563016192630628d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3942403277213041d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.49513670911656005d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5077425830391514d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.41746422286089824d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2621520968921429d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.10974788342504072d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.022662417171848654d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.08050359905728109d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1891530641063564d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.33596376421773333d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4717495747538048d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.529932546604939d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4706192524475297d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3159364489947914d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.14028744437504104d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.03638253486554953d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.12089436086790466d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.2629848504689311d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4264019386034174d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5355293116281997d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5209822853908487d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3777690917878799d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.17932525709418257d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.05840898699550275d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1796881209036902d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.35682348969413297d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5174720205978818d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5628356306548321d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.44707013783643884d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.22922613128827907d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.09377053434040292d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2633391717259916d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4677292518697183d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5874333547136271d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5216841974787325d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.293012911559273d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.15054041527256176d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.37813526470910014d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5816435037705524d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5964517562263617d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3745496522077516d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2416795094845569d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5257321506191898d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6602807049855689d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4787756375635517d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3879953798567879d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6891370969723692d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6120046133700976d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6228927525104961d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.7823072407116642d0 0.0d0)))))))) diff --git a/states/revivals-l-11-n-11/tensor.9 b/states/revivals-l-11-n-11/tensor.9 @@ -0,0 +1,430 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (-1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.9374402874810305d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.0012413619545235254d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (2) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.005362375154290676d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (3) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.017942856651247945d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (4) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.04902079684309173d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (5) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.1120516294776327d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (6) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2164671255808716d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (7) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.35342859791111214d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (8) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4827924349583526d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (9) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5384850005126481d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (10) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4652243052438927d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((0) (11) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.2709816204495774d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(4.214567497866091d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0025747008839462054d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (2) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.01055132026327213d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (3) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.03328625568739691d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (4) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0850663414538098d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (5) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.18002057409924502d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (6) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.3174719083197164d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (7) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4636177339901117d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (8) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5484656685935415d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (9) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4994786994824661d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((1) (10) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.30513410471541724d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(9.168065449328763d-4 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.005313402716769078d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (2) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.020529411638406988d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (3) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.06058131186005144d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (4) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.14333691763918516d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (5) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2769056612167083d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (6) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4367772351554528d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (7) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5523894452679042d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (8) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5335672313549905d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((2) (9) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.34359091255009155d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.001994354700574464d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.010897356927066814d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (2) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.03938483010062823d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (3) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.10760135103532685d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (4) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.23240555168371174d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (5) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.4015737090268891d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (6) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5485599178314371d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (7) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5664529180922155d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((3) (8) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3868945314594241d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.0043383751793000585d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.022174299676295736d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (2) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.07419664884278866d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (3) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.18504716028009238d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (4) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.35748366239198737d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (5) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5349406631242049d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (6) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5966488135719383d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((4) (7) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.43565582290345795d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.009437388225241285d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.044658198947403235d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (2) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.13640961035966157d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (3) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.30429029601153684d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (4) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.5090875965029299d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (5) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.6220084708375055d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((5) (6) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.49056263230932595d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.020529411930886938d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.08868195909498443d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (2) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.2422836138157348d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (3) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.46805599974252987d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (4) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6393763969844792d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((6) (5) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.552389453137369d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.044658198732313345d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (1) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.1725460300443647d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (2) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.4082482907475824d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (3) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.6439505507698745d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((7) (4) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.62200846784169d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (0) (-8)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(0.097146217982336d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (1) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.3250575865889729d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (2) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.627963035834968d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((8) (3) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.7004017442565456d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (0) (-9)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.21132486419963042d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (1) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.5773502757769129d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((9) (2) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.7886751300956119d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (0) (-10)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.45970084338098416d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((10) (1) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(-0.8880738339771146d0 0.0d0)))))) + #S(SECTOR + :NUMBERS ((11) (0) (-11)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/revivals.lisp b/states/revivals.lisp @@ -0,0 +1,161 @@ +;; parameters + +(defparameter *dimension* 15) ;; physical dimension +(defparameter *length* 11) +(defparameter *particles* 11) +(defparameter *maxdim* 100) + +;; libraries + +(load "conf.lisp") +(require :tebdol) + +(use-package '(:array :tensor :mps :bhm)) +(setf *print-level* 2) + +;; main + +(defun tensor-norm (tensor) + (sqrt + (loop + for s in (tensor-sectors tensor) + sum (expt (array-norm (sector-array s)) 2)))) + +(defun tensor-normalize (tensor) + (let ((n (tensor-norm tensor))) + (make-tensor + :indices + (tensor-indices tensor) + :sectors + (mapcar + #'(lambda (s) + (make-sector + :numbers (sector-numbers s) + :array (array-scalar-/ (sector-array s) n))) + (tensor-sectors tensor))))) + +(defun left-normalize (mps maxdim) + (let ((n (length mps))) + (loop for i below (1- n) do + (multiple-value-bind (l s r) (tensor-decompose (svref mps i) '(0 1) maxdim :left) + (declare (ignore s)) + (setf (svref mps i) l) + (setf (svref mps (1+ i)) (tensor-contract r 1 (svref mps (1+ i)) 0)))) + (setf (svref mps (1- n)) (tensor-normalize (svref mps (1- n)))))) + +(defun right-compress (mps maxdim) + (let ((n (length mps))) + (loop for i from (1- n) above 0 do + (multiple-value-bind (l s r) (tensor-decompose (svref mps i) '(0) maxdim :right) + (declare (ignore s)) + (setf (svref mps i) r) + (setf (svref mps (1- i)) (tensor-contract (svref mps (1- i)) 2 l 0)))))) + +;; +;; particle in a box creation operator +;; +;; -1 0 +;; +;; +----+---+ +;; 0 | b+ | 1 | +;; +----+---+ +;; 1 | 1 | 0 | +;; +----+---+ +;; + +(defun site-piab (dimension weight) + (let ((ops (list + (cons '1 #'(lambda (n) (declare (ignore n)) 1)) + (cons 'b+ #'(lambda (n) (* weight (sqrt (1+ n))))))) + (tbl (flet ((f (x y z) + (cons (list (make-subscript + :numbers (list (first x)) + :subscript (second x)) + (make-subscript + :numbers (list (first y)) + :subscript (second y))) + z))) + (list + (f '(0 0) '(-1 0) 'b+) + (f '(0 0) '( 0 0) '1) + (f '(1 0) '(-1 0) '1))))) + (functional-tensor + (list + (list (make-segment :numbers '(0) :dimension 1) + (make-segment :numbers '(1) :dimension 1)) + (ket-physical-index dimension) + (bra-physical-index dimension) + (list (make-segment :numbers '(-1) :dimension 1) + (make-segment :numbers '(0) :dimension 1))) + #'(lambda (s) + (let ((x (find + (list (first s) (fourth s)) + tbl + :test #'equalp + :key #'car))) + (if x + (funcall (cdr (find (cdr x) ops :key #'car)) + (- (first (subscript-numbers (third s))))) + 0)))))) + +(defun right-tensor (operator) + (let* ((i (fourth (tensor-indices operator)))) + (functional-tensor + (list (conjugate-index i) + (list (make-segment :numbers '(-1) :dimension 1))) + #'(lambda (s) + (if (zerop (subscript-subscript (first s))) + 1 + 0))))) + +(defun make-piab-mpo (dimension length) + (loop + with m = (make-array length) + for i from 1 below (1- length) + do + (setf (svref m i) (site-piab dimension (sin (/ (* pi (1+ i)) (1+ length))))) + finally + (let ((o (site-piab dimension (sin (/ (* pi 1) (1+ length)))))) + (setf (svref m 0) (tensor-contract (left-open-boundary-tensor o) 1 o 0))) + (let ((o (site-piab dimension (sin (/ (* pi length) (1+ length)))))) + (setf (svref m (1- length)) (tensor-contract o 3 (right-tensor o) 0))) + (return m))) + +(defun apply-and-fuse (mpo mps) + (let* ((n (length mpo)) + (o (make-array n))) + (dotimes (i n o) + (setf + (svref o i) + (tensor-fuse + (tensor-permute + (tensor-contract (svref mpo i) 2 (svref mps i) 1) + '(0 2 4 1 3)) + '(2 3) + '(:normal :normal :normal)))))) + +(defun make-vacuum-mps (dimension length) + (let* ((m (make-array length)) + (l (list (make-segment :numbers '(0) :dimension 1))) + (u (functional-tensor + (list l (ket-physical-index dimension) l) + #'(lambda (s) (declare (ignore s)) 1)))) + (dotimes (i length m) + (setf (svref m i) u)))) + +(defparameter *mps* (make-vacuum-mps *dimension* *length*)) +(defparameter *mpp* (make-piab-mpo *dimension* *length*)) + +(dotimes (i *particles*) + (format t "creating particle #~a~%" (1+ i)) + (setf *mps* (apply-and-fuse *mpp* *mps*)) + (left-normalize *mps* *maxdim*) + (right-compress *mps* *maxdim*)) + +(save-mps + *mps* + *dimension* + *particles* + (make-pathname + :directory + (list :relative (format nil "states/revivals-l-~A-n-~A" *length* *particles*)))) diff --git a/states/trotzky-l-21-n-7/metadata b/states/trotzky-l-21-n-7/metadata @@ -0,0 +1 @@ +((:SITE-DIMENSION . 15) (:MODEL-LENGTH . 21) (:PARTICLE-NUMBER . 7)) diff --git a/states/trotzky-l-21-n-7/tensor.0 b/states/trotzky-l-21-n-7/tensor.0 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.1 b/states/trotzky-l-21-n-7/tensor.1 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.10 b/states/trotzky-l-21-n-7/tensor.10 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (3) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-4) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((3) (1) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.11 b/states/trotzky-l-21-n-7/tensor.11 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (4) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-4) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((4) (0) (-4)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.12 b/states/trotzky-l-21-n-7/tensor.12 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (4) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-5) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((4) (1) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.13 b/states/trotzky-l-21-n-7/tensor.13 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (5) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-5) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((5) (0) (-5)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.14 b/states/trotzky-l-21-n-7/tensor.14 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (5) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-6) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((5) (1) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.15 b/states/trotzky-l-21-n-7/tensor.15 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (6) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-6) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((6) (0) (-6)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.16 b/states/trotzky-l-21-n-7/tensor.16 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (6) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-7) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((6) (1) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.17 b/states/trotzky-l-21-n-7/tensor.17 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (7) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-7) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.18 b/states/trotzky-l-21-n-7/tensor.18 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (7) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-7) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.19 b/states/trotzky-l-21-n-7/tensor.19 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (7) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-7) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.2 b/states/trotzky-l-21-n-7/tensor.2 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.20 b/states/trotzky-l-21-n-7/tensor.20 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (7) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-7) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((7) (0) (-7)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.3 b/states/trotzky-l-21-n-7/tensor.3 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (0) (0)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.4 b/states/trotzky-l-21-n-7/tensor.4 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (0) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-1) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((0) (1) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.5 b/states/trotzky-l-21-n-7/tensor.5 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (1) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-1) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((1) (0) (-1)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.6 b/states/trotzky-l-21-n-7/tensor.6 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (1) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-2) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((1) (1) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.7 b/states/trotzky-l-21-n-7/tensor.7 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (2) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-2) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((2) (0) (-2)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.8 b/states/trotzky-l-21-n-7/tensor.8 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (2) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-3) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((2) (1) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky-l-21-n-7/tensor.9 b/states/trotzky-l-21-n-7/tensor.9 @@ -0,0 +1,23 @@ +#S(TENSOR + :INDICES ((#S(SEGMENT :NUMBERS (3) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (0) :DIMENSION 1) + #S(SEGMENT :NUMBERS (1) :DIMENSION 1) + #S(SEGMENT :NUMBERS (2) :DIMENSION 1) + #S(SEGMENT :NUMBERS (3) :DIMENSION 1) + #S(SEGMENT :NUMBERS (4) :DIMENSION 1) + #S(SEGMENT :NUMBERS (5) :DIMENSION 1) + #S(SEGMENT :NUMBERS (6) :DIMENSION 1) + #S(SEGMENT :NUMBERS (7) :DIMENSION 1) + #S(SEGMENT :NUMBERS (8) :DIMENSION 1) + #S(SEGMENT :NUMBERS (9) :DIMENSION 1) + #S(SEGMENT :NUMBERS (10) :DIMENSION 1) + #S(SEGMENT :NUMBERS (11) :DIMENSION 1) + #S(SEGMENT :NUMBERS (12) :DIMENSION 1) + #S(SEGMENT :NUMBERS (13) :DIMENSION 1) + #S(SEGMENT :NUMBERS (14) :DIMENSION 1)) + (#S(SEGMENT :NUMBERS (-3) :DIMENSION 1))) + :SECTORS (#S(SECTOR + :NUMBERS ((3) (0) (-3)) + :ARRAY #.(MAKE-ARRAY '(1 1 1) :ELEMENT-TYPE + '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS + '(((#C(1.0d0 0.0d0)))))))) diff --git a/states/trotzky.lisp b/states/trotzky.lisp @@ -0,0 +1,59 @@ +;; parameters + +(defparameter *dimension* 15) ;; physical dimension +(defparameter *length* 21) +(defparameter *particles* 7) + +;; libraries + +(load "conf.lisp") +(require :tebdol) + +(use-package '(:tensor :mps :bhm)) +(setf *print-level* 2) + +;; main + +(defun make-mps (dimension length particles) + (loop + with c = (/ (1- length) 2) + with m = (make-array length) + for i from (- c) to c + do + (setf (svref m (+ i c)) + (functional-tensor + (list + (list (make-segment + :numbers + (list + (cond + ((>= (- i) particles) 0) + ((>= i particles) particles) + ((evenp i) (/ (+ i particles -1) 2)) + (t (/ (+ i particles) 2)))) + :dimension + 1)) + (ket-physical-index dimension) + (list (make-segment + :numbers + (list + (cond + ((>= (- i) particles) 0) + ((>= i particles) (- particles)) + ((evenp i) (- (/ (+ i particles 1) 2))) + (t (/ (- (+ i particles)) 2)))) + :dimension + 1))) + #'(lambda (s) (declare (ignore s)) 1))) + finally + (return m))) + +(defparameter *mps* (make-mps *dimension* *length* *particles*)) + +(save-mps + *mps* + *dimension* + *particles* + (make-pathname + :directory + (list :relative (format nil "states/trotzky-l-~A-n-~A" *length* *particles*)))) diff --git a/tebdol/array.lisp b/tebdol/array.lisp @@ -0,0 +1,210 @@ +(defpackage :array + (:use :common-lisp :sb-alien :util :blas) + (:export :array-copy + :array-scalar-/ + :array-conjugate + :array-norm + :array-permute + :array-contract + :array-decompose + :array-addf)) + +(in-package :array) + +(defun array-copy (array) + (let ((new-array (make-blas-array (array-dimensions array)))) + (dotimes (i (array-total-size array) new-array) + (setf (row-major-aref new-array i) (row-major-aref array i))))) + +(defmacro define-unary-element-wise-operation (name function) + `(defun ,name (array &rest args) + (let ((new-array (make-blas-array (array-dimensions array)))) + (dotimes (i (array-total-size array) new-array) + (setf (row-major-aref new-array i) + (apply (function ,function) + (row-major-aref array i) + args)))))) + +(define-unary-element-wise-operation array-scalar-/ /) +(define-unary-element-wise-operation array-conjugate conjugate) + +(defun array-norm (array) + (let ((acc 0)) + (dotimes (i (array-total-size array) (sqrt acc)) + (incf acc (+ (expt (realpart (row-major-aref array i)) 2) + (expt (imagpart (row-major-aref array i)) 2)))))) + +;; compiler can produce optimized code for array operations + +;; array permutation generator + +(defmacro array-permute-macro (array permutation) + (let* ((a (gensym)) + (b (gensym)) + (rank (length permutation)) + (mi (loop for i below rank collect (gensym))) + (md (loop for i below rank collect (gensym))) + (mip (list-permute mi permutation)) + (mdp (list-permute md permutation))) + (labels ((nest (&optional (i 0)) + (if (eql i rank) + `(setf (aref ,b ,@mip) (aref ,a ,@mi)) + `(dotimes (,(nth i mi) ,(nth i md) + ,@(when (eql i 0) `(,b))) + ,(nest (1+ i)))))) + `(let* ((,a ,array) + ,@(loop for i below rank + collect `(,(nth i md) (array-dimension ,a ,i))) + (,b (make-array (list ,@mdp) :element-type 'blas-float))) + (declare (type (simple-array blas-float) ,a ,b)) + ,(nest))))) + +;; generate array permutation functions dynamically + +(let ((cache (make-hash-table :test 'equal))) + (defun array-permute (array permutation) + (funcall (or (gethash permutation cache) + (setf (gethash permutation cache) + (symbol-function + (compile (intern (format nil "ARRAY-PERMUTE-~{~D~^-~}" permutation)) + `(lambda (a) (array-permute-macro a ,permutation)))))) + array))) + +;;; contraction function generator + +(defun make-array-contract-fn (ra ia rb ib) + (labels ((perm (a rx ix s) + `(setf ,a (array-permute-macro ,a ,(make-indices-permutation rx ix s)))) + (syms (rx ix) + (let* ((d (loop for i below rx for g = (gensym) collect g)) + (k (loop for i in ix collect (nth i d))) + (l (loop for i below rx unless (member i ix) collect (nth i d)))) + (values d k l))) + (alien (a) + `(sap-alien (sb-sys:vector-sap (sb-ext:array-storage-vector ,a)) (* double))) + (contract (pa pb) + (let (transa transb lda ldb) + (if (eql pa :left) + (setf transb "t" ldb 'n) + (setf transb "n" ldb 'k)) + (if (eql pb :left) + (setf transa "n" lda 'm) + (setf transa "t" lda 'k)) + `(sb-sys:with-pinned-objects (a b c *blas-alien-0* *blas-alien-1*) + (zgemm ,transa ,transb m n k ,(alien *blas-alien-1*) ,(alien 'b) ,lda + ,(alien 'a) ,ldb ,(alien '*blas-alien-0*) ,(alien 'c) m) + c)))) + + (multiple-value-bind (da ka la) (syms ra ia) + (multiple-value-bind (db kb lb) (syms rb ib) + `(lambda (a b) + (declare (type (simple-array blas-float) a b)) + (destructuring-bind (,@da) (array-dimensions a) + (destructuring-bind (,@db) (array-dimensions b) + (unless (and ,@(loop for i in ka for j in kb collect `(= ,i ,j))) + (error "Array dimensions do not match.")) + (let ((k (* ,@ka)) + (n (* ,@la)) + (m (* ,@lb)) + (c (make-array (list ,@la ,@lb) :element-type 'blas-float))) + (declare (type (simple-array blas-float) c)) + ,@(let ((pa (indices-position ra ia)) + (pb (indices-position rb ib)) + (sa (indices-shape ia)) + (sb (indices-shape ib))) + (cond ((and pa pb) + (if (equal sa sb) + `(,(contract pa pb)) + `((if (< (array-total-size a) (array-total-size b)) + (progn + ,(perm 'a ra ia sb) + ,(contract :left pb)) + (progn + ,(perm 'b rb ib sa) + ,(contract pa :left)))))) + ((and pa (not pb)) + `(,(perm 'b rb ib sa) ,(contract pa :left))) + ((and (not pa) pb) + `(,(perm 'a ra ia sb) ,(contract :left pb))) + (t + (let ((s (loop for i below (length ia) collect i))) + `(,(perm 'a ra ia s) + ,(perm 'b rb ib s) + ,(contract :left :left)))))))))))))) + +;;; generate array contraction functions dynamically + +(let ((cache (make-hash-table :test 'equal))) + (defun array-contract (a ia b ib) + (unless (listp ia) + (setf ia (list ia))) + (unless (listp ib) + (setf ib (list ib))) + (let ((key (list (array-rank a) ia (array-rank b) ib))) + (funcall (or (gethash key cache) + (setf (gethash key cache) + (symbol-function + (compile + (intern + (format nil "ARRAY-CONTRACT-~{R~D-~{~D~^-~}-R~D-~{~D~^-~}~}" key)) + (apply #'make-array-contract-fn key))))) + a + b)))) + +;; array decomposition + +(defun array-decompose (array indices) + ;; do not destroy the original array + (setf array (array-copy array)) + (if (numberp indices) + (setf indices (list indices))) + (let ((r (array-rank array))) + + ;; permute indices if they are not in the correct order + (unless (eql (indices-position r indices) :left) + (let ((nl (loop for i below (length indices) collect i))) + (setf array (array-permute array (make-indices-permutation r indices nl))) + (setf indices nl))) + + (let* ((d (array-dimensions array)) + (dl (loop for i in indices collect (nth i d))) + (dr (loop for i below r unless (member i indices) collect (nth i d))) + (m (reduce #'* dr)) + (n (reduce #'* dl)) + (min (min m n)) + (max (max m n)) + (s (make-array min :element-type 'double-float)) + (u (make-blas-array (append (list min) dr))) + (vt (make-blas-array (append dl (list min)))) + (work (make-blas-array 1)) + (lwork -1) + (rwork (make-array (* min (max (+ 7 (* 5 min)) (+ (* 2 max) (* 2 min) 1))) + :element-type 'double-float)) + (iwork (make-integer-array (* 8 min)))) + + ;; svd + (sb-sys:with-pinned-objects (array s u vt rwork iwork) + (let ((ba (blas-array-alien array)) + (bs (blas-array-alien s)) + (bu (blas-array-alien u)) + (bvt (blas-array-alien vt)) + (brwork (blas-array-alien rwork)) + (biwork (blas-array-alien iwork))) + (macrolet ((f () + ;; todo: zgesdd returns info parameter, check it + `(sb-sys:with-pinned-objects (work) + (zgesdd "s" m n ba m bs bu m bvt min (blas-array-alien work) + lwork brwork biwork)))) + (f) + (setf lwork (floor (realpart (aref work 0)))) + (setf work (make-blas-array lwork)) + (f)))) + + (values vt s u)))) + +(defun array-addf (x y) + (unless (= (array-total-size x) (array-total-size y)) + (error "Array dimensions do not match.")) + (sb-sys:with-pinned-objects (x y *blas-alien-1*) + (zaxpy (array-total-size x) (blas-array-alien *blas-alien-1*) + (blas-array-alien y) 1 (blas-array-alien x) 1))) diff --git a/tebdol/bhm.lisp b/tebdol/bhm.lisp @@ -0,0 +1,194 @@ +(defpackage :bhm + (:use :common-lisp :blas :tensor :mps) + (:export :ket-physical-index + :bra-physical-index + :bose-hubbard-site-hamiltonian + :binary-bose-hubbard-site-hamiltonian)) + +(in-package :bhm) + +(defun ket-physical-index (n) + (loop for i below n collect + (make-segment :numbers (list i) :dimension 1))) + +(defun bra-physical-index (n) + (loop for i below n collect + (make-segment :numbers (list (- i)) :dimension 1))) + +;; +;; bose-hubbard site hamiltonian +;; +;; -1 0 0 1 +;; +;; +------+ +;; -1 | b+ 0 | +;; +-------+------+-------+ +;; 0 | 0 | 1 0 | 0 | +;; 0 | -j*b+ | h 1 | -j*b- | +;; +-------+------+-------+ +;; 1 | b- 0 | +;; +------+ +;; + +(defun bose-hubbard-site-operators (j u e) + (list + (cons '0 #'(lambda (n) (declare (ignore n)) 0)) + (cons '1 #'(lambda (n) (declare (ignore n)) 1)) + (cons 'b- #'(lambda (n) (sqrt n))) + (cons 'b+ #'(lambda (n) (sqrt (1+ n)))) + (cons '-jb- #'(lambda (n) (* (- j) (sqrt n)))) + (cons '-jb+ #'(lambda (n) (* (- j) (sqrt (1+ n))))) + (cons 'h #'(lambda (n) (+ (* 1/2 u n (1- n)) (* e n)))))) + +(defun bose-hubbard-site-hamiltonian (dimension j u e) + (let ((ops (bose-hubbard-site-operators j u e)) + (tbl (flet ((f (x y z) + (cons (list (make-subscript + :numbers (list (first x)) + :subscript (second x)) + (make-subscript + :numbers (list (first y)) + :subscript (second y))) + z))) + (list + (f '(-1 0) '( 0 0) 'b+) + (f '(-1 0) '( 0 1) '0) + (f '( 0 0) '(-1 0) '0) + (f '( 0 0) '( 0 0) '1) + (f '( 0 0) '( 0 1) 0) + (f '( 0 0) '( 1 0) '0) + (f '( 0 1) '(-1 0) '-jb+) + (f '( 0 1) '( 0 0) 'h) + (f '( 0 1) '( 0 1) '1) + (f '( 0 1) '( 1 0) '-jb-) + (f '( 1 0) '( 0 0) 'b-) + (f '( 1 0) '( 0 1) '0))))) + (let ((l (list (make-segment :numbers '(-1) :dimension 1) + (make-segment :numbers '(0) :dimension 2) + (make-segment :numbers '(1) :dimension 1)))) + (functional-tensor + (list l (ket-physical-index dimension) (bra-physical-index dimension) l) + #'(lambda (s) + (let ((x (find + (list (first s) (fourth s)) + tbl + :test #'equalp + :key #'car))) + (if x + (funcall (cdr (find (cdr x) ops :key #'car)) + (- (first (subscript-numbers (third s))))) + 0))))))) + +;; +;; binary bose-hubbard site hamiltonian +;; + +(defun bose-hubbard-site-hamiltonian-a (dimension j u e ux) + (let ((ops (cons + (cons 'uxn #'(lambda (n) (* ux n))) + (bose-hubbard-site-operators j u e))) + (tbl (flet ((f (x y z) + (cons (list (make-subscript + :numbers (first x) + :subscript (second x)) + (make-subscript + :numbers (first y) + :subscript (second y))) + z))) + (list + (f '((-1 0) 0) '(( 0 0) 0) 'b+) + (f '(( 0 -1) 0) '(( 0 1) 0) '1) + (f '(( 0 0) 0) '(( 0 0) 0) '1) + (f '(( 0 0) 1) '((-1 0) 0) '-jb+) + (f '(( 0 0) 1) '(( 0 0) 0) 'h) + (f '(( 0 0) 1) '(( 0 0) 1) 'uxn) + (f '(( 0 0) 1) '(( 0 0) 2) '1) + (f '(( 0 0) 1) '(( 1 0) 0) '-jb-) + (f '(( 0 1) 0) '(( 0 -1) 0) '1) + (f '(( 1 0) 0) '(( 0 0) 0) 'b-))))) + (functional-tensor + (list + (list (make-segment :numbers '(-1 0) :dimension 1) + (make-segment :numbers '( 0 -1) :dimension 1) + (make-segment :numbers '( 0 0) :dimension 2) + (make-segment :numbers '( 0 1) :dimension 1) + (make-segment :numbers '( 1 0) :dimension 1)) + (loop for i below dimension collect + (make-segment :numbers (list i 0) :dimension 1)) + (loop for i below dimension collect + (make-segment :numbers (list (- i) 0) :dimension 1)) + (list (make-segment :numbers '(-1 0) :dimension 1) + (make-segment :numbers '( 0 -1) :dimension 1) + (make-segment :numbers '( 0 0) :dimension 3) + (make-segment :numbers '( 0 1) :dimension 1) + (make-segment :numbers '( 1 0) :dimension 1))) + #'(lambda (s) + (let ((x (find + (list (first s) (fourth s)) + tbl + :test #'equalp + :key #'car))) + (if x + (funcall (cdr (find (cdr x) ops :key #'car)) + (- (first (subscript-numbers (third s))))) + 0)))))) + +(defun bose-hubbard-site-hamiltonian-b (dimension j u e) + (let ((ops (cons + (cons 'n #'(lambda (n) n)) + (bose-hubbard-site-operators j u e))) + (tbl (flet ((f (x y z) + (cons (list (make-subscript + :numbers (first x) + :subscript (second x)) + (make-subscript + :numbers (first y) + :subscript (second y))) + z))) + (list + (f '((-1 0) 0) '(( 1 0) 0) '1) + (f '(( 0 -1) 0) '(( 0 0) 0) 'b+) + (f '(( 0 0) 0) '(( 0 0) 0) '1) + (f '(( 0 0) 1) '(( 0 0) 0) 'n) + (f '(( 0 0) 2) '(( 0 -1) 0) '-jb+) + (f '(( 0 0) 2) '(( 0 0) 0) 'h) + (f '(( 0 0) 2) '(( 0 0) 1) '1) + (f '(( 0 0) 2) '(( 0 1) 0) '-jb-) + (f '(( 0 1) 0) '(( 0 0) 0) 'b-) + (f '(( 1 0) 0) '((-1 0) 0) '1))))) + (functional-tensor + (list + (list (make-segment :numbers '(-1 0) :dimension 1) + (make-segment :numbers '( 0 -1) :dimension 1) + (make-segment :numbers '( 0 0) :dimension 3) + (make-segment :numbers '( 0 1) :dimension 1) + (make-segment :numbers '( 1 0) :dimension 1)) + (loop for i below dimension collect + (make-segment :numbers (list 0 i) :dimension 1)) + (loop for i below dimension collect + (make-segment :numbers (list 0 (- i)) :dimension 1)) + (list (make-segment :numbers '(-1 0) :dimension 1) + (make-segment :numbers '( 0 -1) :dimension 1) + (make-segment :numbers '( 0 0) :dimension 2) + (make-segment :numbers '( 0 1) :dimension 1) + (make-segment :numbers '( 1 0) :dimension 1))) + #'(lambda (s) + (let ((x (find + (list (first s) (fourth s)) + tbl + :test #'equalp + :key #'car))) + (if x + (funcall (cdr (find (cdr x) ops :key #'car)) + (- (second (subscript-numbers (third s))))) + 0)))))) + +(defun binary-bose-hubbard-site-hamiltonian (dimensiona dimensionb ja jb ua ub ux ea eb) + (let ((a (bose-hubbard-site-hamiltonian-a dimensiona ja ua ea ux)) + (b (bose-hubbard-site-hamiltonian-b dimensionb jb ub eb))) + (tensor-fuse + (tensor-permute + (tensor-contract a 3 b 0) + '(0 1 3 2 4 5)) + '(1 3 5) + '(:normal :normal :reverse :reverse)))) diff --git a/tebdol/blas.lisp b/tebdol/blas.lisp @@ -0,0 +1,124 @@ +(defpackage :blas + (:use :common-lisp :sb-alien :sb-ext :sb-sys) + (:export :blas-float + :+blas-float-size+ + :+blas-0+ + :+blas-1+ + :+blas-i+ + :*blas-alien-0* + :*blas-alien-1* + :make-blas-array + :make-integer-array + :make-double-array + :blas-array-alien + :integer-array-alien + :double-array-alien + :dlamch + :zaxpy + :zgemm + :zgesdd + :zheevr)) + +(in-package :blas) + +(deftype blas-float () '(complex double-float)) + +(defconstant +blas-float-size+ 16) + +(defconstant +blas-0+ (coerce 0 'blas-float)) +(defconstant +blas-1+ (coerce 1 'blas-float)) +(defconstant +blas-i+ (coerce (complex 0 1) 'blas-float)) + +(defparameter *blas-alien-0* + (make-array 2 :element-type 'double-float :initial-contents '(0d0 0d0))) + +(defparameter *blas-alien-1* + (make-array 2 :element-type 'double-float :initial-contents '(1d0 0d0))) + +(defmacro make-blas-array (dimensions &rest args) + `(make-array ,dimensions ,@args :element-type 'blas-float)) + +(defmacro make-integer-array (dimensions &rest args) + `(make-array ,dimensions ,@args :element-type '(signed-byte 32))) + +(defmacro make-double-array (dimensions &rest args) + `(make-array ,dimensions ,@args :element-type 'double-float)) + +(defun blas-array-alien (array) + (sap-alien (vector-sap (array-storage-vector array)) (* double))) + +(defun integer-array-alien (array) + (sap-alien (vector-sap (array-storage-vector array)) (* int))) + +(defun double-array-alien (array) + (sap-alien (vector-sap (array-storage-vector array)) (* double))) + +(declaim (inline dlamch zaxpy zgemm zgesdd zheevr)) + +(define-alien-routine ("dlamch_" dlamch) double + (cmach c-string)) + +(define-alien-routine ("zaxpy_" zaxpy) void + (n int :copy) + (a (* double)) + (x (* double)) + (incx int :copy) + (y (* double)) + (incy int :copy)) + +(define-alien-routine ("zgemm_" zgemm) void + (transa c-string) + (transb c-string) + (m int :copy) + (n int :copy) + (k int :copy) + (alpha (* double)) + (a (* double)) + (lda int :copy) + (b (* double)) + (ldb int :copy) + (beta (* double)) + (c (* double)) + (ldc int :copy)) + +(define-alien-routine ("zgesdd_" zgesdd) void + (jobz c-string) + (m int :copy) + (n int :copy) + (a (* double)) + (lda int :copy) + (s (* double)) + (u (* double)) + (ldu int :copy) + (vt (* double)) + (ldvt int :copy) + (work (* double)) + (lwork int :copy) + (rwork (* double)) + (iwork (* double)) + (info int :out)) + +(define-alien-routine ("zheevr_" zheevr) void + (jobz c-string) + (range c-string) + (uplo c-string) + (n int :copy) + (a (* double)) + (lda int :copy) + (vl double :copy) + (vu double :copy) + (il int :copy) + (iu int :copy) + (abstol double :copy) + (m int :in-out) + (w (* double)) + (z (* double)) + (ldz int :copy) + (isuppz (* int)) + (work (* double)) + (lwork int :copy) + (rwork (* double)) + (lrwork int :copy) + (iwork (* int)) + (liwork int :copy) + (info int :out)) diff --git a/tebdol/exp.lisp b/tebdol/exp.lisp @@ -0,0 +1,69 @@ +(defpackage :exp + (:use :common-lisp :blas :array) + (:export :hermitian-matrix-exponential)) + +(in-package :exp) + +(defun hermitian-matrix-eigenvalues (matrix) + ;; do not destroy the original matrix + (setf matrix (array-copy matrix)) + (unless (and (= (array-rank matrix) 2) + (= (array-dimension matrix 0) (array-dimension matrix 1))) + (error "Matrix has incorrect dimensions.")) + (let* ((n (array-dimension matrix 0)) + (abstol (dlamch "s")) + (w (make-double-array n)) + (z (make-blas-array (list n n))) + (isuppz (make-integer-array (* 2 n))) + (work (make-blas-array 1)) + (lwork -1) + (rwork (make-double-array 1)) + (lrwork -1) + (iwork (make-integer-array 1)) + (liwork -1)) + (sb-sys:with-pinned-objects (matrix w z isuppz) + (let ((ba (double-array-alien matrix)) + (bw (double-array-alien w)) + (bz (double-array-alien z)) + (bisuppz (integer-array-alien isuppz))) + (macrolet ((m () + ;; todo: zheevr returns info parameter, check it + `(sb-sys:with-pinned-objects (work rwork iwork) + (let ((bwork (double-array-alien work)) + (brwork (double-array-alien rwork)) + (biwork (integer-array-alien iwork))) + (sb-int:with-float-traps-masked (:overflow :invalid :divide-by-zero) + (zheevr "v" "a" "u" n ba n 0d0 0d0 0 0 abstol 0 bw bz n + bisuppz bwork lwork brwork lrwork biwork liwork)))))) + (m) + (setf lwork (floor (realpart (aref work 0)))) + (setf work (make-blas-array lwork)) + (setf lrwork (floor (realpart (aref rwork 0)))) + (setf rwork (make-blas-array lrwork)) + (setf liwork (aref iwork 0)) + (setf iwork (make-integer-array liwork)) + (m)))) + ;; m = v*e*v'; return (e v') + (values w z))) + +;; diagonal-matrix-* is a destructive operation + +(defun diagonal-matrix-* (diagonal matrix) + (let ((m (array-dimension matrix 0)) + (n (array-dimension matrix 1))) + (dotimes (i m matrix) + (let ((x (aref diagonal i))) + (dotimes (j n) + (setf (aref matrix i j) (* (aref matrix i j) x))))))) + +(defun hermitian-matrix-exponential (matrix &optional (parameter 1)) + (multiple-value-bind (e w) (hermitian-matrix-eigenvalues matrix) + (let* ((n (array-dimension e 0)) + (f (make-blas-array n)) + (v (array-conjugate w))) + (dotimes (i n) + (setf (aref f i) + (coerce (exp (* parameter (aref e i))) + '(complex double-float)))) + (diagonal-matrix-* f w) + (array-contract v 0 w 0)))) diff --git a/tebdol/mpi.lisp b/tebdol/mpi.lisp @@ -0,0 +1,242 @@ +(defpackage :mpi + (:use :common-lisp :sb-alien :serial) + (:export :mpi-comm + :mpi-datatype + :mpi-request + :mpi-status + :*mpi-comm-world* + :*mpi-byte* + :*mpi-status-ignore* + :+mpi-any-source+ + :alien-mpi-init + :alien-mpi-finalize + :alien-mpi-comm-size + :alien-mpi-comm-rank + :alien-mpi-get-processor-name + :alien-mpi-send + :alien-mpi-ssend + :alien-mpi-issend + :alien-mpi-wait + :alien-mpi-recv + :alien-mpi-probe + :alien-mpi-get-count + :mpi-init + :mpi-finalize + :mpi-comm-size + :mpi-comm-rank + :mpi-get-processor-name + :mpi-send-object + :mpi-issend-object + :mpi-wait + :mpi-receive-object + :mpi-wtime)) + +(in-package :mpi) + +#+openmpi +(progn + (define-alien-type nil (struct ompi-communicator-t)) + (define-alien-type nil (struct ompi-datatype-t)) + (define-alien-type nil (struct ompi-request-t)) + (define-alien-type nil (struct ompi-status-t + (mpi-source int) + (mpi-tag int) + (mpi-error int) + (-count int) + (-cancelled int))) + + (define-alien-type mpi-comm (* (struct ompi-communicator-t))) + (define-alien-type mpi-datatype (* (struct ompi-datatype-t))) + (define-alien-type mpi-request (* (struct ompi-request-t))) + (define-alien-type mpi-status (struct ompi-status-t)) + + (define-alien-variable "ompi_mpi_comm_world" (struct ompi-communicator-t)) + (define-alien-variable "ompi_mpi_byte" (struct ompi-datatype-t)) + + (defparameter *mpi-comm-world* (addr ompi-mpi-comm-world)) + (defparameter *mpi-byte* (addr ompi-mpi-byte)) + (defparameter *mpi-status-ignore* (sb-sys:int-sap 0)) + (defconstant +mpi-any-source+ -1)) + +#+mpich +(progn + (define-alien-type mpi-comm int) + (define-alien-type mpi-datatype int) + (define-alien-type mpi-request int) + (define-alien-type mpi-status (struct mpi-status + (count int) + (cancelled int) + (mpi-source int) + (mpi-tag int) + (mpi-error int))) + + (defparameter *mpi-comm-world* #x44000000) + (defparameter *mpi-byte* #x4c00010d) + (defparameter *mpi-status-ignore* (sb-sys:int-sap 1)) + (defconstant +mpi-any-source+ -2)) + +(declaim (inline alien-mpi-init)) +(define-alien-routine ("MPI_Init" alien-mpi-init) int + (argc (* int)) + (argv (* (array c-string)))) + +(declaim (inline alien-mpi-finalize)) +(define-alien-routine ("MPI_Finalize" alien-mpi-finalize) int) + +(declaim (inline alien-mpi-comm-size)) +(define-alien-routine ("MPI_Comm_size" alien-mpi-comm-size) int + (comm mpi-comm) + (size (* int))) + +(declaim (inline alien-mpi-comm-rank)) +(define-alien-routine ("MPI_Comm_rank" alien-mpi-comm-rank) int + (comm mpi-comm) + (rank (* int))) + +(defconstant +mpi-max-processor-name+ 256) + +(declaim (inline alien-mpi-get-processor-name)) +(define-alien-routine ("MPI_Get_processor_name" alien-mpi-get-processor-name) int + (name (* char)) + (resultlen (* int))) + +(declaim (inline alien-mpi-send)) +(define-alien-routine ("MPI_Send" alien-mpi-send) int + (buf (* t)) + (count int) + (datatype mpi-datatype) + (dest int) + (tag int) + (comm mpi-comm)) + +(declaim (inline alien-mpi-ssend)) +(define-alien-routine ("MPI_Ssend" alien-mpi-ssend) int + (buf (* t)) + (count int) + (datatype mpi-datatype) + (dest int) + (tag int) + (comm mpi-comm)) + +(declaim (inline alien-mpi-issend)) +(define-alien-routine ("MPI_Issend" alien-mpi-issend) int + (buf (* t)) + (count int) + (datatype mpi-datatype) + (dest int) + (tag int) + (comm mpi-comm) + (request (* mpi-request))) + +(declaim (inline alien-mpi-wait)) +(define-alien-routine ("MPI_Wait" alien-mpi-wait) int + (request (* mpi-request)) + (status (* mpi-status))) + +(declaim (inline alien-mpi-recv)) +(define-alien-routine ("MPI_Recv" alien-mpi-recv) int + (buf (* t)) + (count int) + (datatype mpi-datatype) + (source int) + (tag int) + (comm mpi-comm) + (status (* mpi-status))) + +(declaim (inline alien-mpi-probe)) +(define-alien-routine ("MPI_Probe" alien-mpi-probe) int + (source int) + (tag int) + (comm mpi-comm) + (status (* mpi-status))) + +(declaim (inline alien-mpi-get-count)) +(define-alien-routine ("MPI_Get_count" alien-mpi-get-count) int + (status (* mpi-status)) + (datatype mpi-datatype) + (count (* int))) + +(declaim (inline alien-mpi-wtime)) +(define-alien-routine ("MPI_Wtime" alien-mpi-wtime) double) + +(defun mpi-init () + (alien-mpi-init nil nil)) + +(defun mpi-finalize () + (alien-mpi-finalize)) + +(defun mpi-comm-size (comm) + (with-alien ((size int)) + (alien-mpi-comm-size comm (addr size)) + size)) + +(defun mpi-comm-rank (comm) + (with-alien ((rank int)) + (alien-mpi-comm-rank comm (addr rank)) + rank)) + +(defun mpi-get-processor-name () + (with-alien ((name (* char) (make-alien char +mpi-max-processor-name+)) + (resultlen int)) + (prog2 + (alien-mpi-get-processor-name name (addr resultlen)) + (cast name c-string) + (free-alien name)))) + +(defun mpi-send-object (object dest) + (let ((buf (serialize object))) + (sb-sys:with-pinned-objects (buf) + (alien-mpi-send + (sap-alien + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + (* char)) + (length buf) + *mpi-byte* + dest + 0 + *mpi-comm-world*)))) + +;; external without-gcing + +(defun mpi-issend-object (object dest) + (let ((buf (serialize object)) + (request (make-alien mpi-request))) + (alien-mpi-issend + (sap-alien + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + (* char)) + (length buf) + *mpi-byte* + dest + 0 + *mpi-comm-world* + request) + request)) + +(defun mpi-wait (request) + (alien-mpi-wait + request + *mpi-status-ignore*) + (free-alien request)) + +(defun mpi-receive-object (source) + (with-alien ((status mpi-status) + (count int)) + (alien-mpi-probe source 0 *mpi-comm-world* (addr status)) + (alien-mpi-get-count (addr status) *mpi-byte* (addr count)) + (let ((buf (make-array count :element-type '(unsigned-byte 8)))) + (sb-sys:with-pinned-objects (buf) + (alien-mpi-recv + (sap-alien + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + (* char)) + count + *mpi-byte* + (slot status 'mpi-source) + (slot status 'mpi-tag) + *mpi-comm-world* + *mpi-status-ignore*)) + (values (deserialize buf) (slot status 'mpi-source))))) + +(defun mpi-wtime () + (alien-mpi-wtime)) diff --git a/tebdol/mps.lisp b/tebdol/mps.lisp @@ -0,0 +1,192 @@ +(defpackage :mps + (:use :common-lisp :blas :mpi :tensor) + (:export :make-submps + :submps-start + :submps-size + :submps-tensors + :submps-singvals + :left-open-boundary-tensor + :right-open-boundary-tensor + :mps-prepare + :mps-overlap + :mps-expectation-value + :save-mps + :state-parameter + :state-tensor + :load-state)) + +(in-package :mps) + +(defstruct submps + start + size + tensors + singvals) + +(defun left-open-boundary-tensor (operator) + (let* ((i (first (tensor-indices operator))) + (d (segment-dimension (find-if #'list-zerop i :key #'segment-numbers)))) + (functional-tensor + (list (list (make-segment :numbers '(0) :dimension 1)) + (conjugate-index i)) + #'(lambda (s) + (let ((u (subscript-subscript (second s)))) + (if (= u (1- d)) + 1 + 0)))))) + +(defun right-open-boundary-tensor (operator) + (let* ((i (fourth (tensor-indices operator)))) + (functional-tensor + (list (conjugate-index i) + (list (make-segment :numbers '(0) :dimension 1))) + #'(lambda (s) + (if (zerop (subscript-subscript (first s))) + 1 + 0))))) + +(defun val (tensor) + (let ((s (tensor-sectors tensor))) + (if s + (aref (sector-array (first s))) + +blas-0+))) + +(defun right-singvals-tensor (index) + (functional-tensor + (list + (mapcar #'(lambda (s) + (make-segment :numbers (list-- (segment-numbers s)) + :dimension (segment-dimension s))) + index) + index) + #'(lambda (s) (declare (ignore s)) 1))) + +(defun mps-prepare (rank length submps maxdim) + (let* ((s (submps-start submps)) + (d (submps-size submps)) + (u (submps-tensors submps)) + (v (make-array (length u))) + l w r) + (when (< s length) + (setf r (if (zerop s) + (let ((m (list (make-segment :numbers '(0) :dimension 1)))) + (functional-tensor + (list m m) + #'(lambda (s) (declare (ignore s)) 1))) + (mpi-receive-object (1- rank)))) + (loop for i from 0 below d do + (setf (svref u i) (tensor-contract r 1 (svref u i) 0)) + (multiple-value-setq (l w r) (tensor-decompose (svref u i) '(0 1) maxdim :left)) + (setf (svref u i) l) + (setf (svref v i) w)) + (if (= (+ s d) length) + (setf (svref v (1- d)) (right-singvals-tensor (nth 2 (tensor-indices (svref u (1- d)))))) + (mpi-send-object r (1+ rank)))) + (setf (submps-singvals submps) v))) + +(defun mps-overlap (size rank length submps1 submps2) + (let ((s (submps-start submps1)) + (d (submps-size submps1)) + (u1 (submps-tensors submps1)) + (u2 (submps-tensors submps2)) + l r) + (setf l (if (zerop s) + (let ((m (list (make-segment :numbers '(0) :dimension 1)))) + (functional-tensor (list m m) + #'(lambda (s) (declare (ignore s)) 1))) + (mpi-receive-object (1- rank)))) + (loop for i from 0 below d do + (setf l (tensor-contract + (tensor-conjugate (svref u2 i)) + '(0 1) + (tensor-contract l 1 (svref u1 i) 0) + '(0 1)))) + (if (and (not (zerop d)) + (= (+ s d) length)) + (progn + (setf r (functional-tensor + (list (nth 2 (tensor-indices (svref u2 (1- d)))) + (conjugate-index (nth 2 (tensor-indices (svref u1 (1- d)))))) + #'(lambda (s) (declare (ignore s)) 1))) + (setf l (tensor-contract l '(0 1) r '(0 1))))) + (if (= rank (1- size)) + (val l) + (mpi-send-object l (1+ rank))))) + +(defun mps-expectation-value (size rank length mpo submps) + (let ((s (submps-start submps)) + (d (submps-size submps)) + (u (submps-tensors submps)) + l r) + (setf l (if (zerop s) + (let ((m (list (make-segment :numbers '(0) :dimension 1)))) + (functional-tensor (list m m m) + #'(lambda (s) (declare (ignore s)) 1))) + (mpi-receive-object (1- rank)))) + (loop + for i from 0 below d + for j from s + do + (setf l (tensor-contract + (tensor-conjugate (svref u i)) + '(0 1) + (tensor-contract (svref mpo j) '(0 2) + (tensor-contract l 2 (svref u i) 0) '(1 2)) + '(2 0)))) + (if (and (not (zerop d)) + (= (+ s d) length)) + (progn + (setf r (functional-tensor + (list (nth 2 (tensor-indices (svref u (1- d)))) + (list (make-segment :numbers '(0) :dimension 1)) + (conjugate-index (nth 2 (tensor-indices (svref u (1- d)))))) + #'(lambda (s) (declare (ignore s)) 1))) + (setf l (tensor-contract l '(0 1 2) r '(0 1 2))))) + (if (= rank (1- size)) + (val l) + (mpi-send-object l (1+ rank))))) + +(defun save-mps (mps dimension particles pathname) + (with-standard-io-syntax + (let ((*print-pretty* t)) + (when (or (not (probe-file pathname)) (y-or-n-p "Overwrite state ~S?" pathname)) + (with-open-file (s (ensure-directories-exist (merge-pathnames #p"metadata" pathname)) + :direction :output + :if-exists :supersede) + (prin1 (list + (cons :site-dimension dimension) + (cons :model-length (length mps)) + (cons :particle-number particles)) + s) + (terpri s)) + (loop + for i below (length mps) + do (with-open-file (s (merge-pathnames (pathname (format nil "tensor.~A" i)) pathname) + :direction :output + :if-exists :supersede) + (prin1 (svref mps i) s) + (terpri s))))))) + +(defun state-parameter (pathname parameter) + (cdr (assoc parameter + (with-open-file (s (merge-pathnames #p"metadata" pathname)) + (read s))))) + +(defun state-tensor (pathname index) + (with-standard-io-syntax + (with-open-file (s (merge-pathnames (pathname (format nil "tensor.~A" index)) pathname)) + (read s)))) + +(defun load-submps (pathname start end) + (loop + with d = (- end start) + with a = (make-array (1+ d)) + for i from 0 + for j from start below end + do (setf (svref a i) (state-tensor pathname j)) + finally (return (make-submps :start start :size d :tensors a)))) + +(defun load-state (rank partition pathname) + (let ((s (if (zerop rank) 0 (nth (1- rank) partition))) + (e (nth rank partition))) + (load-submps pathname s e))) diff --git a/tebdol/part.lisp b/tebdol/part.lisp @@ -0,0 +1,171 @@ +(defpackage :part + (:use :common-lisp :mpi :mps) + (:export :uniform-partition + :balance-partition + :change-partition)) + +(in-package :part) + +(defun uniform-partition (size length) + (multiple-value-bind (q r) (truncate length size) + (loop + with d = (max 2 q) + with e = (if (< q 2) 0 r) + for i below size + for j from d by d + when (or (< (* 2 i) e) + (<= (* 2 (- size i)) e)) + do (incf j) + if (< j length) + collect j + else + collect length))) + +(defun balanced-partition (size loads) + (loop + with l = (mapcar #'rationalize loads) + with a = (/ (apply #'+ l) size) + with i = 0 + for c in l + count c into j + sum c into s + when (>= s a) + if (and (> (- s a) (/ c 2)) + (> j (+ i 2))) + collect (1- j) into p + and + do + (decf s a) + (setf i (1- j)) + else + when (> j (1+ i)) + collect j into p + and + do + (decf s a) + (setf i j) + finally + (return + (let ((q (butlast p))) + (nconc + q + (make-list (- size (length q)) :initial-element (length l))))))) + +(defun send-subloads (subloads) + (mpi-send-object subloads 0)) + +(defun collect-subloads (size subloads) + (loop + with a = (make-array size) + repeat (1- size) + do + (multiple-value-bind (s i) (mpi-receive-object +mpi-any-source+) + (setf (svref a i) s)) + finally + (setf (svref a 0) subloads) + (return + (loop + for s across a + nconc s)))) + +(defun balance-partition (size rank subloads) + (if (zerop rank) + (let* ((l (collect-subloads size subloads)) + (p (balanced-partition size l))) + p) + (send-subloads subloads))) + +(defun instructions (length oldpartition newpartition) + (loop + with op = 0 + with np = 0 + for i below length + when (eql i (car oldpartition)) + do + (incf op) + (setf oldpartition (cdr oldpartition)) + when (eql i (car newpartition)) + do + (incf np) + (setf newpartition (cdr newpartition)) + unless (= op np) + collect (list i op np))) + +(defun sort-instructions (instructions) + (loop + for i in instructions + when (evenp (cadr i)) + collect i into e + else + collect i into o + finally (return (nconc e o)))) + +(defun send-instructions (size instructions) + (let ((a (make-array size :initial-element nil))) + (dolist (i instructions) + (push i (svref a (cadr i))) + (push i (svref a (caddr i)))) + (sb-sys:without-gcing + (loop + for i from 1 below size + collect (mpi-issend-object (svref a i) i) + into l + finally (mapc #'mpi-wait l))) + (svref a 0))) + +(defun receive-instructions () + (mpi-receive-object 0)) + +(defun process-instructions (rank length submps instructions) + (if instructions + (let ((l (loop + repeat (submps-size submps) + for i from (submps-start submps) + collect i)) + s r) + (loop + for i in instructions + if (= (cadr i) rank) + do + (setf l (delete (car i) l)) + (push i s) + else + do + (push (car i) l) + (push i r)) + (let* ((os (submps-start submps)) + (ou (submps-tensors submps)) + (ov (submps-singvals submps)) + (ns (reduce #'min l :initial-value length)) + (nd (length l)) + (nu (make-array (1+ nd) :initial-element nil)) + (nv (make-array (1+ nd) :initial-element nil)) + m) + (sb-sys:without-gcing + (dolist (i (nreverse s)) + (let ((j (- (car i) os)) + (p (caddr i))) + (push (mpi-issend-object (svref ou j) p) m) + (push (mpi-issend-object (svref ov j) p) m))) + (dolist (i (nreverse r)) + (let ((j (- (car i) ns)) + (p (cadr i))) + (setf (svref nu j) (mpi-receive-object p)) + (setf (svref nv j) (mpi-receive-object p)))) + (mapc #'mpi-wait m)) + (dotimes (i nd) + (unless (svref nu i) + (let ((j (+ i (- ns os)))) + (setf (svref nu i) (svref ou j)) + (setf (svref nv i) (svref ov j))))) + (make-submps :start ns :size nd :tensors nu :singvals nv))) + submps)) + +(defun change-partition (size rank length submps oldpartition newpartition) + (if (zerop rank) + (let* ((i (instructions length oldpartition newpartition)) + (s (sort-instructions i)) + (l (send-instructions size s))) + (process-instructions rank length submps l)) + (let ((l (receive-instructions))) + (process-instructions rank length submps l)))) diff --git a/tebdol/serial.lisp b/tebdol/serial.lisp @@ -0,0 +1,237 @@ +(defpackage :serial + (:use :common-lisp :blas :tensor) + (:export :serialize + :deserialize)) + +(in-package :serial) + +(eval-when (:compile-toplevel :load-toplevel :execute) + (defparameter *types* + '(fixnum double-float list (array blas-float) array sector segment tensor))) + +(defparameter *serializers* (make-array (length *types*) :element-type 'compiled-function)) +(defparameter *deserializers* (make-array (length *types*) :element-type 'compiled-function)) + +(defconstant +index-size+ 1) +(defconstant +fixnum-size+ 4) + +(defmacro defser (type (obj buf pos) &body body) + (let ((i (position type *types* :test #'subtypep))) + `(setf (svref *serializers* ,i) + (lambda (,obj ,buf ,pos) + (declare + (type (array (unsigned-byte 8)) buf) + (type fixnum pos)) + (if (plusp (length buf)) + (pack ,i +index-size+ ,buf ,pos)) + (incf pos +index-size+) + (+ +index-size+ (progn ,@body)))))) + +(defmacro defdes (type (buf pos) &body body) + (let ((i (position type *types* :test #'subtypep))) + `(setf (svref *deserializers* ,i) + (lambda (,buf ,pos) + (declare + (type fixnum pos)) + ,@body)))) + +(declaim (inline pack unpack)) + +(defun pack (val size buf pos) + (declare + (type fixnum val size pos) + (type (simple-array (unsigned-byte 8)) buf)) + (case size + (1 (setf + (sb-sys:sap-ref-8 + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + pos) + val)) + (4 (setf + (sb-sys:signed-sap-ref-32 + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + pos) + val)))) + +(defun unpack (size buf pos) + (declare + (type fixnum size pos) + (type (simple-array (unsigned-byte 8)) buf)) + (case size + (1 (sb-sys:sap-ref-8 + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + pos)) + (4 (sb-sys:signed-sap-ref-32 + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + pos)))) + +(defun ser (obj buf pos) + (funcall + (svref + *serializers* + #.`(etypecase obj + ,@(loop + for i below (length *types*) + collect (list (nth i *types*) i)))) + obj + buf + pos)) + +(defun des (buf pos) + (declare (type fixnum pos)) + (multiple-value-bind (val size) + (funcall + (svref *deserializers* (unpack +index-size+ buf pos)) + buf + (+ pos +index-size+)) + (declare (type fixnum size)) + (values val (+ +index-size+ size)))) + +(defser fixnum (obj buf pos) + (if (plusp (length buf)) + (pack obj +fixnum-size+ buf pos)) + +fixnum-size+) + +(defdes fixnum (buf pos) + (values (unpack +fixnum-size+ buf pos) +fixnum-size+)) + +(defser double-float (obj buf pos) + (if (plusp (length buf)) + (setf + (sb-sys:sap-ref-double + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + pos) + obj)) + 8) + +(defdes double-float (buf pos) + (values (sb-sys:sap-ref-double + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + pos) + 8)) + +(defser list (obj buf pos) + (if (plusp (length buf)) + (pack (length obj) +fixnum-size+ buf pos)) + (let ((i +fixnum-size+)) + (declare (type fixnum i)) + (dolist (x obj i) + (incf i (the fixnum (ser x buf (+ pos i))))))) + +(defdes list (buf pos) + (let ((n (unpack +fixnum-size+ buf pos)) + (i +fixnum-size+) + (obj nil)) + (declare (type fixnum n i)) + (dotimes (j n (values (nreverse obj) i)) + (multiple-value-bind (val size) (des buf (+ pos i)) + (declare (type fixnum size)) + (incf i size) + (push val obj))))) + +(defser array (obj buf pos) + (let* ((d (array-dimensions obj)) + (i (ser d buf pos))) + (declare (type fixnum i)) + (dotimes (j (array-total-size obj) i) + (incf i (the fixnum (ser (row-major-aref obj j) buf (+ pos i))))))) + +(defdes array (buf pos) + (multiple-value-bind (d i) (des buf pos) + (declare (type list d)) + (declare (type fixnum i)) + (let ((obj (make-array d))) + (dotimes (j (array-total-size obj) (values obj i)) + (multiple-value-bind (val size) (des buf (+ pos i)) + (declare (type fixnum size)) + (incf i size) + (setf (row-major-aref obj j) val)))))) + +(defser (array blas-float) (obj buf pos) + (let* ((d (array-dimensions obj)) + (n (* (array-total-size obj) +blas-float-size+)) + (i (ser d buf pos))) + (declare (type fixnum n i)) + (if (plusp (length buf)) + (sb-sys:with-pinned-objects (obj buf) + (sb-sys:memmove + (sb-alien:sap-alien + (sb-sys:sap+ + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + (+ pos i)) + (* char)) + (sb-alien:sap-alien + (sb-sys:vector-sap (sb-ext:array-storage-vector obj)) + (* char)) + n))) + (+ i n))) + +(defdes (array blas-float) (buf pos) + (multiple-value-bind (d i) (des buf pos) + (declare (type list d)) + (declare (type fixnum i)) + (let* ((obj (make-blas-array d)) + (n (* (array-total-size obj) +blas-float-size+))) + (declare (type fixnum n)) + (sb-sys:with-pinned-objects (obj buf) + (sb-sys:memmove + (sb-alien:sap-alien + (sb-sys:vector-sap (sb-ext:array-storage-vector obj)) + (* char)) + (sb-alien:sap-alien + (sb-sys:sap+ + (sb-sys:vector-sap (sb-ext:array-storage-vector buf)) + (+ pos i)) + (* char)) + n)) + (values obj (+ i n))))) + +(defser sector (obj buf pos) + (let ((i (ser (sector-numbers obj) buf pos))) + (declare (type fixnum i)) + (+ i (the fixnum (ser (sector-array obj) buf (+ pos i)))))) + +(defdes sector (buf pos) + (declare (type fixnum pos)) + (multiple-value-bind (val1 size1) (des buf pos) + (declare (type fixnum size1)) + (multiple-value-bind (val2 size2) (des buf (+ pos size1)) + (declare (type fixnum size2)) + (values (make-sector :numbers val1 :array val2) (+ size1 size2))))) + +(defser segment (obj buf pos) + (let ((i (ser (segment-numbers obj) buf pos))) + (declare (type fixnum i)) + (+ i (the fixnum (ser (segment-dimension obj) buf (+ pos i)))))) + +(defdes segment (buf pos) + (declare (type fixnum pos)) + (multiple-value-bind (val1 size1) (des buf pos) + (declare (type fixnum size1)) + (multiple-value-bind (val2 size2) (des buf (+ pos size1)) + (declare (type fixnum size2)) + (values (make-segment :numbers val1 :dimension val2) (+ size1 size2))))) + +(defser tensor (obj buf pos) + (let ((i (ser (tensor-indices obj) buf pos))) + (declare (type fixnum i)) + (+ i (the fixnum (ser (tensor-sectors obj) buf (+ pos i)))))) + +(defdes tensor (buf pos) + (declare (type fixnum pos)) + (multiple-value-bind (val1 size1) (des buf pos) + (declare (type fixnum size1)) + (multiple-value-bind (val2 size2) (des buf (+ pos size1)) + (declare (type fixnum size2)) + (values (make-tensor :indices val1 :sectors val2) (+ size1 size2))))) + +(defun size (obj) + (ser obj (make-array 0 :element-type '(unsigned-byte 8)) 0)) + +(defun serialize (obj) + (let* ((buf (make-array (size obj) :element-type '(unsigned-byte 8)))) + (ser obj buf 0) + buf)) + +(defun deserialize (buf) + (des buf 0)) diff --git a/tebdol/tebd.lisp b/tebdol/tebd.lisp @@ -0,0 +1,281 @@ +(defpackage :tebd + (:use :common-lisp :blas :tensor :mpi :mps) + (:export :make-mph-propagator + :tebd-evolve)) + +(in-package :tebd) + +(defun left-tensor (operator) + (let* ((i (first (tensor-indices operator))) + (d (segment-dimension (find-if #'list-zerop i :key #'segment-numbers)))) + (functional-tensor + (list i) + #'(lambda (s) + (let ((u (first s))) + (if (and (list-zerop (subscript-numbers u)) + (= (subscript-subscript u) (1- d))) + 1 + 0)))))) + +(defun right-tensor (operator) + (let* ((i (fourth (tensor-indices operator)))) + (functional-tensor + (list i) + #'(lambda (s) + (let ((u (first s))) + (if (and (list-zerop (subscript-numbers u)) + (= (subscript-subscript u)) 0) + 1 + 0)))))) + +(defun central-tensor (operator) + (let* ((i (first (tensor-indices operator))) + (d (segment-dimension (find-if #'list-zerop i :key #'segment-numbers)))) + (functional-tensor + (list i + (reverse + (mapcar #'(lambda (s) + (make-segment :numbers (list-- (segment-numbers s)) + :dimension (segment-dimension s))) + i))) + #'(lambda (s) + (let ((u (subscript-subscript (first s))) + (v (subscript-subscript (second s)))) + (if (= u v) + (if (= u (1- d)) + 0 + 1) + 0)))))) + +(defun make-single-site-propagator (operator step) + (let* ((l (left-tensor operator)) + (r (right-tensor operator)) + (h (tensor-contract l 0 (tensor-contract operator 3 r 0) 0))) + (tensor-exponential h '((0) (1)) (* -1 +blas-i+ step)))) + +(defun make-double-site-propagator (operator1 operator2 step) + (let* ((l (left-tensor operator1)) + (r (right-tensor operator2)) + (c (central-tensor operator2)) + (h (tensor-contract + l + 0 + (tensor-contract + operator1 + 3 + (tensor-contract c 1 (tensor-contract operator2 3 r 0) 0) + 0) + 0))) + (tensor-exponential h '((0 2) (1 3)) (* -1 +blas-i+ step)))) + +(defun make-single-propagators (mph step) + (list (make-single-site-propagator (svref mph 0) step) + (make-single-site-propagator (svref mph (1- (length mph))) step))) + +(defun make-double-propagators (mph step) + (loop + with l = (1- (length mph)) + with a = (make-array l) + for i below l + do + (setf (svref a i) + (make-double-site-propagator + (svref mph i) + (svref mph (1+ i)) + step)) + finally + (return a))) + +(defstruct propagator + single1 + double1 + single2 + double2) + +(defun make-mph-propagator (mph step) + (make-propagator + :single1 (make-single-propagators mph step) + :double1 (make-double-propagators mph step) + :single2 (make-single-propagators mph (/ step 2)) + :double2 (make-double-propagators mph (/ step 2)))) + +(defun apply-single-site-operator (operator tensor) + (tensor-permute (tensor-contract operator 1 tensor 1) '(1 0 2))) + +(defun apply-double-site-operator (operator tensor1 tensor2 singvals maxdim) + (let ((u (tensor-contract + operator + '(1 3) + (tensor-contract tensor1 2 tensor2 0) + '(1 2)))) + (multiple-value-bind (l s r) + (tensor-decompose (tensor-contract u 3 singvals 0) '(2 0) maxdim :left) + (declare (ignore r)) + (values l s (tensor-contract (tensor-conjugate l) '(0 1) u '(2 0)))))) + +(defun apply-even-tebd-operators (length single double submps maxdim &key (subwt nil) (gc nil)) + (let* ((s (submps-start submps)) + (d (submps-size submps)) + (e (+ s d)) + (u (submps-tensors submps)) + (v (submps-singvals submps))) + (if (and (= e length) (oddp e) (not (zerop d))) + (let ((w (mpi-wtime))) + (setf (svref u (1- d)) (apply-single-site-operator (cadr single) (svref u (1- d)))) + (when subwt + (incf (svref subwt (1- d)) (- (mpi-wtime) w))))) + (loop + for i from (if (evenp s) 0 1) below (if (= e length) (1- d) d) by 2 + for w = (mpi-wtime) + do + (when gc + (sb-ext:gc :full t)) + (multiple-value-bind (l s r) + (apply-double-site-operator + (svref double (+ s i)) + (svref u i) + (svref u (1+ i)) + (svref v (1+ i)) + maxdim) + (setf (svref u i) l) + (setf (svref u (1+ i)) r) + (setf (svref v i) s)) + (when subwt + (incf (svref subwt i) (- (mpi-wtime) w)))))) + +(defun apply-odd-tebd-operators (length single double submps maxdim &key (subwt nil) (gc nil)) + (let* ((s (submps-start submps)) + (d (submps-size submps)) + (e (+ s d)) + (u (submps-tensors submps)) + (v (submps-singvals submps))) + (if (zerop s) + (let ((w (mpi-wtime))) + (setf (svref u 0) (apply-single-site-operator (car single) (svref u 0))) + (when subwt + (incf (svref subwt 0) (- (mpi-wtime) w))))) + (if (and (= e length) (evenp e) (not (zerop d))) + (let ((w (mpi-wtime))) + (setf (svref u (1- d)) (apply-single-site-operator (cadr single) (svref u (1- d)))) + (when subwt + (incf (svref subwt (1- d)) (- (mpi-wtime) w))))) + (loop + for i from (if (evenp s) 1 0) below (if (= e length) (1- d) d) by 2 + for w = (mpi-wtime) + do + (when gc + (sb-ext:gc :full t)) + (multiple-value-bind (l s r) + (apply-double-site-operator + (svref double (+ s i)) + (svref u i) (svref u (1+ i)) + (svref v (1+ i)) + maxdim) + (setf (svref u i) l) + (setf (svref u (1+ i)) r) + (setf (svref v i) s)) + (when subwt + (incf (svref subwt i) (- (mpi-wtime) w)))))) + +(defun tebd-exchange-phase-0 (rank length submps) + (let* ((s (submps-start submps)) + (d (submps-size submps)) + (e (+ s d)) + (u (submps-tensors submps)) + (v (submps-singvals submps))) + (when (not (zerop d)) + (let (l) + (sb-sys:without-gcing + (when (and (oddp s) (/= s 0)) + (push (mpi-issend-object (svref u 0) (1- rank)) l) + (push (mpi-issend-object (svref v 0) (1- rank)) l)) + (when (and (oddp e) (/= e length)) + (setf (svref u d) (mpi-receive-object (1+ rank))) + (setf (svref v d) (mpi-receive-object (1+ rank)))) + (mapc #'mpi-wait l)))))) + +(defun tebd-exchange-phase-1 (rank length submps) + (let* ((s (submps-start submps)) + (d (submps-size submps)) + (e (+ s d)) + (u (submps-tensors submps)) + (v (submps-singvals submps))) + (when (not (zerop d)) + (let (l) + (sb-sys:without-gcing + (when (and (oddp e) (/= e length)) + (push (mpi-issend-object (svref u d) (1+ rank)) l)) + (when (and (evenp s) (/= s 0)) + (push (mpi-issend-object (svref u 0) (1- rank)) l) + (push (mpi-issend-object (svref v 0) (1- rank)) l)) + (when (and (oddp s) (/= s 0)) + (setf (svref u 0) (mpi-receive-object (1- rank)))) + (when (and (evenp e) (/= e length)) + (setf (svref u d) (mpi-receive-object (1+ rank))) + (setf (svref v d) (mpi-receive-object (1+ rank)))) + (mapc #'mpi-wait l)))))) + +(defun tebd-exchange-phase-2 (rank length submps) + (let* ((s (submps-start submps)) + (d (submps-size submps)) + (e (+ s d)) + (u (submps-tensors submps)) + (v (submps-singvals submps))) + (when (not (zerop d)) + (let (l) + (sb-sys:without-gcing + (when (and (evenp e) (/= e length)) + (push (mpi-issend-object (svref u d) (1+ rank)) l)) + (when (and (oddp s) (/= s 0)) + (push (mpi-issend-object (svref u 0) (1- rank)) l) + (push (mpi-issend-object (svref v 0) (1- rank)) l)) + (when (and (evenp s) (/= s 0)) + (setf (svref u 0) (mpi-receive-object (1- rank)))) + (when (and (oddp e) (/= e length)) + (setf (svref u d) (mpi-receive-object (1+ rank))) + (setf (svref v d) (mpi-receive-object (1+ rank)))) + (mapc #'mpi-wait l)))))) + +(defun tebd-exchange-phase-3 (rank length submps) + (let* ((s (submps-start submps)) + (d (submps-size submps)) + (e (+ s d)) + (u (submps-tensors submps))) + (when (not (zerop d)) + (let (l) + (sb-sys:without-gcing + (when (and (oddp e) (/= e length)) + (push (mpi-issend-object (svref u d) (1+ rank)) l)) + (when (and (oddp s) (/= s 0)) + (setf (svref u 0) (mpi-receive-object (1- rank)))) + (mapc #'mpi-wait l)))))) + +(defun tebd-evolve (rank length propagator submps maxdim &key (subwt nil) (gc nil)) + (tebd-exchange-phase-0 rank length submps) + (apply-even-tebd-operators + length + (propagator-single2 propagator) + (propagator-double2 propagator) + submps + maxdim + :subwt subwt + :gc gc) + (tebd-exchange-phase-1 rank length submps) + (apply-odd-tebd-operators + length + (propagator-single1 propagator) + (propagator-double1 propagator) + submps + maxdim + :subwt subwt + :gc gc) + (tebd-exchange-phase-2 rank length submps) + (apply-even-tebd-operators + length + (propagator-single2 propagator) + (propagator-double2 propagator) + submps + maxdim + :subwt subwt + :gc gc) + (tebd-exchange-phase-3 rank length submps)) diff --git a/tebdol/tebdol.asd b/tebdol/tebdol.asd @@ -0,0 +1,21 @@ +(in-package :asdf-user) + +(defsystem "tebdol" + :description "TEBDOL is an implementation of the time-evolving block + decimation algorithm for simulating evolution of ultracold atoms in + optical lattices." + :version "0.2.0" + :author "Miroslav Urbanek <miroslav.urbanek@mff.cuni.cz>" + :licence "GPL-3+" + :serial t + :components ((:file "util") + (:file "blas") + (:file "array") + (:file "exp") + (:file "tensor") + (:file "serial") + (:file "mpi") + (:file "mps") + (:file "part") + (:file "tebd") + (:file "bhm"))) diff --git a/tebdol/tensor.lisp b/tebdol/tensor.lisp @@ -0,0 +1,737 @@ +(defpackage :tensor + (:use :common-lisp :util :blas :array :exp) + (:export :tensor + :make-tensor + :tensor-indices + :tensor-sectors + :segment + :make-segment + :segment-numbers + :segment-dimension + :subscript + :make-subscript + :subscript-numbers + :subscript-subscript + :sector + :make-sector + :sector-numbers + :sector-array + :list-+ + :list-- + :list-zerop + :functional-tensor + :conjugate-index + :tensor-rank + :tensor-dimensions + :tensor-total-size + :tensor-conjugate + :tensor-contract + :tensor-permute + :tensor-fuse + :tensor-decompose + :tensor-exponential)) + +(in-package :tensor) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defstruct tensor + (indices nil :type list) + (sectors nil :type list)) + +(defstruct segment + (numbers nil :type list) + (dimension 0 :type fixnum)) + +(defstruct subscript + (numbers nil :type list) + (subscript 0 :type fixnum)) + +(defstruct sector + (numbers nil :type list) + array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun list-+ (&rest args) + (apply #'mapcar #'+ args)) + +;; (defun list-- (&rest args) +;; (apply #'mapcar #'- args)) + +;; optimized version with a single argument + +(defun list-- (l) + (loop for i in l collect (- i))) + +(defun list-zerop (list) + (if list + (and (zerop (the fixnum (car list))) (list-zerop (cdr list))) + t)) + +(defun list-< (a b) + (cond + ((null a) (not (null b))) + ((null b) nil) + ((= (the fixnum (car a)) (the fixnum (car b))) (list-< (cdr a) (cdr b))) + (t (< (the fixnum (car a)) (the fixnum (car b)))))) + +(defun array-zerop (array) + (declare (type (array blas-float) array)) + (dotimes (i (array-total-size array) t) + (unless (zerop (row-major-aref array i)) (return nil)))) + +(defun sort-index (index) + (sort (copy-list index) #'list-< :key #'segment-numbers)) + +(defun remove-zero-sectors (sectors) + (mapcan + #'(lambda (s) + (unless (array-zerop (sector-array s)) + (list s))) + sectors)) + +(defun tensor-index-sequence (indices) + (mapcar + #'(lambda (mi) (mapcar #'nth mi indices)) + (multi-index-sequence (mapcar #'length indices)))) + +(defun functional-tensor (indices function) + (let ((si (mapcar #'sort-index indices))) + (make-tensor + :indices + si + :sectors + (remove-zero-sectors + (mapcan + #'(lambda (ts) + (let ((mn (mapcar #'segment-numbers ts)) + (md (mapcar #'segment-dimension ts))) + (when (list-zerop (apply #'list-+ mn)) ; symmetry condition + (let ((a (make-blas-array md))) + (dolist (mi (multi-index-sequence md) + (list (make-sector :numbers mn :array a))) + (setf (apply #'aref a mi) + (coerce (funcall function + (mapcar + #'(lambda (n i) + (make-subscript + :numbers n + :subscript i)) + mn + mi)) + 'blas-float))))))) + (tensor-index-sequence si)))))) + +(defun conjugate-index (index) + (reverse + (mapcar #'(lambda (s) + (make-segment + :numbers (list-- (segment-numbers s)) + :dimension (segment-dimension s))) + index))) + +(defun tensor-rank (tensor) + (length (tensor-indices tensor))) + +(defun tensor-dimensions (tensor) + (loop + for i in (tensor-indices tensor) + collect (reduce #'+ i :key #'segment-dimension))) + +(defun tensor-total-size (tensor) + (reduce #'+ (tensor-sectors tensor) :key #'(lambda (s) (array-total-size (sector-array s))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; tensor-conjugate + +(defun tensor-conjugate (tensor) + (make-tensor + :indices + (mapcar + #'(lambda (i) + (reverse + (mapcar #'(lambda (s) + (make-segment + :numbers (list-- (segment-numbers s)) + :dimension (segment-dimension s))) + i))) + (tensor-indices tensor)) + :sectors + (mapcar + #'(lambda (s) + (make-sector + :numbers (mapcar #'list-- (sector-numbers s)) + :array (array-conjugate (sector-array s)))) + (tensor-sectors tensor)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; tensor-permute + +(defun tensor-permute (tensor permutation) + (make-tensor + :indices + (list-permute (tensor-indices tensor) permutation) + :sectors + (mapcar + #'(lambda (s) + (make-sector + :numbers (list-permute (sector-numbers s) permutation) + :array (array-permute (sector-array s) permutation))) + (tensor-sectors tensor)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; tensor-contract + +(defun index-match-p (x y) + (and (= (length x) (length y)) + (loop + for i in x + for j in (reverse y) + unless (and (list-zerop (list-+ (segment-numbers i) + (segment-numbers j))) + (zerop (- (segment-dimension i) + (segment-dimension j)))) + return nil + finally (return t)))) + +(defun indices-match-p (x y) + (and (= (length x) (length y)) + (loop + for i in x + for j in y + unless (index-match-p i j) + return nil + finally (return t)))) + +(defun contraction-hash-table (tensor indices) + (let ((h (make-hash-table :test 'equal))) + (dolist (x (tensor-sectors tensor) h) + (push x + (gethash (loop + with n = (sector-numbers x) + for i in indices + collect (nth i n)) + h))))) + +(defun sector-contract (sector1 indices1 sector2 indices2) + (make-sector + :numbers + (nconc + (loop + with n = (sector-numbers sector1) + for i below (length n) + unless (member i indices1) + collect (nth i n)) + (loop with n = (sector-numbers sector2) + for i below (length n) + unless (member i indices2) + collect (nth i n))) + :array + (array-contract (sector-array sector1) + indices1 + (sector-array sector2) + indices2))) + +(defun tensor-contract (tensor1 indices1 tensor2 indices2) + (if (numberp indices1) + (setf indices1 (list indices1))) + (if (numberp indices2) + (setf indices2 (list indices2))) + (unless (indices-match-p (loop + with n = (tensor-indices tensor1) + for i in indices1 + collect (nth i n)) + (loop + with n = (tensor-indices tensor2) + for i in indices2 + collect (nth i n))) + (error "Contraction indices do not match.")) + (let ((h1 (contraction-hash-table tensor1 indices1)) + (h2 (contraction-hash-table tensor2 indices2)) + (h (make-hash-table :test 'equal))) + (loop + for k being the hash-keys in h1 + using (hash-value v1) + do (let ((v2 (gethash (loop for i in k collect (list-- i)) h2))) + (when v2 + (dolist (s1 v1) + (dolist (s2 v2) + (let* ((s (sector-contract s1 indices1 s2 indices2)) + (n (sector-numbers s)) + (v (gethash n h))) + (if v + (array-addf (sector-array v) + (sector-array s)) + (setf (gethash n h) s)))))))) + (make-tensor + :indices + (nconc + (loop + with n = (tensor-indices tensor1) + for i below (length n) + unless (member i indices1) + collect (nth i n)) + (loop + with n = (tensor-indices tensor2) + for i below (length n) + unless (member i indices2) + collect (nth i n))) + :sectors + (remove-zero-sectors + (loop + for v being the hash-values of h + collect v))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; tensor-fuse + +(defstruct joint + segments + subscript) + +(defun joint-numbers (joint) + (mapcar #'segment-numbers (joint-segments joint))) + +(defun joint-number (joint) + (apply #'list-+ (joint-numbers joint))) + +(defun joint-dimensions (joint) + (mapcar #'segment-dimension (joint-segments joint))) + +(defun joint-dimension (joint) + (apply #'* (joint-dimensions joint))) + +(defun fused-index-hash-table (indices type) + (let ((md (mapcar #'length indices)) + (hi (make-hash-table :test #'equal))) + (dolist (mi (multi-index-sequence md)) + (let ((f (make-joint :segments (mapcar #'nth mi indices)))) + (push f (gethash (joint-number f) hi)))) + (loop + for k being the hash-keys in hi + using (hash-value v) + do (let ((l (sort v #'list-< :key #'(lambda (n) (apply #'append (joint-numbers n))))) + (hf (make-hash-table :test #'equal)) + (d 0)) + (loop + with s = 0 + for i in (if (eq type :reverse) (reverse l) l) + do + (setf (joint-subscript i) s) + (setf (gethash (joint-numbers i) hf) i) + (incf s (joint-dimension i)) + finally + (setf d s)) + (setf (gethash k hi) hf)) + finally (return hi)))) + +(defun fused-index-joints (number fiht) + (loop + for v being the hash-values in (gethash number fiht) + collect v)) + +(defun fused-index-dimension (numbers fiht) + (loop + for v being the hash-values in (gethash numbers fiht) + sum (joint-dimension v))) + +(defun fused-index-subscript (numbers fiht) + (joint-subscript (gethash numbers (gethash (apply #'list-+ numbers) fiht)))) + +(defun fused-index (fiht) + (sort-index + (loop + for k being the hash-keys in fiht + using (hash-value v) + collect + (make-segment + :numbers + k + :dimension + (loop + for w being the hash-values in v + sum (joint-dimension w)))))) + +(defun partite-list (list borders) + (loop + with m + with s + with b = (pop borders) + for i below (length list) + for j in list + when (and b (= i b)) + do + (push (nreverse s) m) + (setf s nil + b (pop borders)) + do + (push j s) + finally + (push (nreverse s) m) + (return (nreverse m)))) + +(defun array-fuse (array borders) + (make-blas-array + (mapcar #'(lambda (m) (apply #'* m)) + (partite-list (array-dimensions array) borders)) + :displaced-to array)) + +;; (defun array-insert-subarray (array subscripts subarray) +;; (dolist (mi (multi-index-sequence (array-dimensions subarray)) +;; subarray) +;; (setf (apply #'aref array (mapcar #'+ subscripts mi)) +;; (apply #'aref subarray mi)))) + +;; optimized version + +(defun make-array-insert-subarray-fn (rank) + (let ((mi (loop for i below rank collect (gensym))) + (md (loop for i below rank collect (gensym))) + (ms (loop for i below rank collect (gensym)))) + (labels ((nest (&optional (i 0)) + (if (eql i rank) + `(setf (aref array + ,@(loop for j below rank + collect `(+ ,(nth j ms) ,(nth j mi)))) + (aref subarray ,@mi)) + `(dotimes (,(nth i mi) ,(nth i md) + ,@(when (eql i 0) '(subarray))) + ,(nest (1+ i)))))) + `(lambda (array subscripts subarray) + (declare (type (array blas-float) array subarray)) + (let (,@(loop for i below rank + collect `(,(nth i md) (array-dimension subarray ,i))) + ,@(loop for i below rank + collect `(,(nth i ms) (nth ,i subscripts)))) + (declare (type fixnum ,@ms)) + ,(nest)))))) + +(let ((cache (make-hash-table))) + (defun array-insert-subarray (array subscripts subarray) + (let ((l (length subscripts))) + (funcall (or (gethash l cache) + (setf (gethash l cache) + (symbol-function + (compile (intern (format nil "ARRAY-INSERT-SUBARRAY-~D" l)) + (make-array-insert-subarray-fn l))))) + array + subscripts + subarray)))) + +;; (defun array-extract-subarray (array subscripts dimensions) +;; (let ((a (make-blas-array dimensions))) +;; (dolist (mi (multi-index-sequence dimensions) a) +;; (setf (apply #'aref a mi) +;; (apply #'aref array (mapcar #'+ subscripts mi)))))) + +;; optimized version + +(defun make-array-extract-subarray-fn (rank) + (let ((mi (loop for i below rank collect (gensym))) + (md (loop for i below rank collect (gensym))) + (ms (loop for i below rank collect (gensym)))) + (labels ((nest (&optional (i 0)) + (if (eql i rank) + `(setf (aref a ,@mi) + (aref array + ,@(loop for j below rank + collect `(+ ,(nth j ms) ,(nth j mi))))) + `(dotimes (,(nth i mi) ,(nth i md) + ,@(when (eql i 0) '(a))) + ,(nest (1+ i)))))) + `(lambda (array subscripts dimensions) + (declare (type (array blas-float) array) + (type list dimensions)) + (let ((a (make-blas-array dimensions)) + ,@(loop for i below rank + collect `(,(nth i md) (nth ,i dimensions))) + ,@(loop for i below rank + collect `(,(nth i ms) (nth ,i subscripts)))) + (declare (type fixnum ,@md ,@ms)) + ,(nest)))))) + +(let ((cache (make-hash-table))) + (defun array-extract-subarray (array subscripts dimensions) + (let ((l (length subscripts))) + (funcall (or (gethash l cache) + (setf (gethash l cache) + (symbol-function + (compile (intern (format nil "ARRAY-EXTRACT-SUBARRAY-~D" l)) + (make-array-extract-subarray-fn l))))) + array + subscripts + dimensions)))) + +(defun make-fused-array (numbers fiht) + (make-blas-array + (mapcar #'(lambda (n h) (fused-index-dimension n h)) numbers fiht) + :initial-element +blas-0+)) + +(defun fused-array-subscripts (partition fiht) + (mapcar #'(lambda (n h) (fused-index-subscript n h)) partition fiht)) + +(defun tensor-fuse (tensor borders types) + (let ((f (mapcar #'fused-index-hash-table + (partite-list (tensor-indices tensor) borders) + types)) + (h (make-hash-table :test 'equal))) + (dolist (s (tensor-sectors tensor)) + (let* ((p (partite-list (sector-numbers s) borders)) + (n (mapcar #'(lambda (l) (apply #'list-+ l)) p)) + (v (gethash n h))) + ;; create the array if it does not exist + (unless v + (setf v (make-fused-array n f)) + (setf (gethash n h) v)) + ;; insert sector array into the fused array + (array-insert-subarray v + (fused-array-subscripts p f) + (array-fuse (sector-array s) borders)))) + (make-tensor + :indices + (mapcar #'fused-index f) + :sectors + (remove-zero-sectors + (loop + for k being the hash-keys in h + using (hash-value v) + collect + (make-sector :numbers k :array v)))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; tensor-decompose + +(defstruct svd + numbers + u + s + v) + +(defun svd-reduce-dimensions (svd maxdim normalization) + (let* ((u (svd-u svd)) + (s (svd-s svd)) + (v (svd-v svd)) + (ud (array-dimension u 0)) + (sd (min maxdim (length s))) + (vd (array-dimension v 1)) + (un (make-blas-array (list ud sd))) + (vn (make-blas-array (list sd vd))) + (sn (map 'vector + (if (member normalization '(:none :left :right)) + #'identity + #'sqrt) + (subseq s 0 sd)))) + (case normalization + (:none + (dotimes (i ud) + (dotimes (j sd) + (setf (aref un i j) (aref u i j)))) + (dotimes (i sd) + (dotimes (j vd) + (setf (aref vn i j) (aref v i j))))) + (:left + (dotimes (i ud) + (dotimes (j sd) + (setf (aref un i j) (aref u i j)))) + (dotimes (i sd) + (dotimes (j vd) + (setf (aref vn i j) (* (aref v i j) (aref sn i)))))) + (:right + (dotimes (i ud) + (dotimes (j sd) + (setf (aref un i j) (* (aref u i j) (aref sn j))))) + (dotimes (i sd) + (dotimes (j vd) + (setf (aref vn i j) (aref v i j))))) + (:mixed + (dotimes (i ud) + (dotimes (j sd) + (setf (aref un i j) (* (aref u i j) (aref sn j))))) + (dotimes (i sd) + (dotimes (j vd) + (setf (aref vn i j) (* (aref v i j) (aref sn i))))))) + (make-svd :numbers (svd-numbers svd) :u un :v vn))) + +(defun diagonal-matrix (diagonal maxdim) + (let* ((n (min maxdim (length diagonal))) + (m (make-blas-array (list n n) :initial-element +blas-0+))) + (dotimes (i n m) + (setf (aref m i i) (coerce (aref diagonal i) 'blas-float))))) + +(defun array-reshape (array dimensions) + (let ((a (make-blas-array dimensions))) + (dotimes (i (array-total-size a) a) + (setf (row-major-aref a i) (row-major-aref array i))))) + +(defun tensor-decompose (tensor indices maxdim normalization) + (if (numberp indices) + (setf indices (list indices))) + ;; permute if necessary + (let ((r (tensor-rank tensor))) + (unless (eql (indices-position r indices) :left) + (let ((l (loop for i below (length indices) collect i))) + (setf tensor (tensor-permute tensor (make-indices-permutation r indices l))) + (setf indices l)))) + (let* ((b (list (length indices))) + (p (partite-list (tensor-indices tensor) b)) + (f (mapcar #'fused-index-hash-table p '(:normal :reverse))) + (ah (make-hash-table :test #'equal)) + (sh (make-hash-table :test #'eq)) + sl i1 i2 is1 is2 s1 s2 ss) + ;; create fused arrays + (loop + for s in (tensor-sectors tensor) + do + (let* ((r (partite-list (sector-numbers s) b)) + (n (mapcar #'(lambda (l) (apply #'list-+ l)) r)) + (a (gethash n ah))) + (unless a + (setf a (make-fused-array n f)) + (setf (gethash n ah) a)) + (array-insert-subarray + a + (fused-array-subscripts r f) + (array-fuse (sector-array s) b)))) + ;; decompose arrays + (loop + for n being the hash-keys in ah + using (hash-value a) + do + (multiple-value-bind (u s v) (array-decompose a 0) + (let ((x (make-svd :numbers n :u u :s s :v v))) + (loop + for i across s + unless (essentially-zerop i) + do (push (cons i x) sl))))) + (loop + repeat maxdim + for (s . x) in (sort sl #'> :key #'car) + do (if (gethash x sh) + (incf (gethash x sh)) + (setf (gethash x sh) 1))) + ;; reduce the array dimensions + (loop + for s being the hash-keys in sh + using (hash-value d) + do + (let* ((r (svd-reduce-dimensions s d normalization)) + (n (svd-numbers r)) + (n1 (first n)) + (n2 (second n)) + (l1 (fused-index-joints n1 (first f))) + (l2 (fused-index-joints n2 (second f)))) + (push (make-segment :numbers n2 :dimension d) i1) + (push (make-segment :numbers n1 :dimension d) i2) + (push (make-segment :numbers n1 :dimension d) is1) + (push (make-segment :numbers n2 :dimension d) is2) + ;; first sectors + (dotimes (i (length l1)) + (let ((j (nth i l1))) + (push (make-sector + :numbers + (append (joint-numbers j) (list n2)) + :array + (array-reshape + (array-extract-subarray + (svd-u r) + (list (joint-subscript j) 0) + (list (joint-dimension j) d)) + (append (joint-dimensions j) (list d)))) + s1))) + ;; second sectors + (dotimes (i (length l2)) + (let ((j (nth i l2))) + (push (make-sector + :numbers + (append (list n1) (joint-numbers j)) + :array + (array-reshape + (array-extract-subarray + (svd-v r) + (list 0 (joint-subscript j)) + (list d (joint-dimension j))) + (append (list d) (joint-dimensions j)))) + s2))) + ;; singular values + (push (make-sector + :numbers (list n1 n2) + :array (diagonal-matrix (svd-s s) d)) + ss) + )) + ;; return decomposition + (values + (make-tensor :indices (append (first p) (list (sort-index i1))) + :sectors s1) + (make-tensor :indices (list (sort-index is1) (sort-index is2)) + :sectors ss) + (make-tensor :indices (append (list (sort-index i2)) (second p)) + :sectors s2)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; tensor-exponential + +(defun tensor-permuted-exponential (tensor borders parameter) + (let* ((f (mapcar #'fused-index-hash-table + (partite-list (tensor-indices tensor) borders) + '(:normal :reverse))) + (h (make-hash-table :test 'equal))) + ;; add sectors; zero sectors will turn into unit sectors in the exponential + (loop + for k being the hash-keys in (first f) + do (let ((n (list k (list-- k)))) + (setf (gethash n h) (make-fused-array n f)))) + (dolist (s (tensor-sectors tensor)) + (let* ((p (partite-list (sector-numbers s) borders)) + (n (mapcar #'(lambda (l) (apply #'list-+ l)) p)) + (v (gethash n h))) + ;; insert sector array into the fused array + (array-insert-subarray v + (fused-array-subscripts p f) + (array-fuse (sector-array s) borders)))) + (make-tensor + :indices + (tensor-indices tensor) + :sectors + ;; todo: are zero sectors possible here? + (remove-zero-sectors + (loop + with l + for k being the hash-keys in h + using (hash-value v) + do + (setf v (hermitian-matrix-exponential v parameter)) + (let ((ml (mapcar #'fused-index-joints k f))) + (dolist (mi (multi-index-sequence (mapcar #'length ml))) + (let* ((j (mapcar #'nth mi ml))) + (push (make-sector + :numbers + (mapcan #'joint-numbers j) + :array + (array-reshape + (array-extract-subarray + v + (mapcar #'joint-subscript j) + (mapcar #'joint-dimension j)) + (mapcan #'joint-dimensions j))) + l)))) + finally (return l)))))) + +(defun tensor-exponential (tensor groups parameter) + (unless (= (length groups) 2) + (error "Incorrect numbers of index groups.")) + (let* ((r (tensor-rank tensor)) + (o (apply #'append groups)) + (p (loop for i below r collect i))) + (tensor-permute + (tensor-permuted-exponential + (tensor-permute tensor (make-indices-permutation r o p)) + (list (length (first groups))) + parameter) + (make-indices-permutation r p o)))) diff --git a/tebdol/util.lisp b/tebdol/util.lisp @@ -0,0 +1,57 @@ +(defpackage :util + (:use :common-lisp) + (:export :essentially-zerop + :list-permute + :multi-index-sequence + :indices-position + :indices-shape + :make-indices-permutation)) + +(in-package :util) + +(declaim (inline essentially-zerop)) + +(defun essentially-zerop (number &optional (epsilon double-float-epsilon)) + (<= (abs number) epsilon)) + +(defun list-permute (list permutation) + (let* ((n (length list)) + (l (make-list n))) + (dotimes (i n l) + (setf (nth (nth i permutation) l) (nth i list))))) + +(defun multi-index-sequence (dimensions) + (if (zerop (length dimensions)) + '(nil) + (let ((m (multi-index-sequence (cdr dimensions)))) + (loop for i below (car dimensions) append + (loop for x in m collect (cons i x)))))) + +(defun indices-position (rank indices) + (labels ((incp (seq &optional (i (car seq))) + (cond ((null seq) t) + ((eql (car seq) i) (incp (cdr seq) (1+ i))) + (t nil)))) + (let* ((s (sort (copy-list indices) #'<))) + (when (incp s) + (cond ((or (null s) (eql (car s) 0)) :left) + ((eql (1+ (car (last s))) rank) :right) + (t nil)))))) + +(defun indices-shape (indices) + (when (car indices) + (let ((d (loop for i in indices minimize i))) + (mapcar #'(lambda (x) (- x d)) indices)))) + +(defun make-indices-permutation (rank ia ib) + (let ((l (loop for i below rank collect i)) + (p (make-list rank :initial-element nil))) + (mapc #'(lambda (i j) + (setf (nth i p) j) + (setf l (delete j l))) + ia + ib) + (do ((x p (cdr x))) + ((null x) p) + (if (null (car x)) + (setf (car x) (pop l))))))