From 2837c3fc4f010682f1f71bdbd33adec3d4629f4e Mon Sep 17 00:00:00 2001 From: Vitor Hideyoshi Date: Thu, 25 Jun 2020 22:56:24 -0300 Subject: [PATCH] v1.3 --- LICENSE | 278 ++++++++++++++++++ Older Versions/yoshi-seals1.2.1.tar.gz | Bin 0 -> 25513 bytes Older Versions/yoshi-seals1.2.1/LICENSE | 278 ++++++++++++++++++ Older Versions/yoshi-seals1.2.1/README.md | 53 ++++ .../yoshi-seals1.2.1/Seals/Seals.py | 268 +++++++++++++++++ .../yoshi-seals1.2.1/Seals/__init__.py | 23 ++ .../Seals/__pycache__/Seals.cpython-37.pyc | Bin 0 -> 4657 bytes .../Seals/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 307 bytes .../yoshi-seals1.2.1/build/lib/Seals/Seals.py | 268 +++++++++++++++++ .../build/lib/Seals/__init__.py | 23 ++ .../dist/yoshi-seals-1.2.1.tar.gz | Bin 0 -> 3841 bytes .../dist/yoshi-seals-1.2.tar.gz | Bin 0 -> 3805 bytes .../dist/yoshi_seals-1.2-py3-none-any.whl | Bin 0 -> 10571 bytes .../dist/yoshi_seals-1.2.1-py3-none-any.whl | Bin 0 -> 10615 bytes Older Versions/yoshi-seals1.2.1/setup.py | 27 ++ .../yoshi_seals.egg-info/PKG-INFO | 69 +++++ .../yoshi_seals.egg-info/SOURCES.txt | 9 + .../yoshi_seals.egg-info/dependency_links.txt | 1 + .../yoshi_seals.egg-info/requires.txt | 2 + .../yoshi_seals.egg-info/top_level.txt | 1 + Older Versions/yoshi-seals1.2.tar.gz | Bin 0 -> 24970 bytes Older Versions/yoshi-seals1.2/LICENSE | 278 ++++++++++++++++++ Older Versions/yoshi-seals1.2/README.md | 53 ++++ Older Versions/yoshi-seals1.2/Seals/Seals.py | 260 ++++++++++++++++ .../yoshi-seals1.2/Seals/__init__.py | 23 ++ .../yoshi-seals1.2/build/lib/Seals/Seals.py | 260 ++++++++++++++++ .../build/lib/Seals/__init__.py | 23 ++ .../dist/yoshi-seals-1.2.tar.gz | Bin 0 -> 3805 bytes .../dist/yoshi_seals-1.2-py3-none-any.whl | Bin 0 -> 10571 bytes Older Versions/yoshi-seals1.2/setup.py | 27 ++ .../yoshi_seals.egg-info/PKG-INFO | 69 +++++ .../yoshi_seals.egg-info/SOURCES.txt | 9 + .../yoshi_seals.egg-info/dependency_links.txt | 1 + .../yoshi_seals.egg-info/requires.txt | 2 + .../yoshi_seals.egg-info/top_level.txt | 1 + README.md | 55 ++++ yoshi-seals1.3/LICENSE | 278 ++++++++++++++++++ yoshi-seals1.3/README.md | 55 ++++ yoshi-seals1.3/Seals/__init__.py | 24 ++ .../Seals/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 283 bytes yoshi-seals1.3/Seals/eigen/__init__.py | 20 ++ yoshi-seals1.3/Seals/eigen/eigen.py | 51 ++++ yoshi-seals1.3/Seals/insert/__init__.py | 23 ++ .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 259 bytes .../insert/__pycache__/insert.cpython-37.pyc | Bin 0 -> 673 bytes yoshi-seals1.3/Seals/insert/insert.py | 47 +++ yoshi-seals1.3/Seals/process/__init__.py | 27 ++ .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 388 bytes .../__pycache__/process.cpython-37.pyc | Bin 0 -> 2597 bytes yoshi-seals1.3/Seals/process/process.py | 203 +++++++++++++ yoshi-seals1.3/Seals/scan/__init__.py | 23 ++ .../scan/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 262 bytes .../scan/__pycache__/scan.cpython-37.pyc | Bin 0 -> 541 bytes yoshi-seals1.3/Seals/scan/scan.py | 33 +++ yoshi-seals1.3/Seals/write/__init__.py | 23 ++ .../write/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 256 bytes .../write/__pycache__/write.cpython-37.pyc | Bin 0 -> 596 bytes yoshi-seals1.3/Seals/write/write.py | 33 +++ yoshi-seals1.3/build/lib/Seals/__init__.py | 24 ++ .../build/lib/Seals/eigen/__init__.py | 20 ++ yoshi-seals1.3/build/lib/Seals/eigen/eigen.py | 51 ++++ .../build/lib/Seals/insert/__init__.py | 23 ++ .../build/lib/Seals/insert/insert.py | 47 +++ .../build/lib/Seals/process/__init__.py | 27 ++ .../build/lib/Seals/process/process.py | 203 +++++++++++++ .../build/lib/Seals/scan/__init__.py | 23 ++ yoshi-seals1.3/build/lib/Seals/scan/scan.py | 33 +++ .../build/lib/Seals/write/__init__.py | 23 ++ yoshi-seals1.3/build/lib/Seals/write/write.py | 33 +++ yoshi-seals1.3/dist/yoshi-seals-1.3.tar.gz | Bin 0 -> 5699 bytes .../dist/yoshi_seals-1.3-py3-none-any.whl | Bin 0 -> 17438 bytes yoshi-seals1.3/setup.py | 27 ++ yoshi-seals1.3/yoshi_seals.egg-info/PKG-INFO | 71 +++++ .../yoshi_seals.egg-info/SOURCES.txt | 18 ++ .../yoshi_seals.egg-info/dependency_links.txt | 1 + .../yoshi_seals.egg-info/requires.txt | 2 + .../yoshi_seals.egg-info/top_level.txt | 1 + 77 files changed, 3828 insertions(+) create mode 100644 LICENSE create mode 100644 Older Versions/yoshi-seals1.2.1.tar.gz create mode 100644 Older Versions/yoshi-seals1.2.1/LICENSE create mode 100644 Older Versions/yoshi-seals1.2.1/README.md create mode 100755 Older Versions/yoshi-seals1.2.1/Seals/Seals.py create mode 100644 Older Versions/yoshi-seals1.2.1/Seals/__init__.py create mode 100644 Older Versions/yoshi-seals1.2.1/Seals/__pycache__/Seals.cpython-37.pyc create mode 100644 Older Versions/yoshi-seals1.2.1/Seals/__pycache__/__init__.cpython-37.pyc create mode 100644 Older Versions/yoshi-seals1.2.1/build/lib/Seals/Seals.py create mode 100644 Older Versions/yoshi-seals1.2.1/build/lib/Seals/__init__.py create mode 100644 Older Versions/yoshi-seals1.2.1/dist/yoshi-seals-1.2.1.tar.gz create mode 100644 Older Versions/yoshi-seals1.2.1/dist/yoshi-seals-1.2.tar.gz create mode 100644 Older Versions/yoshi-seals1.2.1/dist/yoshi_seals-1.2-py3-none-any.whl create mode 100644 Older Versions/yoshi-seals1.2.1/dist/yoshi_seals-1.2.1-py3-none-any.whl create mode 100644 Older Versions/yoshi-seals1.2.1/setup.py create mode 100644 Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/PKG-INFO create mode 100644 Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/SOURCES.txt create mode 100644 Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/dependency_links.txt create mode 100644 Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/requires.txt create mode 100644 Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/top_level.txt create mode 100644 Older Versions/yoshi-seals1.2.tar.gz create mode 100644 Older Versions/yoshi-seals1.2/LICENSE create mode 100644 Older Versions/yoshi-seals1.2/README.md create mode 100755 Older Versions/yoshi-seals1.2/Seals/Seals.py create mode 100644 Older Versions/yoshi-seals1.2/Seals/__init__.py create mode 100644 Older Versions/yoshi-seals1.2/build/lib/Seals/Seals.py create mode 100644 Older Versions/yoshi-seals1.2/build/lib/Seals/__init__.py create mode 100644 Older Versions/yoshi-seals1.2/dist/yoshi-seals-1.2.tar.gz create mode 100644 Older Versions/yoshi-seals1.2/dist/yoshi_seals-1.2-py3-none-any.whl create mode 100644 Older Versions/yoshi-seals1.2/setup.py create mode 100644 Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/PKG-INFO create mode 100644 Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/SOURCES.txt create mode 100644 Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/dependency_links.txt create mode 100644 Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/requires.txt create mode 100644 Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/top_level.txt create mode 100644 README.md create mode 100644 yoshi-seals1.3/LICENSE create mode 100644 yoshi-seals1.3/README.md create mode 100644 yoshi-seals1.3/Seals/__init__.py create mode 100644 yoshi-seals1.3/Seals/__pycache__/__init__.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/eigen/__init__.py create mode 100644 yoshi-seals1.3/Seals/eigen/eigen.py create mode 100644 yoshi-seals1.3/Seals/insert/__init__.py create mode 100644 yoshi-seals1.3/Seals/insert/__pycache__/__init__.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/insert/__pycache__/insert.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/insert/insert.py create mode 100644 yoshi-seals1.3/Seals/process/__init__.py create mode 100644 yoshi-seals1.3/Seals/process/__pycache__/__init__.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/process/__pycache__/process.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/process/process.py create mode 100644 yoshi-seals1.3/Seals/scan/__init__.py create mode 100644 yoshi-seals1.3/Seals/scan/__pycache__/__init__.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/scan/__pycache__/scan.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/scan/scan.py create mode 100644 yoshi-seals1.3/Seals/write/__init__.py create mode 100644 yoshi-seals1.3/Seals/write/__pycache__/__init__.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/write/__pycache__/write.cpython-37.pyc create mode 100644 yoshi-seals1.3/Seals/write/write.py create mode 100644 yoshi-seals1.3/build/lib/Seals/__init__.py create mode 100644 yoshi-seals1.3/build/lib/Seals/eigen/__init__.py create mode 100644 yoshi-seals1.3/build/lib/Seals/eigen/eigen.py create mode 100644 yoshi-seals1.3/build/lib/Seals/insert/__init__.py create mode 100644 yoshi-seals1.3/build/lib/Seals/insert/insert.py create mode 100644 yoshi-seals1.3/build/lib/Seals/process/__init__.py create mode 100644 yoshi-seals1.3/build/lib/Seals/process/process.py create mode 100644 yoshi-seals1.3/build/lib/Seals/scan/__init__.py create mode 100644 yoshi-seals1.3/build/lib/Seals/scan/scan.py create mode 100644 yoshi-seals1.3/build/lib/Seals/write/__init__.py create mode 100644 yoshi-seals1.3/build/lib/Seals/write/write.py create mode 100644 yoshi-seals1.3/dist/yoshi-seals-1.3.tar.gz create mode 100644 yoshi-seals1.3/dist/yoshi_seals-1.3-py3-none-any.whl create mode 100644 yoshi-seals1.3/setup.py create mode 100644 yoshi-seals1.3/yoshi_seals.egg-info/PKG-INFO create mode 100644 yoshi-seals1.3/yoshi_seals.egg-info/SOURCES.txt create mode 100644 yoshi-seals1.3/yoshi_seals.egg-info/dependency_links.txt create mode 100644 yoshi-seals1.3/yoshi_seals.egg-info/requires.txt create mode 100644 yoshi-seals1.3/yoshi_seals.egg-info/top_level.txt diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d2c5abe --- /dev/null +++ b/LICENSE @@ -0,0 +1,278 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2.1.tar.gz b/Older Versions/yoshi-seals1.2.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5f77793df5f9353ce8c5ac8a61af239a3cbf2b5b GIT binary patch literal 25513 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%0D_@O}Z{wSa~EyikAx`T!vnz68oz%TkL9>y)`n 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 literal 0 HcmV?d00001 diff --git a/Older Versions/yoshi-seals1.2.1/LICENSE b/Older Versions/yoshi-seals1.2.1/LICENSE new file mode 100644 index 0000000..d2c5abe --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/LICENSE @@ -0,0 +1,278 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2.1/README.md b/Older Versions/yoshi-seals1.2.1/README.md new file mode 100644 index 0000000..3d00157 --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/README.md @@ -0,0 +1,53 @@ +# Seals - Numeric Calculus + +This python package is made for applied Numeric Calculus of Linear Algebra. It is made with the following objectives in mind: + +* Scan *csv* files to make a numpy matrix. + +* Write a matrix into a *csv* file + +* Insert user input into a matrix or a vector. + +* Use methods to proccess the matrices. + * Identity Matrix + * Gauss Elimination + * Inverse Matrix + * Cholesky Decomposition + * LU Decomposition + * Cramer + +## Syntax + +The function *scan* has the following syntax `scan(path)`, where `path` is the path to your directory. + +The function *solution* has the following syntax `write(array,path)`, where `array` is the matrix that you desire to output and `path` is the path to your directory. + +The python class *Insert* has a method for *matrix* and another for *vector*, and it has the following syntax `Insert.method(array)`, where `Insert` is the *Python Class* and `method` is either a `matrix` or a `vector` and `array` is either a *matrix* or a *vector*. + +### Processes + +The python class *process* has all the methods described in the first session. + +To call the method use a syntax like `sl = Seals.process()`, where `sl` is an instance and to use a method you have to append the method in front of the instance like: `sl.identity(array)`. + +* The method *identity* returns a *numpy* identity matrix of the order of the matrix passed into to it, and it has the following syntax `sl.identity(array)`, which `array` is a square matrix. + +* The method *gauss* returns a *numpy* vector containing the vector of variables from the augmented matrix. `sl.gauss(matrix)`, which `matrix` is the augmented matrix. + +* The method *inverse* returns a *numpy* inverse matrix of the matrix passed into to it, and it has the following syntax `sl.inverse(matrix)`, which `matrix` is a square matrix. + +* The method *cholesky* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +* The method *decomposition* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +* The method *cramer* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +## Installation + +To install the package from source `cd` into the directory and run: + +`pip install .` + +or run + +`pip install yoshi-seals` diff --git a/Older Versions/yoshi-seals1.2.1/Seals/Seals.py b/Older Versions/yoshi-seals1.2.1/Seals/Seals.py new file mode 100755 index 0000000..d7e4e9b --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/Seals/Seals.py @@ -0,0 +1,268 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import numpy as np +import csv +import pandas as pd +import math + +class scan: + + def __init__(self): + pass + + def np(self, path): + + df=pd.read_csv(path, sep=';',decimal=",",header=None) + array = df.to_numpy() + + return array + + def pd(self, path): + return pd.read_csv(path, sep=';',decimal=",") + +def write(array, path): + + with open(path, mode='w') as sistema_linear: + + solution_writer = csv.writer(sistema_linear, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) + solution_writer.writerows(array) + + return array + +class insert: + + def __init__(self): + pass + + def matrix(self, matrix): + + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[1]): + + matrix[i][j] = float(input('Insira o elemento {}x{}: '.format((i+1),(j+1)))) + j += 1 + + i += 1 + + return matrix + + def vector(self, vector): + + j=0 + + while (j < vector.shape[0]): + + vector[j] = float(input('Insira o elemento b{}: '.format((j+1)))) + j += 1 + + return vector + +class process: + + def __init__(self): + pass + + def identity(self, matrix): + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[0]): + + if (i == j): + + matrix[i][j] = 1 + + elif (i != j): + + matrix[i][j] = 0 + + j += 1 + + i += 1 + + return matrix + + def gauss(self, matrix): + + i = 0 + k = 0 + + while (i < matrix.shape[0]): + + if (matrix[i][i] == 0): + + n = i + + while (matrix[i][i] == 0) and (n < matrix.shape[0]): + + temp = matrix[i].copy() + matrix[i] = matrix[n] + matrix[n] = temp + + n += 1 + + while (k < matrix.shape[0]): + + if (k == i) or (matrix[i][i] == 0): + + k += 1 + + else: + + mult = matrix[k][i]/matrix[i][i] + matrix[k] = matrix[k] - mult*matrix[i] + k += 1 + + i += 1 + k = 0 + + i = 0 + + while ((i) < matrix.shape[0]) and (matrix[i][i] != 0): + + matrix[i] = matrix[i]/matrix[i][i] + i += 1 + + return matrix[:,(matrix.shape[0]):] + + def inverse(self, matrix): + + return self.gauss(np.hstack((matrix, self.identity(np.zeros(matrix.shape))))) + + def cholesky(self, A, b): + + g = np.zeros((A.shape)) + + i = 0 + j = 0 + + while j < A.shape[1]: + while i < A.shape[0]: + + if i == 0 and j == 0: + + g[i][j] = math.sqrt(A[0][0]) + + elif j == 0: + + g[i][j] = A[i][0]/g[0][0] + + elif i == j: + + k = 0 + theta = 0 + + while k < i: + + theta += g[i][k]**2 + k += 1 + + g[i][j] = math.sqrt(A[i][i] - theta) + + else: + + k = 0 + theta = 0 + + while k < j: + + theta += g[i][k]*g[j][k] + k += 1 + + g[i][j] = (A[i][j] - theta)/g[j][j] + + i += 1 + + j += 1 + i = j + + y = (self.inverse(g)).dot(b) + + x = (self.inverse(g.T)).dot(y) + + return x + + def decomposition(self, U, b): + + L = self.identity(np.zeros(U.shape)) + + i = 0 + k = 0 + + while (i < U.shape[0]): + + k = 0 + + if (U[i][i] == 0): + + n = i + + while (U[i][i] == 0) and (n < U.shape[0]): + + temp = U[i].copy() + U[i] = U[n] + U[n] = temp + + n += 1 + + while (k < U.shape[0]): + + if (k <= i) or (U[i][i] == 0): + + k += 1 + + else: + L[k][i] = U[k][i]/U[i][i] + U[k] = U[k] - L[k][i]*U[i] + k += 1 + + i += 1 + + y = (self.inverse(L)).dot(b) + + x = (self.inverse(U)).dot(y) + + return x + + def cramer(self, A, b): + + x = np.vstack(np.zeros(b.shape)) + k = 0 + + while (k < A.shape[0]): + + temp = A.copy() + temp[:,k] = b + + x[k] = np.linalg.det(temp)/np.linalg.det(A) + + k += 1 + + return x diff --git a/Older Versions/yoshi-seals1.2.1/Seals/__init__.py b/Older Versions/yoshi-seals1.2.1/Seals/__init__.py new file mode 100644 index 0000000..fd4284d --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/Seals/__init__.py @@ -0,0 +1,23 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from .Seals import process +from .Seals import insert +from .Seals import scan +from .Seals import write \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2.1/Seals/__pycache__/Seals.cpython-37.pyc b/Older Versions/yoshi-seals1.2.1/Seals/__pycache__/Seals.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fadc49c45fc7a926334338d95af48711cfbd5dae GIT binary patch literal 4657 zcmbtY&668P6`$_;&}i8&HVavQ5Ef?%QDX1LCXiI(GEN*IrsBnkV>_ivMH#DSE$vD( z+Mdx`tBklf91X5iZXD27ae+U9;>>|Fr@4}giySym99&e2-+L|1YQ<84LRH=U=FOY# z_wjqLyY>3q+>C|a7cczngTJm=)?esh{Ifw^MoVs?Q>s*DyYya09nvEqtt`1DeAzFt z?op@EnzScj)_M`dgx2;0qo*!`uYGhCsmnwY^gz!NJ!fdrNY7JO1cKmfcArt9 zqc$rZ`8NvMVXc#tJB%N@?n6zQ(Xh!bdRsV{xoFEOvM zl9VIG*~(Wyq?U=y1NqCfflS3VVnYB0Wh)o4LX3t^W*rD&-3AEXw%)PcvoZpsx0#E3 zghuEavR599GYD2$g{@}0nTEPr-tER|SZ@TnS|Sp7thl)ocfu&Q5z5@Vr&)0B?VCS+ z_lLD>S2wR-d+n`i*|6h#2|`T4V24)clV*~J?V#3bMj_^0Na9vEZN^c}$WM7ZcbWYx zzE3Dhw!9mX)dqM(UJ;9MbR7x}*RyYQfBT zd`=PgIBpFPN(^N0gG^>(8}tcl$I^GevwN2^n|YFXw^ETJo*FSMJN}4)YjaS1~*bbvKUj1m$`)KgW zYQ@Rjq!Dz&+}&!$L7KbGsMAezZ!6aAART9_2U<6KxoGBMd)gaMV~OvhB@}VXcI2X@ zwkBrftnAN?d}C%P5N$)Ws5Y1Iz@B;Wh-Y4AFG%)+4f|oeu^+a>JIC4EfAZf=y+ej- zsw6Pyn;7&eb>E`y47!SK%8|Dh*3(#PO7>|Rp8@Ypw1hV;w(lhDE37l0q9o`g`uYj# zmZ{_HCl6_wVq#iyfGIHF0CgViF#DG@@#<*BuYmd+V14=4q|dCPChZ zguNs6C55yZgFjkkuC3ou|7}XxCM66K1S4UDZ~Zj1(QDKl6a3uA1|6l%bpJil{Ojl} zMgXDQM{)9jbH;jM`}l(b?oucD;?oGuvb93*C(Ba*uq=_KyEE8`sQmqC(&C3gUp6z)EU?+0;7qJXGO%P^ z=Ke`#4#yJf=S3+cdJA&^+D9TSInudPk8$!SnR;HtI~O~-h;j$pQ>W^*yRCF0MQLx& z-Mc|INje~tb##clptw_wTa~k77N?R~JgvwXXGN@_Civhua!nH5pBrZb&r-mFvY9Fg z!+~m0W(}=W3<==Y&;~^Tb`QjX*pk%4C_&Zb9Ax=0fm2qJ2K60H+hp$cLmeju(sIH? zo5Z4RW!ci{5lT`1MAN3(3y@uOXSdjLt#=P*TttZBd>^ zIXr_#oEh+D<*GyUtUL{R4I?GUqFj>wqFj!rJc2z!Ea%7Tz}{hgY{N5C2t89FGWCD4d2aZq;n3F8<+Z=#U?jB$Us z>LQ+<9g+NDYUMwUU8SD{wgjMZXBDK*>%05*~B$mca=@L_bg6S?cIIqF<$Ms@lxqLKwF@ zanhu-{+}U{&P^*{+#lnSI0jBq5cBm=75chFdsYwVi3A24rCD0eC`vG;7V-um{<;kb|JLqnpC3Gw1Tj`4byzltm^Pl5) zm6_b-`@DhCNk~<_P7tXeF<0FS;P5?`Z*F|1XHAwoN6(u)IYVa+ zL+2+_72gy`E4r*M!Ak{zT4)CHq)$ literal 0 HcmV?d00001 diff --git a/Older Versions/yoshi-seals1.2.1/build/lib/Seals/Seals.py b/Older Versions/yoshi-seals1.2.1/build/lib/Seals/Seals.py new file mode 100644 index 0000000..d7e4e9b --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/build/lib/Seals/Seals.py @@ -0,0 +1,268 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import numpy as np +import csv +import pandas as pd +import math + +class scan: + + def __init__(self): + pass + + def np(self, path): + + df=pd.read_csv(path, sep=';',decimal=",",header=None) + array = df.to_numpy() + + return array + + def pd(self, path): + return pd.read_csv(path, sep=';',decimal=",") + +def write(array, path): + + with open(path, mode='w') as sistema_linear: + + solution_writer = csv.writer(sistema_linear, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) + solution_writer.writerows(array) + + return array + +class insert: + + def __init__(self): + pass + + def matrix(self, matrix): + + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[1]): + + matrix[i][j] = float(input('Insira o elemento {}x{}: '.format((i+1),(j+1)))) + j += 1 + + i += 1 + + return matrix + + def vector(self, vector): + + j=0 + + while (j < vector.shape[0]): + + vector[j] = float(input('Insira o elemento b{}: '.format((j+1)))) + j += 1 + + return vector + +class process: + + def __init__(self): + pass + + def identity(self, matrix): + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[0]): + + if (i == j): + + matrix[i][j] = 1 + + elif (i != j): + + matrix[i][j] = 0 + + j += 1 + + i += 1 + + return matrix + + def gauss(self, matrix): + + i = 0 + k = 0 + + while (i < matrix.shape[0]): + + if (matrix[i][i] == 0): + + n = i + + while (matrix[i][i] == 0) and (n < matrix.shape[0]): + + temp = matrix[i].copy() + matrix[i] = matrix[n] + matrix[n] = temp + + n += 1 + + while (k < matrix.shape[0]): + + if (k == i) or (matrix[i][i] == 0): + + k += 1 + + else: + + mult = matrix[k][i]/matrix[i][i] + matrix[k] = matrix[k] - mult*matrix[i] + k += 1 + + i += 1 + k = 0 + + i = 0 + + while ((i) < matrix.shape[0]) and (matrix[i][i] != 0): + + matrix[i] = matrix[i]/matrix[i][i] + i += 1 + + return matrix[:,(matrix.shape[0]):] + + def inverse(self, matrix): + + return self.gauss(np.hstack((matrix, self.identity(np.zeros(matrix.shape))))) + + def cholesky(self, A, b): + + g = np.zeros((A.shape)) + + i = 0 + j = 0 + + while j < A.shape[1]: + while i < A.shape[0]: + + if i == 0 and j == 0: + + g[i][j] = math.sqrt(A[0][0]) + + elif j == 0: + + g[i][j] = A[i][0]/g[0][0] + + elif i == j: + + k = 0 + theta = 0 + + while k < i: + + theta += g[i][k]**2 + k += 1 + + g[i][j] = math.sqrt(A[i][i] - theta) + + else: + + k = 0 + theta = 0 + + while k < j: + + theta += g[i][k]*g[j][k] + k += 1 + + g[i][j] = (A[i][j] - theta)/g[j][j] + + i += 1 + + j += 1 + i = j + + y = (self.inverse(g)).dot(b) + + x = (self.inverse(g.T)).dot(y) + + return x + + def decomposition(self, U, b): + + L = self.identity(np.zeros(U.shape)) + + i = 0 + k = 0 + + while (i < U.shape[0]): + + k = 0 + + if (U[i][i] == 0): + + n = i + + while (U[i][i] == 0) and (n < U.shape[0]): + + temp = U[i].copy() + U[i] = U[n] + U[n] = temp + + n += 1 + + while (k < U.shape[0]): + + if (k <= i) or (U[i][i] == 0): + + k += 1 + + else: + L[k][i] = U[k][i]/U[i][i] + U[k] = U[k] - L[k][i]*U[i] + k += 1 + + i += 1 + + y = (self.inverse(L)).dot(b) + + x = (self.inverse(U)).dot(y) + + return x + + def cramer(self, A, b): + + x = np.vstack(np.zeros(b.shape)) + k = 0 + + while (k < A.shape[0]): + + temp = A.copy() + temp[:,k] = b + + x[k] = np.linalg.det(temp)/np.linalg.det(A) + + k += 1 + + return x diff --git a/Older Versions/yoshi-seals1.2.1/build/lib/Seals/__init__.py b/Older Versions/yoshi-seals1.2.1/build/lib/Seals/__init__.py new file mode 100644 index 0000000..fd4284d --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/build/lib/Seals/__init__.py @@ -0,0 +1,23 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from .Seals import process +from .Seals import insert +from .Seals import scan +from .Seals import write \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2.1/dist/yoshi-seals-1.2.1.tar.gz b/Older Versions/yoshi-seals1.2.1/dist/yoshi-seals-1.2.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..73294aa3c8e06e62cb2e902eeba9e74c4c52f07f GIT binary patch literal 3841 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 literal 0 HcmV?d00001 diff --git a/Older Versions/yoshi-seals1.2.1/dist/yoshi_seals-1.2-py3-none-any.whl b/Older Versions/yoshi-seals1.2.1/dist/yoshi_seals-1.2-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3932dc2456d59c112bbe84ad9264a89851326fa3 GIT binary patch literal 10571 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 literal 0 HcmV?d00001 diff --git a/Older Versions/yoshi-seals1.2.1/dist/yoshi_seals-1.2.1-py3-none-any.whl b/Older Versions/yoshi-seals1.2.1/dist/yoshi_seals-1.2.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..0552b304215a2970458fa62d416c4ae354a5f19f GIT binary patch literal 10615 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.6', + install_requires=[ + 'numpy', + 'pandas', + ], +) \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/PKG-INFO b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/PKG-INFO new file mode 100644 index 0000000..144f73a --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/PKG-INFO @@ -0,0 +1,69 @@ +Metadata-Version: 2.1 +Name: yoshi-seals +Version: 1.2.1 +Summary: Numeric Calculus python module in the topic of Linear Algebra +Home-page: https://github.com/HideyoshiNakazone/Seals-NumericCalculus.git +Author: Vitor Hideyoshi +Author-email: vitor.h.n.batista@gmail.com +License: UNKNOWN +Description: # Seals - Numeric Calculus + + This python package is made for applied Numeric Calculus of Linear Algebra. It is made with the following objectives in mind: + + * Scan *csv* files to make a numpy matrix. + + * Write a matrix into a *csv* file + + * Insert user input into a matrix or a vector. + + * Use methods to proccess the matrices. + * Identity Matrix + * Gauss Elimination + * Inverse Matrix + * Cholesky Decomposition + * LU Decomposition + * Cramer + + ## Syntax + + The function *scan* has the following syntax `scan(path)`, where `path` is the path to your directory. + + The function *solution* has the following syntax `write(array,path)`, where `array` is the matrix that you desire to output and `path` is the path to your directory. + + The python class *Insert* has a method for *matrix* and another for *vector*, and it has the following syntax `Insert.method(array)`, where `Insert` is the *Python Class* and `method` is either a `matrix` or a `vector` and `array` is either a *matrix* or a *vector*. + + ### Processes + + The python class *process* has all the methods described in the first session. + + To call the method use a syntax like `sl = Seals.process()`, where `sl` is an instance and to use a method you have to append the method in front of the instance like: `sl.identity(array)`. + + * The method *identity* returns a *numpy* identity matrix of the order of the matrix passed into to it, and it has the following syntax `sl.identity(array)`, which `array` is a square matrix. + + * The method *gauss* returns a *numpy* vector containing the vector of variables from the augmented matrix. `sl.gauss(matrix)`, which `matrix` is the augmented matrix. + + * The method *inverse* returns a *numpy* inverse matrix of the matrix passed into to it, and it has the following syntax `sl.inverse(matrix)`, which `matrix` is a square matrix. + + * The method *cholesky* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + * The method *decomposition* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + * The method *cramer* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + ## Installation + + To install the package from source `cd` into the directory and run: + + `pip install .` + + or run + + `pip install yoshi-seals` + +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2) +Classifier: Operating System :: OS Independent +Classifier: Development Status :: 2 - Pre-Alpha +Requires-Python: >=3.6 +Description-Content-Type: text/markdown diff --git a/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/SOURCES.txt b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/SOURCES.txt new file mode 100644 index 0000000..99af693 --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/SOURCES.txt @@ -0,0 +1,9 @@ +README.md +setup.py +Seals/Seals.py +Seals/__init__.py +yoshi_seals.egg-info/PKG-INFO +yoshi_seals.egg-info/SOURCES.txt +yoshi_seals.egg-info/dependency_links.txt +yoshi_seals.egg-info/requires.txt +yoshi_seals.egg-info/top_level.txt \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/dependency_links.txt b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/requires.txt b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/requires.txt new file mode 100644 index 0000000..5da331c --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/requires.txt @@ -0,0 +1,2 @@ +numpy +pandas diff --git a/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/top_level.txt b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/top_level.txt new file mode 100644 index 0000000..ce88a75 --- /dev/null +++ b/Older Versions/yoshi-seals1.2.1/yoshi_seals.egg-info/top_level.txt @@ -0,0 +1 @@ +Seals diff --git a/Older Versions/yoshi-seals1.2.tar.gz b/Older Versions/yoshi-seals1.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..723ed8e24862107e90cdda5bee34d5520fd54cbb GIT binary patch literal 24970 zcmV(_K-9k5@J%4AYoBaDG^aTknlgt@E>VjC^Q%eh~f%$f?!Ag3%I}P$BhN_ z`S1UdrUOBPoxo_YfGGrtf+FCuAW=aPGF`9-L>A=t#W%=4cLQERX5{7J0Y>`Cf^@w+ zAV{bqNCgaY^n!VzK%RbRR|Fj7fpGGIK|oMA2<-|1p%I<{48j?t4TVF%NRSfD1>%4N zlc^&-AOfCX7l4&38tsXa6%ulRqFucl1RW6`Lh7Fst_yYt`y=2GAtQ_=0y{iEu@nSQ z$dtSQwn$l!DHM%Bf<9yJ+!ug&fT1v1kT<4R&{YsF=m17T0lOb{!E|7_k!eF6A#fBR ziHWY3uAZ4L*)a&p5efA~V+YL+!tw?Q{4ioN&`$gO!Ppi0Sr49IM|WU+AmEM%*a-r1 z2BZUfdcvR(ryq6qgMtJ>8tBicK7eMh+H^+1U0mj0)29aZ0&rDfP(VLmj5WW-gnI*y4fz?OiYo$8mb)M5 z7zA(-PXr431GcuwZ#q?wz$8NcI6!v5nf%~ru2Z`&zIU+AVwg-y-&6sh-1#whyWB+Q{xZcl$ z;MK%sYqVO}*AV7}a62Zg+ zK;#`|!k|F>u}8r`3b@EBxWk_ND~+OH*s%k_3knBgf8ly8voF;RQxQ zeizxl9*_$rM*eIxIR64U0ty5};TSCPd2n=k8 zIaX*a2X5S*uSEXj{5zB82i(831TK94)DSz7{aZWyi>k-b{OvgYQQbT4EHnQm^*bUU z&dyLrD4@nqg9Y!*2!IU6_tB^w3V$}{Px5gq@jHAqVx`YU`vpgPhp!;MW&HKx{R^!) zeZ8#ypH$7S+y$Fe{NL6Hu(WAlfMBq16S}WgA1DrBC!xS);n;DbfUE)t|MrfUg%~^k z0f^68238uR7yKuQw7neB{9iWsckK`DFCir5E7Zn!y z`~ClaqhTK&$UK3x7mWHlv--c+zMKC}P!#&>ARqwT6!7#D6M!S&5CJgUPteB|_K))T z{rnddmk{}W|4&>@O!)8l|KDi(T7*Qjz+X~4#;S7t%PyU45hQqcCiHlCdx5*Sba3Yl ztzVznQ^c6`p5O($+a8qH<@$B}Yty{^7SDK*57>>iOVO%Qao?cfJHgSPGzPh|^*+z3 zL&Hr@W5M*<$AL%G9}+*R8;mg37I364?!9ItqS3|tk|SSuKhJBZfuo^;XL_+D#fJ~yfJV7ubhTb}f;RCC5WITPX@v+%=?BdC^ zQ_qUy4(8Jrt0fKXGe6yX?7|Qo)2(yP&q=ROvpGE{Zh5B1KnZnwZ1yUPNJNq)TPSEv zTSiBucNRuliFeoHXkGr|QKN(S%!EoTD;Y5f4--j7uDU!*8*4crz0dWwQ*S9MP{2yP zbTIx{*xh5tpzpOUm!@JXA1D!>i!5v0O5YP z!d5lLa;gR)I zrsps%N_keax%CWhad*cP4z!VG3v1ZNX z+zWnSK$XZWI_E@p1!~~jRsI)s$Kay_PU$Sn<~4}RZ7t6up^w?B#{6LqWeK8HHK(0U z!wi!4Gp;AH-4(yC5}uiR;8jCrhv-uuUTU-}n}Auaa?_C(}9U|C%DdfT;@UyQ%C zRJNXd>Of=9c%%kril=w4mK`!Rx|({9o#hVeb8U*K)cm*fb>?gw z+>J>s4Fz-ci6_ob_F3`t2`{b|dfkDxI*{!Tr;JSEV^12`ShepPI&~_zkjXyf1p#`U zwrZKSD)&mZ^^1!XZ;A-3#Nvnz_CMDsEZLuQ$B=-ayt)6aG1cPo==<#Eah0C7pxBJm zwsCJ*N5-UGAn!9H-?2#D%2`;Ce`4w5X1Zlc-=Wi0_KMr)B({h(Wu$VT}>SWRUMTq64lnP%svTbA%T4xH|X1VI^BN$WUIImYj zKFs*ql44W-%DcP484vPfs?E0hEbC1#Q%?}zxEtYQs8~tr++4{a9?xg`;3!vlquxy! z|J&YY>1<7O&gYCy2Hdk0s0dzsr8y8!^W9q5_TxmfuBltct90TFTUh)>ABO7vNv`K3hO=R znOYO^DCPR=8y{a+_VGns?^~Iof$8Kbm^0;RxjPDXSdVc8x!Jn6Y7@QC$P=Qw_A!;W zN5%L;{MA!3Bde{;D^>xX;$4G`x0asQ;=}Iy;!VzLQ&(EnXD#Ok(7T_s4YeO+EOH6I zbLaW-htn%;n(#L{B=l>**g-2OU~L)2$@lzHonp zuo%B2-DSlz1Fjd*)Nc8qQ0P%->y0P+-0n`J;)M$)Cu;1tBkIO%XC$kVE9sEwxubq-_7V(>ybnoH93+&n^Mti^CgWnSh-w`k zN6wQJ#p&FtY4hnVTIN}lBbTo;q@%bmMaJ}&ZOdGx)^S4dw6vLILt%he)R8=IU#lpy ziC6o>=hg1TDLy$#HW4{J;FPS1_)jx`{u1Fd6>eMJj~k{q!I^#Z-krDxF7EF zZHcxvJ}Euo!+Ru5BqD`(p2?d1Jda(AU}IEu!SCXUnh$TZv> z-OcVPbg>fou8J=azUr&HEdS)(#u#PV>tik)_q;7dg!i3ji3n{Ix%E7#$^7jx|FqId zB#Wb^^NW{F+~tAYi4K`BAvYeB4l|G0GzIa#ktq#h5c$C4;t{VDyUdtJWJX2 z@qGZoL~7t!lvurD@^w{$d+%&&u4>&swEaQYuY%=x@*vt5!IFJ#p+jo_b}VOQqRd7PG>2_rohCe@NA*?{(eEvl~lXJ zYoa&I$Na;kD$%c(x*wWchuskD_~1J(D5bHL^|D{GR6|k7Ez`;3?To3}%PiznzvJtq zc{Ws_ThocqK**>nw1%qPRO#SH#EYvdGG;esr$Q=IUWk+fgAFdVVfbg2t!I1M zU#!ykKdGByN@3Nch}pA7$H4pKQOefv$H?m>#UNg$?Bw8lBf! z$|Z@*Vn4%0k;lF@7wL0h$wL0NdW@2Wko2QM_oN$T(CRwoDmA6l0xdiBe4aFp#xSs^ z!GlVbkM}qmNVD7G2a5yS<=pxi-pU5{hjkPnHQ4I%X&8Hbxp%^#MCwr4T09QYbEaZmCR}L@6p}OdXfS)~@KPI%qI>&mUF4 z3r!%oXtWTr7)P6rD=C{CB-z%~+NXVo-n*!QC^-J6X>&_q^_WTX*x8yi!{RFRYW3b4 z@dFEjIY(OSe3CC)Ho^_LQ)I7B_4F#R_ZE9flxi)MJf95D+vRZ^*n z)N&Q+x~N`bOKS)zKML~ljc$LoI6e`>{W!Aw@xX~<#xj#q9`VeV#N$F15v$02_0eJp z;a1-uV~2}{$V8}(kyfaIPu=s; zhrytz*4NSe_n1Ir#_+62H$9vC+^lSkWwCO>HkG|C3+Js4hd0o^*1T&cBA3c5GGpes zYyWW~mt0K*Iaj3mvdMbVHAYd$*+>o=h5Sgd(`%1q*IpXt>dXujvWGVtoU*=fZi6pd zd}1H^zje@XHFC`*hlI=};t$wv(Ju$hg$B#0jy5@Zq zgU|QQJ-I`BL^1fFp5mUld0)xwxU%fE6#2E+6W)PRO$4Z8(Z#F7EfQ_Ivuq;6{BeZ8nvYi15YG8(o)(v{$ch z8?$cTi1cqeru?DJfm7v@WS5wU_giWxjRly3j`Gm~-%EHOAor;{mrv*BJSQAqFGKC) zcYNAf)Xci)ph($yA{;sr)lp`mpC_+C-1f zW<3ZH*fn&+kcy+Iu=<=@z?3UzR$yq>EALit9hzI+&Ivw&cmMENrMvr>?QGM9&UnLS zoggZ6I+k>LyHzjKAx)$O$Ps04HOnFW)NjS8_a2=ChZ* zb@KgcCQ9xUk-{w%g}gG8oIvV5*G=9)l;;U}0xK?C#~GPF09k20T4Yc6V^2I zjFe4N9k#`s>_l8r47wJ;Sm;)o?-38Opma-cliDD=o#@wm-+pgn=EZzh#KIMhL*o18 zvccS_vng!C?PMPn(68~8&Q3SX%6Eh-Mk2VxtZfTV0A~+GyA~eBx^r_YKh=%c*ZdKJyAA!Lx$S5^`a^aA7 zE^)%F`0!F)1YGrcLgK`{jjpS4Z!yhq&IE0c`&|PvR>IN;{(c?9Me@ex%x_tnG>EI5 z*n^a06e|L=&t~b0mT})*D!p{Q0^V~o&=h(l&w3Zn0F$X}XF%BPvl4Q-hZ>aQ)Iaj< zuBQ5!epoYCM8HgdPIf?sgG#gcOmo8?=_ZpP?iHDjnnyW7Z#1XHhj=}WO*r{gI>l^# zIV?FITvjqR8B%+pWq#F3gTmrGwbE$vD0^5K{qSS4RzIUU9OAW3GHqwVzRL#S3)85W?#iWtqZ{PlK{8bpJYsQumnXCVrYP{{$#*oI%^$Wx|%qnKP zA+y3EdnEA?%3;;In*Ou9uLd4um{Lfg6pwx@>9J&@UW9v-C~m2K}j*`YNwJ; z;mu>m3-DU^dM{3Nv#z~zmcO**i6EzIF6Sy{AU#2P6};P*LwQ#gw2Qw!x$-E){b8EA zY^R#&hWgd;Jed&q%qlVJ8Oo$0wkoXV@UnXI6^7$-$yGD=Xi?@y9A)jk!=wBK)Qrcr zP1ThP%kVD{`{Ys2f1o8K;*Z%sDOdD-eC1T3z@`Ykqog4}T0D$0pW5WQ=KHL3d?N(c zkJwg}l?=&pXFhLJLdPD}h0xm7d>ES5aHBq9AWlx3WqFVD5c`CP#~aOYUpykxN?F=l zs0D$Ns>G%oInA3)&ztHEttNzz4a-n>Fg(FJMnMb;LlwVT0X#}6648c1l_yOf$ccx?_FeJ9H=IU9RpcK8=7XrzG z>N%>oRo2he4wvvK_Hn*&O57NWPh8I-je1-eK4Qr@&|j~WdfDNv&|R|@dFK08lGRg8 z1Qq*UjP@$GHqsp$x4<`;7N$+Y?{HBpL^t45pckRF$27*NOK*i(xi41sYFy#-YU20u zJllzPay`8|OPe=%#y=r6{sUF@p!USBqxxDpcFZE>QsXouXFLoG7q>b0MBfZ$b&m_X z{$79L60uW9(qRwz-IIqNq;Y7aFr!mhfSt5m38`D*a#zII_T_di@^{_Ry7r+rk3OWdcsR5=h6Y7o z;H-)EP#caDR<$2|z9A4IGO|AVjLy$0Fr&)0;~KL+kJn8{mp(S*s7SY`>}lhWhc~r& zWvPs8r_Sj2UH9PQVwr5q%6_!UB=*WkP;DXK<#hV}P-~`j|C@=!?>arDP^||PJ6I{K z3aZ>K2OdCl4##R3nzV^hEDJ{*RqpVa71#56(=FL^q|C2Y+sD7IH_StMlMQu+C3*MU zM3sC`61_BoLe$suMc67WD|y+~{g1!iP-^hUp3!DFt7rWu zZ!*sxkR&?DwPk79pj0?==-#Os{s~z_u{wE>=Ts0roSdG{VJ(+B%P!rhydv$eA6O~y zu{U>FUIMK%0q2+nT#)D|GfsCI2?xBz^bfKQD$QAPLYJ;J2vXQ3L z>!Llx_m9AlVhw<+l%pvJQlr-qeHw$P|pdY_dRaHNrO zIP5K@-4=>p72dGivVC8tF#538zN$Efo6W_qm3!lb|;K4_$2(QhflnftZz|s^~i|=GoK4}5p$&4s0Ik$0B=cc;*!4a1( z_khHOjaEm$b9>#iZoAL4*)DWCSq|PA-IcdNe#BN@&Y^i^aPPvQw9?U6AEH@aufnX! zgI~l-Ovi#JUTq^gikNHWG6@eKLQ4nFP8=y)*9$K3-7J_We4^H)@Fq)8o?H-N;HgCAGeddXV?bpxK$sTPf5FWZq0Vb zjarUEGQy}l7KqIW2dcJJhO@?CM% z)(qpsquLpyJ)00MKfgb%+NA~SH4}QW0&D!W-5{kJ=Dlx3-$A&Ct=Cn~j~secqsH9Y zc~odjJk>%_dVQ+S10uhD4Q{t)!rgR8Z-tz)olkJ_R^wIlm=mc{k(sK0P$=Wl92k=J zPA3q$Z+>3pf#IozLHDL57KX%5Iq8?_50;tmI&#)(e3{tPA`~*jaLYu0 zfk2bZ`@W2^_4L$r;$+r^VXgh8-i#c_x9~T}CUW_*^ZaPH>P|3(R;{*JU+t0LzHm}r zpiw#Ob}g)eC|yz@t?x!sNht$7(aDC)N92Pm*S%NTqK^wBqH?vO!w;G^Yo!;Hr>~ih zXU7HXtFbZCB#{$AhC>+bvR`n;uDenf%%t*4zl<{PoS*P7p?n~Q8;I#`x*?pnWg?&08~9){Z+ zKB5UlEhU>A-e}^B3pY@`Vl}c<_cOdcig<8sb(4QIgoEl{`Lrfkr9Ycbx*4d&b~aiu z`#{~@dOnS;ihC6?mN$s(HEjJCTrT%rYn)37x@u>tdX2<9XT8L!%lO7MST%JvEB(2p z@l3j^29m9tPE+Y4FOt2jT8fnHc1utr&KL_%d<3~UNTtk6i*_4HKTfkLGJDD{c!}hF zE`GUZ$34wrHxrfu7t^{B>&VRNJ3MVd!Q1aZ-~y8>x!XPA<(#}823=V%0*r2IPJcWb zInrvR;=cZ$0Xdi(imL2956%dE~2PF??1! z&##saa!D&g<4H*M`yK+>-Y#N7*x>H-y3`pm8Qm<;OiNDJjcW_+6S!u;OVTbxb*lk% zg(F*ypRIS|9Jt}t!l46gGp=n%OV-CyN^WO8(I_fxnNfXhYgl*FBpKECK{Z4*Pjr0M zC3TpNfT~qAV^OL#)8NMWQ>}Y9X^0ge@Ldb{1O*_W3VYId+e<@KLj1y*3A~XAe4!F% zYyRXtWn;&Y$Lh7Nq%nIQvp7Wyn~xqe&bo$tq`t4Eog%{7a*y6rpZ7#J+(^8tU9`tS zt1NhN&VVH+UG!1ma^xxnN~)%+`{+d9CHKjEhbZD$IQmem-iEI%>~!SD?OVnMr&2=4 z4Q}6h5_jmy?JUnI_J{SedrVrk&XMiC*10-QphayT>>FA78Vc9lM4oyhu<1`%?)cz% zY_7_smcgZH{ubzZ?0W;gkbu#%&j__kFLEAe-6Jw8MA?oQ-q+|8Tcvi&gW46r{#^Y1 zfs7;4Z>$@d((GPx--uH(W#HL0fBL$cPxht|to&5;I3yypGrXrv*0xrD%bFwoSWT<# z2b#ya2Ka`$d1o7an=|n{)h5h>{F{&Fojc<(cw_D(9mob|&U$-Ibf{^mBgr;f^Ut^oIi!o0+w+Da*wsA0-H z{OruQwPV_6ttzSU<==sh#BXKAbD}n+GlCiWr!RSL-rLK*Gbfn__9U=XOhW;ap@_kk>c^-Q%-P=OR*ByK?Xigft6_^$0obdGI z>e@c(LlZr3r(SNoHZ=_|QvxpuM_mLltYsZJ?bcEmDtjJ3Xc;OVxy89W@op_RhP_TJ zQ0k(dX9SFyGG#flXoEGvH$zde_juN8{YVf&q+Um5$fJo~-?pu{;;`LH^_Sj4rR%6w z4$>!0J}RTs<3F6Rv6V`Bei4sOqM|0Rey}g_Bg4zKWNGKs73kDEh0L>IZx-gA(1gKJ z!)4x*8Nr91>Qg$)`ZLGn1jBXoit?9)2P2l>oM{hFi%}fjb&>P^Id9qZ=ew7(7Kw)F zgHP5Nq$fV{bR&%9k5&@~gY>Sq7^(wpB*vL=ST>Y-eza$o_p0+_k0FTpMzJ@S$gCplhV##~_8t;o(7|^(0Tm z@yGHy)Ruu^h?AKQ_l0@LQ|Hll^9{;h96#ktqcB!Kv9<;EpK_G`fX~aJ@wWOt=ysQL z8sS@fxu!b?QY?+{U_x%qkK%>f-jT*rAdbYR`>imCo1c$u)IB6mT-H&%P5kXEY)A$D z%`_rBJRS->JhtDy!q!nWRyw9+tn>o2(=SOCJZg91sGT*d=>YA6@X)|u3Dgtu|m=44GfYa*@a|x9`3{WxTJ7+_K^mm;BLW);*vReonU`>RT0&2 zy^Wf%-`l=yn%#%omM>>N79zdR@TzIvyFc>a45LkIW2ms2=605Xh4*M@sLDZ8${1b^ z%M#)NVZ3@>jj;LCK5A3E&$=nE#kXF))mm-PEia06eiwDQ;W1eUe}T;XO8y?OMb4=P zIH^+i#J?YU5iyy^<2H_z|?tgB2^{)4MVS> zxk}f%MpToZ)x}$m>?J3YShOxu*Dn(KG>A1uX1Lx-m^+gvfBfCY*=p-}`Lx}ZXX}$) zc)~q9)199&tz;c=o8T5P1N-+^vbAqzitanXrx=jXG1#FjLLreL9q+eHb*MV0R+5*E zdMWu*;#SHb$3?c|v5j$$VjktZlJ_Vmr*(KF>QAzdRfSl+McPR$#Qq3eR9G$c&*v@~$XH*|^;#MITnq6n{w1+XgWeucgSk^o0Gv6c69Mnj2Mg zejDY!q-}J)(i*J8JWt}enV0H|s6LE?cJT!wBv6Mbi#ekj;pY2AVy{a~WFJbp%5F{Q zV9XtqzrA;FqyC}i?8VOV@UVC8@uo3SPisRd7P8W=#s{7}gQt8&MkFmU-*|I>X)E1= zIl*-b%{i$+EdzEQ3vN-T^T)a_w<=id>xvJIPl$70RJ}BOO1|~O5oIRFCd>Cnz*Yqk zn@4V2FS)ZZsBx}keZLEz|)FJcY!R^3i>y%68cs%Y?r%r zy;aWV_KJo@i}%y!g&c88+Wao8t;a|QTLV{^|5$z-*38sZRkg|c)phy?DYOK5@Amdr z8VZkyJwxjCX$ffZcL`M(s%v)f3q}j=x?(UOJRl}HC^j@j*4-~O_>TWR1-F1^Uzc`; zAvX`N&I>XP?HWVw%i{O@diu5Q>GT#)O%mXJE7)D-3~f^2iUjzN>$ifT5uSE1%r9mz zU#%tA)#>GV`8~0`u>x*Od_25^1bBF$-x4!aRnap%7Svmp6ef&^H!zOCPa(xWBQQWj zNfm$cl!xd|-s9%EoG0f-7et=-no5=hPSx@`#eaO%cq2o8;Uw`>r*na@=lApO1db%6 zDl9$gWpvqS3%hVa|Lfj%RWY;Tk{`@7218f=p45>%ht;Wnlv9EhgeMMdd~S} zJiN=#mto(ovVSoAUea6WTQP>9XJ|{-{;aO2dQvwp1w1o+-5?)rD}8X{^s{Mg+8V^^ zZV!8PTEV627HU#jxOvKC{bU-d+Rl*v@EvP0e!`nVGcs`sQ*GnRibn~ZWX4-ppD9+a z=0CP}XM__q`(AH}SD;%zAUQ_#p-z&%p`>PC%$@1X^cU8Tc3s$iZHvCnc%;iFx9dFb zllYAX<-?ht_$@`U_pBEkOeVX}I0o_GoXNQ;Hz~!vc;ZDvQN-GFnj*eRi`9MR#s`|4 z$hG>8lr?3wkEM{HR0=P;S7_p|8>vEzsT zcy4`9^!r)$nJ9kpZ;9gOn7$S~H;;e#_g^Bw-@kwV z@n31*+26qn3Ud;IK^^{`zXbcofBz>e@%Qil{yXhYe*g1LB>g9N{N?X|ge8Cc{=eAY z-~az_H0(70`-eaOXWK7-|0D1v{Q)M3po{-M&*LxVzm%BR_rL!G0>IzD|NE~rmb0X! zTW+^(3ATS_dc1jN52G>Z+4WG41KPHr-hm!5y||%N88Z0@>!M+Bm;+xlO^3G! zLq>hw_Ew4Q+=J-lmbb_bW4Q}7R>k++e5xPWJiO>Xk?`gek=z9QUdg2Yjr zXxhsbZTCD?oV$3jx!KokQ;Kn;XC=hkePnv&sdUL`jlSya_QQ#N;0Nt{7PfT568zs# zUrjf8&aBr-t@-d&qIh^B{k*H_?b|D)7u5FA=#w9G>^PIfeQfI-g~9{%Amihp=-Ru{Moc`%=V&n z#pr(1tL-sS;yGsr&)7eBM!Kn+e&AAm(amNp&hxTrui|PlRE8x2&KnGDgzRbvjd#v6 zI9to=IV7_^|8a7;?rmIz>Cqrg&P|f&>w|AvVkq)KA5JLbM>7Y)V!^?rZ?wyG^jT`} zG%e^m2zA4ij&jOEG)4mwViKI6qL>#h-XxrQcf8eMB`(5xXy42uwX<{Q^v7BRc`YVv zcE7tq*x5^%fckj-iO2`&4e@EC~p-z9Mi=4(&VwU@ORdf$`X0Dz?g!b4jW~Hb5 zqQU}&N1bmJ1?)Pdvm|?nQi1Be@0oFGVXCL(uay@n@1ALYj7?@y|z)>#DZTT z;Y_Uc*xv2mtdcd(2_AOr z$P$s6E1l!fC#7SyujQeyPbr=>MWXoLx+G~2B>R!Boc9y!?;gLTWiC_hsa_lXDlodl zXVQi3&ZLycb>HIBBf5MgqNAh7v1EYAkm&7c>H`|S=x{N9_gia{pFf&AwcX5nTKJCOpH-al)dY4)tRWk1a zb+Py;k4?XN>g3+Tv{d_v1#7C4JPQuf)*Qa8yLXmY@|B*=WlokUK@PH*J4d=D%WpG# z*EL+0(9R@3{lO}Nu%f%Nh)evLq9{Ugs40P%pmpR$jOUFJoAZ4K_j12^t3VtfPaP}G zsC`oD{CP%eVS(e^opL;>j?c}`I_E4{>ZrfJP)z#bVWq!s{;R`%Da*c>=LD+zGh-(!R`m&=`AbBcS` z^!V0COl40C)P*GKYMRHWm)5mjjq9I(7DvjuYQkp@3=tuVUrsABIsGiDtOA(d1 zmR(NmQE)w#h0tc(Z@0O@L*cE5ny22L?2f#yRM6sU4{3SOK$B<|+F2$) zWz1}9%!uUMqXD^n-h?LRz*T1YvOGikSKUVq8H6iR@SaDDg*^9iS#NjmpNkz$>S8Jr zLP?7??1O4t*{=QP2jh-%o0m- zX?FU^mdIwYy2tvt^&{4~+cUw{-oicG6Fvo|SIoS&wp%_lUlqMO6yTti>bd-2Vv9-g zjOgTUzxWLwPHUz}vhNrB?VE>1|3LFArQnKUki`&9LW7B(j% zsPUH~x;cm)=r0A#eHcEu_tYM`xU-i@j-MJ>C`zAJ)&F>T_qvH9sAZ#z_cYC3inhmK z#B622X}YIp@+10XL1NIwCk*-5cU5s+)Y&is5!SG!6_HIw)7uNiu#cHYSbP|vxXSuq zHfVhRUZn~J-2|VYem^Lm?LYwKaVkc!WqLg*pYF?37xkRlDdu)ptG{^1UbKf6??8}Z zUvb^^_xJYS zj4Xb=`TE@ljr!PeJL{bNH(@q5*@t}YTAID8KzaEMD&l)o?{+zJbek^sHTgtKi3fqf zeqTPt7ebd}sOV9!bZ+GmC2pZ0$8!3Ro1v}OpVtvy%0FW)w!2BSsy}wWGLHe&@NKUs z#W_~}3T?sGa9$ADXYOS0*q(vV)__O5mKF}iN1>Yi?OO*XjL1#g?zur~EX#}yik^h= zgqk;=yyAA?!O7WhLbP30tXjs+$A+1xhH;g0U+Hh1Ve zF&xQq?vUN-{d@XNRPNBQ_FdSxz?Q9~{(+V7jcji4Wq;4p?m9L~Qh0(V{fumBD;m4) z_chFr2=rZ8(q#xbD}Vgfky|fr+>G$7>)QRX40R%CXcO%pyne;Y)LJrwv7?^S1b$KB zMVGE^s)^G*uKhBdd1H~*C%x(;6QnmM=T1huREhC3oFUJuxcLmJRnDW`P~qE7G|{M{ zADU}7IVZvFkR4e1IRAL}$}{0^Dl1phV`|ICikFWa@JA-tG!12zUPo1%3&uPPIY~UpzJl6kl2)l}R>kL` zvE`hUrV*Fa(7^qYnJ_M+r>*~R0kYumq@BHSE`lT1*7T@fE<d0uhJA8G9>FSM?2{( zf{zOaYbHNKW@$u@dlH*U8q||dQ{2XSY{1G>s-n7JJ)*Q{mmr z)HlnU6OR~DV6B^M)znys(uO>FWL*(w8t|B)GuXgy=)Bna8q|QLoe^byn6qn}pdfI2 z>D^^(^YXIH^wDVd_1TYcY~6z+uOnwORXX34oKT|BPc7{VCLs+uT6@5`UFgibB!l9W z^6s}*kdYpyAiN}vPC84GD_)FDr9&)F$1F93z0XxjL&@@x$z*v(#riN5UCv74T6#FA zbHbds{1xFl2z`2$RMd1v>rb|?RH$D0`EB)v{tXn=I$)SrI4ZH zuQzb;#RI}V*7N)N7YoEKOGz)b@1M#wgFET-XWZx@YjlWnTyHuJw=Lc~JZYGnd?rzJ z+PT{Wow^nyM(+`=GQ+Xg31XdcK+j8(tf2j@X^YR?-AWSE3m?y4T|V!5wURSwrqial zl0SGx9`$PE1Czn9kjBW!2Q|V%F$T)rZ@W4#SF&->boyRqS7E(ZGvXI^)U^$%81Ml3 z23B!iOn{Aq%H`HWQji#F$(S4il!LFfhKgWH=-~-xa-q8)Adsn2dGcuwD*4?x?<<}d zyOQ-vkF?#rRkfSX^W&uLs%>#?x2h9u6*pH<$$EEx$aA)VVP^bmep@xBSLXWfZeQK_ z_;I29#O40&l@Hm9+r!f#M}QB$3Ek(k#1-e04{tPZ`n^0i+CquH{N`-kD;xcV?YCPj z%6q0WO+yxu3){C=pPmocn)M8^Ti6yNuBD1_1o8}tSE6mX zj@(}lxyrRIX}Ntb{L$QIvt{+&(GZ)E?bi@c9A)jJ^l6zKaPP(bhq~h=PXzPk?XBc< zhFQ8Zs3_0fT%EgMvxRp@U*5Dedv^x4cw2witLKxuq3|LYydKtB1Ui;A_LyX!aZULe z+6Wc!CRsQA{<{V!MZnk)-Q@Afyzgs`)ex_2GOtcT5nbBGE_@^u^F ziTOW%Uru}Yop|sAZJs`Za3V&z3slT-5IZ}xV8~r{U|4H+m2-AJutr%aUG3`UKeb-XoWDXq3+0@+*3-^?8D7d$!<{Az)*#CCf&W%*oxi1EwO?c3n$+|g~VljAz? z*6r%Ih6UftT-?5TsJC=`)3PxK)1!Wf!Y`~eDAablpIX24={D2yY;*AC_uB{Xsh`Y7 zmMMjkP%w(S4qW=94|j@BZWD?Ljk4ig`k#KZ{$J7l;{E@p{mXxe$M4_&h=_}betG{R z415+A6%`Tv`}~*xO8ZjTVCR(4FNF#qPF{}K16IK>%t@&bIGP`XDJ9^5IY|`)f%$ee z*7|geyDP#If;*cZ5D#k>objB!VEh0D02XAXVXUraVhmE!wE&qZ85%0-8e7PH)-uE! zf};fWz*V*I!JI-4NBaST0|@A-8mg!R7)r_-+8V|d7&9H$FxFKyG6EgfGXyDt^py;a zHB?Nrl?*}pCWiWYMyi0dj35}HAOQYvRO5_QE--2*2pS9pf)r-R7JxBOfM75u+>!7| zh$94wIr}CN;~B?zGzSm1a-zZEk6ib`vA0aa`3M#zz@=ZI|^cy zC?Ns>f#L2jK<7qi030B39O?{^KMq4+4pvr108R`b=qO=MJ{1ub5D^m=0ht&n0Yd`R zia?@w>U01;0QdZK%Ms=M=_Bs+Hmr*{eY)oXM!S-cIYFF3U&=(tl3`CAc5+tmbP_~D zz)k^QA)wxN01<2#KL`c!RN#{1;&*~LLOsAR1vY**epdhlf>h82CIk-_6MMouNCBWA zh(_39h2rMH5yhQHjf24P{klX1=xhF1)dG$O-(d|*5r_hp4;K$+1SlxxkYTVL3|k3h z2LsbSRi&`Q(nSJN0KyC6F1WwN;s<;JQ||-lQQ+d|;s>4ZLZBf)d;l)lb}pfC7X=If z0~0-CRXZIGT@4*2ZJu9o+u?)oLG7Hn|LrNy-wqyEPytsD;*-h&eSG>l4>t+|bLRPS zz%=G8`Y%wpL$R?i{5uyIy?us;0s|NR@r-F7S11eu;)a6cKb<>|as_)rtb}d8;`9v$ zrn!AX?1%0hqHf<475Sd%515#SL$QL|Sh?8%e4JqjFq#`%4~ClyP!1Fc1|dK|e8(IW zjQ|A%`33~Zg17`R$6y11+)zFd9)4~&;Qv7Tfw&upPXQ$IYtf;<>EE#yPQEXi#~nAm zqj}r~&rgm4cT@Pa`Z1c?Iko&3>itM z#enV9A%c4fx&lvkj_%w$4ES-qpVu=0z#mBWP~Y(9!7jI-*?+Eeg5$5m4|4b!cNai2 zpUH76eIoT&7IXWZ{V;2r(&uFCTl3%`pkF}<+kBNqf9B>4!Y*^dSfjgPKmG&^JA%(E z4d$Uj5Oo5H=2ilzV(jrF26j>VLwZV>Pr^1rE;wqxAck9xe?iRsmkS{9bcP0Fdw<%E z(-S6!L4QH|3lYF+u|m7s@bZfO680a7MVR(;z2fGb0FE;c=w~{?gt7mWGJd7!FGRjl zh6^A*@b|AY@)x7W4chI?poOq>-G1T^(4P?eNj`&_N^ZY51m-c88#n29!iWnGkDwC* z&F#SRlfdNrBeipe?cjcqHOYU@ zn*PEbzZCG_lQ3!H@*%AHaG8l60*uKpGzF`8)TW?&Z@p%S2{E!0te9F3ivxM_}7ngUOTXj_CuEC#=#PzD3(f zO#xwGP&gRoBIpD`b7SCngucC}#Pe$>{?0%@>gj)aQ{(UU$L+iQznvcl{(E`+e*aHQ zLPA*N)Bc~RsH7>;?L}X+z!TH-QHxU_W8GdZnU+$Xx3!5fnAXOlu`(ZZmFq=1+T|hKu#|w?XZ2@7D zi?4R-09Z^hcn?e`6jLb~yF~RE^wUK*j-Yv57-Y|5t|IN z|LBA%;E4bMivto@6nSU!6N(lDft3BQML>~Y6q^4R+g+c^-DAdp-IsO3v2yVOV|MQV z<6w(#|Be-=kL;7o0s^0E%A>rH*v-2y!}+vjiWw-T0wxrV!q$dI34*X&lw`l!iSxwl zDB`NsWAwALclV9!kbQ9-F4R{V#FdE#!~H~vY(W#jj6hg{M8mCrW7ay>?Fto!tPgMHjgo5 z^#kE#!D@a-U=(0L1On??X08x8$Oq7?Cj{({QN}m>(EOM#j6g_;GX#mmR)0l&vL8Rj zPsu!y0DoYBdS1Vh4E2NSeQi=)0e3Q7scl!t*Us_Pe8NqmALIjZ@3;=q1?vf9*f|C$ z$s1seNp3OQ=sr-CD-ZvdTJbx(x1UP3V)p#88~uR7Tp*Y&YqC#>fX`x!IDbaP!0b5c zH_iy4V~U3ZGCJa<#1Mgl;1D02yr1+gw^Imrhnzbc;q#fU6L#kpg`o`S8HKfuF#>~% zhB%^eGY1>>P*|(LAz$ed3BhOz_gx1Zc|aKsP$x3LS1}lpvWg4(A&#z>G%0z_=}IM+g#A9T)@Q33NgopfKQpbSDh`zxJ-S zw{2rtf9J0tbU(y46eV%q&Pm{ltJrcP)RtVyP8u9s#FRwYY$Z{b6z%BWpLu3xmrIJW zoi-=!MM)HBEH3wDc6R2Om)%9pLQ$`BMqNra(IX|lh9;sr-B2;y`H00Z{XP%T3hY#WlM3O{t8QH4^$KeCQ^>NFCCE)2$qnBV zNXJA*>?AKiG1B4;gy>drVi3_{65T|T44v}h5epJ&#KM^-GK)gu%`vYwy@lLXgDkEj z3JGzqTPie>LA2s&X69jva|#-1!|^N(w1-3j9gr-)k%ds2Xr`?7NYMtQJpBy1+j0Se zwU&WkOU%DrxvZaJ8lgzdDPN_&T+;}ex%g6E_k`OdJ5Fyx--7?{#?t4V!RgR%_m2F- ze($Jz-tG4!GwQH^_PN`8-}H~V!}CG+-34B8!PEXx_qco5#t&%nX-g8lDqxfHCQ}}F zz%!<~jg#M0Oz2hdsTY7wP{hkwpv)^tc18wW$1`Y}G*~P4of8@zg@pvb%Ir4kST)vY z$s9B^>##xaIwUGKJq9qg`>Z3JF`)Ny6@B10cqpSlmNvI+YV+nHDLp@oc*xEh)PZ`b ztI-WjA2A!(BAw3%JPU5$$O4bJFDa6k0x7FxQ{FDr>?8LIJi*AK>1hY7k%19F*t`6b z8u@D#^+YbF4;DOQ-b}B22RQveVv?l7lt|pPAD}@7^5a!Y_UOlmCy$Egp;PiH?EC@D#?U+?tbDqz&&07dr!H+ zvD`bKicF1GtRDRhM)OR|J0ugsC2-h+Eff-8=-em_7b3-IoE1IZZF!#r?f90-k_^}z zb){&7aO(l;GVmu3?IZ=f=ZD7D#|FgwWVpQ>@11d!$?*^4T;+8b;^0s!q>8xjqN5a3EEq0ErEi@c&QQwW42hy0b|g> zUyYS+5Hxene$F`x_P9nFRZ`6`Mq;XD^F*>yiHw!xT)Mke6gO3|3ZJ^DlSO+`5UPN$ zN|YYz;GTKGh}LZdUlMB&`ksfOFo}#J4IQPfF7#kGw+O~TmWnxH0pv8AiTWH9ZJDq% zMl5e-Ij$pxT;(-w3{IxE$Q-G`NT3N!FJ(L_rBGqC(GTWL5WrUJ(2IzpD@*NMlIf`C z7I_G4jRB1zGg#F+|CWlX!?;Q!P$!n_;O`iN$5U8D1$c$jVr?Y=6%0Q^Me%Bkl8LPa z473di7}YPsAMY9*Z%J%AXZ&Spk`p*o)}-`Ky2!rPKe=lA$#{X#Mfchq}HPUsg z(k&+l@x^7ZD3H7s`J`^rG7Y76T=Twfz8lB zs&H>kB))-7wz}qB8u=2Gi3Q-{721SPi+$PoIAhXmw)?!2O7e((AIR7*G!6fAwz401 zC7w%zxkDA~Sb*eVds8HgSSC?g&?#P7r?6ag@uuo5slynE`jrtvUXcRg3(j35V)F?G zFj$yOh_CRD>(qOg+C-Z%7&BvKA+8bnfeld^RuWzX$%J<^0nc31iiVaJN7*@j*mS}O zyorXvrxQ(8EUb7gM0LUuTuQxO+?iu%C-)9iD z4MUMIfcs3>l(;vD0y%tYkCDp+w8GoQbT;tYEM!%eh<};&;G9+l0jS5&<>;i~r`!f< z>Y6vJ*4?JI9SDl5DGrAxSSN2xwZ-!wiHQI0Zp7SS2%RHf>@AV7X#v^h$O5~b7;!iK zn_w16bwslnN#_;&;$&RwFi1FPlUo&xk60kAn~KL3KrLd~!Nztp$MzT(X|T%}2vB}u zVxYDX&gIu8D`BBM*HET-VeeaUatianxKH%&!{%T+{beM-V-CjKxCLI}*M z*S2Vw5j{CLddxP1+i7vg*`+V7d)&G-X<{=Q{i5Hgkqo9%lp8H%*v+z(4U-^E<8fsC zVYCDSFn&12{v`Ih!pze0B8QV`DZynZY|rQ~bS_di8N(iU%V)E|1rGU$Xp|pl;%`87 zU^_2ehCJh;!LrSb@wm%{!+p>i>W)KXj{}9)(_=BM``HexcJUT!%|xRS8z3I$X*XX9 z^WaxT0CVDKMyES6LiG4IV&iZo&?JQz-_;R%q@xnCS<^K(ONx&Pg10z+7)nG{-G$A4 zwoQ48+5=so>}M`gkCgm$11&hU17bNV0FfJYlQE-H|2(Rlo7RL4M#q7MrI{PpORcEZ zeB}eKlW0aSOBHNzpMl#9M!7P2kulCsy((B)kdnIPInJ)G9oZgf^jv(L^Cj6#PSS}} zNy%H}5Q8DZiySh5iNp;g&Kk1**o7|e)dejDDB%gCf_cNQOSo~_d{Rwsq`8As5ZHu! z32A^Uk0H)2gTZ)f^V?g8_(X_FSdha;K?W_bQe6fm5@8+-A<&9$d3G5Z`T{{0w{?rh ziiu$&?mW9t5C)(*9zh$5Gf50lk|*NWj`7OjS%P%~QEWOu<{)BT^xrg_iC~#U0hx|G zbuVS=jCJSQn&8Ogs$_zt5nPfcPR*R7nHMZ;?eKw#nZpszyn=x*PTOKsR~>pJ!M98d zyg{q99Qlwe92mTTG0GB-*Ih@WXeEyNS#WCu`D!O_jz{Vt-4Y{AJz7hQjJ*{Fd|h(g z@2GomtBZYCTsw$8jxET23v;|;{ECP*{Ea5z=v!iZ(qr3wuSCR>g`-&yuUZmC zSw-_u@yT6C|DF-A-28^p0#fFOg=|)%k!YTYDeD_a8j(d@^dvg5e$y{n-7Jb$h-`;j z;-V&-Ld6pf8&JRHG)p*IRmeS26D)VBKk}`usj^iC0P{7G;+g|oEw8weG+AY)2a^B_ zjxkU93e5hZ?%3<(h@*ZqswPkg+h+kr@HJv!kgn7?kvifFA=AvX)K5 zxuo7TY8pv@v`khC^lcNRHPVz|o2+H13%EYfuGNg&zm@C@O@+eeu17ysFrFfThuABP zu;h+TJ21htLc&i_Z_F7vu???jfMr5zVT^1IcG}y&$cki8 zLF14ivgBdALX$ti4Ad(_-VqT=kD4jUK5sh;>GO*F+6 za)J`299GSxTnGz!ZnKD=b_*W2WtOl6t8lr|%w(#c`7c@ZP9jR0Csn}BkHd-7dB)y4 zle4F;I`JDsd@>GK!oF-N`L@{jb)W_fM(6a<#P~F+27|szw8oWYWajpDVTuLwH?4aW z$Hd6F5~AXllAK|ac^<=<%IDcR-W9SsXjzNY(PpeAev1Hp!VyR$`fYS6 zoOp)YS#+sM!ikA0&*O#oyHggNoYgXROtyf)5`XkoeW=;e275W5>d7Qt$OPa>n+YeG za@LifUNg@C46=GJ_zG-aP5*LXq@9%H6PqoeVo)`q2;%EFVoZ2mS~V`4a&{a#idNv< z=Uk^-wGl@|hVVufz$o0*R-#qY)rNS6mitG`MAph)iYJ=?S`t`M>f}x!cwo{**(^#R zv(z>PtK`f-TIXRc*Gd-=ouiSBL?Q@9HoVe8KQ^rZ7U;obB3=jZ0L}JQh~mp@4xbl> z=w!T*T9ZJWCvw;hr7208!K(OaVY7fZbNE=XV2%T!azcpY$Wm<}oIoQkBr-J)M7cVm zm@s}!3m5^Cl;ye8MOx<3)Vdcn_Be_s8z}}ntN(0q8qC(5bWqBqUL@g7#GzZ6a-=uw zQDUiQ&cNDotQJE6fLN?1`ajO&!r0t8cl86}*+Zk$Xh)~$XanIjBx7rH8X6G>-c@)TF@-e884Vg@(Ue$Z^HG@O znWDxtW?#;fZS_*w4Ld?4rISskinamSjV!Ii)X-?=MjUHwlc15i&K>t@5l@>8F%us& zor)8aGEiu$a0VP#3U=_SPJkZ}fi3LD8MoCqi4*Ud*wHF{TA!6i&BoW=p-!ijC79z4ya2YN3Y6?p9WsBJXT z6?6Ac{(%R?z2(gu@jS#LOFdQx*2S3G+-Kde0UgG4H;42Q%TMyYAbI>M#!Ws96GGlt zp=>9pfJ9CviM{lF?gQYT%vPVm1{$d;p2yZ?#}*(-Y?zRMQ8i*exe|FYTi>%0s@J#2 z2r^SVYx(awhwY1D$3Oqj@y`bR_k;GS-yNDf*(3jW(CPU7WB>3&d+@%~M7co+CEU7@ zHS1JBrTYAL=a=(N@7zD@3{Jb}=TzIf&wl&tj4E%xJL&i*?N3DF&M$|ZvvdE`hfdGy zqxw%>>d)}JjSsp#|I?s*-tE2T3Xz&S=)V7O?tkc?9CZeqzx#w*=MUvX!_Ls7ethg6 z6$jO552@P?d#0l4JO+pJ6@TjXj+%a_%N2EgIU96_G=7ij?w(SQJM^;KJ3P5K;?&@G zR70 zr8-XAy+fX;(nMmo{^$M$R0)my>3jqaT=Y&b+Ck^% z3mQ)aC!mh@d*U__)0ubgQK5f7644a;10&ZH<%bWi2taI4KKj=NN9?kWMP=!{} z&li|Q`avu4+ccdR8u(DB3~La))-yapZI{>OPTqEj|G*a~{UMmm$EBb?_n7|wu7lEp zPLJrt%c*^Mcrl=*g%bFJdNaJB#n$cdq<9!FujcOH$gC%(vwz&~o?Hwzc#K-^6A4iz z^O~Iy!(_wVCi8&bJ*K7(Kj`fFg;o36|3Fjmu0zGzM<2V8JkpLwYhl<`n)I~>rDN;Q z-oX0@pNHK4H|$>wXx;tJ+yCyr|L^&WXQlhUp1*kYy59f&Bc4I0eRSGs%_m+OuCiro zx%P@De|sC35qp(Pa`w~v$KBp>zxu7iLe&LKI@@@SLtKALx0lqo${i*C=zW!cr{^K- zziMv2rH%XV|17Wnm-LT%{r`xkKC9*L{Z!un@SWTE9ru5~di}J%|M^EerTO1b_TQt8 zd*uKA)2A=;`#+w&!2RE^pYPZ5|3^Ia{U7!HANBnof7$y#I2_ZGC2DT_kR$u6Udf#k zRc~+!NY(E=mOont)z6>zRN}u8LbtMT7o7XQ`vznQ#& z`u;b5{t7o~)%U-Zf2{9+tM7lS?|-ZBf2;3*d)NxA?|*ynQ0`ls_5E-4{ckRb>-*pI zS=INymB&%v|7L%z?|-WxO2zlwKz;w)L))(Jf2(-v``_yO-|FYD`IO>+CJFqzwsBAX z*Rz-VuWkHq|Jie&UhlttRp)>Gh{xoIVBS}8JWD+<_s=)%?tn(qZzK)&&`+;LCm>Mr zWfID%YY0*u&?^orASRGk*y4Zg@HYz*mj?}p=Ne7^UE^E_4dOxlNw#SoG(JX!5MANz z7o5j5J80aXOzXO}XpJOp_di#7L9%hK<(+;WGa?Xe7n$^vxG); zy;?2PH&32i(OhIB4CIL=feBJdnEtVj#tf!KpJ+`>(mTObm>xKjF^v|JFXqM0t`uZn zF!n_!>A}COI5&55@VS#GdI^R9=8bEv0mE_>je;+(=y?P`s^?bnm?Y|uD_lTojkDBgJ5`VM5Q5(B|_OgEPQMim+Mz(zjxYAG@Q4SBjDG+VwL zyThN_vk&v*5#$s^-j7bwmjup);O?G3L}JC>IKA1+Z)M<(@_|Og)jfx@pExQX=udis zj`K0fNK94^vF9+GDW)Isaj6=>L-~sorleb>1g0FJ&>oi-) zNi%y0`S00dgmN;cT-v|PQvxpemV_kqFY)K4Tr3uHxE>?s6T9SqsyJDupHt2j zx8vaArt`>(AvQUaFmISvkw#;{N*g_{*RZ`{mrsD6ei%w>71f7}QVJjO2}6M) z&Mcz!dYR4$9%@>lG`HhWD4p?Gf`#bb#n@inBUNd=`6(-W%2%jIg6UhF%9+Fqdr_>d z3O#s(MsjzWP7yEi^Sp{ZQ(#YRS@6mpi<&(f?6$%}n&FfA%pdwn?;B*{!Y9W(fQKr& zXO8P~rklw6e;G239LeVnfa4ogy%&Bc-(9A^Qtxkqgs-ef^FsiG>`D&^)5f@y5<$^u zOWsAptjgpY-)>M^#9$?%RYDf&{0B*^Zl1gPeIIR2z~?)WcN~Y)X*A{&K6P;BkUMjs zW2!YgY>YM_)ozZQ5w`85Y-#awgPZ5{2Ns+FAo3?0RV2dc!K}{ literal 0 HcmV?d00001 diff --git a/Older Versions/yoshi-seals1.2/LICENSE b/Older Versions/yoshi-seals1.2/LICENSE new file mode 100644 index 0000000..d2c5abe --- /dev/null +++ b/Older Versions/yoshi-seals1.2/LICENSE @@ -0,0 +1,278 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2/README.md b/Older Versions/yoshi-seals1.2/README.md new file mode 100644 index 0000000..3d00157 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/README.md @@ -0,0 +1,53 @@ +# Seals - Numeric Calculus + +This python package is made for applied Numeric Calculus of Linear Algebra. It is made with the following objectives in mind: + +* Scan *csv* files to make a numpy matrix. + +* Write a matrix into a *csv* file + +* Insert user input into a matrix or a vector. + +* Use methods to proccess the matrices. + * Identity Matrix + * Gauss Elimination + * Inverse Matrix + * Cholesky Decomposition + * LU Decomposition + * Cramer + +## Syntax + +The function *scan* has the following syntax `scan(path)`, where `path` is the path to your directory. + +The function *solution* has the following syntax `write(array,path)`, where `array` is the matrix that you desire to output and `path` is the path to your directory. + +The python class *Insert* has a method for *matrix* and another for *vector*, and it has the following syntax `Insert.method(array)`, where `Insert` is the *Python Class* and `method` is either a `matrix` or a `vector` and `array` is either a *matrix* or a *vector*. + +### Processes + +The python class *process* has all the methods described in the first session. + +To call the method use a syntax like `sl = Seals.process()`, where `sl` is an instance and to use a method you have to append the method in front of the instance like: `sl.identity(array)`. + +* The method *identity* returns a *numpy* identity matrix of the order of the matrix passed into to it, and it has the following syntax `sl.identity(array)`, which `array` is a square matrix. + +* The method *gauss* returns a *numpy* vector containing the vector of variables from the augmented matrix. `sl.gauss(matrix)`, which `matrix` is the augmented matrix. + +* The method *inverse* returns a *numpy* inverse matrix of the matrix passed into to it, and it has the following syntax `sl.inverse(matrix)`, which `matrix` is a square matrix. + +* The method *cholesky* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +* The method *decomposition* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +* The method *cramer* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +## Installation + +To install the package from source `cd` into the directory and run: + +`pip install .` + +or run + +`pip install yoshi-seals` diff --git a/Older Versions/yoshi-seals1.2/Seals/Seals.py b/Older Versions/yoshi-seals1.2/Seals/Seals.py new file mode 100755 index 0000000..c3bc1e7 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/Seals/Seals.py @@ -0,0 +1,260 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import numpy as np +import csv +import pandas as pd +import math + +def scan(path): + + df=pd.read_csv(path, sep=';',decimal=",",header=None) + array = df.to_numpy() + + return array + +def write(array, path): + + with open(path, mode='w') as sistema_linear: + + solution_writer = csv.writer(sistema_linear, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) + solution_writer.writerows(array) + + return array + +class Insert: + + def __init__(self): + pass + + def matrix(self, matrix): + + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[1]): + + matrix[i][j] = float(input('Insira o elemento {}x{}: '.format((i+1),(j+1)))) + j += 1 + + i += 1 + + return matrix + + def vector(self, vector): + + j=0 + + while (j < vector.shape[0]): + + vector[j] = float(input('Insira o elemento b{}: '.format((j+1)))) + j += 1 + + return vector + +class process: + + def __init__(self): + pass + + def identity(self, matrix): + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[0]): + + if (i == j): + + matrix[i][j] = 1 + + elif (i != j): + + matrix[i][j] = 0 + + j += 1 + + i += 1 + + return matrix + + def gauss(self, matrix): + + i = 0 + k = 0 + + while (i < matrix.shape[0]): + + if (matrix[i][i] == 0): + + n = i + + while (matrix[i][i] == 0) and (n < matrix.shape[0]): + + temp = matrix[i].copy() + matrix[i] = matrix[n] + matrix[n] = temp + + n += 1 + + while (k < matrix.shape[0]): + + if (k == i) or (matrix[i][i] == 0): + + k += 1 + + else: + + mult = matrix[k][i]/matrix[i][i] + matrix[k] = matrix[k] - mult*matrix[i] + k += 1 + + i += 1 + k = 0 + + i = 0 + + while ((i) < matrix.shape[0]) and (matrix[i][i] != 0): + + matrix[i] = matrix[i]/matrix[i][i] + i += 1 + + return matrix[:,(matrix.shape[0]):] + + def inverse(self, matrix): + + return self.gauss(np.hstack((matrix, self.identity(np.zeros(matrix.shape))))) + + def cholesky(self, A, b): + + g = np.zeros((A.shape)) + + i = 0 + j = 0 + + while j < A.shape[1]: + while i < A.shape[0]: + + if i == 0 and j == 0: + + g[i][j] = math.sqrt(A[0][0]) + + elif j == 0: + + g[i][j] = A[i][0]/g[0][0] + + elif i == j: + + k = 0 + theta = 0 + + while k < i: + + theta += g[i][k]**2 + k += 1 + + g[i][j] = math.sqrt(A[i][i] - theta) + + else: + + k = 0 + theta = 0 + + while k < j: + + theta += g[i][k]*g[j][k] + k += 1 + + g[i][j] = (A[i][j] - theta)/g[j][j] + + i += 1 + + j += 1 + i = j + + y = (self.inverse(g)).dot(b) + + x = (self.inverse(g.T)).dot(y) + + return x + + def decomposition(self, U, b): + + L = self.identity(np.zeros(U.shape)) + + i = 0 + k = 0 + + while (i < U.shape[0]): + + k = 0 + + if (U[i][i] == 0): + + n = i + + while (U[i][i] == 0) and (n < U.shape[0]): + + temp = U[i].copy() + U[i] = U[n] + U[n] = temp + + n += 1 + + while (k < U.shape[0]): + + if (k <= i) or (U[i][i] == 0): + + k += 1 + + else: + L[k][i] = U[k][i]/U[i][i] + U[k] = U[k] - L[k][i]*U[i] + k += 1 + + i += 1 + + y = (self.inverse(L)).dot(b) + + x = (self.inverse(U)).dot(y) + + return x + + def cramer(self, A, b): + + x = np.vstack(np.zeros(b.shape)) + k = 0 + + while (k < A.shape[0]): + + temp = A.copy() + temp[:,k] = b + + x[k] = np.linalg.det(temp)/np.linalg.det(A) + + k += 1 + + return x diff --git a/Older Versions/yoshi-seals1.2/Seals/__init__.py b/Older Versions/yoshi-seals1.2/Seals/__init__.py new file mode 100644 index 0000000..b306940 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/Seals/__init__.py @@ -0,0 +1,23 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from .Seals import process +from .Seals import Insert +from .Seals import scan +from .Seals import write \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2/build/lib/Seals/Seals.py b/Older Versions/yoshi-seals1.2/build/lib/Seals/Seals.py new file mode 100644 index 0000000..c3bc1e7 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/build/lib/Seals/Seals.py @@ -0,0 +1,260 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import numpy as np +import csv +import pandas as pd +import math + +def scan(path): + + df=pd.read_csv(path, sep=';',decimal=",",header=None) + array = df.to_numpy() + + return array + +def write(array, path): + + with open(path, mode='w') as sistema_linear: + + solution_writer = csv.writer(sistema_linear, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) + solution_writer.writerows(array) + + return array + +class Insert: + + def __init__(self): + pass + + def matrix(self, matrix): + + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[1]): + + matrix[i][j] = float(input('Insira o elemento {}x{}: '.format((i+1),(j+1)))) + j += 1 + + i += 1 + + return matrix + + def vector(self, vector): + + j=0 + + while (j < vector.shape[0]): + + vector[j] = float(input('Insira o elemento b{}: '.format((j+1)))) + j += 1 + + return vector + +class process: + + def __init__(self): + pass + + def identity(self, matrix): + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[0]): + + if (i == j): + + matrix[i][j] = 1 + + elif (i != j): + + matrix[i][j] = 0 + + j += 1 + + i += 1 + + return matrix + + def gauss(self, matrix): + + i = 0 + k = 0 + + while (i < matrix.shape[0]): + + if (matrix[i][i] == 0): + + n = i + + while (matrix[i][i] == 0) and (n < matrix.shape[0]): + + temp = matrix[i].copy() + matrix[i] = matrix[n] + matrix[n] = temp + + n += 1 + + while (k < matrix.shape[0]): + + if (k == i) or (matrix[i][i] == 0): + + k += 1 + + else: + + mult = matrix[k][i]/matrix[i][i] + matrix[k] = matrix[k] - mult*matrix[i] + k += 1 + + i += 1 + k = 0 + + i = 0 + + while ((i) < matrix.shape[0]) and (matrix[i][i] != 0): + + matrix[i] = matrix[i]/matrix[i][i] + i += 1 + + return matrix[:,(matrix.shape[0]):] + + def inverse(self, matrix): + + return self.gauss(np.hstack((matrix, self.identity(np.zeros(matrix.shape))))) + + def cholesky(self, A, b): + + g = np.zeros((A.shape)) + + i = 0 + j = 0 + + while j < A.shape[1]: + while i < A.shape[0]: + + if i == 0 and j == 0: + + g[i][j] = math.sqrt(A[0][0]) + + elif j == 0: + + g[i][j] = A[i][0]/g[0][0] + + elif i == j: + + k = 0 + theta = 0 + + while k < i: + + theta += g[i][k]**2 + k += 1 + + g[i][j] = math.sqrt(A[i][i] - theta) + + else: + + k = 0 + theta = 0 + + while k < j: + + theta += g[i][k]*g[j][k] + k += 1 + + g[i][j] = (A[i][j] - theta)/g[j][j] + + i += 1 + + j += 1 + i = j + + y = (self.inverse(g)).dot(b) + + x = (self.inverse(g.T)).dot(y) + + return x + + def decomposition(self, U, b): + + L = self.identity(np.zeros(U.shape)) + + i = 0 + k = 0 + + while (i < U.shape[0]): + + k = 0 + + if (U[i][i] == 0): + + n = i + + while (U[i][i] == 0) and (n < U.shape[0]): + + temp = U[i].copy() + U[i] = U[n] + U[n] = temp + + n += 1 + + while (k < U.shape[0]): + + if (k <= i) or (U[i][i] == 0): + + k += 1 + + else: + L[k][i] = U[k][i]/U[i][i] + U[k] = U[k] - L[k][i]*U[i] + k += 1 + + i += 1 + + y = (self.inverse(L)).dot(b) + + x = (self.inverse(U)).dot(y) + + return x + + def cramer(self, A, b): + + x = np.vstack(np.zeros(b.shape)) + k = 0 + + while (k < A.shape[0]): + + temp = A.copy() + temp[:,k] = b + + x[k] = np.linalg.det(temp)/np.linalg.det(A) + + k += 1 + + return x diff --git a/Older Versions/yoshi-seals1.2/build/lib/Seals/__init__.py b/Older Versions/yoshi-seals1.2/build/lib/Seals/__init__.py new file mode 100644 index 0000000..b306940 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/build/lib/Seals/__init__.py @@ -0,0 +1,23 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from .Seals import process +from .Seals import Insert +from .Seals import scan +from .Seals import write \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2/dist/yoshi-seals-1.2.tar.gz b/Older Versions/yoshi-seals1.2/dist/yoshi-seals-1.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0606a1b156917919e24c7eb043cab265efadef56 GIT binary patch literal 3805 zcma*c_dnDD1Hf@PGwaB9A(_bt8Cltsbr}g~g~~j4WL#D@M^-I9kC0Q_OM_itVfBjZ{17vVV*WBcY>&Mr-)0?RG0c8%AwEMX zCWH6)Q-!|11BN1_D;$>AlR`0;SCvJ(&>`Cgvy# zcToulbulg+?o-9{EBs6_LZLvocqqQ5b7bj@-O5%78u;VbG{M>DXqYK>bWnTcgJWut+haJ`Zg*LN;r$8?~H!s`39QOb`3tI2K+u>Be(CT#oFEt z7Z<;vOZqUm*ND(2+<6$y~N=K)A zE+ZkN;!mKBL&E{LgS1%3sVh6*j8cf%mW%zeHy*9R7!RvK!(*V#$1mj(ZbAs9r))ucd(Uy8#Cc5oE0~`yUfT~08THFu{#9e zn~ZsrN0>O^w|6BCTard43(GCsVoew6Av()f5?;QLpY!~PLD9#X{karAum_NFG|J;)XV=_Nlm-TIH^iLf?UQQXNyKbt}OKwz_(diE2&Gu1Ohxx#K*R zlva;GZP80Qt>=Gp7MV%?a&0siCr;r)I^7K`=S zN~H1tnjG!JL4Ey=w4B>_%i=;aDE!77oFTQX6d`G?BQn^bQondhL&qCc|FAaB( zBzPp%O=;IVoacDo?b3G#b?^AQ(=(rLC$`6s%Vkx)=R|aGy6|OYmygzaC6Z#zqW#4n z9?CcVEV60j29R+65*4cSMlZlwH%RQYN^?>$ym8JNs~9Jkn^v|Jn+dNJ<7^e1FlXJR zRo=FMRf!92$ckP@f7Zq+H}*lEw|7?EHZ5dIJaLExHQ|~u5=tvt3jWGd-RZQ{12daw z_{SMo-uP8k$-R9|+E@+tR8@Y{D4o1Ken)v3L&;%vshr2_4^uqLNcLvN|B7lEHW!-1 zLMpb!#$S^|s)#b!agB^)nO6sAGv&fVAx(Dm48os%OX8CIJ&|cA(k-~I8MH&vR1P|1 z@xH4&y}AF={R%fs>#WcNrO`11eJ<^f`Yzt;o5pEbEZb8ZY_Az^l%_-5@`4$lv~7Sx zivNJy1;~)YgTe3R@Hk_IfB24s`}m>(4OsEOar)M4t4d?Xep6xo{IMxEb`^q_So&qFhOW&H`G%^mi)^oafR?n4QF7J7!_nKvYR#a}eg8h8?xGt}2Yw1U^G#^qx=>F&%3 zBR??@`;G1=%(sawi-1Ggq$S|7lM_--|2b!k_!rSonfy*}T?gKvgrq@*KNs5u{K~GMH zyz#`;xy%uP205fk;5*i{)G|e~sPJ*0V!&f9vU0J=wDM0yZ#|Exp}%8~B>eE%K$7NZ zQVDhFF7^=qu8D z7srd=ys8jod-DMfJgoozGmJnw*)RQ##fj3o@s^^9C(}`^@yuLlDOGfa@dOekf6Kt~yo&MEMoYN=Y~)5F2P@0q zcUS-2W>g~Aa&kp1{*JKXvp+xhDn8J+NEDl$SqXz$MRGBh*OGW$WYO0bZEin0nPI89 zHoqIb#LcSHq-mZW9F7ltChbH(u^EE-70J97&!o+N#ur<-53vv#vBsN+*D=hTR6OBY zU6hc?cEftI+%|G|rzR-kV$)Z|17Rd8b|(W{iYl&cOBV|b7yk2WW9Rt#!PASdu;*bH zakalLejT2ebfhjhJC<>O@`1rh1cN8+A8t1xgF+{@F8N{^pCsP}xXOPqt@hXXQbV~z zq_sBXO3`3mq))!2Zk>*#T=?Tg-pEhU10UAgL8TSR){2bX1}*qhZe1zpvj_WQ3M|>z zESpSa2V!mry9N`Z#uk|g(F3S&^nXcLUnL-W!dwOjt5!@lUb9{vt@aJpP|S~)Qqgu@ zQPo~N^HIBBTI>GEQhvqM@6TKf!LFmgQ!Ff>#lw}PkM33tS_lv$rd!9OTsoNa^{x0g z!g|`t&oRuannf;{cG!|E+od>~aiksCVA5)%EPZ$}JS!B|XI&xq84x~o5f~P6S{-ETs9eDRrGw4JuUK<)#M~*z#(h?T zTW$F5Vw_`CP)A(4>ctu{D(Oj!;!VC}rZ-KWRuK0arA#}ULWXEoyYwuh%bnMVw;^sN zFY3Qn7~&3A7eflkUGhHI>DH3ZZi(ZM0qFuXwfV^Up+id=@McUVd;+dIil9t)oDftru zN-G#0#EVrTD#g~EU98LfMa!LR?}nE1)t7vP$bWobgI*+8?9_wH_{KnYvp=qe@)7s4RuFGY;+EjF zw#v{}CP%{I)8yL0Yx)ESxJnbY@-()7lwONtNBot|<-yrcB|&h1Th~vJtXGX{+I##= z&?#Qvf=l`5)LR2VHouD2%DOb3N3ajyb^oT@aI5)qwJOcl;*YewSjvk zqy$rsAKx6C(ri)RsfQz=p;LK^r^nBrLPPvWM=|jcfV%Pp@b|FF(XO$fFn=z|`*im_ zO$0YN^DAz*P;YpzEL7lB`YEC1MSBzZ=h@Aw&n~}3WL`$X;jO9_P-?E5_MxP zA)}|-*SKLY(#G$IF7q3Q8$#Vl*QYZO6iYkQM z&rm$Xy;1(q&)xE7!N)I`yWG+qpLQquIn}aGuRSQqO3qN&^29v}%sECY^7h|ogKBldin@)Tu6=)g~U7Z`*U8R{0* z`JRbNx3z+)H{=!qJelMsPCPs|>NS|Qe8C!wW&fIfSU8}p5L(PNLDn2Ur(0>3s6I`dMndm$n6-&8tmEZw^ZS^K-7hK-^qM#yu?;IV$c2w6{+Hd+Z12X*>XU9{|IzbhVDp zUSYqLr2)=#2mgc)|L-C@$tB-UEzZi3K`*A17lMx$_2JP@0G{2lei;xT q@AgDg{R4O|vH#eOYtV_IW8qhNN+|um@VPb$04d7NiBOeNQT+$8n1zi1 literal 0 HcmV?d00001 diff --git a/Older Versions/yoshi-seals1.2/dist/yoshi_seals-1.2-py3-none-any.whl b/Older Versions/yoshi-seals1.2/dist/yoshi_seals-1.2-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3932dc2456d59c112bbe84ad9264a89851326fa3 GIT binary patch literal 10571 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 literal 0 HcmV?d00001 diff --git a/Older Versions/yoshi-seals1.2/setup.py b/Older Versions/yoshi-seals1.2/setup.py new file mode 100644 index 0000000..dd27003 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/setup.py @@ -0,0 +1,27 @@ +import setuptools + +with open("README.md", "r") as fh: + long_description = fh.read() + +setuptools.setup( + name="yoshi-seals", + version="1.2", + author="Vitor Hideyoshi", + author_email="vitor.h.n.batista@gmail.com", + description="Numeric Calculus python module in the topic of Linear Algebra", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/HideyoshiNakazone/Seals-NumericCalculus.git", + packages=setuptools.find_packages(), + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", + "Operating System :: OS Independent", + "Development Status :: 2 - Pre-Alpha", + ], + python_requires='>=3.6', + install_requires=[ + 'numpy', + 'pandas', + ], +) \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/PKG-INFO b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/PKG-INFO new file mode 100644 index 0000000..5d60ffb --- /dev/null +++ b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/PKG-INFO @@ -0,0 +1,69 @@ +Metadata-Version: 2.1 +Name: yoshi-seals +Version: 1.2 +Summary: Numeric Calculus python module in the topic of Linear Algebra +Home-page: https://github.com/HideyoshiNakazone/Seals-NumericCalculus.git +Author: Vitor Hideyoshi +Author-email: vitor.h.n.batista@gmail.com +License: UNKNOWN +Description: # Seals - Numeric Calculus + + This python package is made for applied Numeric Calculus of Linear Algebra. It is made with the following objectives in mind: + + * Scan *csv* files to make a numpy matrix. + + * Write a matrix into a *csv* file + + * Insert user input into a matrix or a vector. + + * Use methods to proccess the matrices. + * Identity Matrix + * Gauss Elimination + * Inverse Matrix + * Cholesky Decomposition + * LU Decomposition + * Cramer + + ## Syntax + + The function *scan* has the following syntax `scan(path)`, where `path` is the path to your directory. + + The function *solution* has the following syntax `write(array,path)`, where `array` is the matrix that you desire to output and `path` is the path to your directory. + + The python class *Insert* has a method for *matrix* and another for *vector*, and it has the following syntax `Insert.method(array)`, where `Insert` is the *Python Class* and `method` is either a `matrix` or a `vector` and `array` is either a *matrix* or a *vector*. + + ### Processes + + The python class *process* has all the methods described in the first session. + + To call the method use a syntax like `sl = Seals.process()`, where `sl` is an instance and to use a method you have to append the method in front of the instance like: `sl.identity(array)`. + + * The method *identity* returns a *numpy* identity matrix of the order of the matrix passed into to it, and it has the following syntax `sl.identity(array)`, which `array` is a square matrix. + + * The method *gauss* returns a *numpy* vector containing the vector of variables from the augmented matrix. `sl.gauss(matrix)`, which `matrix` is the augmented matrix. + + * The method *inverse* returns a *numpy* inverse matrix of the matrix passed into to it, and it has the following syntax `sl.inverse(matrix)`, which `matrix` is a square matrix. + + * The method *cholesky* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + * The method *decomposition* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + * The method *cramer* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + ## Installation + + To install the package from source `cd` into the directory and run: + + `pip install .` + + or run + + `pip install yoshi-seals` + +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2) +Classifier: Operating System :: OS Independent +Classifier: Development Status :: 2 - Pre-Alpha +Requires-Python: >=3.6 +Description-Content-Type: text/markdown diff --git a/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/SOURCES.txt b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/SOURCES.txt new file mode 100644 index 0000000..99af693 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/SOURCES.txt @@ -0,0 +1,9 @@ +README.md +setup.py +Seals/Seals.py +Seals/__init__.py +yoshi_seals.egg-info/PKG-INFO +yoshi_seals.egg-info/SOURCES.txt +yoshi_seals.egg-info/dependency_links.txt +yoshi_seals.egg-info/requires.txt +yoshi_seals.egg-info/top_level.txt \ No newline at end of file diff --git a/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/dependency_links.txt b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/requires.txt b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/requires.txt new file mode 100644 index 0000000..5da331c --- /dev/null +++ b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/requires.txt @@ -0,0 +1,2 @@ +numpy +pandas diff --git a/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/top_level.txt b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/top_level.txt new file mode 100644 index 0000000..ce88a75 --- /dev/null +++ b/Older Versions/yoshi-seals1.2/yoshi_seals.egg-info/top_level.txt @@ -0,0 +1 @@ +Seals diff --git a/README.md b/README.md new file mode 100644 index 0000000..1955730 --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +# Seals - Numeric Calculus + +This python package is made for applied Numeric Calculus of Linear Algebra. It is made with the following objectives in mind: + +* Scan *csv* files to make a numpy matrix. + +* Write a matrix into a *csv* file + +* Insert user input into a matrix or a vector. + +* Calculate Eigen Values + +* Use methods to proccess the matrices. + * Identity Matrix + * Gauss Elimination + * Inverse Matrix + * Cholesky Decomposition + * LU Decomposition + * Cramer + +## Syntax + +The module *scan* has a function for *Numpy* arrays and *Pandas* dataframes, and used the following syntax `Seals.scan.np(path)` for *Numpy* and `Seals.scan.pd(path)` for *Pandas*, where `path` is the path to your directory. + +The module *write* has a function for *Numpy* arrays and *Pandas* dataframes, and uses the following syntax `Sealswrite.np(array,path)` for *Numpy*, where `array` is the matrix that you desire to output and `path` is the path to your directory, and `Seals.write.pd(df,path)` for *Pandas*, where `df` is the matrix that you desire to output and `path` is the path to your directory. + +The module *insert* has a function for *matrix* and another for *vector*, and it has the following syntax `Seals.insert.function(array)`, where `insert` is the *Python Module* and `function` is either a `matrix` or a `vector` and `array` is either a *matrix* or a *vector*. + +There is also a function that given a matrix it return all real eigen values + +### Processes + +To call the module `process` use the syntax: `sl = Seals.process`, where `sl` is an instance and to use a function you have to append the desired function in front of the instance like: `sl.identity(array)`. + +* The function *identity* returns a *numpy* identity matrix of the order of the matrix passed into to it, and it has the following syntax `sl.identity(array)`, which `array` is a square matrix. + +* The function *gauss* returns a *numpy* vector containing the vector of variables from the augmented matrix. `sl.gauss(matrix)`, which `matrix` is the augmented matrix. + +* The function *inverse* returns a *numpy* inverse matrix of the matrix passed into to it, and it has the following syntax `sl.inverse(matrix)`, which `matrix` is a square matrix. + +* The function *cholesky* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +* The function *decomposition* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +* The function *cramer* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +## Installation + +To install the package from source `cd` into the directory and run: + +`pip install .` + +or run + +`pip install yoshi-seals` diff --git a/yoshi-seals1.3/LICENSE b/yoshi-seals1.3/LICENSE new file mode 100644 index 0000000..d2c5abe --- /dev/null +++ b/yoshi-seals1.3/LICENSE @@ -0,0 +1,278 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. \ No newline at end of file diff --git a/yoshi-seals1.3/README.md b/yoshi-seals1.3/README.md new file mode 100644 index 0000000..1955730 --- /dev/null +++ b/yoshi-seals1.3/README.md @@ -0,0 +1,55 @@ +# Seals - Numeric Calculus + +This python package is made for applied Numeric Calculus of Linear Algebra. It is made with the following objectives in mind: + +* Scan *csv* files to make a numpy matrix. + +* Write a matrix into a *csv* file + +* Insert user input into a matrix or a vector. + +* Calculate Eigen Values + +* Use methods to proccess the matrices. + * Identity Matrix + * Gauss Elimination + * Inverse Matrix + * Cholesky Decomposition + * LU Decomposition + * Cramer + +## Syntax + +The module *scan* has a function for *Numpy* arrays and *Pandas* dataframes, and used the following syntax `Seals.scan.np(path)` for *Numpy* and `Seals.scan.pd(path)` for *Pandas*, where `path` is the path to your directory. + +The module *write* has a function for *Numpy* arrays and *Pandas* dataframes, and uses the following syntax `Sealswrite.np(array,path)` for *Numpy*, where `array` is the matrix that you desire to output and `path` is the path to your directory, and `Seals.write.pd(df,path)` for *Pandas*, where `df` is the matrix that you desire to output and `path` is the path to your directory. + +The module *insert* has a function for *matrix* and another for *vector*, and it has the following syntax `Seals.insert.function(array)`, where `insert` is the *Python Module* and `function` is either a `matrix` or a `vector` and `array` is either a *matrix* or a *vector*. + +There is also a function that given a matrix it return all real eigen values + +### Processes + +To call the module `process` use the syntax: `sl = Seals.process`, where `sl` is an instance and to use a function you have to append the desired function in front of the instance like: `sl.identity(array)`. + +* The function *identity* returns a *numpy* identity matrix of the order of the matrix passed into to it, and it has the following syntax `sl.identity(array)`, which `array` is a square matrix. + +* The function *gauss* returns a *numpy* vector containing the vector of variables from the augmented matrix. `sl.gauss(matrix)`, which `matrix` is the augmented matrix. + +* The function *inverse* returns a *numpy* inverse matrix of the matrix passed into to it, and it has the following syntax `sl.inverse(matrix)`, which `matrix` is a square matrix. + +* The function *cholesky* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +* The function *decomposition* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +* The function *cramer* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + +## Installation + +To install the package from source `cd` into the directory and run: + +`pip install .` + +or run + +`pip install yoshi-seals` diff --git a/yoshi-seals1.3/Seals/__init__.py b/yoshi-seals1.3/Seals/__init__.py new file mode 100644 index 0000000..acc6016 --- /dev/null +++ b/yoshi-seals1.3/Seals/__init__.py @@ -0,0 +1,24 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from .insert import insert +from .process import process +from .scan import scan +from .write import write +from .eigen import eigen \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/__pycache__/__init__.cpython-37.pyc b/yoshi-seals1.3/Seals/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..057739ec4b5503315c30104fbdf2f3842d3392be GIT binary patch literal 283 zcmXwzziPuk490bLwo^*7^(8#iM@q*MLgu!Frjv&n6Cd%x{Rz^Q;z#N$W$o0xQ>W?- zmC&c3K;qMGwYmlleEfM^6aZg&_z%gj<)V9*0S4i~Lkl9abi#{P%&eUBvXwIzPI=WT z=JEh_^)2|c7MIEfGMJbaXN*Tf#8}X=58TTSw8=cz1!hN7S@;*glI0Vy%ADo*MUT-N zJ=(!ckw&Zc7*E)HZ^KFNr!>Z(pW^WD4Cz-xNzYriWO_&I=B`=mLq^?oHrUj4&3U?9 QJ^1-zbHfglZI&YEA18Z5xc~qF literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/Seals/eigen/__init__.py b/yoshi-seals1.3/Seals/eigen/__init__.py new file mode 100644 index 0000000..efa3006 --- /dev/null +++ b/yoshi-seals1.3/Seals/eigen/__init__.py @@ -0,0 +1,20 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from .eigen import eigen \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/eigen/eigen.py b/yoshi-seals1.3/Seals/eigen/eigen.py new file mode 100644 index 0000000..e8ba45a --- /dev/null +++ b/yoshi-seals1.3/Seals/eigen/eigen.py @@ -0,0 +1,51 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import numpy as np + +def eigen(a): + + k = 0 + l = np.ones((a.shape[0])) + + while (k < a.shape[0]): + + u = np.random.rand(a.shape[0],1) + u = u/max(u.min(), u.max(), key=abs) + + ctrl = 0 + + while (ctrl != l[k]): + + ctrl = l[k] + u = a.dot(u) + l[k] = max(u.min(), u.max(), key=abs) + u = u/l[k] + + + i = 0 + + while (u[i] == 0): + i += 1 + + a = a - (1/u[i])*u*a[i] + + k += 1 + + return l \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/insert/__init__.py b/yoshi-seals1.3/Seals/insert/__init__.py new file mode 100644 index 0000000..54364b5 --- /dev/null +++ b/yoshi-seals1.3/Seals/insert/__init__.py @@ -0,0 +1,23 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +name = 'insert' + +from .insert import matrix +from .insert import vector \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/insert/__pycache__/__init__.cpython-37.pyc b/yoshi-seals1.3/Seals/insert/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b21875da5617472173743331e6ad936c002df8ea GIT binary patch literal 259 zcmXwzv1-FG5QZgLH6=7tUZAUo`f%q^LY7P|fpn>d7*mN@U`gSmg!+;427MNgoQ>5IgVS*{egZ1H9@G;gWg?y6r<%K9&`162kQtXd2^8Y?^XEjJI=pIeeN? KQAo{F-0?FL)>JhT)l7CaPQo3!uMeJ|T2m0kPx zRR0dqqyJK_J@wF=Cr{4Is`w)?lW!)OWb#Q~EHB>?*lxGK9e&D$xTe9c1}L7R`TOX! z(DI{rD>Uc?d#TfXQDnywr>G@p3urIVe1%TSnVcMUvJ+>h*Tg&FjxYw3VFw%oj=c#o z;Etb@PHI>c9gzP5SMmxoJIw1~i=$7)49?dNFs1>uJkL=JtRdaK!Q;dYRq|o&RqJb4 z_HEycOk>($`28=Ld;LBYsye0F~`o;lPK#b&%O#r zV7?!y$~Hz-wKh}ht6J?jd+N%jsoPVvHw~3-)sEE{BjeR;u%Y%z zs=D>Yg`eGEJaq(%xcU`zB1vHd$R5ZZ^nho7v!!>)(U|QJ1+#tf7u!wd2+T1-g2-=9 z5a~&s{6ow!tkwTv9T6%=2NtQLH+3mF{29Vg2?fOby*Uonxh0Abqq)0Fs)z0&n&(f& g7h1;)aeTL!UyBESB=Q!N9T&G6COKp-RK()FAABv3#{d8T literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/Seals/insert/insert.py b/yoshi-seals1.3/Seals/insert/insert.py new file mode 100644 index 0000000..cebc52f --- /dev/null +++ b/yoshi-seals1.3/Seals/insert/insert.py @@ -0,0 +1,47 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +def matrix(matrix): + + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[1]): + + matrix[i][j] = float(input('Insira o elemento {}x{}: '.format((i+1),(j+1)))) + j += 1 + + i += 1 + + return matrix + +def vector(vector): + + j=0 + + while (j < vector.shape[0]): + + vector[j] = float(input('Insira o elemento b{}: '.format((j+1)))) + j += 1 + + return vector \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/process/__init__.py b/yoshi-seals1.3/Seals/process/__init__.py new file mode 100644 index 0000000..9afe304 --- /dev/null +++ b/yoshi-seals1.3/Seals/process/__init__.py @@ -0,0 +1,27 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +name = 'process' + +from .process import identity +from .process import gauss +from .process import inverse +from .process import cholesky +from .process import decomposition +from .process import cramer \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/process/__pycache__/__init__.cpython-37.pyc b/yoshi-seals1.3/Seals/process/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7842badec50d47bde2bdd6226a1b6595f00db061 GIT binary patch literal 388 zcmXw!J5Izf5J2t3`G7VZm)L?>ON|hsp#nu(Di<3?iIrF+cI3$->6T+`0wbjBqIL%7Z+T(lhEw*0r%_sq1oHxBPwz QFCT93JJ=yawBwiY56vWDCjbBd literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/Seals/process/__pycache__/process.cpython-37.pyc b/yoshi-seals1.3/Seals/process/__pycache__/process.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a056eeb3c4be8973cc38935e325c026dd511ef4 GIT binary patch literal 2597 zcmZuz&u<$=6rP!#U2jvzgc5<<1{6?17)q>GLU6FE0#y$cL=i1SL{)|HY+^h9IlGDM zYR#o^;eaAIa7`pG@F!H_#)&^+uk;eB$BF~u!1vy+*N)XhGxO%nn>RD>``%lByu7?5 z@b}A|XAi0`3h_5hrhf{;O|z@L+~PcVi(bVg3($iy-hZO9kJzOYT`)aX{M=5+UA zq4t%%VW5p+7pt1+t+Lj!pBwC-YGd5=12Iv>*<*YKFgwkI2nnkjbb@*Mt2sphp{sk;lp(G zSe}T9hU_55h+j>_Jj3X4ES=%TwitEJpz{PXoD&|?4(ywr`+JVXL#(KDWoC0(Ox#RQ zBX+HdGM%bwXc>wRXDHH3hfCWjXKv5G_(L$9;AB-!WB^0bn8o8gyUZSI*JJ`|PgHFWUNjskm+`ak%z=s%a zpaag5kS46xRZ$itVZEZtYDt%6Sr(NKjaF9_$+mr>psMe{~)$8PMP#{3m~ znVky{&PxIn!;4+!oICt=8xf`R`Ao_LuYC3nU*{gL!=vVRy*2L>-Zl2Y`|4TW{}AWW zx1@eEOIXj}J66Vgn3?I{;xikKp;y5Jc5<6%$w_)^I3;*eQ%AwpUtB%Nl znJ2JgT9?Fu=H6XHhf_(LQ3SPDIbUmwn*JFb!*hU zO5H*MSvEnV-yQVBR@CbEeuhPO6`i2cN3`IN-Fy+eKt<45m+K%z5mYEC`#S7%Dp0+p z#^tXKfeH>9K0ZW-Y1tWV&eOn}STK+p9}JxpduLbGu)FOdiS!A4u!Iy(QxE~31{LWR ztHqB&fn%07 zP!|xT6{H0v4?YENLI*h9-a&UTPElKhDg}|Me2N-n566u+%z?t^@h8czb@^w@4cZ^l RR?0oU?7!=4|9$_R{{ixa_{RVM literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/Seals/process/process.py b/yoshi-seals1.3/Seals/process/process.py new file mode 100644 index 0000000..968cd9c --- /dev/null +++ b/yoshi-seals1.3/Seals/process/process.py @@ -0,0 +1,203 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import numpy as np +import math + +def identity(matrix): + + i = 0 + + while (i < matrix.shape[0]): + + j = 0 + + while (j < matrix.shape[0]): + + if (i == j): + + matrix[i][j] = 1 + + elif (i != j): + + matrix[i][j] = 0 + + j += 1 + + i += 1 + + return matrix + +def gauss(matrix): + + i = 0 + k = 0 + + while (i < matrix.shape[0]): + + if (matrix[i][i] == 0): + + n = i + + while (matrix[i][i] == 0) and (n < matrix.shape[0]): + + temp = matrix[i].copy() + matrix[i] = matrix[n] + matrix[n] = temp + + n += 1 + + while (k < matrix.shape[0]): + + if (k == i) or (matrix[i][i] == 0): + + k += 1 + + else: + + mult = matrix[k][i]/matrix[i][i] + matrix[k] = matrix[k] - mult*matrix[i] + k += 1 + + i += 1 + k = 0 + + i = 0 + + while ((i) < matrix.shape[0]) and (matrix[i][i] != 0): + + matrix[i] = matrix[i]/matrix[i][i] + i += 1 + + return matrix[:,(matrix.shape[0]):] + +def inverse(matrix): + + return gauss(np.hstack((matrix, identity(np.zeros(matrix.shape))))) + +def cholesky(A, b): + + g = np.zeros((A.shape)) + + i = 0 + j = 0 + + while j < A.shape[1]: + while i < A.shape[0]: + + if i == 0 and j == 0: + + g[i][j] = math.sqrt(A[0][0]) + + elif j == 0: + + g[i][j] = A[i][0]/g[0][0] + + elif i == j: + + k = 0 + theta = 0 + + while k < i: + + theta += g[i][k]**2 + k += 1 + + g[i][j] = math.sqrt(A[i][i] - theta) + + else: + + k = 0 + theta = 0 + + while k < j: + + theta += g[i][k]*g[j][k] + k += 1 + + g[i][j] = (A[i][j] - theta)/g[j][j] + + i += 1 + + j += 1 + i = j + + y = (inverse(g)).dot(b) + + x = (inverse(g.T)).dot(y) + + return x + +def decomposition(U, b): + + L = identity(np.zeros(U.shape)) + + i = 0 + k = 0 + + while (i < U.shape[0]): + + k = 0 + + if (U[i][i] == 0): + + n = i + + while (U[i][i] == 0) and (n < U.shape[0]): + + temp = U[i].copy() + U[i] = U[n] + U[n] = temp + + n += 1 + + while (k < U.shape[0]): + + if (k <= i) or (U[i][i] == 0): + + k += 1 + + else: + L[k][i] = U[k][i]/U[i][i] + U[k] = U[k] - L[k][i]*U[i] + k += 1 + + i += 1 + + y = (inverse(L)).dot(b) + + x = (inverse(U)).dot(y) + + return x + +def cramer(A, b): + + x = np.vstack(np.zeros(b.shape)) + k = 0 + + while (k < A.shape[0]): + + temp = A.copy() + temp[:,k] = b + + x[k] = np.linalg.det(temp)/np.linalg.det(A) + + k += 1 + + return x \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/scan/__init__.py b/yoshi-seals1.3/Seals/scan/__init__.py new file mode 100644 index 0000000..2b354f2 --- /dev/null +++ b/yoshi-seals1.3/Seals/scan/__init__.py @@ -0,0 +1,23 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +name = 'scan' + +from .scan import numpy as np +from .scan import pandas as pd \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/scan/__pycache__/__init__.cpython-37.pyc b/yoshi-seals1.3/Seals/scan/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d50d5b1652bfdc988b840ee6de5356f74f04cba GIT binary patch literal 262 zcmXwzze)r#5XO^i_7w3tAHa4Ccetw$5gRMzUkCHp@$mEdT`~4qhW`=-chq=IqFK*0*J9#M^c62$5zD?NmK|&A zEb&eGFHYu$=h`1#TnJWCd9CoNS!L;!GpQI7Ww9)LOp>4%QNOcvRu)BmUtkQ*z-YBu z0*)5;DIAh=&iVuFmw5~x9)mtk2I1M@3@6tO8a3gj-L@O(3PMK@!7x~F=V55$lFxVU Obas11F<7#txa5Do@I&YT literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/Seals/scan/__pycache__/scan.cpython-37.pyc b/yoshi-seals1.3/Seals/scan/__pycache__/scan.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..057f8481cc6ea1d244d4441804529982f0aa9aa4 GIT binary patch literal 541 zcmZ8ey-UMD6u*xojY3sKaC34AXpg#DM0BXgB9;Oj%kLlBJoDZKczUO;oi|yeP7A!6t2!RwcWs#4?wf-AdgsS9Pi-&-HL{ zHW;$0g>0Jel4%Hox;4JreQ4QPnuzScizYHN;bXx!b literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/Seals/scan/scan.py b/yoshi-seals1.3/Seals/scan/scan.py new file mode 100644 index 0000000..1ec0404 --- /dev/null +++ b/yoshi-seals1.3/Seals/scan/scan.py @@ -0,0 +1,33 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import numpy as np +import pandas as pd + +def numpy(self, path): + + df=pd.read_csv(path, sep=';',decimal=",",header=None) + array = df.to_numpy() + + return array + +def pandas(self, path): + + return pd.read_csv(path, sep=';',decimal=",") + diff --git a/yoshi-seals1.3/Seals/write/__init__.py b/yoshi-seals1.3/Seals/write/__init__.py new file mode 100644 index 0000000..6bf064f --- /dev/null +++ b/yoshi-seals1.3/Seals/write/__init__.py @@ -0,0 +1,23 @@ +# Seals - Program made for educational intent, can be freely distributed +# and can be used for economical intent. I will not take legal actions +# unless my intelectual propperty, the code, is stolen or change without permission. + +# Copyright (C) 2020 VItor Hideyoshi Nakazone Batista + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. + +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +name = 'write' + +from .write import numpy +from .write import pandas \ No newline at end of file diff --git a/yoshi-seals1.3/Seals/write/__pycache__/__init__.cpython-37.pyc b/yoshi-seals1.3/Seals/write/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c309c913914f9ce59da33dd2f1d4e0415bbdf9e GIT binary patch literal 256 zcmXwzv5EpQ5QdX%Rz$SB2e@_%chFiyY^+WMg_A9A2_(3IO|m2_vXA7W_zK&}RrXd^ zHxcfK`S}L^;h*(nG9swk=J|6^2>Ff6zZk*_Cw!twQV>ZctEpiHqmdKjq)3qYo@8mC zUc7GAgJL?PeQM99=@15uuu_C=#(QpsQ9cGdmJ!d{dG4;SWrxBS4K J5Q{k*(?1`uLH_^% literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/Seals/write/__pycache__/write.cpython-37.pyc b/yoshi-seals1.3/Seals/write/__pycache__/write.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9beac4490212a6d0dd37690bdf7db96a22eed3d0 GIT binary patch literal 596 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 literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/dist/yoshi_seals-1.3-py3-none-any.whl b/yoshi-seals1.3/dist/yoshi_seals-1.3-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..fc8e8ce25451f929522f0d68b354adbbd95bf918 GIT binary patch literal 17438 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 literal 0 HcmV?d00001 diff --git a/yoshi-seals1.3/setup.py b/yoshi-seals1.3/setup.py new file mode 100644 index 0000000..c0a6cc2 --- /dev/null +++ b/yoshi-seals1.3/setup.py @@ -0,0 +1,27 @@ +import setuptools + +with open("README.md", "r") as fh: + long_description = fh.read() + +setuptools.setup( + name="yoshi-seals", + version="1.3", + author="Vitor Hideyoshi", + author_email="vitor.h.n.batista@gmail.com", + description="Numeric Calculus python module in the topic of Linear Algebra", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/HideyoshiNakazone/Seals-NumericCalculus.git", + packages=setuptools.find_packages(), + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", + "Operating System :: OS Independent", + "Development Status :: 2 - Pre-Alpha", + ], + python_requires='>=3.6', + install_requires=[ + 'numpy', + 'pandas', + ], +) \ No newline at end of file diff --git a/yoshi-seals1.3/yoshi_seals.egg-info/PKG-INFO b/yoshi-seals1.3/yoshi_seals.egg-info/PKG-INFO new file mode 100644 index 0000000..09158f0 --- /dev/null +++ b/yoshi-seals1.3/yoshi_seals.egg-info/PKG-INFO @@ -0,0 +1,71 @@ +Metadata-Version: 2.1 +Name: yoshi-seals +Version: 1.3 +Summary: Numeric Calculus python module in the topic of Linear Algebra +Home-page: https://github.com/HideyoshiNakazone/Seals-NumericCalculus.git +Author: Vitor Hideyoshi +Author-email: vitor.h.n.batista@gmail.com +License: UNKNOWN +Description: # Seals - Numeric Calculus + + This python package is made for applied Numeric Calculus of Linear Algebra. It is made with the following objectives in mind: + + * Scan *csv* files to make a numpy matrix. + + * Write a matrix into a *csv* file + + * Insert user input into a matrix or a vector. + + * Calculate Eigen Values + + * Use methods to proccess the matrices. + * Identity Matrix + * Gauss Elimination + * Inverse Matrix + * Cholesky Decomposition + * LU Decomposition + * Cramer + + ## Syntax + + The module *scan* has a function for *Numpy* arrays and *Pandas* dataframes, and used the following syntax `Seals.scan.np(path)` for *Numpy* and `Seals.scan.pd(path)` for *Pandas*, where `path` is the path to your directory. + + The module *write* has a function for *Numpy* arrays and *Pandas* dataframes, and uses the following syntax `Sealswrite.np(array,path)` for *Numpy*, where `array` is the matrix that you desire to output and `path` is the path to your directory, and `Seals.write.pd(df,path)` for *Pandas*, where `df` is the matrix that you desire to output and `path` is the path to your directory. + + The module *insert* has a function for *matrix* and another for *vector*, and it has the following syntax `Seals.insert.function(array)`, where `insert` is the *Python Module* and `function` is either a `matrix` or a `vector` and `array` is either a *matrix* or a *vector*. + + There is also a function that given a matrix it return all real eigen values + + ### Processes + + To call the module `process` use the syntax: `sl = Seals.process`, where `sl` is an instance and to use a function you have to append the desired function in front of the instance like: `sl.identity(array)`. + + * The function *identity* returns a *numpy* identity matrix of the order of the matrix passed into to it, and it has the following syntax `sl.identity(array)`, which `array` is a square matrix. + + * The function *gauss* returns a *numpy* vector containing the vector of variables from the augmented matrix. `sl.gauss(matrix)`, which `matrix` is the augmented matrix. + + * The function *inverse* returns a *numpy* inverse matrix of the matrix passed into to it, and it has the following syntax `sl.inverse(matrix)`, which `matrix` is a square matrix. + + * The function *cholesky* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + * The function *decomposition* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + * The function *cramer* returns a *numpy* vector containing the vector of variables from the coefficient matrix and the constants vector, and it has the following syntax `sl.cholesky(A,b)`, which `A` is the coefficient matrix and `b` is the constants vector. + + ## Installation + + To install the package from source `cd` into the directory and run: + + `pip install .` + + or run + + `pip install yoshi-seals` + +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2) +Classifier: Operating System :: OS Independent +Classifier: Development Status :: 2 - Pre-Alpha +Requires-Python: >=3.6 +Description-Content-Type: text/markdown diff --git a/yoshi-seals1.3/yoshi_seals.egg-info/SOURCES.txt b/yoshi-seals1.3/yoshi_seals.egg-info/SOURCES.txt new file mode 100644 index 0000000..d941c7a --- /dev/null +++ b/yoshi-seals1.3/yoshi_seals.egg-info/SOURCES.txt @@ -0,0 +1,18 @@ +README.md +setup.py +Seals/__init__.py +Seals/eigen/__init__.py +Seals/eigen/eigen.py +Seals/insert/__init__.py +Seals/insert/insert.py +Seals/process/__init__.py +Seals/process/process.py +Seals/scan/__init__.py +Seals/scan/scan.py +Seals/write/__init__.py +Seals/write/write.py +yoshi_seals.egg-info/PKG-INFO +yoshi_seals.egg-info/SOURCES.txt +yoshi_seals.egg-info/dependency_links.txt +yoshi_seals.egg-info/requires.txt +yoshi_seals.egg-info/top_level.txt \ No newline at end of file diff --git a/yoshi-seals1.3/yoshi_seals.egg-info/dependency_links.txt b/yoshi-seals1.3/yoshi_seals.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/yoshi-seals1.3/yoshi_seals.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/yoshi-seals1.3/yoshi_seals.egg-info/requires.txt b/yoshi-seals1.3/yoshi_seals.egg-info/requires.txt new file mode 100644 index 0000000..5da331c --- /dev/null +++ b/yoshi-seals1.3/yoshi_seals.egg-info/requires.txt @@ -0,0 +1,2 @@ +numpy +pandas diff --git a/yoshi-seals1.3/yoshi_seals.egg-info/top_level.txt b/yoshi-seals1.3/yoshi_seals.egg-info/top_level.txt new file mode 100644 index 0000000..ce88a75 --- /dev/null +++ b/yoshi-seals1.3/yoshi_seals.egg-info/top_level.txt @@ -0,0 +1 @@ +Seals