pax_global_header00006660000000000000000000000064141560673430014523gustar00rootroot0000000000000052 comment=2fb9564f35ea93671fc2b2d13164d992538120c2 linbox-1.7.0/000077500000000000000000000000001415606734300130235ustar00rootroot00000000000000linbox-1.7.0/.gitignore000066400000000000000000000011121415606734300150060ustar00rootroot00000000000000# Ignore all and unignore all with extensions, # so that no-extensions files are ignored by default. * !/**/ !*.* # Ignore generated files and folders **/Makefile.in **/*.log **/*.trs **/*.o **/*.exe **/*~ **/*.la **/*.lo **/.libs **/.deps/ # Ignore specific folders .vscode/ autom4te.cache/ build-aux/ # Ignore specific files _configs.sed aclocal.m4 autogen.status config.h config.h.in config.status linbox.pc macros/libtool.m4 macros/ltoptions.m4 macros/ltsugar.m4 macros/ltversion.m4 macros/lt~obsolete.m4 # @todo Don't know why that is here tests/.tmp-tests tests/checker.dSYM/ linbox-1.7.0/AUTHORS000066400000000000000000000037021415606734300140750ustar00rootroot00000000000000The Linbox group is composed of the following authors: Alexis Breust https://github.com/Breush Brice Boyer Jean-Guillaume Dumas Ahmet Duran Thierry Gautier Pascal Giorgi Bradford Hovinen Gavin Harrison Erich Kaltofen Romain Lebreton Austin Lobo Clement Pernet https://github.com/ClementPernet Daniel Roche B. David Saunders Rich Seagraves Alex Stashnik William J. Turner > Anna Urbanska Gilles Villard Zhendong Wan Brian Youse George Yuhasz and contributors: Frank Bellamy François Bissey https://github.com/kiwifb Nicolas Bordes https://github.com/NicsTr Brad Botting Cyril Bouvier https://github.com/cyrilbouvier Erik Bray https://github.com/embray Bob Caviness Li Chen Matthew Comer Abderhaman Cheniour Carl Devore Wayne Eberly Matthew Fendt Mark Giesbrecht Bruno Grenet Brian Gold Max Horn Jeremy Johnson Ben Karel Pierre Karpman George Labahn Matthew Lambert Wen-shin Lee Ashley Lesdalon David Lucas John May Dmitriy Morozov Vincent Neiger https://github.com/vneiger David Pritchard Sven Reichard Jean-Louis Roch Arne Storjohann Doug Torrance https://github.com/d-torrance Bastien Vialla https://github.com/BastienVialla linbox-1.7.0/CHANGED-INTERFACES000066400000000000000000000047501415606734300154260ustar00rootroot00000000000000Author: Hovinen (early 2002), edits by Saunders (2003Jan) Class names: In general: Most class names now follow the Java/Smalltalk MyClass style. Abbreviations have been removed in most cases. Field::randIter -> Field::RandIter sparsemat* -> SparseMatrix* diagonal -> Diagonal hilbert -> Hilbert etc. There are two notable exceptions: The wrapper of GMP long integers is "integer", and field elements are represented by "element". ParamGivaro::Modular was first renamed LargeModular, since it works over a modulus of arbitrary size. Corresponding SmallGivaro::Modular (word size modulus) and TinyGivaro::Modular (half-word size modulus) were planned. All of this has become Givaro::Modular, for basic element types of the various sizes, including unsigned and floating types. For example Givaro::Modular. Class methods: In general: I have standardized everything on the Java studlycaps style, e.g. MyClass::myMethod The names Blackbox_archetype::applyin and Blackbox_archetype::applyTransposein have been changed to BlackboxArchetype::applyIn and BlackboxArchetype::applyTransposeIn, respectively. Header files: All header files that previously used '_' to separate words use '-' now as '-' is easier to type. More generally the header file named first-second-third.h can be expected to contain a declaration of class FirstSecondThird. The archetype header files have been moved into directories containing objects of those archetypes and are all now named "archetype.h", "abstract.h", and "envelope.h". Header files are now installed into a tree matching that of the source code as opposed to a single, flat directory. So, for example, one now includes LinBox/blackbox/archetype.h as opposed to LinBox/blackbox-archetype.h Miscellanae: In the random iterator interface, the operator () has been replaced by a function random accepting a single argument -- an element type into which the random element should be placed. This eliminates the potential for memory leaks. The blackbox container class now requires that a field be passed, as it no longer retrieves the field from the black box. Some terms composed of more than one word are considered to be compound words and do not have internal capitalization, e.g. Blackbox (vs. BlackBox) and minpoly (vs. minPoly). Frozen design: These files are frozen and require team consensus for changes. field-archetype.h blackbox-archetype.h element-archetype.h randiter-archetype.h linbox-1.7.0/COPYING000066400000000000000000000432541415606734300140660ustar00rootroot00000000000000 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. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. linbox-1.7.0/COPYING.LESSER000066400000000000000000000636421415606734300150650ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 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. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, 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 library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along with the Library. 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 Library or any portion of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, 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 Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you 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. If distribution of 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 satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be 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. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library 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. 9. 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 Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library 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 with this License. 11. 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 Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library 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 Library. 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. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library 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. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library 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 Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, 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 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. 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 LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! linbox-1.7.0/ChangeLog000066400000000000000000006643431415606734300146150ustar00rootroot000000000000002021-12-10 v1.7.0 * new polynomial matrix API * new FFT code for polynomial matrices * Dixon solver refactorization * more examples for rational solutions * cleanup of BlasMatrixDomain with minor API changes * update wrt Givaro's new randiter API * many bug fixes 2019-06-07 v1.6.3 Minor update: * fix test-suite failures when compiling in builddir!=srcdir * improve jenkins builder script * add README.md and other missing files in distribution 2019-05-10 v1.6.0 Major code refactorization: * solve solution * echelon form code * prime generators * Smith form via Valence * MPI serialization and communicators Improvements: * many bug fixes * new hadamard bound solutions * removal of the obsolete sage-interface * update and new polynomial matrix classes and API with Givaro * MPI based chinese remaindering applied to solve * broader testsuite 2017-12-08 v1.5.2 Improvements: * minor bug fixes (missing config.h file, and SIMD macros) * documentation build fixes 2017-11-22 v1.5.1 Improvements: * minor bug fixes in the build system and autoinstall 2017-11-17 v1.5.0 Improvements: * improved build system (instruction set detection, C++11 and clang compatibility, ...) * many bug fixes * increased test-suite coverage Changes in API: * new PolynomialRing and DensePolynomial classes, and update interraction with Givaro and FFLAS 2016-07-30 cpernet v1.4.2 * cleanup and new features on polynomial matrices * many bug fixes ensuring support of gcc-4.8, 5.3, 6.1 clang-3.4 and icpc on i386, x86_64, ubuntu osx, fedora and ppcle 2016-02-24 cpernet v1.4.1 * update the build system (add pkgconfig file, and a more consistent way of dealing with dependencies) * fix all remaining issues for the integration in SageMath 2016-02-24 cpernet * move almost all finite fields to givaro * cleanup dead code * many bug fixes * change in some parts of the API * improved order basis computations 2011-03-10 briceboyer * Implement DublinBox Mother model for dense matrices (BlasM* own, BlasS* share) * Change BlasSubmatrix private members (and add one to make Iterators faster) * Change <> includes to "" so I have no surprise when the compiler looks them in a non expected place * add a const in Field Categories for a weird bug... * RawIterators are renamed to Iterators (impossible to pronounce, easy to misspell) * add functions to blas-domain and blas-matrix 2011-24-09 briceboyer * replace DenseMatrix(Base) by Blas(Matrix/Blackbox) * put these classes (and DenseSubmatrix) in a Protected namespace (users will be warned...) * update Blas(Mat/Bb) interface * clean DenseMatrix(Base) from LinBox * Delete BlasTag (use LinBoxTag class instead, avoids branching) * Update to Givaro gcd new clean intefarce * Update to one/zero in (some) Fflas-Ffpack fields * Rename Flaflas to more serious FFLAS-FFPACK * Minor updates in some classes. * martin albretch patch to update linbox-sage.h * M4RI checks * Ekopath (pathscale) checks 2011-05-11 briceboyer linbox-1.2.0 released: * Many many bug fixes, many memleaks, much code beautify. * Licence/copyright added to (hopefully) every file. * Vi/emacs magic lines for auto-indentation. * Some documentation added + improved Doxygen framework (dev/user documentation, more *.doxy items, bug/todo list, bibliography list) * Upgrade to givaro 3.4.0 series ( new namespace, new API for integer operations, a few new functions (naturallog...) ) * Upgrade to fflas-ffpack 1.4.0 (new namespace, new includes) * Some initial work introduced here and there (matrix permutation representations, symbolic/numeric solver, sparse matrix representation...) * CRA algorithms reworked and tested, some added. * Timer moved to Givaro * Some debug/util moved to FflasFfpack * Better configure.ac/Makefiles (more options, icc/gcc customisation,...) * More m4 rules * Possibility to use IML functions as a shared library (and some examples given) * 'make fullcheck' checks all possible tests given and reports * Auto-installer from sources/svn with plenty of options * Some new field functions like characteristic() * Work on synchronising field member functions signatures for better compatibility between all fields (in progress) 2010-11-03 cpernet linbox-1.1.7 released: * bug fixes and minor enhancements * New interface to sage (supporting native floating point representation) * new rebind interface * incorporate the code for computations over the rationals (by A Ubranska), still waiting to be cleaned-up (it is not used yet by default) 2008-09-22 cpernet linbox-1.1.6 released: * compilation pb, and bug fixes, for cygwin support and debianization 2008-06-10 cpernet * Upgrade fflas-ffpack to v1.3.3 (safer and tighter bounds, bug fixes,...) * Design changes for balanced finite field implementations * Improve efficiency of Chinese Remainder Algorithm * Add new interface to Sage * bugs and documentation fixes * remove gmp++ from LinBox, and thus make Givaro a necessary package 2008_03-02 cpernet linbox-1.1.5 released: * drivers are back to the source code, * shared libraries are enabled by default. * new code in fflas-ffpack for rank profiles * new double-determinant algorithm * changed the rawIndexedIterator interface, fixing the broken previous one. * many minor fixes, mostly memleaks. 2007-10-27 cpernet linbox-1.1.4 has been released including the following most important changes: * lots of memory leaks fixed * better compliance with BLAS * increased system solver functionalities (rectangular, rank deficient matrices) * support for g++/gcc v4.2 2007-09-28 cpernet * Add support for more general dense system solving: The system can be rectangular (over/underdetermined), singular. 2007-09-07 bds * This changelog is being widely ignored. Today buildbot test is on. 2007-01-31 bds * This entry is just to record that version 1.1.0 has been released by Jean-Guillaume Dumas and the current svn version is just a couple of steps from the release version. 2006-08-08 bds * examples/det.C, solutions/det.h, methods.h modified in preparation for * mpi based paralle cra loop in algorithms/cra-domain.h (by Bryan Youse). * also a stub of util/mpicpp.h added (will become the mpi interface). 2006-07-27 Hui Wang and bds * Add blackbox/quad-matrix.h which defines the ZOQuad matrix, * which is a cache efficient {0,1}-matrix rep. * Add it's tests, modify also blackbox/zo.h, * and accumulate-special in field/modular.h to better support sums of field elements efficiently. 2006-06-01 bds * rank.h adjusted to work around faulty PIVOT_LINEAR code in sparse elim. * test-rank.C now tests blackbox, elimination, hybrid methods as well as... 2006-04-18 bds and Hui Wang * examples/smith.C minor changes * linbox/blackbox/apply.h - don't recall what we did to wreck this. * linbox/blackbox/archetype.h linbox/blackbox/scalar-matrix.h linbox/blackbox/zero-one.h linbox/randiter/modular.h linbox/vector/stream.h tests/Makefile.am tests/Matio.h - minor touches * cvs thinks we changed just about everything in tests, but diff shows no change. We're checking in anyway * Where are our added files blackbox/zo.h zo.inl quad-matrix.h ? - which are a new version of zero-one and a block decomposed sparse matrix, resp. 2006-01-20 bds and Hui Wang * linbox/algorithms/gauss.inl - we think we made it better but it still isn't working :-) 2005-12-13 Pascal Giorgi * linbox/algorithms/Makefile.am: add new files * linbox/algorithms/lifting-container.h: minor change * linbox/algorithms/matpoly-mult.h: adding FFT and Karatsuba based polynomial matrix multiplication and middle product * linbox/algorithms/rational-reconstruction.h: use macro to enable timing * linbox/algorithms/rational-solver.h: minor change * linbox/algorithms/rational-solver.inl: minor chane * linbox/algorithms/short-vector.h: work in progress for ternary lattice reduction * linbox/algorithms/sigma-basis.h: add muti sigma basis computation and special Pade solver. * linbox/blackbox/block-hankel-inverse.h: enable use of new special Pade solver * linbox/blackbox/block-hankel.h: use macro to enable timing * linbox/randiter/{Makefile.am,random-fftprime.h}: add fftprime generator 2005-12-8 bds * minor cleanups 2005-11-17 Pascal Giorgi: * macros/blas-check.m4: adding new support for blas libraries * macros/linbox-opt.m4: adding new support for blas libraries * macros/linbox-misc.m4: adding new support for blas libraries * linbox/config-blas.h: linbox headers for BLAS * linbox/Makefile.am: add new BLAS support * linbox/fflas/Makefile.am: remove dependencies to ATLAS * linbox/fflas/fflas.h: add new BLAS support * linbox/ffpack.Makefile.am: remove dependencies to ATLAS * configure.in: remove ATLAS checking and replace with BLAS checking * linbox-config.in: remove ATLAS libs and replace with BLAS libs * tests/Makefile.am: remove ATLAS dependencies 2005-10-26 Pascal Giorgi: * linbox/algorithms/Makefile.am: add sigma-basis.h file * linbox/algorithms/sigma-basis.h: make sigma basis algorithm available * linbox/algorithms/blackbox-block-container.h: add support for special structured block * linbox/algorithms/blas-domain.h: fix bug * linbox/algorithms/lifting-container.h: add support for sparse solver using a Block Hankel inverse * linbox/algorithms/rational-solver.h(.inl): add new algorithm for solving sparse system * linbox/blackbox/Makefile.am: add block-hankel.h. block-toeplitz.h and block-hankel-inverse.h * linbox/blackbox/apply.h: fix optimization compatibility * linbox/blackbox/block-hankel.h : add a blackbox for block Hankel matrices * linbox/blackbox/block-hankel-inverse.h: add blackbox to compute the inverse of a block Hankel blackbox * linbox/blackbox/block-toeplitz.h: add a blackbox for block Toeplitz matrices * linbox/element/gmp-rational.h: fix this stupid bug using signed long integer to convert rational !!! * linbox/field/hom.h: add support for PID_integer homomorphism * linbox/ring/givaro-polynomial.h: fix bug * linbox/solutions/det.h: add handler for rational domain * linbox/solutions/charpoly.h: add handler for rational domain * linbox/solutions/minpoly.h: add handler for rational domain and hybrid method for blas blackbox * linbox/solutions/rank.h: add handler for rational domain * linbox/solutions/solve.h: add handler for rational domain and fix indentation * linbox/solutions/methods.h: fix indentation and add block hankel method 2005-09-01 Dan Roche * linbox/algorithms/toeplitz-det.h: Forgot to add this before. 2005-08-31 Pascal Giorgi: * linbox/algorithms/blas-domain.inl: add inverse specialization for multimod double domain * linbox/algorithms/cia.h: call domain specialized minpoly instead of calling API and make code generic according to integer ring * linbox/algorithms/lifting-container.h: support for multimod double domain * linbox/algorithms/matrix-hom.h: support for multimod double domain * linbox/algorithms/matrix-inverse.h: support for multimod double domain * linbox/algorithms/rational-solver.inl: support for multimod double domain * linbox/blackbox/apply.h: support for multimod double domain and new optimization * linbox/blackbox/blas-blackbox.h: support for multimod double domain, add construction from MatrixReader and finalize apply function * linbox/blackbox/submatrix.h: fixed indent style problem * linbox/ffpack/ffpack.h: fix memory leak problem * linbox/field/modular-double.h: add support for multimod double domain * linbox/field/ntl-ZZ.h: fix indent style problem * linbox/field/ntl-ZZ_p.h: set FieldTraits categoryTag * linbox/matrix/blas-matrix.h: add constructor from MatrixStream * linbox/matrix/dense-submatrix.h: add constructor from non const MatrixDenseBase * linbox/matrix/dense-submatrix.inl: add constructor from non const MatrixDenseBase, fix bug in ConstRawIterator operator++(int) * linbox/matrix/transpose.h: make the reference to the matrix to be non const * linbox/ring/givaro-polynomial.h: add support for PID-integer and NTL-ZZ domain * linbox/solutions/charpoly.h: throw an exception if matrix are not square * linbox/solutions/det.h: fix indentation and throw an exception if matrix are not square * linbox/solutions/minpoly.h: fix indentation, throw an exception if matrix are not square and make minpoly over the integer generic * linbox/solutions/rank.h: fix indentation * linbox/solutions/smith-form.h" fix indentation * linbox/util/debug.h: allow the PreconditionFailed to be a real LinBox exception 2005-08-19 Z. Wan * linbox/element/gmp-rational.h Fixed the error which occurs duing conversion between gmp integer and gmp rational 2005-08-18 Dan Roche * Added functionality for computing the determinant of a toeplitz matrix * Added field/ntl-ZZ_pX.h and field/ntl-lzz_pX.h, rings over the respective NTL polynomial types * Added functions pow and powin to field/ntl-ZZ_p.h and field/ntl-lzz_p.h (could be added to all fields) * Added blackbox/toeplitz.h and blackbox/toeplitz.inl, very similar to the existing Toeplitz blackbox class, but generalized to use any polynomial ring. Didn't delete the old blackbox/ntl-toeplitz.h, inl so old code doesn't break * Added tests/test-toeplitz-det.C to test all this * Modified tests/test-ntl-toeplitz.C to use the new Toeplitz class 2005-08-1 bds * numerous doc tweaks 2005-07-15 bds and zw * Now modular-balance-int.h and modular-int32.h define different classes. * Modular-int had been replaced by modular-int32. * Modular-int is now deprecated. * Added randiter/modular-balance.h 2005-07-13 bds and zw * solutions/solve.h call block-lanczos in bbsolve when cardinality small * algorithms/bbsolve.h call mg-block-lanczos * algorithms/mg-block-lanczos commentating number of trials. 2005-07-13 Bradford Hovinen * linbox/solutions/solve.h: Cast A.coldim () to double before calling log (solve): Initialize status * linbox/algorithms/rational-solver.inl: Use std::max * linbox/blackbox/apply.h: Move #include ntl-ZZ.h into #ifdef __LINBOX_HAVE_NTL * examples/solve.C: Add using namespace std 2005-07-13 bds and zw * tests/Makefile.am move test-la-block-lanczos to failing tests list * test-la-block-lanczos use case n = 10 to show problem * test-mg-block-lanczos restore maxtries to default, comment out nullspace test which has memory probs. * test-solve change default blocking factor to 16 2005-07-13 Bradford Hovinen * tests/Makefile.am (NTL_TESTS): Moved test-rational-solver, test-rational-solver-adaptive, test-smith-form-binary, test-last-invariant-factor here because they depend on NTL (GIVARO_TESTS): Moved test-ffpack, test-blas-domain, test-givaro-zpz here because they depend on Givaro * tests/Makefile.am (NTL_TESTS): Fix definition so that automake does not complain 2005-07-13 Pascal Giorgi fix and remove NTL dependencies - remove NTL dependecies: use of PID_integer * tests/test-last-invariant-factor.C * tests/test-rational-solver.C * tests/test-rational-solver-adaptive.C * tests/test-smith-form-binary.C - fix NTL dependencies: by use of __LINBOX_HAVE_NTL preprocessing * tests/test-smith-form.C * tests/test-smith-form-iliopoulos.C * tests/test-smith-form-local.C * tests/test-smith-form-adaptive.C * linbox/field/hom.h: specialization for NTL * linbox/algorithms/smith-form-adaptative.h - linbox/ring/givaro-polynomial.h: to be done by Jean-Guillaume and Clement 2005-07-12 Pascal Giorgi * linbox/matrix/factorized.inl: add support for singular system solving (inconsistent system is defined by the zero solution) fix also bug in nonsingular solving 2005-07-11 Pascal Giorgi (authorized by dictator Dumas)) * linbox/solutions/solve.h: change the interface for integer systems Make the solver interface working with Wiedemann method, Lanczos method * linbox/algorithms/solve.h: add support for Lanczos method * linbox/algorithms/bbsolve.h: fix compilation error * linbox/algorithms/wiedemann.h: fix compilation error * linbox/algorithmd/wiedemann.inl: fix compilation error * linbox/algorithms/lanczos.h: fix compilation error * linbox/algorithmd/lanczos.inl: fix compilation error 2005-07-07 Dan Roche * linbox/blackbox/sparse.h * linbox/blackbox/dense.h * linbox/matrix/sparse.h: Changed the RawIndexedIterator code so that dereferencing returns a reference to the value (same as RawIterator) * linbox/blackbox/lambda-sparse.h * tests/test-matrix-stream.C * linbox/algorithms/matrix-hom.h: Updated the code here to reflect change above 2005-07-07 Dan Roche * linbox/matrix/sparse.h: Went through and fixed more iterator problems that could be causing segfaults. 2005-07-06 bds and zw * linbox/solutions/is-positive-definite.h, is-positive-semidefinite.h, added functions isPositiveDefinite and isPositiveSemiDefinite. * linbox/tests/test-isposdef.C, test-ispossemidef.C, Makefile.am, added tests for them. * linbox/field/hom.h, linbox/algorithms/signature.h, minor tweaks. * linbox/algorithms/algorithms.doxy, docs related 2005-07-06 Dan Roche * examples/rank.C * examples/det.C: Modified these to use MatrixStream and thereby support multiple file formats. * linbox/matrix/sparse.h * linbox/matrix/sparse.inl: Fixed some problems with the iterators: seg faults were caused by poor handling of empty rows. * linbox/util/matrix-stream.inl: minor clean-ups 2005-07-4 Pascal Giorgi * linbox/blackbox/Makefile.am: add polynomial.h * linbox/blackbox/apply.h: add optimization * linbox/blackbox/blas-blackbox.h: add the use of BLAS asap * linbox/solutions/methods.h: extend dixon method * linbox/solutions/solve.h: add rational-solver and diophantine-solver support for BlasElimination method (need to fix denominator output). also add support for BlasElimination over finite field (not fully implemented) * linbox/algorithms/rational-reconstruction.h: define early termination according to threshold (0 means no early termination, x > 0 means early termination with checking each x steps) 2005-07-01 Pascal Giorgi * configure.in: add linbox/util/formats/Makefile.am support * add linbox/util/formats/Makefile.am file * linbox/util/Makefile.am: fixe comment problem 2005-07-01 Dan Roche * linbox/blackbox/dense.h * linbox/matrix/dense.inl * linbox/matrix/dense.h: Added Constructors from a matrix-stream * linbox/blackbox/sparse.h * linbox/blackbox/sparse.inl * linbox/matrix/sparse.h: Added Constructors from a matrix-stream Changed to use size_t for indexing rather than ints: * linbox/util/matrix-stream.h * linbox/util/matrix-stream.inl * linbox/util/formats/generic-dense.h * linbox/util/formats/maple-dense1.h * linbox/util/formats/maple-sparse1.h * linbox/util/formats/matrix-market.h * linbox/util/formats/sms.h * linbox/util/formats/sparse-row.h * tests/test-matrix-stream.C: Included sparse and dense blackbox matrix constructors in testing * tests/data/sms.matrix: Fixed a formatting error 2005-07-01 W. J. Turner * linbox/until/commentator.C: removed using namespace std directive 2005-06-30 Pascal Giorgi resolve symbol error in libutil.a (commentator.o needed timer.o) * linbox/util/commetator.C: include timer.C * linbox/util/Makefile.am: remove timer.c from libutil.a source (included through commentator) 2005-06-29 W. J. Turner Removed using declarations within several classes and replaced with this->... to preserve backwards compatability and allow compilation with gcc 3.4 and newer: * linbox/algorithms/blackbox-block-container.h * linbox/algorithms/blackbox-container-symmetric.h * linbox/algorithms/blackbox-container-symmetrize.h * linbox/algorithms/blackbox-container.h * linbox/algorithms/lifting-container.h * linbox/blackbox/frobenius.h * linbox/blackbox/lambda-sparse.h * linbox/blackbox/ntl-hankel.{h,inl} * linbox/blackbox/submatrix.h * linbox/field/givaro-zpz.h * linbox/matrix/blas-matrix.h * linbox/util/formats/generic-dense.h * linbox/util/formats/maple-dense1.h * linbox/util/formats/maple-sparse1.h * linbox/util/formats/matrix-market.h * linbox/util/formats/sms.h * linbox/util/formats/sparse-row.h 2005-06-27 W. J. Turner * linbox/ffpack/ffpack_charpoly_kgfast.inl: removed using namespace std directive * linbox/*/lidia-gfq.h: removed using namespace LiDIA directives * linbox/vector/sparse.h: removed using namespace LinBox directive * linbox/util/formats/*.h: removed using declarations * linbox/util/*.h: removed using declarations * linbox/util/xml/*.h: removed using declarations 2005-06-25 Bradford Hovinen * tests/test-mg-block-lanczos.C (testRandomSolve, testSampleNullspace): Use preconditioner SYMMETRIZE (main): Use more sensible defaults * examples/dot-product.C (main): Declare v1 and v2 to be of length n (fixes segfault) 2005-06-24 W. J. Turner * linbox/blackbox/*: removed using declarations and directives * linbox/field/*.h: removed using declarations and directives * linbox/field/ntl-lzz_pE.h: added explicit call to namespace in NTL::BuildIrred_zz_pX * linbox/field/ntl-GF2E.h: added explicit call to namespace in NTL::BuildSparseIrred_GF2X * linbox/randiter/*.h: removed using declarations 2005-06-17 Pascal Giorgi * /linbox/field/PID-integer.h: add sqrt function and homomorphism support * /linbox/field/hom.h: identation fixed * /example/solver/t-rdisove.C: comment givaro.h to fix compilation errors 2005-06-16 Pascal Giorgi * /linbox/blackbox/apply.h: add blas-blackbox compatibility * /linbox/blackbox/blas-blackbox.h: modify constructor and add category support * /linbox/matrix/blas-matrix.h: new creator and add category support * /linbox/matrix/matrix-category.h: move MatrixCategory from blas-matrix.h * /linbox/algorithms/blas-domain.h: fancy indentation * /linbox/algorithms/blas-domain.inl: add support for BlasBlackbox * /linbox/algorithms/matrix-hom.h: add support for BlasBlackbox * /linbox/algorithms/rational-solver.inl: use of MatrixHom and BlasBlackbox instead of MatrixMod and BlasMatrix 2005-06-15 Pascal Giorgi * /linbox/blackbox/apply.h : compatiblity with 64bits architecture 2005-06-14 Pascal Giorgi * /doc directory: modification to documentation (linbox.html become central) * macros/linbox-doc.m4: new documentation checking (use of Doxygen) * configure.in: take into consideration new doc checking 2005-06-10 bds methods.h working for det.h in good form - other solutions may be broken: Can consider det.h a good model for solutions funs now. 2005-06-07 Z. Wan * linbox/blackbox/matrix-blackbox.h, linbox/matrix/dense.h, sparse.h, added reind to DenseMatrixBase and SparseMatrixBase. 2005-05-02 Pascal Giorgi * configure.in , macros/linbox-opt.m4 : add optimization process during linbox configuration * linbox/fflas/fflas.h : allow the use of optimized Winograd threshold 2005-04-26 -bds * Name changes *ntl-zz* --> *ntl-lzz* to avoid clashes with ZZ in case insensitive situations. * Also change test*.cpp to test*.C for consistency 2005-03-32 Pascal Giorgi * linbox/fflas/fflas_fgemm.inl: fix compilation error with WinoMain function call * linbox/algorithms/Makefile.am, rational-solver.h,.inl: set default prime size to 20 bits and make number of prime to try as a user parameter in function solve * tests/Makefile.am, test-rational-solver.C : retrieve rational solver test (make commentator progress worrking) 2005-03-30 bds * removed xml read/write code in numerous places * misc small stuff (I forgot what I may have changed, to tell the truth!) 2005-03-17 PG and ZW * linbox/algorithms/cra.h, cra-det-integer.h, minpoly-integer.h, Makefile.am, added functionalities for integer cases using modular arithmetic and CRA * linbox/solutions/det.h, minpoly.h, rank.h, unified the interface, added blas elimination for det and rank 2005-03-15 bds *tests/test-rank.C linbox/solutions/rank.h methods.h Introduce rank by blas-elimination, together with check for too small prime in wiedemann rank. 2005-02-17 Zhendong Wan (wan@cis.udel.edu) *linbox/algorithms/rational-reconstruction.h, implemented the fast early termination techniques, which was described in a preprint paper submitted to ISSAC'05. 2005-02-16 Zhendong Wan (wan@cis.udel.edu) *linbox/algorithms/rational-solver.h, rational-solver.inl, rational-solver-adaptive.h, Merged rational solver using numerical methods with others 2005-02-14 Clement Pernet (Clement.Pernet@imag.fr) * Improvements to FFLAS::fgemm routine: Winograd's fast matrix multiplication is now working for any operation of the type C<-alpha.A*B + beta.C * Dynamic pealing is now generic wrt the field * The recursive block algorithm is now working over the field if the BLAS condition is not met 2005-02-07 Clement Pernet (Clement.Pernet@imag.fr) * Change the name fflapack -> ffpack * bug fixes in blackbox-block-container.h * compilation failure of test-rational-solver due to "assert" in rational-solver.h should be fixed * compilation failuer in test-matrix-stream due to 888888888888888 being to big should be fixed 2005-02-04 Zhendong Wan (wan@cis.udel.edu) *Add linbox/solutions/cra.h, minpoly-integer.h, add codes to compute the minpoly of an integer matrix. *Modify linbox/test-minpoly.C, add test for minpoly of an integer matrix. *Modify linbox/solutions/minpoly.h, it can hanle integer case. ** linbox/solutions/cra.h and linbox/algorithms/cra.h should merge in future ** minpoly-integer.h and minpoly.h should merge, and support blas in future 2005-02-03 Zhendong Wan (wan@cis.udel.edu) *linbox/field/PID-double.h, PID-integer.h, PIR-modular-int.h, PIR-modular-int32.h, PIR-ntl-ZZ_p.h, double-fmod.h, field-traits.h gf2.h, givaro-gfq.h, givaro-montg.h, givaro-rational.h, givaro-zpz.h, gmp-integers.h, gmp-rational.h, lidia-gfq.h local2_32.h, modular-balance-int.h, modular-balance-int32.h, modular-byte.h, modular-double.h, modular-int.h, modular-int32.h, modular-short.h, modular.h, ntl-GF2E.h ntl-RR.h, ntl-ZZ.h, ntl-ZZ_p.h, ntl-ZZ_pE.h, ntl-pid-zz_p.h, ntl-zz_p.h, ntl-zz_pE.h, param-fuzzy.h, unparametric.h, added information in field traits in order to classify all rings. 2005-03 Zhendong Wan (wan@cis.udel.edu) *linbox/algorithms/matrix-mod.h, change class MatrixMod to namespace, so that some special mod functions can be addaed *linbox/algorithms/rational-reconstruction.h, rational-solver.inl, fixed compiling complaints 2005-01-28 Dan Roche * examples/linbox-program.C - various fixes * field/unparametric.h - was casting to long and then to integer - fixed * field/hom.h - added mapping from UnparametricField to Modular * util/matrix-stream.h Provides a new, generic way of reading matrices in multiple formats. * util/formats New directory for matrix-stream format specifications * util/formats/matrix-stream-readers.h Place to include all the different format specification files: * util/formats/generic-dense.h * util/formats/maple-dense1.h * util/formats/maple-sparse1.h * util/formats/matrix-market.h * util/formats/matrix-stream-readers.h * util/formats/sms.h * randiter/gmp-random-prime.h Generates random numbers up to a given size * tests/test-matrix-stream.C Tests to see if matrix-stream is working * Sample matrices used by test-matrix-stream: * tests/data/generic-dense.matrix * tests/data/maple-dense1.matrix * tests/data/maple-sparse1.matrix * tests/data/matrix-market-array.matrix * tests/data/matrix-market-coordinate.matrix * tests/data/sms.matrix * tests/data/sparse-row.matrix 2005-01-07 ZW * linbox/field/gmp-integers.h, fixed init * linbox/field/modular-double.h, implemented a fast init 2004-12-03 bds * matrix/sparse.h .inl - add reading of Magma Compact form * vector/vector-domain.h .inl - can't read into const vectors, so rm 'const 2004-10-08 bds * examples/blackbox/Makefile.am smith.C - minor * field/field-traits.h givaro-gfq.h ntl-GF2E.h - put in maxmodulus * doc/Doxyfile mainpage - minor doc changes 2004-09-30 Pascal Giorgi * linbox/algorithms/lifting-container.h: take modification of MatrixApplyDomain setup function * linbox/algorithms/rational-solver.inl: use of BlasMatrix instead of BlasBlackbox * linbox/algorithms/rational-reconstruction.h: add lifting commentator progress in getRational3 function * linbox/blackbox/apply.h: redefine MatrixApplyDomain s.t. specialization for dense storage is easier * linbox/matrix/dense.inl: make reading with sparse format work and fix bug in writing over domain with non positive cardinality 2004-09-21 Pascal Giorgi * linbox/algorithms/Makefile.am: Add headers for (rationnal-solver.inl, diophantine-solver.inl, vector-fraction.h) * linbox/algorithms/blackbox-block-container-base.h: Use BlasDomain and BlasMatrix * linbox/algorithms/blackbox-block-container.h: Make BlackboxBlockContainerRecord class (handling precomputed sequence and row-colum updating) * linbox/algorithms/block-massey-domain.h: Compute generating matrix polynomial using Sigma Basis through algorithm of GJV-ISSAC'03 * linbox/algorithms/block-wiedemann.h: Add block Wiedemann solver * linbox/algorithms/lifting-container.h: Add specialisation for Block Wiedemann method and clean optimizations * linbox/algorithms/rational-solver.h: Add specialisation for Block Wiedemann method * linbox/algorithms/rational-solver.inl: Add specialisation for Block Wiedemann method * linbox/blackbox/Makefile.am: Add headers for lambda-sparse.h and blas-blackbox.h * linbox/blackbox/apply.h: Put optimizations on matrix-vector product - moved from lifting-container * linbox/fflas/fflas_fgemm.inl: Fix bug on Winomain function * linbox/fflas/fflas_ftrsm.inl: Fix bug on normalisation before BLAS call * linbox/field/Makefile.am: Add ntl-GF2E.h header * linbox/field/ntl-GF2E.h: Add wrapper for GF(2^n) of NTL library * linbox/field/modular-double.h: Improve DotProductDomain specialization * linbox/field/ntl.h: Add ntl-GF2E.h header * linbox/matrix/blas-matrix.h: Take into account modifications of dense-submatrix * linbox/matrix/dense-submatrix.h: Use pointer instead of reference * linbox/matrix/dense-submatrix.inl: Use pointer instead of reference * linbox/matrix/factorized-matrix.inl: Fix the extractions of L, U and S * linbox/solutions/methods.h: Add BlockWiedemann method * linbox/util/gmp++/Makefile.am: Remove gmp++_int.c ( redudant for compilation) 2004-09-02 Bradford Hovinen * linbox/algorithms/la-block-lanczos.h (class LABlockLanczosSolver): Add _iter, _total_dim, _rank * linbox/algorithms/la-block-lanczos.inl (cleanup): Update _rank (rank): Implement * linbox/blackbox/diagonal.h (class Diagonal): Compilation fix * linbox/blackbox/dense.h (class DenseMatrix): Make _AT use DenseMatrix, not DenseMatrixBase * tests/test-la-block-lanczos.C (main): * tests/test-mg-block-lanczos.C (main): Use better defaults * linbox/algorithms/la-block-lanczos.inl (solve, sampleNullspace): Clear history when done * tests/Makefile.am (BASIC_TESTS): Add test-mg-block-lanczos * linbox/algorithms/la-block-lanczos.h (class LABlockLanczosSolver::InnerProductArray): Add reset * linbox/algorithms/la-block-lanczos.inl (iterate): Reset uAv * linbox/algorithms/Makefile.am (pkgincludesub_HEADERS): Add eliminator.{h|inl} * tests/Makefile.am (BASIC_TESTS): Add test-la-block-lanczos * linbox/algorithms/Makefile.am (pkgincludesub_HEADERS): Add la-block-lanczos.{h|inl}, mg-block-lanczos.{h|inl}; remove block-lanczos.{h|inl} 2004-09-01 bds * solutions/minpoly.h tests/test-minpoly.C: add minpolySymmetrize 2004-09-01 bds wan zw * linbox/algorithms/rational-solver-adaptive.h, adaptive solve 2004-08-30 bds and zw * linbox/algorithms/one-invariant-factor.h, smith-form-adaptive.inl, make bonus works 2004-08-30 bds and zw * linbox/algorithms/smith-form-adaptive.h, inl. Implementation of an adaptive algorithm for Smith form 2004-08-30 bds * linbox/randiter/mersenne-twister.h linbox/util/commentator.h linbox/util/gmp++/gmp++_int_misc.C tests/Makefile.am tests/test-common.C: LinBoxSrcOnly flag also used in tests/ now (to avoid incompatibility with use in examples/) 2004-08-30 bds * examples/ex-integers.C examples/Makefile.am linbox/util/gmp++/Makefile.am: Turn on LinBoxSrcOnly flag for examples compilations so that user does not confront load-library problems. * doc/Makefile.am examples/Matio.h linbox/integer.h linbox/blackbox/*.h etc.: switch documentation system to doxygen. (it still needs plenty of work) * add .doxy files (replacing .dxx files) to doc system * examples/blackbox/smith.C and smithbig.C: smith form examples. 2004-08-28 Pascal Giorgi * examples/solver/t-rdisolve.C: add sparse matrix format for file and make seed to work * linbox/algorithms/diophantine-solver{.h,.inl}: adding parameters information of solving * linbox/algorithms/rational-reconstruction.h: clear bugs in timings 2004-08-26 Z. Wan * linbox/algoriths/last-invariant-factor.h, implement the bonus idea \ref{....} 2004-08-26 Pascal Giorgi * examples/fields/ex-fields-archetype.C : put std namespace * examples/run/run.C : put std namespace * examples/solver/Makefile.am : change order of libs for compilation * examples/solver/t-rdisolve.C : change to use the new design of rational solver * gmp++/gmp++_int.h : Added new function to get the size of integer in base B and base 2 * gmp++/gmp++_int.inl : Added implementation of bitsize() and size_in_base( int base) functions * linbox/algorithms * diophantine-solver.h : use new design of rationnal solver * diophantine-solver.inl : use new design of rationnal solver ( disabling conversion for VectorFraction) * lifting-container.h : Added fast apply over ring when entries of the matrix are small enough ( say less than 2^16) * rational-reconstruction.h : Added direct method for reconstruction, added switch between early termination and direct method * rational-solver.inl : Added blas optimization for preconditionning matrices in random solution solver * linbox/fflapack/fflapack.h : Maked triangular inverse available * linbox/field/PID-double.h : Added abs and compare functions, + indentation * linbox/field/PID-integer.h : Added abs and compare functions, + indentation * linbox/matrix/dense.inl : problem with resizing in read function, leave code as it was but add the older version as comment 2004-08-24 Z. Wan (wan@cis.udel.edu) * change ith-invariant-factor.h to one-invariant-factor.h * Change the implementation of the alogrithm for oneinvariantfactor, use the enhanced algorithm in ISSSAC'04 papre by bds and ZW 2004-08-24 Z. Wan (wan@cis.udel.edu) *linbox/algorithms/rational-solver.h, inl, rational-reconstruction.h, linbox/tests/test-rational-solver.C, change the format of the rational solution a vector of rationals ====> (a vector of the numerator, the common denominator). 2004-08-19 Z. Wan (wan@cis.udel.edu) * linbox/algorithms/rational-reconstruction.h, implement the V. Pan's idea for final reconstruction step. * linbox/field/ntl-ZZ.h, add abs and compare member function. 2004-08-19 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * gmp++/gmp++_int.inl - Added wrapper for mpz_import (convert word array to LinBox::Integer) * linbox/algorithms - Added timing to rational solving routines (#define RSTIMING in rational-solver.h) * diophantine-solver.h - made QSolver field into a reference type * diophantine-solver.inl - changed comments * lifting-container.inl - Added blas optimization for muliplication of large integer matrices in Dixon * rational-reconstruction.h - Changed getRational2 again so that early termination num/denbounds work * rational-solver.h - Added timing, reportTimes() * rational-solver.inl - Added timing * vector-fraction.h - Added comment, about how RandIter may have unrandom low-order bits * linbox/blackbox/apply.h - Removed bad overload of applyV * linbox/fflapack/fflapack.h - changed name of function to LQUPtoInverseOfFullRankMinor * linbox/field/modular-double.h - added constr. from long int, to avoid ambiguity warning when making t-rdisolve * linbox/matrix/dense.inl - attempted to fix problems with Const{Row/Col}Iterator operator++ (int) * linbox/matrix/factorized-matrix.h - added comment about how GetQ returns Qt * linbox/util/timer.C - added a count field to the timer (how many intervals does this timer measure) * linbox/util/timer.h - added a count, stopped small negative rounding errors from printing * gmp++/gmp++_int_cstor.C - added mpz_import function wrapper * tests/test-common.C - fixed reading of large integers * examples/solver/t-rdisolve.C - added flag to make some columns zero, made better random entries 2004-08-11 bds * examples/blackbox/smith.C illustrates iliopolous' and local methods * matrix/dense.inl read() now adjusts to new input size rather than complaining. Also read() accepts sparse file format. 2004-08-11 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * gmp++/gmp++_int.inl - Added nth root function declaration * linbox/algorithms * diophantine-solver.inl - minor changes * lifting-container.h - fixed reconstruction lifting bound * rational-reconstruction.h - added getRational2; will eventually be las-vegas style reconstructor - changed early termination so that 2*numbound*denbound is always less than modulus * rational-solver.inl - more updates, fixes. now only one LQUP is used to check consistency - added optimization wherein LQUP is used to compute a modular inverse more quickly * linbox/fflapack/fflapack.h - added InverseFromLQUP function; fixed invL bug * linbox/matrix/blas-matrix.h - moved indexDomain here (allows application of BlasPermutation to indices, using BlasMatrixDomain) * linbox/matrix/dense-submatrix.inl - minor fix * linbox/util/gmp++/gmp++_int_misc.C - added nth root function 2004-08-09 Dan Roche * gmp++/gmp++_int.inl: Add arithmetic function support for long long and unsigned long long * linbox/blackbox/dense.h,inl: Add hadamardBound method to DenseMatrixFactory * linbox/blackbox/sparse.h: Make hadamardBound return a reference to res, and avoid overflow in computing hadamardBound * linbox/solutions/det.h: little fixes 2004-08-09 Pascal Giorgi * /linbox/blackbox/sparse.h : Fix bugs in SparseMatrixFactory. it compiles right now * /linbox/util/gmp++/gmp++_int_io.C : avoid memory leaks in Integer2string function * /linbox/field/ntl-zz_pE.h : adding new wrapper for NTL algebraic extension of single precision prime field * /linbox/field/ntl-ZZ_pE.h : write a class to handle parametric field * /linbox/field/ntl.h, Makefile.am : adding new field ntl-zz_pE.h 2004-08-08 Dan Roche (roche@cis.udel.edu) * examples/linbox-program.C - now works for determinant also - except that someone recently broke solutions/det.h and blackbox/sparse.h * gmp++/gmp++_int.h, linbox/util/gmp++/gmp++_int_misc.C - added prevprime so that prime-stream.h works * linbox/integer.h - added an abs function here so it works for all types from int8 up to integer. * linbox/algorithms/cra.h - changed invmod to inv so that this compiles * linbox/blackbox/dense.h,.inl - added DenseBlackboxFactory class so I can use det.h to find determinant of a dense matrix over the integers. * linbox/solutions/det.h - NUM_BITS is determined from FieldTraits (linbox/field/field-traits.h) 2004-08-06 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * examples/solver/t-rdisolve.C - added use of 3 'solver levels' and check of certificate of inconsistency * linbox/algorithms * diophantine-solver.h - added use of 3 'solver levels', improved documentation * diophantine-solver.inl - added use of 3 solver levels * lifting-container.h - changed normblackbox to properly compute "norm" of composed boxes * rational-reconstruction.h - added getRational2 for solver use, hopefully will be las-vegas * rational-solver.h - added use of 3 solver levels, certifying of inconsistency, documentation * rational-solver.inl - added use of 3 solver levels, certifying inconsistency - combined 'solve' and 'getRandomSolution' to be both variants of 'solveMonolithic' * vector-fraction.h - simplified constructor * linbox/fflapack/fflapack_ludivine.inl - bugfix for LQUP of rectangular matrices (specifically M x 1 case) * linbox/field/unparametric.h - removed dumb comment * linbox/matrix/blas-matrix.h - added method extendTrivially to embed permutation in larger row/column size * linbox/tests/test-common.C - bugfix 2004-07-30 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * examples/solver/t-rdisolve.C - added diophantine checking+certification, more options - moved VectorFraction class to own file in algorithms - moved new command-line stuff into test-common.C (should be backwards-compatible) * linbox/algorithms * vector-fraction.h - added new file. for storing fractions like [n1 n2 n3 n4 ... ]/d - has various combination functions used by diophantine-solver * blas-domain.inl - fixed a broken linbox_check for vector-matrix product * diophantine-solver.h - diophantine checking, min-denom certification works now * diophantine-solver.inl - diophantine checking, min-denom certification works now * rational-solver.h - made SolverReturnStatus a global enum, preceded by SS_ * rational-solver.inl - added generation of a partial certificate to randomSolve - solveDeterministic is now fully Las Vegas * apply.h - added applyVTrans(vector, const matrix, vector) * linbox/fflas/fflas_fgemv.inl - fixed errors in transpose matrix product * linbox/matrix * blas-matrix.h - fixed flipped row/coldim in constructor * dense-submatrix.h - fixed typo, removed unimplemented operator[] * dense.h - removed debug output * transpose.h - replaced Column with Col * tests/test-common.h - example string can now be passed as null and intelligently generated by default * tests/test-common.C - boolean options can now be turned off like "-b false", "-b -", "-b N" - added a string to write all current switch options to an ostream * tests/test-rational-solver.C - updated to reflect new return type of rational solver 2004-07-26 David Pritchard (dpritcha@ens-lyon.fr, daveagp@mit.edu) * linbox/algorithms * added diophantine-solver.{h,inl} (no diophantine functionality yet) * Makefile.am - added diophantine-solver.h * blas-domain.h - added forms of inv and invin that return the nullity of the matrix * blas-domain.inl - added forms of inv and invin that return the nullity of the matrix, fixed typo * last-invariant-factor.h - changed type of b vector from int to Integer * lifting-container.h - changed blackbox norm to square of 'induced norm', fixed lifting length calculation - added graceful failure to digit (eg if Ring is used improperly) * rational-reconstruction.h - added debug switch DEBUG_RR, graceful failure * matrix-rank.h - changed tabbing * rational-solver.h - many changes to Dixon; Wiedemann may not work - added DEFAULT_PRIMESIZE = 14 (since 30 bit default size would screw up some fields) - added maxPrimes argument to solving routines, will retry that many primes - added const modifier to solving routines, made _prime mutable * rational-solver.inl - many changes to Dixon; Wiedemann may not work - added debug switches, graceful failure for solving routines - changed BlasMatrixDomain routines to BlasApplyDomain to avoid erroneous calculations - in singular/random solve, check solution before returning, and multiply by conditioner P correctly - added consistency check to random solver * linbox/blackbox/blas-blackbox - added to CVS * linbox/blackbox/dense.h - matrix reading bugfix * linbox/fflapack/fflapack.h - pass nullity back in Invert2, and return NULL when matrix is singular * linbox/fflas/fflas_fgemv.inl - remove assumption that alpha=-1, beta=1 * linbox/fflas/fflas_ftrmm.inl - fixed computation of matrix size bound for embedding into FFLAS * linbox/field * PID-double.h - changed 'c=abs(c)' to 'if (c<0) c = -c', no abs found for double * PID-integer.h - changed documentation of isDivisor(a, b) (returns yes if b|a) * givaro-montg.h - fixed init from integer * givaro-zpz.h - fixed init from integer, double and Log16 specializations * givaro-gfq.h - fixed init from integer * modular.h - added init from double - added several specializations of Modular * modular-double.h - fixed operator<< * modular-int.h - fixed init/convert with double * modular-int32.h - fixed init/convert with double * ntl-ZZ.h - changed const to static for convert method - changed documentation of isDivisor(a, b) (returns yes if b|a) * ntl-ZZ_p.h - added init/convert from/to integer, double - put NTL_ZZ_p at top and specialization at bottom for compiler - changed random generator to give fuller range * ntl-zz_p.h - added init from double, integer * unparametric.h - added convert to double * linbox/matrix/dense-submatrix.h - added mapleFormat option to DenseSubmatrix writing * linbox/matrix/dense-submatrix.inl - added mapleFormat option to DenseSubmatrix writing * linbox/randiter/random-prime.h - the class now takes a 'bits' argument on construction and makes primes of that size * linbox/vector/vector-domain.inl - fixed reading bug * tests/Matio.h - added mapleFormat option to write_field * tests/test-fflapack.C - matched Invert2 to new 'nullity' argument format * tests/test-iliopoulos-elimination.C - #define int32 LinBox::int32 to avoid ambiguity with Givaro * tests/test-last-invariant-factor.C - int32 -> LinBox::int32 to avoid ambiguity with Givaro * tests/test-last-rational-solver.C - int32 -> LinBox::int32 to avoid ambiguity with Givaro - now handles solver failures without crashing - added check to ensure that system is solvable (ie no zero elements on diagonal) * tests/test-smith-form.C - int32 -> LinBox::int32 to avoid ambiguity with Givaro * examples/solver/t-rdisolve.C - test driver for rational solver, compile and run t-rdisolve -? * examples/solver/Makefile.am - make file 2004-07-16 Pascal Giorgi * linbox/field/lidia-gfq.h : fixing bug and improvement * tests/Makefile.am : retrieving test-lidia-gfq, fixing modular and gssv redundancy * tests/test-modular.C : using namespace std 2004-07-16 Pascal Giorgi * linbox-config.in : switching order of LiDIA in libs * linbox/randiter/envelope.h : modify random function ( assignement is not needed) * linbox/matrix/dense-submatrix.h : setting input and output functions public * linbox/field/givaro-zpz.h : adding linbox/utils/debug.h header * linbox/field/lidia-gfq.h : setting default degree extension to 1 * linbox/field/ntl-ZZ_p.h : overloading the constructor of UnparamField 2004-07-08 Dan Roche * Adding examples/linbox-program.C which will eventually do a wide variety of operations on integer matrices * gmp++/gmp++_int.h,inl : Little fixes * linbox/algorithms/wiedemann.inl : Little fixes * linbox/matrix/blas-matrix.h : Little fixes * linbox/util/gmp++/gmp++_int_compare.C, gmp++_int_mod.C : Little fixes * linbox/vector/sparse.h : Little fixes * tests/test-fields.C : Little fixes * tests/Makefile.am : Moved everything that uses rational-solver to ATLAS_TESTS rational-solver won't work without BLAS. * fields/field-traits.h : Took implementation out of this file and put it in each field header file. * fields/givaro-gfq.h : Added init and convert from/to a padic number * fields/modular.inl : Fixed some problems with MVProductDomain functions over unsigned types 2004-07-06 Bradford Hovinen * linbox/blackbox/dense.h (class DenseMatrix): Add _AT, a TransposeMatrix of this * linbox/blackbox/dense.inl (DenseMatrix::applyTranspose): Use _AT * linbox/matrix/matrix-domain.h (class MatrixDomain): Get rid of template argument MatrixTrait on specialized permute * linbox/vector/vector-domain.h (class VectorDomain): Get rid of template argument VectorTrait on specialized permute, swap * linbox/matrix/sparse.h (struct MatrixTraits): * linbox/vector/vector-domain.inl (class VectorDomain): * linbox/vector/vector-domain.h (class VectorDomain): * linbox/matrix/matrix-domain.h (class MatrixDomain): * linbox/matrix/transpose.h (struct MatrixTraits): * linbox/matrix/dense.h (struct MatrixTraits): Remove templates from matrix tags 2004-07-02 pascal giorgi * blackbox/apply.h : adding BlasApply domain * blackbox/compose.h : adding accessor to left an right blackbox * blackbox/sparse.h : make write function const * field/ all givaro file : fixe bugs * field/lidia-gfq.h : make it works * field/modular-double.h : add reset function in axpy domain * field/field-traits.h : add specialization for some fields * field/double-fmod.h : include * field/ntl-ZZ.h : remove all static and replace by const function * field/PID-double field/PID-integer.h : adding 2 new PID * matrix/dense.h.inl matrix/sparse.h.inl : make interators work * randiter/ntl-ZZ.h randiter/lidia-gfq.h : fix bugs and make clearer * solutions/method.h : add new traits for rational solvers * algorithms/ * blackbox-container-base.h : adding new constructor allowing size of sequence as parameter * blackbox-container.h : adding new constructor allowing size of sequence as parameter * lifting-containe.h : make a new interface for lifting (give specialization for Wiedemann and Dixon methods) * matrix-inverse.h : put Field as template and require a field as parameter (not restrictive to blackboxes) * matrix-mod.h : giving a specializatino * rational-reconstruction.h : make it clear with lifting interface * rational-solver.h : make a new interface for rational solver * rational-solver.inl : give specialization for Wiedemann and Dixon methods 2004-06-21 bds * removed NAGSparse blackbox which has been replaced by Triplesbb. Mods to linbox/util/xml/reader-blackbox-factory.h tests/Makefile.am Removed Files: blackbox/nag-sparse.h tests/test-nag-sparse.C 2004-06-16 Zhendong Wan * linbox/solutions/lu.h, tests/test-lu.C, fix the block lu and make test work. 2004-06-10 Dan Roche * Added linbox/field/modular-balance-int32.h to use int32 type * Added more fields to tests/test-fields.C * Added more fields and functionality to linbox/field/field-traits.h * Changed most fields so that every field constructor takes two arguments, a modulus and an exponent. Default values are put in so everything should still work the same. 2004-06-10 bds * New version 0.1.4 * final doc mods before release 0.1.4 2004-06-09 bds * Little tweaks. 2004-06-08 Dan Roche * Updated Modular to use the int32 type in integer.h * Added linbox/field/modular-int32.h * Added linbox/field/PIR-modular-int32.h * Updated tests/test-modular-int.h * Updated tests/test-iliopoulos-elimination.C * Updated tests/test-last-invariant-factor.C * Updated tests/test-rational-solver.C * Updated tests/test-smith-form.C * Updated tests/test-fields.C to use types from integer.h and to determine number of iterations based on machine speed. Also uses goodModulus method from FieldTraits struct. * Added linbox/field/field-traits.h, containing struct FieldTraits which can do other things but for now just provides information about valid moduli for a given field. 2004-06-08 bds * assorted documentation mods. * introduced BlackboxInterface, similar to FieldInterface, an empty base class solely for the purpose of organizing the heirarchy in the documentation. 2004-06-07 bds * assorted documentation mods. 2004-06-05 bds and Zhendong Wan * linbox/field/double-fmod.h is now redundant * linbox/field/modular-double.h uses the fmod approach * tests/test-generic.h now has a basic concept check for randiter and a chi-sq randomiterator check that doesn't fail on reasonably uniform random iterators over int elements. * tests/test-double-fmod.C and tests/test-modular-double.C now work. 2004-06-04 Dan Roche * Added tests/test-double-fmod.C Added tests/test-fields.C which benchmarks ops for fields Added tests/test-modular-double.C Added linbox/randiter/generic.h which is a generic random iterator used in double-fmod Added linbox/field/double-fmod.h which is like modular-double, but uses the fmod command from math.h 2004-06-04 bds * comments in rational.h suggesting that it is nowhere used. Shall we delete? 2004-04-20 Zhendong Wan * Add linbox/blackbox/blackbox_parallel.h, blackbox_thread.h, subrowmatrix.h, parallel blackbox apply and applyTranspose by using posix threads. * Modify linbox/blackbox/sparse.h, dense.h, dense.inl, linbox/vector/subvector.h, add parallel apply and applyTranspose for SparseMatrix and DenseMatrix. 2004-03-25 bds * documentation mods 2004-03-17 bds * gmp++/gmp++_int.h linbox/util/gmp++/gmp++_int.C, gmp++_int_add.C, gmp++_int_compare.C, gmp++_int_cstor.C, gmp++_int_div.C, gmp++_int_gcd.C, gmp++_int_io.C, gmp++_int_misc.C, gmp++_int_mod.C, gmp++_int_mul.C, gmp++_int_pow.C, gmp++_int_sub.C, tests/test-common.h: mods to make flag -DLinBoxSrcOnly work. 2004-03-04 Zhendong Wan * linbox/blackbox/sparse.h, set default Row to be SparseMap, which is more efficient to call setEntry, refEntry member function. * tests/test-minpoly.h, make it works with change in sparse.h. 2004-03-04 Zhendong Wan * linbox/blackbox/diagonal.h linbox/blackbox/hilbert.h, linbox/blackbox/scalar-matrix.h linbox/blackbox/submatrix.h, linbox/field/PIR-modular-int.h linbox/field/PIR-ntl-ZZ_p.h, linbox/field/modular-byte.h linbox/field/modular-int.h, linbox/field/modular-short.h linbox/field/modular.h, linbox/field/modular.inl linbox/matrix/matrix-domain.h, linbox/matrix/matrix-domain.inl linbox/matrix/sparse.h, linbox/matrix/sparse.inl linbox/vector/stream.h, linbox/vector/vector-domain.h linbox/vector/vector-domain.inl, linbox/vector/vector-traits.h tests/test-common.h, make these Tag classes non-template, since they are only used to distinguish vector types and for this purpose, ordinary classes suffice. 2004-03-04 Zhendong Wan * linbox/blackbox/dense.h linbox/blackbox/sparse.h, linbox/matrix/archetype.h linbox/matrix/dense-submatrix.h, linbox/matrix/dense.h linbox/matrix/matrix-domain.h, linbox/matrix/sparse.h linbox/matrix/transpose.h, tests/test-matrix-domain.C, make struct RowMatrixTag, struct ColMatrixTag, struct RowColMatrixTag non-template classes, since they are only used to distinguish the matrix types and in this case, non-template classes suffice and codes become simpler. 2004-03-02 Zhendong Wan * remove linbox/vector/const-iterator-type.h, since in new gcc, std::vector::iteretor is not same type as Element*, it doesnot work anymore. * modify linbox/vector/subvector.h, add one template parameter const_iterator. * linbox/blackbox/dense.h, dense.inl, use MatrixDomain to conform SparseMatrix implementation. 2004-03-02 Zhendong Wan * linbox/blackbox/sparse.h, remove field VectorDomain _VD, since it is not used in any member function. 2004-02-07 Zhendong Wan * linbox/algorithms/rational-reconstruction.h, speed it up bu only reconstructing the rationals at every threshold position. 2004-02-06 bds * linbox/gen_superlu/gssv_rank.h linbox/gen_superlu/trsv.h tests/Makefile.am tests/test-gssv_rank.C tests/data/gssv_rank_data: fix gssv_rank test (works except for A'+A case). 2004-02-04 Zhendong Wan * Add linbox/field/PIR-modular-int.h, which is an extension of Modular with PIR functions. 2004-02-03 Zhendong Wan * Modify linbox/field/PIR-ntl-ZZ_p.h, add MVProductDomain, DotProductDomain for PIR_ntl_ZZ_p 2004-01-28 Zhendong Wan * Modify linbox/algorithms/iliopoulos-elimination.h, making it work in a PIR suggest by bds. * Modify linbox/tests/test-iliopoulos-elimination.C, making it work upon change of iliopoulos-elimination * Add linbox/field/PIR-ntl-ZZ_p.h, adpating ntl-ZZ_p, and adding PIR interface (gcd, xgcd, dxgcd). 2004-01-27 Zhendong Wan * Modify linbox/algorithms/bitonic-sort.h, minor name change * Add linbox/tests/test-bitonic.C, test for bitonic-sort 2004-01-27 BDS * Modify linbox.dxx doc/.cvsignore doc/doc.dxx, min doc change 2004-01-27 BDS *add linbox/field/ntl-pid-zz_p.h, linbox/field/local2_32.h, linbox/algroithms/local-smith.h, code for local smith form computation. *add linbox/tests/test-local-smith.C, modify linbox/tests/Makefile.am, add test for local smith algorithm 2004-01-26 Zhendong Wan * add linbox/field/ntl-ZZ.h, linbox/randiter/ntl-ZZ.h, adapter NTL::ZZ to linbox. * add linbox/algorithms/lifting-container.h, linbox/algorithms/rational-reconstruction.h, linbox/algorithms/rational-solver.h, solve the linear systems over the rationals by lifting. * add linbox/algorithms/bitonic-sort.h, implement bitonic-sort, a sort network sequential implemenation. * add linbox/algorithms/iliopoulos-elimination.h, implement the Iliopoulos algorithm for Smith form. * add linbox/blackbox/apply.h, linbox/blackbox/scompose.h, linbox/blackbox/compose-traits.h, linbox/blackbox/random-matrix-traits.h, linbox/blackbox/random-matrix.h, linbox/blackbox/submatrix-traits.h, linbox/algorithms/ith-invariant-factor.h, linbox/algorithms/last-invariant-factor.h, linbox/algorithms/matrix-inverse.h, linbox/algorithms/matrix-mod.h, linbox/algorithms/smith-form.h, implement EGV/EGV+/EGV++ algorithm for Smith Form computation. * add linbox/tests/test-last-invariant-factor.C, linbox/tests/test-smith-form.C, linbox/tests/test-iliopoulos-elimination.C, add test for smith form computation and iliopoulos elimination. 2004-01-26 Zhendong Wan * linbox/blackbox/submatrix.h, add specialization for submatrix of denese matrices. * linbox/matrix/dense-submatrix.h, linbox/matrix/dense-submatrix.inl, fixed output / input 2004-1-15 bds * field/archetype.h field/field-interface.h: doc tweaks * matrix/dense-submatrix.h matrix/dense-submatrix.inl: fixed write trouble. * vector/subvector.h: fixed swap 2004-01-07 Pascal Giorgi Fix some printing messages in : * macro/atlas-check.m4 * macro/expat-check.m4 * macro/givaro-check.m4 * macro/lidia-check.m4 * macro/ntl-check.m4 * macro/saclib-check.m4 2003-12-29 Bradford Hovinen * linbox/matrix/transpose.h (class TransposeMatrix): Remove const requirement on input matrix; add in regular iterators * tests/test-matrix-domain.C (transpose): Remove const (testInvMulOver, testInvMulUnder, testInvLeftMulinOver) (testInvRightMulinOver): Remove const from parameter M 2003-12-28 Bradford Hovinen * linbox/vector/vector-domain.h (class VectorDomain): Add permute, swap functions * linbox/vector/vector-domain.inl (swapSpecialized, permuteSpecialized): Implement * linbox/matrix/matrix-domain.inl (permuteRowsByRow) (permuteRowsByCol, permuteColsByRow, permuteColsByCol): Implement * linbox/matrix/matrix-domain.h (class MatrixDomain): Add row/column permutation functions 2003-12-19 bds * tests/Makefile.am: just clean up some comments 2003-12-19 Pascal Giorgi * added files : linbox/gen_superlu/Makefile.am: missing file macros/config-header.m4: create linbox-config.h from config.h by prefixing all variable by __LINBOX_ macros/linbox-misc.m4: allow --with-all and --with-default options Modify Makefile such they use pkg variable * gmp++/Makefile.am * interfaces/Makefile.am * interfaces/maple/Makefile.am * linbox/Makefile.am * linbox/algorithms/Makefile.am * linbox/blackbox/Makefile.am * linbox/element/Makefile.am * linbox/fflapack/Makefile.am * linbox/fflas/Makefile.am * linbox/field/Makefile.am * linbox/iterators/Makefile.am * linbox/matrix/Makefile.am * linbox/randiter/Makefile.am * linbox/solutions/Makefile.am * linbox/switch/Makefile.am * linbox/util/Makefile.am * linbox/util/xml/Makefile.am * linbox/vector/Makefile.am Modify all macro such that they use --with-package terminology + some new features * macros/Makefile.am * macros/atlas-check.m4 * macros/expat-check.m4 * macros/givaro-check.m4 * macros/gmp-check.m4 * macros/lidia-check.m4 * macros/maple-check.m4 * macros/ntl-check.m4 * macros/saclib-check.m4 modify sources and headers files such that the use the new terminology variable from linbox-config.h * linbox/blackbox/archetype.h * linbox/blackbox/compose.h * linbox/blackbox/dense.h * linbox/blackbox/diagonal.h * linbox/blackbox/nag-sparse.h * linbox/blackbox/ntl-toeplitz.h * linbox/blackbox/ntl-toeplitz.inl * linbox/blackbox/permutation.h * linbox/blackbox/scalar-matrix.h * linbox/blackbox/sparse.h * linbox/blackbox/triplesbb.h * linbox/blackbox/zero-one.h * linbox/blackbox/zero-one.inl * linbox/fflas/fflas.h * linbox/fflas/fflas_fgemm.inl * linbox/field/abstract.h * linbox/field/archetype.h * linbox/field/envelope.h * linbox/field/gf2.h * linbox/field/givaro-gfq.h * linbox/field/givaro-zpz.h * linbox/field/gmp-rational.h * linbox/field/lidia-gfq.h * linbox/field/modular.h * linbox/field/ntl-RR.h * linbox/field/ntl-ZZ_p.h * linbox/field/ntl-ZZ_pE.h * linbox/field/unparametric.h * linbox/matrix/dense.h * linbox/matrix/dense.inl * linbox/matrix/sparse.h * linbox/matrix/sparse.inl * linbox/randiter/gf2.h * linbox/randiter/gmp-rational.h * linbox/randiter/lidia-gfq.h * linbox/randiter/modular.h * linbox/randiter/nonzero.h * linbox/randiter/unparametric.h * linbox/util/xml/field-reader-analyzer.h * linbox/util/xml/reader-blackbox-factory.h * configure.in: Modification for new features * tests/Makefile.am: disable some tests and put tests in right place according to their dependencies * tests/test-lsp.C: changing the verification of result to be faster * Hacking: Adding new way of installation * maple stuff installation have been improved 2003-12-15 Saunders/Wan/Lobo * lbmaple.C: getField -> field, template for triplebb. 2003-11-18 Saunders/Wan * merge newBB branch into main branch (note: there is an indented section of branch changelog notes down below.) 2003-10-21 Pascal Giorgi Modify few Makefile.am in order to synchronise make dist and make check * linbox/algorithm/Makefile.am adding lsp.h * linbox/field/Makefile.am add modular-balance-int.h hom.h image-field.h * linbox/blackbox/Makefile.am add missing files * tests/Makefile.am fixe some bugs. move test-gssv.C to EXTRA PROGRAM 2003-10-08 wan@udel.edu * linbox/matrix/dense.inl, remove the width in write member function, since it causes problem for some ring and it is not necessary, for example, linbox integer doesnot have fixed length 2003-09-29 wan@udel.edu * linbox/util/field-zxpy.h, linbox/vector/vector-domain.h,.inl, linbox/field/givaro-zpz.h,modular-balance-int.h,modular-byte.h,modular-int.h,modular-short.h,modular.h,unparametric.h, add a new member reset to FieldAXPY, set initial accumulator's value to zero, thus we can put an instantiation of FieldAXPY into field of VectorDomain, instead of temporily instantiating FieldAXPY whenever we need it. 2003-09-27 wan@udel.edu * linbox/field/ntl* linbox/randiter/mersenne-twister.* linbox/randiter/unparametric.h, make them work with the new random memebr function. 2003-09-27 wan@udel.edu * linbox/blackbox/dense.h, change the parameter RandIter &iter --> const RandIter &iter in its constructor. 2003-09-27 wan@udel.edu * linbox/randiter/*.h, make each random member function to be a const member function in each random class, since the member will not change the instantiation of the random class at all, just generate a random element. * linbox/matrix/dense.inl, make RowIterator and ColIterator support operator --() and operator-- (int). 2003-09-26 wan@udel.edu * linbox/matrix/dense.h, fit to g++3 change, add std to endl. 2003-08-15 saunders@udel.edu * sundry minor doc++ tweaks. 2003-08-14 saunders@udel.edu * sundry doc++ comments in doc/ examples/ and tests/ * added files (in newbB branch) linbox.dxx doc/fix-index examples/ex-integers.C examples/examples.dxx examples/blackbox/blackbox.dxx examples/fields/fields.dxx tests/tests.dxx * linbox/blackbox/sparse.h added default sizes * removed FROZEN, it's contents added to CHANGED-INTERFACES 2003-08-13 saunders@udel.edu * test-generic.h blackbox tests simplified, testBB() added * ntl-zz_p.h field fixed * tests/test-ntl-toeplitz/hankel to newBB. begin newBB branch notes 2003-11-05 Pascal Giorgi * add file /linbox/field/modular-double.h * /linbox/field/modular.h include modular-double.h 2003-10-23 wan@udel.edu * linbox/blackbox/dense.h, in the operator= , I forced the assignment for field _F. 2003-10-22 wan@udel.edu * tests/Makefile.am, comment test-lsp, since g++ complains its syntax error. * linbox/blackbox/compose.h, correct a few typos. 2003-10-22 wan@udel.edu * linbox/field/modular-byte.h, minor change for write member function, output the modulus as a int instead of a char. 2003-10-22 wan@udel.edu * linbox/blackbox/compose.h, add specialization for Compose 2003-10-08 wan@udel.edu * linbox/matrix/dense.inl, remove the width in write member function, since it causes problem for some ring and it is not necessary, for example, linbox integer doesnot have fixed length 2003-09-29 wan@udel.edu * linbox/util/field-zxpy.h, linbox/vector/vector-domain.h,.inl, linbox/field/givaro-zpz.h,modular-balance-int.h,modular-byte.h,modular-int.h,modular-short.h,modular.h,unparametric.h, add a new member reset to FieldAXPY, set initial accumulator's value to zero, thus we can put an instantiation of FieldAXPY into field of VectorDomain, instead of temporily instantiating FieldAXPY whenever we need it. 2003-09-27 wan@udel.edu * linbox/field/ntl* linbox/randiter/mersenne-twister.* linbox/randiter/unparametric.h, make them work with the new random memebr function. 2003-09-27 wan@udel.edu * linbox/blackbox/dense.h, change the parameter RandIter &iter --> const RandIter &iter in its constructor. 2003-09-27 wan@udel.edu * linbox/randiter/*.h, make each random member function to be a const member function in each random class, since the member will not change the instantiation of the random class at all, just generate a random element. * linbox/matrix/dense.inl, make RowIterator and ColIterator support operator --() and operator-- (int). 2003-09-26 wan@udel.edu * linbox/matrix/dense.h, fit to g++3 change, add std to endl. 2003-08-15 saunders@udel.edu * sundry minor doc++ tweaks. 2003-08-14 saunders@udel.edu * sundry doc++ comments in doc/ examples/ and tests/ * added files (in newbB branch) linbox.dxx doc/fix-index examples/ex-integers.C examples/examples.dxx examples/blackbox/blackbox.dxx examples/fields/fields.dxx tests/tests.dxx * linbox/blackbox/sparse.h added default sizes * removed FROZEN, it's contents added to CHANGED-INTERFACES 2003-08-13 saunders@udel.edu * test-generic.h blackbox tests simplified, testBB() added * ntl-zz_p.h field fixed * tests/test-ntl-toeplitz/hankel to newBB. end newBB branch notes 2003-08-09 saunders@udel.edu * sundry documentation mods * blackbox/companion.h fix 2003-08-08 Rich Seagraves * linbox/util/xml/field-reader-analyzer.C: * linbox/util/xml/reader-blackbox-factory.C: Removed files (depricated) * gmp++/gmp++_int.h: * linbox/util/gmp++/gmp++_int_misc.C: Added operator bool to LinBox Integer class (casts integer to remainder upon division by 2) * linbox/blackbox/archetype.h: Add XML support to BlackboxArchetype * linbox/blackbox/companion.h: Add XML support * linbox/blackbox/compose.h: Added partial XML support (incomplete) * linbox/blackbox/scalar-matrix.h: * linbox/blackbox/triplesbb.h: * linbox/blackbox/zero-one.h: * linbox/blackbox/zero-one.inl: * linbox/blackbox/dense.h: * linbox/blackbox/nag-sparse.h: * linbox/blackbox/ntl-toeplitz.h: * linbox/blackbox/ntl-toeplitz.inl: * linbox/matrix/sparse.inl: Modified XML Reading, Writing methods for these Blackboxes * linbox/field/abstract.h: * linbox/field/envelope.h: Added reading & writing methods to envelope & abstract * linbox/field/givaro-zpz.h: * linbox/field/modular.h: * linbox/field/unparametric.h: Modified XML Reading, Writing methods for these Blackboxes * linbox/field/archetype.h: Added XML support to Field archetype (incomplete) * linbox/util/xml/field-reader-analyzer.h: * linbox/util/xml/reader-blackbox-factory.h: Completed experimental version of FieldReaderAnalyzer & ReaderBlackBoxFactory * linbox/util/xml/Makefile.am: Added entries for reader-blackbox-factory.h & field-reader-analyzer.h 2003-08-07 Bradford Hovinen * linbox/element/Makefile.am (EXTRA_DIST): Remove abstract.dxx * linbox/Makefile.am (EXTRA_DIST): Remove interfaces.dxx * RELEASE-INSTRUCTIONS: Add this file * tests/Makefile.am (BASIC_TESTS): Remove test-givaro-zpz (EXTRA_PROGRAMS): Add $(GIVARO_TESTS) * linbox/algorithms/wiedemann.inl (precondition): Allocate all Compose objects dynamically * tests/test-solve.C (main): Restore call to testPreconditionedSolve * linbox/field/gmp-rational.h (GMPRationalField::read): Compilation fix 2003-07-25 Bradford Hovinen * linbox/algorithms/block-lanczos.inl: Add calls for detailed timing information 2003-07-20 Bradford Hovinen * linbox/field/modular.inl (mulColDenseSpecialized): Compilation fixes * linbox/algorithms/block-lanczos.h (class BlockLanczosSolver): Initialize _MD in all constructors 2003-07-23 wan@udel.edu * linbox/field/modular-int.h, linbox/field/modular-short.h, linbox/field/modular-byte.h add MVProductionDomain specialization. 2003-07-21 Rich Seagraves * linbox/util/xml/field-reader-analyzer.C: * linbox/util/xml/field-reader-analyzer.h: added files for Reader->Field conversion * linbox/util/xml/reader-blackbox-factory.h: * linbox/util/xml/reader-blackbox-factory.C: added files for Reader->BlackBox conversion * linbox/blackbox/dense.h: * linbox/matrix/dense.h: Added XML support to DenseMatrix class * linbox/blackbox/diagonal.h: "" Diagonal class * linbox/blackbox/nag-sparse.h: "" NAGSparse class * linbox/blackbox/ntl-toeplitz.h: * linbox/blackbox/ntl-toeplitz.inl: "" NTLToeplitz class * linbox/blackbox/permutation.h: "" Permutation class * linbox/blackbox/scalar-matrix.h: "" ScalarMatrix class * linbox/blackbox/sparse.h: * linbox/matrix/sparse.h: "" SparseMatrix class * linbox/blackbox/triplesbb.h: "" TriplesBB class * linbox/blackbox/zero-one.h: * linbox/blackbox/zero-one.inl: "" ZeroOne class * linbox/field/gf2.h: "" GF2 class * linbox/field/gf2.inl: * linbox/field/givaro-gfq.h: "" Givaro::GFq class * linbox/field/givaro-zpz.h: * linbox/field/givaro-zpz.inl: "" Givaro::Modular class * linbox/field/gmp-rational.h: "" GMPRationalField class * linbox/field/lidia-gfq.h: "" LidiaGfq class * linbox/field/modular.h: "" Modular class * linbox/field/ntl-RR.h: "" NTL::RR specilization of Unparametric * linbox/field/ntl-ZZ_p.h: "" NTL::ZZ_p "" * linbox/field/ntl-zz_p.h: "" NTL::zz_p "" * linbox/field/ntl-ZZ_pE.h: "" NTL::ZZ_pE "" * linbox/field/unparametric.h: Added XML support to UnparametricField * linbox/randiter/gmp-rational.h: "" GMPRationalRandIter class * linbox/randiter/lidia-gfq.h: "" LidiaGfq randiter * linbox/randiter/modular.h: "" Modular randiter * linbox/randiter/nonzero.h: "" NonZero randiter * linbox/randiter/unparametric.h: "" UnparametricRanditer * linbox/util/xml/linbox-reader.h: * linbox/util/xml/linbox-writer.h: * linbox/util/xml/xml-tree.h: Updated XML reading & writing API 2003-07-21 saunders@udel.edu * Documentation modifications in doc/doc.dxx linbox/archetypes.dxx linbox/linbox.dxx linbox/blackbox/blackbox.dxx linbox/blackbox/direct-sum.h linbox/element/abstract.h linbox/element/archetype.h linbox/element/envelope.h Removed Files: linbox/interfaces.dxx linbox/wrappers.dxx linbox/element/abstract.dxx linbox/element/archetype.dxx 2003-07-21 wan@udel.edu * linbox/field/modular-balance-int.h, add balance representation for modular field. * tests/test-modular-balance-int.C, add test for balance representation for modular field. 2003-07-14 saunders@udel.edu * tests/Makefile.am givaro test now works * various.dxx some doc tweaks 2003-07-11 Bradford Hovinen * linbox/algorithms/block-lanczos.inl (iterate): Add TIMER_* calls to report detailed timings when DETAILED_PROFILE is set * linbox/randiter/mersenne-twister.h: * linbox/randiter/mersenne-twister.C: Eliminate #pragma directives 2003-07-10 Bradford Hovinen * linbox/blackbox/matrix-blackbox.h (class MatrixBlackbox): Add this file 2003-07-06 Bradford Hovinen * linbox/matrix/transpose.h (class TransposeMatrix): Add missing Row, Col, Column declarations * linbox/field/modular.h (class MVProductDomain): Add specializations for uint8, uint16, and uint32 2003-07-05 Bradford Hovinen * linbox/matrix/matrix-domain.h (class MVProductDomain): Create this class and move mulColSpecialized for dense vectors into it * linbox/algorithms/block-lanczos.inl (solve): Try checking system solution even if iterate returned false, just in case enough of the Krylov basis was obtained to get the true solution. 2003-07-03 Bradford Hovinen * linbox/blackbox/diagonal.h (Diagonal::apply): Don't resize the output * linbox/blackbox/transpose.h (class Transpose): Parameterize by black box; add versions of apply and applyTranspose separately parameterized by vector * linbox/blackbox/compose.h (class Compose): Add versions of apply and applyTranspose separately parameterized by vector (class Compose): Parameterize by blackboxes * tests/test-sparse.C (runSparseMatrixTests): Disable testing sparse matrix against non-dense vectors, since I don't support them any more * linbox/blackbox/sparse.h (class SparseMatrix): Add versions of apply and applyTranspose parameterized by two vector types; add MatrixDomain _MD; Use _MD for arithmetic and eliminate specializations as they are no longer needed; eliminate applyTransposeSpecialized * linbox/matrix/matrix-domain.h (MatrixDomain::blackboxMul): Rename blackboxMulLeft, blackboxMulRight; parameterize by black box and not by vector 2003-07-02 Bradford Hovinen * linbox/solutions/solve.h (solve): Eliminate Vector from BlockLanczosSolver declaration; parameterize by black box * linbox/algorithms/block-lanczos.inl (iterate): Declare tmp and tmp1 locally (mulin): Use Vector::Dense::iterator rather than Vector * linbox/algorithms/block-lanczos.h (class BlockLanczosSolver): Eliminate v and Av (class BlockLanczosSolver): Eliminate _t1; replace _t with _tmp * linbox/algorithms/block-lanczos.inl (solve): Parameterize by black box and vector (iterate): Ditto (solve): Eliminate v and Av * linbox/algorithms/block-lanczos.h: (class BlockLanczosSolver): Make generic wrt internal matrix type used; no longer parameterize by vector * linbox/algorithms/block-lanczos.inl (compute_Winv_S): Compute and return rank of V^T AV (iterate): Keep track of Ni and add trace statements to report it; abort if total of Ni's is too large (iterate): Use Vi = 0 as termination condition (iterate): Add variable progress_interval giving number of iterations between each call to commentator.progress (compute_Winv_S): Don't call commentator.progress unless DETAILED_TRACE is set 2003-07-09 saunders@cis.udel.edu * field/ntl-zz_p.h unparametric.h fix yesterday's version - syntax of new constructor from p,e. 2003-07-08 saunders@cis.udel.edu * Documentation tweaks, especially vis a vis @memo entries. * See doc/doc.dxx for discussion of documentation conventions. * For now, let's try to make the html documentation work and leave tex for later. 2003-07-07 Rich Seagraves * macros/expat-check.m4: Disabled automatic detection of expat in system standard locations, expat must now be manually specified in configure step 2003-06-30 Rich Seagraves * macros/expat-check.m4: * linbox/blackbox/triplesbb.h: * linbox/field/modular.h: Files altered to use "XMLENABLED" pre-processor flag instead of "RWENABLED" * linbox/matrix/sparse.h: * linbox/matrix/sparse.inl: * linbox/blackbox/sparse.h: * linbox/blackbox/sparse.inl: Added XML support to all SparseMatrix variants * linbox/blackbox/nag-sparse.h: Added XML support to NAGSparse blackbox * linbox/blackbox/zero-one.h: Added XML support to ZeroOne blackbox * linbox/util/xml/linbox-reader.h: Added constructor from initalized Writer * linbox/util/xml/linbox-writer.h: begun adding ability to traverse written Tag structure, add tags BEFORE as well as after the current Tag 2003-06-26 Rich Seagraves * add macros/expat-check.m4, * add linbox/util/xml, * add linbox/util/xml/linbox-reader.h, * add linbox/util/xml/linbox-writer.h, * add linbox/util/xml/xml-tree.h, * add linbox/util/xml/README, * add linbox/util/xml/Makefile.am: Defines LinBox/XML framework * configure.in: Alters build system to make expat package optional dependency * linbox/util/Makefile.am: make xml a subdir of util * linbox/blackbox/triplesbb.h: Add XML reading & Writing to TriplesBB class * linbox/field/modular.h: Add XML reading & Writing to ModularBase class * linbox/solutions/det.h: commented out debug output 2003-06-24 wan@udel.edu * linbox/field/modular-int.h, linbox/field/modular-short.h, linbox/field/modular-byte.h, use a fast way to compute 2^64 % modulus. * linbox/tests/test-modular-int.h, change the modulus to a 30 big integer. 2003-06-20 wan@udel.edu * linbox/blackbox/butterfly.h, linbox/blackbox/dense.h * linbox/blackbox/dif.h,linbox/blackbox/inverse.h * linbox/blackbox/sparse.h, linbox/blackbox/submatrix.h : for high performance reason, and a field only occupies a small memory, change const Field& to const Field in private field. 2003-06-16 wan@udel.edu * add linbox/field/modular-int.h, modular-short.h , modular-byte, combining the trick of NTL for arithmetic operation and dot product of modluar * add linbox/tests/test-modular-int.C, test-modular-short.C, test-modular-byte.C. * linbox/randiter/modular.h, remove field _card, since it only uses to initialize _size. 2003-06-12 wan@udel.edu * linbox/field/givaro-gfq.h, enforce that the cardinality must be <2^16, for givaro-gfq * linbox/randiter/modular.h, replace static-cast with init in the random function. 2003-06-05 saunders@udel.edu * work on documentation in linbox/blackbox (particularly blackbox.dxx and archetype.h). * Note: renamed blackboxes.dxx to blackbox.dxx and removed some cruft files. 2003-06-03 zhendong wan * linbox/blackbox/ntl-sylvester.inl remove the warning message. 2003-06-03 zhendong wan * linbox/field/ntl-zz-p.h, set default prime to be 65521 * tests/test-sum.C, correct a type name error. 2003-06-03 zhendong wan * linbox/util/commentator.C, tests/test-commentator.C, temporarily fixed the bug in test-commentator, left a little memory leaking. 2003-06-02 saunders@udel.edu * blackbox/zero-one.h, .inl: mods to avoid g++ 3.2.1 typename warnings. 2003-05-30 saunders@udel.edu * field/unparametric.h field/ntl-zz_p.h tests/test-ntl-zz_p.cpp: put in prototype of a constructor * I propose to have all field classes have a constructor from a prime and optionally an exponent -- * FieldClass(integer q) if a prime field class, (allow q = 0) * FieldClass(integer q, size_t e) if an extension of degree e. 2003-05-30 saunders@udel.edu * tests/test-commentator.C - adjust so passes on solaris. Note: there is apparently still a bug to fix. 2003-05-30 zhendong wan * linbox/blackbox/null-matrix.h: remove getInstance member function. Make default constructor public, remove static member nullMatrix * linbox/blackbox/direct-sum.h: update the include file for NullMatrix. * tests/Makefile.am: comment some tests lacking of source codes * linbox/blackbox/Makefile.am: put in null-matrix.h direct-sum.h 2003-05-29 saunders@udel.edu * change name to null-matrix.h and depreciate applyIn and a doc++ comment. 2003-05-29 zhendong wan * linbox/blackbox/nullmatrix.h : added a new singelton class. a matrix of size 0 * linbox/black/direct-sum.h : solved some ugly problem 2003-05-28 zhendong wan * tests/test-direct-sum.c: update the tests for DirectSum 2003-05-28 austin lobo david saunders * Changed blackbox/direct-sum.h to allow for 0 x 0 blocks * Changed blackbox/scalar-matrix.h to properly handle 0 x 0 matrix * Added test for 0 x 0 in tests/test-direct-sum.C * Added test for 0 x 0 in tests/test-scalar-matrix.C * New blackbox/frobenius.h and tests/test-frobenius.C 2003-05-27 zhendong wan * linbox/blackbox/companion.h, tests/test-companion.h: revised the Compa nion class, remove template parameter Polynomial, modify the constructor with ra ndom genertor. 2003-05-27 saunders@udel.edu * blackbox/companion.h, tests/test-companion.h: added class inherits from triplesbb * tests/test-triplesbb.C: add test from other constructor 2003-05-26 Pascal Giorgi * linbox/FFLAS/fflas.h : modify field_trsm to be closed to blas standard * linbox/FFLAS.fflas.inl : put macro LEFT,RIGHT,UNIT,NOUNIT,LOWER,UPPER, to specialize field_trsm function * linbox/algorithms/lsp.h : adding function to retrieve index of zero and non-zero rows in S. * linbox/algorithms/lsp-tools.h: adding function to handle row permutation , synchronization with field_trsm 2003-05-23 saunders@udel.edu * tests/test-generic.h: make testSmallBlackbox work, put it in with linearity and transpose in testBlackbox. 2003-05-20 saunders@udel.edu * linbox/blackbox/compose.h: add constructor from references, &A &B. * linbox/blackbox/sum.h: add constructor from refs, &A &B; remove cloning; copy field for speed. * linbox/field/ntl-zz_p.h: typdef to name NTL_zz_p * macros/atlas-check.m4: remove f77blas refs which break things for me. Hope not needed by others. * tests/test-butterfly.C: also check Compose constructor with refs (vs ptrs) * tests/test-generic.h: fix vector size bug in testTranspose(). * tests/test-rank.C: add testZeroAndIdentRank(). * tests/test-sum.C: also check Sum constructor with refs (vs ptrs), calls testBlackbox() too. * Added Files: linbox/blackbox/direct-sum.h tests/test-direct-sum.C: DirectSum BB is direct sum of 2 BBs, similar in structure to Compose, Sum. 2003-05-14 Bradford Hovinen * tests/Makefile.am (BASIC_TESTS): Reintroduce test-solve * tests/test-solve.C (testSingularInconsistentSolve): Check status == ...INCONSISTENT, not status == SINGULAR 2003-04-23 Pascal Giorgi * linbox/algorithms/lsp.h: delete typo errors * linbox/algorithms/lsp-tools.h : clarify Compute-G function * tests/Makefile.am: retrieve test-lsp 2003-04-19 -bds - comment out non working tests in tests/Makefile.am 2003-04-11 Pascal Giorgi * linbox/FFLAS/FFFMMBLAS.h: use of init and convert with double in MatGfq2MatDouble, MatGfq2MatDouble_Triangular and MatDouble2MatGfq * linbox/field/givaro-zpz.h: define convert to double 2003-04-11 Austin Lobo * Added rules for ntl-sylvester and test-ntl-sylvester * Added ntl-sylvester.h ntl-sylvester.inl to the repository 2003-04-10 Pascal Giorgi * linbox/algorithms/lsp.h : optimization * linbox/FFLAS.fflas.inl : new version of Field_trsm (more effficient) 2003-04-04 Pascal Giorgi * linbox/field/givaro-zpz.h: fix bug with init from double * linbox/field/givaro-zpz.inl: fix some warnings * linbox/FFLAS/FFFMMBLAS.h: fix some bugs * linbox/FFLAS/fflas.inl: fix some bugs * linbox/algorithms/lsp.h: adding header * linbox/tests/test-lsp.C: adding test for LSP factorization with atlas library * linbox/tests/Makefile.am: adding tests and variables for atlas library 2003-04-02 Pascal Giorgi * linbox/matrix/dense.h: adding parameter _ptr as a pointer on the first Element of the matrix adding FullIterator() function (returning _ptr) 2003-04-02 Jean-Guillaume Dumas * gmp++/gmp++_int.h: Backed out my commit * linbox/util/gmp++/gmp++_int_misc.C: Backed out my commit * macros/gmp-check.m4 : added GMP_VERSION Makefile variable to enable gmp-3.xxx compatibility * All this is made to have fully SIMILAR gmp++ files within givaro * and linbox (e.g. no "#include " nor * "#include " 2003-04-02 Giorgi Pascal * linbox/macros/atlas-check.m4: adding checking for atlas tuning library * linbox/configure.in: adding check for atlas * linbox/field/givaro-zpz.h: adding init function from double * linbox/algorithms/lsp.h : * linbox/algorithms/lsp-tools.h : algorithm to compute the LSP decomposition of a dense matrix stored contiguously by row. * linbox/FFLAS/ : new directory containing FFLAS routine of jean-guillaume and clement and also LinBox wrappers * linbox/FFLAS/FFFMMBLAS.h: FFLAS routine (j-g and clement code) * linbox/FFLAS/ FFFMMBLAS.inl: FFLAS routine (j-g and clement code) * linbox/FFLAS/lin_wrap_c++.h: FFLAS routine (j-g and clement code) * linbox/FFLAS/lin_wrap_c++.inl: FFLAS routine (j-g and clement code) * linbox/FFLAS/fflas.h: wrappers including field_dgemm and field_trsm * linbox/FFLAS/fflas.inl: wrappers including field_dgemm and field_trsm 2003-04-01 Bradford Hovinen * linbox/matrix/matrix-domain.inl: * linbox/matrix/matrix-domain.h: Back out previous changes 2003-03-31 Bradford Hovinen * tests/test-vector-domain.C (main): Add test for uint8 * linbox/field/modular.h (class FieldAXPY): typedef uint8 Element 2003-03-29 Bradford Hovinen * linbox/vector/bit-vector.h: Be generic wrt word length, so we can use 64-bit arithmetic when available * linbox/util/debug.h: Remove GCCisms 2003-03-27 Bradford Hovinen * gmp++/gmp++_int.h: Add operator unsigned char * gmp++/gmp++_int.h: Backed out previous commit, since it broke the build for the entire library * linbox/util/gmp++/gmp++_int_misc.C: Backed out previous commit, since it broke the build for this file * tests/test-modular.C (main): Add test for Modular * linbox/field/modular.h (class FieldAXPY): Add specialization for uint8 (class Modular): Add specialization for uint8 (class DotProductDomain): Add specialization for uint8 2003-03-26 Bradford Hovinen * linbox/matrix/matrix-domain.h (class MatrixVectorDomain): Create this class and move mulRowSpecialized and mulColSpecialized functions into it (class MatrixDomain): Inherit MatrixVectorDomain (class MatrixDomain): Move _VD to MatrixVectorDomain * linbox/field/gf2.inl (class Diagonal): Add specialization for GF2 * linbox/blackbox/diagonal.h (class Diagonal): Use RandIter, not RandomIterator * linbox/field/gf2.inl (addinSpecialized): Remember to increment other iterators * tests/test-gf2.C (testDotProductGF2): Create new version for dense/sparse test (testDotProductGF2): Use generic vector names (main): Use unsigned int rather than size_t for n * linbox/field/gf2.inl (dotSpecializedDD): Use mask at the end of the vector * linbox/vector/bit-vector.inl (class BitVector::const_iterator): Add operator = (iterator) (class BitVector::iterator): Make const_iterator a friend (class BitVector::reference): Ditto (class BitVector::iterator, class BitVector::const_iterator): Add equality checks with each other * tests/test-gf2.C (testDotProduct): Enable this * linbox/field/gf2.inl (class RandomSparseStreamGF2, class RandomDenseStreamGF2): Require seed as a parameter (addSpecialized): Swap x and y in if statement (VectorDomain::addinSpecialized): Fix call to copy * linbox/vector/bit-vector.inl (operator ==): Make this operation a bit smarter 2003-03-23 Bradford Hovinen * linbox/field/gf2.inl (class VectorDomain): Sprinkle this-> before copy liberally to make SGI CC happy * linbox/vector/bit-vector.inl (operator =): Return *this * tests/test-dif.C (testZeroApply): Remove neg_one * linbox/util/field-axpy.h (FieldAXPY::operator =): Don't try to assign the field * tests/test-sparse.C (main): Don't use NonzeroRandIter for RandomSparseStream -- that's already implied * linbox/field/gf2.inl (class RandomDenseStreamGF2, class RandomSparseStreamGF2): Rename from specializations of RandomDenseStream and RandomSparseStream * tests/Makefile.am: Enable test-gf2 * linbox/vector/bit-vector.inl (BitVector::resize): Set _size * linbox/randiter/mersenne-twister.h (MersenneTwister::randomDoubleRange): Move this to the header file * linbox/randiter/mersenne-twister.C (randomInt): Make this not inline * linbox/field/gf2.inl (class RandomDenseStream): Use the Mersenne Twister (class RandomSparseStream): Use the Mersenne Twister * linbox/randiter/gf2.h (class GF2RandIter): Use the Mersenne Twister (GF2RandIter::random): Overload with two reference types rather than using template * linbox/field/gf2.h (class GF2): Eliminate template declarations; instead use manual overloading. This means we only support bool & and BitVector::reference. Use a straight bool on const parameters * linbox/vector/bit-vector.inl: Add inserter and extractor overloading for BitVector::(const_)reference * linbox/vector/Makefile.am (include_HEADERS): Add missing bit-vector.inl * linbox/randiter/Makefile.am (BASIC_HDRS): Add missing gf2.h 2003-03-16 Bradford Hovinen * linbox/util/commentator.C (Commentator::setMaxDepth, Commentator::setMaxDetailLevel): Use ++i, not i++ * linbox/vector/subvector.h (Subvector::at): Use const_reference rather than const reference * linbox/vector/reverse.h (ReverseVector): Use const_reference rather than const reference * linbox/util/commentator.h (class Commentator): Add setMaxDepth and setMaxDetailLevel to disabled commentator 2003-03-21 Austin Lobo * test-generic.h: added testApply(..) and testApplyTranspose(...) to testBlackBox, so that timings for these two operations can be obtained. * test-ntl-toeplitz.C, test-ntl-hankel.C: cosmetic changes to give slightly cleaner status message. * ntl-toeplitz.inl: modifications in the limits of iterations to take into account the possibility of rectangular matrices. 2003-03-20 Giorgi Pascal * linbox/field/givaro-zpz.h fix bugs for init function 2003-03-15 Bradford Hovinen * linbox/randiter/modular.h (RandIter::RandIter): Copy _size and _seed in copy constructor * linbox/vector/stream.h (class RandomSparseStream): Use MersenneTwister (class RandomSparseStream): Declare the base random iterator locally * linbox/randiter/modular.h (Modular::RandIter, Modular::RandIter): New specializations; use the new Mersenne Twister random number generator * linbox/randiter/Makefile.am (noinst_LTLIBRARIES): Add libranditer.la (libranditer_la_SOURCES): Add mersenne-twister.C (BASIC_HDRS): Add mersenne-twister.h * linbox/Makefile.am (liblinbox_la_LIBADD): Add libranditer.la 2003-02-07 Bradford Hovinen * linbox/matrix/Makefile.am (BASIC_HDRS): Add matrix-domain.{h|inl} * linbox/vector/Makefile.am (include_HEADERS): Add vector-domain.{h|inl} 2002-03-04 Pascal Giorgi * linbox/field/givaro-zpz.h added specialization for DotProductDomain and FieldAxpy * linbox/field/givaro-zpz.inl added specialization for DotProductDomain and FieldAxpy 2003-03-03 Zhendong Wan *linbox/matrix/matrix-domain.h, include header file linbox/vector/vector-domain.h 2003-02-26 Austin Lobo * linbox/blackbox/Makefile.am (include_HEADERS) : added ntl-hankel.h * linbox/blackbox/ntl-hankel.h: added to library after testing * linbox/blackbox/ntl-hankel.inl: added to library after testing * linbox/tests/test-ntl-hankel.C: added to library after testing * linbox/tests/Makefile.am: (test_ntl_hankel_SOURCES) added * linbox/tests/test-generic.h: minor changes to make output clearer. 2003-02-25 Zhendong Wan *linbox/blackbox/zero-one.h, zero-one.inl. Correct one typo. 2003-02-25 Zhendong Wan *linbox/blackbox/zero-one.h, zero-one.inl. Seperate the Intereface and i implementation, put them in seperate files.And make apply specialization for Modular work. 2003-02-24 David Saunders and Zhendong Wan * linbox/util/timer.h: #define __LINBOX_TIMER_H to avoid conflict with givaro timer * tests/Makefile.am: reinstate givaro test 2003-02-22 David Saunders * tests/test-solve.C: comment out "Sparse preconditioner", MethodTrait::Wiedemann::SPARSE It's segfaulting, likely due to Compose changes. * linbox/blackbox/transpose.h compose.h: remove cloning * linbox/blackbox/triplesbb.h: coupla "typename"s to remove warnings. * linbox/field/hom.h image-field.h: Introduce a scheme for homomorphic images with injections in extension fields in mind, isoms in mind, ints to modular in mind. Specializations are now needed. * tests/test-hom.C test-image-field.C: Add prototype tests for 'em. * tests/test-generic.h: make statistical randiter test more likely to pass. 2003-02-05 Bradford Hovinen * tests/Makefile.am (NTL_TESTS): Move test-ntl-toeplitz here (NTL_TESTS): Move test-gssv_rank here * tests/test-solve.C (testSingularPreconditionedSolve) (testSingularInconsistentSolve): Use version of solve without exceptions * linbox/solutions/solve.h (solve): Return WiedemannSolver return status rather than reference to solution vector. Require parameter for certificate of inconsistency. New version that throws exceptions * linbox/algorithms/wiedemann.h (class WiedemannSolver): Remove exception code; have all functions return a new enum ReturnStatus 2003-02-04 Bradford Hovinen * linbox/vector/stream.h (class RandomSparseStream): Remove specialization for dense vectors * tests/test-generic.h: Remove testFieldAXPY (runFieldTests): Remove call to testFieldAXPY * linbox/vector/vector-traits.h (struct VectorCategories): Add ZeroOneVectorTag, SparseVectorTag for GF(2) 2003-02-03 Bradford Hovinen * tests/test-vector-domain.C: Include test-generic.h * tests/test-generic.h (testRandomIterator): Move from test-modular.C here (testDotProduct, testAddMul, testSubMul, testAXPY, testCopyEqual): Move from test-vector-domain.C here * tests/test-rank.C (testEliminationRank): New test * linbox/matrix/sparse.h (class SparseMatrixBase): Add operator [] for row access (class SparseMatrixBase): Add typedef ConstRow * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Add random-rank * linbox/matrix/Makefile.am (BASIC_HDRS): Add dense-rows-matrix.h * linbox/vector/Makefile.am (include_HEADERS): Add bit-vector.h * linbox/field/Makefile.am (BASIC_HDRS): Add gf2.h, gf2.inl * linbox/algorithms/wiedemann.inl (makeLambdaSparseMatrix): Update RandomSparseStream * linbox/vector/stream.h (RandomSparseStream::RandomSparseStream): Put probability parameter before vector dimension * linbox/algorithms/gauss.h: Rename gauss_rankin as rankin and gauss_rank as rank * linbox/algorithms/block-lanczos.h (class BlockLanczosSolver): * linbox/algorithms/block-lanczos.inl (solve): * linbox/algorithms/lanczos.h (class LanczosSolver): * linbox/algorithms/lanczos.inl (solve): * linbox/solutions/solve.h (solve): * linbox/algorithms/wiedemann.h (class WiedemannSolver): * linbox/algorithms/wiedemann.inl: Port to new SolverTraits interface * linbox/solutions/methods.h (struct WiedemannTraits): Move Wiedemann-dependent traits here (struct LanczosTraits): Move Lanczos-dependent traits here (struct BlockLanczosTraits): New structure (struct SolverTraits): Parameterize by MethodTraits and include an instance thereof; remove all method-specific traits * linbox/matrix/dense.h (DenseMatrixBase::columnDensity): New function * linbox/matrix/archetype.h (MatrixArchetype::columnDensity, MatrixArchetype::transpose): New functions * linbox/matrix/sparse.h (SparseMatrixBase::columnDensity): New function * linbox/solutions/methods.h (struct RankTraits): New structure (struct MethodTrait): Add BlockLanczos 2003-03-4 Rich Seagraves * interfaces/maple/demonstration.mws: Finished * interfaces/maple/lbmaple.C: Fixed the final bugs with LinBoxV handling code. * interfaces/maple/lbmaple.mpl.tail: ditto. Also, renamed LBApply and LBApplyTranpose as LBaply and LBapplyTranspose to be like the rest of the names * interfaces/maple/lbmaple.mpl.tail: ditto. * configure.in: Removed a double reference to matrix/Makefile in AC_OUTPUT[...] 2003-03-4 Rich Seagraves * interfaces/maple/demonstration.mws: Updated file, should be working * interfaces/maple/README: Added file * interfaces/maple/lbmaple.mpl.tail: Edited final line, lbmaple.mpl script now puts LinBox module into global maple namespace when run 2003-02-3 Rich Seagraves * interfaces/maple/lbmaple.mpl.tail: Fixed some interface bugs * interfaces/maple/demosntration.mws: Updated file, it's almost finished 2003-01-30 Rich Seagrves * interfaces/maple/Makefile.am: * interfaces/maple/Makefile.in.2: * macros/maple-check.m4: Fixed bug in maple interface build setup * linbox/blackbox/triplesbb.h: Added missing _max() function 2003-01-30 Rich Seagraves * tests/Makefile.am: Added entry for test-zero-one.C * tests/test-zero-one.C: Fixed file, now complies with standard for tests * macros/maple-check.m4: Now install maple interface in "prefix" directory * interfaces/maple/Makefile.am: Ditto * interfaces/maple/Makefile.in.2: Ditto as well :-) * linbox/blackbox/triplesbb.h: Added file (copy of maplebb.h) * interfaces/maple/maplebb.h: Removed file * interfaces/maple/lbmaple.C: Now use TriplesBB blackbox instead of MapleBB * linbox/blackbox/zero-one.h: Removed some warnings 2003-01-30 Saunders * tests/test-scalar-matrix.C: simplify test to generic testBlackbox. * tests/test-*.C: modify " ... test suite" header line of output to be preceeded by blank line rather than followed. * linbox/blackbox/hilbert.h, tests/test-hilbert.C: fix hilbert example (for dense vector only) and insert a generic test 2003-01-29 Rich Seagraves * interfaces/maple/lbmaple.C: Killed all bugs * interfaces/maple/lbmaple.mpl.tail: Ditto * macros/maple-check.m4: Fixed problem with check whether specified maple dir IS actually valid maple distribution 2003-01-29 Ahmet Duran and David Saunders * examples/gen_superlu/*: examples added and also removed as a subdir within linbox, i.e. linbox/gen_superlu/example/ subdir. 2003-01-29 Ahmet Duran and David Saunders * linbox/gen_superlu/: directory and contents are a generic version of superlu created by Ahmet. Basics work but header comments and the like will be brought up to form in the near future, * tests/test-gssv_rank: a proto test for gen_superlu, improvements will come. * test/data/gssv_rank_data: input matrix for test-gssv_rank. 2003-01-29 Rich Seagraves * interfaces/maple/Makefile.am: Remove "if HAVE_MAPLE" check * interfaces/maple/lbmaple.C: Fixed some bugs, warnings * interfaces/maple/maplebb.h: Fixed some bugs, warnings * interfaces/maple/lbmaple.mpl.head: Changed formatting a bit * interfaces/maple/lbmaple.mpl.tail: Changed formatting a bit * macros/maple-check.m4: Requires the flag "--enable-shared" to build maple interface, made some fixes to ensure proper building of lbmaple.mpl, interface script * linbox/blackbox/zero-one.h: Fixed in-file test functions * tests/test-zero-one.C: Added test for ZeroOne blackbox 2003-01-20 Austin Lobo * linbox/field/ntl-RR.h: Corrected clashes with LinBox namespace 2003-01-20 Austin Lobo * tests/test-ntl-toeplitz.C: Corrected clashes with LinBox namespace * linbox/blackbox/ntl-toeplitz.inl: Corrected clashes with LinBox namespace * linbox/blackbox/ntl-toeplitz.h: Corrected clashes with LinBox namespace 2003-01-20 Austin Lobo * tests/Makefile.am: reinstated test-ntl-toeplitz * tests/test-generic.h: added LinBox namespace to commentator calls 2003-01-17 Bradford Hovinen * configure.in: Give a sane default for CFLAGS and CXXFLAGS 2003-01-17 David Saunders * CHANGED-INTERFACES: coupla edits to bring this summary up to date a bit 2003-01-16 Bradford Hovinen * configure.in: Disable shared again 2003-01-14 David Saunders *linbox/linbox.dxx, interfaces.dxx: Text edits. interfaces.dxx should be renamed archetypes.dxx. Much text added to interfaces.dxx, some of it speculative. Further editing definitely desirable. 2003-01-14 Bradford Hovinen * linbox/matrix/matrices.dxx: Add missing * interfaces/maple/Makefile.am (mapledir): Put all build rules inside a conditional * configure.in: Add linbox/matrix/Makefile * linbox/matrix/matrix-domain.h: Move from linbox/field * linbox/matrix/matrix-domain.inl: Move from linbox/field * linbox/vector/vector-domain.h: Move from linbox/field * linbox/vector/vector-domain.inl: Move from linbox/field/vector-domain.C 2003-01-11 Bradford Hovinen * linbox/blackbox/Makefile.am (BASIC_HDRS): Remove files listed below * */*.{h|C|inl}: Update to reflect changes below; s/SparseMatrix0/SparseMatrix/ * linbox/matrix/dense.h: Move from blackbox/dense-base.h * linbox/matrix/dense.inl: Move from blackbox/dense-base.inl * linbox/matrix/sparse.h: Move from blackbox/sparse-base.h * linbox/matrix/sparse.inl: Move from blackbox/sparse-base.inl * linbox/matrix/transpose.h: Move from blackbox/transpose-matrix.h * linbox/matrix/dense-submatrix.h: Move from blackbox/dense-submatrix.h * linbox/matrix/dense-submatrix.inl: Move from blackbox/dense-submatrix.inl * linbox/Makefile.am (SUBDIRS): Add matrix 2003-01-09 Bradford Hovinen * linbox/solutions/det.h (det): Give correct solution when deg minpoly is odd 2003-01-08 Brad Botting * linbox/blackbox/dense.h (DenseMatrix::read, DenseMatrix::write): Use fully-qualified name for calling overloaded read and write 2003-01-08 Rich Seagraves * linbox/blackbox/dif.h (very top): changed __TRANSPOSE_H to __DIF_H in the preprocessor test directive at the top of the file * linbox/blackbox/sum.h (very top): changed __TRANSPOSE_H to __SUM_H in the preprocessor test directive at the top of the file * linbox/blackbox/zero-one.h: begin implementing modular template specialization * linbox/util/timer.h (class Timer): change members ut, st, and rt into private members instead of public members (changed second appearance of "public" to "private"). 2003-01-08 Saunders * tests/test-dif.C, blackbox/dif.h: difference of two matrices. Minor tweak on sum.h. 2003-01-08 Bradford Hovinen * linbox/blackbox/dense.h (DenseMatrix::write): Use os, not file * tests/test-matrix-domain.C (testMatrixDomain): Don't refer to stream.dim when constructing stream (remaining two specializations) 2003-01-07 Brad Botting * linbox/switch/Makefile.am (includedir): Install to switch, not vector 2003-01-07 Bradford Hovinen * linbox/algorithms/block-lanczos.h: Undefine _S, _M, _N for the benefit of Solaris 2003-01-07 Bradford Hovinen * linbox/algorithms/wiedemann.h: #include sparse.h * tests/test-matrix-domain.C (testMatrixDomain): Don't refer to stream.dim when constructing stream 2002-1-7 Saunders * tests/test-subvector.cpp: removed. Superceded by test-subvector.C 2002-1-6 Rich Seagraves * linbox/algorithms/massey-domain.h: changed swap() to std::swap() * linbox/randiter/modular.h: changed endl to std::endl in commentator line * linbox/blackbox/zero-one.h: added RawIterator and RawIndexIterator support to ZeroOne blackbox 2003-01-06 Bradford Hovinen * tests/test-common.C: #include 2002-12-23 Bradford Hovinen * tests/test-common.h: Add incompleteGamma, chiSquaredCDF * tests/test-modular.C (testRandomIterator): New test (main): Call testRandomIterator 2002-12-18 Bradford Hovinen * linbox/* (LinBox): Doc++ fixes * configure.in: Add check for latex 2002-12-16 Rich Seagraves * linbox/blackbox/zero-one.h: Added file * linbox/blackbox/nag-sparse.h: Fixed some errors 2002-12-11 Bradford Hovinen * linbox/util/commentator.h: Include streambuf * linbox/blackbox/butterfly.h (buildIndices): Remove check that _n is nonnegative, since _n is unsigned * linbox/blackbox/dense-base.inl (ColIterator::operator +): Make this non-const (ConstColIterator::operator +): Ditto * linbox/blackbox/diagonal.h (class Diagonal): * linbox/blackbox/moore-penrose.h (class MoorePenrose): * linbox/blackbox/butterfly.h (class Butterfly): * linbox/blackbox/dense.h (class DenseMatrix): * linbox/blackbox/compose.h (class Compose): * linbox/blackbox/scalar-matrix.h (class ScalarMatrix): Parameterize on _Vector and typedef Vector * linbox/field/modular.h: Cast to signed quantities when comparing with 0 (LinBox): Add template <> when needed * linbox/blackbox/butterfly.h (setButterfly): Eliminate unused j_1, j_2 (setButterfly): Eliminate check for j < 0, as we are dealing with unsigned quantities * linbox/blackbox/archetype.h (class BlackboxArchetype): Remove std:: from size_t * linbox/algorithms/block-lanczos.inl (eliminate_col) (find_pivot_row, permute): Take an std::vector for indices rather than a pointer (compute_Winv_S): Use _indices; don't declare indices (compute_Winv_S, find_pivot_row, eliminate_col): Make these non-const * linbox/algorithms/block-lanczos.h (class BlockLanczosSolver): Add vector _indices * linbox/blackbox/sparse-base.inl (refEntry): * linbox/field/vector-domain.C: Make sure there's an std:: before pair * linbox/util/debug.C: * linbox/field/lidia-gfq.h: * linbox/util/debug.h: * linbox/blackbox/archetype.h: Get rid of 'using namespace std' * linbox/blackbox/transpose.h (class Transpose): Use linbox_check * linbox/blackbox/sparse.h: * linbox/vector/stream.h: Parameterize all classes by _Vector and typedef to Vector * linbox/field/modular.h: * tests/test-common.C: * linbox/util/debug.h: * linbox/field/vector-domain.C: * linbox/field/vector-domain.h: * linbox/blackbox/sparse-base.inl: Make sure there's an std:: before iostream references * gmp++/gmp++_int.inl: Move constructor and destructor definitions to gmp++_int.h to avoid compiler complaints 2002-12-09 Bradford Hovinen * linbox/blackbox/dense-base.inl (RowIterator): Add operator += (ColIterator): Ditto 2002-12-10 Bradford Hovinen * tests/test-solve.C (main): Add CLI option for blocking factor * linbox/algorithms/lanczos.inl (iterate): Use DETAILED_TRACE ala block-lanczos.inl * linbox/solutions/methods.h (SolverTraits::Preconditioner): Add DEFAULT * linbox/algorithms/wiedemann.inl (precondition): Add default case label for unsupported preconditioners * linbox/solutions/solve.h (solve): Add support for Block Lanczos * tests/test-solve.C (testRandomSolve): New test (main): Add calls to testRandomSolve for Lanczos and Block Lanczos * linbox/solutions/methods.h (SolverTraits::Method): Add BLOCK_LANCZOS (struct SolverTraits): Add _blockingFactor and related methods * linbox/algorithms/Makefile.am (include_HEADERS): Add block-lanczos.{h|inl} * linbox/algorithms/lanczos.inl (solve): Import code from block-lanczos.inl to support more preconditioner types 2002-12-09 Bradford Hovinen * configure.in: Bump version number to 0.1.4 2002-12-07 Bradford Hovinen * linbox/util/commentator.C (Commentator::finishActivityReport): Show the timings in the finalized report, if requested * linbox/field/modular.h (Modular::negin): Fix in case where x == 0 * linbox/util/commentator.C (Commentator::printActivityReport): Reset _last_line_len if no length is given * linbox/field/vector-domain.C (axpyinSpecialized): Add explicit specializations for Dense/* * linbox/field/matrix-domain.inl (mulColSpecialized): Fix non-dense code * linbox/field/matrix-domain.h (MatrixDomain::mulColSpecialized): Create specializations for dense/* and have everything route to that combination * linbox/solutions/methods.h (SolverTraits::Preconditioner): Add SYMMETRIZE, PARTIAL_DIAGONAL, and FULL_DIAGONAL 2002-12-06 Bradford Hovinen * linbox/blackbox/sparse-base.inl (write): Tweak output slightly * linbox/blackbox/sparse.h (class MatrixTraits): Define specialization for SparseMatrix0 * linbox/blackbox/dense-base.inl (ConstRowIterator::operator +): Don't return a reference (write): Tweak output slightly 2002-12-05 Rich Seagaves * interfaces/maple/Makefile.in.1: fixed a small break in the build stage 2002-12-01 Rich Seagraves * interfaces/maple/Makefile.blank: removed, not needed * interfaces/maple/lbmaple.mpl: also removed * interfaces/maple/Makefile.in.1: * interfaces/maple/Makefile.in.2: added files * macros/maple-check.m4: modified for new maple build system * interfaces/maple/lbmaple.C: fixed a bunch of boo-boo's * interfaces/maple/maplebb.h: fixed a boo-boo 2002-12-01 Rich Seagraves * interfaces/maple/lbmaple.C: * interfaces/maple/lbmaple.mpl.head: * interfaces/maple/lbmaple.mpl.tail: * interfaces/maple/maplebb.h: * interfaces/maple/Makefile.am: * interfaces/maple/Makefile.blank: * interfaces/maple/demonstration.mws: * macros/maple-check.m4: Added files for interface * configure.in: Added checks for interface build, installation 2002-12-01 Bradford Hovinen * configure.in (AC_OUTPUT): Add missing interfaces/Makefile 2002-11-30 Bradford Hovinen * linbox/field/matrix-domain.inl (axpyinRowRowRow) (axpyinColColCol): Fix allocation sizes for t * tests/test-matrix-domain.C (testInvMul, testInvLeftMulin, testInvRightMulin): Split these into three cases: square, over-determined, and under-determined. Use the product of the matrix and its transpose (in the appropriate order) in the latter cases * linbox/algorithms/block-massey-domain.h (class MasseyBlockDomain): Make _MD a MatrixDomain * linbox/field/matrix-domain.inl: Comment out pow_apply and pow_horn * linbox/blackbox/sparse-base.h (class SparseMatrix0WriteHelper) (class SparseMatrix0ReadWriteHelper): Compilation fixes (class SparseMatrix0Base): Update iterator interfaces to match the dense matrix archetype (class SparseMatrix0Base): Make Row a typedef of _Row * linbox/blackbox/dense.h (DenseMatrix::read, DenseMatrix::write): Swap order of arguments for consistency * linbox/blackbox/dense-submatrix.h (DenseSubmatrix::DenseSubmatrix): Take a reference rather than a pointer * linbox/blackbox/dense-base.inl (ConstRowIterator::operator ++) (RowIterator::operator ++): Use ++*this rather than ++_row * tests/Makefile.am (BASIC_TESTS): Add test-matrix-domain * linbox/randiter/modular.h (ModularRandIter::ModularRandIter): clock was always returning 0, so go back to time (NULL) * linbox/blackbox/sparse.h (SparseMatrix0::write): Make FORMAT_PRETTY the default * linbox/blackbox/sparse-base.h (SparseMatrix0Base::write): Make FORMAT_PRETTY the default * linbox/field/Makefile.am (BASIC_HDRS): Add matrix-domain.h, matrix-domain.inl * linbox/util/commentator.C (Commentator::printActivityReport): (Commentator::updateActivityReport): (Commentator::finishActivityReport): Don't indent * tests/test-trace.C: * tests/test-sum.C: * tests/test-submatrix.C: * tests/test-sparse.C: * tests/test-solve.C: * tests/test-rank.C: * tests/test-moore-penrose.C: * tests/test-minpoly.C: * linbox/blackbox/dense-base.inl: * linbox/blackbox/sparse-base.inl: * tests/test-matrix-domain.C: * tests/test-inverse.C: * tests/test-diagonal.C: * tests/test-det.C: * tests/test-dense.C: * tests/test-butterfly.C: * tests/test-vector-domain.C: * tests/test-generic.h: Eliminate calls to commentator.indent * linbox/util/commentator.C (Commentator::report): Don't initially indent * linbox/util/commentator.h (class MessageClass): Define smartStreambuf, build _stream from that; add Commentator to all constructors; add copy constructor * linbox/util/commentator.C (Commentator::indent): Make this const 2002-11-29 Bradford Hovinen * linbox/field/vector-domain.h (class VectorDomain): Add support for add/sub/mul/axpy with vectors of different representations, using GenericVectorTag to control the number of specializations required * linbox/vector/vector-traits.h (struct VectorCategories): Add GenericVectorTag; make everything else inherit that * linbox/blackbox/dense-base.inl (DenseMatrixBase::read): Return the input stream * linbox/blackbox/dense-base.h (DenseMatrixBase::read, DenseMatrixBase::write): Swap order of arguments, to be consistent with SparseMatrix0Base * linbox/blackbox/dense-base.h: * linbox/blackbox/dense-submatrix.h: * linbox/blackbox/sparse-base.h: Add struct MatrixTraits * linbox/blackbox/dense-base.h: * linbox/blackbox/sparse-base.h: * linbox/blackbox/dense-submatrix.h: Make Element a typedef from _Element 2002-11-28 Bradford Hovinen * linbox/blackbox/dense-submatrix.h (class DenseSubmatrix): Use a reference rather than a pointer * linbox/blackbox/sparse-base.h (class SparseMatrix0ReadWriteHelper): Make all methods const 2002-11-26 Bradford Hovinen * linbox/blackbox/Makefile.am (BASIC_HDRS): Add transpose-matrix.h * linbox/blackbox/dense-submatrix.h (struct MatrixTraits): Define * linbox/blackbox/dense-base.h (struct MatrixTraits): Define * linbox/field/matrix-domain.h (struct MatrixCategories) (struct MatrixTraits): Define * linbox/field/matrix-domain.inl: Moved all the arithmetic from matrix-domain.C here, in accordance with the convention * linbox/field/matrix-domain.h: Added detailed documentation, cleaned up the interface slightly, and added support for matrix traits. Added read, write, neg, negin, axpy, matrix-vector and matrix-black box operations * linbox/field/vector-domain.h (class VectorDomain): Extend axpyin so that it can work with vectors of more than one representation. Create specializations for input and output vectors of different representations that just use copy. For the benefit of MatrixDomain 2002-11-27 Rich Seagraves and David Saunders * interfaces, interfaces/maple: directories added to hold the Maple linbox interface (which Rich will put there soon ). * Makefile.am interfaces/Makefile.am: subdir entries. 2002-10-29 Bradford Hovinen * linbox/blackbox/dense-base.inl (ColIterator::operator +): Make this work like a real + operator (RowIterator::operator +): Ditto (RowIterator, ConstRowIterator): Fixed some ID10T errors 2002-10-28 Bradford Hovinen * linbox/blackbox/dense-submatrix.inl: Ditto below * linbox/blackbox/dense-base.h: Rename ColOfRowsIterator as RowIterator; similarly with RowOfColsIterator 2002-10-28 Zhendong Wan and David Saunders * linbox/blackbox/dense.h: tweak doc++, delete RowIterator and ColIterator types in matrix class. Change name of RawIndexIterator to RawIndexedIterator. * linbox/blackbox/dense.inl: update impl to reflect dense.h changes. 2002-10-28 Bradford Hovinen * tests/test-trace.C (testDiagonalTrace): Make sure vectors get declared to the right length * tests/test-sum.C (testZeroApply): Make sure vectors get declared to the right length * linbox/vector/stream.h (RandomSparseStream::get, RandomDenseStream::get): Don't try to resize the vector * linbox/blackbox/dense-base.inl (write): Make output format a little prettier * linbox/algorithms/lanczos.inl (solve): Length of b1 should be row dimension of A * linbox/field/vector-domain.h (neg, negin): Add these interfaces and implement (class VectorDomain): Parameterize arithmetic methods by separate vector types for each vector argument. Though they do not support arithmetic on different vector *representations* at the same time, one can use this to, say, add a column vector into a standalone vector 2002-10-27 Bradford Hovinen * linbox/blackbox/dense.inl: * linbox/blackbox/dense.h: Split out container/iterator functionality into new DenseMatrixBase * linbox/blackbox/Makefile.am (BASIC_HDRS): Add dense-submatrix.h, dense-submatrix.inl * linbox/blackbox/dense.inl (read): Compilation fix (write): Prefer ISO standard outputs * linbox/blackbox/dense-submatrix.inl: Rename from densesubmatrix.C * linbox/blackbox/dense-submatrix.h (class DenseSubmatrix): Fix constructor interface; add interfaces missing from DenseMatrix; add Doc++ documentation; reindent * linbox/blackbox/dense-submatrix.h: Rename from densesubmatrix.h * linbox/blackbox/dense.h (DenseMatrix::refEntry): Define (class DenseMatrix): Reorder the declarations to match SparseMatrix0Base; reindent; add Doc++ documentation to the interfaces (DenseMatrix::getEntry): Add a form that returns a read-only reference to the entry (class DenseMatrix): Make generic wrt vector type (class DenseMatrix): Move some of the one-liners from dense.inl into the class (DenseMatrix::resize): Implement * macros/saclib-check.m4: * macros/givaro-check.m4: * macros/lidia-check.m4: * macros/ntl-check.m4: * macros/gmp-check.m4: Preserve user-specified CXXFLAGS and LIBS when running test 2002-10-26 Bradford Hovinen * tests/Makefile.am (CLEANFILES): Add $(TESTS) * .cvsignore: Update * acconfig.h: Remove this file * macros/gmp-check.m4: * macros/ntl-check.m4: * macros/lidia-check.m4: * macros/givaro-check.m4: * macros/saclib-check.m4: Use modernized AC_DEFINE * configure.in: Bump version to 0.1.3 * .cvsignore: * tests/.cvsignore: Update * tests/test-solve.C (testIdentitySolve, testNonsingularSolve): Don't explicitly give whether the matrix is symmetric * linbox/algorithms/Makefile.am (include_HEADERS): Add lanczos.{h|inl} * linbox/solutions/solve.h (solve): Add support for Lanczos iteration * tests/test-solve.C (testIdentitySolve, testNonsingularSolve) (testSingularConsistentSolve, testSingularInconsistentSolve): Add support for specifying the solver to be used (testSingularPreconditionedSolve): Add support for specifying the preconditioner to be used 2002-10-14 Bradford Hovinen * linbox/algorithms/wiedemann.inl (solveNonsingular): Add support for symmetric containers, using _traits.symmetric * linbox/algorithms/blackbox-container-symmetric.h (class BlackboxContainerSymmetric): Add parameter for the field * linbox/solutions/methods.h (struct SolverTraits): Add parameter symmetric, telling whether the matrix is symmetric * tests/test-solve.C: Update with changes to solve 2002-10-13 Bradford Hovinen * linbox/solutions/methods.h (struct SolverTraits): Add documentation; remove unimplemented string constructor * linbox/solutions/solve.h (solve): Add a variant that does not throw any exceptions * linbox/solutions/methods.h (struct SolverTraits): Make default maxTries 100 * linbox/solutions/methods.h (class InconsistentSystem, class SolveFailed): Move these from WiedemannSolver here, since they apply to more than just Wiedemann 2002-10-09 Bradford Hovinen * linbox/blackbox/ntl-toeplitz.inl: Compilation fixes * tests/test-ntl-toeplitz.C: Compilation fixes 2002-10-03 Bradford Hovinen * linbox/switch/cekstv.h (applyTranspose, apply): Fix formulae * linbox/algorithms/wiedemann.inl (findNullspaceElement) (findRandomSolution): Pass _randiter to RandomDenseStream constructor * linbox/algorithms/wiedemann.h (class WiedemannSolver): Add constructor that accepts random iterator * linbox/algorithms/wiedemann.inl (solveNonsingular) (precondition, makeLambdaSparseMatrix): Use _randiter (solveNonsingular): Add parameter useRandIter to determine whether to use the random iterator, or to use b for the Krylov sequence computation (findNullspaceElement, certifyInconsistency): Remove preconditioner support (solveSingular): Use non-preconditioned A for certificate of inconsistency (makeLambdaSparseMatrix): Use the existing randiter, since RandomSparseStream already constructs a NonzeroRandIter (certifyInconsistency): Pass _randiter to WiedemannSolver constructor * linbox/algorithms/wiedemann.h (class WiedemannSolver): Add _randiter * linbox/algorithms/wiedemann.inl (solveSingular): Throw a BadPreconditioner exception if the reason for failure was a bad preconditioner, since this means the rank computation was probably correct and can be reused (solveSingular): Move rank computation to solve (solve): Compute rank and try to reuse when possible; set rank to (unsigned long) -1 when SolveFailed thrown * tests/test-solve.C (testSingularPreconditionedSolve): Return success value rather than always returning true * linbox/randiter/modular.h (LinBox): Use clock () rather than time (NULL) to get a higher-resolution timer * tests/test-solve.C (testSingularPreconditionedSolve): Don't fill matrix with 1's; just build a diagonal black box 2002-10-02 Bradford Hovinen * linbox/algorithms/wiedemann.h: Refactoring: Put everything inside a WiedemannSolver class, with the following interface solveNonsingular - Solve a nonsingular system solveSingular - Solve a general singular system findRandomSolution - Find a random solution to a singular preconditioned problem findNullSpaceElement - Find an element of the right nullspace certifyInconsistency - Find a certificate of inconsistency for a linear system precondition - Form a preconditioner and return it * tests/test-solve.C (testSingularPreconditionedSolve) (testSingularInconsistentSolve, testSingularConsistentSolve): Update according to interface changes in wiedemann.h * linbox/field/vector-domain.C (VectorDomain::writeSpecialized): Remove debugging code * tests/test-butterfly.C (main): Use Modular and make GF(2147483647) the default (testCekstvSwitch): Use preconditioner PDQ rather than just PD * tests/test-solve.C (testSingularPreconditionedSolve): Always return true * linbox/blackbox/moore-penrose.h (MoorePenrose::MoorePenrose): Update use of Submatrix * tests/test-moore-penrose.C (testRandomApply1): Update use of Submatrix * tests/test-solve.C (main): Reenable tests other than preconditioned solve * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Implement sparse preconditioner * linbox/blackbox/sparse-base.h (class SparseMatrix0Base): Add method transpose (class SparseMatrix0Base): Rename VectorTrait as RowTrait in specializations * linbox/blackbox/sparse-base.inl (transpose): Implement 2002-09-30 Bradford Hovinen * linbox/solutions/methods.h (struct SolverTraits): Add enum Preconditioner; rename precondition to preconditioner; add methods to set parameters (SolverTraits::SolverTraits): Initialize _singular with singular, not UNKNOWN * linbox/vector/stream.h (RandomSparseStream::setP): Implement * tests/test-butterfly.C (testSetButterfly): Reset the stream * tests/test-solve.C (testSingularPreconditionedSolve): Use a SparseMatrix0 and fill in the entries below the zeros with 1's * tests/test-butterfly.C (testCekstvSwitch): Ditto 2002-09-26 Bradford Hovinen * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Construct a CekstvSwitchFactory and use it as input for the CekstvSwitch constructor (solveWiedemannSingular): Commentator fixes * linbox/blackbox/butterfly.h (class Butterfly): Parameterize on the field, give a reasonable default for Vector * linbox/switch/boolean.h (class BooleanSwitch): * linbox/switch/cekstv.h (class CekstvSwitch): Don't maintain vector of 2x2 block information; just hold data for one 2x2 block; eliminate field and temporary * linbox/blackbox/butterfly.h (Butterfly): Make the vector of switches (class Butterfly): Constructor reorganization; see header file 2002-09-25 Bradford Hovinen * linbox/switch/cekstv.h (class CekstvSwitch): Add copy constructor (CekstvSwitch::CekstvSwitch): Implement copy constructor * tests/test-butterfly.C (testRandomTranspose) (testRandomLinearity): Implement these tests (testCekstvSwitch): Construct a random vector and pass it to CekstvSwitch * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Prepare rhs before obtaining minpoly * linbox/blackbox/submatrix.h (Submatrix::apply, Submatrix::applyTranspose): Fill unused portions of temporary input vector with zeros (class Submatrix): Parameterize by field (class Submatrix): Give a reasonable default for the vector type * tests/test-submatrix.C (testRandomLinearity) (testRandomTranspose): Implement these tests * linbox/blackbox/submatrix.h (Submatrix::Submatrix): Initialize _z with column dimension * tests/test-submatrix.C (testRandomApply): Make vector output LEVEL_UNIMPORTANT (testRandomTranspose): Implement this * linbox/blackbox/submatrix.h (class Submatrix): Make _z, _y mutable; delete _zt, _yt (Submatrix::apply, Submatrix::applyTranspose): Don't declare local vectors * tests/test-submatrix.C (testRandomApply): Reset stream when done (testRandomLinearity): Implement this test 2002-09-23 Bradford Hovinen * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Don't use DenseVector (solveWiedemann): Compute m_A rather than m_A,b (solveWiedemannSingular): Fix generator for random solution (solveWiedemannSingular): Add butterfly preconditioner support (solveWiedemannSingular): Cancel this loop iteration if the leading principal minor turned out to be singular * tests/test-solve.C (testSingularConsistentSolve): Implement (testNonsingularSolve): Rename from testDiagonalSolve (testSingularInconsistentSolve): Implement * linbox/algorithms/cra.h (cra): Use unsigned long in casts (cra): Fix order of arguments to invmod (cra): Reduce the result modulo the product of the primes * linbox/blackbox/sparse-base.h (_RawIndexIterator::operator ++): Update _curr.second properly * linbox/util/prime-stream.h (PrimeStream::next): Move _curr by 2 * linbox/algorithms/cra.h (cra): Invoke commentator * linbox/solutions/det.h (det): Invoke commentator * tests/test-det.C (testIntegerDet): Implement this test (main): Call testIntegerDet * linbox/blackbox/sparse.inl (makeBlackbox): Implement (smarter version now, taking over for the constructor that was removed) * linbox/blackbox/sparse.h (class SparseMatrix0): Remove constructor from SparseMatrix0Base -- this will be handled by SparseMatrixFactory from now on * linbox/blackbox/sparse-base.h (class SparseMatrix0Base::RawIterator): Remove _A, add _A_end; add default constructor; update other constructors (class SparseMatrix0Base::RawIndexIterator): Ditto (class SparseMatrix0Base): Remove implementations from default class (class SparseMatrix0Base::RawIterator): Make this a parameterized class to allow const version to be defined easily (N.B. I hate C++) (class SparseMatrix0Base::RawIndexIterator): Same as RawIterator (N.B. Same note applies, doubly so) * linbox/blackbox/sparse.h (SparseMatrixFactory): Pull declaration of tmp out of the loop * tests/test-det.C (testDiagonalDet2): Don't specify template parameters explicitly (testSingularDiagonalDet): Ditto * linbox/blackbox/factory.h: Include vector-traits.h * gmp++/gmp++_int.h (Integer::invmod): Make this static * linbox/algorithms/cra.h (cra): Compilation fixes * linbox/solutions/det.h (det): Compilation fixes * linbox/blackbox/sparse.h (class SparseMatrixFactory): Make sure SparseMatrix0Base is used with its own element and row types * linbox/blackbox/factory.h (BlackboxFactory::makeBlackbox): Make F const * linbox/algorithms/cra.h (cra): Use integer:: on integer operations * linbox/blackbox/sparse-base.h (class SparseMatrix0Base): Provide a reasonable default for Row; clean up template declaration * linbox/blackbox/sparse.h (class SparseMatrix0): Clean up template declaration 2002-09-22 Bradford Hovinen * linbox/blackbox/sparse-base.inl (write): Add support for FORMAT_MATLAB in sparse parallel specialization (write): Write closing bracket; put opening bracket at the beginning of the matrix, not the beginning of each row * linbox/blackbox/sparse.h (SparseMatrixFactory::maxNorm, SparseMatrixFactory::rowdim, SparseMatrixFactory::coldim): Implement * linbox/util/gmp++/gmp++_int_gcd.C (invmod): Implement * gmp++/gmp++_int.h (class Integer): Add invmod * linbox/field/modular.h (class ModularBase): Remove assignment operator (Modular::operator =): Copy documentation from ModularBase; use F rather than rhs; copy _two_64 rather than calling init again * linbox/util/gmp++/gmp++_int_misc.C (nextprime, prevprime): Implement Include cmath * gmp++/gmp++_int.h (class Integer): Add nextprime, prevprime * linbox/blackbox/factory.h (class BlackboxFactory): Make a reasonable default for Vector * linbox/Makefile.am (BASIC_HDRS): Add rational.h * linbox/rational.h: Add this file * tests/test-butterfly.C (testBooleanSwitch): Remove this test; it is redundant * linbox/switch/cekstv.h (class CekstvSwitch): Make _iter, _riter, and _R mutable * linbox/blackbox/diagonal.h (class Diagonal): Give a reasonable default for Vector * tests/test-butterfly.C (testSetButterfly): Use stock typedef for dense vectors (testCekstvSwitch): Implement 2002-09-21 Bradford Hovinen * linbox/solutions/det.h (det): Add versions for integer and rational determinant Comilation fixes * examples/dot-product.C (main): Update according to new interfaces; remove unnecessary typedefs * linbox/vector/vector-traits.h (class RawVector): Rename from Vector; parameterize on Element rather than Field (class Vector): Declare to inherit RawVector * linbox/blackbox/sparse.h (class SparseMatrixFactory): Don't require that the field and the SparseMatrixBase share the same element type * examples/blackbox/.cvsignore: Update * linbox/field/modular.h: Reinsert two deleted lines * linbox/util/commentator.C (Commentator::printActivityReport): Don't print percentage unless _len is positive 2002-09-21 Rich Seagraves * linbox/field/modular.h: Added = assignment operator. 2002-09-21 Bradford Hovinen * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Add load-minpoly * linbox/blackbox/sparse-base.inl (readMatlab): Use is.putback, not is.unget * linbox/blackbox/sparse-base.h (SparseMatrix0WriteHelper::Format): Add FORMAT_MATLAB 2002-09-20 Bradford Hovinen * linbox/randiter/param-fuzzy.h (ParamFuzzyRandIter::random): Uncomment ElementAbstract version Include element/abstract.h, element/envelope.h * linbox/field/param-fuzzy.h: Reintroduce forward declaration of RandIter; move include randiter/... to the end * linbox/randiter/param-fuzzy.h (class ParamFuzzyRandIter): Add a version of the constructor that *really* takes a field as an argument * tests/test-param-fuzzy.C (main): Add arguments n and i; call runFieldTests * tests/test-lidia-gfq.C (main): Add arguments n and i; fix description text for argument q; call runFieldTests * tests/test-ntl-RR.cpp (main): * tests/test-unparametric-field.C (main): Return 0 always * linbox/randiter/unparametric.h (UnparametricRandIter::random): Remove debugging code * tests/test-unparametric-field.C (main): * tests/test-ntl-RR.cpp (main): * tests/test-ntl-ZZ_p.cpp (main): * tests/test-ntl-zz_p.cpp (main): Add arguments n and i; call runFieldTests * tests/test-gmp-rational.C (main): * tests/test-givaro-zpz.C (main): * tests/test-modular.C (main): Reverse order of iterations and n when calling runFieldTests * tests/test-generic.h: Do b / a rather than a / b * tests/test-givaro-zpz.C (main): Add arguments n and i; fix description text for argument q; call runFieldTests (main): Don't print out separate headers for each test; just use the runFieldTests wrapper. (main): Add a parameter e and a field F5 which is GF(q^e); run a test on that * linbox/randiter/gmp-rational.h: Reindent (GMPRationalRandIter::random): Initialize value properly (GMPRationalRandIter::random): Canonicalize before returning * linbox/field/gmp-rational.h: * linbox/element/gmp-rational.h: Reindent * linbox/randiter/gmp-rational.h (class GMPRationalRandIter): Fix compile errors * tests/test-generic.h (runFieldTests): Move from test-modular.C here * linbox/field/gmp-rational.h (GMPRationalField::GMPRationalField): Initialize all the const integers (class GMPRationalField): Make integers not static const; fix compile errors * linbox/blackbox/dense.inl (apply): Remove unused variables (applyTranspose): Remove unused variables * linbox/blackbox/dense.h: Include vector-domain.h * linbox/blackbox/sparse1.h: Fix compile warning * examples/mmZZ_pE.C: Fix header and indentation; include dense.h rather than dense-matrix1.h 2002-09-18 zhendong wan * linbox/blackbox/dense.h Add RawIndexIterator, which looks like RawIterator expect that it has two more member function. rowIndex returns the row index, colIndex returns the column index. 2002-09-17 Bradford Hovinen * linbox/solutions/det.h (det): Use commentator.start / commentator.stop * linbox/field/vector-domain.h (VectorDomain::copySpecialized): Don't call resize * linbox/blackbox/dense.h (class DenseMatrix): Remove template parameter from VectorStream constructor; support a different vector type in the representation * tests/.cvsignore: Update * linbox/blackbox/dense.h (class DenseMatrix): Add constructor that takes a VectorStream 2002-09-16 Bradford Hovinen * linbox/blackbox/dense.h (class DenseMatrix): Define a vector domain _VD * linbox/blackbox/dense.inl (applyTranspose, apply): Use vector domain 2002-09-15 Bradford Hovinen * linbox/blackbox/sparse-base.h (class SparseMatrix0ReadWriteHelper): Add readMatlab (SparseMatrix0WriteHelper::Format): Add FORMAT_MATLAB (SparseMatrix0Base::Format): Add FORMAT_MATLAB * linbox/blackbox/sparse-base.inl (write, read): Add support for FORMAT_MATLAB (readMatlab): Implement 2002-09-12 Bradford Hovinen * configure.in (EIGHT_BYTES): Fix typo 2002-09-11 Rich Seagraves * linbox/blackbox/nag-sparse.h: Add RawIterator and RawIndexIterator support, altered test suite appropriately * linbox/blackbox/archetype.h: include cstddef to ensure support for size_t type. 2002-09-10 Bradford Hovinen * tests/test-generic.h (testFieldInversion): Make sure a is nonzero 2002-09-09 Bradford Hovinen * configure.in: Support older versions of autoconf that give AC_SIZEOF results in bits 2002-09-09 Saunders & Wan * solutions/lu.h: add comments 2002-09-08 Bradford Hovinen * examples/blackbox/load-det.C: Cut out unnecessary typedefs * linbox/blackbox/sparse.h (class SparseMatrixFactory): Define (class SparseMatrix0): Introduce default of Dense for vector type 2002-09-08 Bradford Hovinen * .cvsignore: Update * linbox/vector/stream.h (class RandomDenseStream, class RandomSparseStream): Set default vector types to dense and sparse, respectively * linbox/vector/vector-traits.h: Add class Vector with canonical vector types * linbox/vector/Makefile.am (include_HEADERS): Add stream.h * linbox/util/Makefile.am (include_HEADERS): Remove vector-factory.h * tests/test-trace.C: * tests/test-sum.C: * tests/test-submatrix.C: * tests/test-minpoly.C: * tests/test-inverse.C: * tests/test-diagonal.C: * linbox/solutions/trace.h: * linbox/algorithms/wiedemann.h: * tests/test-butterfly.C: * linbox/algorithms/wiedemann.h: * tests/test-generic.h: * tests/test-vector-domain.C: * tests/test-solve.C: * tests/test-moore-penrose.C: * tests/test-sparse.C: Update with changes to linbox/vector/stream.h * tests/test-moore-penrose.C (buildRandomSparseMatrix): Work with sparse parallel vectors 2002-09-05 Bradford Hovinen * linbox/vector/stream.h: - Renamed to stream.h and moved to linbox/vector - VectorFactory is now called VectorStream, which fits its purpose somewhat better - The interface is now closer to the interface for istream - RandomDenseVectorFactory, et al. are refactored into classes parameterized on the vector type and specialized appropriately. This allows, e.g. construction of a random dense vector in sparse representation and so on. - New constructor interface for RandomSparseStream accepts proportion of nonzero entries - Reindented, since the other changes are so numerous that diffs aren't a big deal anyway * linbox/blackbox/archetype.h: s/stddef.h/cstddef/ 2002-09-04 * tests/test-vector-domain.C (main): Remove srand call * examples/blackbox/load-symmetrize.C (main): Remove srand call (main): Fix help text * examples/blackbox/load-det.C (main): Remove srand call 2002-08-28 Bradford Hovinen * NEWS: Updated text * tests/Makefile.am (BASIC_TESTS): Remove test-lu due to compilation problems * configure.in: Bump version to 0.1.2 * linbox/field/lidia-gfq.h (LidiaGfq::read, LidiaGfq::write): Use std::ostream, std::istream * macros/gmp-check.m4: Add directives to allow use of uninstalled GMP * configure.in: Use AM_CONDITIONAL statements for Doc++; Add arguments --enable-doc and --enable-doc-tex for building documentation * doc/Makefile.am (SUBDIRS): Mandary inclusion of html and tex * doc/html/Makefile.am: * doc/tex/Makefile.am: Add mechanism for optionally compiling in targets if USE_DOCPLUSPLUS is set 2002-08-27 Bradford Hovinen * NEWS: Update text * linbox/*/Makefile.am (EXTRA_DIST): Merge in contents of EXTRA_HEADERS * NEWS: Update text * configure.in: Bump version number to 0.1.1 * tests/test-commentator.C (testBriefReport): Output brief report data to the same file used for the other data * linbox/util/commentator.C (MessageClass::checkConfig): Make depth and level unsigned (Commentator::Commentator): Set default max depth of BRIEF_REPORT to 1 (Commentator::start): Push new activity after printing activity report (Commentator::stop): Pop new activity before finishing activity report (Commentator::progress): Test on _activities.size () - 1 for updateActivityReport (Commentator::progress): Tweak output (Commentator::setPrintParameters, Commentator::setMaxDepth, Commentator::setMaxDetailLevel): Omit BRIEF_REPORT (Commentator::printActivityReport, Commentator::updateActivityReport, Commentator::finishActivityReport): Tweak output parameters (Commentator::updateActivityReport): Don't show progress if deeper messages are printed * linbox/util/commentator.h (Commentator::isPrinted, MessageClass::isPrinted): Make depth and level unsigned * tests/.cvsignore: Update * tests/Makefile.am (BASIC_TESTS): Add test-commentator.C * linbox/algorithms/blackbox-container-base.h (BlackboxContainerBase::~BlackboxContainerBase): Delete _BB, as it was a clone * linbox/util/commentator.h (Commentator::MessageLevel): Renumber so that LEVEL_ALWAYS is 0 * linbox/util/commentator.C (MessageClass::fixDefaultConfig): Add a directive to make sure LEVEL_ALWAYS messages always get printed * linbox/util/commentator.h (Commentator::setPrintParameters, MessageClass::setPrintParameters): Interface adjustment: only one depth is specified, the maximum for which the directive is valid; make depth and level unsigned 2002-08-26 Bradford Hovinen * linbox/randiter/modular.h (ModularRandIter::random): Fix call to linbox_check * tests/test-sparse.C (runSparseMatrixTests): Tweak text * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next, RandomSparseParVectorFactory::next): Initialize i to -1 so that the first index might get an entry * tests/test-generic.h (testTranspose, testLinearity): Declare new reports inside the loop * tests/test-sparse.C (testRandomApply2): Reset A_factory when done * linbox/util/field-axpy.h (class FieldAXPY): Make _F mutable * tests/test-sparse.C (testRandomApply2): Remove this test (testRandomApply3): Rename as testRandomApply2 (testRandomApply1, testRandomApply2): Accept a factory as a parameter and use it to build the matrix (testRandomTranspose, testRandomLinearity): Accept a factory as a parameter and use it to build the matrix * tests/test-generic.h (testGeometricSummation): Make sure a != 1 * tests/test-modular.C (runFieldTests): Implement; copy code from relevant section of main (main): Use runFieldTests 2002-08-25 Bradford Hovinen * linbox/field/.cvsignore: Update * tests/.cvsignore: Update * linbox/blackbox/butterfly.h (applyTranspose, apply): Call std::copy (x.begin (), x.end (), y.begin ()) * configure.in (AC_OUTPUT): Add linbox/switch/Makefile * macros/ntl-check.m4: Remove EX_FIELDS_NTL, as it is not needed * linbox/Makefile.am (BASIC_HEADERS): Rename from include_HEADERS; have include_HEADERS use the mechanism in tests/Makefile.am for optional inclusion * macros/ntl-check.m4 (NTL_HEADERS_*): Remove * macros/givaro-check.m4 (GIVARO_HEADERS_*): Remove * macros/lidia-check.m4 (LIDIA_HEADERS_*): Remove * linbox/field/Makefile.am (BASIC_HEADERS): Rename from include_HEADERS; have include_HEADERS use the mechanism in tests/Makefile.am for optional inclusion * tests/test-ntl-toeplitz.C: Rename from test-toeplitz.C * tests/Makefile.am: Rename test-toeplitz as test-ntl-toeplitz * macros/lidia-check.m4 (HAVE_LIDIA): Define * macros/givaro-check.m4 (HAVE_GIVARO): Define * macros/ntl-check.m4 (HAVE_NTL): Define * tests/Makefile.am: Put {NTL|GIVARO|LIDIA}_TESTS in here; use conditionals to make inclusion in TESTS optional 2002-08-20 Bradford Hovinen * linbox/blackbox/butterfly.h (setButterfly): Remove Commentator parameter; update uses of commentator to current interface; remove TRACE code * linbox/Makefile.am (SUBDIRS): Add switch * examples/.cvsignore: Update 2002-08-19 Bradford Hovinen * linbox/randiter/modular.h (ModularRandIter::random): Protect from getting a result equal to the size of the sample * tests/test-sparse.C (testRandomApply1): Remove debugging code * linbox/randiter/modular.h (class ModularRandIter): Make _size a double and _seed an Element, as they can never be larger than Element (ModularRandIter::randIter): Initialize _card (ModularRandIter::random): Don't use temp_integer; don't mod out by cardinality as it should not be necessary; don't convert _size to a double 2002-08-18 Bradford Hovinen * linbox/field/modular.inl (dotSpecializedDSP): Add optimized variant for very short vectors, to avoid cost of additional mod operation (dotSpecializedDSP, dotSpecializedDD): Defer declarations until needed * configure.in (AC_DEFINE_UNQUOTED): Don't quote description * examples/blackbox/ex-mat0.C (main): Use Modular * examples/blackbox/example.C: Use Modular * examples/fields/ex-fields0.C (main): Use Modular * examples/fields/ex-fields.C (main): Use Modular * examples/blackbox/load-symmetrize.C: Use Modular * examples/blackbox/load-det.C: Use Modular * examples/dot-product.C: Use Modular * linbox/field/modular.inl (dotSpecializedDD, dotSpecializedDSP): Update signatures of specialization * tests/test-trace.C (main): Use Modular * tests/test-sum.C (main): * tests/test-submatrix.C (main): * tests/test-sparse.C (main): * tests/test-solve.C (main): * tests/test-scalar-matrix.C (main): * tests/test-minpoly.C (main): * tests/test-inverse.C (main): * tests/test-diagonal.C (main): * tests/test-det.C (main): * tests/test-rank.C (main): * tests/test-dense.C (main): * tests/test-randiter-nonzero.C (main): * tests/test-moore-penrose.C (main): * tests/test-vector-domain.C: Use Modular * tests/test-modular.C: * linbox/field/modular.h: Change Modular, FieldAXPY, and DotProductDomain specializations to use new Linbox uint* types * linbox/integer.h: Add typedefs for int* * acconfig.h: Add #undef __LINBOX_INT* * configure.in: Define __LINBOX_INT* based on results of AC_SIZEOF * linbox/field/modular.inl (dotSpecializedDD, dotSpecializedDSP): Reintroduce faster modding out * linbox/field/modular.h (Modular::init_two_64): Start counter at 0 * tests/test-vector-domain.C (main): Test vector domains for all basic modular types (testVectorDomain): Implement * examples/blackbox/.cvsignore: Update * examples/Makefile.am (EXTRA_PROGRAMS): Add dot-product 2002-08-13 Bradford Hovinen * configure.in: Bump version to 0.1.0 * linbox/field/modular.inl (dotSpecializedDSP, dotSpecializedDD): Use traditional modding out pending getting the more advanced version working correctly * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Fix start/stop pairing * linbox/field/modular.h (Modular::inv): Keep the inputs from sign-extending to long long * linbox/util/commentator.C (Commentator::startIteration): Store string in _iteration_str so that it is not deallocated when the call returns * linbox/util/commentator.h (class Commentator): Add _iteration_str * tests/test-diagonal.C (testRandomMinpoly): Make vector reports at LEVEL_UNIMPORTANT (testRandomTranspose): Use factory to generate diagonal vector; make it a dense vector, use VectorDomain::write (testRandomLinearity): Implement * tests/test-vector-domain.C (main): Used unsigned short field * tests/test-modular.C (main): Make default n 10000; reorder test invocations to group fields together 2002-08-12 Bradford Hovinen * tests/test-vector-domain.C (testDotProduct): Make vector output LEVEL_UNIMPORTANT (testCopyEqual, testAXPY, testSubMul, testAddMul, testDotProduct): Terminate vector displays with endl's * linbox/field/modular.inl (dotSpecializedDD, dotSpecializedDSP): Make sure arithmetic takes place without sign-extension * tests/test-generic.h (testFieldAssociativity): Implement 2002-08-11 Bradford Hovinen * tests/test-modular.C (main): Call tests indicated below for each modular type * tests/test-generic.h (testFieldNegation, testFieldInversion) (testFieldAxioms, testGeometricSummation) (testFieldCharacteristic, testFreshmansDream) (testArithmeticConsistency, testAxpyConsistency): Implement * tests/test-minpoly.C (main): Make A_factory sparse parallel (testIdentityMinpoly, testNilpotentMinpoly): Define Row to be sparse parallel * linbox/field/modular.h (read): Do arithmetic in the domain integer * linbox/randiter/modular.h (ModularRandIter::random): Remove check for negativity * linbox/field/modular.h (Modular::init): Fix in case modulus > 2^15 (Modular::init): Perform modding out operation in class integer (class Modular): Convert to Modular to allow larger moduli * tests/test-modular.C (main): Test Modular and Modular as well; add CLI parameters for that * linbox/field/modular.h (class Modular): Make _k a long long (class FieldAXPY >): Make sure _y uses long long arithmetic (class Modular): Do add and sub in a long to remove restriction on modulus * tests/test-vector-domain.C (main): Use a typedef for the field * linbox/field/modular.h (class Modular): Rename 'k' as '_k' * linbox/field/modular.inl (dotSpecializedDSP): Fix compiler errors (dotSpecializedDD): Ditto * linbox/field/modular.h: Add specializations of DotProductDomain; include modular.inl (class Modular): Make DotProductDomain<...> a friend (Modular::init_two_64): Implement (class Modular): Add field _two_64 (Modular::Modular): Call init_two_64 * linbox/blackbox/sparse-base.inl (setEntry): Use v.first.size () * examples/blackbox/load-symmetrize.C: Ditto * examples/blackbox/load-det.C: Don't explicitly specify row type * linbox/field/vector-domain.h (class VectorDomain): Pull out the dense/dense and dense/sparse parallel dot products into a separate class DotProductDomain, which VectorDomain inherits. Put the field in a virtual base class VectorDomainBase (VectorDomain::field): Implement this * linbox/blackbox/sparse.h (class SparseMatrix0): Make default row type a sparse parallel * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Add load-symmetrize * linbox/algorithms/blackbox-container-symmetrize.h (class BlackboxContainerSymmetrize): Fix compiler warnings * linbox/blackbox/sparse-base.inl (read): Fix arguments to readPretty (read): Remove unused variables (read): Add dummy return statement * examples/blackbox/load-det.C: Fix order of template arguments; add using namespace std * linbox/blackbox/sparse-base.h (class SparseMatrix0Base): Fix member initializer order 2002-08-10 Bradford Hovinen * linbox/util/vector-factory.h (class StandardBasisFactory): Add specialization for sparse parallel vectors * tests/test-generic.h (testLinearity): Use VD.write (testTranspose): Use VD.write (testFieldAXPY): Use VD.write, commentator.startIteration * tests/test-sparse.C (test*): Use VD.write rather than printVector * linbox/blackbox/sparse-base.inl (write): Implement specialization for sparse parallel vectors * linbox/blackbox/sparse-base.h (class SparseMatrix0ReadWriteHelper): Implement class NoField to avoid having twice as many implementations as otherwise (class SparseMatrix0ReadWriteHelper): Split out writing portions into SparseMatrix0WriteHelper, which is partially specialized for sparse parallel vectors * linbox/blackbox/sparse-base.inl (getEntry, refEntry, setEntry): Implement specializations for sparse parallel vectors * linbox/blackbox/sparse.h: Implement specialization for sparse parallel vectors * linbox/blackbox/sparse.h (class SparseMatrix0): Specialize applyTranspose so that it can handle sparse parallel vectors, without having to specialize the entire class * linbox/algorithms/Makefile.am (include_HEADERS): Add wiedmemann.h * linbox/solutions/Makefile.am (include_HEADERS): Add solve.h 2002-08-09 Bradford Hovinen * tests/Makefile.am (BASIC_TESTS): Remove test-dense-matrix * tests/.cvsignore: Update * linbox/blackbox/Makefile.am (include_HEADERS): Remove dense-matrix.h (include_HEADERS): Change dense-matrix1.[Ch] to dense.inl, dense.h * tests/test-submatrix.C: #include dense.h * tests/test-inverse.C: * linbox/blackbox/dense.h (class DenseMatrix): Make F const 2002-08-09 Dave Saunders * linbox/vector/subvector.h: homage to the indentation police. 2002-08-09 Bradford Hovinen * linbox/blackbox/dense.h (class DenseMatrix): Make _F a const reference (DenseMatrix::DenseMatrix): Make F const * linbox/blackbox/dense.h: * linbox/blackbox/dense.inl: Reindent and remove compiler warnings * tests/test-dense.C: Rename from test-dense-matrix1.C; update header * linbox/algorithms/wiedemann.h (solveWiedemannSingular): Give up if tries exceeds maxTries (solveWiedemannSingular, solveWiedemann): Fix order of arguments to VD.axpy * linbox/solutions/methods.h (struct SolverTraits): Add maxTries * linbox/algorithms/wiedemann.h (solveWiedemann): Output minimal polynomial at LEVEL_UNIMPORTANT * tests/test-solve.C (main): Correct output (testDiagonalSolve): Correct output (testDiagonalSolve): Print output vector too * linbox/util/commentator.C (Commentator::start): Don't output starting activity method if messages at that activity's depth aren't printed (Commentator::stop): Give a different message if this is the greatest depth at which messages are printed * linbox/algorithms/wiedemann.h (solveWiedemann): Use traditional indexing approach; eliminate count (solveWiedemannSingular): Ditto * linbox/solutions/methods.h (struct SolverTraits): Add singular, checkResult, certificate * tests/Makefile.am (BASIC_TESTS): Remove test-solver, add test-solve * linbox/solutions/solve.h: Move solveWiedemann[Singular] to linbox/algorithms/wiedemann.h; solve is now just a wrapper * linbox/solutions/solve.h: Rename from solver.h, tweak indentation, add header (solve): Add argument SolverTraits (solve): Remove randiter (solve): Use P.front () rather than P[0] (solve): Use iterator to go through polynomial (solve): Don't use applyIn and axpyin; allocate another vector (solve): Split into nonsingular case (solveWiedemann): Move Wiedemann-based method here (solveWiedemann): Rename y as b * linbox/solutions/methods.h (struct SolverTraits): Add a constructor that takes a string * linbox/blackbox/inverse.h (apply, applyTranspose): Remove template spec on minpoly call * linbox/solutions/rank.h: Update header * linbox/solutions/trace.h (trace): Reorder template parameters so that only Vector need be specified explicitly * tests/test-moore-penrose.C: Remove compiler warnings * tests/test-det.C: Remove compiler warnings * tests/test-rank.C: Remove compiler warnings * linbox/solutions/rank.h (rank): Make i a size_t * linbox/solutions/det.h (det): Make i a size_t * tests/test-trace.C: Remove compiler warnings * linbox/solutions/trace.h (trace): Remove unused int i * linbox/blackbox/dense-matrix.h (DenseMatrix::DenseMatrix): Make F a const (class DenseMatrix): Make _F a const * tests/test-common.h (multiEvalPoly): Make j a size_t * tests/test-inverse.C: Fix compiler warnings (testHilbertInverse, testIdentityInverse, testVandermondeInverse) (testDiagonalInverse): Make generic wrt vector type; use VectorFactory (main): Add CLI argument -N for number of vectors to apply Vandermonde inverse to * tests/test-diagonal.C: Update header; remove compiler warnings (testIdentityApply): Use commentator.startIteration; make generic wrt vector type; use VectorFactory (testRandomMinpoly): Ditto above * linbox/blackbox/scalar-matrix.h: Remove unused y_end * linbox/field/vector-domain.C (VectorDomain::writeSpecialized): Make idx a size_t * linbox/blackbox/inverse.h (Inverse::apply): Fix order of arguments to axpy (Inverse::applyTranspose): Ditto * linbox/field/vector-domain.C (VectorDomain::axpySpecialized): Fix order of arguments to _F.axpy * linbox/algorithms/blackbox-container-base.h (class BlackboxContainerBase): Add virtual destructor * linbox/algorithms/massey-domain.h (MasseyDomain::massey): Cast to avoid compiler warning * tests/test-common.h (printPolynomial): Make val a size_t * tests/test-minpoly.C (testRandomMinpoly1): Use VD in more places (testRandomMinpoly1): Use startIteration (testRandomMinpoly1): Use a vector factory to build the matrix (testRandomMinpoly): Rename from testRandomMinpoly1 (testRandomMinpoly2): Eliminate this test, as it is now redundant (main): Remove CLI argument -N; construct vector factories (testNilpotentMinpoly): Make i a size_t * tests/test-common.h (applyPoly): Fix order of arguments to VD.axpy (applyPoly): Make generic wrt vector type 2002-08-08 Bradford Hovinen * tests/.cvsignore: Remove test-dense-vector-domain, add test-subiterator, test-param-fuzzy, test-dense-matrix1 * linbox/vector/subvector.h (Subvector::Subvector): Use Iterator () rather than 0 * linbox/field/param-fuzzy.h (class ParamFuzzy): Use std:: for istream and ostream * tests/test-scalar-matrix.C (testScalarApply): Make j a size_t * tests/test-submatrix.C (testRandomApply): Make i, j, k, l size_t's * tests/test-subvector.C (testSubvector): Remove unused variable i, make z a size_t * linbox/vector/const-iterator-type.h: Qualify vector with std:: * tests/test-subiterator.C (test): Use Subiterator::iterator> * linbox/vector/subiterator.h: Reindent * linbox/vector/const-iterator-type.h: Rename from constiteratortype.h; reindent * tests/test-randiter-nonzero.C: Remove #include 2002-08-06 Bradford Hovinen * tests/.cvsignore: Update * examples/blackbox/example.C: Compilation fixes * linbox/blackbox/sparse.h: Rename from sparse0.h * linbox/blackbox/sparse.inl: Rename from sparse0.inl * linbox/blackbox/sparse-base.h: Rename from sparse0-base.h * linbox/blackbox/sparse-base.inl: Rename from sparse0-base.inl * tests/test-sparse.C: Rename from test-sparse0.C 2002-08-05 Bradford Hovinen * Change local variable header so that it actually works 2002-08-05 Bradford Hovinen * linbox/blackbox/Makefile.am (include_HEADERS): Update * tests/Makefile.am (BASIC_TESTS): Remove test-toeplitz and test-lu, since they depends on an optional library (i.e. NTL) (EXTRA_PROGRAMS): Add test-toeplitz, test-lu (BASIC_TESTS): Remove test-stub (test-stub.C is missing) 2002-08-03 Dave Saunders * linbox/field/param-fuzzy.h, linbox/randiter/param-fuzzy.h: update. * tests/test-param-fuzzy.C: Added this test. Passes, but fails thru archetype We need to sharpen our testing. Fields should work thru the arch and there should be exact field tests that fuzzy fields fail. 2002-08-02 Dave Saunders * linbox/field/field-interface.h: empty parent class for fields added for the sake of doc++ * linbox/interfaces.dxx: summary of the various interface concepts. Many have archtypes, but not all * consequential changes to these files: doc/Makefile.am doc/html/Makefile.am linbox/Makefile.am linbox/linbox.dxx linbox/field/Makefile.am linbox/field/archetype.h linbox/field/fields.dxx linbox/field/givaro-gfq.h linbox/field/givaro-zpz.h linbox/field/gmp-rational.h linbox/field/lidia-gfq.h linbox/field/modular.h linbox/field/param-fuzzy.h linbox/field/unparametric.h 2002-08-01 Dave Saunders * linbox/field/Makefile.am: delete ref to the previously removed dense-vector-domain * tests/Makefile.am: add comments * HACKING: mod to indent policy, more "cvs up" info. 2002-07-31 Bradford Hovinen * linbox/blackbox/nag-sparse.h: Tweak header * linbox/blackbox/sparse0-base.h (class SparseMatrix0Base): Remove copyToRow and swapRows, as they are unnecessary 2002-07-31 Dave Saunders * linbox/blackbox/ntl-toeplitz.h: fix indentation * linbox/blackbox/ntl-toeplitz.inl: replace .C and fix indentation 2002-07-30 Saunders and Lobo * linbox/blackbox/ntl-toeplitz.* and it's test. Adding a toeplitz black box. * First version, more general capability is coming. 2002-07-26 Bradford Hovinen * linbox/field/modular.h (class Modular, class FieldAXPY): Add specializations for int element type * linbox/util/commentator.h (Commentator::nullstreambuf::showmanyc): Return std::streamsize 2002-07-29 Rich Seagraves * linbox/blackbox/Makefile.am (include_HEADERS): Added nag-sparse.h 2002-07-26 Bradford Hovinen * linbox/blackbox/sparse0-base.C (readTurner, readGuillaume): Use A.refEntry * linbox/blackbox/sparse0.[Ch]: Move apply, applyTranspose definitions to sparse0.C * tests/test-minpoly.C (testRandomMinpoly1, testRandomMinpoly2): Update as per change below * linbox/blackbox/sparse0-base.C (getEntry): Make the Row reference const (getEntry): Have specialization for sparse associative vectors use find to avoid const issues * tests/test-sparse0.C (testRandomApply1, testRandomApply2) (testRandomApply3, testRandomTranspose, testRandomLinearity): Update as per change below * tests/test-moore-penrose.C (buildRandomSparseMatrix): Update as per change below * linbox/blackbox/sparse0-base.h (class SparseMatrix0Base): Change non-const version of getEntry to refEntry 2002-07-26 Bradford Hovinen * linbox/blackbox/Makefile.am (include_HEADERS): Remove densesubmatrix.H 2002-07-25 Bradford Hovinen * linbox/util/commentator.C (Commentator::stop): Make sure all timings get the same precision * linbox/field/modular.h (clsas Modular): Define k for delayed modding out (class FieldAXPY): Use static modding out procedure; make _y a long long 2002-07-24 Bradford Hovinen * tests/test-vector-domain.C (main): Add calls to test sparse parallel vectors Use VD.write rather than printVector * linbox/util/vector-factory.h (class RandomSparseParVectorFactory): Added this class for random sparse parallel vectors * tests/test-vector-domain.C (testDotProduct, testAddMul) (testSubMul, testAXPY, testCopyEqual): Reset factories when done * linbox/field/vector-domain.C (VectorDomain::addinSpecialized, VectorDomain::subinSpecialized, VectorDomain::axpyinSpecialized): Use a temporary vector and copy when done for the sparse sequence specialization (O(n) vs. O(n^2)) Don't use iterator operator < unless necessary * linbox/field/vector-domain.h (class VectorDomain): Add support for SparseParallelVectorTag (VectorDomain::copySpecialized): Use std::copy for inline implementations, just in case there are two different vector types with the same tag * linbox/vector/vector-traits.h (struct VectorCategories): Add SparseParallelVectorTag (struct VectorTraits): Add specialization for sparse parallel vectors (refSpecialized, constRefSpecialized, ensureDimSpecialized): Add specialization for sparse parallel vectors * tests/test-moore-penrose.C (testRandomApply1): Add commentator activity for constructing the matrix (testRandomApply1): Delete A when done * linbox/field/vector-domain.C (VectorDomain::copySpecialized): Add version optimized for copying to vectors of the same type 2002-07-23 Bradford Hovinen * examples/blackbox/load-det.C: Fix include directive * linbox/field/vector-domain.C (VectorDomain::write): Write out i->second, not *i * tests/test-moore-penrose.C (testRandomApply1): Make this generic wrt vector and row type (buildRandomSparseMatrix): Use VectorDomain and facilities of new SparseMatrix0; make generic wrt row type (testRandomApply1): Indent correct and computed output messages * linbox/field/vector-domain.C (VectorDomain::copySpecialized): Implement version described below * linbox/field/vector-domain.h (class VectorDomain): Add a form of copy that allows copying a subvector into a subvector * linbox/util/commentator.C (MessageClass::fixDefaultConfig): Clear entire list 2002-07-23 Saunders * tests/Makefile.am includes test-subiterator. Advise me if it doesn't work for you. 2002-07-22 Bradford Hovinen * tests/test-minpoly.C: Updated to reflect changes to SparseMatrix0 (testNilpotentMinpoly, testIdentityMinpoly): Use a StandardBasisFactory object * tests/test-sparse0.C: Updated to reflect changes to SparseMatrix0 * linbox/blackbox/sparse0.h: * linbox/blackbox/sparse0-base.h: Refactoring: - Eliminated SparseMatrix0Aux and moved that functionality into Sparse0 - Made SparseMatrix0Base parameterized only on the element type - New read/write implementations for SparseMatrix0Base, supporting multiple formats - Eliminated Gaussian elimination code - Added iterators, including ColOfRowsIterator, RawIterator, and RawIndexIterator - Eliminated operator []; added getEntry; changed put_value to setEntry * linbox/util/commentator.C (Commentator::progress): Enable act->_timer.stop () * linbox/util/timer.C (stop, start): Use _start_t * linbox/util/timer.h (class BaseTimer): Added _start_t * linbox/vector/subvector.h (struct VectorTraits): Use Subvector to get value_type 2002-07-18 Bradford Hovinen * linbox/vector/vector-traits.h: Add #include * linbox/util/commentator.h (class Commentator): Add form of isPrinted that does not require activity depth; add isNullStream * macros/*-check.m4: Don't add a -I and -L arguments if they refer only to /usr or to /usr/local * macros/*-check.m4: Add rules for cross-compiling * macros/*-check.m4: Tweak argument documentation * macros/gmp-check.m4: Remove note that GMP installation is optional 2002-07-12 Bradford Hovinen * linbox/field/ntl-RR.h (LinBox): Ditto * linbox/field/ntl-ZZ_p.h (LinBox): Ditto * linbox/field/ntl-zz_p.h (LinBox): Ditto * linbox/blackbox/submatrix.h (LinBox): Ditto * linbox/blackbox/hilbert.h (LinBox): Ditto * linbox/blackbox/diagonal.h (LinBox): Ditto * linbox/blackbox/scalar-matrix.h (LinBox): Ditto * tests/test-scalar-matrix.C: Update as per C++ standard * linbox/solutions/methods.h (struct SolverTraits): First stab at this structure * linbox/algorithms/blackbox-container.h (LinBox): Ditto * linbox/vector/reverse.h (LinBox): Ditto * linbox/vector/subvector.h: Ditto * linbox/vector/subiterator.h (LinBox): Ditto * linbox/field/unparametric.h (LinBox): Update as per C++ standard * linbox/util/commentator.C (Commentator::updateActivityReport): Make i signed * linbox/util/error.C: Ditto * linbox/util/timer.C: Updates to C++ standard; place everything inside LinBox namespace * linbox/util/gmp++/gmp++_int_misc.C: Ditto * linbox/util/gmp++/gmp++_int_io.C: Update header file names Add using namespace std Updates to conform to C++ standard * linbox/util/gmp++/gmp++_int_cstor.C: s/iostream.h/iostream/ * linbox/vector/vector-traits.h (struct SparseSequenceVectorPairLessThan): Use std:: namespace qualifier (class CompareSparseEntries): Use std:: namespace qualifier (refSpecialized): Use std:: namespace qualifier * linbox/util/error.h: s/iostream.h/iostream/ Use std:: namespace qualifier for iostream * linbox/field/envelope.h (class FieldEnvelope): Ditto * linbox/field/archetype.h (class FieldArchetype): Ditto * linbox/field/abstract.h (class FieldAbstract): Use std:: namespace qualifier for ostream/istream * gmp++/gmp++_int.inl (Integer::random): Eliminate default from definition * gmp++/gmp++_int.h: Use namespace qualifier std:: for parts of the STL; update header names in accordance with C++ standard * linbox/util/timer.h: s/iostream.h/iostream/ as per updated C++ standard; put everything inside the LinBox namespace; use std::ostream 2002-07-08 Bradford Hovinen * linbox/solutions/methods.h: Put everything inside the LinBox namespace * linbox/solutions/rank.h (rank): Update (rank): Use VectorWrapper::ensureDim; add commentator calls * linbox/solutions/det.h (det): Update * linbox/solutions/minpoly.h (minpoly): Update * linbox/solutions/methods.h: Changed the name _DEFAULT_EarlyTerm_THRESHOLD_ to the more standard-consistent DEFAULT_EARLY_TERM_THRESHOLD; changed the name Early_Term_Threshold to earlyTermThreshold, also in keeping with the standard. 2002-07-05 Bradford Hovinen * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::applyTranspose): Avoid use of operator []; tweak performance with iterators * linbox/util/field-axpy.h (class FieldAXPY): Add assignment operator; make _F a real copy and not a reference * linbox/field/modular.h (FieldAXPY::FieldAXPY): Add copy constructor; use direct assignment for 0 (class FieldAXPY): Make _F a real copy; add assignment operator * linbox/util/field-axpy.h (class FieldAXPY): Add copy constructor * linbox/blackbox/sparse0-base.h (SparseMatrix0Base::prettyPrint): Make i, j size_t's * linbox/blackbox/sparse0-aux.h (class SparseMatrix0Aux): Add _faxpy (SparseMatrix0Aux::applyTranspose): Use _faxpy vector to enable delayed modding out 2002-07-02 Bradford Hovinen * linbox/field/modular.h (class FieldAXPY): Add template <> * examples/blackbox/.cvsignore: Update * tests/.cvsignore: Update * tests/test-moore-penrose.C (testIdentityApply): Make display of vectors LEVEL_UNIMPORTANT (testRandomApply1): Ditto (testRandomApply1): Put the construction of Adagger inside a commentator activity; change "Computing" to "Applying" for the activity surrounding the application * HACKING: Update instructions for adding a test * tests/Makefile.am (BASIC_TESTS): Move all mandatory tests here (TESTS): Include BASIC_TESTS (EXTRA_PROGRAMS): Include BASIC_TESTS (noinst_PROGRAMS): Remove * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next): Make i a size_t * linbox/field/vector-domain.C (VectorDomain::mulSpecialized): Eliminate unused j (VectorDomain::addinSpecialized, VectorDomain::subinSpecialized, VectorDomain::axpyinSpecialized): Make i a size_t (VectorDomain::copySpecialized, VectorDomain::areEqualSpecialized): Make idx a size_t * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::RandomSparseSeqVectorFactory): Reorder initializers (class VectorFactory): Add virtual destructor * tests/test-vector-domain.C (testSubMul): Remove unused i, j (testAXPY): Ditto * linbox/blackbox/inverse.h (Inverse::apply): Eliminate unused j * tests/test-vector-domain.C (testCopyEqual, testAddMul): Remove unused i, j (testDotProduct): Make j a size_t * linbox/util/vector-factory.h (StandardBasisFactory::next): Make idx a size_t * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::applyTranspose): Initialize y to all zeros first * tests/test-sparse0.C (testRandomApply3, testRandomApply2, testRandomApply1): Remove unused VD * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next): Don't die if skip is 0; just increment i * tests/test-generic.h (testTranspose, testLinearity): Remove unused i, j 2002-07-01 Bradford Hovinen * linbox/field/vector-domain.C (dotSpecialized): Don't initialize res; it's not necessary here * linbox/algorithms/blackbox-container-base.h (class BlackboxContainerBase): Tweak indentation * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::applyTranspose): Use linbox_check and _F.axpyin * linbox/algorithms/Makefile.am (include_HEADERS): Add blackbox-container-symmetrize.h * linbox/field/modular.h (FieldAXPY::get, FieldAXPY::assign): inline these * linbox/util/field-axpy.h (FieldAXPY::get, FieldAXPY::assign): inline these * linbox/field/vector-domain.C (VectorDomain::dotSpecialized): inline this * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::apply): Eliminate Element temp * linbox/util/commentator.C (Commentator::progress): Show elapsed time (Commentator::progress): Get a pointer to the top activity first * linbox/algorithms/massey-domain.h (MasseyDomain::massey): Use COMMOD for progress reports * linbox/util/commentator.C (Commentator::updateActivityReport): Use a strstream and update _last_line_len (Commentator::finishActivityReport): Use _last_line_len (Commentator::setReportStream): Disable brief report if we are outputing to the same stream it is * linbox/util/commentator.h (class Commentator): Add _last_line_len * linbox/util/commentator.C (Commentator::stop): Increase output precision; make sure output is nonnegative * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Add load-det * linbox/field/givaro-zpz.h: Reindent * examples/run/Makefile.am: Kill _DEPENDENCIES lines * examples/integers/Makefile.am: Kill _DEPENDENCIES lines * examples/fields/Makefile.am: Kill _DEPENDENCIES lines * examples/blackbox/Makefile.am: Kill _DEPENDENCIES lines * examples/Makefile.am: Kill _DEPENDENCIES lines * HACKING: Remove note about _DEPENDENCIES lines * tests/Makefile.am: Get rid of _DEPENDENCIES lines; turns out they aren't necessary * linbox/util/commentator.C (Commentator::stop): Modified report format; display all three timings 2002-06-28 Bradford Hovinen * linbox/util/commentator.C (Commentator::updateActivityReport): Use floor (percent + 0.5) rather than round (percent) * linbox/util/commentator.h (Commentator): Redefine Commentator to CommentatorDisabled when disabled; define the existing commentator regardless of whether it is disabled -- the new #defines will deflect any access * tests/test-minpoly.C (main): Re-enable commentator * linbox/util/commentator.C (Commentator::Commentator): Set default max depth for BRIEF_REPORT to 2; use macros for detail levels (MessageClass::fixDefaultConfig): Make sure j is not erased from the list before insertion * gmp++/gmp++_int.h: Add short, unsigned short implicit conversions 2002-06-27 Bradford Hovinen * linbox/util/commentator.C (Commentator::updateActivityReport): Use round (percent) rather than setting precision (MessageClass::checkConfig): Use depth < (*i).first (MessageClass::fixDefaultConfig): Erase everything after _max_depth and everything before _max_depth that is not more restrictive * tests/test-vector-domain.C (testAXPY): Update use of VD.axpy * tests/test-common.h (applyPoly): Update use of VD.axpy * tests/test-generic.h (testLinearity): Update use of VD.axpy * linbox/blackbox/inverse.h (Inverse::apply, Inverse::applyTranspose): Update * linbox/field/vector-domain.h (class VectorDomain): Change order of parameters to match FieldArchetype::axpy 2002-06-26 Bradford Hovinen * tests/test-minpoly.C: Report minpoly degree; tweak report parameters * linbox/algorithms/blackbox-container.h (BlackboxContainer::BlackboxContainer): Initialize _applyTime and _dotTime if INCLUDE_TIMING is defined 2002-06-26 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::addinSpecialized, VectorDomain::subinSpecialized): Use i->first < j->first * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next): Add check that skip > 0 * linbox/field/vector-domain.C (VectorDomain::axpySpecialized): Fix order of arguments to F.axpy * tests/test-generic.h (testLinearity): Fix variable names to be more descriptive * linbox/util/vector-factory.h (LinBox): Use v[] rather than v.insert * tests/test-generic.h (testDenseConsistency): Eliminate this test (testLinearity): Fix formulae * linbox/solutions/trace.h (trace): Make sure v has correct dimension * tests/test-inverse.C (testRandomTranspose): Update according to changes in testTranspose * tests/test-diagonal.C (testRandomTranspose): Update according to changes in testTranspose * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::SparseMatrix0Aux): Initialize _VD for sparse associative specialization * tests/test-generic.h (testTranspose): Use VectorFactory, make this generic wrt vector type * tests/test-sparse0.C (testRandomTranspose, testRandomLinearity): New tests (main): Call tests on all combinations of vector types * linbox/util/vector-factory.h (StandardBasisFactory::next): Initialize the whole vector for the dense case * linbox/blackbox/sparse0-base.h (SparseMatrix0Base::put_value, SparseMatrix0Base::operator[]): Use linbox_check * tests/test-sparse0.C (testRandomApply1, testRandomApply2, testRandomApply3): Make these generic wrt vector and row type * */*.[Ch]: Change top Emacs identifier to mode: C++ so that it does the correct thing with templates and so on * linbox/util/vector-factory.h (class RandomDenseVectorFactory): Use RandIter, not Field::RandIter for _r 2002-06-25 Bradford Hovinen * tests/test-sparse0.C (testIdentityApply): Use VectorFactory (testNilpotentApply): Use VectorFactory * linbox/blackbox/sparse0-aux.h (class SparseMatrix0Aux): Use VectorDomain for the sparse associative specialization; replace Field1 with VectorDomain (SparseMatrix0Aux::apply): Use VectorDomain::dot for all specializations (class SparseMatrix0Aux): Restore compilation of sparse associative specialization (SparseMatrix0Aux::apply): Use iterator rather than integer * tests/Makefile.am (TESTS): Add test-subvector * linbox/algorithms/blackbox-container.h (class BlackboxContainer): Add optional timing facilities, enabled with INCLUDE_TIMING * linbox/algorithms/massey-domain.h (class MasseyDomain): Add optional timing facilities, enabled with INCLUDE_TIMING * linbox/vector/Makefile.am (include_HEADERS): Add subvector.h, subiterator.h, reverse.h * linbox/vector/subvector.h: Reindent; fix headers * linbox/algorithms/massey-domain.h (class MasseyDomain): Replace _field with _F; declare VectorDomain _VD; use const long rather than #define when possible * linbox/algorithms/blackbox-container-base.h (class BlackboxContainerBase): Add member VectorDomain _VD; rename _field to _F (for consistency); eliminate operators; align members (BlackboxContainerBase::size): Make this const * linbox/algorithms/blackbox-container.h (BlackboxContainer::_launch): Use _VD.dot rather than home-cooked dot product (class BlackboxContainer): Make RandIter a template parameter, defaulted to Field::RandIter * linbox/algorithms/Makefile.am (include_HEADERS): Add blackbox-container-symmetric.h * linbox/solutions/trace.h (trace): Use factory.j () - 1 2002-06-24 Bradford Hovinen * tests/test-vector-domain.C (main): Reset factory 5 before sparse sequence/sparse associative dot product; factory 6 before sparse associative add/mul test (testDotProduct): Add timing * linbox/util/vector-factory.h (VectorFactory): Fix output of j () * HACKING: Update with consolidated ChangeLogs * linbox/vector/vector-traits.h (refSpecialized, cosntRefSpecialized): Check that size is nonzero before conducting binary search; check that return iterator is not past-the-end 2002-06-21 Bradford Hovinen * examples/integers/.cvsignore: Update * examples/.cvsignore: Update 2002-06-21 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::axpyinSpecialized): Don't use an iterator here, since we invalidate iterators by calling insert * linbox/field/modular.h (Modular::neg): Make sure -0 = 0 * linbox/field/vector-domain.C (VectorDomain::axpySpecialized): Use _F.axpy when possible; avoid use of temporaries (VectorDomain::addSpecialized, VectorDomain::addinSpecialized, VectorDomain::subSpecialized, VectorDomain::subinSpecialized, VectorDomain::isZeroSpecialized, VectorDomain::areEqualSpecialized, VectorDomain::convertSpecialized, VectorDomain::readSpecialized, VectorDomain::writeSpecialized, VectorDomain::copySpecialized): Implement (VectorDomain::mulSpecialized, VectorDomain::mulinSpecialized): Implement specialization for sparse associative vectors * linbox/randiter/nonzero.h (class NonzeroRandIter): Set default RandIter to Field::RandIter * linbox/util/vector-factory.h (class RandomSparseSeqVectorFactory, class RandomSparseMapVectorFactory): Use NonzeroRandIter * linbox/vector/vector-traits.h (class CompareSparseEntries): Implement (refSpecialized, constRefSpecialized): Use lower_bound * tests/test-generic.h (testLinearity): New test * tests/test-vector-domain.C (testAddMul, testSubMul, testCopyEqual): New tests; call these from main * tests/test-vector-domain.C (testAXPY): Use VD.isZero * tests/.cvsignore: Update 2002-06-20 Bradford Hovinen * examples/Makefile.am (EXTRA_PROGRAMS): Add mmZZ_pE * examples/integers/Makefile.am (EXTRA_PROGRAMS): Don't compile programs by default 2002-06-20 Bradford Hovinen * examples/blackbox/Makefile.am (EXTRA_PROGRAMS): Don't compile examples by default * examples/fields/Makefile.am (EXTRA_PROGRAMS): Don't compile programs by default * linbox/blackbox/dense-matrix1.h (DenseMatrix::Row::Row): Fix typos in default initialization * linbox/blackbox/dense-matrix1.C (DenseMatrix::write): Remove default for parameter (DenseMatrix::ColOfRowsIterator::ColOfRowsIterator): Remove default for first parameter (DenseMatrix::RowOfColsIterator::RowOfColsIterator): Remove default for first parameter (class DenseMatrix::RowOfColsIterator): Add constructor with no parameters (class DenseMatrix::ColOfRowsIterator): Add constructor with no parameters * linbox/field/Makefile.am (EXTRA_DIST): Add EXTRA_HEADERS 2002-06-20 Pascal Giorgi * linbox/field/givaro-gfq.h: Replace cast according to gmp++ . 2002-06-20 Bradford Hovinen * linbox/randiter/Makefile.am (include_HEADERS): Add nonzero.h * linbox/util/vector-factory.h (class RandomDenseVectorFactory, class RandomSparseSeqVectorFactory, class RandomSparseMapVectorFactory): Add constructor specifying a particular random iterator 2002-06-20 Dave Saunders * insert LinBoxSrcOnly flag for all-source compilation (fixed) 2002-06-20 Bradford Hovinen * macros/ntl-check.m4 (AC_TRY_LINK): Don't include iostream -- it was causing compiler trouble wrt autoconf (NTL_HEADERS_FIELD): Add ntl-ZZ_pE.h * tests/Makefile.am (TESTS): Add test-randiter-nonzero (test_diagonal_DEPENDENCIES): Remove duplicate definition 2002-06-19 Bradford Hovinen * configure.in (AC_OUTPUT): Remove linbox/iterators/Makefile, remove examples/run/Makefile 2002-06-19 Bradford Hovinen * examples/Makefile.am (SUBDIRS): Add integers * examples/fields/Makefile.am (ex_fields_wrapper_SOURCES): Don't comment out this line * linbox/util/gmp++/Makefile.am (INCLUDES): Add -I$(top_srcdir) * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::next): Use simpler formulas ala Knuth (class RandomSparseSeqVectorFactory): Remove extraneous variables * tests/test-sum.C (main): Use GF(101) by default (testZeroApply): Use VD.mul rather than VD.axpy 2002-06-18 Bradford Hovinen * Makefile.am (SUBDIRS): Add gmp++ * configure.in (AC_OUTPUT): s/integer/gmp++/ 2002-06-18 Bradford Hovinen * examples/blackbox/ex-mat0.C: Add using namespace std * linbox/integer.h: Use GMP++ 2002-06-18 Zhendong Wan * dense-matrix1.h dense-matrix1.C * FieldBASL.h FieldBLAS.C * linbox/field/ntl-ZZ_pE.h 2002-06-18 Bradford Hovinen * linbox/util/vector-factory.h (RandomSparseMapVectorFactory::next): Use a simpler mechanism for constructing vectors * linbox/util/gmp++/gmp++_int.h: Define GMPXX_PREFIX if not already done * linbox/util/gmp++/*.[Ch]: Prefix #include lines with GMPXX_PREFIX * linbox/util/Makefile.am (SUBDIRS): s/integer/gmp++/ (libutil_la_LIBADD): s/integer/gmpxx/ 2002-06-14 Bradford Hovinen * examples/blackbox/.cvsignore: Update 2002-06-14 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::dotSpecialized): Make sure not to accumulate if j is at v2.end. (VectorDomain::dotSpecialized): Add specialization for sparse associative/sparse associative dot product * linbox/field/modular.h (class ModularBase, class Modular): Replace Modular[Base]::Modular[Base] (Element) with unsigned long version 2002-06-14 zhenddong wan * linbox/vector/subvector.h: fix the const_iterator problem 2002-06-14 Bradford Hovinen * tests/test-vector-domain.C (main): Add call to test sparse associative/sparse associative dot product 2002-06-13 Bradford Hovinen * .cvsignore: Remove config.h[.in] and add linbox-config.h[.in] * configure.in: Change AM_CONFIG_HEADER to linbox-config.h * */*.C: Change #include "config.h" to #include "linbox-config.h" * Makefile.am (include_HEADERS): Add linbox-config.h * acconfig.h: Add GMP_VERSION_4 2002-06-13 Bradford Hovinen * examples/blackbox/.cvsignore: Update * linbox/integer.h: Only use extern "C" if GMP_VERSION_4 is not set * linbox/vector/vector-traits.h: Add #include linbox/field/archetype.h * macros/gmp-check.m4: Added check for GMP 4.0 or greater * tests/test-vector-domain.C (main): Invoke testDotProduct for sparse sequence/sparse sequence vectors * tests/Makefile.am: Commented out subiterator and solveNonsingular as the former has compilation problems and the latter was not added properly 2002-06-11 Dave Saunders * linbox/field/ntl-ZZ_p.h: include sys/time.h 2002-06-11 Dave Saunders * tests/test-subiterator.C: new test of vector/subiterator.h 2002-06-10 Dave Saunders * linbox/vector/subiterator.h, subvector.h: subvector now constructs from subiterators, not from underlying vector. This avoids copy and reference problems with underlying vector. 2002-06-07 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::axpySpecialized): Implement specialization for sparse associative vectors (VectorDomain::axpyinSpecialized): Implement specialization for sparse associative vectors (VectorDomain::dotSpecialized): Implement specialization for sparse sequence/sparse sequence and sparse associative/sparse sequence vectors 2002-06-07 Bradford Hovinen * tests/test-vector-domain.C (main): Add call to test sparse associative vector axpy 2002-06-06 Bradford Hovinen * linbox/field/vector-domain.C (VectorDomain::dotSpecialized): Implement specialization for sparse associative/dense dot product * linbox/field/vector-domain.h (class VectorDomain): Add return statements 2002-06-06 Bradford Hovinen * linbox/util/vector-factory.h (RandomSparseSeqVectorFactory::RandomSparseSeqVectorFactory): Make sure k < n (RandomSparseSeqVectorFactory::next): Tweak formulae (RandomSparseMapVectorFactory::next): Tweak formulae the same way as above * tests/test-vector-domain.C (testAXPY): Rename from testDenseAXPY. Make this generic with respect to the vector type being tested (main): Update according to the above * tests/.cvsignore: Update * tests/test-vector-domain.C (main): Add call to test sparse associative dot product 2002-06-05 Bradford Hovinen * tests/test-vector-domain.C (testDotProduct): Rename from testDenseDotProduct. Make this generic with respect to the vector type being tested 2002-06-04 Bradford Hovinen * .cvsignore: Update 2002-06-04 Bradford Hovinen * examples/run/.cvsignore: Update 2002-06-04 Bradford Hovinen * linbox/blackbox/inverse.h (class Inverse): Update use of VectorDomain * linbox/blackbox/sparse0-aux.h (class SparseMatrix0Aux): Update use of VectorDomain * linbox/blackbox/dense-matrix.h (class DenseMatrix): Update use of VectorDomain 2002-06-04 Bradford Hovinen * linbox/blackbox/moore-penrose.h (class MoorePenrose): s/_B/_B1/ since _B seems to be a macro of some type on Solaris 2002-06-04 Bradford Hovinen * linbox/field/vector-domain.h (class VectorDomainBase, class VectorDomain): Merge these classes together (class VectorDomain): Parameterize methods on the vector types rather than parameterizing the whole class. Add methods * Specialized for template specialization * linbox/field/vector-domain.C: Update according to changes in vector-domain.h 2002-06-04 Dave Saunders * linbox/vector/subvector.h: tweak to have reference semantics to underlying vect. * tests/test-subvector.C: new test for check adapted from Will's test-subvector.cpp * tests/Makefile.am: new target test-subvector, part of check. 2002-06-04 Bradford Hovinen * tests/test-moore-penrose.C (testRandomApply1): s/VectorDomainBase/VectorDomain/ and update * tests/test-common.h (applyPoly): Update use of VectorDomain * tests/test-generic.h (testDenseConsisntency): Update use of VectorDomain (testTranspose): Update use of VectorDomain 2002-05-31 Bradford Hovinen * macros/gmp-check.m4 (min_gmp_version): s/{gmp_prefix}/${gmp_prefix}/ 2002-05-28 Bradford Hovinen * configure.in: AC_OUTPUT linbox-config * Makefile.am (bin_SCRIPTS): Add linbox-config 2002-05-28 Bradford Hovinen * linbox/blackbox/Makefile.am: Add sum.h 2002-05-25 Bradford Hovinen * linbox/blackbox/compose.h (Compose::Compose): Add call to VectorWrapper::ensureDim (class Compose): Make _z mutable 2002-05-25 Bradford Hovinen * tests/Makefile.am (TESTS): Reorder tests in approximate order of dependence (TESTS): Add test-sum 2002-05-19 Bradford Hovinen * linbox/blackbox/sparse0-aux.h (SparseMatrix0Aux::applyTranspose): Don't construct a new vector for y; just fill in existing values * linbox/blackbox/inverse.h (class Inverse): Add _transposeMinpoly for the minimal polynomial of the transpose of the matrix (Inverse::Inverse): Don't construct minimal polynomials; just clear them (Inverse::apply, Inverse::applyTranspose): Construct minimal polynomials if needed * linbox/blackbox/moore-penrose.h (MoorePenrose::MoorePenrose): Reverse order of arguments for call to Submatrix (MoorePenrose::MoorePenrose): Construct _B too * linbox/blackbox/compose.h (Compose::Compose): Don't set _z's size (Compose::apply, Compose::applyTranspose): use VectorWrapper::ensureDim rather than setting _z's size * linbox/blackbox/inverse.h (Inverse::apply, Inverse::applyTranspose): Don't resize the output vector (Inverse::Inverse): Check that the input matrix is square (Inverse::Inverse): Use VectorWrapper::ensureDim rather than _z.resize * linbox/blackbox/Makefile.am (include_HEADERS): Added moore-penrose.h 2002-05-19 Bradford Hovinen * linbox/field/modular.h (class FieldAXPY): Update get () form; remove obsolete forms * linbox/field/vector-domain.C (VectorDomain::dotprod): Fix use of FieldAXPY::get * linbox/solutions/trace.h (trace): Use constRef * linbox/util/field-axpy.h (class FieldAXPY): Remove obsolete get form * linbox/util/vector-factory.h (class VectorFactory): Add interface n(), which returns the dimension of the space from which vectors are being generated * linbox/vector/vector-traits.h (class VectorWrapper): Add method ensureDim (namespace VectorWrapper): Convert this to a namespace and use function specialization * tests/test-moore-penrose.C (main): Switch to field GF(2147483647) by default * tests/test-generic.h (testTranspose): Rename from testTranpose (testTranspose): Use commentator.startIteration * tests/test-moore-penrose.C (testIdentityApply): Ensure w has space for result (buildRandomSparseMatrix): Implement (testRandomApply1): New test * tests/test-trace.C (testDiagonalTrace): Use constRef 2002-05-18 Bradford Hovinen * configure.in: Make disabling shared libraries the default 2002-05-18 Bradford Hovinen * linbox/util/vector-factory.h: Refactor: Create one class StandardBasisFactory, parameterized by vector type, with specializations for dense, sparse map, and sparse associative vectors * linbox/util/commentator.C (Commentator::setMaxDepth, Commentator::setMaxDetailLevel): Implement * linbox/vector/vector-traits.h (class VectorWrapper): Implement 2002-05-17 Bradford Hovinen * examples/.cvsignore: Update 2002-05-17 Bradford Hovinen * linbox/blackbox/submatrix.h (class Submatrix): Add Trait to template parameters and specialize for dense vectors (Submatrix::Submatrix): Check that the row and column dimensions given are valid * linbox/blackbox/sparse0-aux.h: Backed out revision 1.6 (SparseMatrix0Aux::apply): Restore use of _VD.dotprod * linbox/field/vector-domain.h (LinBox): Added specialization for SparseSequence, SparseSequence type * linbox/field/vector-domain.C: Update as per changes in vector-domain.h (VectorDomainBase::mul, VectorDomainBase::mulin): Don't resize and don't invalidate iterators * linbox/field/vector-domain.h (class VectorDomainBase): New class. Pull out all functions from VectorDomain that only need one vector type. * linbox/util/vector-factory.h (RandomDenseVectorFactory::next): Resize input vector * linbox/util/debug.h (PreconditionFailed::PreconditionFailed): Put out a couple of newlines before printing the error message * linbox/util/vector-factory.h (class VectorFactory): Add method reset () * linbox/util/commentator.C (Commentator::startIteration): Implement Include strstream and not cstdio * linbox/util/commentator.h (class Commentator): Add startIteration * macros/ntl-check.m4 (EX_FIELDS_NTL): Define * tests/Makefile.am (test_moore_penrose_SOURCES): New test * tests/test-submatrix.C: Don't include fstream or cstdio (testRandomApply): Use commentator.startIteration rather than forming a new string and calling start (testRandomApply): Put the declaration for report inside the loop and remove the call to indent (testRandomApply): Update report output (main): Don't construct factory2 * tests/.cvsignore: Update 2002-05-14 William J. Turner * linbox/field/archetype.h, envelope.h: changed randIter to RandIter. 2002-05-14 William J. Turner * linbox/randiter/modular.h: Seeded random number generator in constructor. _seed was never used before. 2002-05-07 William J. Turner * linbox/field/ntl-zz_p.h, ntl-ZZ_p.h: modified random generator constructor and creating functions to use NTL functions. 2002-05-07 William J. Turner * linbox/randiter/unparametric.h: static cast added to constructor 2002-04-26 Pascal Giorgi * configure.in, acconfig.h: updating to allow Lidia Library 2002-04-26 Pascal Giorgi * linbox/field/lidia-gfq.h, lidia.h: adding wrapper of extensions fields for Lidia * linbox/field/givaro-gfq.h, givaro-zpz.h: To use these wrappers you need to get a modified version of givaro. You can find these version at this address : http://www.ens-lyon.fr/~pgiorgi/software.html version 3.0.1. * linbox/field/givaro-gfq.h: adding wrapper of extensions fields for Givaro * linbox/field/givaro.h: adding givaro-gfq.h * linbox/field/Makefile.am: adding givaro-gfq.h * linbox/randiter/lidia-gfq.h: adding randiter for lidia gfq field * linbox/randiter/lidia.h: file for all randiter of lidia library * linbox/randiter/Makefile.am: adding the header of Lidia and an EXTRA_DIST variable * macros/givaro-check.m4: adding headers of givaro fields wrappers and the test test-givaro-zpz.h * macros/lidia-check.m4: creating for the library LiDIA * macros/Makefile.am: adding lidia-check.m4 to the EXTRA_DIST * tests/test-givaro-zpz.C: test for prime finites fields of givaro using all type of zpz fields of givaro and an extension field of degree 1 for gfq. * tests/test-lidia-gfq.C: test for Lidia Gfq field. But the Gfq field is tested as a prime field (the extension degree is 1) * tests/test-generic.h: Put in comment the line 56 which is inconsistant. Also make the test for the init/convert function generic for every fields (finite and inifinite fields). 2002-04-25 Zhendong Wan * tests/test-dense-vector-domain.C: test for dense vector domain. 2002-04-24 Pascal Giorgi * linbox/givaro.h: include file for all Givaro wrappers * linbox/lidia.h: include file for all Lidia wrappers * linbox/Makefile.am: adding file givaro.h and lidia.h and adding all Lidia header base 2002-04-24 Pascal Giorgi * linbox/field/givaro-zpz.h, givaro.h: Adding wrappers of primes fields for givaro and his file givaro.h associated. NB: this wrappers is template class which wrapps three sorts of givaro fields. For more information see the file itself. * linbox/field/Makefile.am: adding givaro fields wrapper 2002-04-18 William J. Turner * linbox/vector/subvector.h, subiterator.h: New wrappers for subvector of dense vector. 2002-04-18 William J. Turner * tests/test-subvector.cpp: New partial test program for subvector wrapper class. This needs a lot of work, and is not in the makefile yet. 2002-04-17 Dave Saunders * tweak identity case to copy 2002-04-13 Bradford Hovinen * linbox/field/modular.h (FieldAXPY >): Add form of get where the element in which to store result is also passed 2002-04-13 Bradford Hovinen * linbox/util/Makefile.am (include_HEADERS): Added vector-factory.h * linbox/util/field-axpy.h (class FieldAXPY): Add form of get where the place in which to store the result is passed * tests/test-vector-domain.C (testDenseDotProduct): Convert this to use VectorFactories 2002-04-12 Bradford Hovinen * s/element/Element/ everywhere except in comments (I hope!) * Add a file dummy.C to fool libtool into actually building liblinbox.la * Move debug.[Ch] and error.[Ch] to linbox/util 2002-04-12 William J. Turner * linbox/blackbox/sparse0-aux.h: Made dense vector apply not invalidate iterators 2002-04-12 Bradford Hovinen * linbox/util/commentator.h (class Commentator): Added compatibility layer for Jean-Guillaume's code (class Commentator): Move cnull above protected section to fix crashes on DISABLE_COMMENTATOR * linbox/util/commentator.h: Added null commentator * linbox/util/Makefile.am (include_HEADERS): Put debug.h, error.h here (libutil_la_SOURCES): Put error.C, debug.C here * macros/givaro-check.m4: Fix definition of GIVARO_HEADERS_*, GIVARO_TESTS * tests/test-unparametric-field.C: Rename from test-unparametric-field.cpp 2002-04-11 Bradford Hovinen * Makefile.am: Remove EXTRA_DIST, since both of these files are for CVS developers only 2002-04-11 Bradford Hovinen * linbox/field/modular.h (FieldAXPY >::accumulate): Use -t for overflow check (FieldAXPY >::accumulate): Cast to unsigned when modding out to avoid sign flip problem (FieldAXPY >::get): Cast to unsigned when modding out * tests/test-modular.C (main): Call testFieldAXPY * tests/test-generic.h (testField): Make title const (testFieldAXPY): Add this test * tests/test-diagonal.C (testRandomTranspose): Report diagonal vector used as input * tests/test-scalar-matrix.C: #include "modular.h" (main): Use integers mod 2147483647; update to use Modular interface * tests/.cvsignore: Add test-submatrix * tests/test-submatrix.C (main): Fix banner string * tests/test-diagonal.C (main): Enable printing of detailed messages * tests/test-unparametric-field.cpp (main): * tests/test-modular.C (main): * tests/test-inverse.C (main): * tests/test-minpoly.C (main): * tests/test-diagonal.C (main): * tests/test-rank.C (main): Use GF(2147483647) by default; fix relevant documentation * tests/test-sparse0.C (main): Fix documentation string for default modulus 2002-04-10 Bradford Hovinen * examples/example.C: Update with new Modular signature 2002-04-10 Dave Saunders * linbox/blackbox/scalar-matrix.h: New (simple) black box - sparse vector part not checked. 2002-04-10 Bradford Hovinen * macros/ntl-check.m4: Set NTL_TESTS, NTL_HEADERS_* to empty strings by default and to real data if NTL was found. Call AC_SUBST in all cases Fix check for whether NTL prefix was set * tests/.cvsignore: Add test-unparametric-field; s/test-sparse-matrix/test-sparse0/ 2002-04-10 Dave Saunders * tests/test-scalar-matrix.C: New test for new blackbox. 2002-04-08 Bradford Hovinen * linbox/util/commentator.h (class Commentator): Use std:: namespace for ofstream (class Commentator): Add std:: specifiers for nullstreambuf declarations and cnull 2002-04-08 Pascal Giorgi * macros/gmp-check.m4: Keep the current LD_LIBRARY_PATH * tests/test-generic.h: WARNING: The test of a field is not generic. The test of init and convert functions use a fixed number 49193295. So the test failed if the characteristic is less than this number. 2002-04-05 William J. Turner * linbox/Makefile.am: Install NTL and Givaro wrapper headers only if libraries are installed. 2002-04-05 William J. Turner * linbox/blackbox/Makefile.am: Only install NTL and Givaro wrapper header files if libraries are installed. * linbox/blackbox/sparse0-aux.h: Fixed apply and applyTranspose for sparse vectors. * macros/ntl-check.m4, givaro-check.m4: Only run tests of NTL and Givaro wrappers, and install header files, if libraries are installed. * tests/test-common.h: Fix printVector to print correct number of zeros for sparse sequence vectors. Made functions for testing equality of two vectors of the same type and to test if a vector is the zero vector. These may need some work still. * tests/Makefile.am: Only run tests of NTL and Givaro wrappers if libraries are installed. * tests/test-sparse0.C: Attempted to convert test functions to be generic for the Row and Vector types. These still need more work to be complete. In particular, there still needs to be a function to create a vector with no zero elements. 2002-04-04 William J. Turner * configure.in: removed requirement of givaro 2002-04-04 William J. Turner * linbox/ntl.h: include file for all NTL wrappers. * linbox/blackbox/archetype.h: Added virtual destructor to avoid warning. Removed resize() from apply and applyTranspose. * linbox/blackbox/sparse0-base.h: Fixed comparison between signed and unsigned integers, accessor function to field. * linbox/blackbox/sparse0-aux.h: Fixed constructor from SparseMatrix0Base. 2002-04-04 William J. Turner * linbox/field/Makefile.am: Install NTL and Givaro wrapper header files only if libraries are installed. * linbox/field/ntl.h, ntl-RR.h, ntl-ZZ_p.h, ntl-zz_p.h: Broke NTL field wrappers into separate files. 2002-04-04 Pascal Giorgi * macros/ntl-check.m4, givaro-check.m4: Use GMP_CFLAGS and GMP_LIBS and appending to LD_LIBRARY_PATH, and removed UNSET LD_LIBRARY_PATH at end of file * macros/gmp-check.m4: removed UNSET LD_LIBRARY_PATH at end of file 2002-04-04 William J. Turner * macros/ntl-check.m4: Use GMP_CFLAGS and GMP_LIBS * tests/test-ntl-zz_p.cpp, test-ntl-ZZ_p.cpp, test-ntl-RR.cpp: New tests * tests/test-common.h, test-vector-domain.C: generalized printVector to all vector types. Created areVectorsEqual function. Both need to be generalized to sparse associative vectors. 2002-04-03 William J. Turner * examples/example.C: changed sparse-matrix to sparse0 2002-04-03 William J. Turner * linbox/blackbox/sparse1.h: Original port; needs work! * linbox/blackbox/sparse0*.h: Renamed from sparse-matrix*.h. 2002-04-03 Bradford Hovinen * linbox/field/modular.h (class Modular): Rename from LargeModular, make this a class parameterized on the element type 2002-04-03 William J. Turner * linbox/field/ntl.h: Fixed random iterator random(x) for zz_p 2002-04-03 Bradford Hovinen * linbox/randiter/modular.h (class Modular): Rename from LargeModular; make this a class parameterized on the element type 2002-04-03 William J. Turner * linbox/randiter/unparametric.h: Ported UnparametricRandIter from old module * macros/givaro-check.m4: Copy from gmp-check.m4 and fix for Givaro * macros/ntl-check.m4: Change to version >= 5.0 and C++ namespace * tests/test-unparametric-field.cpp: New test * tests/test-minpoly.C: Changed sparse-matrix to sparse0 * tests/test-sparse0.C: Changed sparse-matrix to sparse0 2002-04-02 Bradford Hovinen * s/*_{abstract|archetype|envelope}/Abstract|Archetype|Envelope/g 2002-04-02 Bradford Hovinen * linbox/blackbox/dense-matrix.h (DenseMatrix::apply): Signedness fix * linbox/blackbox/submatrix.h (class Submatrix): Don't parameterize on the field; add rowdim, coldim (Submatrix::Submatrix): Pass rowdim, coldim; initialize vectors directly * linbox/field/Makefile.am (include_HEADERS): Add ntl.h * linbox/field/vector-domain.C (VectorDomain::axpy): Remove unused iterator k * linbox/util/commentator.C (Commentator::printActivityReport, Commentator::indent) (Commentator::updateActivityReport, Commentator::finishActivityReport): Make i unsigned (MessageClass::checkConfig): Signedness fix * linbox/util/integer/integer-io.C: Return v * tests/test-dense-matrix.C (test*): s/size_t/long/ for parameter n * tests/Makefile.am (TESTS): Add test test-submatrix * tests/test-common.h (printSparseSeqVector, printVector): Signedness fix * tests/test-vector-domain.C (test*): s/size_t/long/ for parameter n * tests/.cvsignore: Added test-det, test-rank 2002-04-01 Bradford Hovinen * Makefile.am (SUBDIRS): Build documentation last 2002-04-01 Bradford Hovinen * linbox/blackbox/transpose.h (Transpose::Transpose): Make A_ptr const (Transpose::Transpose): Use Transpose, not Compose for copy constructor * linbox/blackbox/compose.h (Compose::apply, Compose::applyTranspose): Declare local intermediate vector, since it was not compiling (for what reason I do not know) with the class member * linbox/solutions/rank.h: #include blackbox-container.h (rank): Compilation fixes * linbox/solutions/det.h: #include blackbox-container.h * tests/test-det.C (test*): Supply iterations to commentator.start * tests/Makefile.am (TESTS): Add test test-rank 2002-03-30 Bradford Hovinen * linbox/blackbox/compose.h (Compose::Compose): Use const pointers for inputs (Compose::Compose): Initialize _z directly 2002-03-30 Bradford Hovinen * linbox/solutions/det.h (det): Compilation fixes 2002-03-29 Bradford Hovinen * tests/test-generic.h (testDenseConsisntency): New test 2002-03-28 Bradford Hovinen * Makefile.am (EXTRA_DIST): Typo fix 2002-03-28 Bradford Hovinen * linbox/blackbox/dense-matrix.h (DenseMatrix::clone): Implement nontrivially (DenseMatrix::DenseMatrix): Implement copy constructor * linbox/util/commentator.C (Commentator::Commentator): Set default max depth for errors and warnings to 10; set max detail to 3 (Commentator::registerMessageClass): Accept parameters max_depth and max_level for initial configuration of message class * tests/test-inverse.C (main): Set maximum depth on internal descriptions to 3 (testDiagonalInverse): Add this test (main): Disable Hilbert inverse test pending test of Hilbert black box * tests/Makefile.am (test_large_modular_SOURCES): s/test-field-common/test-generic/ * tests/test-large-modular.C: Update * tests/test-field-common.h: Obsolete now; remove * tests/test-field-common.h (testField): Move to test-generic.h * tests/test-common.[Ch] (test_header, test_trailer): Remove * tests/test-field-common.h (isPower): Move to test-common.c/.h 2002-03-27 Bradford Hovinen * linbox/util/commentator.h (Commentator::Activity::Activity): Initialize _progress to 0 * linbox/util/commentator.C (Commentator::Commentator): Initialize cnull (Commentator::Commentator): Kill customization of BRIEF_REPORT (MessageClass::dumpConfig): Implement. Dumps the state of this MessageClass (Commentator::updateActivityReport): #if out estimated time * linbox/util/commentator.h (class Commentator): Make cnull no longer static * linbox/util/commentator.C (MessageClass::MessageClass): Accept max_depth and max_level parameters (Commentator::progress): Remove redundant isPrinted check (MessageClass::checkConfig): Return false if we get all the way through the loop 2002-03-27 Bradford Hovinen * tests/test-inverse.C (test*): Use commentator, kill report parameter * tests/test-generic.h (testTranpose): Use commentator, kill report parameter * tests/test-diagonal.C (test*): Use commentator, kill report parameter * tests/test-minpoly.C (test*): Use commentator, kill report parameter * tests/test-large-modular.C (main): Kill report * tests/test-sparse-matrix.C (test*): Use commentator, kill report parameter * tests/test-dense-matrix.C (testVandermonde, testIdentity): Use commentator, kill report parameter 2002-03-26 Bradford Hovinen * configure.in: Add default CXXFLAGS 2002-03-26 Bradford Hovinen * linbox/util/commentator.[Ch]: Complete rewrite * tests/test-*.C (main): Fix argument list * tests/test-large-modular.C (main): Update; add Dave Saunders to credits * tests/test-field-common.h (test_field): Rename to testField (testField): Remove report parameter; rename iters as iterations (testField): Fix indentation (testField): Use commentator 2002-03-24 Bradford Hovinen * linbox/algorithms/massey-domain.h (class MasseyDomain): Remove commentator; use global commentator instead. Update 2002-03-24 Bradford Hovinen * tests/test-common.C (parseArguments): Remove report argument (parseArguments): Use commentator to set default report file * tests/test-vector-domain.C (testDenseDotProduct): Use commentator 2002-03-19 Bradford Hovinen * linbox/blackbox/dense-matrix.h (class DenseMatrix): Use VectorDomain rather than MatrixDomain; typedef Vector and use it throughout (DenseMatrix::setEntry): Implement (DenseMatrix::rowdim, DenseMatrix::coldim): Fix signatures (DenseMatrix::clone): Define this; implementation deferred (DenseMatrix::DenseMatrix): Accept field and build VectorDomain object 2002-03-19 Bradford Hovinen * tests/test-field-common.h: Prevent multiple inclusion * tests/Makefile.am (TESTS): Beatify listing; put test-large-modular at top 2002-03-18 Bradford Hovinen * tests/test-diagonal.C (testRandomTranspose): Add this test * tests/test-common.h (applyPoly, multiEvalPoly): Return resulting vector (interpolatePoly): Implement * tests/Makefile.am (TESTS): Add test-dense-matrix 2002-03-15 Bradford Hovinen * tests/test-inverse.C (testVandermondeInverse): New test; construct the inverse of a Vandermonde matrix and check that it behaves correctly * tests/test-common.h (applyPoly): Use VectorDomain; typedef Vector to reduce verbosity (multiEvalPoly): Implement 2002-03-12 Bradford Hovinen * CHANGED-INTERFACES: Updated text * TODO: Updates 2002-03-12 Bradford Hovinen * examples/example.C: Update to new interface * linbox/blackbox/sparse-matrix-aux.h (LinBox): Rename references to MatrixDomain to VectorDomain (apply): Use vector domain dotprod * linbox/blackbox/inverse.h (LinBox): Use matrix domain vector axpy (LinBox): Compute the negative of the inverse of the constant coefficient first, then multiply through by that (Inverse): Rename MatrixDomain _MD to VectorDomain _VD * linbox/field/large-modular.h (LinBox): Rename ParamModular to LargeModular * linbox/field/Makefile.am (include_HEADERS): Rename param-modular.h to large-modular.h * linbox/field/vector-domain.[Ch]: Rename references to MatrixDomain to VectorDomain * linbox/field/Makefile.am (include_HEADERS): Rename matrix-domain.* to vector-domain.* * linbox/field/matrix-domain.h (LinBox): Add scalar-vector multiplication * linbox/field/matrix-domain.C (LinBox): Use FieldAXPY for dot products (MatrixDomain::axpy): Remember to increment i in the last loop (LinBox): Use axpy and axpyin when possible (LinBox): Specialize everything using MatrixDomainType rather than MatrixDomainSimpleType * linbox/randiter/large-modular.h: Rename ParamModularRandIter to LargeModularRandIter * linbox/randiter/Makefile.am (include_HEADERS): Rename param-modular.h to large-modular.h * tests/test-*.C: Update * tests/.cvsignore: Update * tests/test-vector-domain.C: Rename references to MatrixDomain to VectorDomain * tests/Makefile.am (test_vector_domain_SOURCES): Rename test-matrix-domain to test-vector-domain * tests/test-matrix-domain.C (testSparseAXPY, testDenseAXPY): Add these tests 2002-03-11 Bradford Hovinen * linbox/field/matrix-domain.C (LinBox): Remove precondition checks for sparse axpy (LinBox): Check that i has not gone past the end of y in the loop 2002-03-06 Bradford Hovinen * linbox/field/matrix-domain.h (LinBox): Remove definitions that derive from the field class; they are not necessary right now 2002-02-28 Bradford Hovinen * TODO: Added notes here 2002-02-28 Bradford Hovinen * linbox/field/matrix-domain.h (LinBox): Remove extraneous template specialization * linbox/field/matrix-domain.C (LinBox): Use _F.init to initialize field elements * linbox/field/matrix-domain.h: #include vector-traits.h * tests/test-common.h (printSparseSeqVector): Implement * tests/test-matrix-domain.C: Added this test 2002-02-27 Bradford Hovinen * doc/Makefile.am (SUBDIRS): Add $({DOCPLUSPLUS|TEX}_SUBDIRS) 2002-02-27 Bradford Hovinen * configure.in: Added doc/{html|tex}/Makefile; added call to check for Doc++; Add a check for latex and only build latex documentation if that is present (TEX_SUBDIRS): Make sure this gets included even if Doc++ isn't found * examples/example.C (main): Comment alignment fix * linbox/*/*.dxx: Update paths * Added missing *-wrappers.dxx * linbox/*/*.dxx: Update paths; add missing .dxx files * linbox/field/matrix-domain.h (LinBox): Add specialization for SparseSequence vectors 2002-02-20 Bradford Hovinen * tests/Makefile.am (noinst_PROGRAMS): Use $(TESTS) 2002-02-13 Bradford Hovinen * HACKING: Update information on directory structure * configure.in: Properly quote error message strings Use exit status 1 rather than -1 on error * HACKING: Added section with checklists for adding header files and tests to Linbox. * configure.in: Print error message if GMP was not found * HACKING: Update text (http): Added a section on having the right development tools and added some information on autogen.sh/configure options * CHANGED-INTERFACES: Update text 2002-02-09 Bradford Hovinen * COPYING: Copy over LGPL 2002-02-08 Bradford Hovinen * all: s/element_/Element_/g 2002-02-08 Saunders * examples/Makefile.am: change load order 2002-02-08 Bradford Hovinen * linbox/blackbox/inverse.h: Update #include vector-traits.h (Inverse): Correctly instantiate minpoly Include minpoly.h (class Inverse): Make _z mutable 2002-02-08 Saunders * macros/gmp-check.m4: set LD_LIBRARY_PATH 2002-02-08 Bradford Hovinen * macros/*-check.m4: Unset *_{CFLAGS|LIBS} if the library was not found Invoke found macro only if version check succeeded Invoke not found macro if version check failed 2002-02-08 Saunders * tests/Makefile.am: change link order. 2002-02-08 Bradford Hovinen * tests/test-inverse.C (main): Use prevprime(2^32) for default modulus (main): Fix banner * tests/test-diagonal.C (main): Use prevprime(2^32) for default modulus * tests/test-sparse-matrix.C (main): Use 101 for default modulus * tests/test-minpoly.C (main): Use prevprime(2^32) for default modulus * tests/Makefile.am (TESTS): Added test test-inverse 2002-02-07 Bradford Hovinen * tests/test-sparse-matrix.C (main): Use GF(65521) by default * tests/test-minpoly.C (main): Use GF(65521) by default * tests/test-diagonal.C (main): Use GF(65521) by default * tests/Makefile.am (TESTS): Added test test-diagonal * tests/test-sparse-matrix.C: Don't #include minpoly.h 2002-02-04 Bradford Hovinen * configure.in (AC_OUTPUT): Add examples/data/Makefile 2002-02-04 Bradford Hovinen * configure.in (CFLAGS): Make sure all CFLAGS variables make it in to compilations (CXXFLAGS): s/CFLAGS/CXXFLAGS/ * Makefile.am (SUBDIRS): Put examples last in the list * linbox/blackbox/sparse-matrix-aux.h (apply): Initialize *y_iter to 0 before looping * macros/ntl-check.m4: Correct check in error message * macros/*.m4: Remove setting LD_LIBRARY_PATH, etc. * tests/test-sparse-matrix.C (testNilpotentApply): Reset even with every iteration * tests/test-minpoly.C (testNilpotentMinpoly): Fix test of correctness * tests/test-common.h (printPolynomial): Write 0 for the zero polynomial (printPolynomial): Make sure 1 polynomial gets printed correctly * tests/test-minpoly.C (testIdentityMinpoly): Swap coefficients in the test * tests/test-minpoly.C (main): Update banner * tests/test-common.h (applyPoly): Implement; copy from linbox/blackbox/inverse.h * tests/test-sparse-matrix.C: Move minpoly tests to test-minpoly * tests/Makefile.am (TESTS): Add test test-minpoly 2002-02-03 Bradford Hovinen * */*.{C|h|inl}: Change Element to element, Integer to integer * */*.{C|h|inl}: Updated header comments to reflect correct filename locations * */.cvsignore: Added/updated .cvsignore files * configure.in: Add AC_PROG_CC, AC_PROG_RANLIB for building static libraries Add AM_PROG_LIBTOOL * */Makefile.am: Added infrastructure for building static library liblinbox.a so that we can avoid symbol collisions 2001-12-31 Bradford Hovinen * HACKING: Added documentation on coding style, fleshed out algorithms a bit linbox-1.7.0/HACKING000066400000000000000000000001621415606734300140110ustar00rootroot00000000000000Please go to http://www.linalg.org/developer.html (or ./doc/install-dev.html) ================== The Linbox Team linbox-1.7.0/Makefile.am000066400000000000000000000065471415606734300150730ustar00rootroot00000000000000# Copyright (c) 2010 the LinBox group # # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ ACLOCAL_AMFLAGS = -I macros SUBDIRS=linbox benchmarks tests interfaces doc examples pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = linbox.pc # include_HEADERS=linbox-config.h # I intend to pare down the target "check" so as to be a smaller check used # at installation time with a focus on confirming that dependencies on # other packages and compilation environment are in order. In contrast, the # target "fullcheck" should become as exhaustive as possible to serve # developers for regression testing. -bds 2011Feb ...also benchmarks will be. # Fullcheck provides a full check for regression testing purposes. fullcheck: (${MAKE} ; cd tests; ${MAKE} fullcheck ) ${MAKE} examples docs:doc/linbox-html/index.html doc/linbox-html/index.html: (cd doc; ${MAKE} docs) docs_dev:doc/linbox-dev-html/pages.html doc/linbox-dev-html/pages.html: (cd doc; ${MAKE} docs_dev) examples: (cd examples; ${MAKE} examples) benchmarks: (cd benchmarks; ${MAKE} benchmarks) perfpublisher: benchmarks/perfpublisher tests/perfpublisher benchmarks/perfpublisher: (cd benchmarks; ${MAKE} perfpublisher) tests/perfpublisher: (cd tests; ${MAKE} perfpublisher) .PHONY:examples benchmarks bin_SCRIPTS=linbox-config bundled: sh linbox-auto-install.sh uninstall-hook: (test -d "$(includedir)/linbox" && rmdir "$(bindir)" \ "$(libdir)" \ "$(mandir)/man1" \ "$(mandir)" \ "$(includedir)/linbox/algorithms/gauss" \ "$(includedir)/linbox/algorithms/IML" \ "$(includedir)/linbox/algorithms/matrix-blas3" \ "$(includedir)/linbox/algorithms" \ "$(includedir)/linbox/blackbox" \ "$(includedir)/linbox/element" \ "$(includedir)/linbox/ring/modular" \ "$(includedir)/linbox/ring/ntl" \ "$(includedir)/linbox/field/" \ "$(includedir)/linbox/kaapi" \ "$(includedir)/linbox/matrix/sparsematrix" \ "$(includedir)/linbox/matrix/densedatrix" \ "$(includedir)/linbox/matrix/matrixdomain" \ "$(includedir)/linbox/matrix/sliced3" \ "$(includedir)/linbox/matrix" \ "$(includedir)/linbox/randiter" \ "$(includedir)/linbox/ring" \ "$(includedir)/linbox/solutions/solve" \ "$(includedir)/linbox/solutions/echelon" \ "$(includedir)/linbox/solutions" \ "$(includedir)/linbox/switch" \ "$(includedir)/linbox/util/formats" \ "$(includedir)/linbox/util" \ "$(includedir)/linbox/vector" \ "$(includedir)/linbox/polynomial" \ "$(includedir)/linbox" \ "$(datarootdir)/" \ "$(includedir)" ) || true git: git commit -a; git pull; git push VERSION=1.7.0 EXTRA_DIST= \ linbox-auto-install.sh \ README.md #incremente-versions linbox-1.7.0/README.md000066400000000000000000000046261415606734300143120ustar00rootroot00000000000000# The Linbox Library [![Build Status](https://ci.inria.fr/linbox/buildStatus/icon?job=LinBox)](https://ci.inria.fr/linbox/job/LinBox/) ## Purpose The Linbox library provides functionalities for exact linear algebra. See doc/mainpage.doxy for more info. ## Auto-installer for quick install Download [linbox-auto-install.sh](https://github.com/linbox-team/linbox/raw/master/linbox-auto-install.sh), make it executable, and run it! To get a list of options: ``` ./linbox-auto-install.sh --help ``` Requirements: - GNU software building tools (e.g. Debian packages `autotools-dev` and `dh-autoreconf`), - possibly the `gfortran` compiler, if Fortran-based BLAS (such as OpenBLAS) are built via this script. Examples: For instance, on a machine with an installation of GMP and OpenBLAS in the standard search paths: ``` ./linbox-auto-install.sh --stable=yes --make-flags="-j 3" --with-blas-libs="-lopenblas" ``` This script will install stable versions of Givaro, fflas-ffpack, and then LinBox, in the default path (`/tmp/`). To change this default folder, use the `--prefix` option: ``` ./linbox-auto-install.sh --prefix="/path/to" ``` This will install the development versions of Givaro, fflas-ffpack, and then LinBox, in the folder `/path/to/`. Here is another example fetching and installing the latest versions of GMP, Givaro, OpenBLAS, fflas-ffpack and then LinBox. ``` ./linbox-auto-install.sh --enable-openblas=yes --enable-gmp=yes ``` ## Installation In brief: ``` ./configure make make install ``` See INSTALL and `./configure --help` for more installation information. Availability: from [github.com/linbox-team](https://github.com/linbox-team/). Requirement: FFLAS-FFPACK Required by FFLAS-FFPACK: - any BLAS (Fortran or C): e.g. ATLAS, OpenBLAS, BLIS, ... - Givaro - GMP ## Optional Dependencies - NTL, - IML, - FLINT, See doc/install\*html for details. This library requires the GNU C++ compiler (gcc-4.3 or newer) or any compiler supporting advanced template features. ## Authors The LinBox group (see AUTHORS file for a list of contributors). ## Citing LinBox If your research depends on the LinBox library, please consider citing the project as ``` @manual{linbox, title = {{LinBox}}, author = {The {LinBox} group}, edition = {v1.6.3}, year = {2019}, url = {http://github.com/linbox-team/linbox} } ``` ## Contact and discussions Corrections, suggestions and comments to linbox-use@googlegroups.com linbox-1.7.0/RELEASE-INSTRUCTIONS000066400000000000000000000027701415606734300157760ustar00rootroot00000000000000Instructions for making a LinBox release: 1. Run 'svn up ' to make sure you are fully up to date and on the HEAD branch [1] 2. Update the version number in Makefile.am next to 'VERSION = ', and in configure.in:3 3. Run 'make distcheck' on your local copy of LinBox. If there are any problems, fix them and commit the fixes to CVS. Usually problems will be things like header files that are not being installed, but should be. Make sure 'make distcheck' runs once without having any errors before moving onto the next step. Also, record all of the changes you make in ChangeLog. 4. Add a ChangeLog entry for Makefile.am with the text 'New version ' where is the version you are releasing. 5. Make sure everything in your local copy of LinBox is committed. In particular, either commit or eliminate anything from step 1 that was marked modified. 6. Run 'make dist' (or 'make distcheck') so that the last ChangeLog entry is included in your tarball. 7. Copy the tarball produced in step 6 to the web server. 8. Update the LinBox web site with information on the new release -- mention it in news.html and update the latest version information in index.html and download.html [1] Of course, this assumes that you want to release from the head branch. If HEAD represents the development version and you actually want to release from a stable branch, you should use cvs up -dP -r linbox- where is the version identifier in the stable branchlinbox-1.7.0/autogen.sh000077500000000000000000000010641415606734300150250ustar00rootroot00000000000000#!/bin/sh -ex srcdir=`dirname $0` test -z "$srcdir" && srcdir=. # Recover command line, with double-quotes CMDLINE="" for arg in "$@" do WHO="`echo $arg | cut -d'=' -f1`" WHAT="`echo $arg | cut -s -d'=' -f2`" if test "x$WHAT" = "x"; then CMDLINE="$CMDLINE $WHO" else CMDLINE="$CMDLINE $WHO=\"$WHAT\"" fi done echo "$0 $CMDLINE" > $srcdir/autogen.status chmod +x $srcdir/autogen.status # run autoconf, libtoolize, automake, etc. autoreconf -vif $srcdir # run configure script if test x$NOCONFIGURE = x; then $srcdir/configure "$@" fi linbox-1.7.0/benchmarks/000077500000000000000000000000001415606734300151405ustar00rootroot00000000000000linbox-1.7.0/benchmarks/BenchmarkFile.h000066400000000000000000000047711415606734300200140ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by AJS * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/BenchmarkFile.h * @ingroup benchmarks * @brief */ #ifndef __LINBOX_BENCHMARKFILE_H #define __LINBOX_BENCHMARKFILE_H #include #include #include #include namespace LinBox { class BenchmarkFile { public: typedef std::map::iterator MetadataIterator; BenchmarkFile() : numFields_(0) {} ~BenchmarkFile(); void write(std::ostream& out); void addMetadata(const std::string& key,const CSValue& val); MetadataIterator metadataBegin(); void addDataField(const std::string& fieldName,const CSValue& val); void setType(const std::string& fieldName, const std::string& type); void pushBackTest(); static CSDate getDateStamp(); static std::string getDateFormat(); protected: typedef std::vector TestLine; typedef std::map MetadataMap; typedef std::map FieldPosMap; typedef std::map TypeMap; void printMetadata(std::ostream& out); void printFieldTitles(std::ostream& out); void printContents(std::ostream& out); void printCommaVector(std::ostream& out,const std::vector& vec); void freeTestLine(TestLine& line); MetadataMap metadata_; TypeMap typeMap_; int numFields_; FieldPosMap fields_; TestLine curTest_; std::vector allTests_; }; } #include "BenchmarkFile.inl" #endif // __LINBOX_BENCHMARKFILE_H // Local Variables: // mode: C++ // tab-width: 4 // indent-tabs-mode: nil // c-basic-offset: 4 // End: // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.7.0/benchmarks/BenchmarkFile.inl000066400000000000000000000106301415606734300203360ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by AJS * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/BenchmarkFile.inl * @ingroup benchmarks * @brief */ #ifndef __LINBOX_BENCHMARKFILE_INL #define __LINBOX_BENCHMARKFILE_INL #include "linbox/util/debug.h" #include #include #include namespace LinBox { void BenchmarkFile::printCommaVector(std::ostream& out,const std::vector& vec) { bool first=true; for (int i=0;iprint(out); } } out << std::endl; } void BenchmarkFile::printMetadata(std::ostream& out) { typedef MetadataMap::iterator MapIT; for (MapIT it=metadata_.begin();it!=metadata_.end();++it) { out << it->first << ", "; it->second->print(out); out << std::endl; } typedef TypeMap::iterator TypeMapIT; if (!(typeMap_.empty())) { out << "types"; for (TypeMapIT it=typeMap_.begin();it!=typeMap_.end();++it) { out << ", (" << it->first << "," << it->second << ")"; } out << std::endl; } out << "end, metadata" << std::endl << std::endl; } void BenchmarkFile::printFieldTitles(std::ostream& out) { std::vector fieldVec(numFields_); typedef FieldPosMap::iterator MapIT; for (MapIT it=fields_.begin();it!=fields_.end();++it) { fieldVec[it->second]=new CSString(it->first); } printCommaVector(out,fieldVec); for (int i=0;isecond; } } BenchmarkFile::MetadataIterator BenchmarkFile::metadataBegin() { return metadata_.begin(); } void BenchmarkFile::addMetadata(const std::string& key,const CSValue& val) { metadata_.insert(std::pair(key,val.clone())); } void BenchmarkFile::setType(const std::string& fieldName, const std::string& type) { typeMap_[fieldName]=type; } void BenchmarkFile::addDataField(const std::string& fieldName,const CSValue& val) { typedef FieldPosMap::iterator FieldPosMapIT; int fieldPos; FieldPosMapIT it = fields_.find(fieldName); if (it==fields_.end()) { fields_.insert(std::pair(fieldName,numFields_)); fieldPos=numFields_; ++numFields_; curTest_.resize(numFields_); } else { fieldPos=it->second; } curTest_[fieldPos]=val.clone(); } void BenchmarkFile::pushBackTest() { allTests_.push_back(curTest_); curTest_.clear(); curTest_.resize(numFields_); } CSDate BenchmarkFile::getDateStamp() { time_t rawTime; struct tm *timeInfo; srand ((unsigned)time (&rawTime)); timeInfo=localtime(&rawTime); return CSDate(*timeInfo); } std::string BenchmarkFile::getDateFormat() { return "%a %m/%d %H/%M/%S %Y"; } } #endif // __LINBOX_BENCHMARKFILE_INL // Local Variables: // mode: C++ // tab-width: 4 // indent-tabs-mode: nil // c-basic-offset: 4 // End: // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.7.0/benchmarks/CSValue.h000066400000000000000000000061251415606734300166170ustar00rootroot00000000000000/* Copyright (C) 2013 LinBox * Written by AJS * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/CSValue.h * @ingroup benchmarks * @brief */ #ifndef __LINBOX_CSVALUE_H #define __LINBOX_CSVALUE_H #include #include #include #include #include namespace LinBox { class CSValue { public: virtual ~CSValue() {} virtual void print(std::ostream& out) const =0; virtual CSValue* clone() const =0; virtual int type() const =0; }; #define CSV_STRING_TYPE 1 #define CSV_INT_TYPE 2 #define CSV_DOUBLE_TYPE 3 #define CSV_DATE_TYPE 4 std::ostream& operator<< (std::ostream& out, const CSValue& v) { v.print(out); return out; } class CSString : public CSValue { public: CSString() {} CSString(const std::string& e) : elt_(e) {} std::string getVal() const {return elt_;} void print(std::ostream& out) const {out << elt_;} CSValue* clone() const {return new CSString(elt_);} int type() const {return CSV_STRING_TYPE;} protected: std::string elt_; }; class CSInt : public CSValue { public: CSInt() : elt_(0) {} CSInt(const int e) : elt_(e) {} int getVal() const {return elt_;} void print(std::ostream& out) const {out << elt_;} CSValue* clone() const {return new CSInt(elt_);} int type() const {return CSV_INT_TYPE;} protected: int elt_; }; class CSDouble : public CSValue { public: CSDouble() : elt_(0.0) {} CSDouble(const double e) : elt_(e) {} double getVal() const {return elt_;} void print(std::ostream& out) const {out << elt_;} CSValue* clone() const {return new CSDouble(elt_);} int type() const {return CSV_DOUBLE_TYPE;} protected: double elt_; }; class CSDate : public CSValue { public: CSDate() {} CSDate(const struct tm& time) : elt_(time) {} struct tm getVal() const {return elt_;} void print(std::ostream& out) const { std::string timeStr(asctime(&elt_)); timeStr.erase(timeStr.size()-1); out << timeStr; } CSValue* clone() const {return new CSDate(elt_);} int type() const {return CSV_DATE_TYPE;} protected: struct tm elt_; }; } #endif // __LINBOX_CSVALUE_H // Local Variables: // mode: C++ // tab-width: 4 // indent-tabs-mode: nil // c-basic-offset: 4 // End: // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.7.0/benchmarks/Makefile.am000066400000000000000000000102021415606734300171670ustar00rootroot00000000000000# Copyright (c) 2011 the LinBox group # Brice Boyer (briceboyer) # ========LICENCE======== # This file is part of the library LinBox. # # LinBox is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # ========LICENCE======== #/ SUBDIRS=data matrix AM_CPPFLAGS=-I$(top_srcdir) -DDISABLE_COMMENTATOR -DLinBoxSrcOnly AM_CXXFLAGS=$(LINBOX_CXXFLAGS) $(FFLAS_FFPACK_CFLAGS) $(LINBOX_DEPS_CFLAGS) LDADD=$(top_builddir)/linbox/liblinbox.la $(LINBOX_DEPS_LIBS) $(FFLAS_FFPACK_LIBS) $(LINBOX_LDFLAGS) $(XML_LIBS) AM_LDFLAGS=.libs/libbenchmarks.la pkgincludesubdir=$(pkgincludedir)/benchmarks noinst_LTLIBRARIES=libbenchmarks.la libbenchmarks_la_SOURCES= benchmark.C libbenchmarks_la_LDFLAGS= PERFPUBLISHERFILE=benchmarks-report.xml BENCH_BASIC= \ benchmark-example\ benchmark-fft\ benchmark-polynomial-matrix-mul-fft \ benchmark-dense-solve\ benchmark-order-basis \ benchmark-solve-cra FAILS= \ benchmark-ftrXm \ benchmark-ftrXm \ benchmark-crafixed TODO= \ benchmark-matmul \ benchmark-spmv \ benchmark-fields # BENCH_ALGOS= \ TODO= \ benchmark-solve \ benchmark-rank \ benchmark-det \ benchmark-nullspace # BENCH_FORMS= \ TODO= \ benchmark-lu benchmark-echelon \ benchmark-hermite \ benchmark-smith EXTRA_PROGRAMS= $(BENCH_BASIC) pkginclude_HEADERS = \ optimizer.h \ benchmark-utils.h \ benchmark-utils.C \ benchmark-metadata.h \ benchmark-metadata.C \ benchmark.h \ benchmark.C \ benchmark.inl EXTRA_DIST = \ perfpublisher.sh \ benchmark.doxy CLEANFILES= $(EXTRA_PROGRAMS) $(PERFPUBLISHERFILE) benchmarks: ${EXTRA_PROGRAMS} ### BASE BENCHMARK ### # benchmark_fgemm_SOURCES = benchmark-fgemm.C # benchmark_ftrXm_SOURCES = benchmark-ftrXm.C # benchmark_crafixed_SOURCES = benchmark-crafixed.C benchmark_example_SOURCES = benchmark-example.C benchmark_order_basis_SOURCES = benchmark-order-basis.C benchmark_fft_SOURCES = benchmark-fft.C benchmark_polynomial_matrix_mul_fft_SOURCES = benchmark-polynomial-matrix-mul-fft.C benchmark_dense_solve_SOURCES = benchmark-dense-solve.C benchmark_solve_cra_SOURCES = benchmark-solve-cra.C # benchmark_matmul_SOURCES = benchmark-matmul.C # benchmark_spmv_SOURCES = benchmark-spmv.C # benchmark_fields_SOURCES = benchmark-fields.C ### BENCHMARK ALGOS and SOLUTIONS ### # benchmark_solve_SOURCES = benchmark-solve.C # benchmark_rank_SOURCES = benchmark-rank.C # benchmark_det_SOURCES = benchmark-det.C # benchmark_nullspace_SOURCES = benchmark-nullspace.C ### BENCHMARK MATRIX FACTORISATIONS ### # benchmark_lu_SOURCES = benchmark-lu.C # benchmark_echelon_SOURCES = benchmark-echelon.C # benchmark_hermite_SOURCES = benchmark-hermite.C # benchmark_smith_SOURCES = benchmark-smith.C cleanup : (cd data ; make cleanup) LINBOX=@prefix@ LINBOX_BIN=@bindir@ # Perfpublisher script interaction - AB 2014/12/11 perfpublisher: $(top_srcdir)/tests/perfpublisher.sh "$(PERFPUBLISHERFILE)" "$(EXTRA_PROGRAMS)" "$(CXX)" mv $(PERFPUBLISHERFILE) .. make clean mv ../$(PERFPUBLISHERFILE) . # for compilation of new benchmarks %:%.C $(CXX) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPTFLAGS) ${INCLUDES} $(AM_CPPFLAGS) $*.C -o $@ $(LDFLAGS) $(LDADD) %:%.cpp $(CXX) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPTFLAGS) ${INCLUDES} $(AM_CPPFLAGS) $*.cpp -o $@ $(LDFLAGS) $(LDADD) linbox-1.7.0/benchmarks/README000066400000000000000000000104521415606734300160220ustar00rootroot00000000000000These notes stem from a discussion by Johnson, Harrison, Yuhasz, Youse, Stachnik , Saunders at UDel June 2013. It is proposed that experiment data files be csv files containing a metadata sec tion followed by a measurement section. The idea is that (1) each experimental run will make such a file (or add to such a file) and (2) each plot and table generation can then be done from such files as input. The metadata is a series of key-value pairs ending in one whose key is "end" This is followed by a line containing a list of keys (column labels) and then some number of lines recording experiments. These are lists of values corresponding to the column labels. The value "-" denotes "missing" or "undefined". When value v in a "k,v" pair is another keyword, it means that k's value is the same as the other keyword's. Blank lines are ignored. C++ comment conventions are followed (use of "//" and "/* ... */"). This is for "commented out" text and should not be confused with values of the keyword "comment". Metadata reveals key values that are held constant in the experiments. The column labels are the keys whose values will vary from experiment to experiment.i Experiment data lines record the key values for the column labels of a given experiment. For example: ------------------ comment, exploration of foo parallel and blocked variants problem, foo date, 2013June21 author, joe linboxer\, bds rowdim, 10000 //coldim, rowdim coldim, 20000 blockcoldim, blockrowdim matrix class, randomMat field, Givaro::Modular(101) flops formula, (n*nnz)/time comment, no parsing guidance is offered yet for mflops formula end, metadata time, nnz, blockrowdim, threads, algorithm, comment 0.001, 10000, 26, 1, block-coppersmith, blockdim is about 2lg(dim) 1.1e-5, 10000, 100, 48, block-coppersmith-omp, blockdim is sqrt(dim) 1.1e-5, 100000, -, 1, matrix-build, - ... ------------------ For consistency and particularly for generating reports on data from multiple data files, the following key name conventions should be followed. Other key names should be used only when one of these does not fit. ----- // algorithm properties problem - the algorithmic task being measured (eg. solveNonsingular). algorithm - a specific implementation of a method to solve the problem (eg. solve(Method::Wiedemann) or solve-omp). time - the runtime for the experiment task flops - the nominal operation count for the task. The flops formula should be made clear in the metadata. blockrowdim - row blocking used blockcoldim - col blocking used ... // domain of computation properties field - arithmetic domain class used (when it is a field) (eg. Givaro::Modular). ring - arithmetic domain class used (eg. PID_integer). matrix domain - arithmetic domain used (ring or field extended by matrix ops) (eg. BlasMatrixDomain). modulus - characteristic of the field or ring (eg. 200000000000003). exponent - exponent of the modulus. ... // environment-of-computation properties date - the date of the experiment(s) (eg. 2013June22). author - name or list of names of the person(s) running the experiments. computer - computer description (cores, mem, cache, speeds, etc.). threads - number of threads used. ... // matrix properties (when problem has a key matrix as data) matrix class - blackbox template or class (eg. SparseMatrix or BlasMatrix or MatrixDomain::Submatrix). matrix constructor - eg. randomMat. // Properties of the constructed instance (depends on matrix class and constructor rowdim - coldim - nnz - rank - Pesumably one knows from context whether this is a parameter or computed result. det - Pesumably one knows from context whether this is a parameter or computed result. ... ----- Further remarks. Other shared keywords can be added... Some keywords, whose values are strings, should have a standardized list of possible values... For convenience we could have a file of some keyword constants. For example, some keywords which are machine names with corresponding value a description, eg., "hmrg, Dell Poweredge 2650 2-Xeon (3.2GHz)". Then a data file's metadata can include "computer, hmrg" for short. @ can be the "value of" operator, as in "computer, @hmrg", wherein the value expands to the value of hmrg. The experiment lines (below metadata and column labels) should be readable by gnuplot (this is a constraint on number and string representations). linbox-1.7.0/benchmarks/benchmark-dense-solve.C000066400000000000000000000171611415606734300214260ustar00rootroot00000000000000/* * benchmarks/benchmark-dense-solve.C * * Copyright (C) 2019 The LinBox group * Author: J-G Dumas * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /**\file benchmarks/benchmark-dense-solve.C \brief Solving dense linear system over Q or Zp. \ingroup benchmarks */ #include "linbox/linbox-config.h" #include #include "linbox/algorithms/vector-fraction.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/solutions/methods.h" #include "linbox/solutions/solve.h" #include "linbox/util/args-parser.h" #include "linbox/util/matrix-stream.h" #include #ifdef _DEBUG #define _BENCHMARKS_DEBUG_ #endif using namespace LinBox; using Ints = Givaro::ZRing; using Mods = Givaro::Modular; using VectorFractionInts = VectorFraction; namespace { struct Arguments { Givaro::Integer q = -1; int nbiter = 3; int n = 500; int bits = 10; int seed = -1; std::string dispatchString = "Auto"; std::string methodString = "Auto"; }; template double& setBitsize(double& size, const Givaro::Integer& q, const Vector& v) { return size = Givaro::logtwo(q); } template <> double& setBitsize(double& size, const Givaro::Integer& q, const VectorFractionInts& v) { return size = Givaro::logtwo(v.denom); } } template void benchmark(typename Field::RandIter &randIter, std::array& timebits, Arguments& args, MethodBase& method) { const Field &F = randIter.ring(); #ifdef _BENCHMARKS_DEBUG_ std::clog << "Setting A ... " << std::endl; #endif DenseMatrix A(F, args.n, args.n); DenseVector B(F, A.rowdim()); Timer chrono; if (method.master()) { chrono.start(); PAR_BLOCK { FFLAS::pfrand(F, randIter, args.n, args.n, A.getPointer(), args.n); } chrono.stop(); #ifdef _BENCHMARKS_DEBUG_ std::clog << "... A is " << A.rowdim() << " by " << A.coldim() << ", " << chrono << std::endl; if (A.rowdim() <= 20 && A.coldim() <= 20) A.write(std::clog << "A:=", Tag::FileFormat::Maple) << ';' << std::endl; #endif PAR_BLOCK { FFLAS::pfrand(F, randIter, args.n, 1, B.getPointer(), 1); } #ifdef _BENCHMARKS_DEBUG_ std::clog << "B is " << B << std::endl; #endif } method.pCommunicator->bcast(A, 0); method.pCommunicator->bcast(B, 0); Vector X(F, A.coldim()); if (method.master()) { chrono.start(); } if (args.methodString == "Elimination") solve(X, A, B, Method::Elimination(method)); else if (args.methodString == "DenseElimination") solve(X, A, B, Method::DenseElimination(method)); else if (args.methodString == "SparseElimination") solve(X, A, B, Method::SparseElimination(method)); else if (args.methodString == "Dixon") solve(X, A, B, Method::Dixon(method)); else if (args.methodString == "CRA") solve(X, A, B, Method::CRAAuto(method)); else if (args.methodString == "SymbolicNumericOverlap") solve(X, A, B, Method::SymbolicNumericOverlap(method)); else if (args.methodString == "SymbolicNumericNorm") solve(X, A, B, Method::SymbolicNumericNorm(method)); else if (args.methodString == "Blackbox") solve(X, A, B, Method::Blackbox(method)); else if (args.methodString == "Wiedemann") solve(X, A, B, Method::Wiedemann(method)); else if (args.methodString == "Lanczos") solve(X, A, B, Method::Lanczos(method)); // @fixme Won't compile // else if (args.methodString == "BlockLanczos") solve(X, A, B, Method::BlockLanczos(method)); else solve(X, A, B, Method::Auto(method)); if (method.master()) { chrono.stop(); timebits[0] = chrono.usertime(); timebits[1] = chrono.realtime(); setBitsize(timebits[2], args.q, X); } } int main(int argc, char** argv) { Arguments args; Argument as[] = {{'i', "-i", "Set number of repetitions.", TYPE_INT, &args.nbiter}, {'q', "-q", "Set the field characteristic (-1 for rationals).", TYPE_INTEGER, &args.q}, {'n', "-n", "Set the matrix dimension.", TYPE_INT, &args.n}, {'b', "-b", "bit size", TYPE_INT, &args.bits}, {'s', "-s", "Seed for randomness.", TYPE_INT, &args.seed}, {'d', "-d", "Dispatch mode (any of: Auto, Sequential, SMP, Distributed).", TYPE_STR, &args.dispatchString}, {'M', "-M", "Choose the solve method (any of: Auto, Elimination, DenseElimination, SparseElimination, " "Dixon, CRA, SymbolicNumericOverlap, SymbolicNumericNorm, " "Blackbox, Wiedemann, Lanczos).", TYPE_STR, &args.methodString}, END_OF_ARGUMENTS}; LinBox::parseArguments(argc, argv, as); if (args.seed < 0) { args.seed = time(nullptr); } // Setting up context Communicator communicator(&argc, &argv); if (communicator.master()) { std::clog << "Communicator size: " << communicator.size() << std::endl; } MethodBase method; method.pCommunicator = &communicator; if (args.dispatchString == "Sequential") method.dispatch = Dispatch::Sequential; else if (args.dispatchString == "SMP") method.dispatch = Dispatch::SMP; else if (args.dispatchString == "Distributed") method.dispatch = Dispatch::Distributed; else method.dispatch = Dispatch::Auto; // Real benchmark bool isModular = false; if (args.q > 0) isModular = true; using Timing = std::array; std::vector timebits(args.nbiter); for (int iter = 0; iter < args.nbiter; ++iter) { if (isModular) { Mods Fq(args.q); Mods::RandIter randIterFq(Fq, args.seed); benchmark>(randIterFq, timebits[iter], args, method); } else { Ints ZZ; Ints::RandIter randIterZZ(ZZ, args.seed); randIterZZ.setBitsize(args.bits); benchmark(randIterZZ, timebits[iter], args, method); } } #ifdef _BENCHMARKS_DEBUG_ for (const auto& it : timebits) std::clog << it[0] << "s, " << it[2] << " bits" << std::endl; #endif if (method.master()) { std::sort(timebits.begin(), timebits.end(), [](const Timing& a, const Timing& b) -> bool { return a[0] > b[0]; }); std::cout << "UserTime: " << timebits[args.nbiter / 2][0]; std::cout << " RealTime: " << timebits[args.nbiter / 2][1]; std::cout << " Bitsize: " << timebits[args.nbiter / 2][2]; FFLAS::writeCommandString(std::cout, as) << std::endl; } return 0; } linbox-1.7.0/benchmarks/benchmark-example.C000066400000000000000000000217421415606734300206350ustar00rootroot00000000000000/* Copyright (C) 2011 LinBox * Written by Brice Boyer (briceboyer) * * * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ /*! @file benchmarks/benchmark-example.C * @ingroup benchmarks * @brief Benchmarking example * @example benchmark */ #include "benchmarks/benchmark.h" #include "linbox/util/error.h" #include "fflas-ffpack/fflas-ffpack.h" #include "linbox/ring/modular.h" #include "linbox/matrix/random-matrix.h" #include "linbox/matrix/dense-matrix.h" #include "linbox/matrix/matrix-domain.h" #include "linbox/matrix/sparse-matrix.h" #include "linbox/solutions/rank.h" #include using namespace LinBox ; using Givaro::Timer; /* compute MegaFLOPS for mat mul (2 m n k) */ double mm_mflops(size_t m, size_t n, size_t k) { return 2*(double)m/100*(double)n/100*(double)k/100 ; } /* Benchmark on a field */ /*! @internal * @brief launches the benchmarks for the square case. * @param F field * @param min min size to bench * @param max max size to bench * @param step step between two sizes * @param Data where data is stored * @param series_nb index of the current series of measures. */ template void launch_bench_square(Field & F // const problem , size_t min, size_t max, size_t step // no negative step , PlotData & Data ) { linbox_check(step); linbox_check(min <= max); std::ostringstream nam ; F.write(nam); // Data.setCurrentSeriesName(nam.str()); Data.newSeries(nam.str()); Chrono TW ; typedef typename Field::RandIter Randiter ; Randiter R(F) ; BlasMatrixDomain BMD(F) ; RandomDenseMatrix RandMat(F,R); for ( size_t i = min ; i < max ; i += step ) { showAdvanceLinear(i,min,max); size_t ii = i ; BlasMatrix A (F,ii,ii); BlasMatrix B (F,ii,ii); BlasMatrix C (F,ii,ii); size_t j = 0 ; // number of repets. RandMat.random(A); RandMat.random(B); RandMat.random(C); TW.clear() ; while( Data.keepon(j,TW.time(),false) ) { TW.start() ; BMD.mul(C,A,B) ; // C = AB TW.stop(); ++j ; } double mflops = computeMFLOPS(TW.times(),mm_mflops(i,i,i)); Data.setCurrentSeriesEntry(i,mflops,(double)i,TW.time()); // could be i*i*i } Data.finishSeries(); } /* Collects Benchmarks */ /*! @brief Benchmark square fgemm Y=AX for several fields. * @param min min size * @param max max size * @param step step of the size between 2 benchmarks * @param charac characteristic of the field. */ void bench_square( size_t min, size_t max, size_t step, int charac ) { size_t nb = 1 ;// une col de plus (la première) typedef Givaro::Modular Field0 ; ++nb ; typedef Givaro::Modular Field1 ; ++nb ; // typedef Givaro::Modular Field2 ; ++nb ; // typedef Givaro::ModularBalanced Field3 ; ++nb ; // typedef Givaro::ModularBalanced Field4 ; ++nb ; // typedef Givaro::ModularBalanced Field5 ; ++nb ; // GivaroZpZ ///// DATA HARVEST //// PlotData Data; showProgression Show(nb) ; Field0 F0(charac) ; // launch_bench_square(F0,100,1500,300,Data); launch_bench_square(F0,min,max,step,Data); Show.FinishIter(); if (charac < 2048) { Field1 F1(charac) ; // launch_bench_square(F1,200,1500,200,Data); launch_bench_square(F1,min,max,step,Data); Show.FinishIter(); } else { Show.SkipIter(); } #if 0 Field2 F2(charac) ; launch_bench_square(F2,min,max,step,Data); Show.FinishIter(); Field3 F3(charac) ; launch_bench_square(F3,min,max,step,Data); Show.FinishIter(); if (charac < 2048) { Field4 F4(charac) ; launch_bench_square(F4,min,max,step,Data); Show.FinishIter(); } else { Show.SkipIter(); } Field5 F5(charac) ; launch_bench_square(F5,min,max,step,Data); Show.FinishIter(); #endif ///// PLOT STYLE //// LinBox::PlotStyle Style; Style.setTerm(LinBox::PlotStyle::Term::eps); Style.setTitle("BlasMatrixDomain mul","Mflops","dimensions"); Style.setPlotType(LinBox::PlotStyle::Plot::graph); Style.setLineType(LinBox::PlotStyle::Line::linespoints); LinBox::PlotGraph Graph(Data,Style); Graph.setOutFilename("bmdmul_square"); // Graph.plot(); Graph.print(Tag::Printer::gnuplot); Graph.print(Tag::Printer::tex); Graph.print(Tag::Printer::csv); return ; } template void launch_bench_rank(const Field &F, const std::string & name , PlotData & Data ) { SparseMatrix Mat(F); std::ifstream mat1 (name); Mat.read(mat1); MatrixMetaData mmd (Mat,name); // Data.newSeries(name); Chrono TW ; showAdvanceLinear(1,1,2); TW.clear() ; size_t j = 0 ; while( Data.keepon(j,TW.time()) ) { TW.start() ; unsigned long d ; LinBox::rank(d,Mat,Method::Blackbox()); TW.stop(); ++j ; } // double mflops = computeMFLOPS(TW.times(),mm_mflops(i,i,i)); Data.setSeriesEntry("Rank (Blackbox)",name,TW.time(),(double)Mat.size(),TW.time()); Data.addCurrentEntryMetaData(mmd); // Data.addCurrentSeriesMetaData(mmd); // Data.addMetaData(mmd); showAdvanceLinear(2,1,2); TW.clear() ; j = 0 ; while( Data.keepon(j,TW.time()) ) { TW.start() ; unsigned long d ; LinBox::rank(d,Mat,Method::SparseElimination()); TW.stop(); ++j ; } Data.selectSeries("Rank (SparseElimination)"); Data.setCurrentSeriesEntry(name,TW.time(),(double)Mat.size(),TW.time()); Data.addCurrentEntryMetaData(mmd); } void bench_rank(int carac) { typedef Givaro::Modular Field0 ; Field0 F(carac); int nb = 1; //! @bug no gz reader ? std::string m1 = "matrix/bibd_12_5_66x792.sms" ; ++nb; std::string m2 = "matrix/bibd_13_6_78x1716.sms" ; ++nb; std::string m3 = "matrix/bibd_14_7_91x3432.sms" ; ++nb; PlotData Data; showProgression Show((size_t)nb) ; launch_bench_rank(F,m1,Data); Show.FinishIter(); launch_bench_rank(F,m2,Data); Show.FinishIter(); launch_bench_rank(F,m3,Data); Show.FinishIter(); ///// PLOT STYLE //// LinBox::PlotStyle Style; Style.setTerm(LinBox::PlotStyle::Term::eps); Style.setTitle("Rank algorithms","seconds","matrices"); Style.setXtics(LinBox::PlotStyle::Options::oblique); /* default Style.setPlotType(LinBox::PlotStyle::Plot::histo); Style.setLineType(LinBox::PlotStyle::Line::histogram); */ LinBox::PlotGraph Graph(Data,Style); Graph.setOutFilename("rank_comparison"); // Graph.plot(); Graph.print(Tag::Printer::gnuplot); // change style Graph.refStyle().setTerm(LinBox::PlotStyle::Term::png); Graph.print(Tag::Printer::gnuplot); Graph.print(Tag::Printer::xml); Graph.print(Tag::Printer::html); return; } /* main */ int main( int ac, char ** av) { /* Argument parsing/setting */ static size_t min = 100; /* min size */ static size_t max = 1500; /* max size (not included) */ static size_t step = 300; /* step between 2 sizes */ // static std::list lst ; /* what bench to start ? */ // lst.push_front(1);// ={1,2} vivement le nouveau std... // lst.push_front(2); static Argument as[] = { { 'm', "-m min" , "Set minimal size of matrix to test." , TYPE_INT , &min }, { 'M', "-M Max" , "Set maximal size." , TYPE_INT , &max }, { 's', "-s step", "Sets the gap between two matrix sizes.", TYPE_INT , &step }, // { 'l', "-l list", "Only launches a subset of available benchmarks\n - 1: compare to raw blas\n - 2:various square sizes\n - 3:various shapes\n - 4: various parameters (a,b)\n - 5 : various transp. combinations", TYPE_INTLIST, &lst }, END_OF_ARGUMENTS }; parseArguments (ac, av, as); if (min >= max) { throw LinBoxError("min value should be smaller than max..."); } if (min + step >= max) { std::cout << "Warning : your x axis has only one point. You should have a smaller step." << std::endl; } /* square for various fields */ #if 1 { std::cout << " *** Lines plot *** " << std::endl; std::cout << "Benchmark square matrix multiplication via BMD.mul()" << std::endl; bench_square(min,max,step,13); } #endif /* different sparse matrix */ { std::cout << " *** Bar plot *** " << std::endl; std::cout << "Benchmark different matrices on different rank algorithms" << std::endl; bench_rank(13); } return EXIT_SUCCESS ; } // Local Variables: // mode: C++ // tab-width: 4 // indent-tabs-mode: nil // c-basic-offset: 4 // End: // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s linbox-1.7.0/benchmarks/benchmark-fft.C000066400000000000000000000215611415606734300177600ustar00rootroot00000000000000/* * Copyright (C) 2013 Pascal Giorgi * * Written by Pascal Giorgi * * ========LICENCE======== * This file is part of the library LinBox. * * LinBox is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ========LICENCE======== */ #include "linbox/linbox-config.h" #include "linbox/algorithms/polynomial-matrix/fft.h" #include "linbox/randiter/random-fftprime.h" #include #include #include #include #include #include #include using namespace std; using namespace LinBox; using Givaro::Modular; using Givaro::ModularExtended; using FFLAS::parseArguments; /* For pretty printing type */ template const char *TypeName(); template